sigmoid函数在机器学习中的作用

730 阅读1分钟

Sigmoid函数是一个在生物学中,常见的S型生长曲线。在信息科学中,由于其单增以及反函数单增的性质,Sigmoid函数常用于神经网络的激活函数,将变量映射到0-1之间。

优点:平滑、易于求导。

缺点:激活函数计算量大,反向传播求误差梯度时,求导涉及除法;反向传播时,很容易就会出现梯度消失的情况,从而无法完成深层网络的训练。

Sigmoid函数由下列公式定义:

S(x)=11+exS(x) = \frac{1} {1 + e^{-x}}

Sigmoid的导数:

S(x)=S(x)1S(x)S'(x) = \frac {S(x)} {1-S(x)}

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型,所以可以用在神经元的激活函数上