08 - Steepest Descent Algorithm

从前面几节中我们知道,各个优化算法的主要区别是如何构造 descent direction,这一节我们看看 steepest descent 如何构造 descent direction.

这一节画了很多 contour 的图,是通过这个脚本实现的

Steepest Descent Algorithm

Steepest Descent Algorithm 在每一轮迭代的过程中对函数做 affine approximation,也就是用一阶 taylor series 去近似 $f(\b{x})$

然后通过优化这个近似函数得到 $\b{x}^{k+1}$

为了方便我们用 $f^k$ 表示 $f(\b{x}^k)$,$\b{g}^k$ 表示 $f’(\b{x}^k)$,另外注意到 $\b{x} - \b{x}^k$ 实际上就是我们要找的 $\b{d}^k$,这样上式就变成 $f(\b{x}^k) + {\b{g}^k}^T \b{d}^k$。因此 steepest descent 要解决的优化问题就是

这里 $f(\b{x}^k)$ 是个 constant,可以从式子中去掉,另外,如果 $\b{d}^k$ 不做任何限制的话,它可以是一个无穷小的向量,这个近似函数就变成没有 lower bound,这样优化就没有意义了,所以我们限制 $\Vert \b{d}^k \Vert = 1$,这样最小化问题就变成了

这个优化问题很好解

当 $\theta = \pi$ 时这个式子最小,也就是 $\b{d}^k$ 和 $\b{g}^k$ 的夹角 $\pi$ 时上述近似函数值最小,如下图所示

上节中提到 $\b{d}^k$ 都可以表示成 $-A^k \b{g}^k$,对于 steepest descent,$A^k = I$。

Examples

现在让我们通过几个例子来看看 steepest descent 在不同情况下的表现


$f(\b{x}) = (\b{x}_1 - 7)^2 + (\b{x}_2 - 2)^2$

这个函数最优值在 (7, 2),利用 steepest descent algorithm + exact line search,不论初始点选择在哪儿都是一步就能到最优点,如下图所示


$f(\b{x}) = 4\b{x}_1^2 + \b{x}_2^2 -2\b{x}_1\b{x}_2$

这个函数的最优值点在 (0, 0),同样我们用 steepest descent + exact line search

这个例子我们可以看出初始点的不同对收敛速度是有影响的


$f(\b{x}) = 100(\b{x}_2 - \b{x}_1^2)^2 + (1 - \b{x}_1)^2$

这个是著名的 Rosenbrock function,其最优值出现在 (1, 1) 点,利用 steepest descent + backtrack line search ($\hat{\alpha} = 0.5, \lambda = 0.3, c_1 = 1\times 10^{-4}$)

对于这个例子,不管你选那个初始点,迭代的过程总是很慢

上面的几个例子中,收敛的过程有快有慢,下面我们从理论的角度看看是什么导致了这种区别

Convergence Rate of Steepest Descent Algorithm

下面我们研究一下目标函数为 quadratic function $f(\b{x}) = \frac{1}{2}\b{x}^T H \b{x} - \b{c}^T \b{x}$ 时 steepest descent 的 convergence rate,其中 $H$ 是 symmetric positive definite matrix

关于 quadratic function 这里多说两句,其实 quadratic function 在很多情况下会成为研究重点,不单因为它简单,或者容易可视化,还有一个很重要的原因是,任何一个函数在接近 local minimum 的地方表现都和 quadratic function 相似,原因很简单,看 $f(x)$ 的 Taylor series 就知道了 $$f(x) = f(x^*) + f'(x^*)(x - x^*) + \frac{1}{2}(x - x^*)^T H(x^*) (x - x^*) + O(\left\Vert x - x^* \right\Vert ^3)$$ 其中 $x^*$ 表示 local minimum。从公式可知 $x$ 越接近 $x^*$,$\left\Vert x - x^* \right\Vert ^3$ 就越小,相应的 $f(x)$ 的行为也越接近于前面的 quadratic 的部分。所以研究 quadratic function 比看起来要重要得多。

由于 $H$ 是 symmetric positive definite matrix,所以我们可以直接得到这个函数的 close-form solution,只需令 gradient 等于 0 即 $\b{g} = H\b{x} - \b{c} = 0$ 可得

为了计算 convergence rate,这里定义 Error function ,并以

表示 convergence rate,注意到

其中 $\frac{1}{2} \b{x}^* H \b{x}^*$ 是个常量,所以 $E(\b{x})$ 和 $f(\b{x})$ 本质上是一样的。


展开 convergence rate,对于分子分母分别有

这样 convergence rate 就变为

假设我们使用 exact line search,易推出 $\alpha^k = \frac{ {\b{g}^k}^T\b{g}^k}{ {\b{g}^k}^T H \b{g}^k}$,代入上式得


为了给上式一个 lower bound,我们引入 Kantorovich inequality

Let $H \in \mathbb{R}^{n\times n}$ be a symmetric positive definite matrix. Let $\lambda_1$ and $\lambda_n$ be respectively the smallest and largest eigenvalues of $H$. Then, for any $\b{x} \neq 0$ $$\frac{(\b{x}^T \b{x})^2}{(\b{x}^T H \b{x})(\b{x}^T H^{-1} \b{x})} \geq \frac{4\lambda_1 \lambda_n}{(\lambda_1 + \lambda_n)^2}$$

根据 Kantorovich inequality,我们有

等价于

因此根据我们定义的 $E(\b{x})$,steepest descent 是一个 convergence rate $\leq (\frac{\lambda_n - \lambda_1}{\lambda_n + \lambda_1})^2$ 的 linear convergence algorithm.

对 convergence rate 做个简单的变形

其中 $\frac{\lambda_n}{\lambda_1}$ 表示一个 matrix 的 condition number,可以看出 condition number 越大,convergence rate 越大,算法收敛得越慢。当 $\lambda_1 = \lambda_n$ 时,收敛是最快的,对应上面例子中 circular contour 的情况,condition number 越大,contour 越扁,越小 contour 越圆。

结论

从上面的例子和理论分析中,可以得出如下结论

改进 Steepest Descent

假设要优化的函数是 quadratic function $f(\b{x}) = \frac{1}{2} \b{x}^T H \b{x} - \b{c}^T \b{x}$,其中 $H$ 是 symmetric positive definite matrix。

前面已经提到 $H$ 的 condition number 对收敛速度的影响非常大,condition number 越小,收敛得越快,当 $H = I$ 时收敛最快。由此产生的一个优化思路是,对原始 function 做空间变换,使其在新空间中的 Hessian matrix 为 $I$,然后在新空间中做优化,再将结果映射回原始空间,这样迭代就可以一步完成。

假设原始空间为 x-space,新空间为 y-space,则我们试图找到的变换是

参考下图

由于这里 $H$ 是 symmetric positive definite matrix,这个变换可以通过对 $H$ 做 Cholesky decomposition 实现,如下

令 $\b{y} = L^T \b{x}$,则有

这样我们就实现了通过空间变换得到一个 Hessian matrix 为 $I$ 的 quadratic function。在 $h(\b{y})$ 应用 steepest descent 有 (令 $\alpha = 1$)

所以无论你从什么初始点开始,都是一步到达 global minimum,把这个点映射回 x-space,得

这就是在 x-space 的最优解。


如果我们将 y-space 的迭代步骤映射到 x-space 的话是这样

这最后一步实际上是 Classical Newton 的迭代步骤。但要注意 Classical Newton 并不是由 Steepest Descent 演化过来的,实际上,二者的发明并没有什么联系,并且 Classical Newton 出现比 Steepest Descent 还要早得多,下一片文章我们将看到 Classical Newton 是基于什么思想得到的。