本文介绍高等数学中的sigmoid函数,以及在神经网络中的应用。
函数原型
$sigmoid(x) = \frac{1}{1 + \frac{1}{e^x}} = \frac{1}{1 + e^{-x}}$
导数的函数原型
$(sigmoid(x))' = (\frac{1}{1 + e^{-x}})' = \frac{-(1+e^{-x})'}{(1+e^{-x})^2} = \frac{e^{-x}}{(1+e^{-x})^2} = sigmoid(x)\cdot(1-sigmoid(x)) = \frac{e^{-x}}{1+e^{-x}} = 1 - \frac{1}{1 + e^{-x}}$
适用范围
主要用于二分类的输出层
函数图像
Python代码实现
def main():
x = np.arange(-10, 10, 0.01)
y = 1 / (1 + np.exp(-x))
plt.figure(figsize=(6, 4))
plt.title('sigmoid function')
plt.xlabel('x', loc='left')
plt.ylabel('y', loc='bottom')
# sigmoid函数图像
plt.plot(x, y, label='sigmoid function')
# sigmoid导数图像
der_y = y * (1 - y)
plt.plot(x, der_y, label='sigmoid derivative function')
plt.xticks(np.arange(-10, 11, 1))
plt.yticks(np.arange(0, 1.1, 0.1))
plt.legend()
plt.grid(True, color='b', linewidth='0.5', linestyle='dashed')
plt.tight_layout()
plt.show()