自然語言處理-第四期-Word2Vec神經網絡及反向傳遞

本文將覆蓋神經網絡基礎構成和最重要的反向傳遞

神經網絡

今天將從結構上解釋下神經網絡。

自然語言處理-第四期-Word2Vec神經網絡及反向傳遞

從上面這個圖,大家可以看出一個神經網絡包括了幾部分: 1. 層 2. 點 3. 線

層-神經網絡層

神經網絡分為:輸入層、隱藏層和輸出層。

輸入層.是用來輸入我們的訓練數據的,輸入層的結構當然是與我們的原始數據強相關;

輸出層.是用來記錄我們輸出的結果的,輸出層的結構是與我們預測的結果相關;

隱藏層.是用來處理和記憶我們處理的過程的。

上面神經網絡層的解釋,感覺是廢話,但是結合下面的神經元及數據流向的解釋 會變得更清晰

點-神經元

自然語言處理-第四期-Word2Vec神經網絡及反向傳遞

每個神經元就是一個計算處理的單元,其包括兩部分1. 基礎的線性方程 2. Acivation Function 激勵函數

從上面這個圖可以看出: 隱藏層第一個神經元對於輸入值X1的處理如下:

  1. W * 輸入值 + b = 輸出值
  2. y = Activation( 輸出值)

其中第二步的激勵函數是取決於模型的設置。這個激勵函數的一個重要意義就是改變神經網絡的線性傾向。

線-神經網絡數據流轉

自然語言處理-第四期-Word2Vec神經網絡及反向傳遞

總結下

還是這個圖哈,其中線 表現的數據流轉。從上圖可以看出,第一層和第二層所有的神經元相互關聯。

這樣構建出的一個神經網絡是什麼呢? 粗略的說,就是一個巨大的公式F(X). 這個F(X) 裡面 既包含了基礎的線性方程,也包含了激勵函數。

如果我們只看一個神經元那麼該公式可以表達為 y=F(W * X + b) .

神經網絡有意思的地方就是,它有點像俄羅斯套娃,打開一個裡面還有一個。

可以簡單的將神經網絡比喻成一個大的套娃,因為這個神經網絡的輸入值X,可能就是上一個神經元的Y。所以神經網絡的公式可以變成:

y= F (b+ W*(F(b+ W * ( F (b+ W* (..........

當然實際情況比這複雜很多,因為涉及矩陣運算。但是我們可以從概念上這麼簡單理解。如果能這樣理解,就能很容易理解反向傳遞。

Backpropogation (反向傳遞)

反向傳遞是神經網絡非常重要的概念。如果大家理解了套娃的概念,理解起來就會變得很簡單。

假設我們的神經網絡特別簡單,只有一個神經元,那麼神經網絡計算的結果如下:

y_神經網絡預測 = F( W* X + b)

大家都知道神經網絡需要訓練,訓練目的很簡單就是要神經網絡算出來的結果和實際結果相近,那麼他們之前的差距就是:

loss(差距) = y_實際 - y_神經網絡預測

loss(差距) = y_實際 - F(W* X + b)

由於X,y 是訓練樣本,即其不是變量。 那麼以上公式的變量就是該神經元的參數 W ,b

那麼,我們可以將公式畫成類似下面的圖。

自然語言處理-第四期-Word2Vec神經網絡及反向傳遞

那麼,gradient descent(梯度下降) 就是在曲線上取切線,然後走一小步。 當取切線為0的時候,基本上就到達了local minimum(本地最小值)

對於多層的神經網絡與單層的並沒有本質的區別。 就和俄羅斯套娃,做了一層微積分可以,可以再做一層。 最終的結果都是 loss function 取決於每個神經元的參數。

總結下,反向傳遞就是在計算出初始的差異值後,取微積分,,然後調整參數的過程。backpropogation最終改變的是神經元的參數W,B

再通俗的理解下,我們一直聽說神經網絡學習,學的結果是什麼呢? 就是一點點的調整每個神經元裡面的參數。

神經網絡訓練

我們從數據流向來理解下神經網絡的訓練過程:

正向:不論輸入值是什麼,神經網絡會根據當前參數計算出一個結果。 並且計算出與實際結果的差異值;

逆向:通過對差異方程 做微積分,找到loss function 上的切線,並走一小步,調整神經元參數;

循環上述兩個過程,最終訓練的出的就是神經元參數。

下期預告

本期主要給大家介紹了神經網絡,感覺純文本講不太清楚。 不過大家只要知道,神經網絡是一個巨大的F(X),然後通過切線(類似於下山)的過程學習足夠了。下一期將進入到Word2Vec部分。


分享到:


相關文章: