随机梯度下降

随机梯度下降(Stochastic Gradient Descent, SGD)是随机和优化相结合的产物,是一种很神奇的优化方法,属于梯度下降的一种,适用于大规模的问题 。
要想扯清楚它,还得先谈谈梯度下降。
众所周知,每个优化问题会有一个目标函数 f(w)
梯度下降就是采用迭代的策略,
从初始点 w1 开始,
每次沿着目标函数在当前点的负梯度方向前进一定的步长,即

wt+1=wtηtf(wt)

只要步长 ηt 设置合理,
这样可以得到一个单调递减的序列 {f(w1),,f(wt),}
直至最终不再下降,即可得到最优解 w
对于一般优化问题,梯度下降可以找到局部最优解,对于凸优化问题,梯度下降可以得到全局最优解,下面我们只考虑凸优化问题。
考虑如下的目标函数

f(w)=i=1nf(w,xi)

其中 xi 是与 w 无关的常向量。
n 为很大的正整数时,例如几十万甚至几百万时,计算梯度:

f(w)=i=1nfi(w,xi)

代价很大,那么这个方法就行不通了。
但是这样的问题在机器学习领域又很常见,比如感知机(Perceptron),支持向量机(Support Vector Machine, SVM),套索(Least Absolute Shrinkage and Selection Operator, LASSO)等算法都可以写成如下的形式:

λΩ(w)+1ni=1nL(w,xi)

其中 Ω(w) 是关于 w 的凸正则化项,
L(w,xi) 是关于 w 的凸损失函数。
因此我们需要克服梯度下降计算开销太大的问题,那么,随机梯度下降就呼之欲出了。

随机梯度下降的基本想法很简单,就是不直接计算梯度的精确值,而是用梯度的无偏估计 g(w) 来代替梯度,即

wt+1=wtηtg(wt)

其中 E[g(wt) | wt]=f(wt)

那么肯定有人要问,这么简单,靠不靠谱啊?
可以证明的是在某些条件下,这样得到的序列
{f(w1),,f(wt),}
中的最小值依期望收敛 到 f(w)
具体来说,设

ηt0, t=1η2t=||η||22<, t=1ηt=

其中 η=[η1,η2,] 是无穷维向量,
并假设存在常数 G R满足,
对于任意 t E[||g(wt)||22]G2 E[||w1w||22]R2
并记 fbest(t)=min{f(w1),,f(wt)}
那么当 t 时, E[fbest(t)]f(w)

结合条件期望的性质和 f 的凸性知

E[||wt+1w||22 | wt]=E[||wtηtg(wt)w||22 | wt]=E[||wtw||22 | wt]2ηtE[g(wt)(wtw) | wt]+η2tE[g(wt)2 | wt]=||wtw||222ηtE[g(wt) | wt](wtw)+η2tE[g(wt)2 | wt]=||wtw||222ηtf(wt)(wtw)+η2tE[g(wt)2 | wt]||wtw||222ηt(f(wt)f(w))+η2tE[g(wt)2 | wt]

两边同时对 wt 取期望,由重期望公式知

E[||wt+1w||22]E[||wtw||22]2ηt(E[f(wt)]f(w))+η2tG2

重复利用该式可得

E[||wt+1w||22]E[||w1w||22]2j=1tηj(E[f(wj)]f(w))+G2j=1tη2j

注意 E[||wt+1w||22]0
E[||w1w||22]R2 以及 tj=1η2j||η||22
于是

2j=1tηj(E[f(wj)]f(w))R2+G2||η||22

结合 E[fbest(t)]E[f(wj)] 可知

E[fbest(t)]f(w)R2+G2||η||222tj=1ηj

由于 t=1ηt= ,故当 t 时有 E[fbest(t)]f(w)

此外,由Markov不等式知对于 ϵ>0

P(fbest(t)f(w)ϵ)E[fbest(t)f(w)]ϵR2+G2||η||222ϵtj=1ηj

即当 t 时有 P(fbest(t)f(w)ϵ)0

下面举几个机器学习里的具体例子,设训练集 S n个样本,
S={(x1,y1),(x2,y2),,(xn,yn)}
由于有

Exi[L(w,xi)]=i=1n1nL(w,xi)=(1ni=1nL(w,xi))

成立,于是一个很直观的想法就是每次更新只随机选取一个样本 xi 来计算梯度。

感知机:感知机可形式化成如下的优化问题

minw   1ni=1nmax{0,yiwxi}

那么对应的更新公式为

wt+1=wt+ηt{ytxt0ytwxt<0otherwise

支持向量机:支持向量机可形式化成如下的优化问题

minw   λ2||w||22+1ni=1nmax{0,1yiwxi}

那么对应的更新公式为

wt+1=wtηt{λwtytxtλwtytwxt<1otherwise

套索:套索可形式化成如下的优化问题

minw   λ||w||1+1ni=1n12(wxiyi)2

w=uv
u0,v0 e 为全 1 向量,
优化问题可重写为

minu,v   λue+λve+1ni=1n12(uxivxiyi)2

那么对应的更新公式为

ut+1vt+1=max{0,utηt(utηt(λe+(wxtyt)xt))}=max{0,vtηt(vtηt(λe(wxtyt)xt))}

最后再提一个小技巧,以支持向量机为例,它的更新公式为

wt+1=(1ληt)wt+{ytxt0ytwxt<1otherwise

x 维度很高而非零元素很少时, +ytxt 可以很高效地算出来,
但是第一项 (1ληt)wt 的计算代价就有点高了,
因为 w 一般来说不是稀疏的,一个小技巧就是做个变量代换

wt=utαt

其中 αt 是标量,于是原来的更新式可以转化为如下只涉及标量计算和稀疏向量操作的更新过程

αt+1ut+1=αt1ληt=ut+{αt+1ytxt0ytwxt<1otherwise

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值