數值最佳化

Wolfe 條件(Wolfe conditions)

/ WOOLF /

當你往下踏一步,會有兩種出錯方式。踏得太大會越過頭,爬上谷的對側——你想下降卻上升了。踏得太小則幾乎沒動,毫無實質進展,注定方法永遠龜速爬行。Wolfe 條件是一對檢驗,線搜尋的步長必須通過才算「恰到好處」:大到能有實質進展,小到確實往下走。

讓迭代點從 x_k 沿方向 p_k 走 alpha,令 phi(alpha) = f(x_k + alpha p_k)。第一個 Wolfe 條件是 Armijo(充分減量)條件:f(x_k + alpha p_k) <= f(x_k) + c_1 * alpha * grad f(x_k)^T p_k,其中 c_1 很小(通常 1e-4)。它說實際的下降量至少要是初始斜率所預測下降量的 c_1 比例——這禁止過長(越過頭)的步。第二個是曲率條件:grad f(x_k + alpha p_k)^T p_k >= c_2 * grad f(x_k)^T p_k,其中 c_1 < c_2 < 1(通常 c_2 = 0.9)。它要求新點處的斜率比起點更平緩(更接近平坦),這禁止過短的步。兩者合起來(Armijo 加曲率)就是 Wolfe 條件;把曲率檢驗換成 |grad f(...)^T p_k| <= c_2 |grad f(x_k)^T p_k| 就得到更強的強 Wolfe 條件。

這些條件之所以重要,是因為它們是讓線搜尋法收斂的契約,而且對擬牛頓法不可或缺:BFGS 與 L-BFGS 仰賴曲率條件讓其近似海森矩陣保持正定(否則更新會崩壞)。有個定理(Wolfe 的)說:對下有界的光滑函數,沿任何下降方向總存在滿足這些條件的步長,所以線搜尋總能成功。誠實的細節:c_1 必須很小且嚴格小於 c_2,否則兩個要求互相衝突,沒有步能同時滿足。

以 c_1 = 1e-4、c_2 = 0.9 最小化 phi(alpha) = f(x_k + alpha p_k):極小的步 alpha = 0.001 通過 Armijo(確實往下),卻不過曲率——斜率仍陡然為負,示意「太短,再推遠些」。越過頭的巨大 alpha 不過 Armijo——它上升得超出容許。靠近谷底的中等 alpha 兩者皆過:有實質進展、斜率近乎平坦。

Armijo 禁止越過頭,曲率禁止磨蹭——合起來,恰到好處。

單靠 Armijo 條件會容許荒謬的微小步;曲率條件才能排除它們,並讓擬牛頓的海森更新保持正定。c_1 取小(約 1e-4)、c_2 取大(牛頓型用 0.9、非線性 CG 約 0.1),且 c_1 < c_2——否則沒有步能同時滿足兩者。

又称
Armijo and curvature conditionssufficient-decrease and curvature conditions阿米霍與曲率條件充分減量與曲率條件