單個神經元

先來看一下單個神經元網絡模型:

其中 xi 表示輸入,wi 和 b 表示參數。圖中下方的公式是 1 函數的模型,嗯,就是一個線性模型。那麼就這麼一個簡單的線性模型怎麼仿真出人類神經元那麼複雜的玩意兒呢?一個線性模型當然滿足不了,這不就有了函數 2。函數 2 這類的函數我們常稱之爲 激活函數 或者 激勵函數。那麼有人又問了你怎麼知道圖中那一大堆 wi 和 b 參數到底取值是什麼,別急,網絡模型的訓練就是爲了找出這些值,這就引出了網絡模型訓練過程中的 損失函數 和 梯度下降 (或者其他優化方式) 用於求解這些值。上面講的只是一個神經元,要解決更加複雜的問題,就需要很多這種神經元組成的一層或多層神經網絡結構。下面會對出現的概念做一個簡單的介紹。

1)正向傳播

      數據從輸入到輸出的流向傳遞過程爲正向傳播。它是在一個假設由合適的w和b的基礎上,纔可以實現對現實環境的正確擬合。但是在實際過程中,我們無法得知w和b的值具體是多少纔算是正常的。於是加入了一個訓練過程,通過反向誤差傳遞的方法讓模型自動來修正,最終產生一個合適的權重。 

2)反向傳播

 

      反向傳播的意義–告訴模型我們需要將w和b調整到多少。在剛開始沒有得到合適的權重時,正向傳播生成的結果與實際的標籤是有誤差的,反向傳播就是要把這個誤差傳遞給權重,讓權重做適當的調整來達到一個合適的輸出。

      如何將輸出的權重誤差轉化爲權重誤差,使用的是BP算法,又稱“誤差反向傳播算法”。

     反向傳播的核心思想:讓正向傳播的輸出結果與標籤間的誤差最小化。 

      爲了讓損失值(將輸出值與標籤直接相減,或是做平方差等運算)變得最小,我們運用數學知識,選擇一個損失值的表達式,也就是損失函數,讓這個函數有最小值,接着通過求導的方式,找到最小值處函數切線斜率(也就是梯度) , 從而讓w和b的值沿着這個梯度來調整。 
      至於每次調整多少,我們引入一個叫做“學習率”的參數,這樣通過不斷的迭代,使誤差逐步接近最小值,最終達到我們的目標。

3)激活函數

      激活函數的主要作用就是用來加入非線性因素的,以解決線性模型表達能力不足的缺陷,在整個神經網絡裏起到至關重要的作用。 
      因爲神經網絡的數學基礎是處處可微的,所以選取的激活函數要能保證數據輸入與輸出也是可微的。 

 1) sigmoid 函數 或者叫做 Logistic 函數

公式:

圖形:

特點:從圖像可以看出當 x 趨近於正負無窮時,y 值趨近於 1 或 -1,這種情況就是飽和狀態。一旦達到這種狀態意味着再增大 x 值,y 值基本就不會變化了,這也就會導致了向底層傳遞的梯度也變得非常小,網絡參數很難得到有效訓練,這種現象就是梯度消失。此外,sigmoid函數的輸出均大於0,使得輸出均值不是0,這稱爲偏移現象,這會導致後一層的神經元將得到上一層輸出的非0均值的信號作爲輸入。

 2)tanh 函數

公式:

tanh(x) = 2sigmoid(2x) - 1

圖形:

特點:tanh可以說是sigmoid函數的升級版。與sigmoid相比,它的輸出均值是0,使得其收斂速度要比sigmoid               快,減少迭代次數。然而,tanh一樣具有飽和狀態,從而造成梯度消失。

 3)relu 函數  Rectified Linear Units

公式:  f(x) = max(0, x)

圖形:

特點:當x<0時,relu硬飽和,而當x>0時,則不存在飽和問題。所以,relu 能夠在x>0時保持梯度不衰減,從而緩解梯度消失問題,然而,隨着訓練的推進,部分輸入會落入硬飽和區,導致對應權重無法更新。這種現象稱爲“神經元死亡”。與sigmoid類似,relu的輸出均值也大於0,偏移現象和神經元死亡會共同影響網絡的收斂性。

        圖中還顯示了一個softplus函數,其更加平滑,但是計算量很大。公式如下:

                                                              

relu的一些演化函數:

Noisy relus: 爲max中的 x 添加一個高斯分佈的噪聲   

                        

Leaky relus:讓 x 爲負值時乘以 0.01 ,使其對負值不是一味的拒絕,而是縮小

                      

進一步讓0.01變成一個可調的數值:   f(x) = max(0, ax)

對 x 小於0時做更復雜的變化:

                      

4)損失函數

    用於描述模型預測值與真實值的差距大小,一般常見的有兩種算法----均值平方差(MSE) 和 交叉熵。

    1)均值平方差(Mean Squared Error),也成爲'均方誤差'。在神經網絡中表達預測值與真實值之間的差異,在數理統計中,是指參數估計值與參數真值之差平方的期望。

                                          

        f(xi)爲預測值,yi爲真值。

    2)交叉熵

        一般用在分類問題上,表達的意思爲預測輸入樣本屬於某一類的概率。

        y代表真實值的分類,a代表預測值。                   

                      

     損失算法的選取:

         損失函數的選取取決於輸入標籤數據的類型,如果輸入的是實數、無界值,損失函數使用平方差,如果輸入標籤是矢量(分類標誌),使用交叉熵會更合適。          

5)梯度下降

      梯度下降是一個最優化算法,通常也稱爲最速下降法,常用於機器學習和人工智能中遞歸性地逼近最小偏差模型,梯度下降地方向也就是用負梯度方向爲搜索方向,沿着梯度下降地方向求極小值。 
在訓練過程中,每次的正向傳播後都會得到輸出值與真實值的損失值,這個損失值越小,代表模型越好,於是梯度下降的算法就用在這裏,幫助尋找最小的那個損失值,從而可以反推出對應的學習參數w和b,達到優化模型的效果。 
      常用的梯度下降方法可以分爲:批量梯度下降、隨機梯度下降和小批量梯度下降。 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章