坐标下降法

来自testwiki
跳转到导航 跳转到搜索

坐标下降法Template:Lang-en)是一种非梯度优化算法。算法在每次迭代中,在当前点处沿一个坐标方向进行Template:Link-en以求得一个函数的局部极小值。在整个过程中循环使用不同的坐标方向。对于不可拆分的函数而言,算法可能无法在较小的迭代步数中求得最优解。为了加速收敛,可以采用一个适当的坐标系,例如通过主成分分析获得一个坐标间尽可能不相互关联的新坐标系(参考Template:Link-en)。

算法描述

坐标下降法基于的思想是多变量函数F(𝐱)可以通过每次沿一个方向优化来获取最小值。与通过梯度获取最速下降的方向不同,在坐标下降法中,优化方向从算法一开始就予以固定。例如,可以选择线性空间的一组𝐞1,𝐞2,,𝐞n作为搜索方向。 在算法中,循环最小化各个坐标方向上的目标函数值。亦即,如果𝐱k已给定,那么,𝐱k+1的第i个维度为

𝐱ik+1=argminyf(x1k+1,...,xi1k+1,y,xi+1k,...,xnk);

因而,从一个初始的猜测值𝐱0以求得函数F的局部最优值,可以迭代获得𝐱0,𝐱1,𝐱2,的序列。

通过在每一次迭代中采用Template:Link-en,可以很自然地获得不等式

F(𝐱0)F(𝐱1)F(𝐱2),

可以知道,这一序列与最速下降具有类似的收敛性质。如果在某次迭代中,函数得不到优化,说明一个驻点已经达到。

这一过程可以用下图表示。

例子

对于非平滑函数,坐标下降法可能会遇到问题。下图展示了当函数等高线非平滑时,算法可能在非驻点中断执行。

应用

坐标下降法在机器学习中有应用,例如训练线性支持向量机[1](可见Template:Link-en)以及Template:Link-en[2]

参见

参考

Template:Reflist