數值優化:計算基本理論

1. 優化問題html

  最通常的優化問題的表述是這樣的:算法

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

其中 $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$ 上必定有全局最小值;spa

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

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

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方法共軛梯度法,等。

相關文章
相關標籤/搜索