數值最佳化

無約束最佳化(unconstrained optimization)

想像一片起伏的山地,到處都沒有圍籬——你可以站在任何想站的地方,唯一的目標是找到谷地的最低點。沒有任何規則禁止你去某處;你只要順著地面往下走,直到不再下降為止。無約束最佳化正是如此:找出使函數 f(x) 盡可能小(或盡可能大)的輸入 x,而沒有任何規則限制你能選哪個 x。

形式上,你要找一個向量 x(屬於 R^n),使實值目標函數 f(x) 最小化,寫成「在所有 x 上最小化 f(x)」。(最大化 f 等同於最小化 -f,所以人們通常一律用最小化來表述。)這個 f 可能是個簡單公式,也可能是機器學習模型在資料上量到的誤差,或某項設計的成本。因為沒有約束,最低點的候選位置就落在地面局部變平的特殊點——梯度(各方向斜率組成的向量)為零之處。演算法從一個猜測 x_0 出發、往下走 x_{k+1} = x_k +(步進),直到斜率變平。整個下降法、牛頓法、擬牛頓法與隨機梯度下降的領域都住在這裡。

誠實的提醒在於「最低」是什麼意思。多數方法找到的是局部極小(local minimum)——比鄰近所有點都低的點——未必是全域極小(global minimum),也就是整片地形的最低點;一個函數可以有許多深淺不一的谷地,而往下走只會落入你起點上方的那一個。只有對特殊的(凸)函數,每個局部極小才自動是全域極小。對一般函數而言,找到真正的全域極小確實很難,多數實務訓練只是接受一個夠好的局部極小。這是機器學習、控制與工程設計的計算核心。

最小化 f(x, y) = (x - 3)^2 + (y + 1)^2。這是一個單一的碗,碗底在 (3, -1),此處 f = 0。令梯度 (2(x-3), 2(y+1)) 為零,恰好得到該點。從任何起點往下走都會滑進同一個唯一的最小值,因為這個碗是凸的。

凸的碗只有一個最小值;崎嶇的地形卻可能把你困在許多個之中。

「無約束」並不代表簡單。非凸的 f 可以有無數個局部極小與鞍點,你到達哪一個取決於起點——所以求解器回傳的答案是局部的,除非問題本身是凸的,或你另外做了全域搜尋。

又稱
minimizing a free functionfree optimization無限制最佳化無拘束最佳化