數值優化:計算基本理論


1. 優化問題

  最一般的優化問題的表述是這樣的:

求解等式約束 $\boldsymbol{g}(\boldsymbol{x})=0$ 和不等式約束 $\boldsymbol{h}(\boldsymbol{x})\leq 0$ 下使得取得 $\min f(\boldsymbol{x})$ 的解 $\boldsymbol{x}$

其中 $f:\mathbb{R}^n\Rightarrow \mathbb{R}$,$\boldsymbol{g}:\mathbb{R}^n\Rightarrow \mathbb{R}^m$(即m個等式約束),$\boldsymbol{h}:\mathbb{R}^n\Rightarrow \mathbb{R}^k$(即k個不等式約束)

  這里映射 $\boldsymbol{h}$ 所使用的小於號表示各個分量均小於零。當目標函數 $f$,等式約束函數 $\boldsymbol{g}$ 和不等式約束函數 $\boldsymbol{h}$ 要么缺省要么為線性函數時,該優化問題又稱線性規划;否則(只要存在任意一函數非線性)即稱為非線性規划。優化問題是數值計算中非常重要的一個問題。和非線性方程組求解一樣,這個看似簡單的問題也並沒有可以直截了當地處理多數問題的silver-bullet,這一方面的理論比較復雜;此外,優化算法的應用領域極其廣泛、地位極其重要,除了求解非線性方程組可以使用(matlab中最常用於解非線性方程組的函數fsolve就是使用優化方法,見MATLAB解方程內置函數詳解)以外,在人工智能和機器學習領域也有很重要的地位。而不論是高中文科數學總要掌握的線性規划,還是基本的最小二乘問題(也是通常的線性回歸使用的方法),其本質都是優化問題的一個特例。

  高等數學的知識告訴我們,一維連續光滑函數取得極值的必要非充分條件是該點導數值為零。如果試圖尋找函數在一定區間上的最值(最大/最小值),一般的方法是找出所有的極值點和端點比較其函數值。和這一方法一樣,雖然優化問題的一般表述總是將“最值”作為追求的目標,在實際的算法中卻幾乎總是以求極值為出發點。至於求解總區間上的最值,總是比較復雜和困難,而且總是能夠構造處一些函數,它的最值對於計算方法幾乎不太可能求出。以下的討論基本總是求解極值的算法。

 

2. 問題的性質

2.1 解的存在唯一性:

  若函數 $f$ 在n維有界閉區域 $S$ 上連續,那么 $f$ 在 $S$ 上一定有全局最小值;

  若函數 $f$ 在n維閉區域 $S$ 上連續並且向正無窮發散(coercive,即 $\lim\limits_{||x||\Rightarrow \infty}f(\boldsymbol{x})=+\infty$ ),那么 $f$ 在 $S$ 上一定有全局最小值。

  以上定理只能保證最小值存在,沒有建立最小值和極小值之間的關系。但是,對於一類特殊的函數,它在一定區域內的極小值一定是最小值,這類函數即凸函數。凸函數為定義在凸區間上的一種函數,它滿足任意兩點的連線位於抽象的函數曲面之下;而凸區間則滿足任意兩點連線仍然在區間中。定義在凸區間內的嚴格凸函數有唯一的極小值,該極小值為該函數在該區間上的最小值

2.2 最優化條件:

  一階最優化條件:一維函數 $f:\mathbb{R}\Rightarrow \mathbb{R}$ 的一階極值條件:$f'(x)=0$ ;高維函數 $f:\mathbb{R}^n\Rightarrow \mathbb{R}$ 的一階極值條件:$\nabla f(\boldsymbol{x})=0$ 。

  二階最優化條件:一維函數 $f:\mathbb{R}\Rightarrow \mathbb{R}$ 的一階極值條件:$f''(x)>0$ ;高維函數 $f:\mathbb{R}^n\Rightarrow \mathbb{R}$ 的二階極值條件:$H_f(\boldsymbol{x})$ 正定。其中,$(H_f(\boldsymbol{x}))_{ij}=\frac{\partial^2 f(\boldsymbol{x})}{\partial x_i \partial x_j}$ 稱為海塞(Hessian)矩陣,它是高維函數泰勒展開的二次項系數,等價於一維函數泰勒展開的二次項系數(二階導數)。當一階最優化條件滿足時,海塞矩陣正定$\Rightarrow$該點為極小值點;海塞矩陣負定$\Rightarrow$該點為極大值點;海塞矩陣不定$\Rightarrow$該點為鞍點;海塞矩陣為奇異矩陣$\Rightarrow$無法判斷點的類型,此時理論上來說需要有更高階最優化條件。

2.3 問題的條件:

  考慮一維函數的泰勒級數展開:$f(\hat{x})\approx f(x^*)+f'(x^*)h+f''(x^*)h^2/2$ 。在極值附近,$f'(x^*)=0$, 以函數值距離最小值的差距為向后誤差,$|f(x)-f(x^*)|\leq \epsilon$,則有 $h\leq \sqrt{2\epsilon/|f''(x^*)|}$ ,精度比較求解非線性方程是減半的(2n位有效數字$\Rightarrow$n位有效數字)。但是,有許多的數值解法等效於求解一階最優化條件,此時不應當將函數值距離最小值的差作為向后誤差,而應當將一階導數的絕對值作為向后誤差。

 

3. 數值方法

和數值求解方程的問題類似,數值優化的方法也多為迭代方法。

3.1 一維優化問題

  一維優化問題的數值方法包括:黃金分割搜索法(區間分割),牛頓法(一階最優化求解),連續二次插值法,等。

3.2 高維優化問題

  高維優化問題的數值方法包括:Nelder-Mead單純形方法(直接搜索),最速下降法信賴域方法高維牛頓法(一階最優化求解),擬牛頓法(割線更新迭代)—— BFGS方法共軛梯度法,等。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM