Adam优化器及代码实现

(1) 基础介绍1

Adam就像蒙着眼睛走,你需要方向,也需要对环境的感知。
一阶距就是惯性的保持,代表方向。
二阶距就是环境的感知,代表坡度的大小。

(1) 基础介绍2

先理解随机变量的一阶矩和二阶矩。模型的梯度是一个随机变量,一阶矩表示梯度均值,二阶矩表示其方差,一阶矩来控制模型更新的方向,二阶矩控制步长(学习率)。用moveing average来对一阶矩和二阶矩进行估计。bias correct是为了缓解初始一阶矩和二阶矩初始为0带来的moving average的影响。

一、Adam基础介绍:

  • Adam是一种可以替代传统随机梯度下降过程的一阶优化算法,它能基于训练数据迭代地更新神经网络权重;

  • Adam使用动量自适应学习率来加快收敛速度;

  • Adam名字来源于适应性矩估计(adaptive moment estimation)的缩写。


二、Adam优势:

  • 直截了当地实现
  • 高效的计算
  • 所需内存少
  • 梯度对角缩放的不变性
  • 适合解决含大规模数据和参数的优化问题
  • 适用于非稳态(non-stationary)目标
  • 适用于解决包含很高噪声或稀疏梯度的问题
  • 超参数可以很直观地解释,并且基本上只需极少量的调参


三、Adam主要做法:

做法:基于梯度的一阶矩估计(First Moment Estimation,即梯度的均值)和二阶矩估计(Second Moment Estimation,即梯度的未中心化的方差)进行综合考虑,计算出更新步长

与传统随机梯度下降保持同一个学习率不同,adam方法从梯度的一阶矩和二阶矩的预算来计算不同参数的自适应学习速率。

什么是一阶矩估计:在adam中为即一阶梯度的均值。一阶矩估计在数学上为是期望值,换句话说就是平均数(离散随机变量很好理解,连续的可以类比一下)。举例:xy坐标系中,x取大于零的整数,y1, y2, ...,yn 对应x=1, 2,..., n的值,现在我要对y求期望,就是所有y累加除以n,也就是y的均值。

什么是二阶据估计:在adam中为梯度中心化的方差。二阶中心矩就是对随机变量与均值(期望)的差的平方求期望。为什么要用平方,因为如果序列中有负数就会产生较大波动,而平方运算就好像对序列添加了绝对值,这样更能体现偏离均值的范围。

Adam 算法同时获得了 AdaGrad 和 RMSProp 算法的优点。

适应性梯度算法(AdaGrad)为每一个参数保留一个学习率以提升在稀疏梯度(即自然语言和计算机视觉问题)上的性能。

均方根传播(RMSProp)基于权重梯度最近量级的均值为每一个参数适应性地保留学习率。这意味着算法在非稳态和在线问题上有很有优秀的性能。

具体来说,算法计算了梯度的指数移动均值(exponential moving average),超参数 beta1 和 beta2 控制了这些移动均值的衰减率。

超参数 beta1 :控制一阶距估计的衰减;

超参数 beta2 :控制二阶距估计的衰减;

移动均值的初始值和 beta1、beta2 值接近于 1(推荐值),因此矩估计的偏差接近于 0。该偏差通过首先计算带偏差的估计而后计算偏差修正后的估计而得到提升。

四、Adam的参数配置:

alpha:同样也称为学习率或步长因子,它控制了权重的更新比率(如 0.001)。较大的值(如 0.3)在学习率更新前会有更快的初始学习,而较小的值(如 1.0E-5)会令训练收敛到更好的性能。

beta1:一阶矩估计的指数衰减率(如 0.9)。

beta2:二阶矩估计的指数衰减率(如 0.999)。该超参数在稀疏梯度(如在 NLP 或计算机视觉任务中)中应该设置为接近 1 的数。


五、Adam算法伪代码:

adam伪代码

在上述伪代码中:

(1)初始化确定参数a(步长)、\beta1\beta2(矩估计得指数衰弱速率,在[0,1)之间)和随机目标函数f(θ) 。这些都是预定义好的;

(2)初始化参数向量θ_0、一阶矩向量m_0、二阶矩向量v_0和时间步t

(3)循环,当参数θ没有收敛时,循环迭代地更新各个部分。即时间步t加1、更新目标函数在该时间步上对参数θ所求的梯度g_t、更新偏差的一阶矩估计m_t和二阶原始矩估计v_t,再计算偏差修正的一阶矩估计和偏差修正的二阶矩估计,然后再用以上计算出来的值更新模型的参数θt;

(4)当参数θ收敛时,返回模型参数。

注意算法的效率可以通过改变计算顺序而得到提升,例如将伪代码最后三行循环语句替代为以下两个:
a_t = a * \frac{\sqrt{1-\beta_{2}^t}}{1-\beta_{1}^t}

\theta_t \leftarrow \theta_{t-1} - a_t*\frac{m_t}{\sqrt{v_t}+\epsilon}

其实,就是3个公式收缩成2个公式;

六、优化器实现

1、预定义优化器对象,一般在代码_main_处:

# 预定义优化器
optimizers = {
        'adam': torch.optim.Adam,  # default lr=0.001
    } 

# 初始化优化器
# opt.optimizer=“Adam”
opt.optimizer = optimizers[opt.optimizer]

2、初始化优化器

# 初始化模型参数
_params = filter(lambda p: p.requires_grad, self.model.parameters())
# 初始化优化器对象
# self.opt.learning_rate为学习旅
# self.opt.l2reg为二阶矩估计衰减率
optimizer = self.opt.optimizer(_params, lr=self.opt.learning_rate, weight_decay=self.opt.l2reg)

3、模型训练处

# 梯度回传
loss.backward()
# 更新参数
optimizer.step()

七、Adam的改进和优化策略(待更新)

八、参考文献:

深度学习最常用的学习算法:Adam优化算法

简单认识Adam优化器

Adam优化算法详细解析

Adam优化器
如何理解Adam算法(Adaptive moment estimation)? - 知乎 (zhihu.com)----带你飞

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,937评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,503评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,712评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,668评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,677评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,601评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,975评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,637评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,881评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,621评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,710评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,387评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,971评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,947评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,189评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,805评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,449评论 2 342

推荐阅读更多精彩内容