基于梯度 * 的解决方法:clip gradient
作者:小强的呼呼呼 时间:2022-07-24 02:19:09
1. 梯度 * 的影响
在一个只有一个隐藏节点的网络中,损失函数和权值w偏置b构成error surface,其中有一堵墙,如下所示
损失函数每次迭代都是每次一小步,但是当遇到这堵墙时,在墙上的某点计算梯度,梯度会瞬间增大,指向某处不理想的位置。如果我们使用缩放,可以把误导控制在可接受范围内,如虚线箭头所示
2. 解决梯度 * 问题的方法
通常会使用一种叫”clip gradients “的方法. 它能有效地权重控制在一定范围之内.
算法步骤如下。
首先设置一个梯度阈值:clip_gradient
在后向传播中求出各参数的梯度,这里我们不直接使用梯度进去参数更新,我们求这些梯度的l2范数
然后比较梯度的l2范数||g||与clip_gradient的大小
如果前者大,求缩放因子clip_gradient/||g||,由缩放因子可以看出梯度越大,则缩放因子越小,这样便很好地控制了梯度的范围
最后将梯度乘上缩放因子便得到最后所需的梯度
3. 有无clip_gradient在GRU模型中的结果比较
无clip_gradient
可以很清楚地发现在2000次迭代出发生了梯度 * ,最终影响了训练的效果。
有clip_gradient
可以发现clip_gradient在前期有效了控制了梯度 * 的影响,使得最终的loss能下降到满意的结果
来源:https://blog.csdn.net/u010814042/article/details/76154391
标签:梯度,clip,gradient
0
投稿
猜你喜欢
python 识别图片中的文字信息方法
2022-06-06 15:32:05
使用CSS选择器创建个性化链接样式
2009-06-02 13:07:00
python实现地牢迷宫生成的完整步骤
2021-07-26 19:27:56
Python 正则表达式实现计算器功能
2023-09-02 02:01:44
HTML 5 正在改变 Web
2008-09-15 08:20:00
Python中使用kitti数据集实现自动驾驶(绘制出所有物体的行驶轨迹)
2023-06-27 17:02:54
Python模拟登录验证码(代码简单)
2022-09-04 04:41:37
在Python的Django框架的视图中使用Session的方法
2023-06-22 07:10:15
Mysql中TIMESTAMPDIFF函数的语法与练习案例
2024-01-28 18:43:44
python绘制直线的方法
2022-10-08 20:01:52
python获得命令行输入的参数的两种方式
2022-09-30 23:25:02
20行Python代码实现视频字符化功能
2023-01-08 21:17:02
使用requests库制作Python爬虫
2023-08-17 21:43:23
微信小程序 支付功能实现PHP实例详解
2023-11-19 08:53:36
Django中使用session保持用户登陆连接的例子
2021-08-29 03:27:30
第二篇Bootstrap起步
2024-04-16 08:59:36
python切片中内存的注意事项总结
2022-12-23 00:04:09
引起用户注意的界面方式
2007-10-07 21:17:00
MySQL高级查询语法分析
2024-01-13 14:11:09
把网页中的(电话,qq等数字)生成图片的ASP程序
2011-04-11 10:40:00