跳轉到內容

統計學/數值方法/最佳化

來自華夏公益教科書

在接下來的內容中,我們將提供一些關於數值最佳化演算法的筆記。由於存在大量方法,我們將限制自己討論所謂的梯度方法。我們之所以將此類方法作為數值最佳化演算法的自然起點,主要有以下兩個原因。一方面,這些方法在該領域確實是主力軍,因此它們在實踐中的頻繁使用證明了它們在這裡被討論的合理性。另一方面,這種方法非常直觀,因為它在一定程度上是自然地從眾所周知的最優點性質中推匯出來的。我們將重點關注此類方法的三個例子:牛頓法最速下降法以及可變度量法,其中包括擬牛頓法

在我們開始之前,我們還是要強調一點,似乎並沒有一個“唯一”的演算法,特定演算法的效能總是取決於待解決的具體問題。因此,經驗和“試錯”在應用工作中非常重要。為了闡明這一點,我們將提供一些應用示例,其中可以透過圖形方式比較不同演算法的效能。此外,最後還提供了一個關於最大似然估計的具體示例。對於統計學家和計量經濟學家來說,最大似然估計可能是在實踐中必須依賴數值最佳化演算法的最重要示例。

理論動機

[編輯 | 編輯原始碼]

任何數值最佳化演算法都需要解決找到函式的“可觀察”屬性的問題,以便計算機程式知道何時達到解。由於我們正在處理最佳化問題,因此兩個眾所周知的結果似乎是尋找這些屬性的合理起點。

如果 f 可微且 是 (區域性) 最小值,那麼

即雅可比矩陣 等於零

以及

如果 f 二階可微且 是 (區域性) 最小值,那麼

即海森矩陣 正半定的。

在下文中,我們將始終用 表示最小值。雖然這兩個條件似乎代表了幫助找到最優 的陳述,但有一個小小的陷阱,它們給出了 是函式 的最優值的含義。但為了我們的目的,我們需要相反的含義,即最終我們想得到一個形式為:“如果某個條件 成立,則 是最小值”的陳述。但上面兩個條件顯然不足以達到這一點(例如,考慮 的情況,其中 ,但 )。因此,我們必須考慮 的整個鄰域,如以下檢測最優值的充分條件所述。


如果 ,則: 是一個區域性最小值。

證明:對於 根據 泰勒近似得到: 其中 表示以 為中心的開球,即 對於


與上述兩個條件相反,此條件足以用於檢測最優值 - 考慮以下兩個簡單示例

其中

以及

其中 以及

牢記這個小注意事項,我們現在可以轉向數值最佳化程式。

數值解

[編輯 | 編輯原始碼]

以下所有演算法都依賴於以下假設

(A1) 集合 緊緻 的。

其中 是演算法給定的某個初始值。這個假設的重要性體現在 魏爾斯特拉斯定理 中,該定理指出每個緊緻集都包含其 上確界下確界。因此,(A1) 保證了 中存在某個解。並且,在這個全域性最小值 處,當然滿足 。因此 - 考慮到上面的討論 - 最佳化問題基本上歸結為求解方程組

下降方向

[編輯 | 編輯原始碼]

當然,這種方法的問題是, 也適用於 極大值和鞍點。因此,好的演算法應該確保將極大值和鞍點排除為潛在解。透過要求 ,即我們限制在 序列 上,使得函式值在每一步都減小,可以很容易地排除極大值。問題是,這是否總是可能的。幸運的是,答案是肯定的。為什麼是這樣的基本見解是:當構建對映 (即我們如何從 的規則)時,我們有兩個自由度,即

  • 方向
  • 步長

因此,我們可以選擇要移動的方向以到達 以及此移動的距離。 因此,如果我們選擇 以“正確的方式”,我們可以有效地確保函式值減小。 下面提供了這種推理的正式表示。


引理:如果 ,那麼: 使得

證明:由於 ,則對於足夠小的 成立。

下降法的通用步驟

[編輯 | 編輯原始碼]

滿足此條件的方向向量 被稱為下降方向。 在實踐中,這個引理允許我們使用以下步驟來數值求解最佳化問題。

1. 定義序列 透過遞推公式

2. 從點 的區域性資訊中選擇方向

3. 選擇一個步長 ,以確保演算法的收斂。

4. 如果 ,其中 是某個選擇的最小值容差,則停止迭代。

此過程已經暗示了 的選擇並非獨立的,而是相互依賴的。特別是需要注意的是,即使該方法是下降方法(即 是根據引理 1選擇的),也不能保證收斂到最小值。乍一看,這似乎有點令人費解。如果我們找到了一個序列 ,使得函式值在每一步都下降,人們可能會認為在某個階段,即在k趨於無窮大的極限中,我們應該得到解。為什麼事實並非如此,可以從以下借鑑自 W. Alt (2002, p. 76) 的例子中看出。

例子 1

[edit | edit source]
  • 考慮以下例子,它雖然明顯是下降的,但並不收斂。設判據函式由以下給出

,設初始值為,考慮一個(常數)方向向量,並選擇步長為。因此,序列的遞迴定義如下

注意,,因此,因此它顯然是一個下降法。然而,我們發現

這種不收斂的原因必須歸因於步長下降得太快。對於較大的k,步長變得如此之小,以至於收斂被排除在外。因此,我們必須將步長與下降方向聯絡起來。

有效的步長

[編輯 | 編輯原始碼]

這種聯絡的明顯思路是要求實際下降與一階近似成正比,即選擇 使得存在常數 使得

注意,我們仍然只關注下降方向,因此,如上文引理 1 中所述。因此, 的緊緻性意味著 LHS 的收斂,並且根據 (4)

最後,我們希望選擇一個序列 使得,因為這正是我們要解決的一階必要條件。在什麼條件下,(5) 實際上意味著? 首先,步長 不能過快地趨於零。這正是我們在上面例子中遇到的情況。因此,似乎有道理從下界限制步長,要求

對於某個常數。將 (6) 代入 (5) 最終得到

其中,緊緻性 確保了左側的收斂,因此

滿足 (4) 和 (6) 的步長被稱為有效步長,並用 表示。條件 (6) 的重要性在以下示例 1 的延續中得到說明。

示例 1 (續)

[編輯 | 編輯原始碼]
  • 需要注意的是,正是 (6) 的失敗導致示例 1 未能收斂。將示例中的步長代入 (6) 中得到

因此,對於所有k沒有常數 滿足 (6) 中要求的這個不等式。因此,步長沒有從下方界定,並且下降速度過快。為了真正認識到 (6) 的重要性,讓我們稍微改變一下這個例子,假設。然後我們發現

也就是說,收斂確實發生了。此外,認識到這個例子實際上確實滿足條件 (6),因為

選擇方向 d

[編輯 | 編輯原始碼]

我們已經論證過,選擇 是交織在一起的。因此,選擇“正確”的 總是取決於相應的步長 。那麼在這個語境下,“正確”是什麼意思呢?上面我們在公式 (8) 中表明,選擇一個有效的步長意味著

因此,“正確”的方向向量將保證 (8') 意味著

因為 (9) 是選擇序列 收斂的條件。所以讓我們探究一下哪些方向可以得到 (9)。假設步長 有效的,並且定義

根據 (8') 和 (10) 我們知道

所以如果我們從下方對 進行邊界設定(即 ),(11) 意味著

其中,(12) 只給出了序列 收斂到解 的條件。由於 (10) 透過 隱式地定義了方向向量 ,因此對 的要求直接轉化為對 的要求。

為什麼是梯度方法?

[編輯 | 編輯原始碼]

當考慮對 的條件時,很明顯 “梯度方法” 這個術語的來源。對於由

給出的 ,我們有以下結果:

假設 已經被有效地選擇,並且 滿足

我們有

因此:如果 處的負梯度與方向 之間的夾角始終小於直角,那麼就會發生收斂。依賴於滿足 (13) 的 的方法被稱為梯度方法。

換句話說:只要不沿梯度的正交方向移動,並且有效地選擇步長,梯度方法就能保證收斂到解

梯度方法中一些具體的演算法

[edit | edit source]

現在讓我們探索這類別中三種具體的演算法,它們在各自的 的選擇方面有所不同。

牛頓法

[edit | edit source]

牛頓法 是該領域中最流行的方法。它是一種求解所有型別方程的著名方法,因此可以輕鬆地應用於最佳化問題。牛頓法的主要思想是將方程組線性化,得到

(15) 可以很容易地解出 x,因為解僅由(假設 非奇異)給出

為了我們的目的,我們只選擇 為梯度 ,得到

其中 被稱為 *牛頓方向*。

牛頓法的性質
[edit | edit source]

分析 (17) 可以揭示牛頓法的主要性質

  • 如果 是一個 正定矩陣,那麼 是 *引理 1* 中提到的一個下降方向。
  • 牛頓法使用一階 *和* 二階導數的區域性資訊來計算
  • 因為

牛頓法使用固定步長 。因此牛頓法 *不一定是* *引理 1* 中提到的下降法。原因是固定步長 可能大於 *引理 1* 中給出的臨界步長 。下面我們將給出 *牛頓法* 不下降的 *羅森布羅克函式* 作為示例。

  • 該方法可能非常耗時,因為每一步 *k* 都要計算 可能很麻煩。在實際應用中,我們可以考慮使用近似方法。例如,我們可以每隔 *s* 步更新一次 Hessian 矩陣,或者我們可以依靠 *區域性近似*。這被稱為 *擬牛頓法*,將在討論 *變數度量法* 的部分進行介紹。
  • 為了確保該方法是下降法,我們可以使用一個有效的步長 並設定

最速下降法

[編輯 | 編輯原始碼]

另一個常用的方法是最速下降法。這種方法的思路是選擇方向,使得函式值f的下降最大。雖然乍一看這個過程似乎很有道理,但它實際上利用的資訊比牛頓法少,因為它忽略了Hessian關於函式曲率的資訊。尤其是在下面的應用中,我們將看到一些關於這個問題的例子。

最速下降法的方向向量由下式給出:

證明:根據柯西-施瓦茨不等式,可得

顯然 (21) 等式對 在 (20) 中給出。

特別要注意,對於 ,我們有 ,即我們只是在負梯度的方向上“行走”。與 *牛頓法* 不同的是,*最速下降法* 不使用固定步長,而是選擇一個有效的步長 。因此,*最速下降法* 定義了序列

其中 是一個有效的步長, 是在 (20) 中給出的最速下降方向。

最速下降法的性質
[edit | edit source]
  • 對於 ,最速下降法定義了一個下降方向,從 *引理 1* 的意義上說,因為

  • *最速下降法* 只是區域性上可行的,因為它忽略了二階資訊。
  • 特別是當目標函式很平坦時(即解 位於“山谷”中),最速下降法定義的序列會劇烈波動(參見下面的應用,特別是 Rosenbrock 函式的例子)。
  • 由於它不需要 Hessian 矩陣,因此 *最速下降法* 的計算和實現很簡單快捷。

可變度量法

[edit | edit source]

比 *牛頓法* 和 *最速下降法* 更通用的方法是 *可變度量法* 類。這類方法依賴於更新公式

如果 是一個 對稱正定 矩陣,(23) 定義了一個下降方法,其中 是正定的當且僅當 也是正定的。要理解這一點,只需考慮 譜分解

其中 分別是包含 特徵向量特徵值 的矩陣。如果 是正定的,所有特徵值 嚴格為正。因此它們的逆 也是正的,因此 明顯是正定的。但是,將 代入,得到

也就是說,該方法確實是下降的。到目前為止,我們還沒有指定矩陣 ,但很容易看出,對於兩種特定的選擇,可變度量法恰好與最速下降法牛頓法重合。

  • 對於 (其中 單位矩陣),可以得出

這僅僅是*最速下降法*。

  • 對於 可以得出

這僅僅是使用步長 的*牛頓法*。

擬牛頓法
[編輯 | 編輯原始碼]

對於*變數度量法*,另一個自然候選者是*擬牛頓法*。與標準*牛頓法*相比,它使用有效的步長,使其成為下降法;與*最速下降法*相比,它不會完全忽略函式曲率的區域性資訊。因此,*擬牛頓法*由矩陣 上的兩個要求定義:

  • 應該近似於Hessian 以利用關於曲率的資訊,並且
  • 更新 應該很簡單,以便演算法仍然相對快速(即使在高維度)。

為了確保第一個要求, 應該滿足所謂的*擬牛頓方程*

因為所有滿足 (26) 的 都反映了Hessian 的資訊。為了說明這一點,考慮定義為

顯然, 以及 。因此 的鄰域內相當相似。為了確保 處也是一個好的近似值,我們希望選擇 使得 處的梯度相同。有了

很明顯,如果 滿足 (26) 中給出的擬牛頓方程,則 。但是,隨之而來的是

因此,只要 彼此相差不遠, 滿足(26)是 的一個良好近似。

現在讓我們來談談第二個要求,即 的更新應該很容易。一種特定的演算法是所謂的 BFGS 演算法。該演算法的主要優點是它只使用已經計算出的元素 來構建更新 。因此,不需要計算任何新的實體,只需跟蹤 _x_ 序列和梯度序列即可。作為 BFGS 演算法的起點,可以提供任何正定矩陣(例如,在 處的 Hessian 或單位矩陣)。然後,_BFGS 更新公式_ 為

其中 以及 。此外,(30) 確保所有 均為正定矩陣,正如 *Variable Metric Methods* 所要求的那樣,它們是下降的。

擬牛頓法的性質
[編輯 | 編輯原始碼]
  • 它利用了關於 曲率的二階資訊,因為矩陣 與 Hessian 矩陣 相關。
  • 儘管如此,它確保了簡單快速的更新(例如,透過 BFGS 演算法),因此它比標準牛頓法更快。
  • 它是一種下降方法,因為 是正定的。
  • 它相對容易實現,因為 BFGS 演算法在大多數數值或統計軟體包中都可用。

為了比較這些方法並說明演算法之間的差異,我們現在將評估 *最速下降法*、標準 *牛頓法* 和使用高效步長的 *擬牛頓法* 的效能。我們在這個領域使用兩個經典函式,即 Himmelblau 函式和 Rosenbrock 函式。

應用 I:Himmelblau 函式

[編輯 | 編輯原始碼]

Himmelblau 函式定義為

這個四階多項式有四個極小值、四個鞍點和一個極大值,因此演算法有足夠多的可能性失敗。在下圖中,我們展示了不同起始值的函式的 *等高線圖* 和 3D 圖。

在圖 1 中,我們展示了函式以及三種方法在起始值為 時的路徑。顯然,三種方法沒有找到相同的極小值。原因當然是因為 *最速下降法* 的方向向量不同——透過忽略關於曲率的資訊,它選擇的方向與兩個 *牛頓法* 完全不同(特別是在圖 1 的右圖中)。

圖 1:兩種牛頓法收斂到同一個極小值,而最速下降法收斂到另一個極小值。

現在考慮起始值為 ,如圖 2 所示。當然,最重要的是現在 *所有* 方法都找到了不同的解。*最速下降法* 找到了與兩個 *牛頓法* 不同的解,這並不奇怪。但是,兩個 *牛頓法* 收斂到不同的解,這表明了步長 的重要性。*擬牛頓法* 在第一次迭代中選擇了一個高效的步長,因此兩種方法在第一次迭代之後的所有迭代中都具有不同的步長 *和* 方向向量。正如圖片所示:結果可能相當顯著。

圖 2:即使所有方法都找到了不同的解。

應用 II:Rosenbrock 函式

[編輯 | 編輯原始碼]

Rosenbrock 函式定義為

儘管該函式只有一個最小值,但對於最佳化問題而言,它仍然是一個有趣的函式。原因是該U形函式的谷底非常平坦(參見圖3和圖4的右側面板)。對於計量經濟學家而言,這個函式可能非常有趣,因為在最大似然估計的情況下,平坦的準則函式非常常見。因此,下面圖3和圖4中顯示的結果對於具有該問題的函式來說似乎是比較通用的。

我在使用這個函式和演算法時的經驗是,圖3(給定一個初始值 )似乎非常具有代表性。與上面的 Himmelblau 函式相比,所有演算法都找到了相同的解,並且由於只有一個最小值,所以這是可以預期的。更重要的是,不同方法選擇的路徑反映了各自方法的不同性質。可以看到,*最速下降法*波動得比較劇烈。這是由於該方法不使用關於曲率的資訊,而是來回跳動於與谷底相鄰的“山丘”之間。兩種牛頓方法選擇更直接的路徑,因為它們使用了二階資訊。兩種牛頓方法之間的主要區別當然是步長。圖3顯示,*擬牛頓法*在谷底穿梭時使用非常小的步長。相比之下,*牛頓法*的步長是固定的,因此它直接跳向解的方向。儘管人們可能會認為這是*擬牛頓法*的一個缺點,但請注意,通常這些較小的步長具有更高的穩定性的優點,即演算法不太可能跳到另一個解。這一點可以在圖4中看到。

圖3:所有方法都找到了相同的解,但最速下降法波動很大。

圖4考慮的是一個初始值 ,展示了*牛頓法*使用固定步長的主要問題——該方法可能會“過沖”,即它沒有下降。在第一步中,*牛頓法*(圖中顯示為紫色線)跳出谷底,然後在下一步中反彈回來。在這種情況下,仍然可以收斂到最小值,因為每側的梯度都指向中心唯一的谷底,但可以很容易地想象出不符合這種情況的函式。跳躍的原因是二階導數非常小,以至於步長 由於 Hessian 的逆而變得非常大。根據我的經驗,我建議使用有效的步長來更好地控制各自方法選擇的路徑。

圖2:由於固定步長導致的牛頓法過沖。

應用三:最大似然估計

[編輯 | 編輯原始碼]

對於計量經濟學家和統計學家來說,*最大似然估計器*可能是數值最佳化演算法最重要的應用。因此,我們將簡要介紹估計過程如何融入上面開發的框架。

像往常一樣,設

為給定 *X* 的 *Y* 的*條件密度*,其中引數為 ,並且

為引數 的*條件似然函式*。

如果我們假設資料是*獨立同分布(iid)*,則樣本對數似然函式如下所示:

因此,最大似然估計歸結為關於引數 最大化 (35)。為了簡單起見,如果我們決定使用 *牛頓法* 來解決這個問題,序列 由遞迴定義:


其中 分別表示關於引數向量 的一階和二階導數,而 定義了 (17) 中給出的 *牛頓方向*。由於最大似然估計始終假設條件密度(即誤差項的分佈)在引數 範圍內是已知的,因此上述方法可以很容易地應用。

最大似然估計的具體示例

[編輯 | 編輯原始碼]

假設一個簡單的線性模型

其中 . 然後條件分佈 YU 的分佈決定,即

其中 表示密度函式。一般來說,最大化 (35) 沒有閉式解(至少如果 U 碰巧不是正態分佈),因此必須使用數值方法。因此假設 U 遵循學生 t 分佈,具有 m自由度,因此 (35) 由下式給出

這裡我們只使用了 t 分佈的密度函式的定義。 (38) 可以簡化為

因此(如果我們假設自由度 m 是已知的)

使用以下準則函式

上述方法可以很容易地應用於計算最大似然估計,最大化 (41)。

參考文獻

[編輯 | 編輯來源]
  • Alt, W. (2002): "Nichtlineare Optimierung", Vieweg: Braunschweig/Wiesbaden
  • Härdle, W. 和 Simar, L. (2003): "應用多元統計分析", Springer: Berlin Heidelberg
  • Königsberger, K. (2004): "分析 I", Springer: Berlin Heidelberg
  • Ruud, P. (2000): "古典計量經濟學理論", 牛津大學出版社: 紐約
華夏公益教科書