基于梯度 * 的解决方法: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 numpy.linalg.norm函数的使用及说明
2022-05-27 10:20:32
Python中max函数用于二维列表的实例
2022-07-04 15:49:55
Opencv实现二维直方图的计算及绘制
2023-07-18 23:34:52
JS通过FSO将unicode字符写入文本
2009-06-01 12:26:00
Python查询缺失值的4种方法总结
2023-10-29 13:42:08
Django模板获取field的verbose_name实例
2023-07-30 06:53:55
bootstrap table列和表头对不齐的解决方法
2023-08-24 16:30:08
php通过pecl方式安装扩展的实例讲解
2023-07-23 07:06:12
使用Python opencv实现视频与图片的相互转换
2022-03-04 15:20:31
教你如何使用php session
2023-11-15 06:28:01
H1标签的定义
2008-07-29 12:43:00
python Tkinter版学生管理系统
2021-03-11 11:07:48
对python numpy数组中冒号的使用方法详解
2022-05-15 11:26:41
Python+Pygame制作简易版2048小游戏
2022-12-01 18:05:03
javascript 模拟函数指针
2009-09-19 18:02:00
Python+OpenCV 实现简单的高斯滤波(推荐)
2021-07-18 20:31:26
ASP 游标参数详解(ASP记录集)第1/2页
2011-04-08 11:04:00
IE8新特性及IE8安装使用 目录
2008-04-01 09:50:00
python自动化测试selenium操作checkbox和radiobox技术
2021-11-01 16:12:54
python编写脚本之pyautogui的安装和使用教程
2021-06-17 09:48:11