前言
Sigmoid 函數(Logistic 函數)是神經網絡中非常常用的激活函數,我們今天來深入了解一下 Sigmoid 函數。
函數形式
函數圖像
代碼實現
代碼運行:Colab
import matplotlib.pyplot as plt
import numpy as np
import math
x = np.linspace(-10, 10, 100)
z = 1 / (1 + np.exp(-x))
plt.title("Sigmoid")
plt.plot(x, z)
plt.xlabel("x")
plt.ylabel("Sigmoid(X)")
plt.savefig("sigmoid.png")
plt.show()
plt.close()
性質及問題
函數值 S(x) 的值域為 (0, 1),常用於二分類問題,函數平滑,易於求導。但是作為激活函數,其計算量大,反向傳播求誤差梯度時,求導有除法,容易出現梯度消失的情況,在輸入接近於正無窮或負無窮時,梯度趨近於 0,發生梯度彌散(隨着網絡層數的增加,使用反向傳播算法計算梯度時,從輸出層到最初幾層,梯度消失的非常明顯,造成整體損失函數對最初幾層的權重的導數非常小,這樣在使用梯度下降算法時,最初幾層權重變化非常慢,甚至無法學習到有用的特征)。因為 Sigmoid 函數值大於 0,因此權重更新只能朝着一個方向更新,可能影響收斂速度。
總結
Sigmoid 函數是神經網絡中一種非常常用的激活函數,被廣泛應用於邏輯回歸,在統計學,機器學習領域有其廣泛應用。
- 原文首發自:RAIS