跳轉到內容

統計/數值方法/最佳化

來自華夏公益教科書,為開放世界提供開放書籍

在下文中,我們將提供一些關於數值最佳化演算法的筆記。由於存在眾多方法,我們將只關注所謂的梯度方法。我們之所以將此類方法作為考慮數值最佳化演算法的自然起點,主要有以下兩點原因。一方面,這些方法在該領域確實是主力軍,因此它們在實踐中的頻繁使用證明了它們在這裡的覆蓋範圍。另一方面,這種方法非常直觀,因為它在某種程度上從眾所周知的最優值性質自然地推匯出。我們將特別關注該類方法的三個例子:牛頓方法最速下降法以及可變度量方法,其中包括擬牛頓方法

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

理論動機

[編輯 | 編輯原始碼]

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

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

即雅可比矩陣 等於零

以及

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

即海森矩陣 正半定的。

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


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

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


與上述兩個條件相反,此條件足以檢測最優值——考慮兩個簡單的例子

,其中

以及

,其中 並且

牢記這一小點,我們現在可以轉向數值最佳化程式。

數值解

[編輯 | 編輯原始碼]

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

(A1) 集合 緊湊 的。

其中 是演算法給定的某個初始值。這個假設的意義在於 *魏爾斯特拉斯定理*,它指出每個緊湊集都包含其 *上確界* 和其 *下確界*。因此,*(A1)* 保證了在 中存在某個解。在這個全域性最小值 處,當然有 。因此,考慮到上述討論,最佳化問題基本上可以歸結為求解方程組

下降方向

[編輯 | 編輯原始碼]

這種方法的問題當然很普遍,因為 對於 極大值和鞍點 也是成立的。因此,好的演算法應該確保極大值和鞍點都被排除為可能的解。極大值可以透過要求 ,即我們限制自己於一個 序列 ,使得函式值在每一步都減小。問題當然是在這是否總是可能的。幸運的是,這是可能的。其基本見解如下。在構建對映 (即,從 的規則)時,我們有兩個自由度,即

  • 方向
  • 步長

因此,我們可以選擇我們想要移動的方向以到達 以及這種移動需要多遠。所以,如果我們選擇 以“正確的方式”,我們可以有效地確保函式值下降。以下將提供此推理的正式表示。


引理:如果 並且 ,那麼: 使得

證明:因為 並且 ,因此得出 對於足夠小的

下降法的通用過程

[edit | edit source]

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

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) 透過 隱式定義了方向向量 ,對 的要求直接轉化為對 的要求。

為什麼使用梯度方法?

[edit | edit source]

當考慮對 的條件時,很明顯“梯度方法”一詞從何而來。當 由以下給出時

我們有以下結果

鑑於 是有效選擇的,並且 滿足

我們有

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

換句話說:只要不朝與梯度垂直的方向移動,並且如果步長選擇有效,梯度方法 就可以保證收斂到解

梯度方法中的一些特定演算法

[編輯 | 編輯原始碼]

現在,讓我們探索這一類別中的三種特定演算法,它們在各自選擇的 上有所不同。

牛頓法

[編輯 | 編輯原始碼]

牛頓法 是該領域中最受歡迎的方法。它是一種眾所周知的方法,用於求解所有型別方程的,因此很容易應用於最佳化問題。牛頓法的主要思想是線性化方程組,得到

(15) 可以很容易地求解出 x,因為解只是(假設 非奇異的)

為了我們的目的,我們選擇 為梯度,並得出

其中 是所謂的牛頓方向

牛頓法的性質
[編輯 | 編輯原始碼]

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

  • 如果正定,則 是按照引理1意義上的下降方向。
  • 牛頓法使用一階二階導數的區域性資訊來計算
  • 由於

牛頓法使用 的固定步長。因此,牛頓法一定是一種按照引理1意義上的下降方法。原因是固定步長 可能大於引理1中給出的臨界步長。下面我們以Rosenbrock函式為例說明牛頓法不是下降方法。

  • 該方法可能很耗時,因為在每一步k中計算 很麻煩。在應用工作中,可以考慮使用近似方法。例如,可以每s步更新一次Hessian,或者可以依賴於區域性近似。這被稱為擬牛頓法,將在關於可變度量法的部分中討論。
  • 為了確保該方法為下降方法,可以使用一個有效的步長,並設定

最速下降法

[edit | edit source]

另一種常用的方法是最速下降法。這種方法的思想是選擇方向,使得函式值f的下降最大。儘管這個過程乍一看很合理,但它實際上使用的資訊比牛頓法少,因為它忽略了Hessian關於函式曲率的資訊。特別是在下面的應用中,我們將看到幾個關於這個問題的例子。

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

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

顯然 (21) 在 下成立,如 (20) 所示。

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

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

最速下降法的性質
[edit | edit source]
  • 對於 ,最速下降法定義了一個下降方向,正如引理 1所述,因為

  • 最速下降法僅在區域性上是合理的,因為它忽略了二階資訊。
  • 特別是當目標函式很平坦(即解 位於一個“山谷”中)時,由最速下降法定義的序列會劇烈波動(見下面的應用,尤其是 Rosenbrock 函式的例子)。
  • 由於它不需要海森矩陣,因此最速下降法的計算和實現很容易且快速。

可變度量法

[edit | edit source]

牛頓法最速下降法都屬於可變度量法類的一般方法。此類方法依賴於更新公式

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

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

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

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

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

  • 對於 ,可以得出

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

擬牛頓法
[edit | edit source]

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

  • 應該近似於海森矩陣 以利用有關曲率的資訊,以及
  • 更新 應該很容易,這樣演算法仍然相對快(即使在高維情況下)。

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

因為所有滿足 (26) 的 反映了有關海森矩陣的資訊。為了看到這一點,請考慮定義為以下函式的

那麼很明顯, 並且 。所以 的鄰域內是相當相似的。為了確保 處也是一個好的近似,我們希望選擇 使得在 處的梯度相同。透過

很明顯, 如果 滿足 (26) 中給出的擬牛頓方程。但隨後可以得出

因此,只要 之間相差不大, 滿足 (26) 是 的一個很好的近似。

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

其中 以及 。此外,(30) 確保所有 都是正定的,正如變尺度法 所要求的那樣,是下降的。

擬牛頓法的性質
[編輯 | 編輯原始碼]
  • 它使用關於 曲率的二階資訊,矩陣 與海森矩陣 有關。
  • 儘管如此,它確保了簡單快速的更新(例如,透過 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:由於固定步長,牛頓法越界。

應用 III:最大似然估計

[edit | edit source]

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

像往常一樣,令

是給定 X 時的 Y 的**條件密度**,引數為,以及

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

如果我們假設資料是**獨立同分布 (iid)**,那麼樣本對數似然函式為

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


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

最大似然估計的具體示例

[編輯 | 編輯原始碼]

假設一個簡單的線性模型

其中 。那麼,Y 的條件分佈由U 的分佈決定,即

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

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

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

使用準則函式

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

參考文獻

[edit | edit source]
  • Alt, W. (2002): "Nichtlineare Optimierung", Vieweg: Braunschweig/Wiesbaden
  • Härdle, W. and Simar, L. (2003): "Applied Multivariate Statistical Analysis", Springer: Berlin Heidelberg
  • Königsberger, K. (2004): "分析 I", 施普林格出版社: 柏林 海德堡
  • Ruud, P. (2000): "經典計量經濟學理論", 牛津大學出版社: 紐約
華夏公益教科書