首页 > 其他分享 >神经网络优化篇:详解学习率衰减(Learning rate decay)

神经网络优化篇:详解学习率衰减(Learning rate decay)

时间:2024-01-22 10:35:23浏览次数:29  
标签:mini decay text batch 学习 rate num Learning 衰减

学习率衰减

加快学习算法的一个办法就是随时间慢慢减少学习率,将之称为学习率衰减,来看看如何做到,首先通过一个例子看看,为什么要计算学习率衰减。

假设要使用mini-batch梯度下降法,mini-batch数量不大,大概64或者128个样本,在迭代过程中会有噪音(蓝色线),下降朝向这里的最小值,但是不会精确地收敛,所以的算法最后在附近摆动,并不会真正收敛,因为用的\(a\)是固定值,不同的mini-batch中有噪音。

但要慢慢减少学习率\(a\)的话,在初期的时候,\(a\)学习率还较大,的学习还是相对较快,但随着\(a\)变小,的步伐也会变慢变小,所以最后的曲线(绿色线)会在最小值附近的一小块区域里摆动,而不是在训练过程中,大幅度在最小值附近摆动。

所以慢慢减少\(a\)的本质在于,在学习初期,能承受较大的步伐,但当开始收敛的时候,小一些的学习率能让步伐小一些。

可以这样做到学习率衰减,记得一代要遍历一次数据,如果有以下这样的训练集,

应该拆分成不同的mini-batch,第一次遍历训练集叫做第一代。第二次就是第二代,依此类推,可以将\(a\)学习率设为\(a= \frac{1}{1 + decayrate * \text{epoch}\text{-num}}a_{0}\)(decay-rate称为衰减率,epoch-num为代数,\(\alpha_{0}\)为初始学习率),注意这个衰减率是另一个需要调整的超参数。

这里有一个具体例子,如果计算了几代,也就是遍历了几次,如果\(a_{0}\)为0.2,衰减率decay-rate为1,那么在第一代中,\(a = \frac{1}{1 + 1}a_{0} = 0.1\),这是在代入这个公式计算(\(a= \frac{1}{1 + decayrate * \text{epoch}\text{-num}}a_{0}\)),此时衰减率是1而代数是1。在第二代学习率为0.67,第三代变成0.5,第四代为0.4等等,可以自己多计算几个数据。要理解,作为代数函数,根据上述公式,的学习率呈递减趋势。如果想用学习率衰减,要做的是要去尝试不同的值,包括超参数\(a_{0}\),以及超参数衰退率,找到合适的值,除了这个学习率衰减的公式,人们还会用其它的公式。

比如,这个叫做指数衰减,其中\(a\)相当于一个小于1的值,如\(a ={0.95}^{\text{epoch-num}} a_{0}\),所以的学习率呈指数下降。

人们用到的其它公式有\(a =\frac{k}{\sqrt{\text{epoch-num}}}a_{0}\)或者\(a =\frac{k}{\sqrt{t}}a_{0}\)(\(t\)为mini-batch的数字)。

有时人们也会用一个离散下降的学习率,也就是某个步骤有某个学习率,一会之后,学习率减少了一半,一会儿减少一半,一会儿又一半,这就是离散下降(discrete stair cease)的意思。

到现在,讲了一些公式,看学习率\(a\)究竟如何随时间变化。人们有时候还会做一件事,手动衰减。如果一次只训练一个模型,如果要花上数小时或数天来训练,有些人的确会这么做,看看自己的模型训练,耗上数日,然后他们觉得,学习速率变慢了,把\(a\)调小一点。手动控制\(a\)当然有用,时复一时,日复一日地手动调整\(a\),只有模型数量小的时候有用,但有时候人们也会这么做。

所以现在有了多个选择来控制学习率\(a\)。可能会想,好多超参数,究竟应该做哪一个选择,觉得,现在担心为时过早。下一周,会讲到,如何系统选择超参数。对而言,学习率衰减并不是尝试的要点,设定一个固定的\(a\),然后好好调整,会有很大的影响,学习率衰减的确大有裨益,有时候可以加快训练,但它并不是会率先尝试的内容。

这就是学习率衰减,最后还要讲讲神经网络中的局部最优以及鞍点,所以能更好理解在训练神经网络过程中,的算法正在解决的优化问题。

标签:mini,decay,text,batch,学习,rate,num,Learning,衰减
From: https://www.cnblogs.com/oten/p/17979433

相关文章

  • (区间覆盖问题)P5019 [NOIP2018 提高组] 铺设道路和Educational Codeforces Round 158 (
    区间覆盖问题这里EducationalCodeforcesRound158(RatedforDiv.2)b题和[NOIP2018提高组]铺设道路两道典型题目,本质是相同的。这里由于题目多次出现,特此记录。解题思路:首先我们得对区间做划分,那么划分思路可以是从小到大也可以是从大到小的异常点来做划分(我这是由大到......
  • 《Deep Long-Tailed Learning: A Survey》阅读笔记
    论文标题《DeepLong-TailedLearning:ASurvey》深度长尾学习:调查作者YifanZhang、BingyiKang、BryanHooi、ShuichengYan(IEEEFellow)和JiashiFeng来自新加坡国立大学计算机学院、字节跳动AILab和SEAAILab初读摘要长尾类别不平衡(long-tailedclassimbala......
  • ML系列-《The Hundred-Page Machine Learning book》-读书
    Abouttheauthor:作者简介安德烈·布可夫(AndriyBurkov)是一位机器学习专家,目前居住于加拿大魁北克省。他拥有人工智能博士学位,尤其擅长自然语言处理技术。目前,他是高德纳(Gartner)咨询公司机器学习开发团队的主管。该团队的主要工作是,使用浅层和深度学习技术,开发可用于生产环境......
  • Favirate day
    As we all know, people do various kinds of things everyday.I enjoyFridaymost becauseitwill be weekendsoon and I cango to bedlate,that means I can watch TVor go tothe cinema,unlikeSaturday ,which I should go tobed ea......
  • Educational Codeforces Round 161 (Rated for Div. 2)
    基本情况A犯病卡半小时。主要就是太着急,题目没有彻底分析清楚就开始想一些错误做法。C最优想法出来的慢。E比较好想。C.ClosestCitiesProblem-C-Codeforces就,显然是能走最近城市就走,不行就不走。一开始弄了一个自作聪明的预处理,但实际上每次查询还是\(\operatorn......
  • Educational Codeforces Round 161 (Rated for Div. 2)
    A.TrickyTemplate思维有点难转过来,而且当时在C也能匹配c这卡了很久#include<bits/stdc++.h>usingnamespacestd;voidsolve(){ intn; cin>>n; stringa,b,c; cin>>a>>b>>c; intcnt=0; intf=0; for(inti=0;i<n;i++){ if(a[i]!=c[i]&&a......
  • Educational Codeforces Round 161 (Rated for Div. 2)
    题目链接:EducationalCodeforcesRound161(RatedforDiv.2) PS:A开的很快,B读个假题意,C又想歪了,导致E没时间写,最后十分钟开E思路对了但是没时间了,赛后很快过了。。。A.TrickyTemplate题意:定义模板串t与字符串s:1:如果模板串的某一项为小写字母,那么模板串与字符串的该......
  • Educational Codeforces Round 161 (Rated for Div. 2)
    目录写在前面ABCDEF写在最后写在前面比赛地址:https://codeforces.com/contest/1922D没调出来亏炸了,第一次体验赛后五分钟过题的快感。痛苦的大二上终于结束了,本学期一半的痛苦都来自于傻逼大物实验。下学期课少了好多,而且早八和晚八都少的一批,集中上一波分了就。A题面太长......
  • Educational Codeforces Round 161 (Rated for Div. 2)
    EducationalCodeforcesRound161(RatedforDiv.2)比赛链接A.TrickyTemplate思路:貌似只要想到了就可以,我是记录了一下字符串c和字符串a和b之间的满足数,如果等于n表示一定不存在,否则就是存在的Code:#include<bits/stdc++.h>usingnamespacestd;#defineintlonglon......
  • AdaMCL: Adaptive Fusion Multi-View Contrastive Learning for Collaborative Filter
    AdaMCL:AdaptiveFusionMulti-ViewContrastiveLearningforCollaborativeFilteringAbstract​ 大多数基于CL的方法只利用原始的用户-项目交互图来构造CL任务,缺乏对高阶信息的显示利用。而且即使是使用高阶信息的基于CL的方法,高阶信息的接收字段也是固定的,没有考虑到节点之......