梯度下降方法的收敛率是 O ( 1 / t ) O(1/t) O(1/t)。
本文首先介绍梯度下降算法的定义,之后解释收敛性的意义,并给出梯度下降算法收敛性详细证明过程1。
梯度下降算法
设系统参数为 x x x。对于样本 i i i,其代价函数为 f i ( x ) f_i(x) fi(x)。在n个样本组成的训练集上,其整体代价函数为:
f ( x ) = ∑ i = 1 n f i ( x ) f(x)=\sum_{i=1}^nf_i(x) f(x)=i=1∑nfi(x)
要求 ω \omega ω使得上式最小,由于没有闭式解,需要通过近似迭代逐步逼近。
梯度下降(Gradient Descent)以 η \eta η为学习率,在每次迭代中用一阶泰勒展开近似:
x t + 1 = x t − η ∇ f ( x ) x_{t+1}=x_t - \eta\nabla f(x) xt+1=xt−η∇f(x)
设 x x x的维度为D,代价函数 f f f是个标量,梯度 ∇ f ( x ) \nabla f(x) ∇f(x)也是一个D维向量。
序列的收敛性
基础定义
有序列 { x t } \{x_t\} {
xt},如果序号 t t t趋于无穷时,满足以下条件:
lim t → ∞ x t + 1 − x ∗ x t − x ∗ = μ \lim_{t\to \infty}\frac{x_{t+1}-x^*}{x_t-x^*}=\mu t→∞limxt−x∗xt+1−x∗=μ
则称该方法收敛到 x ∗ x^* x∗,收敛率为 μ \mu μ, μ ∈ ( 0 , 1 ) \mu\in(0,1) μ∈(0,1)。也称为以 μ \mu μ收敛到 x ∗ x^* x∗。
例:数列 1 , 1 / 2 , 1 / 4 , 1 / 8... {1,1/2,1/4,1/8...} 1,1/2,1/4,1/8...收敛到 L = 0 L=0 L=0,收敛率为 1 / 2 1/2 1/2。
扩展定义
还有一些序列也会随着序号趋于某个定值,但是收敛的速率随着下标发生变化。这里引入一个扩展的收敛率定义。
如果存在序列 { ϵ t } \{ \epsilon_t \} {
ϵt},根据基础收敛率定义,以收敛率 μ \mu μ收敛到0。
则如果序列 { x t } \{x_t\} {
xt}满足:
∣ x t − x ∗ ∣ < ϵ t |x_t-x^*|<\epsilon_t ∣xt−x∗∣<ϵt
称该方法收敛到 x ∗ x^* x∗,收敛率为 ϵ t \epsilon_t ϵt。
例:数列{1,1,1/4,1/4,1/16,1/16…}收敛到 L = 0 L=0 L=0,收敛率为 ϵ t = 1 2 t − 1 \epsilon_t=\frac{1}{2^{t-1}} ϵt=2t−11={2,1,1/2,1/4,1/8,1/16…}。
梯度下降的收敛性
当我们说“梯度下降的收敛性为 1 / t 1/t 1/t”时,我们指的是:
当 t t t趋于无穷时,代价函数 f ( x t ) f(x_t) f(xt)收敛到最优解 f ( x ∗ ) f(x^*) f(x∗),收敛率为 ϵ t = O ( 1 / t ) \epsilon_t=O(1/t) ϵt=O(1/t)。
引理
这部分为收敛性证明做准备,步骤较曲折,请关注大流程。
##Lipschitz连续
如果标量函数 f ( x ) f(x) f(x)满足如下条件,称其满足Lipschitz连续性条件。
∣ f ( x 1 ) − f ( x 2 ) ∣ ≤ L ∣ ∣ x 1 − x 2 ∣ ∣ |f(x_1)-f(x_2)| \leq L||x_1-x_2|| ∣f(x1)−f(x2)∣≤L∣∣x1−x2∣∣
其中 ∣ ∣ x ∣ ∣ ||x|| ∣∣x∣∣表示向量的模长, L L L称为Lipschitz常数。对于固定的 f f f, L L L是一个定值。
这个条件对函数值的变化做出了限制。
β \beta β平滑
进一步,如果函数 f ( x ) f(x) f(x)的梯度满足值为 β \beta β的Lipschitz连续,称函数 f ( x ) f(x) f(x)为 β \beta β平滑:
∣ ∣ ∇ f ( x ) − ∇ f ( y ) ∣ ∣ 2 ≤ β ∣ ∣ x − y ∣ ∣ 2 ||\nabla f(x)- \nabla f(y)||^2\leq \beta ||x-y||^2 ∣∣∇f(x)−∇f(y)∣∣2≤β∣∣x−y∣∣2
其中 ∣ ∣ x ∣ ∣ 2 = x T x ||x||^2=x^Tx ∣∣x∣∣2=xTx。这个条件对函数梯度的变化进行了约束:梯度之差的模长,不会超过自变量之差模长的常数倍。
β \beta β平滑性质1
满足 β \beta β平滑的函数有如下性质:
∣ f ( x ) − f ( y ) − ∇ f ( y ) T ( x − y ) ∣ ≤ β 2 ∣ ∣ x − y ∣ ∣ 2 |f(x)-f(y)-\nabla f(y)^T(x-y) | \leq \frac{\beta}{2}||x-y||^2 ∣f(x)−f(y)−∇f(y)T(x−y)∣≤2β∣∣x−y∣∣2
证明如下:
构造一个插值函数 g ( t ) = f ( y + t ( x − y ) ) g(t)=f(y+t(x-y)) g(t)=f(y+t(x−y)),其关于 t t t的导数:
g ′ ( t ) = ∇ f ( y + t ( x − y ) ) T ( x − y ) g'(t)=\nabla f(y+t(x-y))^T(x-y) g′(t)=∇f(y+t(x−y))T(x−y)
可以把函数值之差转化为积分:
f ( x ) − f ( y ) = g ( 1 ) − g ( 0 ) = ∫ 0 1 g ′ ( t ) d t = ∫ 0 1 ∇ f ( y + t ( x − y ) ) T ( x − y ) d t f(x)-f(y)=g(1)-g(0)=\int_0^1g'(t)\,dt=\int_0^1\nabla f(y+t(x-y))^T(x-y)\,dt f(x)−f(y)=g(1)−g(0)=∫01g′(t)dt=∫01∇f(y+t(x−y))T(x−y)dt
代入左侧:
l e f t = ∣ ∫ 0 1 . . . d t − ∇ f ( y ) T ( x − y ) ∣ left = |\int_0^1...\,dt-\nabla f(y)^T(x-y)| left=∣∫01...dt−∇f(y)T(x−y)∣
第二项是和 t t t无关的常数,可以直接写入[0,1]的积分中:
l e f t = ∣ ∫ 0 1 . . . d t − ∫ 0 1 ∇ f ( y ) T ( x − y ) d t ∣ left = |\int_0^1...\,dt-\int_0^1\nabla f(y)^T(x-y)\,dt| left=∣∫01...dt−∫01∇f(y)T(x−y)dt∣
两个积分号合并:
l e f t = ∣ ∫ 0