前言:運籌學在國內,遠沒有統計和人工智能來的普及。相信不少人不知道,運籌學正是研究優化理論的學科,而人工智能最後幾乎都能化簡成求解一個能量/損失函數的優化問題。所以,我把它稱爲人工智能、大數據的「引擎」。算法
本文的詳細版本已發表在個人專欄:機器學習
離散/整數/組合/非凸優化概述及其在AI的應用 - 知乎專欄函數
言歸正傳,爲何非凸優化受到愈來愈多的關注?學習
1,首先你們須要知道Convex VS Non-Convex的概念吧?測試
數學定義就不寫了,介紹個直觀判斷一個集合是否爲Convex的方法,以下圖:大數據
簡單的測試一個集合是否是凸的,只要任意取集合中的倆個點並連線,若是說連線段徹底被包含在此集合中,那麼這個集合就是凸集,例如左圖所示。優化
2,凸優化-相對簡單人工智能
凸優化有個很是重要的定理,即任何局部最優解即爲全局最優解。因爲這個性質,只要設計一個較爲簡單的局部算法,例如貪婪算法(Greedy Algorithm)或梯度降低法(Gradient Decent),收斂求得的局部最優解即爲全局最優。所以求解凸優化問題相對來講是比較高效的。這也是爲何機器學習中凸優化的模型很是多,畢竟機器學習處理大數據,須要高效的算法。設計
3,非凸優化-很是困難3d
而非凸優化問題被認爲是很是難求解的,由於可行域集合可能存在無數個局部最優勢,一般求解全局最優的算法複雜度是指數級的(NP難)。以下圖:
最經典的算法要算蒙特卡羅投點法了,大概思想即是隨便投個點,而後在附近區域(能夠假設convex)用2中方法的進行搜索,獲得局部最優值。而後隨機再投個點,再找到局部最優勢。如此反覆,直到知足終止條件。
假設有1w個局部最優勢,你至少要投點1w次吧?而且你還要假設每次投點都投到了不一樣的區域,否則你只會搜索到之前搜索過的局部最優勢。
4,非凸優化爲什麼重要,開始受到重視?
由於現實生活中,幾乎全部問題的本質是非凸的。把3中的圖看做山川盆地,你在現實中有見過左圖這麼「光滑」的地形麼?右圖纔是Reality!
5,爲什麼要學凸優化呢?
科學的本質即是由簡到難,先把簡單問題研究透徹,而後把複雜問題簡化爲求解一個個d俄簡單問題。例如3中經典的投點法,就是在求解一個個的凸優化問題。假設須要求解1w個凸優化問題能夠找到非凸優化的全局最優勢,那麼凸優化被研究透徹了,會加速凸優化問題的求解時間,例如0.001秒。這樣求解非凸優化問題=求解1w個凸優化問題=10秒,仍是能夠接受的嘛!
6,運籌學中線性規劃與凸優化的關係
線性規劃是運籌學最基礎的課程,其可行域(可行解的集合)是多面體(polyhedron),具備着比普通的凸集更好的性質。所以是比較容易求解的(多項式時間可解)。
聽我嘮叨下知乎第一場有關運籌學的Live:
大數據人工智能時代的運籌學 -- Robin Shen 2017.06.11的知乎Live
7,運籌學中(混合)整數規劃與非凸優化的關係
你們或許不知道,(混合)整數規劃被稱爲極度非凸問題(highly nonconvex problem),以下圖:
實心黑點組成的集合,是一個離散集,按照1中判斷一個集合是否爲凸集的技巧,咱們很容易驗證這個離散集是非凸的。所以整數規劃問題也是一個非凸優化問題,而且它也是NP難的。
那麼整數規劃的求解思路呢,也遵循了科學研究的本質,即被分解爲求解一個個的線性規劃問題。感興趣的朋友能夠搜索分支定界法。
8,(混合)整數規劃爲什麼重要?
雖然時間是連續的,可是社會時間倒是離散的。例如時刻表,一般都是幾時幾分,即便精確到幾秒,它仍是離散的(整數)。沒見太小數計數的時刻表吧?
一樣,對現實社會各行各業問題數學建模的時候,整數變量有時是不可避免的。例如:x輛車,y我的。x,y這裏即是整數變量,小數是沒有意義的。
9,深度學習爲什麼非凸?
深度學習裏的損失函數,是一個高度複合的函數。什麼叫複合函數?好吧,例如h(x)=f(g(x))就是一個f和g複合函數。
當f,g都是線性的時候,h是線性的。但在深度學習裏用到的函數,Logistic, ReLU等等,都是非線性 ,而且很是多。把他們複合起來造成的函數h,即是非凸的。
求解這個非凸函數的最優解,相似於求凸優化中某點的gradient,而後按照梯度最陡的方向搜索。不一樣的是,複合函數沒法求gradient,因而這裏使用Back Propagation求解一個相似梯度的東西,反饋能量,而後更新。
10,深度學習的優化問題在運籌學看來是「小兒科」
這句話可能會打臉大部分觀衆。
深度學習中的優化問題,雖然目標函數很是複雜,可是它沒有約束阿!你們若是學過運籌學,就知道它由目標函數和約束條件組成,而約束條件,是使得運籌學的優化問題難以求解的重要因素。
點到爲止。欲知詳情,請戳:
可是沒辦法,機器學習、深度學習仍是這麼火,因此,順應時代潮流,寫了這個:
總結:
機器學習、數據科學由於處理數據量龐大,所以研究問題主要的方法仍是凸優化模型,緣由正是求解高效,問題能夠scale。雖然目前還很小衆,可是隨着計算機硬件能力的提升,以及GPU並行計算的流行,以及非凸優化算法、模型的進化,想必非凸優化,甚至(混合)整數規劃會是將來的研究熱點。