梯度下降法与最速下降(凸优化方法)

梯度下降法:

假设目标优化形式为:
a r g m i n x f ( x ) argmin_xf(x) argminxf(x)
即我们要求取函数 f ( x ) f(x) f(x)的最小值,那么根据梯度下降法,可以如下算法:
w h i l e ∣ ∣ ▽ f ( x k ) ∣ ∣ ≥ ϵ while||\bigtriangledown f(x_k)||\geq\epsilon whilef(xk)ϵ
    d k = − ▽ f ( x k ) d_k=-\bigtriangledown f(x_k) dk=f(xk)
     x k + 1 = x k + α d k x_{k+1}=x_k+\alpha d_k xk+1=xk+αdk
     k = k + 1 k=k+1 k=k+1
e n d end end
这里更新的方向是使用的梯度的反方向,因为梯度方向函数上升最快,所以其反向下降最快。在这里步长参数 α \alpha α尽量取小一点。
批量,随机梯度下降

最速下降法

最速下降法是梯度下降法的一种,它采用了当前“最好”的方向,和“最好”的步长因子。因为最好的方向就是梯度的反向,最好的步长因子满足 α k = a r g m i n α f ( x k + α d k ) \alpha_k=argmin_\alpha f(x_k+\alpha d_k) αk=argminαf(xk+αdk),这个式子的意思是,根据当前方向 d k d_k dk,我们的步长 α \alpha α要使 f ( x ) f(x) f(x)下降到当前方向的最小值,也就是将这个方向走完。
那么 α k \alpha_k αk怎么求呢?很简单就是求极值点的过程,因为根据梯度下降算法在上式中 x k x_k xk d k d_k dk是已知的,所以我们就直接对 f ( x k + α d k ) f(x_k+\alpha d_k) f(xk+αdk) α \alpha α的导数,就行。比如 f ( x ) = x 2 f(x)=x^2 f(x)=x2,则 d f ( x k + α d k ) d α = 0 \frac{d f(x_k+\alpha d_k)}{d\alpha}=0 dαdf(xk+αdk)=0解得 α = − x k d k \alpha=-\frac{x_k}{d_k} α=dkxk
理论上,最速下降法只需要n步就可以得到目标值,n表示向量空间维度。比如我们使用 f ( x ) = x 2 f(x)=x^2 f(x)=x2来计算 f ( x ) ′ = 2 x {f(x)'}=2x f(x)=2x x 1 = m x_1=m x1=m d 1 = − 2 m d_1=-2m d1=2m α 1 = − x k d k = m 2 m = 1 2 \alpha_1=-\frac{x_k}{d_k}=\frac{m}{2m}=\frac{1}{2} α1=dkxk=2mm=21 x 2 = m + 1 2 ( − 2 m ) = 0 x_2=m+\frac{1}{2}(-2m)=0 x2=m+21(2m)=0,由图像可知 f ( x ) = x 2 f(x)=x^2 f(x)=x2的最小值点就在x=0处,所以使用最速下降法我们只使用2步就在二维面上找到了最值点。但是这个最值点可能是局部最优值。,所以最速下降法算法如下:
w h i l e ∣ ∣ ▽ f ( x k ) ∣ ∣ ≥ ϵ while||\bigtriangledown f(x_k)||\geq\epsilon whilef(xk)ϵ
    d k = − ▽ f ( x k ) d_k=-\bigtriangledown f(x_k) dk=f(xk)
    α k = a r g m i n α f ( x k + α d k ) \alpha_k=argmin_\alpha f(x_k+\alpha d_k) αk=argminαf(xk+αdk)
     x k + 1 = x k + α k d k x_{k+1}=x_k+\alpha_k d_k xk+1=xk+αkdk
     k = k + 1 k=k+1 k=k+1
e n d end end

自己的理解:最速下降法使用的相邻下降方向是正交的。在最速下降法中,当次迭代的梯度方向也是和上次迭代梯度方向垂直,但和再之前的梯度方向就不垂直了,所以会有“之”形路线。然后,共轭梯度法要求的是关于矩阵正交,并非直接正交。这是因为每一步都将一个方向走到最优,对于n维空间,那么只需走n步,每一步走的方向都是一个维度。(注意每一步走的方向所代表的维度不一定与坐标轴平行(我们这里说的维度不是坐标轴,是该空间的任何基中的一个方向空间的维数是什么)。但是每个方向之间一定要正交,所以表现出来共轭梯度只需要n步)

最速下降法用于正定二次型

什么是二次型,正定二次型?
设有一个正定二次型: f ( x ) = 1 2 x T A x + b T x + c f(x)=\frac{1}{2}x^TAx+b^Tx+c f(x)=21xTAx+bTx+c
我们使用最速下降法来求其最小值:
m i n x 1 2 x T A x + b T x + c min_x\frac{1}{2}x^TAx+b^Tx+c minx21xTAx+bTx+c
其一阶导数是: g = A x + b g=Ax+b g=Ax+b使用最速下降法更新公式为:
x k + 1 = x k − α k g k x_{k+1}=x_k-\alpha_kg_k xk+1=xkαkgk
怎么求步长 α \alpha α呢?,由于最速下降法的连续两次搜索方向是正交的,即: g k + 1 T g k = 0 g_{k+1}^Tg_k=0 gk+1Tgk=0代入 g k + 1 = A x k + 1 + b = A ( x k − α k g k ) + b = A x k + b − A α k g k = g k − A α k g k g_{k+1}=Ax_{k+1}+b=A(x_k-\alpha_kg_k)+b=Ax_k+b-A\alpha_kg_k=g_k-A\alpha_kg_k gk+1=Axk+1+b=A(xkαkgk)+b=Axk+bAαkgk=gkAαkgk
得到 [ g k − α k A g k ] T g k = 0 [g_k-\alpha_kAg_k]^Tg_k=0 [gkαkAgk]Tgk=0
( g k T − α k g k T A T ) g k = 0 (g_k^T-\alpha_kg_k^TA^T)g_k=0 (gkTαkgkTAT)gk=0
解出 α k = g k T g k g k T A g k \alpha_k=\frac{g_k^Tg_k}{g_k^TAg_k} αk=gkTAgkgkTgk
所以最速下降法应用到正定二次型上的更新公式是:
x k + 1 = x k − g k T g k g k T A g k g k x_{k+1}=x_k-\frac{g_k^Tg_k}{g_k^TAg_k}g_k xk+1=xkgkTAgkgkTgkgk

你可能感兴趣的:(深度学习,机器学习,强化学习,梯度下降,最速下降,正定二次型)