【機器學習】BP & softmax求導

 

 

目錄算法

1、BP原理及求導網絡

2、softmax及求導函數

 

1、BP學習

一、爲何沿梯度方向是上升最快方向spa

    根據泰勒公式對f(x)在x0處展開,獲得f(x) ~ f(x0) + f'(x0)(x-x0), 故獲得f(x) - f(x0) ~ f'(x0)(x-x0), 因此從x0出發,變化最快,即便f(x)-f(x0)最大,也就f'(x0)(x-x0),因爲f'(x0)與(x-x0)均爲向量(如今x0取的是一個數,若是放在多維座標那麼x0就是一個多維向量),由余弦定理f'(x0) 與(x-x0)方向相同時,點積最大,故梯度方向是上升最快方向。3d

二、什麼是BPblog

梯度反向傳播(back propagation)過程就是: 由前饋神經網絡獲得損失函數,而後根據損失函數後向地更新每一層的權重,目的就是讓損失函數變小get

 

 

三、BP的優點博客

  • 與從前日後進行求導相比,BP可以避開了路徑被重複訪問,它對於每個路徑只訪問一次就能求頂點對全部下層節點的偏導值。
  • 可以自適應、自主學習。這是BP算法的根本以及其優點所在,BP算法根據預設的參數更新規則,不斷地調整神經網絡中的參數,以達到最符合指望的輸出。

四、BP的不足io

  • BP是基於梯度降低算法實現的,因此容易陷入局部最小而不是全局最小
  • 因爲BP神經網絡中的參數衆多,每次都須要更新數量較多的閾值和權值,故會致使收斂速度過慢

 

2、softmax函數及求導

一、softmax函數

在Logistic regression二分類問題中,咱們能夠使用sigmoid函數將輸入Wx + b映射到(0, 1)區間中,從而獲得屬於某個類別的機率。將這個問題進行泛化,推廣到多分類問題中,咱們能夠使用softmax函數,對輸出的值歸一化爲機率值。

這裏假設在進入softmax函數以前,已經有模型輸出C值,其中C是要預測的類別數,模型能夠是全鏈接網絡的輸出a,其輸出個數爲C,即輸出爲a_{1}, a_{2}, ..., a_{C}

因此對每一個樣本,它屬於類別i的機率爲:

y_{i} = \frac{e^{a_i}}{\sum_{k=1}^{C}e^{a_k}} \ \ \ \forall i \in 1...C

經過上式能夠保證 \sum_{i=1}^{C}y_i = 1,即屬於各個類別的機率和爲1。

 

二、求導

對softmax函數進行求導,即求 \frac{\partial{y_{i}}}{\partial{a_{j}}}


i項的輸出對第j項輸入的偏導。
代入softmax函數表達式,能夠獲得:

\frac{\partial{y_{i}}}{\partial{a_{j}}} = \frac{\partial{ \frac{e^{a_i}}{\sum_{k=1}^{C}e^{a_k}} }}{\partial{a_{j}}}

     因此,當i = j時:

\frac{\partial{y_{i}}}{\partial{a_{j}}} = \frac{\partial{ \frac{e^{a_i}}{\sum_{k=1}^{C}e^{a_k}} }}{\partial{a_{j}}}= \frac{ e^{a_i}\Sigma - e^{a_i}e^{a_j}}{\Sigma^2}=\frac{e^{a_i}}{\Sigma}\frac{\Sigma - e^{a_j}}{\Sigma}=y_i(1 - y_j)

i \ne j時:

\frac{\partial{y_{i}}}{\partial{a_{j}}} = \frac{\partial{ \frac{e^{a_i}}{\sum_{k=1}^{C}e^{a_k}} }}{\partial{a_{j}}}= \frac{ 0 - e^{a_i}e^{a_j}}{\Sigma^2}=-\frac{e^{a_i}}{\Sigma}\frac{e^{a_j}}{\Sigma}=-y_iy_j

LOSS 求導

對一個樣原本說,真實類標籤分佈與模型預測的類標籤分佈能夠用交叉熵來表示:l_{CE} = -\sum_{i = 1}^{C}t_i log(y_i)

最終,對全部的樣本,咱們有如下loss function:

L = -\sum_{k = 1}^{n}\sum_{i = 1}^{C}t_{ki} log(y_{ki})

其中t_{ki}是樣本k屬於類別i的機率,y_{ki}是模型對樣本k預測爲屬於類別i的機率。

對單個樣原本說,loss functionl_{CE}對輸入a_j的導數爲:


\frac{\partial l_{CE}}{\partial a_j} = -\sum_{i = 1}^{C}\frac {\partial t_i log(y_i)}{\partial{a_j}} = -\sum_{i = 1}^{C}t_i \frac {\partial log(y_i)}{\partial{a_j}} = -\sum_{i = 1}^{C}t_i \frac{1}{y_i}\frac{\partial y_i}{\partial a_j}

上面對\frac{\partial{y_{i}}}{\partial{a_{j}}}求導結果已經算出:

i = j時:\frac{\partial{y_{i}}}{\partial{a_{j}}} = y_i(1 - y_j)

i \ne j時:\frac{\partial{y_{i}}}{\partial{a_{j}}} = -y_iy_j

因此,將求導結果代入上式

 

 

 

參考博客:

一、https://zhuanlan.zhihu.com/p/27223959

相關文章
相關標籤/搜索