给定一个可微的凸函数,如果在某一点x,使得f(x)在每一个坐标轴上都是最小值,那么f(x)是一个全局的最小值。如果f(x)不可微,则不满足。
同理:对所有的,其中g是可微的凸函数,每一个hi都是凸的,我们可以使用坐标下降寻求一个最小值。
一 综述
坐标下降法属于一种非梯度优化的方法,它在每步迭代中沿一个坐标的方向进行搜索,通过循环使用不同的坐标方法来达到目标函数的局部极小值。
二 算法过程
假设目标函数是求解f(x)f(x)的极小值,其中x=(x1,x2,…,xn)x=(x1,x2,…,xn)是一个n维的向量,我们从初始点x0x0开始(x0x0是我们猜想的一个初值)对k进行循环:
相当于每次迭代都只是更新xx的一个维度,即把该维度当做变量,剩下的n-1个维度当作常量,通过最小化f(x)f(x)来找到该维度对应的新的值。坐标下降法就是通过迭代地构造序列x0,x1,x2,…x0,x1,x2,…来求解问题,即最终点收敛到期望的局部极小值点。通过上述操作,显然有:
f(x0)≥f(x1)≥f(x2)≥…f(x0)≥f(x1)≥f(x2)≥…
=========================================================================
证明如下:
当k=0k=0时,对应的f(x)f(x)的值为f(x0)=f(x01,x02,…,x0n)f(x0)=f(x10,x20,…,xn0)
由于x11=argminf(x1,x02,…,x0n)x11=argminf(x1,x20,…,xn0),所以f(x11,x02,…,x0n)≤f(x01,x02,…,x0n)=f(x0)f(x11,x20,…,xn0)≤f(x10,x20,…,xn0)=f(x0),以此类推
所以f(x11,x12,…,x0n)≤f(x11,x02,…,x0n)≤f(x01,x02,…,x0n)=f(x0)f(x11,x21,…,xn0)≤f(x11,x20,…,xn0)≤f(x10,x20,…,xn0)=f(x0)
所以f(x1)=f(x11,x12,…,x1n)≤…f(x11,x12,…,x0n)≤f(x11,x02,…,x0n)≤f(x01,x02,…,x0n)=f(x0)f(x1)=f(x11,x21,…,xn1)≤…f(x11,x21,…,xn0)≤f(x11,x20,…,xn0)≤f(x10,x20,…,xn0)=f(x0)
同理可得f(x2)≤f(x1)≤f(x0)f(x2)≤f(x1)≤f(x0),命题得证。
======================================================================
相比梯度下降法而言,坐标下降法不需要计算目标函数的梯度,在每步迭代中仅需求解一维搜索问题,所以对于某些复杂的问题计算较为简便。但如果目标函数不光滑的话,坐标下降法可能会陷入非驻点。
三 注意事项
关于坐标下降法,有几点需要注意的:
1.坐标下降的顺序是任意的,不一定非得按照从x1…xnx1…xn的顺序来,可以是从1到n的任意排列。
2.坐标下降的关键在于一次一个地更新,所有的一起更新有可能会导致不收敛。
3.坐标上升法和坐标下降法的本质一样,只不过目标函数成为求f(x)f(x)的极大值了,每次迭代过程minmin变成maxmax了。