機器學習是一個目標函數優化問題,給定目標函數f,約束條件會有一般包括以下三類:關於最優化問題,大都令人比較頭疼,首先大多教材講解通篇都是公式,各種符號表達,各種梯度,叫人看的雲裡霧裡。有沒有結合幾何圖形闡述以上問題的?很慶幸,還真有這麼好的講解材料,圖文並茂,邏輯推導嚴謹,更容易叫我們理解拉格朗日乘數法、KKT條件為什麼就能求出極值。1 僅含等式約束
通過以上方法求解此類問題,但是
為什麼它能求出極值呢?這是本篇文章寫作目的,解釋為什麼這種方法就能求出極值。2 找找 sense大家時間都有限,只列出最核心的邏輯,找找sense, 如有興趣可回去下載PPT仔細體會。
所以,f(x)的一系列取值包括0,1,100,10000等任意實數:
但是,約束條件h(x)註定會約束f(x)不會等於100,不會等於10000...
我們想要尋找一個移動x的規則,使得移動後f(x+delta_x)變小,當然必須滿足約束h(x+delta_x)=0
![]()
使得f(x)減小最快的方向就是它的梯度反方向,即
因此,要想f(x+delta_x) 變小,通過圖形可以看出,只要保持和梯度反方向夾角小於90,也就是保持大概一個方向,f(x+delta_x)就會變小,轉化為公式就是:
![]()
如下所示的一個delta_x就是一個會使得f(x)減小的方向,但是這種移動將會破壞等式約束: h(x)=0,關於準確的移動方向下面第四小節會講到
綠圈表示法向的正交方向
x沿著綠圈內的方向移動,將會使得f(x)減小,同時滿足等式約束h(x) = 0
根據第四小節講述,delta_x必須正交於h(x),所以:
至此,我們就找到f(x)偏導數等於0的點,就是下圖所示的兩個關鍵點(它們也是f(x)與h(x)的臨界點)。且必須滿足以下條件,也就是兩個向量必須是平行的:
![]()
至此,已經完全解碼拉格朗日乘數法,拉格朗日巧妙的構造出下面這個式子:
![]()
還有取得極值的的三個條件,都是對以上五個小節中涉及到的條件的編碼
關於第三個條件,稍加說明。
對於含有多個變量,比如本例子就含有2個變量x1, x2,就是一個多元優化問題,需要求二階導,二階導的矩陣就被稱為海塞矩陣(Hessian Matrix)
與求解一元問題一樣,僅憑一階導數等於是無法判斷極值的,需要求二階導,並且二階導大於0才是極小值,小於0是極大值,等於0依然無法判斷是否在此點去的極值。
![]()
備註:公眾號菜單包含了整理了一本AI小抄,非常適合在通勤路上用學習。
備註:加入本站微信群或者qq群,請回復「加群」
加入知識星球(4500+用戶,ID:92416895),請回復「
知識星球」
喜歡文章,點個在看