基于梯度爆炸的解决方法: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查询mysql中文乱码问题
Nov 09 Python
Python模拟百度登录实例详解
Jan 20 Python
基于Python socket的端口扫描程序实例代码
Feb 09 Python
Python之inspect模块实现获取加载模块路径的方法
Oct 16 Python
numpy给array增加维度np.newaxis的实例
Nov 01 Python
Pytorch实现各种2d卷积示例
Dec 30 Python
浅谈Tensorflow 动态双向RNN的输出问题
Jan 20 Python
Python第三方库的几种安装方式(小结)
Apr 03 Python
Python matplotlib可视化实例解析
Jun 01 Python
详解anaconda离线安装pytorchGPU版
Sep 08 Python
基于Python实现的购物商城管理系统
Apr 27 Python
Pytorch中Softmax与LogSigmoid的对比分析
Jun 05 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
smarty的保留变量问题
2008/10/23 PHP
PHP Ajax中文乱码问题解决方法
2009/02/27 PHP
Discuz Uchome ajaxpost小技巧
2011/01/04 PHP
php生成图片验证码
2015/06/09 PHP
Yii 2.0实现联表查询加搜索分页的方法示例
2017/08/02 PHP
一些常用且实用的原生JavaScript函数
2010/09/08 Javascript
JS日期加减,日期运算代码
2015/11/05 Javascript
详解javascript遍历方式
2015/11/11 Javascript
Jquery插件之Fancybox丰富的弹出层效果附源码下载
2015/12/02 Javascript
JavaScript基础篇(6)之函数表达式闭包
2015/12/11 Javascript
郁闷!ionic中获取ng-model绑定的值为undefined如何解决
2016/08/27 Javascript
JavaScript和jQuery获取input框的绝对位置实现方法
2016/10/13 Javascript
bootstrap-table.js扩展分页工具栏(增加跳转到xx页)功能
2017/12/28 Javascript
利用JavaScript的Map提升性能的方法详解
2019/08/14 Javascript
webpack打包html里面img后src为“[object Module]”问题
2019/12/22 Javascript
vue element-ui实现input输入框金额数字添加千分位
2019/12/29 Javascript
怎么理解wx.navigateTo的events参数使用详情
2020/05/18 Javascript
echarts实现晶体球面投影的实例教程
2020/10/10 Javascript
python中的代码编码格式转换问题
2015/06/10 Python
Python中.join()和os.path.join()两个函数的用法详解
2018/06/11 Python
Django contenttypes 框架详解(小结)
2018/08/13 Python
python线程定时器Timer实现原理解析
2019/11/30 Python
Python嵌入C/C++进行开发详解
2020/06/09 Python
美国男装连锁零售商:Men’s Wearhouse
2016/10/14 全球购物
西班牙宠物用品和食品网上商店:Tiendanimal
2019/06/06 全球购物
自动化工程专业个人应聘自荐信
2013/09/26 职场文书
触摸春天教学反思
2014/02/03 职场文书
《生命 生命》教学反思
2014/04/19 职场文书
村支部书记群众路线对照检查材料思想汇报
2014/10/08 职场文书
2014年团支部工作总结
2014/11/17 职场文书
工程部岗位职责
2015/02/10 职场文书
司法廉洁教育心得体会
2016/01/20 职场文书
2017年寒假社区服务活动总结
2016/04/06 职场文书
Python的这些库,你知道多少?
2021/06/09 Python
Java 超详细讲解ThreadLocal类的使用
2022/04/07 Java/Android
Golang ort 中的sortInts 方法
2022/04/24 Golang