傻瓜神經網路入門指南
現在網路上充斥著大量關於神經網路的訊息,但是,什麼是神經網路?其本質到底是什麼?你是不是對這個熟悉又陌生的詞感到困惑?
用幾分鐘閱讀完這篇文章,我不能保證你能夠成為這個領域的專家,但可以保證的是,你已經入門了。
什麼是神經網路?
想要透徹的瞭解神經網路,我們首先要知道什麼是機器學習。為了更好的理解機器學習,我們首先談談人的學習,或者說什麼是“經典程式設計”。
在經典的程式設計中,作為一名開發人員,我需要了解所要解決的問題的各個方面,以及我要以什麼規則為基礎。
舉個例子來說,假設我要設計一個能夠區別正方形和圓形的程式。處理方法則是編寫一個可以檢測到角的程式,然後計算角的數量。如果程式能檢測到4個角,那麼圖形為正方形;如果角的個人為0,則為圓形。
那麼這個機器學習有何關係?一般來說,機器學習=從示例中學習。
在機器學習中,該如何區別正方形和圓形呢?這時候,我們就要設計一個學習系統,將許多形狀及類別不同的圖形作為輸入,然後我們希望機器能夠自己學習形狀及類別,然後識別出不同圖形的不同特性。
一旦機器學會了這些屬性,我們就可以輸入一個新的圖形(機器以前沒見過的圖形),然後機器對這些圖形進行分類。
什麼是神經網路?
在神經網路中,神經元是一個很奇特的名字,比較類似於函式。在數學和計算機領域,函式可以接受某個輸入,經過一系列的邏輯運算,輸出結果。
更重要的是,我們可以將神經元看做一個學習單元。
因此,我們需要理解什麼是學習單元,然後再瞭解神經網路的基本構建塊,即神經元。
為了更好的理解,假設我們試圖理解部落格文章中單詞數量與人們實際從部落格中讀取單詞數量之間的關係。請記住一點,在機器學習領域,我們從示例中學習。
因此,我們用x表示機器收集到文章的單詞數量,用y表示人們實際讀到的單詞數,它們之間的關係用f表示。
然後,我只需要告訴機器(程式)我希望看到的關係(比如直線關係),機器再將會理解它所需要繪製的線。
我在這裡得到了什麼?
下次我想寫一篇包含x個單詞的文章時,機器可以根據對應關係f找到人們真正能閱讀到的單詞數y。
那麼,神經網路到底是什麼?如果一個神經元是一個函式,那麼神經網路就是一個函式網路,也就是說,我們有很多個這樣的功能(比如學習單元),這些學習單元的輸入和輸出相互交織,相互之間也有反饋。
作為一名神經網路的設計人員,我的主要工作就是:
1.如何建模輸入和輸出?例如,如果輸入是文字,我可以用什麼建模?數字?還是向量?
2.每個神經元有哪些功能?(它們是線性?還是指數?...)
3.神經網路的架構是什麼?(即哪個函式的輸出是哪個函式的輸入?)
4.我可以用哪些通俗易懂的詞來描述我的網路?
一旦我回答了以上這些問題,我就可以向網路“展示”大量具有正確輸入和輸出的例子,神經網路學習後,當我再次輸入一個新的輸入時,神經網路就會有個正確的輸出。
神經網路的學習是件永無止境時,這個領域的知識呈爆炸性增長,每時每刻都會有新的知識和內容更新。
原文連結
本文為雲棲社群原創內容,未經允許不得轉載。