![神经网络梯度更新优化器详解笔记_第1页](http://file3.renrendoc.com/fileroot_temp3/2022-2/16/952f3e6f-15c4-467e-8e9b-ef3e4cef01a7/952f3e6f-15c4-467e-8e9b-ef3e4cef01a71.gif)
![神经网络梯度更新优化器详解笔记_第2页](http://file3.renrendoc.com/fileroot_temp3/2022-2/16/952f3e6f-15c4-467e-8e9b-ef3e4cef01a7/952f3e6f-15c4-467e-8e9b-ef3e4cef01a72.gif)
![神经网络梯度更新优化器详解笔记_第3页](http://file3.renrendoc.com/fileroot_temp3/2022-2/16/952f3e6f-15c4-467e-8e9b-ef3e4cef01a7/952f3e6f-15c4-467e-8e9b-ef3e4cef01a73.gif)
![神经网络梯度更新优化器详解笔记_第4页](http://file3.renrendoc.com/fileroot_temp3/2022-2/16/952f3e6f-15c4-467e-8e9b-ef3e4cef01a7/952f3e6f-15c4-467e-8e9b-ef3e4cef01a74.gif)
![神经网络梯度更新优化器详解笔记_第5页](http://file3.renrendoc.com/fileroot_temp3/2022-2/16/952f3e6f-15c4-467e-8e9b-ef3e4cef01a7/952f3e6f-15c4-467e-8e9b-ef3e4cef01a75.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、阅读 “ An overview of gradient descent optimization algorithms ” 笔记一、前言:最新的深度学习库包含各种优化梯度下降的算法,比如有caffe、keras、tensorflow、pytorch等,但是通常这些算法被当做一个黑匣子使用,所以无法比较 这些算法的优与劣。二、梯度下降变形形式1、批量归一化(BGD)每次经过完整一轮训练后更新一次参数,这使得梯度下降过程变得比较慢,并且 需要很大内存保存中间结果。代码表示:'''for i in range(nb_epochs):params_grad = evaluat
2、e_gradient(loss_function, data, params)params = params - learning_rate * params_grad'''2、随机梯度下降(SGD)随机梯度下降是对每个训练样本就更新一次网络参数,这样使得网络更新参数速 度很快,但是问题就是由于训练数据多样,容易朝偏离网络最优点方向训练,网络训 练不稳定。代码表示:'''for i in range(nb_epochs):np.random.shuffle(data)for example in data:params_grad = evalua
3、te_gradient(loss_function, example, params) params = params - learning_rate * params_grad '''3、小批量梯度下降(MBGD)小批量梯度下降是批量梯度下降与随机梯度下降之间的一个折中,即经过一个小 批量的训练数据更新一次参数,可以保证网络训练速度不太慢,也能使训练方向不至 于偏离太多,具有一定稳定性。当使用小批量梯度下降时,通常也使用 SGD这个术 语。代码表示: '''for i in range(nb_epochs):np.random.shuffle(
4、data)for batch in get_batches(data, batch_size=50):params_grad = evaluate_gradient(loss_function, batch, params) params = params - learning_rate * params_grad '''三、梯度下降遇到的困难小批量梯度下降不仅不能保证良好的收敛性,而且也存在一些其他的问题:(1)很难选择一个合适的学习率,如果学习率太小,将会导致收敛非常缓慢;如果学 习率太大,也会阻碍收敛,导致损失函数值在最小值附近波动甚至发散。(2)上述问题可以通过
5、提前定义一个学习速率表,当达到相应轮数或者阈值时根据表 改变学习率,但是这样无法适应训练数据本身特征。(3)并且,对于所有参数我们使用同一个学习速率,如果我们的数据是稀疏的或者我 们特征具有不同的频率,我们可能不希望将它们更新到同样的程度,并且我们希望对 那些出现频率低的特征更新更快。(4)另外在神经网络中,普遍是具有非凸的误差函数,这使得在优化网络过程中,很 容易陷入无数的局部最优点,而且更大困难往往也不是陷入局部最优点,而是来自鞍0,所以点(也就是在一个维度上其梯度是递增,另一个维度其梯度是递减,而在鞍点处其梯 度为0),这些鞍点附近往往被相同误差点所包围,且在任意维度梯度近似为随机梯度下
6、降很难从这些鞍点逃出。如下图:隆 point四、梯度下降优化算法接下来将列举一些被深度学习社区广泛用于解决上述困难的算法,这些算法有个共同之处,一般是求一阶动量(m)和二阶动量(V),然后利用一阶、二阶动量本身或者他们组合来优化梯度下降(其中一阶动量为与梯度相关函数,二阶动量为与梯度平方相关的函数)首先还是给出梯度下降的公式:?笳=?7 ?r?引入梯度下降优化算法后:?+ = ? ?V?1、动量(momentum )随机梯度下降的方法很难通过峡谷区域(也就是在一个维度梯度变化很大,另一个维度变化较小),这个很好理解,因为梯度下降是梯度更新最大的反方向,如果这个时候一个维度梯度变化很大,那么就很
7、容易在这个方向上振荡,另一个方向就更新很慢,如下图:m,其中上面上图没有加动量,下图加了动量的方法,可以看到有动量可以在变化小的维度上 加快更新,使得加快收敛。该方法是通过添加一个参数B构建一个一阶动量 有下列表达式:?= ?2-1 + (1 - ?)?而对于其二阶动量 V=1 ,所以其参数更新公式为:=?- ?其中B一般取0.9,接下来我不会立即来讲解上面两个公式为什么是这样,怎么理解。我们来看看其它表达式,相信大家在搜索动量梯度下降时,有时候在其它地方也会看 到下面这种表达式:?= ?/ + ???落=?% ?这里的?然般也是等于0.9,看起来这两种表达式有很大不一样,其实是差不多的,只不
8、过第一种我觉得看起来更容易理解,第二种我觉得就不是那么明显的去理解,下面我将根据这两种表达式对比并分析动量梯度下降原理,这样更容易理解,将表达式继续拆开可以得到:表达式 1 : ?= ?砌?-3 +?(1 - ? 1.?-2?, 一?+ (1 - ?-1?表达式 2: ?= ?-3+ ?复-2?-2)+ ?3和1?-1)+ ?/?从上述表达式可以看出,对于公式1, ?其实就是当前梯度的(1-B)倍,加上上一次梯度的B ( 1- B)倍,一直以B倍向前加,从公式中可以看到,所有项的系数加起来其实是等于1的"(1 - ? + ?1 - ? + ?(1 - ?+ ?歹=1";而对
9、于表达式2,我 们可以看到?冷于当前?蓿梯度,加上前一次?倍梯度的?蓿,一直通过?蓿向前传播, 这里两个公式是一样的,但是可以注意到的是,表达式2中其系数"1 +?+?+ ?”却不等于1,而是直接以指数形式相加的结果,而这就是两个表达式的区别所在,该两种表达方式我从两个地方看到,表达式1为我从中国大学生 mooc清华大学曹健老师的“人工智能实践:tensorflow ”课程中看到,表达式 2我是从论文“An overviewof gradient descent optimization algorithms” 看至U, 如果你去搜 "momentum" 原论文,
10、你会发现表达式又不一样,但是我们发现他们本质还是一样的,也就是添加了 一个变量3,通过3倍传递给前一次的梯度。至于哪个表达式更好,我觉得对于表达1,他在刚开始训练时我觉得就有难以解释,因为这个时候参数更新按理说应该等于此时lr倍梯度大小,但是却被乘一个(1-B)的系数,但是对于后期我觉得解释性就更强,因为他们系数加起来等于1,这是我们希望的结果,即此时的参数更新幅度总体还是跟现在lr倍梯度大小处于同一个等级。对于表达式2,刚开始训练就没有表达式 1那个问题,但是后面就有点难解释,? QQ?+1因为根据等比数列求和公式:E?=三?厂,当n很大时,系数和约为10,也就是说现在他的参数更新幅度是当前
11、梯度幅度的10倍,这就让我有点难理解了,或许这样会加快训练速度?但是我反而觉得会造成参数更新的不稳定。所以总的来说我还是觉得表达式1更合适点再来解释下动量梯度更新的现实意义理解,首先来看看" An overview ofgradient descent optimization algorithms”这篇论文中的比喻:“从本质上说,动量法,就像我们从山上推下一个球,球在滚下来的过程中累积动量,变得越来越快(直到达到终极速度,如果有空气阻力的存在,则 丫 <1。同样的事情也发生在参数的更新过程中:对于在梯度点处具有相同的方向的维度,其动量项增大,对于在梯度点处改变方向的维度,其动
12、量项减小。因此,我们可以得到更快的收敛速度,同时可以减少摇摆。,这样解释视乎就能够解释之前表达式2的含义了,把其当做动量的累加,比如小球在下坡山坡上,那么根据表达式2,梯度方向是一直向下的,自然参数更新幅度也就是一直累加的,也就变得越来越大;而当遇到山沟,越过山沟此时就在另一边山坡,这个时候梯度方向是跟之前相反的,此时由于之前梯度大小的累加,在两个山坡间的变化就会被互相抵消掉,也就不会一直在两个山坡振荡,容易朝山沟向下走,也就是减少摇摆了。2、NAG (Nesterov accelerated gradient回顾动量的方法,我们发现参数更新是基于两部分组成,一部分为当前位置的梯 度,另一部分
13、为前面累计下来的梯度值,参数更新方向就是将两者矢量相加的方向,但是我们会发现一个问题,当刚好下降到山谷附近时,如果这个时候继续以这样的方式更新参数,我们会有一个较大的幅度越过山谷,即:模型遇到山谷不会自动减弱更 新的幅度。NAG针对上述问题对动量方法进行了改进,其表达式如下,其中一阶动量项m如下,二阶动量为1?= ?乐 + (1 -?)勺?而?)=?- ?它是利用当前位置处先前的梯度值先做一个参数更新,然后在更新后的位置再求 梯度,将此部分梯度然后跟之前累积下来的梯度值矢量相加,简单的说就是先根据之 前累积的梯度方向模拟下一步参数更新后的值,然后将模拟后的位置处梯度替换动量 方法中的当前位置梯
14、度。为什么解决了之前说的那个问题呢?因为现在有一个预测后 一步位置梯度的步骤,所以当在山谷附近时,预测到会跨过山谷时,该项梯度就会对 之前梯度有个修正,相当于阻止了其跨度太大。下面这张图对其有个形象描述,其中 蓝色线表示动量方法,蓝色短线表示当前位置梯度更新,蓝色长线表示之前累积的梯 度;第一个红色线表示用 NAG算法预测下一步位置的梯度更新,第一条棕色线表示3、Adagrad之前提到过这个问题:对于所有特征,我们的学习率一直没有变。怎么理解呢?假设我们用一批数据训练网络,这个数据中只有少部分数据含有某个特征,另一个特 征几乎全部数据都具有,当这些数据通过训练时,对于不同特征我们假设对应于不同
15、 的神经元权重,对于都含有的特征,这些神经元对应参数更新很快,但是对于那些只 有少部分数据含有的特征,对应神经元权重获得更新机会就少,但是由于学习率一 样,这样可能导致神经网络训练的不充分。adagrad算法就是为了解决这个问题,让学习率学习数据的特征自动调整其大小,adagrad算法引入了二阶动量,其表达式为:?= ?=5?i?9?+ = ? ?V?其中?衲t时刻参数梯度,下面来讲解为什么adagrad可以实现不同频率特征对其参数学习率改变,首先,我们看到二阶动量???它是梯度平方累加和,对于训练数据少的特征,自然对应的参数更新就缓慢,也就是说他们的梯度变化平方累加和就会? 一 . 一.0,
16、所以往往添加一个比较小,所以对应于上面参数更新方程中的学习速率(:厉)就会变大,所以对于某个 特征数据集少,相应参数更新速度就快。为了防止上述分母为 平滑项参数?参数更新方程也就变成:?9 ?+ = ?- ?" v?+ ?但是adagrad同样也有问题,就是其分母随着训练数增加,也会跟着增加,这样 会导致学习速率越来越小,最终变的无限小,从而无法有效更新参数。4、adadeltaadadelta算法可以解决上述问题,其一阶向量跟adagrad 一样,二阶参数有所 变化:?= ?= ?1 + (1 - ?)?2?+ = ? ?-=v?+ ?可以看到其二阶参数表达式跟动量的表达式类似,引
17、入了参数?可以知道二阶动量??其实之前所有梯度平方的一个加权均值,表达式如下:?= ?.3 + ?(1 - ?)久 + ?1 - ?)?1+ (1 - ?)?*<<-|所以,对于adagrad算法带来的分母越来越大的问题就可以解决了。但是作者注意到,此算法以及之前提到的算法(SGD动量、adagrad )的参数之间单位并不匹配,而按理说参数更新应该具有与参数相同的单位。怎么理解这点呢?让我们来对随机梯度下降算法(SGD)来进行参数之间单位关系讨论,我们知道,SGD算法的参数更新方程式为:??+1 = ?- ?等?段设loss的单位为b ,而参数?酌单位为c,学 ?习率没有单位,设为
18、1,这个时候我们就发现,上面的等式的单位运算为:c=c-1*(b/c),这明显单位不匹配,这就是作者说的问题(我觉得这个作者很强,这点真的很巧妙,我估计作者是物理专业方向的,物理就经常讨论单位变换)。作者这里又提出一个很巧妙的解决方法,那就是利用与二阶动量??类似的运算对参数变化量??故运算求它的二阶动量,?= ?,?-1+ (1 - ?祗 这里将上述运算用一个新符号RMSX表示,即对梯度的二阶动量变化为??药殂变量的变化量的二阶动量为?????然后将其替换学习率,最后梯度更新公式为:?= ?,?= ?%+ (1 - ?病?,?= ?%?- + (1 - ?)?或?= V?%,?+ ?”“?_
19、1? = ?h- ?c,?书? ?我们可以验证一下,现在方程中参数单位是否会匹配,其中参数单位还是为loss单位为b,方程参数的单位运算有:c=c-c/(b/c)b/c;显而易见单位是匹配的。通过adadelta算法,我们甚至可以不需要设置一个默认的学习率,因为在新的规则中 已经移除了这项。5、RMSpropRMSprop算法由hinton教授提出,它与adadelta算法公式其实是一样的,他们是在相同时间被独立的提出,公式自然也为:?= ?= ?1 + (1 - ?)?2?+ = ?/ ?+?v?+ ?hinton教授建议将?设置为0.9,对于学习率,一个好的固定值为 0.001 。6、Ad
20、amAdam(Adaptive Moment Estimation)自适应矩估计,是另一种自适应学习率的算法,它是一种将动量和 Adadelta或RMSprop结合起来的算法,也就引入了两个参数B1和§2,其一阶和二阶动量公式为:?= ?%-1 + (1 - ?) ?= ?, + (1 - ?)?i作者发现一阶和二阶动量初始训练时很小,接近为0,因为B值很大,于是作者重新计算一个偏差来校正:?=?=其中t代表其t次方,所以刚开始训练时,通过除于(1-3)就可以很好修正学习速1 - ?1 - ?率,当训练多轮时,分母部分也接近 1,又回到了原始方程,所以最后总的梯度更新方程为:?&qu
21、ot; ?咚-1 + (1 - ?) ?= ?, +(1 - ?)?!e?声-?丁 1 - ?+ = ? ?K?其中??默认值为0.9, ?默认值为0.999, ? 10人-8, Adam 集合动量和 Adadelta 两 者的优点,从经验中表明 Adam在实际中表现很好,同时与其他自适应学习算法相比,更有优势。7、AdaMaxadam更新规则中的系数与过去梯度(??-1)和现在梯度(??)白L L2范数成反比,?= ?粉i+ (1 - ?)?就作者提出是否可以考虑其他的Lp范数,也就是扩展到p阶动量,有方程式:?= ?_ + ( 1 - ?51?触??通常大的p值会造成数字不稳定,所以一般常
22、用的都是L1和L2范数,但是L8通常也可以有比较稳定的结果,所以作者引入了无穷阶的动量,对应于梯度更新的分母项用字母u代替,也就是:解?+ = ? ?%将u变换下可能更好理解:2x,??+ (1 - ?)?|?乐仁+(1 - ?)|?<°=vn?(?3l?%-il)00- /l?-/) |?£- (?引?为?= max (? ? ?_1 ,|?初可以看到u不会为0,所以也就不需要如 adam 一样,分母还需要添加一个 ?通常默认参数大小为:??= 0.002, ? = 0.9, ?=0.999。£8、NadamAdam将RMSprop和动量结合起来,我们也可
23、以看到NAG其实比动量表现更好。),NesterovNadam (Nesterov-accelerated Adaptive Moment Estimation加速的自适应矩估计,将 adam和NAG结合起来,为了将 NAG添加到Adam ,我们需要对动量部分进行一些改变。作者将NAG梯度更新公式变为:?=?(?= ? -1 + (1 - ?)?=? ?(?+ (1 - ?)? = ? ?(?2?-1 + ?(1 - ?)?+ (1 - ?)?也就是现在不再像 NAG提前预测后面位置,而是直接在当前位置对当前梯度方向做两次更新,同样运用到 Adam中需要对m做一个修正:_?= ?1 - ?最后
24、得到Nadam梯度更新方程为:?=?(?%。?=?1 - ?1(1 -?)?+=?务?"?w FT)9、AMSGrad随着自适应学习速率的方法成为训练神经网络的规范,研究者就发现,在一些情 况下比如目标识别、机器翻译领域,自适应学习速率的方法无法收敛到最佳情况,并 且弱于基于动量的随机梯度下降。其梯度更新公式为:?" ?%_ + ( 1 - ?) ?衿?-1 + (1 - ?)?另?= max?,?m?+ = ?分?F?10、目前其它的优化器在AMSGrad后,有很多其它的优化器出现,包括 AdamW,修复adam的权重下降问题;QHAdam ,用基于动量的随机梯度下降平均
25、标准的随机梯度下降;AggMo ,结合多个动量项;等其他优化器。五、可视化优化器SGDMomentumNAG1.00.50.0-0.5-1.0Adagrad AdadeltaRmsprop-1.5-C.5六、优化SGD的其他策略1、Shuffling and Curriculum Learning2、Batch normalization3、Early stopping4、Gradient noise公式汇总:?+产??? ?Fr?+1= ?, ?V?梯度更新公式:引入梯度下降优化算法后:基于动量的梯度下降动量表达式:?= ?-1+(1- ?干基于动量的梯度下降:?+1= ?7 ?基于动量的梯度下降其它类型公式:?= ?1 + ?+1= ? ?基于动量梯度拆开表达式1 :?= ???-3+ ?(1 -?+ ?1 - ?-2?+ (1 -?-1?,?(1 - ?基于动量梯度拆开表达式
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025至2030年中国印刷机色组套印控制系统数据监测研究报告
- 米安归、修规、管理规则练习试题
- 电力技术监督专责人员上岗资格考试练习试卷附答案
- 营业线施工安全知识复习测试卷
- 2025年中国启塞器市场调查研究报告
- 2025年中国什锦水果罐头市场调查研究报告
- 2025至2031年中国结构陶瓷行业投资前景及策略咨询研究报告
- 2025至2030年中国洗靴槽数据监测研究报告
- 2025至2030年中国不锈钢勾花网数据监测研究报告
- 2025年中国粘胶相册市场调查研究报告
- 康复医学治疗技术(士)复习题及答案
- 钢铁是怎样炼成的钢铁读书笔记
- 《血管性血友病》课件
- 2025年汽车加气站作业人员安全全国考试题库(含答案)
- 2024年司法考试完整真题及答案
- 高三日语一轮复习日语助词「に」和「を」的全部用法课件
- 中国高血压防治指南-解读全篇
- 2024年监控安装合同范文6篇
- 2024年山东省高考政治试卷真题(含答案逐题解析)
- 烟叶复烤能源管理
- 食品安全管理员考试题库298题(含标准答案)
评论
0/150
提交评论