一 綜述
坐標下降法屬於一種非梯度優化的方法,它在每步迭代中沿一個坐標的方向進行搜索,通過循環使用不同的坐標方法來達到目標函數的局部極小值。
二 算法過程
假設目標函數是求解$f(x)$的極小值,其中$x=(x_1,x_2,\ldots,x_n)$是一個n維的向量,我們從初始點$x^0$開始($x^0$是我們猜想的一個初值)對k進行循環:
相當於每次迭代都只是更新$x$的一個維度,即把該維度當做變量,剩下的n-1個維度當作常量,通過最小化$f(x)$來找到該維度對應的新的值。坐標下降法就是通過迭代地構造序列$x^0,x^1,x^2,\ldots$來求解問題,即最終點收斂到期望的局部極小值點。通過上述操作,顯然有:
$$f(x^0)\geq f(x^1)\geq f(x^2)\geq\ldots$$
=========================================================================
證明如下:
當$k=0$時,對應的$f(x)$的值為$f(x^0)=f(x_1^0,x_2^0,\ldots,x_n^0)$
由於$x_1^1=arg\min f(x_1,x_2^0,\ldots,x_n^0)$,所以$f(x_1^1,x_2^0,\ldots,x_n^0)\leq f(x_1^0,x_2^0,\ldots,x_n^0) = f(x^0)$,以此類推
所以$f(x_1^1,x_2^1,\ldots,x_n^0)\leq f(x_1^1,x_2^0,\ldots,x_n^0)\leq f(x_1^0,x_2^0,\ldots,x_n^0) = f(x^0)$
所以$f(x^1) =f(x_1^1,x_2^1,\ldots,x_n^1)\leq\ldots f(x_1^1,x_2^1,\ldots,x_n^0)\leq f(x_1^1,x_2^0,\ldots,x_n^0)\leq f(x_1^0,x_2^0,\ldots,x_n^0) = f(x^0)$
同理可得$f(x^2)\leq f(x^1)\leq f(x^0)$,命題得證。
======================================================================
相比梯度下降法而言,坐標下降法不需要計算目標函數的梯度,在每步迭代中僅需求解一維搜索問題,所以對於某些復雜的問題計算較為簡便。但如果目標函數不光滑的話,坐標下降法可能會陷入非駐點。
三 注意事項
關於坐標下降法,有幾點需要注意的:
1.坐標下降的順序是任意的,不一定非得按照從$x^1\ldots x^n$的順序來,可以是從1到n的任意排列。
2.坐標下降的關鍵在於一次一個地更新,所有的一起更新有可能會導致不收斂。
3.坐標上升法和坐標下降法的本質一樣,只不過目標函數成為求$f(x)$的極大值了,每次迭代過程$min$變成$max$了。
參考:https://blog.csdn.net/u013802188/article/details/40476989/
https://blog.csdn.net/yMMxz/article/details/69396222