基于梯度 * 的解决方法:clip gradient

作者:小强的呼呼呼 时间:2022-07-24 02:19:09 

1. 梯度 * 的影响

在一个只有一个隐藏节点的网络中,损失函数和权值w偏置b构成error surface,其中有一堵墙,如下所示

基于梯度 * 的解决方法:clip gradient

损失函数每次迭代都是每次一小步,但是当遇到这堵墙时,在墙上的某点计算梯度,梯度会瞬间增大,指向某处不理想的位置。如果我们使用缩放,可以把误导控制在可接受范围内,如虚线箭头所示

2. 解决梯度 * 问题的方法

通常会使用一种叫”clip gradients “的方法. 它能有效地权重控制在一定范围之内.

算法步骤如下。

首先设置一个梯度阈值:clip_gradient

在后向传播中求出各参数的梯度,这里我们不直接使用梯度进去参数更新,我们求这些梯度的l2范数

然后比较梯度的l2范数||g||与clip_gradient的大小

如果前者大,求缩放因子clip_gradient/||g||,由缩放因子可以看出梯度越大,则缩放因子越小,这样便很好地控制了梯度的范围

最后将梯度乘上缩放因子便得到最后所需的梯度

基于梯度 * 的解决方法:clip gradient

3. 有无clip_gradient在GRU模型中的结果比较

无clip_gradient

可以很清楚地发现在2000次迭代出发生了梯度 * ,最终影响了训练的效果。

基于梯度 * 的解决方法:clip gradient

有clip_gradient

可以发现clip_gradient在前期有效了控制了梯度 * 的影响,使得最终的loss能下降到满意的结果

基于梯度 * 的解决方法:clip gradient

来源: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
  • asp之家 网络编程 m.aspxhome.com