【通俗理解】凸優化

2021-03-01 AI啟蒙研究院

註:以下內容參考了Shu-Cherng Fang教授2009年在清華的夏季學期課程《Global Optimization with Applications》講義。

今天介紹一點凸優化方面的知識~內容可能有點無聊,看懂了這篇文章,會對求極值和收斂有進一步理解,比如:

了解為什麼向量機(SVM)等的推導中,求極值時可以把約束條件加在目標函數後面來變成一個無約束的優化問題。

理解EM算法(聚類,GMM等)為什麼收斂。

之前文章有介紹過,一個算法有效至少要滿足兩個條件:1)極值存在,2)收斂。極值不存在說明模型無效,算法無意義。算法不能收斂意味著找不到極值,也沒有價值。這兩個問題凸優化都可以幫我們回答。

在開始之前,我們先來回顧一下支持向量機(SVM)的推導過程。

SVM的任務就是尋找這樣一個超平面H把樣本無誤地分割成兩部分,並且使H1和H2的距離最大。要找到這樣的超平面,只需最大化間隔Margin,也就是最小化w^2。

然後直接告訴你:對於不等式約束的條件極值問題,可以用拉格朗日方法求解。而拉格朗日方程的構造規則是:用約束方程乘以非負的拉格朗日係數,然後再從目標函數中減去。於是得到拉格朗日方程如下:

為什麼可以這樣做?看完本文你就能理解了。

凸集合與凸函數:在前面一篇《黨給我智慧給我膽,梯度給我努力的方向》中,已經說明了梯度的作用,並指出個人的行為都自覺或無意地順著梯度方向。

這不難理解。如果讓一個蒙上眼睛的人去山頂,他自然會選擇海拔升高的方向行走。至於最後能不能到達,要看地形。要是一個土丘(凸函數)那沒問題,如果要是連綿不斷的群山(非凸函數),只能保證到達一個小山峰(極值),而這個不一定是所有山峰中最高的(最值)。

由於凸函數的極值點就是最值點,相對於非凸函數,我們更喜歡凸函數。這裡不但要求目標函數是凸的,其定義的空間也必須是凸的集合。正如要求地形是凸的,能走的路構成的集合也必須是凸的。

凸凸凸,到底啥是凸集合,啥是凸函數???

凸集合:滿足集合內任意兩點的連線也在這個集合裡的就是凸集合。凸集合有個有趣的separating性質,以二維空間為例,任意一點y不屬於這個凸集合,則一定存在一條直線把這個點和凸集合分開。

凸函數:下面兩個圖畫出了凸函數,也給出了凸函數的兩個性質:

兩點永遠太高;如下面第一個圖,用凸函數兩點之間的連線上的一點R來估計函數值L,永遠有R>L。

一點永遠太低;如下面第二個圖,用凸函數的切線上的一點R來估計函數值L,永遠有R<L。寫出

上面的第一個性質「兩點永遠太高」也可以擴展到多個點的線性組合,寫起來就是Jensen不等式的形式

其中a_i取值0~1,a_i的和為1。

根據第二個性質「一點永遠太高」,很容易證明黨給我智慧給我膽,梯度給我努力的方向裡提到的凸函數極值點的一個性質:

根據上面性質「一點永遠太高」的公式,有:

上面公式可以從兩個層面來理解。一方面x*是極值,即任取定義域內一點得到的f(y)>f(x*);另一方面定義域任選一點y沿著y-x*的方向一定能達到x*。找到x*之前是不知道方向y-x*的,通常用梯度。

上鏡圖:為了把凸函數(convex function)和凸集合(convex set)一起討論,要介紹一下上鏡圖(epigraph)的概念,如下圖所示就是函數f上方的所有點構成的集合。

分割定理和支撐定理:顯然,凸函數對應的上鏡圖是一個凸集合。這樣可以和上面的第二個性質「一點永遠太低」聯繫起來了。稍微擴展一下到多維空間,二維空間的直線對應著多維空間的超平面(hyperplane)。第二個性質擴展到多維空間就是:存在一個超平面可以支撐起這個函數對應的上鏡圖,而且這個超平面和函數有一個交點。這個超平面叫做「支撐超平面」(supporting hyperplane)。

現在可以總結一下凸集合的兩個重要性質了:

separating:即凸集合可以被一個超平面把凸集合和凸集合外的一點區分開(separating hyperplane存在);

supporting:凸集合邊緣上任意一點都對應一個和凸集合相切的超平面(把整個空間分成含有凸集合和不含凸集合兩部分)(supporting hyperplane存在)。

其中supporting定理通過函數上鏡圖的概念和凸函數聯繫起來了,這構成了凸優化中對偶性duality的基石。在凸優化中的對偶,和信號處理裡的傅立葉變換一樣重要。

對偶:對偶性,是通過對偶變換(conjugate transform)把原函數變成了另一個函數(一定是凸的)。對函數y=f(x)來說,其對偶函數是以切線斜率k為自變量,以切線和y軸交點y*為值的函數。對應到多維函數,其對偶函數是以其支撐超平面(切平面)的正交方向向量,函數值是這個超平面和函數值對應坐標軸的交點。寫出來是這個樣子的:

看不懂吧?先思考下面兩個問題:

前面說的「支撐切平面的正交方向向量」是個什麼鬼?

上面conjugate transform得到的公式h(y),為什麼是個集合的形式,會有sup/inf?(sup/inf表示所有滿足條件的當中選最大/小的那個)

回顧一下前面講supporting hyperplane前,先介紹了separating hyperplane。設想負無窮有一個點M,那麼存在separating hyperplane把這個凸函數的上鏡圖和M區分開,這無數個separating hyperplane構成一個集合,取sup/inf就是取到和函數上鏡圖相切的超平面!所以對偶函數對應著原函數對所有separating hyperplane組成的集合取sup/inf,即對偶函數對應著原函數的所有supporting hyperplane的集合。

對偶函數滿足對偶不等式(conjugate inequality)

當y取值對應到切平面時取等號。此時y就是「支撐切平面的正交方向向量」,即梯度!上面第一個問題你回答上來了麼?

Primal problem & Dual problem:好了,現在大致對「對偶性」有一點幾何理解了,但這又和求極值有什麼關係?是否還記得小學「線性規劃」一節,極值一定出現在兩條直線的交點或某條直線上?換句話說,極值一定出現在幾條直線圍成的形狀的邊緣上,再換句話說,極值一定出現在幾條直線圍成的形狀的切線/切平面上。

受此啟發,所以對「切平面」重點研究可能是正確的方向。再看上面的對偶不等式,如果有一些約束使得<x,y>=0,則f(x)的最小值就和-h(y)的最大值相等了,這樣就把求min{f(x)}問題轉化成求max{-h(y)}=min{h(y)}問題。稱初始求min{f(x)}的問題成為primal problem,求min{h(y)}問題稱為dual problem。

好的,現在知道了,某些條件下可以通過求dual problem來間接求primal problem。但為什麼有什麼好處?這是因為很多情況下dual problem比primal problem好求解!

下圖是一個典型的問題,求X內函數f(x)的極值。

即使f(x)是一個簡單的凸函數(比如二次函數)也不太容易求解。問題的複雜性在於定義域是有約束條件(subject to some constraint)的。如果對x取值沒有約束(定義域X為整個超平面),則根據凸函數極值點性質

很容易知道在極值點x*有對應的導數/梯度為0。而對偶變換後,得到的dual problem可能是一個無約束條件的問題,非常容易求解。比如要求解:

s.t.是subject to的簡寫,是對x的約束條件。其對應的dual problem為

是一個無約束的求極值問題,要簡單多了。

注意,上面說的求到了dual problem的極值,就知道了primal problem的極值,這是有條件的:<x,y>=0。當大於零時,所謂的duality gap就出現了。搞數學的人給出了一堆各種條件的定理,指出什麼條件下可以沒有duality gap,這不是我們工程師所關心的,不去浪費時間探討了。看到這裡,只要了解對偶是什麼回事就可以了。

拉格朗日對偶:拉格朗日乘數法(Lagrange multiplier)在中學就學過了,用來求解有約束情況下的極值問題。比如一個人從家M點到公司C點,中間要去小河邊打一桶水,在小河的哪個位置打水最近?

河流的曲線方程g(x,y)就是這個問題的約束,要求的就是在這個約束條件下,到M和C點的距離和最近。直接套公式很容易求解,但相信很多人不明白為什麼拉格朗日乘數法為什麼起作用。這裡我們把它套在duality的框架下進行討論。

定義拉格朗日函數(lagrangian function)如下

這和conjugate transform的區別僅僅在於一個<x,y>。不繼續說了,否則還要介紹鞍點(saddle point),強對偶,弱對偶,還有min-max和max-min的概念。這裡只是告訴大家拉格朗日乘數法也可以歸結於duality的框架中。最前面的對偶通常叫做conjugate dual或geometric dual,Fenchel's dual,後面用拉格朗日函數的叫做Lagrangian dual。

對支持向量機(SVM)熟悉的同學知道,推導時的目標函數是一個二次函數,約束條件是一個超平面把兩類標記的點分開。求解這個最優化問題(quadratic programing)就用了Lagrangian dual。有人說了,好像沒有看到有求所謂的h(y)啊,是不是打開方式不對?這是因為二次函數的duality還是一個二次函數……好尷尬~下圖f(x)=0.5x^2,其conjugate dual是g(y)=-0.5y^2。

中學老師可沒有告訴你duality,直接讓你在目標函數後面把約束乘以一個拉格朗日乘子加在後面,你能理解才怪……

KKT條件:其實是對拉格朗日方法的一個擴展。一定要背下來,以後求解quadratic programing(目標函數是一個二次函數)時就套公式。很多實際問題的目標函數都是二次函數,因為二次函數可以代表歐式距離(回想距離公式x^2+y^2),可以代表能量(x^2),是一個好的error/cost function。

總結

對偶是凸優化的基石,延伸出各種優化方法。正如信號處理中時域上不好解決的問題變換到頻域去解決。遇到目標函數是二次函數的,直接看看KKT條件能不能用。數學系的學生要考察並證明duality gap是否存在之類的,我們工科的學生不管這些了,直接套公式先跑起來再說~



相關焦點

  • AI瘋狂進階——凸優化
    凸優化算法是機器學習裡面比較重要的一個概念,理解凸優化需要掌握多個高等數學的概念,本文在講解過程中逐步解析這些數學概念,深入淺出的解析整個凸優化相關的問題。1.什麼是凸優化?於是就有了凸優化概念。凸優化包括以下部分,下面對其中的概念進行解釋下:(1)凸優化的定義域必須為凸集。凸集的定義如下:按照上述定義,可以得出:實數空間R是凸集。(2)凸優化的損失函數/約束函數都必須是凸函數。
  • 凸優化(1)——引入,優化實例分析,凸集舉例與相關性質
    作者:學弱猹 廈門大學信息與計算科學系本科生  現快手廣告算法工程師這一篇文章我們開始對凸優化的理論進行引入。凸優化是一個非常重要的課題,它也是一類最為容易求解的優化問題。雖然現在很多實際的深度學習項目和課題中,多半不會直接利用上凸優化的知識,但學習凸優化有助於從一個更高的角度來思考相關的問題(當然了,這也是數學學科的一大優勢了)。而且事實上,在當今的算法工程師面試中,很多企業都會加入對面試者凸優化知識的考查。相信很多相關專業的本科生和研究生,也修過學校的《凸優化》這一門課。
  • 利用python解決凸優化問題
    凸優化的簡單概念凸集的概念所謂的凸集就是一類數據的集合,這一類數據滿足一個條件,就是任意兩點之間的數據,都包含在這個集合當中,那麼這個數據的集合就是凸集。凸優化問題下面我們給出凸優化問題的定義:其中函數f和g是凸函數,h為仿射函數(affine functions),仿射函數可以理解為簡單的線性變換
  • 【最優化】通俗理解凸函數及它的一階特徵
    推薦閱讀時間:8min~15min主要內容:通俗的講解凸函數及它的一階條件直觀的,圖1是一維凸函數的示例。一維情況下,不嚴格的說,凸函數是弦在上的函數或者是曲線向上包(這些都是不嚴謹的說法)。注意:在不同的教科書和資料中,對凸函數的定義有可能是相反的,在機器學習領域,一般都使用這個定義。
  • 凸優化(C)——FW方法的分析與應用,鏡面下降方法,深度學習與運籌中的優化簡介
    計算方法可以參考《凸優化》的第3節,有關收斂性分析的部分。事實上,在這個時候,根據《凸優化》第2節(凸優化(2)——凸函數,強凸函數及相關拓展)最後的結果,我們有那麼兩邊按照具體的思路可以參考《凸優化》的第5節,對於warm-up的討論。凸優化(5)——近端梯度法:性質,延伸與案例分析;對偶性:引入與理解只是相比較之前利用近端梯度方法來求解,這個方法可以保證誤差可控,還算是挺好的一個性質。
  • 機器學習概念篇:一文詳解凸函數和凸優化,乾貨滿滿
    在機器學習各種優化問題中,凸集、凸函數和凸優化等概念經常出現,其是各種證明的前提條件,因此認識其性質對於優化問題的理解尤為重要,本文便就凸集、凸函數和凸優化等各種性質進行闡述
  • 凸優化-凸集和凸函數 | CMU經典課程 | 附課件 |機器學習基礎
    CMU:Convex Optimization課程Convex Optimization課程,該課程介紹了凸優化問題的基礎知識、一階方法、最優化和對偶、 二階方法、一些特別問題的探討等內容。本文是該課程基礎知識中凸集和凸函數部分的課程筆記。
  • 從基礎知識到實際應用,一文了解「機器學習非凸優化技術」
    將學習問題表達為非凸優化問題的便利方式使算法設計者獲得大量的建模能力,但是此類問題通常是 NP-hard 難解決的問題。之前流行的解決方案是將非凸問題近似為凸優化,使用傳統方法解決近似(凸)優化問題。但是該方法可能造成損失,且對於大規模優化來說難度較高。
  • 詳解凸優化、圖神經網絡、強化學習、貝葉斯方法等四大主題
    在本期訓練營(第四期)中我們對內容做了大幅度的更新,一方面新增了對前沿主題的講解如圖神經網絡(GCN,GAT等),另外一方面對核心部分(如凸優化、強化學習)加大了對理論層面上的深度。>    打算進入最頂尖的AI公司比如Google,Facebook,Amazon, 阿里,頭條等;    讀ICML,IJCAI等會議文章比較吃力,似懂非懂感覺,無法把每個細節理解透;    01 課程大綱  第一部分:凸優化與機器學習
  • 機器學習非凸優化研究的最新進展極簡介紹與資料推薦
    有理論保證的非凸優化方法的一些例子:通過分解高階矩張量(一個非凸問題),我們可以學習許多潛變量模型。當隱/潛在表示不退化時,我們可以保證「learn a consistent model」:一個隱變量的影響不能被其他變量的影響線性表示。
  • 凸優化(A)——坐標下降法,對偶上升法,再看增強拉格朗日法
    上一節筆記:凸優化(8)——內點法中的屏障法與原始-對偶方法,近端牛頓方法————————————————————————————————————大家好!熟悉我的寫作風格的人都知道,這裡A就是10的意思。
  • CICC科普欄目|從基礎知識到實際應用,一文了解「機器學習非凸優化技術」
    ,皆可看到其身影,機器學習當然也不例外,且在實踐中經歷了一個從凸優化到非凸優化的轉變,這是因為後者能更好地捕捉問題結構。例如,3、4 章介紹的概念有助於第 9 章的理解,而通讀第 6 章則對此無必要。類似地,我們推薦先讀第 4 章再讀第 5 章,不過讀者可以選擇讀完第 3 章後直接閱讀第 7 章。第 1 部分:引言和基礎工具。這部分提供介紹性說明和凸優化中的一些基礎概念和算法工具。推薦不熟悉數值優化的讀者閱讀這部分內容。第 2 部分:非凸優化基元。
  • 姚班天才少年鬲融憑非凸優化研究成果獲得斯隆研究獎
    我的研究就以非凸優化和張量分解為工具,通過研究文本、圖像和其他形式的數據分析中出現的問題,嘗試解答這些疑問。」鬲融的研究有三個主要課題:表示學習(Representation Learning)、非凸優化(Non-convex Optimization)以及張量分解(Tensor Decompositions)。此次獲得斯隆研究獎,正是基於鬲融在非凸優化方面的研究。
  • 這樣理解凸透鏡成像
    凸透鏡成像是光的折射形成的,如果所成像是實像,則是從物體來的光線經凸透鏡折射後,折射光線匯聚得到的,因為是實際光線相交,所以是實像,可以用光屏來承接,若將透鏡擋上一部分,光屏上仍成完整的像,因為折射光線變少,所以變暗,作圖時要用實線畫像;如果所成像是虛像,則是從物體來的光線經凸透鏡折射後,折射光線反向延長得到的,因為是虛線相交,不是實際光線相交,所以是虛像,虛像只能看到
  • 從算子角度理解優化方法
    ,我們可以採用不同的優化方法,而這些方法又可以從不同角度去理解。 使得非線性映射  這個怎麼和優化問題聯繫起來呢,大概是三個角度:1. 對於無約束凸問題,其最優解等價於求解梯度等於零,這時的 對於約束優化問題,我們可以轉化為一個無約束的對偶問題,這時的A就是對偶問題的梯度3. 仍然是約束優化問題,我們可以求解其KKT系統,這時的A就是由KKT條件組成的一個非線性方程組。求解問題(1)的方法就是穩定點迭代,也就是找一個算子
  • 數據+ 進化算法 = 數據驅動的進化優化?進化算法 PK 數學優化
    數據驅動的進化優化是什麼,僅僅就是數據 + 優化算法嗎?數據驅動的進化優化適用於哪些應用場景?傳統的數學優化方法是否迎來了新一輪的挑戰。本文將為您深入淺出的解答以上問題。文末我們還附上了相關資料與參考文獻的大禮包,這些資料並非一個簡單的書單,是經過本文兩位作者多年的研究經驗和學習歷程精心挑選整理的,有頂級期刊的優質論文,也有科普大眾的通俗講義。
  • 導讀 | Convex Optimization(禿優化)
    凸函數的下水平集還是凸集(反之不成立);更重要的是上境圖的等價性:凸函數等價於上境圖是凸集,這在一些運算和求解中非常重要。保凸運算,一個比較難掌握的是逐點上確界,但又非常重要。需要做一些題目,就能深入理解了。
  • 如何通俗理解「道法自然」?
    「道法自然」這句話,我們如何理解並感用於生活?「道法自然」出自老子的「人法地,地法天,天法道,道法自然。」歷來太多詮釋,角度深淺都各不相同,就象面對江水,孔子嘆息:逝者如斯夫,不舍晝夜。而老子讚嘆:上善若水,水利萬物而不爭。
  • 優化|要理解深度學習,必須突破常規視角去理解優化
    普林斯頓計算機科學教授 Sanjeev Arora 認為,常規的優化觀點只關注目標的價值和收斂的速度,而這對於日益重要的深度學習來說是遠遠不夠的。深度學習算法有一些重要的特性並不總是反映在目標值中。所以,要加深對深度學習的理解,還得超越常規視角。
  • 為什麼凸性是優化的關鍵
    優化問題是機器學習的核心,而凸函數在優化中又起著重要的作用。理解凸函數這意味著,如果存在兩個點 x,y 使得連接 f(x)和 f(y)的線段低於函數 f 的曲線,則 f 不是凸的。這就導致了 epigraph 凸性的喪失(如上圖右側紅色圖形所示)。