文章目录
梯度消失 梯度爆炸
什么是梯度消失(弥散)
随着传播深度的增加,梯度大小呈指数级别的增大或减小
梯度消失的情况
(1)激活函数进入饱和区。导数变得很小,因为梯度的计算需要激活函数的导数,导数很小使得梯度很小
(2)激活函数值为0
为什么会出现梯度消失
梯度消失的原因是由于用链式法则求导,使得梯度被层层放缩。所以只要用链式法则求导,就会有梯度消失,只是不同的激活函数程度不同。
可推导:
详细分析过程1-图缺失
过程推导2
RNN的梯度消失和普通DNN的不同之处
普通DNN中不同的层有不同的参数,各是各的梯度;而 RNN 中同样的权重在各个时间步共享,最终的梯度 g = 各个时间步的梯度 g_t 的和。
由于这个原因,RNN上总的梯度不会消失,因为近距离梯度不会消失,远距离梯度即使越传越弱,总梯度也会因为近距离梯度而不->0。所以RNN上梯度消失的含义是,梯度被近距离梯度主导,导致模型难以学到远距离的依赖关系。
LSTM怎么防止梯度消失和爆炸
所以LSTM防止的是:梯度受近距离梯度的控制,导致模型难以学到远距离的依赖关系的问题
LSTM 中梯度的传播有很多条路径, 这条路径上只有逐元素相乘和相加的操作,梯度流最稳定;但是其他路径上梯度流与普通 RNN 类似,照样会发生相同的权重矩阵反复连乘。
详细分析
过拟合
什么是过拟合
模型过于复杂,测试误差
解决过拟合的方法
1. l a m b d a lambda lambda正则化(NN称权重衰减)
在代价函数中加入正则化项
ligistic中可以用正规方程求解lambda
2.dropout正则化
每一层设置p(每个unit消失的概率),keep_prob=1-p unit单元保留的概率
留下的unit的a值变为原来的a/(1-p)
3.early stop
把测试集和验证机的代价函数随迭代次数变化曲线画在一个图中,当二者距离开始增大的时候,stop迭代
4.数据扩增
5.Relu
不会像tanh一样进入饱和区,使得梯度弥散