多元最佳化
最速下降(steepest descent)
想像你站在霧濛濛的山坡上,想盡快到達谷底,卻只能感覺腳下的坡度。最明智的一步,是朝此刻下降最陡的方向邁出。最速下降正是把這種本能精確地化為一種迭代方法,用來最小化多元函數。
梯度 grad f 指向 f 增長最快的方向,於是它的相反方向 minus grad f 指向下降最快的方向——你當前點處最陡的下坡方向。該方法沿這個方向邁一步,在新點重新計算梯度,再重複,生成序列 x_new = x_old - t 乘 grad f,其中步長 t 取得讓進展良好(精確線搜索挑選沿該射線最小化 f 的那個 t)。由於每一步都徑直向下,f 的值在每次迭代都減小,直到梯度近乎為零,標誌著一個駐點。
最速下降是幾乎所有一階最佳化的概念祖先。它誠實的弱點廣為人知。在又長又窄的山谷裡它鋸齒般來回擺:因為每一步都與上一步正交,它在谷底來回橫穿,而不是順著谷長往下跑,收斂極慢。而且它只找到局部極小——下坡路碰巧通向哪裡就到哪裡。這些局限催生了更聰明的變體(共軛梯度、動量、牛頓型方法),但其核心思想——沿負梯度走——依然是幾乎所有大型模型訓練的心跳。
對 f(x, y) = x^2 + 10 y^2,在 (1, 1) 處的梯度為 (2, 20)。最速下降步沿 (-2, -20) 前進——壓倒性地朝更小的 y。在這個被拉長的碗上迭代點呈鋸齒,說明了為何病態問題會使樸素最速下降變慢。
最速下降在被拉長的山谷中鋸齒前進——相鄰步驟正交,故沿谷的進展緩慢。
最陡方向只是局部最陡、且只在所選坐標下最陡——它並不是通往極小的直線。這正是為什麼純粹的最速下降雖然總是下坡,卻可能低效。
又稱
另見