深度学习优化算法总结
Posted 晴空^_^
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深度学习优化算法总结相关的知识,希望对你有一定的参考价值。
深度学习的优化算法
-
优化的目标
优化提供了一种最大程度减少深度学习损失函数的方法,但本质上,优化和深度学习的目标不同。
优化关注的是最小化目标;深度学习是在给定有限数据量的情况下寻找合适的模型。
-
优化算法
-
gradient descent(梯度下降)
考虑一类连续可微实值函数 f : R → R f:\\mathbbR \\rightarrow \\mathbbR f:R→R,利用泰勒展开,可以得到:
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) x←x−η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 η叫做学习率,是超参数,其决定目标函数能否收敛到局部最小值,以及何时收敛到最小值。
-
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=1∑nfi(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=1∑n∇fi(X)
如果采用梯度下降法,每个自变量迭代的计算代价为 O ( n ) O(n) O(n),其随 n n n线性增长,因此,当训练数据集规模较大时,每次迭代的梯度下降的计算代价将更高。SGD可降低每次迭代时的计算代价。在随机梯度下降的每次迭代中,对数据样本随机均匀采样一个索引 i i i,其中 i ∈ 1 , . . . , n i \\in \\ 1,...,n \\ i∈1,...,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) x←x−η∇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) E∇fi(X)=n1i=1∑n∇fi(X)=∇f(X)
这意味着,平均而言,随机梯度是对梯度的良好估计。 -
minibatch-SGD(小批量随机梯度下降)
处理单个观测值需要我们执行许多单一矩阵-矢量(甚至矢量-矢量)乘法,这耗费很大,而且对应深度学习框架也要巨大的开销。这既适用于计算梯度以更新参数时,也适用于用神经网络预测。既,当执行 w ← w − η t g t \\mathbfw \\leftarrow \\mathbfw - \\eta_t \\mathbfg_t w←w−ηtgt时,消耗巨大,其中:
g t = ∂ w f ( x t , w ) . \\mathbfg_t = \\partial_\\mathbfw f(\\mathbfx_t, \\mathbfw). g深度学习结课总结和进阶学习 优化算法 动手学深度学习v2
-