從神經網絡視角看均方誤差與交叉熵作為損失函數時的共同點


縮寫:

  • 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)\)上的損失:

\[J(w) = \frac 12 (a - y)^2 = \frac 12 (net - y)^2 \]

輸出神經元的敏感度:

\[\delta = \frac {\partial J}{\partial net} = a - y = net - 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:

\[l(w) = a^y(1-a)^{(1-y)} \]

log-likelihood:

\[L(w) = ln l(w) = ylna + (1-y)ln(1-a) \]

最大化\(L(w)\)就是最小化\(-L(w)\), 所以它的loss為:

\[J(w) = - L(w) = -ylna - (1 - y) ln(1 - a) \]

這實際上就是二分類問題的交叉熵loss. 如blog所示, 當\(a=0.5\)時, loss最大.
輸出神經元的敏感度:

\[\delta = \frac {\partial J}{\partial net} = \frac {\partial J} {\partial a} \frac {\partial a} {\partial net} = \frac {a-y}{(1-a)a} (1-a)a = a - y \]

相信你已經看出來了, 線性回歸NN的敏感度\(net - y\)實際上也是激活值與目標值的差. 也就是說, 雖然邏輯回歸與線性回歸使用了不同的loss function, 但它們倆反向傳播的敏感度在形式上是一致的, 都是激活值\(a\)與目標值\(y\)的差值.

多分類邏輯回歸

先將多分類邏輯回歸轉換成神經網絡模型:

  • 輸入層: 同上
  • 輸出層: 有多少種類別, 就有多少個輸出神經元. 用\(C\)來表示類別數目, 所以輸出層有\(C\)個神經元. 激活函數為softmax函數. 輸出值和二分類邏輯回歸一樣被當成概率作為分類依據.
  • 隱層: 無

依然只考慮單個樣本\((x, y)\).
\(y\)的預測值\(f(x)\)為輸出值最大的那個神經元代表的類別, 即:

\[f(x) = arg\max_i a_i, \forall i \in \{1,\dots, C\} \]

而第\(i\)個輸出神經元的激活值為:

\[a_i = \frac {e^{net_i}}{\sum_{j=1}^N e^{net^j}} \]

它代表\(x\)的類別為\(i\)的概率.
為方便寫出它的似然函數, 先將\(y\)變成一個向量:

\[y \gets (y_1, \dots, y_i, \dots, y_C)^T \]

其中,

\[y_i = \begin{cases} 1&, i = y \\ 0&, i \neq y \end{cases} \]

它實際上代表第\(i\)個神經元的目標值.
所以樣本\((x,y)\)出現的概率, 即它的似然函數為:

\[l(W) = \prod_{i=1}^{C} a_i^{y_i} \]

注意, 這里的權值\(W\)已經是一個\(C\times d\)的矩陣, 而不是一個列向量.
log似然函數:

\[L(W) = ln l(W) = \sum_{i=1}^{C} y_i ln a_i \]

\(L(W)\)的長相也可以看出, 二分類的邏輯回歸只是多分類邏輯回歸的一種特殊形式. 也就是說, 二分類的邏輯回歸也可以轉換成有兩個輸出神經元的NN.
同樣的, 最大化\(L(w)\)就是最小化\(-L(w)\), 所以它的loss為:

\[J(W) = -L(W) = - \sum_{j=1}^{C} y_j ln a_j \]

這是更一般化的交叉熵. 代入softmax函數, 即\(a_j = \frac {e^{net_j}}{\sum_{k=1}^C e^{net_k}}\), 得到:

\[J(W) = \sum_{j=1}^{C} y_j (ln \sum_{k=1}^C e^{net_k} - net_j) \]

\(i\)個神經元的敏感度:

\[\delta_i = \frac {\partial J}{\partial net_i} = \sum_{j=1}^C y_j (\frac {\sum_{k=1}^C e^{net_k} \frac {\partial net_k}{\partial net_i}}{\sum_{k=1}^C e^{net_k}} - \frac {\partial net_j}{\partial net_i}) = \sum_{j=1}^C y_j\frac{e^{net_i}}{\sum_{k=1}^C e^{net_k}} - \sum_{j=1}^C y_j \frac {\partial net_j}{\partial net_i} = a_i - y_i \]

很神奇的一幕又出現了. 上面說過, 把目標值向量化后, \(y_i = 0,1\)實際上代表第\(i\)個神經元的目標值. 所以, 在這里, 輸出神經元的敏感度也是它的激活值與目標值的差值.

總結與討論

主要結論:

  • 以均方誤差或交叉熵誤差作為loss function的NN, 其輸出層神經元的敏感度是它的激活值與目標值的差值

比較有用的by-product:

  • 很多機器學習算法都可以轉換成淺層神經網絡模型
  • softmax與sigmoid 函數的導數形式: \(s' = s(1-s)\)
  • 最大似然估計的loss function 是交叉熵
  • 深度學習中常用的softmax loss其實也是交叉熵.


免責聲明!

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



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