sigmoid函数:
x的值可能为[−∞,+∞],为了方便处理,需要将其压缩到一个合理的范围,还需
这样的激励函数,能够将刚才的区间压缩到[0,1]。
sigmoid 是使用范围最广的一类激活函数,具有指数函数形状,它在物理意义上最为接近生物神经元。此外,(0, 1) 的输出还可以被表示作概率,或用于输入的归一化,代表性的如Sigmoid交叉熵损失函数。
然而,sigmoid也有其自身的缺陷,最明显的就是饱和性。
BP算法就是所谓的反向传播算法,它将误差进行反向传播,从而获取更高的学习效率。这很像烽火台,如果前线战败了,那么消息就通过烽火台传递回指挥部,指挥部去反思问题,最终改变策略。
但这带来一个问题,中间层的误差怎么计算?我们能简单地将权重和残差的乘积,返回给上一层节点(这种想法真暴力,从左到右和从右到左是一样的)。
这相当于三次传播:
- 第一步:从前向后传播FP
- 第二步:得到值z,误差为y,将误差反向传播,获得每个节点的偏差$\sigma$
- 第三步:再次正向传播,通过上一步的$\sigma$,再乘以步长,修改每一个神经元突触的权重。
下面一张图展示了完整的BP算法的过程,我看了不下20遍:
更有趣的是,sigmoid求导之后,特别像高斯(正态)分布,而且sigmoid求导非常容易。