深度网络训练技巧|深度学习(李宏毅)笔记(三)

1. 过拟合和欠拟合

  • 过拟合:训练集效果好,测试集效果不好。
    1. 提前停止
    2. 正则化
    3. Dropout
  • 欠拟合:训练集与测试集效果都不好。
    1. 切换**函数
    2. 自适应学习率

2. 梯度消失问题

  问题:随着越来越多的**函数加到神经网络中,损失函数的梯度趋近于0,使得网络结构很难训练。
  举个例子,如下图所示,神经网络使用sigmoid函数作为**函数,由于sigmoid函数将函数的输入压缩到0和1之间,所以导致到浅层网络处的w变化很大时loss变化很小,即损失函数对w的梯度几乎为0。

深度网络训练技巧|深度学习(李宏毅)笔记(三)

3. ReLU**函数

  ReLU**函数图像如下:

深度网络训练技巧|深度学习(李宏毅)笔记(三)
  应注意ReLU**函数不是线性函数。ReLU**函数不像sigmoid函数那样压缩输入,可以有效地缓解梯度消失问题,但是ReLU也有可能产生梯度消失问题,在z小于0的时候,**函数梯度为零,梯度消失,神经元不更新,变成了死亡节点。
  ReLU**函数也有其他多个变种:
   1. Leaky ReLU
深度网络训练技巧|深度学习(李宏毅)笔记(三)
   2. Parametric ReLU
深度网络训练技巧|深度学习(李宏毅)笔记(三)

4. Maxout

  使用Maxout使得**函数不是定义的**函数,而是通过神经网络自己学习到的**函数。在使用Maxout的隐藏层中将神经元进行分组,每组输出该组内神经元输出值得最大值作为Maxout层的输出。
  在下图中可以看到该种情况下(有一个神经元对应的权重和偏量均为零)相当于使用了ReLU作为**函数。

深度网络训练技巧|深度学习(李宏毅)笔记(三)

深度网络训练技巧|深度学习(李宏毅)笔记(三)
  当所有的神经元的权重和偏量值均不为零的时候就相当于**函数是通过学习来得到的。下图展示了当组内神经元数为2或3时的**函数的图像。

深度网络训练技巧|深度学习(李宏毅)笔记(三)

5. 自适应学习率

参考链接:回归|深度学习(李宏毅)笔记(一)

6. 早停法

深度网络训练技巧|深度学习(李宏毅)笔记(三)

7. 正则化

L2正则化:

深度网络训练技巧|深度学习(李宏毅)笔记(三)
L1正则化:

深度网络训练技巧|深度学习(李宏毅)笔记(三)
  L2正则化会在每次梯度更新时将权重乘以一个小于1但接近1的数实现权重衰减,权重越大则减得越多,而L1正则化则会在每次梯度更新时将权重减去一个固定大小的值。

8. Dropout

  在训练时设置每个神经元有p%的概率被丢掉,即将输出设置为零,相当于从神经网络中去掉该神经元。在测试时将每个权重乘以1-p%。
  Dropout相当于训练多个不同网络结构的神经网络,每一个mini-batch就会训练一种结构的神经网络,但是在这些不同的神经网络中参数是共享的。

深度网络训练技巧|深度学习(李宏毅)笔记(三)
  关于测试时权重乘以1-p%的解释:
深度网络训练技巧|深度学习(李宏毅)笔记(三)