最速下降法实为最陡下降法,收敛性质类似于梯度下降法。
定义一个和 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)v∣∣∥v∥=1}={Exact line searchInexact line search
当 v v v的模取 1 , 2 , ∞ 1,2,\infty 1,2,∞时,就有了最速下降法的三种形式。
此时 v v v为负梯度方向,类似于梯度下降法。j就是一个模为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)沿坐标轴分解后,下降最快的方向,也就是最陡下降法。
此时 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 ∥v∥1=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是取模运算,用于轮转方向。
这个方法的特点是局部函数值不一定下降,但总体是收敛的。
一般形式:
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)很复杂,但分开优化很简单的情况。
最速下降法可以说也是很经典很简单的方法了,坐标轮换法虽然简单,但鲁棒性较低,如果任务不复杂的情况下可以使用。