1. 程式人生 > >【NLP面試QA】啟用函式與損失函式

【NLP面試QA】啟用函式與損失函式

[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} =