最佳阅读体验
之前就对sgd的看似无脑的贪心策略感到十分新奇,为什么每次随机用一个子集的梯度来更新就可以近似整体的梯度? 正好最近重新实现了一遍sgd,就顺便补一下它的理论证明。
准备工作
不妨假设我们模型的损失函数为 L ( x , θ ) L(x,\theta) L(x,θ),其中 x x x是训练数据, θ ∈ R d \theta\in R^d θ∈Rd是模型参数,一般来说我们优化的目标是找到最优的 θ ∗ \theta^* θ∗使得 L ( x , θ ∗ ) L(x,\theta^*) L(x,θ∗)最小,也就是
θ ∗ = a r g m i n θ ∈ R d L ( x , θ ) \theta^* = argmin_{\theta\in R^d} L(x,\theta) θ∗=argminθ∈RdL(x,θ)
随机梯度下降(SGD)的策略是每次随机取数据 x x x的一个子集,我们不妨将第 t t t次取出的子集记为 x t x^t xt,那么更新方式为
θ t + 1 = θ t − η t g ( x t , θ t ) \theta^{t+1} = \theta^t - \eta^tg(x^t,\theta^t) θt+1=θt−ηtg(xt,θt)
其中 η t \eta^t ηt表示第 t t t次更新的学习率, g ( x t , θ t ) = ∇ θ L ( x t , θ ) g(x^t,\theta^t) = \nabla_\theta L(x^t,\theta) g(xt,θt)=∇θL(xt,θ)表示损失函数关于参数 θ \theta θ的梯度。
我们当然可以直接写出 θ t \theta^t θt的通项为
θ t = θ 1 − ∑ s = 1 t − 1 η s g ( x s , θ s ) \theta^t = \theta^1-\sum_{s=1}^{t-1} \eta^sg(x^s,\theta^s) θt=θ1−s=1∑t−1ηsg(xs,θs)
当然这么看的话似乎很难说明参数 θ \theta θ会收敛,更别说收敛到 θ ∗ \theta^* θ∗了。所以我们尝试制定一个评价指标。
那么我们要如何评价这个策略?一个比较合理的目标是最小化
L ( T ) = 1 T ∑ t = 1 T L ( x t , θ t ) L(T) = \frac{1}{T}\sum_{t=1}^{T}L(x^t,\theta^t) L(T)=T1t=1∑TL(xt,θt)
其中 T T T表示我们的迭代总轮数
又注意到 L ( T ) L(T) L(T)的最小值我们可以表示为 L ( T ) ′ = 1 T ∑ t = 1 T L ( x t , θ ∗ ) L(T)' = \frac{1}{T}\sum_{t=1}^{T}L(x^t,\theta^*) L(T)′=T1∑t=1TL(xt,θ∗)
那么我们的评价指标可以选择为
1 T ∑ t = 1 T L ( x t , θ t ) − 1 T ∑ t = 1 T L ( x t , θ ∗ ) = 1 T R ( T ) ( 1 ) \frac{1}{T}\sum_{t=1}^{T}L(x^t,\theta^t)-\frac{1}{T}\sum_{t=1}^{T}L(x^t,\theta^*)=\frac{1}{T}R(T)\ \ \ \ \ \ (1) T1t=1∑TL(xt,θt)−T1t=1∑TL(xt,θ∗)=T1R(T) (1)
其中
R ( T ) = ∑ t = 1 T L ( x t , θ t ) − ∑ t = 1 T L ( x t , θ ∗ ) R(T)=\sum_{t=1}^{T}L(x^t,\theta^t)-\sum_{t=1}^{T}L(x^t,\theta^*) R(T)=t=1∑TL(xt,θt)−t=1∑TL(xt,θ∗)
被称为"regret"
当
lim T → ∞ 1 T R ( T ) = 0 \lim_{T\rightarrow \infty}\frac{1}{T}R(T)=0 T→∞limT1R(T)=0
时,我们就可以说这个策略确实是收敛的,参数 θ → θ ∗ \theta\rightarrow \theta^* θ→θ∗,也就是说,它不仅收敛,而且收敛于最优参数 θ ∗ \theta^* θ∗
证明过程
现在我们考虑对 ( 1 ) (1) (1)式的收敛性进行证明。不过在此之前,我们需要假设对于任意的 t , x t t,x^t t,xt,损失函数 L ( x t , θ ) L(x^t,\theta) L(xt,θ)都是关于 θ \theta θ的convex函数,也就是说, ∀ θ i , θ j \forall \theta^i,\theta^j ∀θi,θj,都有
L ( x t , θ i ) − L ( x t , θ j ) ≥ ( θ i − θ j ) ⋅ g ( x t , θ j ) ( 2 ) L(x^t,\theta^i)-L(x^t,\theta^j)\geq (\theta^i-\theta^j)\cdot g(x^t,\theta^j)\ \ \ \ \ (2) L(xt,θi)−L(xt,θj)≥(θi−θj)⋅g(xt,θj) (2)
其中 ⋅ \cdot ⋅表示向量内积
现在我们就可以正式开始证明了!
想要证明 ( 1 ) (1) (1)式收敛于0,一个常见的办法就是为其找一个关于 T T T的上界 f ( T ) f(T) f(T),如果 f ( T ) → 0 , T → ∞ f(T)\rightarrow 0,T\rightarrow \infty f(T)→0,T→∞的话,结论就得证了。
利用 ( 2 ) (2) (2)式,我们现在就能为 R ( T ) R(T) R(T)找一个上界
R ( T ) = ∑ t = 1 T L ( x t , θ t ) − ∑ t = 1 T L ( x t , θ ∗ ) = ∑ t = 1 T ( L ( x t , θ t ) − L ( x t , θ ∗ ) ) ≤ ∑ t = 1 T ( θ t − θ ∗ ) ⋅ g ( x t , θ t ) R(T)=\sum_{t=1}^{T}L(x^t,\theta^t)-\sum_{t=1}^{T}L(x^t,\theta^*)\\ =\sum_{t=1}^{T}(L(x^t,\theta^t)-L(x^t,\theta^*))\\ \leq \sum_{t=1}^{T}(\theta^t-\theta^*)\cdot g(x^t,\theta^t) R(T)=t=1∑TL(xt,θt)−t=1∑TL(xt,θ∗)=t=1∑T(L(xt,θt)−L(xt,θ∗))≤t=1


5111

被折叠的 条评论
为什么被折叠?



