深度學習自誕生之日起,即面臨著黑盒智能、可解釋性差等質(zhì)疑,發(fā)展至今,不可否認地帶來了一波人工智能的發(fā)展熱潮,然而正面臨研究熱情漸褪、算法紅利逐漸消失等問題,整個學術界都在討論,后深度學習時代,誰將是主宰。
恰在此時,LeCun語出驚人地表示,“Deep Learning has outlived its usefulness as a buzz-phrase. Deep Learning est mort. Vive Differentiable Programming!” 一方面將對深度學習的質(zhì)疑推向了高潮,另一方面奠定了可微編程的地位。
可微編程,作為銜接傳統(tǒng)算法與深度學習之間的橋梁為深度算法提供可解釋性,將成為打開深度學習黑盒子的一大利器。
本文中,來自四川大學的彭璽研究員,將為大家介紹后深度學習時代的新主宰:可微編程。
文末,大講堂提供文中提到參考文獻的下載鏈接。
今天的匯報將從上面四個部分展開。
第一部分,介紹一下可微編程的一些相關的概念。
第二部分,介紹我們的第一個工作?,F(xiàn)在大多可微編程是把優(yōu)化過程展開,轉(zhuǎn)換成回復式神經(jīng)網(wǎng)絡。而我們這項工作也是把優(yōu)化過程展開,發(fā)現(xiàn)能夠得到新的長短期記憶,再從可微編程角度,找到與長短期記憶網(wǎng)絡的連接。
第三部分,介紹我們的第二個工作?,F(xiàn)有的絕大多數(shù)可微編程的工作都是基于優(yōu)化的過程展開,然后尋找它和神經(jīng)網(wǎng)絡之間的關系。而我們這項工作是從目標函數(shù)進行變形得到一個前向式神經(jīng)網(wǎng)絡。
第四部分,是我們對于這些研究問題的一些思考。
首先介紹一下可微編程是什么呢?簡單來說,就是把神經(jīng)網(wǎng)絡當成一種語言,而不是一個簡單的機器學習的方法,從而描述我們客觀世界的概念以及概念之間的關系。這種觀點無限地提高了神經(jīng)網(wǎng)絡的地位。
LeCun曾在facebook的文章里說:”Deep Learning Is Dead. Long Live Differentiable Programming!” (深度學習已死,可微編程永生)。
具體的可微編程和現(xiàn)有的深度學習、機器學習又有什么關系呢?這里有一個簡單的對比,在上圖中顯示的三個實體之間發(fā)生的三項關系。目前最流行的方法是用深度學習提取特征,然后結(jié)合機器學習的一些方法來解決實際當中的一些問題,也可以反過來用深度神經(jīng)網(wǎng)絡拿來直接生成數(shù)據(jù),也就是目前最火的生成式對抗網(wǎng)絡。
但我們可以發(fā)現(xiàn)缺失了一塊,也是目前可微編程做的主流工作。缺失的就是把現(xiàn)有的機器學習的方法轉(zhuǎn)化成等價的神經(jīng)網(wǎng)絡,使得同時具有傳統(tǒng)的統(tǒng)計機器學習方法的可解釋性強以及深度神經(jīng)網(wǎng)絡性能較優(yōu)等優(yōu)點。
針對現(xiàn)實世界中的一些問題,傳統(tǒng)的機器學習的方法思路是首先基于一些假設或者先驗知識(比如稀疏編碼等),將其形式化成目標函數(shù),再對其進行優(yōu)化求解。但當?shù)玫揭粋€新的目標函數(shù)時,我們還需要研究目標函數(shù)數(shù)學上的性質(zhì)對其進行優(yōu)化,如目前最流行的優(yōu)化方法--凸優(yōu)劃。
但是這樣做飽受詬病的一個原因就是可解釋不強。那可微編程可以做什么?其實就把神經(jīng)網(wǎng)絡直接當成一種語言,直接用于替代問題的描述或者說抽象化問題。這樣做的好處顯而易見,首先,它易于優(yōu)化。只需要一個SGD或者SGD的變種,而不需要發(fā)展出非常復雜的優(yōu)化的算法。此外,它還易于計算。并且,它也能做端到端的學習。
在神經(jīng)網(wǎng)絡以深度學習為標志復出之后,最早的可微編程的工作應該是Yann LeCun的ISTA。求解稀疏編碼這個目標函數(shù)的優(yōu)化方法有非常多,ISTA是其中非常有名的一個。上圖中間紅框標注的公式就是ISTA的核心,具體細節(jié)可以閱讀文章《Learning fast approximations of sparse coding》。
觀察上圖中紅色方框的公式,可以看到Z是依賴于前一步的Z值。這在數(shù)學上就等價于一個動力學系統(tǒng)或者一個迭代過程,而動力學系統(tǒng)本質(zhì)上就是回復式神經(jīng)網(wǎng)絡的數(shù)學本質(zhì)。因此,進一步地把右下角公式簡單地變形等價成RNN,這是神經(jīng)網(wǎng)絡復出以來最為知名的一個可微編程的工作。
隨后有很多的進展,比如2016年NIPS上的文章《Attend, Infer, Repeat: Fast Scene Understanding with Generative Models》關于生成模型的工作,這項工作也是目前比較熱門的研究。
另外,在2015的ICCV上《Conditional Random Fields as Recurrent Neural Networks》文章中提出,把條件隨機場的求解變形成了循環(huán)神經(jīng)網(wǎng)絡的相關運算,在圖像語義分割上實現(xiàn)了突破。
在2016的TPAMI上《Learning to Diffuse: A New Perspective of Designing PDEs for Visual Analysis》文章中,提出的PDE工作在多個任務視覺上取得很好的效果。
在2016的TIP《Learning Iteration-wise Generalized Shrinkage-Thresholding Operators for Blind Deconvolution》里,針對盲卷積這個問題,發(fā)展出能夠?qū)崿F(xiàn)稀疏編碼的回復神經(jīng)網(wǎng)絡。
在2016的IEEE TPAMI的《Trainable Nonlinear Reaction Diffusion: A Flexible Framework for Fast and Effective Image Restoration》文章中,對圖像重構(gòu)工作進行了這方面研究。
在2016年的AAAI文章《Learning Deep ?0 Encoders》中對0范數(shù)的優(yōu)化問題,進行變形和等價建議的回復式神經(jīng)網(wǎng)絡。
在2015年TPAMI文章《Learning Efficient Sparse and Low Rank Models》中,對使用深度神經(jīng)網(wǎng)絡來實現(xiàn)稀疏模型和非負矩陣分解之間建模的回復式神經(jīng)網(wǎng)絡。
將這些研究進行歸納總結(jié),就是把一些現(xiàn)有的統(tǒng)計機器學習方法,特別是現(xiàn)有的優(yōu)化過程展開,形成一個簡單的神經(jīng)網(wǎng)絡,且其中大多都是一個簡單的回復式神經(jīng)網(wǎng)絡。從而使它能享有傳統(tǒng)機器學習的優(yōu)點,比如端到端學習,同時兼具易于優(yōu)化以及高可解釋性等優(yōu)點。
我相信這樣介紹大家可以有一個直觀的概念。目前可微編程就是對傳統(tǒng)的機器學習的一個逆向的過程,由于傳統(tǒng)的機器學習的結(jié)構(gòu)非常清晰,對逆向過程可以產(chǎn)生的神經(jīng)網(wǎng)絡,就可以知道哪一個激活函數(shù)的作用是什么,每一層的輸出、目的是什么,這也是現(xiàn)有的深度學習方法所不具備的優(yōu)勢。
下面給大家介紹一下我們的第一個工作。我們這項工作從可微編程出發(fā),來研究稀疏編碼的優(yōu)化方法—ISTA 。
目前,常見的對L1范數(shù)優(yōu)化的方法具有四個局限性:
第一,在優(yōu)化過程中,對于每一個變量的更新都是采用固定的學習率。所以沒有考慮優(yōu)化變量的每個維度之間的不同。
第二, 這些優(yōu)化過程并沒有考慮歷史信息。但是在優(yōu)化這個研究鄰域里已經(jīng)有大量的工作證明如果考慮歷史信息,能夠加速算法的收斂。
基于這兩點不足,我們提出了自適應的ISTA算法。
還有兩個不足是什么呢?
第三,在稀疏編碼推理過程中,計算代價很高。
第四,稀疏表示矩陣計算和字典學習是兩個分隔開的步驟。但現(xiàn)在流行端到端的訓練,也就是同時優(yōu)化步驟,這樣做可能會產(chǎn)生次優(yōu)的解。
而這兩個不足,正好是可微編程能夠克服的問題。因此基于這些問題,我們對自適應的ISTA變形和展開提出新的神經(jīng)網(wǎng)絡——SC2Net。
左邊是ISTA的關鍵的優(yōu)化步驟,基于此,我們引進了動量向量(i(t),f(t))。這就是標準的受益于現(xiàn)代的優(yōu)化的一些相關的方法,通過引入這兩個量,從而解決非自適應更新問題和沒有考慮歷史信息的不足。更進一步來看,這里存在一個問題,i(t),f(t)如果是兩個向量的話,只能確定它的值。使用傳統(tǒng)的機器學習方法進行訓練,我們?nèi)藶橹付ㄋ闹?。在研究中,發(fā)現(xiàn)可以把這兩個向量當成兩個變量從數(shù)據(jù)中學習,就產(chǎn)生了我們提出的自適應ISTA。
同時,我們還發(fā)現(xiàn)這種自適應ISTA可以等價于新的長短期記憶神經(jīng)網(wǎng)絡。具體來看,我們可以認為i和f是等價于LSTM中的input gate 和output gate。但是需要注意的是,和經(jīng)典的LSTM相比,自適應的ISTA是沒有output gate。
基于以上,我們就組建了Sparse LSTM,并且構(gòu)建了相應的神經(jīng)網(wǎng)絡結(jié)構(gòu)。
接下來,展示我們的實驗結(jié)果。在無監(jiān)督和有監(jiān)督的特征提取的情況下,對網(wǎng)絡的分類性能進行驗證。
接下來還進行圖像重構(gòu),圖中顯示的是一個重構(gòu)的誤差,越黑就代表誤差越小。
我們還做了視頻當中的異常事件的檢測,給定一個圈,在圈中的都是正常事件,不在圈中的就是異常事件。接下來使用稀疏重構(gòu)系數(shù)作為指標,找到一定閾值,在這個范圍內(nèi)的都是正常事件,而不在其中的就是異常事件。
通過實驗可以看到,我們的結(jié)果是目前是最好的異常事件檢測算法。
最后簡單地概括一下,相對現(xiàn)有的可微編程,我們是將優(yōu)化的過程或者說具體的基于LSTM優(yōu)化的過程和長短期記憶網(wǎng)絡,最后掌握了他們之間關系。這對可微編程有一些促進的作用,也可以從另外一個角度理解長短期記憶網(wǎng)絡。
剛才我們得到的網(wǎng)絡和標準的只有一個區(qū)別,就是我們沒有Output gate。
相關的代碼公開,大家可以掃描上圖中的二維碼。
第二個工作較之前更進一步,是在聚類這個背景下來擴展,把k-means這個聚類算法轉(zhuǎn)化成為一個前向式記憶網(wǎng)絡。不同于現(xiàn)有的可微編程的方法,它是從優(yōu)化的角度出發(fā),我們直接把k-means聚類算法的目標函數(shù)直接進行變形,然后建立對應的神經(jīng)網(wǎng)絡模型。
K-means是什么?
它是在機器學習,計算機視覺,數(shù)據(jù)挖掘中最為知名的一個算法。主要是利用數(shù)據(jù)之間的相似性或者不相似性,將數(shù)據(jù)分為多個簇。最近一二十年,整個聚類的研究領域主要關注的是高維數(shù)據(jù)的聚類,本質(zhì)上就是機器學習的共性問題-——線性不可分的問題。
為了解決這個問題,基于核聚類算法,譜聚類,子空間聚類方法,以及近期基于深度神經(jīng)網(wǎng)絡的聚類方法,這些方法都是在解決這個線性不可分的問題。
現(xiàn)有的高維聚類方法可以簡單地概括成這個圖。它們都是用表示學習的方法將不可分的數(shù)據(jù)投影到另外一個線性可分的空間中,然后再進行聚類。而且現(xiàn)有的研究工作主要都是關注在如何學到一個好的表示。大家都知道,目前深度學習已經(jīng)成為最為有效的表示學習方法之一,一定意義上可以把“之一”去掉,特別是在數(shù)據(jù)量較多的情況下。
因此,我們就認為如果表示學習能夠用深度神經(jīng)網(wǎng)絡來解決,我們是不是要考慮更多的研究能夠?qū)崿F(xiàn)聚類的神經(jīng)網(wǎng)絡。但是讓我們驚訝的是,目前非常少的工作研究能以一個神經(jīng)網(wǎng)絡來實現(xiàn)聚類的,寥寥可數(shù),比較知名一點的比如說自組織映射。
受這個觀察的啟發(fā),我們思考計劃從可微編程的角度對經(jīng)典的算法進行變形,從而形成一個新的神經(jīng)網(wǎng)絡,從而解決上述的痛點。
這里的公式是k-means的目標函數(shù),其中x是輸入,Ω是第j個聚類的中心。我們最終的目標是最小化不同類別之間的相似性,最大化相同類別之間的相似性。
通過對k-means目標函數(shù)簡單的變形,其實本質(zhì)上只是把標簽只能分配到某一個聚類空間的約束去掉,轉(zhuǎn)變成了輸入Xi在第j個聚類中心的概率。
如右圖所示的簡單變形得到公式(6)和(7),并且我們發(fā)現(xiàn)這兩個公式是可以等價為一個簡潔的前向式神經(jīng)網(wǎng)絡。
如果大家只看左邊的神經(jīng)網(wǎng)絡,大家可能會覺得非常不稀奇,好像就是一個很簡單的Sigmoid函數(shù),再加上一個隱含層的神經(jīng)網(wǎng)絡。但是如果結(jié)合右邊的公式來看,就會發(fā)現(xiàn),這么簡單的神經(jīng)網(wǎng)絡是等價于K-means的。
我們在相關的一些數(shù)據(jù)集上進行驗證,比如說我們使用數(shù)據(jù)mnist和CIFAR10驗證神經(jīng)網(wǎng)絡,取得了非常好的效果。
接著我們使用CIFAR100數(shù)據(jù)的20個子集進行驗證,也是取得很不錯的結(jié)果。
同時我們還考慮使用CNN來發(fā)現(xiàn)特征,可以得到超過93%的距離精確度。所以得出一個結(jié)論,我們的算法對于距離中心的初始化方法是非常棒的。
這個工作和現(xiàn)有的可微編程不同主要是兩點:
第一,我們的研究思路是從目標出發(fā),而不是從優(yōu)化過程出發(fā)進行研究
第二,我們得到的是前向式神經(jīng)網(wǎng)絡,而不是回復式的神經(jīng)網(wǎng)絡。
接下來給大家分享一下我和我的合作伙伴的一些思考。
目前,深度學習的研究主要是對通過對一些算法的性能指標不斷地試錯,最后確定整個網(wǎng)絡的結(jié)構(gòu)以及相關的超參,這也是深度學習最為詬病的一點。
現(xiàn)在深度神經(jīng)網(wǎng)絡已經(jīng)占據(jù)了絕對的優(yōu)勢,可微編程提供了從高解釋性的角度去做這件事,它是將神經(jīng)網(wǎng)絡作為一種語言,將傳統(tǒng)的算法轉(zhuǎn)化成神經(jīng)網(wǎng)絡以后,一定程度上緩解了一些深度學習的不足。
下一步可微編程做什么?現(xiàn)在的可微編程是對傳統(tǒng)的繼續(xù)學習方法的等價或者一種替代物。從問題的描述,再到問題的建模、求解,這是一個很復雜的過程。如果我們對傳統(tǒng)的學習的方法,在一定的假設和前提下已經(jīng)有建好的建模,我們建立等價的神經(jīng)網(wǎng)絡,其實就能走出最容易的一步。
在未來,如果我們真的要貫徹可微編程,就是把它當成一種語言。神經(jīng)網(wǎng)絡應該更進一步,應該直接對問題進行建模,也就是對我們的物理現(xiàn)象進行建模,并且傳統(tǒng)的統(tǒng)計機器學習方法有一些先驗知識,進而解決我們的一些實際問題。
可能這是更接近于做人工智能這個領域的一個更貼切的思路。
-
深度學習
+關注
關注
73文章
5561瀏覽量
122794
原文標題:可微編程:打開深度學習的黑盒子
文章出處:【微信號:deeplearningclass,微信公眾號:深度學習大講堂】歡迎添加關注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
大模型時代的深度學習框架

評論