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


Posted in Python onFebruary 04, 2020

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

以上这篇基于梯度爆炸的解决方法:clip gradient就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
使用Python实现一个简单的项目监控
Mar 31 Python
在Python的Flask框架中验证注册用户的Email的方法
Sep 02 Python
用Python实现斐波那契(Fibonacci)函数
Mar 25 Python
使用Turtle画正螺旋线的方法
Sep 22 Python
Python基于pyCUDA实现GPU加速并行计算功能入门教程
Jun 19 Python
selenium+python自动化测试之页面元素定位
Jan 23 Python
Python操作redis实例小结【String、Hash、List、Set等】
May 16 Python
python3 selenium自动化测试 强大的CSS定位方法
Aug 23 Python
Python结合Window计划任务监测邮件的示例代码
Aug 05 Python
利用python为PostgreSQL的表自动添加分区
Jan 18 Python
利用Opencv实现图片的油画特效实例
Feb 28 Python
Python用any()函数检查字符串中的字母以及如何使用all()函数
Apr 14 Python
Python 格式化输出_String Formatting_控制小数点位数的实例详解
Feb 04 #Python
python求一个字符串的所有排列的实现方法
Feb 04 #Python
Windows上安装tensorflow  详细教程(图文详解)
Feb 04 #Python
有关Tensorflow梯度下降常用的优化方法分享
Feb 04 #Python
python dumps和loads区别详解
Feb 04 #Python
Python2和Python3中@abstractmethod使用方法
Feb 04 #Python
python如何求数组连续最大和的示例代码
Feb 04 #Python
You might like
eWebEditor v3.8 商业完整版 (PHP)
2006/12/06 PHP
PHP rawurlencode与urlencode函数的深入分析
2013/06/08 PHP
解析php中static,const与define的使用区别
2013/06/18 PHP
PHP错误提示的关闭方法详解
2013/06/23 PHP
php原生数据库分页的代码实例
2019/02/18 PHP
Laravel 解决composer相关操作提示php相关异常的问题
2019/10/23 PHP
php数组函数array_push()、array_pop()及array_shift()简单用法示例
2020/01/26 PHP
js脚本学习 比较实用的基础
2006/09/07 Javascript
jQuery 标题的自动翻转实现代码
2009/10/14 Javascript
jQuery 类twitter的文本字数限制带提示效果插件
2010/04/16 Javascript
一个页面放2段图片滚动代码出现冲突的问题如何解决
2012/12/21 Javascript
jquery必须知道的一些常用特效方法及使用示例(整理)
2013/06/24 Javascript
深入理解javascript作用域和闭包
2014/09/23 Javascript
javascript实现简单的ajax封装示例
2016/12/28 Javascript
jQuery Datatables表头不对齐的解决办法
2017/11/27 jQuery
Vue单页及多页应用全局配置404页面实践记录
2018/05/22 Javascript
微信小程序关键字变色实现代码实例
2019/12/13 Javascript
vue-autoui自匹配webapi的UI控件的实现
2020/03/20 Javascript
[57:18]DOTA2上海特级锦标赛主赛事日 - 1 败者组第一轮#3VP VS VG
2016/03/03 DOTA
[01:12:08]LGD vs OG 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.24
2019/09/10 DOTA
Python中生成器和yield语句的用法详解
2015/04/17 Python
python绘制立方体的方法
2018/07/02 Python
python判断列表的连续数字范围并分块的方法
2018/11/16 Python
python 用opencv调用训练好的模型进行识别的方法
2018/12/07 Python
OpenCV 之按位运算举例解析
2020/06/19 Python
用CSS3将你的设计带入下个高度
2009/08/08 HTML / CSS
Nike意大利官网:Nike.com IT
2020/01/19 全球购物
委托与事件是什么关系?为什么要使用委托
2014/04/18 面试题
2014机关干部学习“焦裕禄精神”思想汇报
2014/09/19 职场文书
出售房屋委托书范本
2014/09/24 职场文书
2014年干部培训工作总结
2014/12/17 职场文书
2016年情人节广告语
2016/01/28 职场文书
关于nginx 实现jira反向代理的问题
2021/09/25 Servers
Python正则表达式中flags参数的实例详解
2022/04/01 Python
navicat 连接Ubuntu虚拟机的mysql的操作方法
2022/04/02 MySQL
分享很少见很有用的SQL功能CORRESPONDING
2022/08/05 MySQL