Sigmoid函数是一个在生物学中,常见的S型生长曲线。在信息科学中,由于其单增以及反函数单增的性质,Sigmoid函数常用于神经网络的激活函数,将变量映射到0-1之间。
优点:平滑、易于求导。
缺点:激活函数计算量大,反向传播求误差梯度时,求导涉及除法;反向传播时,很容易就会出现梯度消失的情况,从而无法完成深层网络的训练。
Sigmoid函数由下列公式定义:
Sigmoid的导数:
Sigmoid函数,Python实现:
import numpy as np
import matplotlib.pyplot as plt
def sigmoid(x):
return 1.0/(1+np.exp(-x))
sigmoid_inputs = np.arange(-10,10,0.1)
sigmoid_outputs = sigmoid(sigmoid_inputs)
print("Sigmoid Function Input :: {}".format(sigmoid_inputs))
print("Sigmoid Function Output :: {}".format(sigmoid_outputs))
plt.plot(sigmoid_inputs,sigmoid_outputs)
plt.xlabel("Sigmoid Inputs")
plt.ylabel("Sigmoid Outputs")
plt.show()
由于Sigmoid函数可以是数字分布在(0, 1)之间,而且呈现S型,所以可以用在神经元的激活函数上