网站自己推广怎么做,青岛辅德网络技术有限公司,高性能网站建设指南 书,免费个人网站源码这里写目录标题 1. RNN存在哪些问题呢#xff1f;1.1 梯度弥散和梯度爆炸1.2 RNN为什么会出现梯度弥散和梯度爆炸呢#xff1f; 2. 解决梯度爆炸方法3. Gradient Clipping的实现4. 解决梯度弥散的方法 1. RNN存在哪些问题呢#xff1f;
1.1 梯度弥散和梯度爆炸
梯度弥散是… 这里写目录标题 1. RNN存在哪些问题呢1.1 梯度弥散和梯度爆炸1.2 RNN为什么会出现梯度弥散和梯度爆炸呢 2. 解决梯度爆炸方法3. Gradient Clipping的实现4. 解决梯度弥散的方法 1. RNN存在哪些问题呢
1.1 梯度弥散和梯度爆炸
梯度弥散是梯度趋近于0 梯度爆炸是梯度趋近无穷大
1.2 RNN为什么会出现梯度弥散和梯度爆炸呢
先看RNN的梯度推导公式如下图
从hk的梯度求导公式和hk的计算过程可以看出hk的计算和Whh相关也就是梯度也与Whh有关因此从h1 时刻到hk时刻Whh被乘了k-1次即Whhk-1那么当W1时就使得Wrk随着k句子长度的增大梯度趋近无穷大会出现梯度爆炸而W1时Wrk随着k句子长度的增大梯度会趋近于0会出现梯度弥散。 综上RNN并不是可以处理无限长的句子其随着句子的增长可能出现梯度弥散和梯度爆炸的问题
2. 解决梯度爆炸方法 上图为一篇解决梯度爆炸的paper其中左边的图描述的是梯度爆炸产生的原因当W出现巨变的时候会导致loss的方向发生变化从而偏移原来正确的方向出现梯度爆炸。 解决梯度爆炸的方法是给w.grad设置一个阈值比如是15当大于阈值时将w.grad’w.grad/||w.grad||1511515从而保证了loss的方向不变loss虽然可能有一些跳变比如从0.23~0.32,但慢慢的还会下降。 这种方法叫gradient clipping
3. Gradient Clipping的实现
只需获取到模型参数后调用torch.nn.utils.clip_grad_norm_(p,10)即可10为阈值。 见下图注意torch.nn.utils.clip_grad_norm_(p,10)和print是平齐的。
4. 解决梯度弥散的方法
下文LSTM会讲。