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