拉格朗日乘子法的證明
在學習支持向量機的時候,計算對偶問題時用到了拉格朗日乘子法((Lagrange multiplier method)),回想起高中時使用拉格朗日乘子法求不等式約束條件下的最優化問題時的困惑,雖然一直知道用,但是卻不知道為什么拉格朗日乘子法能夠用。知其然更應知其所以然,本文就來扒一扒“拉格朗日乘子法”的來龍去脈。
等式約束下的最優化問題
給定一個不等式約束條件下的最優化問題,
$$\begin{array} {I}\mathop {\min }\limits_x \quad f(x) \ s.t.\quad g(x) = 0\end{array}\quad\quad (1)$$
此處假定$f(x)$為凸函數,需要找到的是在約束條件$g(x)=0$的條件下,使得目標函數$f(x)$最小的$x$值(注:$x$為一個n維向量)。一般情況下,對於一個凸函數的極值問題,我們只需要找到令目標函數的導數${f_x^{'}}=0$的點$x$即可。然而,由於此處存在的等式約束條件,使得目標函數導數等於0的點不一定能夠滿足約束條件。
從幾何的角度看,這個問題的目標是在由方程$g(x)=0$所確定的$d-1$維曲面上,找到能使得目標函數$f(x)$最小化的$d$維點。我們以下圖中二維空間為例:求函數$f(x,y)$在約束條件$g(x,y)=0$下的最小值。我們想象$f(x,y)$是一座“山”,$x$與$y$分別是其經緯度,$f(x,y)$為其海拔,圖中的橢圓為這座"山"的等高線;約束條件$g(x,y)=0$為海拔為0的平面上的一條曲線。我們在這座"山"上亂逛,想要找到一個最高的點(最大與最小問題是相對的),但是我們的經緯度必須滿足$g(x)=0$,即投影到海拔為0的平面上的話必須與圖中紅色曲線一致。
顯然,如果我們找到了一個最高點,必然有最高點所在的等高線$f(x,y)=d_1$與約束曲線$g(x)=0$是相切的。否則,我必然還可以沿着紅色的約束曲線繼續走,找到一個更高的點(例如:圖中紅色曲線與登高線$f(x,y)=d_2$相交)。用數學語言描述相切便意味着,在極值點,有:$$\nabla f(x) = \lambda *\nabla g(x)$$,即兩個函數在極值點的梯度向量是平行的。
這個時候我們引入拉格朗日函數:$L(x, \lambda) = f(x) + \lambda g(x)$, 其中,$\lambda$就是拉格朗日乘子,為一個未知常數。 在求該函數關於$x,\lambda$極值問題時有:
$$\begin{array}{I}{1}^{o}\quad \nabla_x L(x,\lambda) = \nabla f(x) - \lambda *\nabla g(x)=0 \ 2^{o} \quad \nabla_{\lambda}L(x,\lambda) = g(x)=0\end{array} \qquad (2)$$
這意味着: 無約束條件下最小化拉格朗日函數$L(x,\lambda)$與有約束條件$g(x)=0$下原目標函數$f(x)$最小化的問題是一致的。求出令拉格朗日函數$L(x,\lambda)$最小的$(x,\lambda)$的值,便解出了原優化問題$(1)$的解,即我們將原優化問題$(1)$轉換成了優化問題$(2)$:
$$\mathop{\min}\limits_{x, \lambda}L(x, \lambda) = f(x)+\lambda g(x) \qquad(3)$$
只要解除了$(2)$中線性方程組的解,那么便能夠得到原目標函數的極值了。
不等式約束條件下的最優化問題
等式約束下的最優化的問題只是熱熱身,真正麻煩卻也重要的,是不等式約束下的最優化問題。考慮將$(1)$中的問題進行推廣,對最優化問題加上不等式約束:
$$\begin{array} {I}\mathop {\min }\limits_x \quad f(x) \ s.t.\quad h(x) = 0\ \qquad \ \ \ g(x) \le 0\end{array} \quad\quad (4)$$
仍然考慮向量$x$為二維空間中的點的場景,圖中陰影部分為$g(x)<0$區域,橢圓線為"盆地"的登高線, 不等式約束意味着我們只能在陰影區域找"盆地"的最低點。此時可能存在兩種情況:
- “盆地“的中心在陰影部分區域,此時我們可以不用理會約束條件,直接求$f(x)$的極小值就行;
- “盆地”的中心在陰影部分外面,此時在我們所能找到的極值點,必然有$g(x)=0$曲線與極值點的登高線相切,否則必然能夠往陰影區域繼續找到一個海拔更低的點。並且該極小值點關於約束函數的梯度$\nabla g(x)$與關於目標函數的梯度$\nabla f(x)$方向必定是相反的(不相反卻相切的情況,只能是第一種,但那種情況的切點並不是極小值) 。
總結上面的情況,給出不等式約束條件下的庫恩-塔克條件為:
$$相切要么相切要么極大值與無關\begin{array}{I}1^{o}\nabla_x L(x) = \nabla f(x) + \lambda\nabla g(x) +u\nabla h(x) = 0 \quad...相切\ 2^{o} \nabla_u L(x) = h(x) = 0 \ 3^{o} \nabla_ \lambda L(x) = g(x) \le 0 \ 4^{o}\lambda \ge0 \ 5^{o}u*g(x) = 0 \quad....要么相切g(x)=0,要么極大值與g(x)無關,\lambda=0\end{array}$$