深度学习基本问题

1、梯度消失:激活函数的导数小于1,最终的梯度更新信息随着层数增多而以指数形式衰减。一般有两个原因,(1)网络层次深;(2)损失函数不对,例如说是sigmod函数。

梯度爆炸:激活函数的导数大于1,最终的梯度更新将以指数形式增加,发生梯度爆炸。一般因为网络层次较深和权重初始值过大。

解决手段:(1)逐层预训练;

(2)针对梯度爆炸,设置阈值,梯度超过时使其强制限制在这个范围内;权重正则化;

(3)随机梯度下降法,如RELU,可以解决梯度消失或者是爆炸的问题;

(4)BN层,对每一层的输出规范为均值和方差一致,解决了梯度消失或者是爆炸的问题;

(5)残差结构,解决梯度消失问题。

(6)LSTM,内部复杂的门不容易梯度消失。

2、学习率控制基于损失梯度调整神经网络权值的速度,影响模型能够以多快的速度收敛到局部最小值。

学习率越大,神经网络学习速度越快,但太大超过了极值,损失就会停止下降,在某一位置反复震荡;

学习率过小,网络就可能陷入局部最优。

3、数据不平衡:原始数据中正例和反例数量差距过大,如果正例少,解决办法有:

(1)对正例进行过采样。简单的重复采样会造成过拟合,一般对正例进行插值旋转来产生额外的正例。

(2)对反例进行欠采样。不能随机的丢弃反例,一般采用集成学习的思想,将反例划分为若干集合供不同的学习器学习。

(3)正例反例再缩放。

4、残差网络是在网络中加入跨层的映射连接,这样每一层的目标函数变成了减掉输入的残差,在残差接近0的时候,训练更加容易。

残差网络有利于误差的反向传播,避免了误差的弥散。

核心是解决了增加深度带来的退化问题,这样能够通过单纯的增加网络深度,来提高网络性能。

你可能感兴趣的:(深度学习)