梯度下降法
1、选择初始值
x0和步长
η
2、循环从1…n:
xi+1=xi+η∇f(x)
这个就是典型的梯度下降法,也就是不断的循环,直到x收敛,找到最优的
x,那么迭代多少次才能收敛呢?
今天咱们就分析一下
梯度下降法的收敛分析
梯度下降法的收敛分析,我们常用的定理就是:
假设函数满足L-Lipscthitz条件,并且函数是凸函数 ,设定:
x∗=argmaxf(x)那么对于步长
nt≤L1:
f(xk)≤f(x∗)+2ηtk∣∣x0−x∗∣∣2
公式中L表示一个常数,
k表示迭代的次数,
x∗表示最优解,也就是随着迭代次数的增加,
2ηtk∣∣x0−x∗∣∣2越小表示我们的解也就越接近最优解,比如:第一次迭代
f(x1)≤f(x∗)+20,第23次迭代:
f(x23)≤f(x∗)+0.1我们从公式中可以看出
f(x23)要比
f(x1)要更加接近
f(x∗)
并且如果
k=ε∣∣x0−x∗∣∣2 且
(ηt=L1)我们可以得到在k次迭代后获得的解与最优解的差距为
ε
为什么是这样呢?大家有没有考虑过这个问题?所以今天我们就证明一下这个定理:
先来证明:
k=ε∣∣x0−x∗∣∣2 且
(ηt=L1)我们可以得到在k次迭代后获得的解与最优解的差距为
ε
扫描二维码关注公众号,回复:
9643473 查看本文章
首先我们可以看到在公式中:
f(xk)≤f(x∗)+2ηtk∣∣x0−x∗∣∣2
只有k是变化的,将
k=εL∣∣x0−x∗∣∣2 和
(ηt=L1)代入公式中:
2ηtk∣∣x0−x∗∣∣2=2L1εL∣∣x0−x∗∣∣2∣∣x0−x∗∣∣2=2ε
也就是
f(xk)≤f(x∗)+2ε
所以我们可以用
ε来表示与最优解之间的差异。
下一步证明:
f(xk)≤f(x∗)+2ηtk∣∣x0−x∗∣∣2
在证明这个公式之前我们要明白L-Lipschitz定理:
L-Lipschitz定理分析
定理一
若一个光滑的函数满足L-Lipschitz,对于任意x,y我们:
∣∣∇f(x)−∇f(y)∣∣≤L∣∣x−y∣∣
举个例子:
线性回归的目标函数:
n1∣∣xw−y∣∣2
那么
∣∣∇f(w1)−∇f(w2)∣∣=n2∣∣xT(xw1−y)−xT(xw2−y)∣∣=n2∣∣xTx(w1−w2)∣∣≤n2∣∣xTx∣∣⋅∣∣(w1−w2)∣∣
我们可以清楚的看出
n2∣∣xTx∣∣为L
定理二
若一个光滑的函数满足L-Lipschitz,并且是凸函数,对于任意x,y
∈Rd我们有:
f(y)≤f(x)+∇f(x)(y−x)+21∣∣y−x∣∣2
证明:
h(x):h(1)=h(0)+∫01h‘(z)dz
现在我们令:
h(z)=f(x+z(y−x))
那么
h(1)=f(y),h(0)=f(x)
f(y)=f(x)+∫01∇f(x+z(y−x))⋅(y−x)dz
=f(x)+∇f(x)(y−x)+∫01(∇f(x+z(y−x))−∇f(x))(y−x)dz
根据定理一得:
≤f(x)+∇f(x)(y−x)+∫01L∣∣z(y−x)∣∣(y−x)dz
≤f(x)+∇f(x)(y−x)+2L∣∣y−x∣∣2
也就是:
f(y)=≤f(x)+∇f(x)(y−x)+2L∣∣y−x∣∣2
证明完毕
收敛证明
由定理二我们可以得到:
f(xi+1)≤f(xi)+∇f(xi)(xi+1−xi)+2L∣∣xi+1−xi∣∣2
根据梯度下降法我们可以知道
xi+1=xi−η∇f(xi)所以上式为:
=f(xi)+∇f(xi)(−1)(η∇f(xi))+2Lη2⋅∇f2(xi)
=f(xi)−η∇f2(xi)+2Lη2⋅∇f2(xi)
=f(xi)−η(1−2Lη)⋅∇f2(xi)
≤f(xi)−2η⋅∇f2(xi)
上面主要是利用了
η≤L1
继续推:
≤f(x∗)+∇f(xi)(xi−x∗)−2η∣∣∇f(xi)∣∣2
=f(x∗)+ηxi−xi+1(xi−x∗)−2η∣∣ηxi−xi+1∣∣2
还是利用了:
xi+1=xi−η∇f(xi)
将上式展开再合并我们得到:
=f(x∗)+2η1(xi−x∗)2−2η1(∣∣xi−x∗∣∣2−2η∇f(xi)(xi−x∗)+∣∣η∇f(xi)∣∣2)
=f(x∗)+2η1(xi−x∗)2−2η1(∣∣xi−x∗∣∣−∣∣η∇f(xi)∣∣)2
再利用:
xi−xi+1=η∇f(xi)化简得:
=f(x∗)+2η1(∣∣xi−x∗∣∣2−∣∣xi+1−x∗∣∣2)
所以总结一下为:
f(xi+1)≤f(x∗)+2η1(∣∣xi−x∗∣∣2−∣∣xi+1−x∗∣∣2)
转换一下:
f(xi+1)−f(x∗)≤2η1(∣∣xi−x∗∣∣2−∣∣xi+1−x∗∣∣2)
将每一次迭代使用公式展开得:
f(x1)−f(x∗)≤2η1(∣∣x0−x∗∣∣2−∣∣x1−x∗∣∣2)
f(x2)−f(x∗)≤2η1(∣∣x1−x∗∣∣2−∣∣x2−x∗∣∣2)
f(x3)−f(x∗)≤2η1(∣∣x2−x∗∣∣2−∣∣x3−x∗∣∣2)
...
f(xk)−f(x∗)≤2η1(∣∣xk−1−x∗∣∣2−∣∣xk−x∗∣∣2)
细心地同学可以看到我们下一步就是将上式相加得出:
∑i=1kf(xi)−kf(x∗)≤2η1(∣∣x0−x∗∣∣2−∣∣xk−x∗∣∣2)
在简化一下:
∑i=1kf(xi)−kf(x∗)≤2η1∣∣x0−x∗∣∣2
刚才我们在上面计算出了:
f(xi+1)≤f(xi)−2η⋅∇f2(xi)
可以清楚的看到
2η⋅∇f2(xi)是大于0的所以:
f(xi+1)≤f(xi)
也就是更新后的值一定会优于更新前的值(标准的梯度下降法)
也就是:
f(xk)≤f(xk−1)≤...≤f(2)≤f(1)
因此我们把公式由:
∑i=1kf(xi)−kf(x∗)≤2η1∣∣x0−x∗∣∣2转换成:
kf(xk)−kf(x∗)≤2η1∣∣x0−x∗∣∣2
最终:
f(xk)−f(x∗)≤2ηk∣∣x0−x∗∣∣2
证明完毕