关于SGD收敛性的证明

最佳阅读体验
之前就对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=θ1s=1t1η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=1TL(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)=T1t=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=1TL(xt,θt)T1t=1TL(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=1TL(xt,θt)t=1TL(xt,θ)
被称为"regret"


lim ⁡ T → ∞ 1 T R ( T ) = 0 \lim_{T\rightarrow \infty}\frac{1}{T}R(T)=0 TlimT1R(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=1TL(xt,θt)t=1TL(xt,θ)=t=1T(L(xt,θt)L(xt,θ))t=1

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值