深度学习优化算法总结

Posted 晴空^_^

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深度学习优化算法总结相关的知识,希望对你有一定的参考价值。

深度学习的优化算法

  1. 优化的目标

    优化提供了一种最大程度减少深度学习损失函数的方法,但本质上,优化和深度学习的目标不同。

    优化关注的是最小化目标;深度学习是在给定有限数据量的情况下寻找合适的模型。

  2. 优化算法

    1. gradient descent(梯度下降)

      考虑一类连续可微实值函数 f : R → R f:\\mathbbR \\rightarrow \\mathbbR f:RR,利用泰勒展开,可以得到:
      f ( x + ϵ ) = f ( x ) + ϵ f ′ ( x ) + O ( ϵ 2 ) f(x + \\epsilon ) = f(x) + \\epsilon f'(x) + O(\\epsilon ^2) f(x+ϵ)=f(x)+ϵf(x)+O(ϵ2)
      在一阶近似中, f ( x + ϵ ) f(x + \\epsilon ) f(x+ϵ) 可通过 x x x处的函数值 f ( x ) f(x) f(x)和一阶导数 f ′ ( x ) f'(x) f(x)得出。假设在负梯度方向上移动的 ϵ \\epsilon ϵ会减少 f f f。为了简化问题,选择固定步长 η > 0 \\eta > 0 η>0,然后取 ϵ = − η f ′ ( x ) \\epsilon = - \\eta f'(x) ϵ=ηf(x),将其带入泰勒展开式后,得到
      f ( x − η f ′ ( x ) ) = f ( x ) − η f ′ 2 ( x ) + O ( η 2 f ′ 2 ( x ) ) f(x - \\eta f'(x)) = f(x) - \\eta f'^2(x) + O(\\eta^2f'^2(x)) f(xηf(x))=f(x)ηf′2(x)+O(η2f′2(x))
      f ′ ( x ) ≠ 0 f'(x) \\ne 0 f(x)=0,则 η f ′ 2 ( x ) > 0 \\eta f'^2(x) > 0 ηf′2(x)>0。另外,总是可以找到令 η \\eta η足够小使得高阶项变的不相关,因此
      f ( x − η f ′ ( x ) ) < f ( x ) f(x - \\eta f'(x)) < f(x) f(xηf(x))<f(x)
      这意味着,如果使用
      x ← x − η f ′ ( x ) x \\leftarrow x - \\eta f'(x) xxηf(x)
      来迭代x,函数 f ( x ) f(x) f(x)的值可能会下降。

      因此,在梯度下降中,首先选用初始值 x x x η > 0 \\eta > 0 η>0,然后使用它们连续迭代 x x x,直到停止条件达成。例如:当梯度 ∣ f ′ ( x ) ∣ |f'(x)| f(x)的幅度足够小或迭代次数达到某个值。

      其中,步长 η \\eta η叫做学习率,是超参数,其决定目标函数能否收敛到局部最小值,以及何时收敛到最小值。

    2. SGD(随机梯度下降)

      深度学习中,目标函数通常是训练数据集中每个样本的损失函数的平均值

      给定 n n n个样本,假设 f i ( x ) f_i(x) fi(x)是关于索引 i i i的训练样本的损失函数,其中 X X X是参数向量,得到目标函数:
      f ( X ) = 1 n ∑ i = 1 n f i ( X ) f(X) = \\frac1n \\sum_i=1^n f_i(X) f(X)=n1i=1nfi(X)
      X X X的目标函数的梯度为:
      ∇ f ( X ) = 1 n ∑ i = 1 n ∇ f i ( X ) \\nabla f(X) = \\frac1n \\sum_i=1^n \\nabla f_i(X) f(X)=n1i=1nfi(X)
      如果采用梯度下降法,每个自变量迭代的计算代价为 O ( n ) O(n) O(n),其随 n n n线性增长,因此,当训练数据集规模较大时,每次迭代的梯度下降的计算代价将更高。

      SGD可降低每次迭代时的计算代价。在随机梯度下降的每次迭代中,对数据样本随机均匀采样一个索引 i i i,其中 i ∈ 1 , . . . , n i \\in \\ 1,...,n \\ i1,...,n,并计算梯度 ∇ f i ( X ) \\nabla f_i(X) fi(X)来更新 X X X
      x ← x − η ∇ f i ( X ) x \\leftarrow x - \\eta \\nabla f_i(X) xxηfi(X)
      其中, η \\eta η是学习率。

      可以发现,每次迭代的计算代价从梯度下降的 O ( n ) O(n) O(n)下降到了常数 O ( 1 ) O(1) O(1)

      此外,随机梯度 ∇ f i ( x ) \\nabla f_i(x) fi(x)是对完整梯度 ∇ f ( x ) \\nabla f(x) f(x)的无偏估计。
      E ∇ f i ( X ) = 1 n ∑ i = 1 n ∇ f i ( X ) = ∇ f ( X ) \\mathbbE \\nabla f_i(X) = \\frac1n \\sum_i=1^n \\nabla f_i(X) = \\nabla f(X) Efi(X)=n1i=1nfi(X)=f(X)
      这意味着,平均而言,随机梯度是对梯度的良好估计。

    3. minibatch-SGD(小批量随机梯度下降)

      处理单个观测值需要我们执行许多单一矩阵-矢量(甚至矢量-矢量)乘法,这耗费很大,而且对应深度学习框架也要巨大的开销。这既适用于计算梯度以更新参数时,也适用于用神经网络预测。既,当执行 w ← w − η t g t \\mathbfw \\leftarrow \\mathbfw - \\eta_t \\mathbfg_t wwηtgt时,消耗巨大,其中:
      g t = ∂ w f ( x t , w ) . \\mathbfg_t = \\partial_\\mathbfw f(\\mathbfx_t, \\mathbfw). g深度学习结课总结和进阶学习 优化算法 动手学深度学习v2

      深度学习结课总结和进阶学习 优化算法 动手学深度学习v2

      深度学习优化算法总结

      [人工智能-深度学习-15]:神经网络基础 - 常见优化器Optimizer及其算法 - 梯度下降法系列

      深度学习优化算法大全系列1:概览

      使用Numpy进行深度学习中5大反向传播优化算法的性能比较