縮寫:
- NN: neural network, 神經網絡
- MSE: Mean Squared Error, 均方誤差
- CEE: Cross Entropy Error, 交叉熵誤差.(此縮寫不是一個conventional縮寫)
標記符號:
- \(net\)或\(net_i\), 凈輸出值, \(net = w^Tx\)
- \(a\)或\(a_i\), 神經元的激活函數輸出值: \(a = f(net)\)
本文所有的\(x\)都是增廣后的, 即\(x_0 = 1\).
Introduction
MSE與CEE是兩種常用的loss function, 它們在形式上很不一樣, 但在使用梯度下降算法學習最優參數時, 會發現它們其實是殊途同歸.
很多機器學習算法都可以轉換成淺層神經網絡模型(本文中特指全連接的MLP). 而神經網絡的BP算法(BP算法也是梯度下降算法)最核心的一步就是計算敏感度(見BP), 采用不同損失函數和激活函數的NN在BP算法上的差異也主要存在於敏感度上. **所以將有監督機器學習算法轉化為神經網絡模型后, 只需要計算出輸出神經元的敏感度就可以看出MSE與CEE之間的很多異同點. **
在利用mini-batch SGD訓練神經網絡時, 通常是先計算批次中每一個樣本產生的梯度, 然后取平均值. 所以接下來的分析中, 只關注單個訓練樣本產生的loss. 根據這個loss計算敏感度.
使用MSE的典型代表是線性回歸, 使用CEE的代表則是邏輯回歸. 這兩個算法的一些相同點與不同點可以參考blog.
問題描述:
- 給定:
- 訓練集\(D = \{(x^{(1)}, y^{(1)}), \dots, (x^{(i)}, y^{(i)}), \dots, (x^{(N)}, y^{(N)})\}\), \(x^{(N)} \in \chi\), \(\chi : R^d\), \(y^{(i)}\in R\)
- model family \(f(x)\)
- 目標: 利用\(D\)學習一個具體的\(f(x)\)用於對新樣本\(x'\)進行預測:\(y' = f(x')\)
注意, 線性回歸的\(f(x)與y\)取的是連續值, 而邏輯回歸則是代表類別的離散值.
均方誤差---線性回歸
線性回歸使用均方誤差(Mean Squared Error, MSE)作為loss function.
將線性回歸問題\(f(x) = w^Tx\)轉換成神經網絡模型:
- 輸入層: \(d\)個神經元, \(d\)為\(x\)的維度.
- 輸出層: \(1\)個神經元, 激活函數為identical, 即\(a = net = w^Tx\).
- 隱層: 無
在樣本\((x, y)\)上的損失:
輸出神經元的敏感度:
交叉熵---邏輯回歸
邏輯回歸使用最大似然方法估計參數.
二分類邏輯回歸
先說二分類邏輯回歸, 即\(y = \{0, 1\}\). 將它轉換成神經網絡模型, 拓撲結構與線性回歸一致. 不同的是輸入神經元的激活函數為\(a = sigmoid(net)\). 把\(a\)看作\(y=1\)的概率值: \(P(y =1 | x) = a\). 分類依據是根據選擇的閾值, 例如\(0.5\), 當\(a\)不小於它時\(y=1\), 否則\(y = 0\).
樣本\((x, y)\)出現的概率, 即likelihood function:
log-likelihood:
最大化\(L(w)\)就是最小化\(-L(w)\), 所以它的loss為:
這實際上就是二分類問題的交叉熵loss. 如blog所示, 當\(a=0.5\)時, loss最大.
輸出神經元的敏感度:
相信你已經看出來了, 線性回歸NN的敏感度\(net - y\)實際上也是激活值與目標值的差. 也就是說, 雖然邏輯回歸與線性回歸使用了不同的loss function, 但它們倆反向傳播的敏感度在形式上是一致的, 都是激活值\(a\)與目標值\(y\)的差值.
多分類邏輯回歸
先將多分類邏輯回歸轉換成神經網絡模型:
- 輸入層: 同上
- 輸出層: 有多少種類別, 就有多少個輸出神經元. 用\(C\)來表示類別數目, 所以輸出層有\(C\)個神經元. 激活函數為softmax函數. 輸出值和二分類邏輯回歸一樣被當成概率作為分類依據.
- 隱層: 無
依然只考慮單個樣本\((x, y)\).
\(y\)的預測值\(f(x)\)為輸出值最大的那個神經元代表的類別, 即:
而第\(i\)個輸出神經元的激活值為:
它代表\(x\)的類別為\(i\)的概率.
為方便寫出它的似然函數, 先將\(y\)變成一個向量:
其中,
它實際上代表第\(i\)個神經元的目標值.
所以樣本\((x,y)\)出現的概率, 即它的似然函數為:
注意, 這里的權值\(W\)已經是一個\(C\times d\)的矩陣, 而不是一個列向量.
log似然函數:
從\(L(W)\)的長相也可以看出, 二分類的邏輯回歸只是多分類邏輯回歸的一種特殊形式. 也就是說, 二分類的邏輯回歸也可以轉換成有兩個輸出神經元的NN.
同樣的, 最大化\(L(w)\)就是最小化\(-L(w)\), 所以它的loss為:
這是更一般化的交叉熵. 代入softmax函數, 即\(a_j = \frac {e^{net_j}}{\sum_{k=1}^C e^{net_k}}\), 得到:
第\(i\)個神經元的敏感度:
很神奇的一幕又出現了. 上面說過, 把目標值向量化后, \(y_i = 0,1\)實際上代表第\(i\)個神經元的目標值. 所以, 在這里, 輸出神經元的敏感度也是它的激活值與目標值的差值.
總結與討論
主要結論:
- 以均方誤差或交叉熵誤差作為loss function的NN, 其輸出層神經元的敏感度是它的激活值與目標值的差值
比較有用的by-product:
- 很多機器學習算法都可以轉換成淺層神經網絡模型
- softmax與sigmoid 函數的導數形式: \(s' = s(1-s)\)
- 最大似然估計的loss function 是交叉熵
- 深度學習中常用的softmax loss其實也是交叉熵.
