【機器學習】BP & softmax求導


 

 

目錄

一、BP原理及求導

二、softmax及求導

 

一、BP

1、為什么沿梯度方向是上升最快方向

    根據泰勒公式對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)方向相同時,點積最大,故梯度方向是上升最快方向。

2、什么是BP

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

 

 

3、BP的優勢

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

4、BP的不足

  • BP是基於梯度下降算法實現的,所以容易陷入局部最小而不是全局最小
  • 由於BP神經網絡中的參數眾多,每次都需要更新數量較多的閾值和權值,故會導致收斂速度過慢

 

二、softmax函數及求導

1、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。

 

2、求導

對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

所以,將求導結果代入上式

 

 

 

參考博客:

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM