在某些情况下,将一个优化问题分解成几个部分,可以更快地解决原问题。 如果我们相对于某个单一变量xix_i最小化f(x)f(x),然后相对于另一个变量xjx_j等等,反复循环所有的变量,我们会保证到达(局部)极小值。 这种做法被称为坐标下降,因为我们一次优化一个坐标。 更一般地,块坐标下降是指对于某个子集的变量同时最小化。 术语"坐标下降"通常既指块坐标下降,也指严格的单个坐标下降。

当优化问题中的不同变量能够清楚地分成相对独立的组,或是当优化一组变量明显比优化所有变量效率更高时,坐标下降最有意义。

[success]
适用场景:
(1)参数容易分组
(2)优化一组变量比优化所有变量效率高

例如,考虑代价函数 J(H,W)=i,jHi,j+i,j(XWH)i,j2. \begin{aligned} J(H, W) = \sum_{i,j} |H_{i,j}| + \sum_{i,j} \left( X - W^\top H \right)_{i,j}^2 . \end{aligned}

该函数描述了一种被称为稀疏编码的学习问题,其目标是寻求一个权重矩阵WW,可以线性解码激活值矩阵HH以重构训练集XX

[warning] 稀疏编码的学习问题?

稀疏编码的大多数应用还涉及到权重衰减或WW列范数的约束,以避免极小HH和极大WW的病态解。

[warning] 极小HH和极大WW的病态解?

函数JJ不是凸的。 然而,我们可以将训练算法的输入分成两个集合:字典参数WW和编码表示HH。 最小化关于这两者之一的任意一组变量的目标函数都是凸问题。 因此,块坐标下降允许我们使用高效的凸优化算法,交替固定HH优化WW和固定WW优化HH

当一个变量的值很大程度地影响另一个变量的最优值时,坐标下降不是一个很好的方法,如函数f(x)=(x1x2)2+α(x12+x22)f(x)=(x_1 - x_2)^2+\alpha(x_1^2 + x_2^2),其中α\alpha是正值常数。

[success]
不适用场景:一组变量的变化很大程度地影响另一组变量的最优值。

第一项鼓励两个变量具有相似的值,而第二项鼓励它们接近零。 解是两者都为零。 牛顿法可以一步解决这个问题,因为它是一个正定二次问题。 但是,对于小值α\alpha而言,坐标下降会使进展非常缓慢,因为第一项不允许单个变量变为和其他变量当前值显著不同的值。

results matching ""

    No results matching ""