【NLP面試QA】激活函數與損失函數
- 2020 年 4 月 4 日
- 筆記
目錄
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}^nfrac{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_{jne i}frac{y_j}{p_j}(-p_ip_j) \ &= -y_i + p_iy_i + p_isum_{jne i}y_j \ &= -y_i + p_i sum_{j=1}^ny_j \ &= p_i – y_i end{aligned}]
表示為矩陣為:(frac{partial L}{partial z} = p – y)