數值最佳化

下降方向(descent direction)

你站在霧中的山坡上,想往低處去。你看不見整座谷,但能感覺每隻腳下地面往哪邊傾斜。任何讓你踏出的第一步往下走(哪怕只一點點)的方向,都值得走。下降方向正是如此:沿著它函數開始減小的方向,所以朝那邊踏一小步,保證能降低數值。

數學上,在點 x_k,方向 p(一個向量)對 f 是下降方向,當 f 沿 p 的斜率為負:grad f(x_k)^T p < 0。這個內積是方向導數——你沿 p 移動時 f 的瞬時變化率——為負就表示 f 起初往下走。幾何上,p 必須指向與梯度(指向上坡)夾角大於 90 度的那半空間;任何這樣的 p 都合格。下降法把迭代寫成 x_{k+1} = x_k + alpha_k p_k,其中 p_k 是下降方向,alpha_k > 0 是由線搜尋挑出的步長。各種演算法主要差在「如何」選 p_k:最速下降用 p = -grad f(正向下坡),牛頓法用 p = -H^{-1} grad f(按曲率重新縮放),擬牛頓法則近似後者。

為何堅持要下降方向?因為它保證有進展:若 grad f(x_k)^T p < 0,那麼只要步長夠小,f(x_k + alpha p) < f(x_k),方法就不會意外爬升。誠實的微妙之處在「夠小」與「起初」這幾個字。下降方向只承諾在足夠短的步長下會減小;走太遠你可能越過谷底、爬上對面的牆。這正是線搜尋與 Wolfe 條件的工作——找到一個真正帶來承諾減量的步長,而不只是無窮小的減量。

在 f(x, y) = x^2 + y^2 的 x = (1, 0) 處,梯度是 (2, 0),指向上坡(朝較大的 x)。方向 p = (-1, 0) 給出 grad f^T p = -2 < 0,是下降方向。p = (-1, 1) 也是:grad f^T p = -2 < 0。但 p = (0, 1) 給出 0(平,非下降),p = (1, 0) 給出 +2(上坡)。

任何與梯度成鈍角的方向都朝下坡。

方向是「下坡」只保證足夠短的步長會減小,而非任何步長。選方向是演算法的一半;選沿它走多遠(步長)是另一半,糟糕的步長會毀掉一個完美的方向。

又稱
downhill directionsearch direction下坡方向搜尋方向