深度学习--TensorFlow(4)BP神经网络(损失函数、梯度下降、常用激活函数、梯度消失梯度爆炸)
目錄
一、概念與定義
二、損失函數/代價函數(loss)
三、梯度下降法
二維w與loss:
三維w與loss:?
四、常用激活函數
1、softmax激活函數?
2、sigmoid激活函數
3、tanh函數
4、softsign函數
sigmoid、tanh、softsign函數對比
5、relu函數
對比tanh和relu激活函數
4個隱藏層tanh激活函數
4個隱藏層relu激活函數
2個隱藏層relu激活函數
五、梯度消失與梯度爆炸
1、梯度消失
2、梯度爆炸
3、解決梯度消失與梯度爆炸
?
一、概念與定義
BP神經網絡:是一種按照誤差逆向傳播算法訓練的多層前饋神經網絡。 BP 算法的基本思想:學習過程由信號的正向傳播和誤差的反向傳播兩個過程組成。?
正向傳播:把樣本的特征從輸入層進行輸入,信號經過各個隱藏層逐層處理后,最后從輸出層傳出。
反向傳播:對于網絡的實際輸出與期望輸出之間的誤差,把誤差信號從最后一層逐層反傳,從而獲得各個層的誤差學習信號,再根據誤差學習信號來修正各個層神經元的權值。
周而復始地進行,權值不斷調整的過程,就是神經網學習訓練的過程。
二、損失函數/代價函數(loss)
損失函數的值越小,說明模型的預測值越接近真實值。
我們可以利用這個函數來優化模型參數。
最常見的損失函數是均方差損失函數(二次損失函數):?
矩陣可以用大寫字母來表示,這里的 T 表示真實標簽,Y 表示網絡輸出,i 表示第 i 個數據。N 表示訓練樣本的個數(注意這里的 N 是一個大于 0 的整數,不是矩陣)。T-Y 可以到每個訓練樣本與真實標簽的誤差。誤差的值有正有負,我們可以求平方,把所有的誤差值都變成正的,然后除以 2N。這里 2 沒有特別的含義,主要是我們對均方差代價函數求導的時候,公式中的 2 次方的 2 可以跟分母中的 2 約掉,使得公式推導看起來更加整齊 簡潔。除以 N 表示求每個樣本誤差平均的平均值。
三、梯度下降法
梯度下降法是最常用的方法之一。
既然在變量空間的某一點處,函數沿梯度方向具有最大的變化率,那么在優化代價函數的時候,就可以沿著負梯度方向去減小代價函數的值。
梯度下降法優化公式:
二維w與loss:
首先w移動到了w=3的位置:?
當 w 為-3 時,w 所處位置的梯度應該是一個負數,梯度下降法在優化代價函數的時候,是沿著負梯度方向去減小代價函數的值,所以負梯度是一個正數,w 的值應該變大。
w再次移動,到w=2的位置:?
當 w 為 2 時,w 所處位置的梯度應該是一個正數,梯度下降法在優化代價函數的時候,是沿著負梯度方向去減小代價函數的值,所以負梯度是一個負數, w 的值應該變小。
????????我們可以發現不管 w 處于那一個位置,當 w 向著負梯度的方向進行移動時,實際上就是向著可以使 loss 值減小的方向進行移動。只不過它每一次是移動一步,這個步子的大小會受到學習率和所處位置梯度的大小所影響。
三維w與loss:?
在圖中隨機選取兩個 w1 和 w2 的初始值 p1 和 p2,然后從 p1、p2 這兩個初始位置,開始使用梯度下降法優化網絡參數:
四、常用激活函數
????????前面介紹的sign函數(符號函數)、purelin函數(線性函數)都不能很好地解決非線性問題。下面介紹神經網絡中常用的非線性激活函數:softmax函數、sigmoid函數、tanh函數、softsign函數、relu函數。這些非線性激活函數有助于幫忙解決非線性問題。
1、softmax激活函數?
將多個神經元的輸出,映射到(0,1)區間內。(可以看成概率來理解,從而來進行多分類)
公式:
2、sigmoid激活函數
sigmoid函數也稱為邏輯函數,函數公式為:
????????函數的取值范圍是 0-1 之間,當 x 趨向于-∞的時候函數值趨向于 0; 當 x 趨向于+∞的時候函數值趨向于 1。
3、tanh函數
tanh函數也稱為雙曲正切函數。函數公式:
????????函數的取值范圍是-1-1 之間,當 x 趨向于-∞的時候函數值趨向于-1; 當 x 趨向于+∞的時候函數值趨向于 1。4、softsign函數
softsign函數公式:
????????函數的取值范圍是-1-1 之間,當 x 趨向于-∞的時候函數值趨向于-1; 當 x 趨向于+∞的時候函數值趨向于 1。
sigmoid、tanh、softsign函數對比
????????這三個激活函數都是 S 形函數,形狀相似,只不過 sigmoid 函數取值范圍是 0-1 之間,tanh 函數和 softsign 函數取值范圍是-1-1 之間。我們還可以觀察到 softsign 函數相對于 tanh 函數而言過渡更加平滑,在 x 等于 0 附近函數的數值改變更緩慢。5、relu函數
relu函數公式:
????????當 x 小于 0 時,y 等于 0。當 x 大于 0 時,y 等于 x。ReLU 的中文名稱是校正線性單元,雖然在 x 小于 0 時函數是線性的,x 大于 0 時函數也是線性的,但是組合起來之后,函數就具有了非線性的特征。(大于0部分導數也始終為1,relu函數能抗梯度消失與梯度爆炸)(在這些激活函數里面,relu激活函數最好)
對比tanh和relu激活函數
?
4個隱藏層tanh激活函數
4個隱藏層relu激活函數
2個隱藏層relu激活函數
可以發現:
ReLU 激活函數所描繪出來的邊界其實是一條一條的直線構成的,不存在曲線。 模型的擬合效果其實還跟其他一些因素相關,比如說每一層隱藏層的神經元越多,那么模型的擬合能力也就越強。模型訓練的周期越多,模型的擬合能力就越強。
五、梯度消失與梯度爆炸
1、梯度消失
梯度消失概念:學習信號隨著網絡傳播逐漸減小。
????????學習信號從輸出層一層一層向前反向傳播的時候,每傳播一層學習信號就會變小一點,經過多層傳播后,學習信號就會接近于 0,從而使得權值?w調整接近于 0。?w接近于 0 那就意味著該層的參數不會發生改變,不能進行優化。參數不能優化,那整個網絡就不能再進行學習了。
2、梯度爆炸
梯度爆炸概念:學習信號隨著網絡傳播逐漸增大。
????????如果學習信號乘以一個大于 1 的數,那么δ就會變大。學習信號從輸出層一層一層向前 反向傳播的時候,每傳播一層學習信號就會變大一點,經過多層傳播后,學習信號就會接近于無窮大,從而使得權值?w調整接近于無窮大。?w接近于無窮大那就意味著該層的參數,處于一種極不穩定的狀態,那么網絡就不能正常工作了。
3、解決梯度消失與梯度爆炸
ReLu表達式:f(x)=max(0,x),當小于0時,f(x)的取值為0;當x>0時,f(x)的取值等于x。
????????當激活函數的導數小于 1 時,網絡會產生梯度消失,激活函數的導數大于 1 時,網絡會產生梯度爆炸。 ????????導數為 1 是一個很好的特性,不會使得學習信號越來越小,也不會讓學習信號越來越大,可以讓學習信號比較穩定地從后向前傳播,解決了梯度消失和梯度下降的問題。 疑問: ????????ReLU 函數看起來是挺好的,既是非線性函數,導數又為 1,但是它好像也存在一些問題,當 x 小于 0 時,ReLU 函數輸出為 0,導數也為0,有些信號不就丟失掉了嗎? 如果你是這么想的,那你就想對了,確實是丟失了一些信號,但是沒關系。在神經網絡中,信號是冗余的,也就是說其實網絡最后在做預測的時候并不需要從前面傳過來的所有的信號,實際上只需要一部分的信號,網絡就可以進行預測。并且使用部分信號來進行預測與使用全部信號來進行預測得到的結果相差不大。
總結
以上是生活随笔為你收集整理的深度学习--TensorFlow(4)BP神经网络(损失函数、梯度下降、常用激活函数、梯度消失梯度爆炸)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 深度学习--TensorFlow(3)线
- 下一篇: 深度学习--TensorFlow(5)B