「王楊盧駱當時體,輕薄爲文哂未休。 爾曹身與名俱滅,不廢江河萬古流。」react
— 唐 杜甫《戲爲六絕句》(其二)算法
【不要爲我爲啥放這首在開頭,千人千面千理解吧】api
深度學習(DL),或說深度神經網絡(DNN), 做爲傳統機器學習中神經網絡(NN)、感知機(perceptron)模型的擴展延伸,正掀起鋪天蓋地的熱潮。DNN火箭般的研究速度,在短短數年內帶來了能「讀懂」照片內容的圖像識別系統,能和人對話到毫無PS痕跡的語音助手,能擊敗圍棋世界冠軍、引起滔滔議論的AlphaGo…… DNN在衆多應用領域的成功不容置疑。然而,在衆多(負責任的和不負責任的)媒體宣傳推波助瀾下,一部分人過於樂觀,以爲攻克智能奇點堡壘近在眼前;另外一部分則惶惶不可終日,以爲天網統治人類行將實現。做者君對此的態度以下圖所示:網絡
言歸正傳,若是不把DNN當作上帝/天網/人工智能終點etc., 也暫不考慮當前DL和人腦思惟之間如有若無的聯繫,那麼DNN和K-Means、主成分分析(PCA)、稀疏編碼(sparse coding或Lasso)等衆多耳熟能詳的模型並沒有二致,都屬於機器學習中特徵學習(feature learning)範疇。假如硬說DNN有什麼不一樣,那麼大概就在一個「深」字上。從數據x中學習特徵y,若是(絕大多數)傳統模型寫成y = f(x)(即學習「一個」特徵變換),DNN則能夠寫成y = fN (… (f2 (f1 (x)))) (即學習「若干個級聯」的特徵變換)。那麼究竟什麼使得DNN如此效果拔羣?做者君本人概括了三點:app
1)空前龐大的參數(parameter)量(動輒成百上千萬),遠遠超過以往任何模型的參數數量級,使得模型對於複雜映射(mapping)的表達能力極大加強;框架
2)端到端(end-to-end)的訓練方式,克服了以往模型分模塊訓練(hierarchical)、各模塊沒有彼此優化的劣勢;dom
3)前兩點主要是理念上的昇華,而實際中最重要的進步,是終於找到了能有效訓練這樣巨大模型的一套手段。儘管這些手段(如後向傳播算法)難免simple & naïve,不少也缺少嚴格的證實和解釋;然而在大數據的東風、GPU高性能計算的魔力、及無窮無盡的tricks(如dropout、batch normalization等)加持下,這條荊棘路仍是硬生生被踏出來了。機器學習
應用上的巨大成功並不能掩蓋DNN自己理論缺失、「沙上築塔」的隱憂。傳統方法的優良性質和可解釋性,在DNN中損失殆盡:緣由既歸咎於DNN自己函數的高度非線性和非凸性,也難免受困於求解算法自己的粗糙和經驗化。深度學習結構過於錯綜複雜、性質難以分析的「黑盒子」特質,引起了學術界的衆多顧慮和好奇。從2013年開始,已經有學者陸續從不一樣的角度,研究DNN和各種傳統機器學習模型之間(如小波分析、稀疏表示、高斯過程、條件隨機場 )的內在關係,以期理解DNN的工做原理,甚至可能從傳統模型的分析方法中掘得金礦,爲DNN的理論框架添磚加瓦。本文如下,僅擷滄海之一珠,主要從稀疏編碼(sparse coding)角度,初步分析和解釋DNN中的一些經驗性成功。函數
讓咱們暫時忘記DNN,從下面這個簡單的帶正則項(線性)迴歸模型看起:工具
其中XX是輸入數據,YY是帶求解的特徵,DD是表示基(basis)。YY除了要求相對於DD能很好地表示(重建)XX外,還受到一個額外正則項r(Y)r(Y)的約束。注意這個模型看似簡單,實則衆多著名模型(PCA,LDA, sparse coding, etc.)均可以當作其具體例子。以上模型的求解算法能夠寫成一個迭代的通常表示形式 (k = 0, 1, 2,…):
Y(k)Y(k)是k-iteration的輸出,L1L一、L2L二、NN是三個變換算子。這一迭代算法能夠等價表示成下圖中帶反饋系統的形式(目標是求解系統不動點):
對上圖反饋循環形式,咱們接着作前向展開(unfolding),得到一個有無限個前向傳播單元的級聯結構;而後再將這個結構截斷(truncate),得到一個固定長度的前向結構:
上圖便是一個「展開&截斷」後的前向結構示意圖(到k=2k=2)。首先,這一結構避免了環形結構/反饋迴路的出現,全部信息流都是前向的。其次,讀者能夠順着信息前進方向,逐步寫出關係式(例如每一個N的輸入),不難發現這一結構等價於將原有迭代算法作k步近似,得到一個有限固定迭代步數下「不精確」的迴歸解。更有趣的是,在不少例子中,L1L一、L2L2是帶參數的線性變換,而NN是不帶參數的非線性變換。咱們注意到,這和DNN的結構造成了精妙的巧合對應:若是將L1L一、L2L2看作是DNN中能夠訓練的「層」(layer),看作DNN中的非線性操做如神經元(neuron)或池化(pooling),那麼以上「展開&截斷」後的前向結構(到k=2)徹底能夠看作一個k+1k+1層、有必定特殊結構的DNN。
固然,咱們也能夠考慮卷積(convolution)狀況下的帶正則迴歸問題:
這一問題的形式、解法和結論都和前面的線性迴歸模型相仿。事實上,線性迴歸模型的結論將天然對應DNN的全鏈接層,而卷積迴歸模型的結論將對應到DNN的卷積層。
如今,咱們考慮引入1範數約束的稀疏性做爲迴歸模型的正則項:
上式是經典的稀疏表示問題。對應的迭代算法形式以下:
則是著名的軟門限算子(soft-thresholding), 形式以下圖左所示。熟悉DNN的讀者可能很容易從它的形狀聯想到DNN中最成功的ReLU(Rectified Linear Unit)神經元,其形式以下圖右所示。既然ReLU很牛,那麼咱們能不能把它請進咱們的框架裏呢?
咱們的策略是,加一個對YY的非負(non-negativity)約束到原稀疏表示問題中:
這一約束的直接效果是把軟門限算子的負半側砍掉歸0。進一步,咱們能夠把本來軟門限算子中的門限參數c,移到線性變換當中。最後迭代形式裏:
一個小問題:爲何能夠「硬湊」一個非負約束到原稀疏表示問題中呢?首先「哲學」上,稀疏表達將「部分」線性組合爲「總體」,若是這些「部分」還會相互抵消,總以爲不太天然 -– 固然此屬怪力亂神,不聽也罷。不過生物建模上,其實早將稀疏表達和神經元編碼聯繫了起來:稀疏特徵的值對應於神經元的「激發率」(firing rate, i.e., the average number of spikes per unit time),天然而然須要非負。另外,圖像處理和計算機視覺的研究者,不少都熟悉非負稀疏編碼(nonnegative sparse coding, NSC)的大名;此前NSC 亦是學習視覺特徵的最成功方法之一。現在風水輪流轉,DNN大火,通過各類神經元的經驗化設計嘗試、大浪淘沙,ReLU脫穎而出 。而從前的非負性和稀疏性假設通過改頭換面,又於無心識間悄悄潛伏進了ReLU中;這不能不說是個有趣的發現。
再進一步,上面那個對應非負稀疏編碼的「展開&截斷」前向結構,若是咱們想避免那些不「特別典型」的中間鏈接(事實上,這些「捷徑」的設計正在成爲DNN的新熱點,參加ResNet等工做)和權重共享(被重複展開),一個選擇是隻保留最開始的一部分計算而刪掉後面,即讓迭代算法從初始值開始只跑一步近似:Y=ReLU(DTX–c)Y=ReLU(DTX–c):
如此便得到了DNN中最典型的構成單元:全鏈接層 + 偏置 + 神經元ReLU。偏置 來源於本來1範數正則項的加權;在原優化問題中,調整c即調整Y的稀疏度。不難想到,若是將非負稀疏編碼換成非負稀疏卷積編碼,那麼一樣能夠獲得由卷積層 + 偏置 +神經元ReLU組成的單元。這一角度對通常DNN結構的分析提供了不少意味深長的提示。這裏限於篇幅,再也不展開。
最後,簡單講講另外兩種形式的稀疏性。其一是將稀疏編碼中1範數換成0範數:
按照以上1範數狀況下的推導結果,不難解出的形式爲經典的硬門限算子(hard-thresholding)。相較軟門限,硬門限容易得到零值更多、更稀疏的解,常有利於分類等任務。尤爲有趣的是,這一算子在2015年的國際表示學習大會(ICLR)上被DNN研究者們「經驗性」地設計出來,並被冠名以thresholded linear unit;實則未免稍稍有重造輪子之憾。另外一個更有意義的例子是:
該問題中的約束條件能夠看做池化算子(pooling):即將輸入中絕對值最大的M個值保留、其他歸0。考慮到0範數約束問題是特徵選擇的經典形式之一,這也讓咱們對本來被視做單純工程「瞎湊」的池化操做的實際做用,有了更多遐想。
總結一下,咱們在這一部分都目睹了些什麼:
DNN和稀疏編碼的關係深入且本質;一樣,它和其他衆多傳統機器學習模型間也逐漸被揭示出了千絲萬縷的聯繫。做者組的最近工做還發掘了傳統的一階/二階優化算法的結構,和今年大火的residual learning、fractal net等特殊網絡結構和學習策略,一樣有使人吃驚的精巧對應。除了做者組之外,諸如小波(wavelet)祖師Stéphane Mallat教授,壓縮感知宗師Richard Baraniuk教授,約翰霍普金斯大學Rene Vidal教授,杜克大學Guillermo Sapiro教授,微軟亞洲研究院Daivd Wipf博士…等多個一線研究組,近期也都對本方向投以極大關注,並陸續有優秀工做問世;方興未艾,能夠預見。 限於篇幅,沒法盡述,部分參考文獻列於文後以饗讀者。從以往的特徵工程/人工設計特徵(feature engineering / crafted feature), 走到今天的以DNN爲表明的特徵學習(feature learning) + 人工設計結構(crafted architecture), 到將來潛在的特徵學習(feature learning) + 結構學習(architecture learning),咱們處在變革的時代,但不是「魔法」的時代;並且這變革和進步顯然纔到半途,亟待提高。上述工做的核心,是從傳統機器學習的角度「解釋」DNN中諸多經驗性的結構緣何而來;在「解釋「的基礎上,下一步即是」分析「結構性質,和有的放矢地」創造「新的結構。做者君本人堅信,萬事非偶然;這一系列經驗性的對應,實實在在向咱們展現了歷史的螺旋上升,車輪轉過一樣的輻條。隨着更多此類結構對應關係的發掘,將極大幫助咱們理解和選擇DNN的最優結構,創造新的可用結構,以及引入理論分析工具。
注:本文符號按照計算機科學領域習慣,統計學科同窗務必注意和統計學習慣符號間的對應關係。
汪張揚,男,1991年出生;2012年中國科學技術大學電子通訊工程本科畢業;2016年伊利諾伊大學香檳分校電子計算機工程博士畢業;2016年加入德州A&M大學計算機科學系任Assistant Professor。更多信息見主頁:www.atlaswang.com