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