10-激活函数
7.3.2 激活函数
回想一下,在信号被传递到下一层之前,激活函数对神经元的输出进行转换(如图7-2所示)。激活函数有两个目的:一是让神经网络不只是能表示线性变换的解(只要激活函数本身不只是线性变换);二是能将每个神经元的输出保持在一定范围内。激活函数应该具有可计算的导数,这样它就能用于反向传播。
sigmoid函数就是一组流行的激活函数。图7-7中展示了一种特别流行的sigmoid函数(通常“sigmoid函数”就是指它),在图中被称为S(x),还给出了它的表达式及其导数(S′(x))。sigmoid函数的结果一定是介于0和1之间的值。大家即将看到,让数值始终保持在0和1之间对神经网络来说是很有用的。图7-7中的公式很快就会出现在代码中了。

其他的激活函数还有很多,但这里将采用sigmoid函数。下面把图7-7中的公式直接转换为代码,如代码清单7-2所示。
代码清单7-2 util.py(续)
# the classic sigmoid activation function
def sigmoid(x: float) -> float:
return 1.0 / (1.0 + exp(-x))
def derivative_sigmoid(x: float) -> float:
sig: float = sigmoid(x)
return sig * (1 - sig)