拉格朗日乘子法 - KKT條件 - 對偶問題


拉格朗日乘子法 - KKT條件 - 對偶問題

支持向量機 (一): 線性可分類 svm

支持向量機 (二): 軟間隔 svm 與 核函數

支持向量機 (三): 優化方法與支持向量回歸



接下來准備寫支持向量機,然而支持向量機和其他算法相比牽涉較多的數學知識,其中首當其沖的就是標題中的拉格朗日乘子法、KKT條件和對偶問題,所以本篇先作個鋪墊。

大部分機器學習算法最后都可歸結為最優化問題。對於無約束優化問題: \(\min\limits_\boldsymbol{x} f(\boldsymbol{x})\) (本篇為形式統一,只考慮極小化問題),一般可直接求導並用梯度下降或牛頓法迭代求得最優值。


對於含有等式約束的優化問題,即:

\[\begin{aligned} {\min_{\boldsymbol{x}}} & \;\;{f(\boldsymbol{x})} \\ {\text { s.t. }} & \;\;{h_{i}(\boldsymbol{x}) = 0}, \quad i=1,2, \ldots, m \end{aligned} \]

由於等式約束 \(h_i(\boldsymbol{x}) = 0\) 的存在,無法直接求導迭代求解。拉格朗日乘子法是解決此類問題的常用方法,其核心思想是將約束優化轉化為無約束優化問題,即將有 \(d\) 個變量和 \(m\) 個等式約束條件的最優化問題轉換為一個有 \((d + m)\) 個變量的函數求平穩點的問題。





拉格朗日乘子法


下面畫圖來直觀理解拉格朗日乘子法,先看下左圖: 黑色虛線為函數 \(f(x)\) 的等值線,紅色實線為約束條件 \(h(x) = 0\) ,這里的關鍵是 \(f(x)\) 在極小點處必然與 \(h(x) = 0\) 相切,如下左圖相切於黃色點 \(x_1\) 。為什么這么說?來看下右圖: 如果 \(f(x)\)\(h(x) = 0\) 不相切,則相交於兩個黃色點,而由於 \(x\) 是連續的,則必然能找到一個新的 \(x_2\) 使得 \(f(x_2)\) 更小,圖中表示為藍色虛線,使得在 \(x_2\)\(f(x)\)\(h(x) = 0\) 相切。

由於相交的兩個黃色點不是極小點,梯度 \(\nabla f(x_1)\) 仍然會沿着 \(h(x) = 0\) 變化,因而在這兩個點 \(\nabla f(x_1)\) 不與 \(h(x) = 0\) 的切線方向垂直,只有在極小點才會正交。


由此可以得出兩個推論 (見下圖):

(1). 對於 \(f(\boldsymbol{x})\) 的極小點 \(\boldsymbol{x}^*\)\(f(\boldsymbol{x})\)\(\boldsymbol{x}^*\) 處的梯度 \(\nabla f(\boldsymbol{x}^*)\)\(h(\boldsymbol{x}) = 0\) 的切線方向垂直

(2). 對於 \(f(\boldsymbol{x})\) 的極小點 \(\boldsymbol{x}^*\)\(h(\boldsymbol{x})\)\(\boldsymbol{x}^*\) 處的梯度 \(\nabla h(\boldsymbol{x}^*)\)\(h(\boldsymbol{x}) = 0\) 的切線方向垂直


對於第 (2) 點,可作如下證明: 設 \(\boldsymbol{x}(t)\) 為連續可微的函數,則有 \(h(\boldsymbol{x}(t)) = 0\) ,利用鏈式法則:

\[\frac{\text{d}}{\text{d} t} h(\boldsymbol{x}(t)) = \nabla h(\boldsymbol{x}(t)) \cdot \frac{\text{d}{\boldsymbol{x}(t)}}{\text{d}t} = 0 \]

\(\frac{\text{d}{\boldsymbol{x}(t)}}{\text{d}t}\) 即為切線方向,所以本質上 \(h(\boldsymbol{x}) = 0\) 上任意一點的梯度 \(\nabla h(\boldsymbol{x})\) 都與其正交,\(\boldsymbol{x}^*\) 自然也不例外。


於是可以得出在極小點處 \(\nabla h(\boldsymbol{x}^*)\)\(\nabla f(\boldsymbol{x}^*)\) 平行,即存在 \(\lambda \neq 0\) ,使得:

\[\nabla f(\boldsymbol{x}^*) + \lambda \nabla h(\boldsymbol{x}^*) = 0 \tag{1.1} \]

\(\lambda\) 被稱為拉格朗日乘子,下面定義拉格朗日函數:

\[\mathcal{L}(\boldsymbol{x}, \lambda) = f(\boldsymbol{x}) + \lambda \,h(\boldsymbol{x}) \tag{1.2} \]

將上式分別對 \(\boldsymbol{x}\)\(\lambda\) 求導置零,就分別得到 \((1.1)\) 式和等式約束 \(h(\boldsymbol{x}) = 0\) ,這樣就將原約束優化問題轉化為對 \(\mathcal{L}(\boldsymbol{x}, \lambda)\) 的無約束優化問題。 然而這個方法找出來的平穩點不一定都是原問題的極值點,如下左圖是一個極值點,而下右圖卻不是極值點。





KKT 條件


上面拉格朗日乘子法解決的是等式約束優化問題,而對於不等式約束優化問題也可解,只不過要加一些附加條件:

\[\begin{aligned} {\min_{\boldsymbol{x}}} & \;\;{f(\boldsymbol{x})} \\ {\text { s.t. }} & \;\;{g_{i}(\boldsymbol{x}) \leqslant 0}, \quad i=1,2, \ldots, m \\ & \;\;{h_{j}(\boldsymbol{x}) = 0}, \quad j=1,2, \ldots, n \end{aligned} \]

先下一個定義:

對於一個不等式約束 \(g_j(\boldsymbol{x}) \leqslant 0\) ,若在 \(\boldsymbol{x}^*\)\(g_j(\boldsymbol{x}^*) < 0\) ,那么稱該不等式約束是 \(\boldsymbol{x}^*\) 處的不起作用約束;若在 \(\boldsymbol{x}^*\)\(g_j(\boldsymbol{x}^*) = 0\) ,那么稱該約束是 \(\boldsymbol{x}^*\) 處的起作用約束。


對於該定義的直觀解釋見下圖: 灰色部分為約束 \(g(\boldsymbol{x}) \leqslant 0\) 的可行域,若最優點 \(\boldsymbol{x}^*\) 在區域內 (下左圖,\(g(\boldsymbol{x}) < 0\) ) ,則約束並沒有起到”約束的作用“,這樣可直接通過 \(\nabla f(\boldsymbol{x}) = 0\) 來獲得最優點,這等價於讓 \((1.1)\) 式中 \(\lambda = 0\)

若最優點 \(\boldsymbol{x}^*\) 在區域邊界上 (下右圖,\(g(\boldsymbol{x}) = 0\) ) ,那么對於 \(f(\boldsymbol{x})\) 來說,在 \(\boldsymbol{x}^*\) 處是外部較大,內部較小,因為越靠近等值線中心 \(f(\boldsymbol{x})\) 越小; 而對於 \(g(\boldsymbol{x})\) 來說,在 \(\boldsymbol{x}\) 處的變化趨勢是內部較小,外部較大,因為在內部 \(g(\boldsymbol{x}) \leqslant 0\) ,外部 \(g(\boldsymbol{x}) > 0\) 。這樣 \(\nabla f(\boldsymbol{x}^*)\)\(\nabla g(\boldsymbol{x}^*)\) 的方向必相反,此時 \(g(\boldsymbol{x}) = 0\), 那么套用 \((1.1)\) 式可得 \(\lambda > 0\)

綜合這兩種情況:

\[\begin{cases} g(\boldsymbol{x}) < 0, & \lambda = 0 \\[1ex] g(\boldsymbol{x}) = 0, & \lambda > 0 \end{cases} \quad \Longrightarrow \quad \lambda \geqslant 0, \;\;\lambda \,g(\boldsymbol{x}) = 0 \tag{2.1} \]

這被稱為互補松弛條件 (\(\text{complementary slackness}\)) 。

由此推廣到多個約束,定義廣義拉格朗日函數:

\[\mathcal{L}(\boldsymbol{x}, \boldsymbol{\alpha}, \boldsymbol{\beta}) :=f(\boldsymbol{x})+\sum_{i=1}^{m} \alpha_{i} g_{i}(\boldsymbol{x})+\sum_{j=1}^{n} \beta_{j} h_{j}(\boldsymbol{x}) \tag{2.2} \]

\(\boldsymbol{\alpha} \geqslant 0\) 為 KKT 乘子,\(\boldsymbol{\beta}\) 為拉格朗日乘子,其最優解滿足:

\[\begin{cases} g_i(\boldsymbol{x}) \leqslant 0, & i=1,2, \ldots, m \qquad\qquad(1) \\[1ex] {h_{j}(\boldsymbol{x}) = 0}, & j=1,2, \ldots, n \,\qquad\qquad(2) \\[1ex] \alpha_i \geqslant 0, & i=1,2, \ldots, m \qquad\qquad(3) \\[1ex] \alpha_i g_i(\boldsymbol{x}) = 0, & i=1,2, \ldots, m \qquad\qquad(4) \end{cases} \]

\((1) \sim (2)\) 式為原問題的約束條件,\((3) \sim (4)\) 式上文定義中已證明。這就是不等式約束優化問題的 KKT 條件 (\(\text{Karush-Kuhn-Tucker Condition}\)),KKT 條件是拉格朗日乘子法在不等式約束優化問題上的泛化。KKT 條件是極小點的必要條件,即滿足 KKT 條件不一定是極小點,但極小點必滿足 KKT 條件。





對偶問題


將原始問題轉化為對偶問題是求解帶約束優化問題的一種方法,當然這不是唯一的方法,只不過轉化為對偶問題后往往更容易求解,因而被廣為應用。

設原始優化問題為:

\[\begin{aligned} {\min_{\boldsymbol{x}}} & \;\;{f(\boldsymbol{x})} \\ {\text { s.t. }} & \;\;{g_{i}(\boldsymbol{x}) \leqslant 0}, \quad i=1,2, \ldots, m \\ & \;\;{h_{j}(\boldsymbol{x}) = 0}, \quad j=1,2, \ldots, n \end{aligned} \tag{3.1} \]

其拉格朗日函數為 \(\mathcal{L}(\boldsymbol{x}, \boldsymbol{\alpha}, \boldsymbol{\beta}) =f(\boldsymbol{x})+\sum_{i=1}^{m} \alpha_{i} g_{i}(\boldsymbol{x})+\sum_{j=1}^{n} \beta_{j} h_{j}(\boldsymbol{x}), \;\;\alpha \geqslant 0\) 。若 \(\boldsymbol{x}\) 違反了一些約束 (即存在 \(i,j\) 使得 \({g_{i}(\boldsymbol{x}) \geqslant 0}\)\(h_j(\boldsymbol{x}) \neq 0\) ) ,那么 \(\max\limits_{\boldsymbol{\alpha}, \boldsymbol{\beta}} \mathcal{L}(\boldsymbol{x}, \boldsymbol{\alpha}, \boldsymbol{\beta}) = \infty\) ,則:

\[\begin{aligned} \min _{\boldsymbol{x}} \max _{\boldsymbol{\alpha}, \boldsymbol{\beta}} \mathcal{L}(\boldsymbol{x}, \boldsymbol{\alpha}, \boldsymbol{\beta}) = & \min _{\boldsymbol{x}}\left(f(\boldsymbol{x})+\max _{\boldsymbol{\alpha}, \boldsymbol{\beta}}\left(\sum_{i=1}^{m} \alpha_{i} g_{i}(\boldsymbol{x})+\sum_{j=1}^{n} \beta_{j} h_{j}(\boldsymbol{x})\right)\right) \\[1ex] = & \min_{\boldsymbol{x}}\left(f(\boldsymbol{x})+\left\{\begin{array}{l}{0}\,, & 若 \boldsymbol{x} \,滿足約束 \\ {\infty}\,, & 若 \boldsymbol{x} \,不滿足約束\end{array}\right.\right) \\[1ex] = & \min_{\boldsymbol{x}} f(\boldsymbol{x}), \;\;且 \boldsymbol{x} \, 滿足約束 \end{aligned} \]

這樣原始優化問題 \((3.1)\) 就等價於:

\[\begin{align*} \min _{\boldsymbol{x}} \max _{\boldsymbol{\alpha}, \boldsymbol{\beta}} & \;\; \mathcal{L}(\boldsymbol{x}, \boldsymbol{\alpha}, \boldsymbol{\beta}) \\ \text{s.t.} & \;\; \alpha_i \geqslant 0, \quad i=1,2, \ldots, m \end{align*} \]


接下來定義 \((3.1)\) 式的對偶問題 (dual problem) 為:

\[\begin{align*} \max _{\boldsymbol{\alpha}, \boldsymbol{\beta}}\min _{\boldsymbol{x}} & \;\; \mathcal{L}(\boldsymbol{x}, \boldsymbol{\alpha}, \boldsymbol{\beta}) \\ \text{s.t.} & \;\; \alpha_i \geqslant 0, \quad i=1,2, \ldots, m \end{align*} \]

對偶問題是原始問題的下界,即:

\[\max _{\boldsymbol{\alpha}, \boldsymbol{\beta}}\min _{\boldsymbol{x}} \mathcal{L}(\boldsymbol{x}, \boldsymbol{\alpha}, \boldsymbol{\beta}) \; \leq \; \min _{\boldsymbol{x}} \max _{\boldsymbol{\alpha}, \boldsymbol{\beta}} \mathcal{L}(\boldsymbol{x}, \boldsymbol{\alpha}, \boldsymbol{\beta}) \tag{3.2} \]

上式為什么成立?因為任意值小於等於最大值,所以對於任意 \(\boldsymbol{\alpha}, \,\boldsymbol{\beta}\)\(\min _{\boldsymbol{x}} \mathcal{L}(\boldsymbol{x}, \boldsymbol{\alpha}, \boldsymbol{\beta}) \; \leq \; \min _{\boldsymbol{x}} \max _{\boldsymbol{\alpha}, \boldsymbol{\beta}} \mathcal{L}(\boldsymbol{x}, \boldsymbol{\alpha}, \boldsymbol{\beta})\) ,如果上式恆成立,則不等式左邊的 \(\min _{\boldsymbol{x}} \mathcal{L}(\boldsymbol{x}, \boldsymbol{\alpha}, \boldsymbol{\beta})\) 的極大值 \(\max _{\boldsymbol{\alpha}, \boldsymbol{\beta}}\min _{\boldsymbol{x}} \mathcal{L}(\boldsymbol{x}, \boldsymbol{\alpha}, \boldsymbol{\beta})\) 一定小於等於 不等式右邊的 \(\min _{\boldsymbol{x}} \max _{\boldsymbol{\alpha}, \boldsymbol{\beta}} \mathcal{L}(\boldsymbol{x}, \boldsymbol{\alpha}, \boldsymbol{\beta})\) ,這就是所謂的 ”極小的極大 \(\leqslant\) 極大的極小“ 。


\((3.2)\) 式是不等式,所以該性質被稱為弱對偶性 (weak duality)。若要等式成立,則為強對偶性 (strong duality),需要滿足 slater 條件:

\(\text{slater}\) 條件: 原始問題為凸優化問題,即 \(f(\boldsymbol{x})\)\(g(\boldsymbol{x})\) 為凸函數,\(h(\boldsymbol{x})\) 為仿射函數,且可行域中至少有一點使不等式約束嚴格成立時,強對偶性成立,對偶問題等價於原始問題。



最后,利用強對偶性求出的 \(\boldsymbol{x}, \boldsymbol{\alpha}, \boldsymbol{\beta}\) 同時也是原始問題的最優解,所以依然滿足 KKT 條件:

\[\begin{cases} 原始問題可行: & g_i(\boldsymbol{x}) \leqslant 0, \;{h_{j}(\boldsymbol{x}) = 0} \\[1ex] 對偶問題可行: & \alpha_i \geqslant 0 \\[1ex] 互補松弛: & \alpha_i g_i(\boldsymbol{x}) = 0 \\[1ex] 拉格朗日平穩性: & \nabla_{\boldsymbol{x}}\mathcal{L}(\boldsymbol{x}, \boldsymbol{\alpha}, \boldsymbol{\beta}) = 0 \end{cases} \]







/


免責聲明!

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



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