学习总结

(1)adam和dropout是算法岗面试的常考题,下面的问题是源自斯坦福大学NLP的CS224n作业assignment3的2道题。深度学习的优化算法一般分为两类:1)调整学习率,使得优化更加稳定;2)梯度估计修正,优化训练速度。

【CS224n】(assignment3)Adam和Dropout_机器学习


(2)看adam论文中的伪代码(上图):

从while循环往下看,第一行是更新step,

第二行是计算梯度,

第三行计算一阶矩的估计,即mean均值

第四行计算二阶距的估计,即variance,和方差类似,都是二阶距的一种。

第五、六行则是对mean和var进行校正,因为mean和var的初始值为0,所以它们会向0偏置,这样处理后会减少这种偏置影响。

第七行是梯度下降。注意alpha后的梯度是用一阶距和二阶距估计的。

文章目录

零、各类优化算法

0.1 框架梳理优化算法

各类深度学习的优化算法的演变过程:SGD -> SGDM -> NAG ->AdaGrad -> AdaDelta -> Adam -> Nadam 这样的历程。

优化算法的框架:
首先定义:待优化的参数为w,目标函数为f(w),初始的学习速率为 【CS224n】(assignment3)Adam和Dropout_机器学习_02,现在要开始迭代优化,在每个epoch t中:

  • 计算目标函数关于当前参数的梯度:【CS224n】(assignment3)Adam和Dropout_方差_03
  • 根据历史梯度计算一阶动量和二阶动量:【CS224n】(assignment3)Adam和Dropout_机器学习_04
  • 计算当前时刻的下降梯度:【CS224n】(assignment3)Adam和Dropout_深度学习_05
  • 根据梯度下降进行更新:【CS224n】(assignment3)Adam和Dropout_深度学习_06

根据上面总结的优化算法框架,我们在来具体地回顾SGD、SGD with momentum、SGD with Nesterov acceleration、AdaGrad、AdaDelta / RMSPProp、Adam等等。

一、Adam

(1)回顾随机梯度下降SGD:【CS224n】(assignment3)Adam和Dropout_优化算法_07

其中:

  • 【CS224n】(assignment3)Adam和Dropout_机器学习_08包含模型的所有的参数;
  • 【CS224n】(assignment3)Adam和Dropout_深度学习_09是损失函数,而【CS224n】(assignment3)Adam和Dropout_机器学习_10是minibatch数据对应参数的损失函数。
  • 【CS224n】(assignment3)Adam和Dropout_深度学习_11是学习速率

而adam的优化器,则是加了2个步骤:

1.1 步骤1

(1)首先是用了一个动量trick(使用m),即对梯度的滑动平均值【CS224n】(assignment3)Adam和Dropout_方差_12

其中:【CS224n】(assignment3)Adam和Dropout_优化算法_13是0-1之间值的超参数(一般设置为0.9)。

问:简要解释(不需要数学证明,给出大概解释)如何使用动量m阻止更新的变化,为啥这种低方差有利于学习。

答:动量m实际上是真实梯度的指数移动平均(exponential moving average,这里简称EMA),可以平滑一系列噪声梯度,防止更新变化频繁。当噪声梯度较大时,学习过程会在其中来回跳跃,导致较迟收敛。因此,低方差更新能助于找到局部最小值(local minima)。

1.2 步骤2

adam用自适应学习速率扩展动量概念,通过跟踪 【CS224n】(assignment3)Adam和Dropout_机器学习_14 (梯度大小的滚动平均值)来扩展自适应学习速率的概念。【CS224n】(assignment3)Adam和Dropout_机器学习_15

其中:

  • 【CS224n】(assignment3)Adam和Dropout_机器学习_16【CS224n】(assignment3)Adam和Dropout_深度学习_17
  • 【CS224n】(assignment3)Adam和Dropout_优化算法_18是0-1之间值的超参数(一般设置为0.99)。

问:adam加上【CS224n】(assignment3)Adam和Dropout_深度学习_19后,哪些参数会得到更大的更新?为啥有助于学习呢?

答:【CS224n】(assignment3)Adam和Dropout_机器学习_14 实际上是指数移动平均(EMA)的梯度的elementwise square。【CS224n】(assignment3)Adam和Dropout_深度学习_19可看作是EMA的绝对值或者是动量momentum m的magnitude。对【CS224n】(assignment3)Adam和Dropout_机器学习_22进行标准化(即【CS224n】(assignment3)Adam和Dropout_机器学习_23操作),使得大的数变小,小的数变大。这样能给模型参数,小梯度,更大的参数更新,从而能够更快的收敛。

二、Dropout

dropout是一种正则化技术,在训练过程中,dropout随机地将 【CS224n】(assignment3)Adam和Dropout_优化算法_24 隐藏层中的参数置为0(该动作的概率为 【CS224n】(assignment3)Adam和Dropout_方差_25),然后用【CS224n】(assignment3)Adam和Dropout_优化算法_24乘常数【CS224n】(assignment3)Adam和Dropout_深度学习_27【CS224n】(assignment3)Adam和Dropout_深度学习_28

其中:

  • 【CS224n】(assignment3)Adam和Dropout_优化算法_29【CS224n】(assignment3)Adam和Dropout_机器学习_30是向量【CS224n】(assignment3)Adam和Dropout_深度学习_31的size,即mask向量的shape和向量h相同)是一个掩码向量,有【CS224n】(assignment3)Adam和Dropout_优化器_32的概率元素为0,有【CS224n】(assignment3)Adam和Dropout_机器学习_33的概率元素为1。
  • 【CS224n】(assignment3)Adam和Dropout_方差_34的作用是是让【CS224n】(assignment3)Adam和Dropout_优化器_32的数学期望为h,即:
    【CS224n】(assignment3)Adam和Dropout_优化器_36其中:【CS224n】(assignment3)Adam和Dropout_机器学习_37

2.1 问题1

问题1:【CS224n】(assignment3)Adam和Dropout_深度学习_27【CS224n】(assignment3)Adam和Dropout_方差_25之间存在什么样的等式?简要证明。
答:
【CS224n】(assignment3)Adam和Dropout_机器学习_40

因此:
【CS224n】(assignment3)Adam和Dropout_优化算法_41

2.2 问题2

问题2:为啥在训练时加入dropout,而在测试阶段不用加入dropout?

答:dropout是一种正则化技术。在训练过程中,模型参数在不退出的情况下容易对某些特征进行过拟合,且相邻参数之间存在高度依赖性。在这种情况下,模型是脆弱和过度拟合的,不能处理分布外的未见数据。Dropout可以在训练过程中通过消零梯度来随机切断参数(权重)之间的连接。因此,dropout可以降低参数之间的依赖程度,使训练后的模型具有更好的鲁棒性和泛化能力。在评估过程中,我们需要参数和一致输出之间的所有连接,所以不需要使用dropout。

Reference

(1)Dropout的理解:https://zhuanlan.zhihu.com/p/409517373
(4)​​​一个框架看懂优化算法之异同 SGD/AdaGrad/Adam​