凸优化学习-(二十五)无约束优化算法——最速下降法

凸优化学习

最速下降法实为最陡下降法,收敛性质类似于梯度下降法。

学习笔记

一、最速下降法

定义一个和 x k x^k xk同维度的向量 v v v,那么有:
min ⁡ x f ( x ) ⇔ Repeat min ⁡ v f ( x k + v ) \min_xf(x)\Leftrightarrow\text{Repeat}\min_vf(x^k+v) xminf(x)Repeatvminf(xk+v)
就是一个全局分解为每一步,我们都要寻找一个向量 v v v使得 x k + v x^k+v xk+v也就是 x k + 1 x^{k+1} xk+1最小。我们对 f ( x k + v ) f(x^k+v) f(xk+v)泰勒展开,同时可以求得方向 d k d^k dk,得到最速下降法:
d k = arg ⁡ min ⁡ v { f ( x k ) + ∇ f T ( x k ) v ∣ ∥ v ∥ = 1 } α k = { Exact line search Inexact line search \begin{aligned} d^k&=\arg\min_v\lbrace f(x^k)+\nabla f^T(x^k)v\big|\|v\|=1\rbrace\\ \alpha^k&=\begin{cases} \text{Exact line search}\\ \text{Inexact line search} \end{cases} \end{aligned} dkαk=argvmin{f(xk)+fT(xk)vv=1}={Exact line searchInexact line search
v v v的模取 1 , 2 , ∞ 1,2,\infty 1,2,时,就有了最速下降法的三种形式。

1. d k = arg ⁡ min ⁡ { ∇ f T ( x ) v ∣ ∥ v ∥ 2 = 1 } d^k=\arg\min\lbrace\nabla f^T(x)v\big|\|v\|_2=1\rbrace dk=argmin{fT(x)vv2=1}

此时 v v v为负梯度方向,类似于梯度下降法。j就是一个模为1的方向。

2. d k = arg ⁡ min ⁡ { ∇ f T ( x ) v ∣ ∥ v ∥ 1 = 1 } d^k=\arg\min\lbrace\nabla f^T(x)v\big|\|v\|_1=1\rbrace dk=argmin{fT(x)vv1=1}

此时 v v v的分量绝对值之和为1,那么使 ∇ f T ( x ) v \nabla f^T(x)v fT(x)v最小的 v v v就是除了 ∇ f T ( x ) \nabla f^T(x) fT(x)某个绝对值最大分量对应的一项绝对值为1、符号与 ∇ f T ( x ) \nabla f^T(x) fT(x)该项相反外,其余为零的 v v v。也就是说,在这个方式下,函数是沿着某个坐标轴方向下降的(其它坐标轴对应的分量都为0),这个方向是 ∇ f T ( x ) \nabla f^T(x) fT(x)沿坐标轴分解后,下降最快的方向,也就是最陡下降法。

3. d k = arg ⁡ min ⁡ { ∇ f T ( x ) v ∣ ∥ v ∥ ∞ = 1 } d^k=\arg\min\lbrace\nabla f^T(x)v\big|\|v\|_{\infty}=1\rbrace dk=argmin{fT(x)vv=1}

此时 v v v的绝对值最大的分量为1,那么,此时 v v v的取值就是当 ∇ f ( x ) \nabla f(x) f(x)在某坐标轴方向为正值,对应 v v v的分量为 − 1 -1 1,反之亦然。

二、最速下降法的变种(坐标轮换法)

由于算梯度是一件比较有困难的事情,那么在 ∥ v ∥ 1 = 1 \|v\|_1=1 v1=1时,反正你都是沿着某个坐标轴方向下降,那不如我几个坐标轴轮着试试。有:
d k = e mod ( k , n ) d^k=e\text{mod}(k,n) dk=emod(k,n)
其中 e e e为单位向量,就是某个分量为1其余为0, mod \text{mod} mod是取模运算,用于轮转方向。

这个方法的特点是局部函数值不一定下降,但总体是收敛的。
一般形式:

Block Coordinate Descent(分块坐标轮换法)

min ⁡ f ( x , y ) ⇔ { x k + 1 = arg ⁡ min ⁡ x f ( x , y k ) y k + 1 = arg ⁡ min ⁡ y f ( x k , y ) \min f(x,y)\Leftrightarrow\begin{cases} x^{k+1}=\arg\min\limits_{x}f(x,y^k)\\ y^{k+1}=\arg\min\limits_{y}f(x^k,y) \end{cases} minf(x,y)xk+1=argxminf(x,yk)yk+1=argyminf(xk,y)
即固定 x , y x,y x,y中的一个,沿着另一个方向优化,适用于 f ( x , y ) f(x,y) f(x,y)很复杂,但分开优化很简单的情况。

个人思考

最速下降法可以说也是很经典很简单的方法了,坐标轮换法虽然简单,但鲁棒性较低,如果任务不复杂的情况下可以使用。

纸质笔记

凸优化学习-(二十五)无约束优化算法——最速下降法_第1张图片
凸优化学习-(二十五)无约束优化算法——最速下降法_第2张图片

你可能感兴趣的:(#,凸优化)