【NLP面試QA】啟用函式與損失函式
阿新 • • 發佈:2020-04-04
[TOC]
#### Sigmoid 函式的優缺點是什麼
優點:
- 輸出範圍優先,可以將任意範圍的輸出對映到 (0, 1) 範圍內,在輸出層可以用於表示二分類的輸出概率
- 易於求導
缺點:
- Sigmoid 函式容易飽和,且梯度範圍為 (0, 0.25] ,在反向傳播中容易導致梯度消失問題。
#### ReLU的優缺點
優點
- ReLU的非飽和性可以提供相對寬的啟用邊界。
- 梯度只有 0, 1 兩個變數,有效地解決梯度消失的問題。
- ReLU的單側抑制提供了網路的稀疏表達能力。
缺點
- 訓練過程中會導致神經元死亡的問題。在訓練時,如果引數在一次不恰當的更新後,第一個隱藏層中的某個ReLU神經元在所有的訓練資料上都不能被啟用。那麼,這個神經元自身引數的梯度永遠都會是 0,在以後的訓練過程中永遠不能被更新。這種現象稱為死亡 ReLU 問題 (Dying ReLU Problem)
#### 什麼是交叉熵
- 交叉熵刻畫的是兩個概率分佈之間的距離,**描述了真實分佈和預測分佈之間的差異性**。
- 交叉熵的公式:$H(p, q) = -\sum_x p(x) log\ q(x)$,其中,x為一個樣本中每一個類別的概率
#### 為什麼分類問題的損失函式為交叉熵而不能是 MSE?
從建模上來看:
- **MSE** 是假設資料符合高斯分佈時,概率分佈的負條件對數似然。表示兩個向量之間的歐幾里得距離
- **CE**是假設模型分佈為多項式分佈時,概率分佈的負條件對數似然。表示真實分佈和預測分佈之間的差異性
從梯度上來看:
- MSE 的梯度 $\frac{\partial L}{\partial \hat y_i} = 2(\hat y_i - y_i)$
- CE 的梯度 $\frac{\partial L}{\partial \hat y_i} = \frac{y_i}{\hat y_i}$
MSE 在優化後期側殘差會趨於零,非常小,導致優化速度減慢。而 CE 在優化後期正確類別的分量是趨於 1 的,而非正確類別的分量恆為 0,優化速度更快。
直觀上來看:
- MSE 無差別得關注全部類別上預測概率和真實概率的差。
- CE 關注的是正確類別的預測概率。
#### 多分類問題中,使用 sigmoid 和 softmax 作為最後一層啟用函式的區別
- sigmoid 函式的每次輸出是相互獨立的,不能體現樣本之間的相關性。
- 而softmax 的歸一化意味著一個輸出增大必然伴隨著其他輸出的減小,這更符合概率規則,體現了樣本互斥的關係。
- 如果是一個樣本隸屬於多個樣本,且各個樣本是相互獨立的分類問題,可以採用 sigmoid 作為每個輸出的啟用函式;而對於類別互斥的分類問題則應該採用 softmax 作為最後的啟用函式。
#### 為什麼 LSTM 中的啟用函式為 tanh 和 sigmoid 而不用 Relu
在 LSTM 中,sigmoid 作用為門函式的作用,取值範圍為 (0, 1),是無法替代的
使用 Relu 的目的是為了解決梯度消失問題,而在 LSTM 中,由於時序上的殘差機制,梯度消失問題已經大大減弱了。
另一方面,tanh 能夠將模型輸出對映在 (-1, 1) 範圍內,更易於優化
#### softmax 的反向傳播
對於多分類問題,輸出層啟用函式為softmax的單層神經網路分類器只考慮權重引數 $W$,採用SGD的優化方法,輸入樣本為 $x$,標註為 $y$,樣本特徵維度為 $m$,類別個數為 $n$,其前向傳播和反向傳播公式:
- 前向傳播:
$$
\begin{aligned}
&z = Wx \\
&p_i = softmax(z) = \frac{exp(z_i)}{\sum_{j=1}^{n} exp(z_j)} \\
&L(\hat{y}, y) = -\sum_{i=1}^ny_i\ log\ p_i
\end{aligned}$$
- 反向傳播:
$$\frac{\partial L}{\partial p_i} = -\sum_{i=1}^n\frac{y_i}{p_i} $$
$$
\begin{cases}
\frac{\partial p_i}{\partial z_j} = \frac{exp(z_j)\sum_{k=1}^{n} exp(z_k) - exp(z_j)^2}{(\sum_{k=1}^{n} exp(z_k))^2} = p_j(1-p_j) & , i = j\\
\frac{\partial p_i}{\partial z_j} = -\frac{exp(z_j)exp(z_i)}{(\sum_{k=1}^{n} exp(z_k))^2} = -p_ip_j & , i \ne j
\end{cases}
$$
則
$$
\begin{aligned}
&\frac{\partial L}{\partial z_i} = \frac{\partial p_i}{\partial z_i} \frac{\partial p_i}{\partial z_i}\\
&= - \frac{y_i}{p_i}p_i(1-p_i) - \sum_{j\ne i}\frac{y_j}{p_j}(-p_ip_j) \\
&= -y_i + p_iy_i + p_i\sum_{j\ne i}y_j \\
&= -y_i + p_i \sum_{j=1}^ny_j \\
&= p_i - y_i
\end{aligned}$$
表示為矩陣為:$\frac{\partial L}{\partial z} =