07 - Line Search Technique

这一节回答上一节最后提出的几个问题

Stopping Conditions

前面提到利用 $g(\b{x}^k) = 0$ 只能确定 $\b{x}^k$ 是个 stationary point,必须再根据 $H(\b{x}^k)$ 的性质才能确定 $\b{x}^k$ 是否为真的 local minimum,但在实际中由于计算和判断 $H(\b{x}^k)$ 涉及的计算资源较多,所以通常只利用 $g(\b{x}^k)$ 来作为 stopping condition,并且也不是判断 $g(\b{x}^k)$ 是否等于 $0$,由于计算机的精度问题,通常这个判断是很难成立的。

实际中常用的 stopping condition 包括

其中 $\varepsilon$ 是一个用户指定的很小的数,第一个条件就是 $g(\b{x}^k) = 0$ 的一个近似,第二个条件表示当前轮的迭代是否能使 $f(\b{x}^k)$ 有显著下降,如果没有,则停止迭代

Speed of Convergence

假设优化过程对应 sequence $\{\b{x}^k\}_{k \geq 0}$,$\b{x}^*$ 为 local minimum,如果下式成立 $$\lim_{k\rightarrow \infty} \frac{\Vert \b{x}^{k+1} - \b{x}^*\Vert }{\Vert \b{x}^k - \b{x}^*\Vert^p} = \beta \;\; \beta < \infty$$ 则 $p$ 表示 order of convergence,$\beta$ 表示 convergence rate

注意到这里的分子分母都是表示离最优点的距离,所以上面的定义是用距离的比值来表示 convergence 的快慢

由于 linear convergence 收敛得慢,而 quadratic convergence 虽然收敛快但是需要的资源太多,所以大多数算法都是属于 superlinear convergence

另一种表示 convergence rate 的方法是使用 Error function $E: \mathbb{R}^n \rightarrow \mathbb{R}$,然后计算

或者

通常情况下,使不使用 Error function 并不影响 convergence rate,一个 linear convergence 的算法不会因为用 Error function 计算 convergence rate 而变成 quadratic convergence 算法。

Step Length

假设 $\b{d}^k$ 已经确定,求解 step length $\alpha^k$ 的方法分为两种,分别是 Exact line search 和 Inexact line search。

把 $\alpha^k$ 的求解当成是另一个优化问题,即在每一步迭代过程中再求解

由于 $\alpha$ 是个 scalar,所以这是一个一维优化问题。

Exact line search 有时会带来性能上的问题,这时就需要使用近似的方法,不过在使用近似的方法时需要注意以下几点

为了保证以上 3 点就有了 Armijo’s condition, Goldstein’s condition 和 Wolfe’s condition

假设 $f(\b{x}^k + \alpha \b{d}^k)$ 的函数图像是这样 (其中 $\alpha$ 是变量)

图中有两条虚线

$g^T(\b{x}^k)\b{d}^k < 0$ 所以 $f$ 在 $\alpha = 0$ 处一定是往下走的

下面分别讨论这 3 种 condition

Armijo's condition

Armijo’s condition 给出下面的绿色虚线,由于其斜率介于 $0$ 和 $g^T(\b{x}^k)\b{d}^k$ 之间,所以可以将斜率值定义为 $c_1 g^T(\b{x}^k)\b{d}^k \; c_1 \in (0, 1)$

Armijo’s condition 要求 $\alpha^k$ 满足 $f(\b{x}^k + \alpha^k \b{d}^k) < f(\b{x}^k) + c_1 \alpha^k g^T(\b{x}^k)\b{d}^k$

这个条件一来保证了 $\alpha^k$ 不会太大,因为上述条件保证了函数值一定是下降的;二来保证了 rate of decrease 不会太小,因为 $\frac{f(\b{x}^k) - f(\b{x}^k + \alpha^k \b{d}^k)}{\alpha^k} > c_1 g^T(\b{x}^k)\b{d}^k$,其中 $g^T(\b{x}^k)\b{d}^k$ 为最大可能的 rate of decrease。

Goldstein's condition

Goldstein’s condition 给出下面的红色虚线,由于其斜率介于 $0$ 和 $g^T(\b{x}^k)\b{d}^k$ 之间,所以可以将斜率值定义为 $c_2 g^T(\b{x}^k)\b{d}^k \; c_2 \in (0, 1)$

Goldstein’s condition 要求 $\alpha^k$ 满足 $f(\b{x}^k + \alpha^k \b{d}^k) > f(\b{x}^k) + c_2 \alpha^k g^T(\b{x}^k)\b{d}^k$,这样 $\alpha$ 就必须大于 $\hat{\alpha}$,这个条件保证了 step length 不会太小

通常 Goldstein’s condition 和 Armijo’s condition 一起使用,这样就同时满足了前面提出的 3 个要求,在这种情况下,$c_2$ 的取值范围是 $(c_1, 1)$

Wolfe's condition

Wolfe’s condition 的作用和 Goldstein’s condition 是一样的,都是要保证 step length 不会太小,只是用的方法不一样,Wolfe’s condition 通过限制 $\alpha^k$ 处的函数斜率来保证的。如下图中给出的斜虚线,假设其斜率有 $c g^T(\b{x}^k)\b{d}^k \; c\in (0, 1)$

Wolfe’s condition 要求 $\alpha^k$ 满足 $f’(\b{x}^k + \alpha^k \b{d}^k) > c g^T(\b{x}^k) \b{d}^k$,这样符合条件的 $\alpha$ 就只能是 $(\hat{\alpha}_1, \hat{\alpha}_2) \cup (\hat{\alpha}_3, +\infty)$,也就保证了 step length 不会太小

Wolfe’s condition 的含义是这样的,$f’(\b{x}^k + \alpha^k \b{d}^k)$ 表示的是 $f(\b{x}^k + \alpha^k \b{d}^k)$ 在 $\alpha^k$ 处的 gradient,如果 gradient 是个很大的 negative number,则我们可以推测 $f$ 在这个 $\alpha^k$ 处还有很大的下降空间,因此我们不能满足于停留在这样的 $\alpha^k$ 上,可以继续扩大 $\alpha^k$。相反,如果 gradient 是个很小的 negative number 或者是个正数,那我们的 line search 就要停止了,上面的不等式中 $c g^T(\b{x}^k) \b{d}^k$ 就是表示我们可以接受的某个比较小的 negative number

同样 Wolfe’s condition 也通常和 Armijo’s condition 一起使用

Backtrack line search 虽然独立一小节出来,但它本质也是一种 inexact line search,它是 inexact line search 在具体实现上的一种 trick,它通过 Armijo condition 来保证 rate of decrease,然后以 backtract 的方式来保证 step length 不会太小,参考如下伪代码

INPUT: $\hat{\alpha} \in (0, +\infty), c_1 \in (0, 1), \lambda \in (0, 1)$

$\alpha^k = \hat{\alpha}$
WHILE $f(\b{x}^k + \alpha^k \b{d}^k) > f(\b{x}^k) + c_1 \alpha^k g^k \b{d}^k$
    $\alpha^k = \lambda \alpha^k$

OUTPUT: $\alpha^k$

可以看到,代码其实是非常简单的,每一轮迭代都按固定的比例缩减 step length,直到满足 Armijo condition 为止,所以等于说它找到了一个尽可能最大的满足 Armijo condition 的 step length。

Proof of Convergence

在证明前先做几个假设,令 $f^k = f(\b{x}^k), g^k = f’(\b{x}^k)$,假设


因此在上述假设成立的情况下,算法是收敛的,当然上述假设不是必要条件了,这里只是给出一个证明的例子

Descent Direction

所有的 descent direction 都可以表示为 $\b{d}^k = -A^k g^k$,因为 $\b{d}^k$ 和 $g^k$ 是一个空间内的向量,给定一个,另一个总可以通过旋转伸缩来得到,也就是矩阵乘的方式 (不要纠结于那个负号)。

之前我们提到所有满足 ${g^k}^T \b{d}^k < 0$ 的方向都是 descent direction,把 $\b{d}^k$ 的表示代入有 $-{g^k}^T A^k g^k < 0$,即要求 $A^k$ 是 positive definite matrix。

所有的优化算法最核心的不同就在于如何构建 matrix $A^k$,详情请见后续章节。