來自GPT,后期會再整理。。。
Softmax函數在深度學習中,特別是在多分類任務中,被廣泛用作輸出層的激活函數。它將模型的原始輸出(logits)轉化為概率分布,使得每個類別的概率總和為1。相比于簡單地使用“單個/總數”來計算概率,Softmax函數有其獨特的優勢和作用。
### Softmax函數的定義
給定一個包含 \(K\) 個類別的輸入向量 \(\mathbf{z} = [z_1, z_2, \ldots, z_K]\),Softmax函數定義為:
\[ \text{Softmax}(z_i) = \frac{e^{z_i}}{\sum_{j=1}^{K} e^{z_j}} \]
其中,\(z_i\) 是輸入向量中的第 \(i\) 個元素, \(e\) 是自然對數的底數。
### 為什么使用Softmax函數?
1. **轉化為概率分布**:Softmax函數將原始輸出轉化為概率分布。每個類別的輸出都是一個概率值,且所有類別的概率和為1。這非常適合多分類任務,例如圖像分類、文本分類等。
2. **放大差異**:Softmax函數通過指數函數將輸入值進行非線性放大。較大的輸入值對應較大的輸出概率,較小的輸入值對應較小的輸出概率。這種性質可以放大不同類別之間的差異,使得模型更容易區分不同類別。
3. **避免數值問題**:直接使用“單個/總數”計算概率可能導致數值穩定性問題,尤其是當輸入值相差較大時。Softmax函數通過指數運算和歸一化操作,能更好地處理數值范圍廣泛的輸入,避免數值下溢或上溢的問題。
4. **梯度計算**:在反向傳播過程中,Softmax函數的導數計算具有良好的數值性質。它的導數形式適合于梯度下降算法的優化過程,能夠有效更新模型參數。
### Softmax與“單個/總數”的比較
假設我們有一個包含 \(K\) 個類別的原始輸出向量 \(\mathbf{z}\),直接使用“單個/總數”計算概率的方法如下:
\[ p_i = \frac{z_i}{\sum_{j=1}^{K} z_j} \]
這種方法存在幾個問題:
1. **負值問題**:如果原始輸出 \(\mathbf{z}\) 中存在負值,上述計算方法會產生不合理的概率(負值或大于1的值)。
2. **數值穩定性**:原始輸出值可能差異很大,直接相除容易導致數值不穩定。
3. **沒有放大差異**:簡單的比例計算無法有效放大類別之間的差異,不利于模型的分類決策。
### 示例
為了更好地理解,下面是一個簡單的示例:
假設我們有一個包含3個類別的原始輸出向量 \(\mathbf{z} = [2.0, 1.0, 0.1]\)。
1. **使用Softmax函數計算概率**:
\[ \text{Softmax}(z_i) = \frac{e^{z_i}}{e^{2.0} + e^{1.0} + e^{0.1}} \]
計算得到:
\[ \text{Softmax}(2.0) = \frac{e^{2.0}}{e^{2.0} + e^{1.0} + e^{0.1}} \approx \frac{7.39}{7.39 + 2.72 + 1.11} \approx 0.66 \]
\[ \text{Softmax}(1.0) = \frac{e^{1.0}}{e^{2.0} + e^{1.0} + e^{0.1}} \approx \frac{2.72}{7.39 + 2.72 + 1.11} \approx 0.24 \]
\[ \text{Softmax}(0.1) = \frac{e^{0.1}}{e^{2.0} + e^{1.0} + e^{0.1}} \approx \frac{1.11}{7.39 + 2.72 + 1.11} \approx 0.10 \]
2. **使用“單個/總數”計算概率**:
\[ p_i = \frac{z_i}{\sum_{j=1}^{K} z_j} \]
計算得到:
\[ p_1 = \frac{2.0}{2.0 + 1.0 + 0.1} \approx \frac{2.0}{3.1} \approx 0.65 \]
\[ p_2 = \frac{1.0}{2.0 + 1.0 + 0.1} \approx \frac{1.0}{3.1} \approx 0.32 \]
\[ p_3 = \frac{0.1}{2.0 + 1.0 + 0.1} \approx \frac{0.1}{3.1} \approx 0.03 \]
從計算結果可以看出,Softmax函數的概率分布更加合理和穩定,能夠有效區分類別之間的差異。直接使用“單個/總數”計算的概率分布在數值穩定性和差異放大方面都不如Softmax函數。
總結來說,Softmax函數在深度學習中的多分類任務中扮演著重要角色,具有轉化為概率分布、放大差異、避免數值問題和適合梯度計算等優勢,使其成為多分類任務中廣泛采用的激活函數。