拉格朗日乘子法 學習筆記

原本是想寫支持向量機的學習筆記的而後以爲內容太多了越寫越不想寫因而咕掉了
把寫好的拉格朗日乘子法發上來吧QwQ函數

拉格朗日乘子法

wiki連接學習

拉格朗日乘子法用來求解帶多個等式約束的狀況下的多元函數極值。優化

它將一個有n個變量與m個約束條件的最優化問題轉換爲一個解有n + m個變量的方程組的解的問題。ui

單約束

考慮平面上的狀況:
\[ \max f(x,y)\\ s.t.\ g(x,y)=0 \]spa

引入Lagrange multiplier \(\lambda\) ,構造Lagrange function:
\[ F(x,y,\lambda) = f(x,y) - \lambda \cdot g(x,y) \]
則f的極值點是F的駐點,F的駐點也不必定是f的極值點。blog

intuition:f的最大值,意味着f值不會沿着某個g=0的方向上升。在\(g\equiv 0\)的方向上,\(\lambda\)再也不影響,f最大值就是F最大值。從下面的contour圖能夠直觀看出。ip

img

因此,要找g=0與f的contour方向相同的點,這個時候多是f的最大值。(切點或者重合的一段contour)get

注意到gradient是垂直於contour的,因此此時f與g的梯度方向相同或相反,大小不定,即知足:\(\nabla_{x,y} f = \lambda \nabla_{x,y} g\)it

能夠發現:
\[ \nabla _{x,y,\lambda} F(x,y,\lambda) = 0 \]
等價於
\[ \begin{equation} \left\{ \begin{array}{l} \nabla_{x,y} f(x,y) = \lambda \nabla_{x,y} g(x,y) \\ g(x,y) = 0 \end{array} \right. \end{equation} \]
因此f的最大值點就是F的駐點啦!io

多約束

\(\mathbf{x}\)爲n維向量,有m個約束

lagrange function:
\[ F(\mathbf{x},\mathbf{\lambda}) = f(\mathbf{x}) - \sum_{i=1}^m\lambda_ig_i(\mathbf{x}) \]
此時取最大值時\(f\)的梯度爲\(g_1, g_2, ... , g_m\)的梯度的線性組合

每一個限制是一個超平面,\(g_i=0\)的可行方向空間就是垂直於\(\nabla g_i\) 的向量空間。考慮全部的限制後, 可行方向空間\(A\)就是全部\(\nabla g_i\)生成的空間\(S\)的正交補。

\(\nabla f(x) \in A^{\bot} = S\),因此就是線性組合啦!

一樣的:
\[ \nabla F = 0 \]
等價於
\[ \begin{equation} \left\{ \begin{array}{l} \nabla_{\mathbf{x}} f(\mathbf{x}) = \sum_{i=1}^m \lambda_i \nabla_{} g_i(\mathbf{x}) \\ g_i(\mathbf{x}) = 0, \ \forall i=1..m \end{array} \right. \end{equation} \]
\(\nabla F = 0\)獲得的就是一個n+m個方程的方程組。

相關文章
相關標籤/搜索