基于梯度爆炸的解决方法: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 实现 贪吃蛇大作战 代码分享
Sep 07 Python
python面向对象_详谈类的继承与方法的重载
Jun 07 Python
python中logging库的使用总结
Oct 18 Python
解决已经安装requests,却依然提示No module named requests问题
May 18 Python
Python调用adb命令实现对多台设备同时进行reboot的方法
Oct 15 Python
python实现字符串完美拆分split()的方法
Jul 16 Python
python程序 创建多线程过程详解
Sep 23 Python
基于python连接oracle导并出数据文件
Apr 28 Python
卸载tensorflow-cpu重装tensorflow-gpu操作
Jun 23 Python
Python3如何实现Win10桌面自动切换
Aug 11 Python
让文件路径提取变得更简单的Python Path库
May 27 Python
用PYTHON去计算88键钢琴的琴键频率和音高
Apr 10 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
浅析PHP Socket技术
2013/08/02 PHP
php实现smarty模板无限极分类的方法
2015/12/07 PHP
php实现生成code128条形码的方法详解
2017/07/19 PHP
用javascript父窗口控制只弹出一个子窗口
2007/04/10 Javascript
(function($){...})(jQuery)的意思
2010/07/22 Javascript
随鼠标移动的时钟非常漂亮遗憾的是只支持IE
2014/08/12 Javascript
JavaScript实现网页加载进度条代码超简单
2015/09/21 Javascript
JS+CSS实现大气清新的滑动菜单效果代码
2015/10/22 Javascript
jQuery侧边栏实现代码
2016/05/06 Javascript
jQuery视差滚动效果网页实现方法经验总结
2016/09/29 Javascript
原生js实现类似fullpage的单页/全屏滚动
2017/01/22 Javascript
jQuery实现手风琴效果(蒙版)
2020/01/11 jQuery
vue3.0封装轮播图组件的步骤
2021/03/04 Vue.js
[02:52]2014DOTA2西雅图国际邀请赛 CIS战队巡礼
2014/07/07 DOTA
[40:48]DOTA2上海特级锦标赛D组败者赛 Liquid VS COL第二局
2016/02/28 DOTA
[34:08]2018DOTA2亚洲邀请赛3月29日 小组赛B组 VP VS EG
2018/03/30 DOTA
[49:40]2018DOTA2亚洲邀请赛小组赛 A组加赛 TNC vs Newbee
2018/04/03 DOTA
python读取csv文件示例(python操作csv)
2014/03/11 Python
Django中间件工作流程及写法实例代码
2018/02/06 Python
Django自定义用户认证示例详解
2018/03/14 Python
python requests 测试代理ip是否生效
2018/07/25 Python
Python3 单行多行万能正则匹配方法
2019/01/07 Python
利用python脚本如何简化jar操作命令
2019/02/24 Python
pandas中DataFrame修改index、columns名的方法示例
2019/08/02 Python
Python如何调用JS文件中的函数
2019/08/16 Python
matplotlib实现数据实时刷新的示例代码
2021/01/05 Python
基于 HTML5 WebGL 实现的医疗物流系统
2019/10/08 HTML / CSS
李维斯牛仔裤荷兰官方网站:Levi’s NL
2020/08/23 全球购物
社区国庆节活动方案
2014/02/05 职场文书
标准毕业生自荐信
2014/06/24 职场文书
租房安全协议书
2014/08/20 职场文书
环卫处个人工作总结
2015/03/04 职场文书
停车场管理制度范本
2015/08/05 职场文书
新手必备Python开发环境搭建教程
2021/05/28 Python
Spring Boot实战解决高并发数据入库之 Redis 缓存+MySQL 批量入库问题
2022/02/12 Redis
为什么MySQL不建议使用SELECT *
2022/04/03 MySQL