1. 程式人生 > >六、改進神經網路的學習方法(2):Softmax輸出層

六、改進神經網路的學習方法(2):Softmax輸出層

本部落格主要內容為圖書《神經網路與深度學習》和National Taiwan University (NTU)林軒田老師的《Machine Learning》的學習筆記,因此在全文中對它們多次引用。初出茅廬,學藝不精,有不足之處還望大家不吝賜教。

1. Softmax輸出層

  定義一種新的輸出層,對於輸出層某一個神經元的權值輸入為 zLj,啟用值輸出為 aLj,則Softmax輸出層的定義如下

a_j^L=\frac{e^{z_j^L}}{\sum_k{e^{z_k^L}}}\tag{1}\label{1}
為了更好地理解⽅程, 假設我們有⼀個包含四個輸出神經元的神經⽹絡,對應四個帶權輸⼊為z
L1
zL2zL3zL4
這裡的條塊顯⽰帶權輸⼊的可取值和對應輸出啟用值的圖形。當增大 zL4 的值的時候,aL4 的值也會對應增大,而其他三個神經元的輸出值會對應減小; 當減小 zL4 的值的時候,aL4 的值也會對應減小,而其他三個神經元的輸出值會對應增大。所以Softmax輸出層對應著兩種顯著的特性,即單調性和非區域性性。

1.1 Softmax的單調性證明

  這裡應該首先對Softmax定義式進行理解,在這個定義中,aLj 代表著函式的因變數,值得注意是如何理解分子與分母,分子的含義是輸出層中若干個神經元中某一個神經元的啟用值,分母的含義是輸出層中所有神經元啟用值的總和。因此當sofmax函式對輸出層某一個神經元的權值輸入進行求偏導數的時候,如果恰好是對分子所對應的那個神經元的權值輸入,則分子分母都需要求導;如果不是則只有分母需要偏導數,分子為常數。

  所以當 j=k 時,分子分母中均含有需要求導數的部分,所以將softmax的表達形式變成如下的表示式

a_j^L=1-\frac{\sum_{k\neq j}e^{z_j^L}}{\sum_k{e^{z_k^L}}}\tag{2}\label{2}
\frac{\partial a_j^L}{\partial z_k^L}=\frac{e^{z_k^L}\sum_{k\neq j}e^{z_k^L}}{\left(\sum_k{e^{z_k^L}}\right)^2}\tag{3}\label{3}
因此aLjzLk 是恆為正的。當 jk 時,
\frac{\partial a_j^L}{\partial z_k^L}=-\frac{e^{z_j^L}e^{z_k^L}}{\left(\sum_k{e^{z_k^L}}\right)^2}\tag{4}\label{4}

因此aLjzLk 是恆為負的。

  所以當自己的權值輸入增加時,函式值會對應增加;但是隻有當別的神經元的權值輸入都下降的時候,函式值才會增加,因此Softmax是具有單調增加性的。

1.2 Softmax的非區域性性證明

  通過定義式可以知道任何一個輸出啟用值依賴於所有的輸入。

  這樣便引出了Softmax輸出層的第一個優點:softmax層得到的輸出是一系列相加和為1的正數,即從softmax層得到的輸出可以看做是一個概率分佈

1.3 Softmax的數值穩定

  程式設計實現softmax函式計算的時候,中間項efyijefj因為存在指數函式,所以數值可能非常大。除以大數值可能導致數值計算的不穩定,所以學會使用歸一化技巧非常重要。如果在分式的分子和分母都乘以一個常數C,並把它變換到求和之中,就能得到一個從數學上等價的公式:

efyijefj=CefyiCjefj=efyi+logCjefj+logC
C 的值可自由選擇,不會影響計算結果,通過使用這個技巧可以提高計算中的數值穩定性。通常將 C 設為 logC=maxjfj。該技巧簡單地說,就是應該將向量f中的數值進行平移,使得最大值為 0。

2. log-likelihood代價函式

  用 x 表示輸入網路的訓練資料,用 y 表示相應的期待輸出。然後對應這個輸入的log-likelihood 代價是

C=\ln a_y^L\tag{5}\label{5}
需要注意的是這裡我對 y 的使用和之前不太一樣。之前的 y 用來表示網路期望的輸出,例如輸入的圖片是7則期望的輸出是7。但在下面的式子中,y 代表一個與7相關的向量,意思是這個向量的第7位是1,其餘位都是0。
  當網路的輸出層為Softmax輸出層且代價函式是log-likelihood函式,對輸出層的權重及偏置求梯度可得(具體過程省略,實際與之前的求法均相似,即先對 a 求偏導數,在對 z 求偏導數,最後對 w 或者 b 求偏導數) \frac{\partial C}{\partial b_j^L}=a_j^L-y_j\tag{6}\label{6}
\frac{\partial C}{\partial w_{jk}^L}=a_k^{L-1}(a_j^L-y_j)\tag{7}\label{7}
  這些表示式確保了Softmax輸出層的第二個優點不會遇到學習速度衰退的問題。事實上可以將softmax輸出層與log-likelihood代價函式的搭配,類比成sigmoid輸出層與交叉熵代價函式的搭配。在許多情景下,兩種方法的效果都不錯。我們有時會使用softmax輸出層搭配log-likelihood代價函式來讓我們的網路和一些有影響力的學術論文中的網路更加接近。通常來說,在任何你想要把輸出啟用值解讀成概率的時候,softmax加上log-likelihood總是不錯的選擇,至少對於沒有交集的分類問題(例如MNIST)來說是這樣的。

3. Softmax & log-likelihodd 的反向傳播

  因為 CbLj=CzLj,所以

δLj=aLjyj(8)
使用這個表示式以後,我們就可以在包含softmax輸出層和 log-likelihood 代價函式的網路中應用反向傳播演算法了。

4. Softmax與邏輯迴歸

留個坑有空填……