初學者學習神經網路該怎麼下手?

Hyman Chen
Hybrid Maker
Published in
4 min readJun 5, 2018
Photo by Pietro Jeng on Unsplash

最近接觸到深度學習想來挑戰看看 tensorflow.js(後面我都簡稱 tfjs) ,可是看了看 api 卻不得其門而入,仔細思考一下,我在讀書的時候沒有修過神經網路這門課程,所以導致我看不懂 tfjs 的 example,於是我開始搜尋網路想要了解這個奧秘,如果你剛好也是新手,也剛好想要踏入深度學習的路,可以參考看看我的學習過程。

講到深度學習

深度學習是一種複雜的演算方式,用來分析或是預測資料,可以用在影像辨識,語意分析等等,深度學習比較常見的演算法就是神經網路了,所以想要入門深度學習,建議學一下神經網路。

神經網路

大部分的人都跟我一樣,把神經網路(Neural Network)放到了 google 搜尋上面,可是都看不懂在講什麼,因為大部分的神經網路找到的資料都像是下面這張圖一樣,畫了一些圓點跟箭頭,我們根本就不知道在講什麼。

要理解神經網路,就必須從最小的一個神經元講起,神經元其實很簡單,會有一些外在的刺激,但是根據權重的分配,神經元就會對敏感的資訊做輸出,我是透過下面這個影片理解神經的基本結構。

在看影片的時候呢你會不知道他講的 b 是什麼,這個 b 就是 bias ,代表一個偏執變數,在下面這個影片就會講解 b 的作用,以及我們為什麼要用到 b。

多層的神經網路

並不是所有的預測我們都能夠用一個簡單的神經元計算出來,我們必須要串聯這些神經元來達到更複雜的思考,隱藏層的數量多,我們所能分類的方式就可以比較多變化。

我們會把神經網路分成輸入層,隱藏層,輸出層,要怎麼決定隱藏層要有幾個神經元?看個人喜好但是還是有學者提出了建議的數量。

怎麼訓練神經網路?

通常這些權重跟偏直的變數我們都會給一個0~1亂數,在訓練的時候,我們會給程式 input 跟 answer 讓程式自己去思考這些w&b 要怎麼去調配,透過每次訓練來找到最能夠符合我們期望的參數。至於學習的部份 tfjs 已經幫我們處理好了,我們只要把要訓練的題目以及答案放入學習,接著 tfjs 就會去自動幫我們調整權重,以及 bias 等等資訊。

tfjs 為我們提供了很多種訓練的方式,例如 sgd (Stochastic gradient descent),這些演算法會在我們提供的正確答案,與預測出來的答案之間去算出參數應該要填什麼。

損失函數( loss function )

損失函數用來預估目前預測出來的答案跟真正的答案之間不一致的程度,我們在訓練的時候會不斷的讓我們的 model 來預測,把預測出來的答案跟正確答案送進損失函數內進行評估,這個損失函數會回傳一個不為負數的數值,當數值越接近 0 的時候,表示我們預測的結果越接近正確答案了。

總結

我儘量挑選了很多我看過的影片並且覺得有用又簡單的部份來做分享,如果你看完以後對深度學習有興趣,可以去看台大李宏毅教授的影片,以上這些分享都是學習神經網路的觀念,實際上還要把觀念應用到 tfjs 上面才有用,目前網路上 tfjs 的範例資料很少,預計接下來有時間再與大家分享一些 tfjs 的心得。

--

--