上一周介绍了如何建立一个实用的深度学习神经网络。包括:

  • Train/Dev/Test sets的比例选择,Bias和Variance的概念和区别:Bias对应欠拟合,Variance对应过拟合。
  • 防止过拟合的两种方法:L2 regularization和Dropout;如何进行规范化输入,以加快梯度下降速度和精度。
  • 梯度消失和梯度爆炸的概念和危害,提出使用梯度初始化来降低这种风险。
  • 梯度检查,来验证梯度下降算法是否正确。

本周将继续讨论深度神经网络中的一些优化算法,通过使用这些技巧和方法来提高神经网络的训练速度和精度。


2.1 Mini-batch 梯度下降(Mini-batch gradient descent)

  1. 问题提出
    前一章神经网络训练是对所有样本深度学习网络优化器 深度神经网络优化_梯度下降算法,称为batch,通过向量化计算方式,同时进行,我们将这种梯度下降算法称为Batch Gradient Descent。当深度学习网络优化器 深度神经网络优化_梯度下降算法很大(达到百万数量级),训练速度往往会很慢(因为每次迭代都要对所有样本进行求和运算和矩阵运算)。
    为了解决这一问题,我们可以把深度学习网络优化器 深度神经网络优化_梯度下降算法个训练样本分成若干个子集,称为深度学习网络优化器 深度神经网络优化_深度学习网络优化器_04,这样每个子集包含的数据量就小了,每次在单一子集上进行神经网络训练,速度就会大大提高。这种梯度下降算法叫做Mini-batch Gradient Descent
  2. 字母上标含义
  • 深度学习网络优化器 深度神经网络优化_深度学习网络优化器_05上标为小括号,表示第深度学习网络优化器 深度神经网络优化_神经网络_06个样本
  • 深度学习网络优化器 深度神经网络优化_机器学习_07上标为中括号,表示神经网络第深度学习网络优化器 深度神经网络优化_深度学习网络优化器_08层网络的输出
  • 深度学习网络优化器 深度神经网络优化_梯度下降算法_09上标为大括号,表示第深度学习网络优化器 深度神经网络优化_深度学习_10组mini-batch的样本和标签
  1. min-batch Gradient Descent 实例
  • 假设训练样本个数深度学习网络优化器 深度神经网络优化_机器学习_11,其维度为深度学习网络优化器 深度神经网络优化_深度学习_12。将其分成5000个子集,每个mini-batch含有1000个样本。

每个mini-batch记为深度学习网络优化器 深度神经网络优化_深度学习网络优化器_13,其维度为深度学习网络优化器 深度神经网络优化_梯度下降算法_14。相应的每个深度学习网络优化器 深度神经网络优化_深度学习网络优化器_15的标签记为深度学习网络优化器 深度神经网络优化_机器学习_16,其维度为深度学习网络优化器 深度神经网络优化_机器学习_17,则 深度学习网络优化器 深度神经网络优化_深度学习网络优化器_18

  • Mini-batches Gradient Descent的实现过程:先将总的训练样本分成深度学习网络优化器 深度神经网络优化_深度学习_19个子集(mini-batches),然后对每个mini-batch进行神经网络训练,包括a. Forward Propagation,b. Compute Cost Function,c. Backward Propagation , d. 更新深度学习网络优化器 深度神经网络优化_深度学习_20深度学习网络优化器 深度神经网络优化_梯度下降算法_21,循环至深度学习网络优化器 深度神经网络优化_深度学习_19个mini-batch都训练完毕。如下公式所示:
    深度学习网络优化器 深度神经网络优化_深度学习_23
    经过深度学习网络优化器 深度神经网络优化_深度学习_19次循环之后,所有深度学习网络优化器 深度神经网络优化_深度学习网络优化器_25个训练样本都进行了梯度下降计算。这个过程,我们称之为经历了一个深度学习网络优化器 深度神经网络优化_深度学习_26
  1. 如何从训练集(X, Y)构建mini-batch GD
  • Shuffle(洗牌):
  • Partition(划分):
  1. 深度学习网络优化器 深度神经网络优化_深度学习网络优化器_27:
    1. 对于Batch Gradient Descent而言,一个epoch只进行一次梯度下降算法;而Mini-Batches Gradient Descent,一个epoch会进行深度学习网络优化器 深度神经网络优化_深度学习_28次梯度下降算法。
    2. 对于Mini-Batches Gradient Descent,可以进行多次epoch训练。而且,每次epoch,最好是将总体训练数据重新打乱、重新分成深度学习网络优化器 深度神经网络优化_深度学习_19组mini-batches,这样有利于训练出最佳的神经网络模型。

2.2 理解mini-batch梯度下降法(Understanding mini-batch gradient descent)

  1. 从cost function 角度理解
    Batch gradient descent和Mini-batch gradient descent的cost function曲线如下图所示:
  • 左图:对于一般的神经网络模型,使用Batch gradient descent,随着迭代次数增加,cost function是不断减小的。
  • 右图:使用Mini-batch gradient descent,随着在不同的mini-batch上迭代训练,其cost function不是单调下降,出现振荡。但整体的趋势是下降的,最终也能得到较低的cost function值。

之所以出现细微振荡的原因是不同的mini-batch之间是有差异的。例如可能第一个子集深度学习网络优化器 深度神经网络优化_深度学习_30是好的子集,而第二个子集深度学习网络优化器 深度神经网络优化_深度学习网络优化器_31包含了一些噪声noise。出现细微振荡是正常的。

  1. 如何选择mini-batch size
  • 极端:
  • 如果mini-batch size=深度学习网络优化器 深度神经网络优化_梯度下降算法_32((Batch) Gradient Descent),只包含一个子集为深度学习网络优化器 深度神经网络优化_机器学习_33
X = data_input
Y = labels
parameters = initialize_parameters(layers_dims)
for i in range(0, num_iterations):
    # Forward propagation
    a, caches = forward_propagation(X, parameters)
    # Compute cost.
    cost = compute_cost(a, Y)
    # Backward propagation.
    grads = backward_propagation(a, caches, parameters)
    # Update parameters.
    parameters = update_parameters(parameters, grads)
  • 如果mini-batch size=深度学习网络优化器 深度神经网络优化_神经网络_34(Stochastic Gradient Descent),每个样本就是一个子集深度学习网络优化器 深度神经网络优化_神经网络_35,共有深度学习网络优化器 深度神经网络优化_深度学习网络优化器_36个子集。
X = data_input
Y = labels
parameters = initialize_parameters(layers_dims)
for i in range(0, num_iterations):
    for j in range(0, m):
        # Forward propagation
        a, caches = forward_propagation(X[:,j], parameters)
        # Compute cost
        cost = compute_cost(a, Y[:,j])
        # Backward propagation
        grads = backward_propagation(a, caches, parameters)
        # Update parameters.
        parameters = update_parameters(parameters, grads)

Note also that implementing SGD requires 3 for-loops in total:

  1. Over the number of iterations
  2. Over the 深度学习网络优化器 深度神经网络优化_神经网络_37
  3. Over the layers (to update all parameters, from 深度学习网络优化器 深度神经网络优化_深度学习网络优化器_38 to 深度学习网络优化器 深度神经网络优化_梯度下降算法_39)
  • Stochastic Gradient Descent(Batch) Gradient Descent 比较
  • 深度学习网络优化器 深度神经网络优化_梯度下降算法_40

  • Stachastic gradient descent每次前进速度很快,但是路线曲折,有较大的振荡,最终会在最小值附近来回波动,难以真正达到最小值处。而且在数值处理上就不能使用向量化的方法来提高运算速度。
  • Batch gradient descent会比较平稳地接近全局最小值,但是因为使用了所有m个样本,每次前进的速度有些慢。
  • 一般来说:
  • 当总体样本数量深度学习网络优化器 深度神经网络优化_梯度下降算法_41不太大时,例如深度学习网络优化器 深度神经网络优化_梯度下降算法_42,建议直接使用Batch gradient descent。
  • 当总体样本数量m很大时,建议将样本分成许多mini-batches。推荐常用的mini-batch size为深度学习网络优化器 深度神经网络优化_梯度下降算法_43这些都是2的幂
  1. 设置的原因是计算机存储数据一般是2的幂,这样设置可以提高运算速度。
  2. mini-batch size不能设置得太大(Batch gradient descent),也不能设置得太小(Stachastic gradient descent)。这样,相当于结合了Batch gradient descent和Stachastic gradient descent各自的优点,既能使用向量化优化算法,又能叫快速地找到最小值。

2.3 指数加权平均数(Exponentially weighted averages)

本节主要介绍:指数加权平均数(Exponentially weighted averages) (又被称为:指数加权移动平均(Exponential Weighted Moving Average)

  1. 例子:
    下图记录半年内伦敦市的气温变化,深度学习网络优化器 深度神经网络优化_深度学习_44表示第深度学习网络优化器 深度神经网络优化_梯度下降算法_45天的华氏温度,深度学习网络优化器 深度神经网络优化_深度学习网络优化器_46表示第深度学习网络优化器 深度神经网络优化_梯度下降算法_45天的移动加权平均值(EMA)

    温度数据似乎抖动较大。如果我们希望看到半年内气温的整体变化趋势,可以通过EMA的方法来对每天气温进行平滑处理。
  2. 指数加权移动平均EMA(Exponential Weighted Moving Average)处理
    深度学习网络优化器 深度神经网络优化_深度学习_48,当成第0天的气温值。
  • 第一天的气温与第深度学习网络优化器 深度神经网络优化_深度学习网络优化器_49天的气温有关:
    深度学习网络优化器 深度神经网络优化_机器学习_50
  • 第二天的气温与第深度学习网络优化器 深度神经网络优化_神经网络_51天的气温有关:
    深度学习网络优化器 深度神经网络优化_深度学习网络优化器_52
  • 第三天的气温与第深度学习网络优化器 深度神经网络优化_神经网络_53天的气温有关:
    深度学习网络优化器 深度神经网络优化_机器学习_54
  • 即第深度学习网络优化器 深度神经网络优化_深度学习_10天与第深度学习网络优化器 深度神经网络优化_神经网络_56天的气温迭代关系为:
    深度学习网络优化器 深度神经网络优化_梯度下降算法_57
    经过深度学习网络优化器 深度神经网络优化_梯度下降算法_58处理得到的气温如下图红色曲线所示:
  1. 定义
    EMA一般形式为:
    深度学习网络优化器 深度神经网络优化_机器学习_59
    上例中,深度学习网络优化器 深度神经网络优化_梯度下降算法_60深度学习网络优化器 深度神经网络优化_深度学习_61值决定了指数加权平均的天数,近似表示为:深度学习网络优化器 深度神经网络优化_梯度下降算法_62
  • 深度学习网络优化器 深度神经网络优化_深度学习网络优化器_63,则深度学习网络优化器 深度神经网络优化_神经网络_64,表示将前10天进行指数加权平均,如深度学习网络优化器 深度神经网络优化_深度学习_65
  • 深度学习网络优化器 深度神经网络优化_梯度下降算法_66,则深度学习网络优化器 深度神经网络优化_深度学习网络优化器_67,表示将前50天进行指数加权平均,如深度学习网络优化器 深度神经网络优化_机器学习_68
  • 深度学习网络优化器 深度神经网络优化_梯度下降算法_69,则深度学习网络优化器 深度神经网络优化_深度学习_70,表示将前2天进行指数加权平均,如深度学习网络优化器 深度神经网络优化_机器学习_71

    深度学习网络优化器 深度神经网络优化_梯度下降算法_72:深度学习网络优化器 深度神经网络优化_深度学习网络优化器_73值越大,则指数加权平均的天数越多,平均后的趋势线就越平缓,但是同时也会向右平移。

2.4 理解指数加权平均数(Understanding exponentially weighted averages)

  1. 从公式来理解指数加权移动平均EMA(Exponential Weighted Moving Average)
    EMA-指数加权移动平均一般形式为:
    深度学习网络优化器 深度神经网络优化_机器学习_59
    我们把公式写成一般形式,则为:
    深度学习网络优化器 深度神经网络优化_神经网络_75
    上式中:
  • 深度学习网络优化器 深度神经网络优化_深度学习_76是原始数据值,深度学习网络优化器 深度神经网络优化_神经网络_77是类似指数曲线,从右向左,呈指数下降的。
  • 深度学习网络优化器 深度神经网络优化_神经网络_78的值就是这两个子式的点乘,当 深度学习网络优化器 深度神经网络优化_神经网络_79时,可得:深度学习网络优化器 深度神经网络优化_机器学习_80,从公式中可以看到:每天温度(深度学习网络优化器 深度神经网络优化_深度学习_81)的权重系数以指数等比形式缩小,时间越靠近当前时刻的数据加权影响力越大。相当于做了指数衰减,离得越近,影响越大;离得越远,影响越小,衰减越厉害。
  1. 深度学习网络优化器 深度神经网络优化_神经网络_82的由来
    由上例中,可知:深度学习网络优化器 深度神经网络优化_深度学习_61值决定了指数加权平均的天数,近似表示为:深度学习网络优化器 深度神经网络优化_梯度下降算法_62。那深度学习网络优化器 深度神经网络优化_深度学习_85是怎么来的呢?
    指数加权移动平均深度学习网络优化器 深度神经网络优化_深度学习网络优化器_86是指数是衰减的,一般认为衰减到深度学习网络优化器 深度神经网络优化_深度学习网络优化器_87就可以忽略不计了。因此,根据之前的推导公式得
    深度学习网络优化器 深度神经网络优化_深度学习_88
    深度学习网络优化器 深度神经网络优化_深度学习网络优化器_89深度学习网络优化器 深度神经网络优化_深度学习_90,则深度学习网络优化器 深度神经网络优化_深度学习_91深度学习网络优化器 深度神经网络优化_梯度下降算法_92。即证明转化为:
    深度学习网络优化器 深度神经网络优化_神经网络_93
    显然,当深度学习网络优化器 深度神经网络优化_神经网络_94时,上述等式是近似成立的。
    所以指数加权移动平均的移动一般是深度学习网络优化器 深度神经网络优化_梯度下降算法_62

2.5 指数加权平均的偏差修正(Bias correction in exponentially weighted averages)

  1. 问题提出
    深度学习网络优化器 深度神经网络优化_神经网络_96时,指数加权移动平均结果希望是下图绿色曲线所示。但是实际上,真实曲线如紫色曲线所示。
    紫色曲线与绿色曲线的区别:紫色曲线开始的时候相对较低一些。这是因为开始时我们设置深度学习网络优化器 深度神经网络优化_深度学习_48,所以初始值会相对小一些,直到后面受前面的影响渐渐变小,趋于正常。
  2. 修正上述问题
    修正这种问题的方法是进行深度学习网络优化器 深度神经网络优化_机器学习_98,即在每次计算完深度学习网络优化器 深度神经网络优化_神经网络_99后,对深度学习网络优化器 深度神经网络优化_神经网络_99进行下式处理:
    深度学习网络优化器 深度神经网络优化_机器学习_101
  • 刚进行迭代时:深度学习网络优化器 深度神经网络优化_深度学习_10比较小,深度学习网络优化器 深度神经网络优化_深度学习_103,这样就将深度学习网络优化器 深度神经网络优化_神经网络_78修正得更大一些,效果是把紫色曲线开始部分向上提升一些,与绿色曲线接近重合。
  • 随着迭代的深入,深度学习网络优化器 深度神经网络优化_梯度下降算法_105深度学习网络优化器 深度神经网络优化_神经网络_78基本不变,紫色曲线与绿色曲线依然重合。
    这样就实现了简单的偏移校正,得到我们希望的绿色曲线。

深度学习网络优化器 深度神经网络优化_机器学习_107
机器学习中,深度学习网络优化器 深度神经网络优化_深度学习网络优化器_108。因为,在迭代一次次数后(深度学习网络优化器 深度神经网络优化_深度学习_10较大),深度学习网络优化器 深度神经网络优化_神经网络_78受初始值影响微乎其微,紫色曲线与绿色曲线基本重合。所以,一般可以忽略初始迭代过程,等到一定迭代之后再取值,这样就不需要进行偏移校正了。

  1. EMA(指数加权移动平均)的优点及其应用理解
  1. EMA 的优点
  • 它占用极少内存:计算指数加权平均数只占用单行数字的存储和内存,然后把最新数据代入公式,深度学习网络优化器 深度神经网络优化_深度学习_111
  • 移动平均线能较好的反应时间序列的变化趋势,权重的大小不同起到的作用也是不同,时间比较久远的变量值的影响力相对较低,时间比较近的变量值的影响力相对较高
  1. EMA 在 Momentum 优化算法中应用的理解
  • 假设每次梯度的值都是 深度学习网络优化器 深度神经网络优化_梯度下降算法_112 ,此时参数更新,开始会加速下降;当迭代次数深度学习网络优化器 深度神经网络优化_梯度下降算法_113达到深度学习网络优化器 深度神经网络优化_神经网络_114左右,此时达到了速度上限,之后将匀速下降(可参考一中的公式理解)。
  • 假如,在某个时间段内一些参数的梯度方向与之前的不一致时,那么真实的参数更新幅度会变小;相反,若在某个时间段内的参数的梯度方向都一致,那么其真实的参数更新幅度会变大,起到加速收敛的作用。
  • 在迭代后期,由于随机噪声问题,经常会在收敛值附近震荡,动量法会起到减速作用,增加稳定性

参考:指数加权移动平均(Exponential Weighted Moving Average)


2.6 动量梯度下降法(Gradient descent with Momentum)

  1. 存在的问题
    如下图蓝色所示,当我们使用min-batch的时候,会发现存在以下问题:
  • 当要加速每次迭代的“前进步伐”,增大深度学习网络优化器 深度神经网络优化_神经网络_115时,每次迭代的上下“波动变大”;
  • 当要让每次迭代的“波动减小”,减小深度学习网络优化器 深度神经网络优化_神经网络_115时,每次迭代的上下“前进步伐”变小;

这就成了一个悖论,如下图蓝色所示。利用指数加权平均的偏差修正(Bias correction in exponentially weighted averages),变成动量梯度下降法(Gradient descent with Momentum),就能很好的解决此问题,如下图红色所示。

深度学习网络优化器 深度神经网络优化_机器学习_117

  1. Momentum算法
  1. 基本思路
    在使用min-batch的时候,对权重深度学习网络优化器 深度神经网络优化_机器学习_118和常数项深度学习网络优化器 深度神经网络优化_深度学习_119指数加权移动平均表达式如下:
    深度学习网络优化器 深度神经网络优化_机器学习_120
    从动量的角度:
  • 以权重深度学习网络优化器 深度神经网络优化_深度学习_121为例,深度学习网络优化器 深度神经网络优化_神经网络_122可以成速度深度学习网络优化器 深度神经网络优化_深度学习网络优化器_123深度学习网络优化器 深度神经网络优化_梯度下降算法_124可以看成是加速度深度学习网络优化器 深度神经网络优化_深度学习网络优化器_125指数加权平移动平均可以认为:计算当前的速度,当前速度由之前的速度和现在的加速度共同影响。
  • 深度学习网络优化器 深度神经网络优化_梯度下降算法_126,又能限制速度深度学习网络优化器 深度神经网络优化_神经网络_122过大。也就是说,当前的速度是渐变的,而不是瞬变的,是动量的过程。

以上保证了梯度下降的平稳性和准确性,减少振荡,较快地达到最小值处。

  1. 基本框架
    动量梯度下降算法的过程如下:
    深度学习网络优化器 深度神经网络优化_深度学习网络优化器_128
    深度学习网络优化器 深度神经网络优化_梯度下降算法_72
  • 初始时,令深度学习网络优化器 深度神经网络优化_梯度下降算法_130。一般设置深度学习网络优化器 深度神经网络优化_梯度下降算法_131,即指数加权移动平均前10天的数据,实际应用效果较好。
  • 偏移校正,可以不使用。因为经过10次迭代后,随着滑动平均的过程,偏移情况会逐渐消失。
  • 动量梯度下降还有另外一种写法:
    深度学习网络优化器 深度神经网络优化_深度学习_132
  1. 上面的写法消去了深度学习网络优化器 深度神经网络优化_深度学习_133深度学习网络优化器 深度神经网络优化_神经网络_134前的系数深度学习网络优化器 深度神经网络优化_机器学习_135。这样简化了表达式,但是学习因子深度学习网络优化器 深度神经网络优化_深度学习_136相当于变成了深度学习网络优化器 深度神经网络优化_机器学习_137,表示深度学习网络优化器 深度神经网络优化_梯度下降算法_138
  2. 从效果上来说,这种写法也是可以的,但是不够直观,且 深度学习网络优化器 深度神经网络优化_深度学习网络优化器_139,不够方便。所以,实际应用中,推荐第一种动量梯度下降的表达式。

2.7 RMS-prop(Root Mean Square Prop)

RMSprop是另外一种优化梯度下降速度的算法。是AdaGrad算法和指数加权移动平均EMA的结合。

  1. RMSprop理解
  1. 公式角度
    RMSprop是Geoff Hinton提出的一种自适应学习率方法。Adagrad会累加之前所有的梯度平方,而RMSprop仅仅是计算指数加权移动平均值,因此可缓解Adagrad算法学习率下降较快的问题,如下公式:
    深度学习网络优化器 深度神经网络优化_深度学习网络优化器_140
  2. 迭代波动角度

    从图中可以看出:
  • 梯度下降(蓝色折线)在垂直方向(深度学习网络优化器 深度神经网络优化_梯度下降算法_141)上振荡较大,在水平方向(深度学习网络优化器 深度神经网络优化_深度学习_121)上振荡较小,表示在深度学习网络优化器 深度神经网络优化_梯度下降算法_141方向上梯度较大,即深度学习网络优化器 深度神经网络优化_梯度下降算法_144较大,而在深度学习网络优化器 深度神经网络优化_深度学习_121方向上梯度较小,即深度学习网络优化器 深度神经网络优化_梯度下降算法_124较小。因此,上述表达式中深度学习网络优化器 深度神经网络优化_梯度下降算法_147较大,而深度学习网络优化器 深度神经网络优化_机器学习_148较小。
  • 在RMSprop中,更新深度学习网络优化器 深度神经网络优化_深度学习_121深度学习网络优化器 深度神经网络优化_梯度下降算法_141的表达式时,变化值深度学习网络优化器 深度神经网络优化_深度学习网络优化器_151较大,而深度学习网络优化器 深度神经网络优化_深度学习_152较小。即深度学习网络优化器 深度神经网络优化_深度学习_121变化得多一些,深度学习网络优化器 深度神经网络优化_梯度下降算法_141变化得少一些(加快了深度学习网络优化器 深度神经网络优化_深度学习_121方向的速度,减小了深度学习网络优化器 深度神经网络优化_梯度下降算法_141方向的速度,减小振荡)。实现快速梯度下降算法,其梯度下降过程如绿色折线所示。
  • 总得来说:RMSprop可以认为如果哪个方向振荡大,就减小该方向的更新速度,从而减小振荡
  1. 基本框架
  1. 通过RMSprop,来减缓深度学习网络优化器 深度神经网络优化_深度学习网络优化器_157方向的学习,即纵轴方向,同时深度学习网络优化器 深度神经网络优化_深度学习网络优化器_158加快,至少不减缓横轴方向的学习,其更新表达式为:
    深度学习网络优化器 深度神经网络优化_神经网络_159
  2. 深度学习网络优化器 深度神经网络优化_深度学习_160
  • 为了避免RMSprop算法中分母为零,通常可以在分母增加一个极小的常数深度学习网络优化器 深度神经网络优化_梯度下降算法_161
    深度学习网络优化器 深度神经网络优化_机器学习_162
    其中,深度学习网络优化器 深度神经网络优化_机器学习_163,或者其它较小值。
  • RMSprop是基于权重梯度最近量级的均值,它每一个参数适应性地保留学习率。这意味着在非稳态和在线问题上有很有优秀的性能。

2.8 Adam 优化算法(Adam optimization algorithm)

  1. Adam介绍
  • Adam(Adaptive Moment Estimation)算法结合了Momentum算法和RMSprop算法。
  • Adam是一种可以替代传统随机梯度下降(SGD) 过程的深度学习网络优化器 深度神经网络优化_深度学习网络优化器_164(用到了偏方差/uncentered variance),能基于训练数据迭代地更新神经网络权重。
  • 名称来源于适应性矩估计(ADAptive Moment estimation)。
  1. 基本框架
  • 其算法流程为:
    初始化,令深度学习网络优化器 深度神经网络优化_梯度下降算法_165,然后进行迭代
    深度学习网络优化器 深度神经网络优化_神经网络_166
  • Adam算法包含了几个超参数,分别是:深度学习网络优化器 深度神经网络优化_深度学习_167。其中:
  • 深度学习网络优化器 深度神经网络优化_梯度下降算法_168通常设置为深度学习网络优化器 深度神经网络优化_神经网络_169
  • 深度学习网络优化器 深度神经网络优化_深度学习_170通常设置为深度学习网络优化器 深度神经网络优化_梯度下降算法_171
  • 深度学习网络优化器 深度神经网络优化_梯度下降算法_161通常设置为深度学习网络优化器 深度神经网络优化_机器学习_173
  • 一般只需要对深度学习网络优化器 深度神经网络优化_神经网络_174进行调试。
  1. Adam算法的优势
  • 实际应用中,Adam算法结合了动量梯度下降和RMSprop各自的优点,使得神经网络训练速度大大提高。
  • 在非凸优化问题中,Adam的优势:
  • 实现直接,计算高效;
  • 所需内存少;
  • 梯度对角缩放的不变性;
  • 适合解决含大规模数据和参数的优化问题;
  • 适用于非稳态(non-stationary)目标;
  • 适于解决包含很深度学习网络优化器 深度神经网络优化_深度学习_175
  • 超参数可以很直观地解释,并且基本上只需极少量的调参。

2.9 学习率衰减(Learning rate decay)

Learning rate decay是通过减小学习因子深度学习网络优化器 深度神经网络优化_神经网络_176来提高神经网络训练速度。

  1. 实验验证
    Learning rate decay就是随着迭代次数增加,学习因子深度学习网络优化器 深度神经网络优化_梯度下降算法_177逐渐减小。下面用图示的方式来解释这样做的好处。下图中:
  • 蓝色折线表示使用恒定的学习因子深度学习网络优化器 深度神经网络优化_神经网络_115,由于每次训练深度学习网络优化器 深度神经网络优化_神经网络_115相同,步进长度不变,在接近最优值处的振荡也大,在最优值附近较大范围内振荡,与最优值距离就比较远。
  • 绿色折线表示使用不断减小的深度学习网络优化器 深度神经网络优化_神经网络_115,随着训练次数增加,深度学习网络优化器 深度神经网络优化_神经网络_115逐渐减小,步进长度减小,使得能够在最优值处较小范围内微弱振荡,不断逼近最优值。
    相比较恒定的深度学习网络优化器 深度神经网络优化_梯度下降算法_182来说,learning rate decay更接近最优值。
  1. Learning rate decay的衰减方法
  • 基本公式:
    Learning rate decay中对深度学习网络优化器 深度神经网络优化_神经网络_115可由下列公式得到:
    深度学习网络优化器 深度神经网络优化_深度学习网络优化器_184
    其中,深度学习网络优化器 深度神经网络优化_深度学习_185是参数(可调),深度学习网络优化器 深度神经网络优化_深度学习_26是训练完所有样本的次数。随着深度学习网络优化器 深度神经网络优化_深度学习_26增加,深度学习网络优化器 深度神经网络优化_神经网络_115会不断变小。
  • 变形公式
    除了上面计算深度学习网络优化器 深度神经网络优化_神经网络_115的公式之外,还可以选用以下计算公式:
    深度学习网络优化器 深度神经网络优化_深度学习_190
    深度学习网络优化器 深度神经网络优化_神经网络_191
    深度学习网络优化器 深度神经网络优化_神经网络_192
    其中,深度学习网络优化器 深度神经网络优化_深度学习网络优化器_193为可调参数,深度学习网络优化器 深度神经网络优化_深度学习_10为mini-bach number。
    上述公式都是:设置深度学习网络优化器 深度神经网络优化_梯度下降算法_182为关于深度学习网络优化器 深度神经网络优化_神经网络_196的离散值,随着深度学习网络优化器 深度神经网络优化_神经网络_196增加,深度学习网络优化器 深度神经网络优化_梯度下降算法_182呈阶梯式减小。

2.10 局部最优的问题(The problem of local optima)

  1. 局部最优和全局最优
  • 局部最优
    局部最优解的理解是形如碗状的凹槽,如下图左边所示。
  • 全局最优
    大部分梯度为零的“最优点”并不是这些凹槽处,而是形如右边所示的马鞍状,称为saddle point(即有些维度凹形(局部最小),而有些是凸性(局部最大))。也就是说,梯度为零并不能保证所有维度都是convex(极小值),也有可能是concave(极大值)。
    在神经网络中参数很多都是鞍点的情况,所有参数梯度为零的点很可能都是右边所示的马鞍状的saddle point,而不是左边那样的local optimum。
  1. 鞍点的特点
  • 类似马鞍状的plateaus会降低神经网络学习速度。鞍点是梯度接近于零的平缓区域,如下图所示。
  • 在鞍点附近上梯度很小,前进缓慢,再继续到达其他鞍点需要很长时间。
到达plateaus后,由于随机扰动,梯度一般能够沿着图中绿色箭头,离开plateaus,继续前进,只是在plateaus上花费了太多时间。

深度学习网络优化器 深度神经网络优化_深度学习_199

  • 关于local optima,总结:
  • 只要选择合理的强大的神经网络,一般不太可能陷入local optima
  • Plateaus可能会使梯度下降变慢,降低学习速度
  1. 解决鞍点问题
    梯度在平稳段是一个问题,这样使得学习十分缓慢。而使用像Momentum或是RMSpropAdam这样的算法,能够加速学习算法的地方。在这些情况下,更成熟的优化算法,如Adam算法,能够加快速度,让你尽早往下走出平稳段。
    优化方法总结:SGD,Momentum,AdaGrad,RMSProp,Adam

本章总结

深度学习网络优化器 深度神经网络优化_深度学习网络优化器_200

  • 最左边是min-batch
    小批量随机梯度下降(通常 SGD 指的就是这种)使用一个批量的数据更新参数,因此大大降低了一次迭代所需的计算量。这种方法降低了更新参数的方差,使得收敛过程更为稳定;它也能利用流行深度学习框架中高度优化的矩阵运算器,从而高效地求出每个小批数据的梯度。通常一个小批数据含有的样本数量在 50 至 256 之间,但对于不同的用途也会有所变化。
  • 中间是Momentum和RMSprop
  • 动量梯度下降法(Momentum)旨在加速 SGD 的学习过程,特别是在具有较高曲率的情况下。一般而言,动量算法利用先前梯度的指数衰减滑动平均值在该方向上进行修正,从而更好地利用历史梯度的信息。该算法引入了变量 v 作为参数在参数空间中持续移动的速度向量,速度一般可以设置为负梯度的指数衰减滑动平均值。
  • RMSProp 和 Adam 等适应性学习率算法是目前我们最常用的最优化方法。RMSProp 算法(Hinton,2012)修改 AdaGrad 以在非凸情况下表现更好,它改变梯度累积为指数加权的移动平均值,从而丢弃距离较远的历史梯度信息。RMSProp 是 Hinton 在公开课上提出的最优化算法,其实它可以视为 AdaDelta 的特例。但实践证明 RMSProp 有非常好的性能,它目前在深度学习中有非常广泛的应用。
  • 最右边是Adam
    Adam 算法同时获得了 AdaGrad 和 RMSProp 算法的优点。Adam 不仅如 RMSProp 算法那样基于一阶矩均值计算适应性参数学习率,它同时还充分利用了梯度的二阶矩均值(即有偏方差/uncentered variance)。