本部分介绍了反向传播算法的失败情形,以及正则化神经网络的最常用方法。
失败案例
有很多常见做法会导致反向传播算法出错。
梯度消失
较低层(更接近输入)的渐变可能会变得非常小。在深度网络中,计算这些梯度可能涉及许多小项的乘积。
当较低层的梯度消失为 0 时,这些层的训练速度非常慢,或根本不训练。
ReLU 激活函数有助于防止梯度消失。
分解渐变
如果网络中的权重非常大,则较低层的梯度会涉及许多大项的乘积。在这种情况下,您可以让渐变效果呈爆炸式增长:渐变因过大而无法收敛。
批量归一化有助于防止梯度爆炸,因为可以降低学习速率。
ReLU 单元无效
一旦 ReLU 单元的加权和低于 0,ReLU 单元可能会卡住。它会输出 0 激活,对网络的输出没有任何影响,并且在反向传播期间,梯度无法再流过它。如果梯度来源被切断,ReLU 的输入可能永远不会变化足以使加权和恢复到 0 以上。
降低学习速率有助于防止 ReLU 单元消失。
Dropout 正规化
这是称为丢弃的另一种形式的正则化,可用于神经网络。其工作原理是,在一个梯度步长中随机“丢弃”网络中的单元激活。丢弃得越多,正则化效果就越强:
- 0.0 = 无丢弃正则化。
- 1.0 = 丢弃所有内容。模型学不到任何东西。
- 介于 0.0 和 1.0 之间的值 = 更有用。