坐标下降法

不是求整个变量的梯度,然后下降,而是循环的沿着变量的每一维进行单变量优化。

xik+1=argminϵRf(x1k+1,x2k+1,,xi1k+1,ϵ,xi+1k,,xnk)x_i^{k+1} =\arg \min_{\epsilon \in R} f(x_1^{k+1},x_2^{k+1}, \ldots ,x_{i-1}^{k+1},\epsilon,x_{i+1}^{k},\ldots,x_n^k)

此方法收敛性与最速下降法类似。

单变量优化优点:

  • 有可能可以精确直线搜索,或者单维度的牛顿法,等可以得到子问题的最优解。

  • 可并行:将内循环的迭代变成单步并行。不过这点依赖于目标函数的结构,变量之间是否能否解耦。

内循环不一定要按维度下标依次迭代,可以乱序,自适应等。

分块坐标下降###

如果不能全变量解耦,那么希望变量之间能够分块解耦。

f(x)=i=1mfi(xi),xiXiX=X1X2Xnf(x) = \sum_{i=1}^m f_i (x_i), \qquad x_i \in X_i X = X_1 \oplus X_2 \oplus \ldots X_n

脑洞大开###

可否在最速下降与坐标下降做折衷,每次迭代只取梯度中最大的top k个分量。 好像一般函数,变化最大的几个分量“都在一起”。而且就那么2~3个变化很快,所以k就取2或3. 缺点:这样就不容易精确直线搜索,或者单维度的牛顿法等。

Last updated