中文字幕理论片,69视频免费在线观看,亚洲成人app,国产1级毛片,刘涛最大尺度戏视频,欧美亚洲美女视频,2021韩国美女仙女屋vip视频

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
干貨 | Andrej Karpathy CS294課程總結(jié):可視化和理解深度神經(jīng)網(wǎng)絡(luò)


機器之心原創(chuàng)

機器之心


I. 介紹


 這篇文章中,我們將回顧一些目前用來可視化理解深度神經(jīng)網(wǎng)絡(luò)的方法。我不會深入探討這些材料中的細(xì)節(jié),而是闡述一些個人觀點以及我在學(xué)習(xí)這些材料時的個人體會。所有原始材料來自 Andrej Karpathy 在伯克利大學(xué)的客座講座,CS294 課程。該講座的演講視頻可點擊文末「閱讀原文」查看。




II. 凸優(yōu)化(Convex Optimization)vs. 非凸神經(jīng)網(wǎng)絡(luò)(Non-Convex Neural Networks)


凸優(yōu)化是一個數(shù)學(xué)上非常嚴(yán)謹(jǐn)?shù)膯栴},人們對此也一直頗有研究。它的優(yōu)美之處在于能夠推導(dǎo)出易實現(xiàn)的、達(dá)到全局最優(yōu)的下降算法。而非凸優(yōu)化問題,卻很難證明其最優(yōu)性。也因此,我們會擔(dān)心針對這些問題提出的優(yōu)化算法會停滯在局部最小值。然而,這并不是說我們不能證明非凸問題最優(yōu)解。我已經(jīng)碰到過一些技術(shù),這些技術(shù)使用了區(qū)間分析(interval analysis)方法,只要函數(shù)在某些階上(some odrder)Lipschitz 連續(xù),并且它的解(局部最小值)并不會產(chǎn)生組合性爆炸。


神經(jīng)網(wǎng)絡(luò)本質(zhì)上是一個非凸問題。因此,對其最優(yōu)性的形式證明寥寥無幾。在過去,擔(dān)心差在局部最小值是真的,特別是神經(jīng)網(wǎng)絡(luò)剛剛開始發(fā)展的階段(上世紀(jì) 80 年代)。其中一篇關(guān)于探討這個話題的論文: 多層網(wǎng)絡(luò)的損失面(The Loss Surfaces of Multilayer Networks by Choromanska etal. 2015),實證表明,隨著問題維數(shù)增加(可視為隱藏層更多了),你的最終解的損失方差會下降。因此,基本上,最優(yōu)解和最差解之間的間隔在不斷銳減,你的所有的局部最小值會變得相同。因此,非凸優(yōu)化解決方案不過是走開了,人們并沒有真正的解決這個問題,它僅僅是變得不重要了。




III. 層圖表達(dá)以及 t-SNE 可視化 


(編者注: t-SNE 是 t-distributed stochastic neighbor embedding 的縮寫,即 t 分布隨機鄰域嵌入算法)


卷積神經(jīng)網(wǎng)絡(luò),簡單來說,就是一個多層巨無霸三明治。一種用來視化理解這些網(wǎng)絡(luò)的方法就是從網(wǎng)絡(luò)中取出一個單獨神經(jīng)元,觀察讓這個神經(jīng)元興奮的是什么。本質(zhì)上,我們經(jīng)驗使用這些激活反應(yīng)來可視化神經(jīng)元響應(yīng)的對象。



圖注:可視化激活神經(jīng)網(wǎng)絡(luò)的事物


另一個技術(shù)是可視化網(wǎng)絡(luò)權(quán)重。這需要訓(xùn)練自己的神經(jīng)網(wǎng)絡(luò)然后顯示它學(xué)習(xí)到的 Gabor 過濾器。不過這種辦法只對卷積神經(jīng)網(wǎng)絡(luò)首層有效,因為針對輸入的圖片所得出的權(quán)重在第一層后又會再做卷積操作。當(dāng)你不斷深入網(wǎng)絡(luò),我們就不太能解釋 這些濾波器的結(jié)果了,因為每一層的權(quán)重都是在前一層輸出結(jié)果上進行了卷積操作。



圖注:可視化網(wǎng)絡(luò)權(quán)重


在此,Andrej 給出了一個關(guān)于使用 ConvNetJS 來實現(xiàn)可視化技術(shù)的鏈接(https://cs.stanford.edu/people/karpathy/convnetjs/),該項技術(shù)能把網(wǎng)絡(luò)逐層分解,你可以利用這個來觀察網(wǎng)絡(luò)在輸出最終分類結(jié)果前每一層的梯度、激活函數(shù)、 權(quán)重等。此外,Andrej 還推薦了一下 TensorFlow Playground:http://playground.tensorflow.org/,以及 Jason Yosinski 的博客:http://yosinski.com/deepvis


IV. 不僅僅是單個神經(jīng)元的可視化


有一種觀察卷積神經(jīng)網(wǎng)絡(luò)的方法是看其全局表達(dá),即卷積神經(jīng)網(wǎng)絡(luò)對任何一張圖片,其頂層的輸出結(jié)果。我們將一張圖片傳入卷積神經(jīng)網(wǎng)絡(luò)網(wǎng)絡(luò)去處理。這個網(wǎng)絡(luò)的每一層將對該圖片進行重新的表達(dá),而對于每一層,我們可以學(xué)習(xí)到原始的圖片是如何被整合到這一層中的。因此,為了可視化這一過程,我們希望能將這些表達(dá)整合到 2 維空間。這時候,就需要用到一種超炫的技術(shù),叫做 t-SNE 可視化技術(shù)(Van der Maaten, Hinton**)。**這種技術(shù)將高維的點嵌入到低維空間,而局部的成對距離被保留了(在低維空間相鄰的點在高維空間也依然相鄰)。



圖注:t-SNE 可視化,了解更多可查閱 http://cs.stanford.edu/people/karpathy/cnnembed/



圖注:用強化學(xué)習(xí)玩 Atari 游戲的可視化


V. 遮蓋實驗


這種用于可視化網(wǎng)絡(luò)究竟學(xué)到了什么的技術(shù)是把網(wǎng)絡(luò)視作黑盒,修改它的輸入然后觀察輸出。假設(shè)我們有一張被這個網(wǎng)絡(luò)能準(zhǔn)確地分類成博美犬的圖片,現(xiàn)在,我們要做的是將這個圖片的某一塊「屏蔽(block)」(將這個地方的像素值設(shè)置為 0 或 255,或者顏色設(shè)置為黑或白即可)。這樣,這個網(wǎng)絡(luò)的輸出是對這張被屏蔽的圖片的輸出。我們可以發(fā)現(xiàn),當(dāng)我們屏蔽的部位越是重要,比如臉部,那么這個網(wǎng)絡(luò)做出正確分類可能性就越低。




一個有趣的發(fā)現(xiàn)是,比如,我們有一張照片,其正中部位有一只阿富汗獵犬,旁邊是一位男子,網(wǎng)絡(luò)能正確的將其標(biāo)記為阿富汗獵犬。但是,如果將男人的臉用像素為 0 的方塊遮蓋,網(wǎng)絡(luò)認(rèn)為是阿富汗獵犬的概率激增。發(fā)生這種現(xiàn)象的原因在于,每一張圖片只被分配了一個正確的標(biāo)簽,當(dāng)我們遮蓋一些可能會引起網(wǎng)絡(luò)會做出其他決定的部位,那么,得出這個正確的標(biāo)簽的概率就大大提高了。這也是一種完整性檢查,這樣網(wǎng)絡(luò)可以一種通過調(diào)整圖片可能所屬類別標(biāo)簽的概率大小來做出合理判斷。


VI. 去卷積方法(Deconvolution Approaches)


通常,我們嘗試去計算出關(guān)于網(wǎng)絡(luò)權(quán)重的損失函數(shù)梯度,這樣當(dāng)我們每做一次更新操作,我們就能優(yōu)化權(quán)重?,F(xiàn)在,讓我們思考一個問題:給出一張圖片,怎樣才能得出網(wǎng)絡(luò)中任何一個隨機神經(jīng)元的梯度?有一種可行的方案是:




1)將圖片輸入網(wǎng)絡(luò),對于網(wǎng)絡(luò)深處的某一個神經(jīng)元,我們將其命名為神經(jīng)元 a。

2)將它的梯度設(shè)置為 1,同層的所有其他神經(jīng)元的梯度設(shè)置為 0。

3)一路將梯度反向傳播回圖片,得到一張略古怪的噪聲圖片。


盡管這張?zhí)荻葓D片很難解釋,但至少可以告訴你,如果把這張圖片和原始圖片疊加,將會提高神經(jīng)元 a 的激活函數(shù)值。而反向傳播過程只會改變修正線性單元 ReLU 層。這里的直覺就是:沿著梯度(反向)傳遞到 ReLU 層的某一個神經(jīng)元,那么說明這個神經(jīng)元被激活了。否則,傳遞就會停止。


另一種替代方法是不使用簡單的反向傳播,而是使用所謂的導(dǎo)向反向傳播(guided backpropagation)。




這種技術(shù)并不僅能夠識別一個修正線性單元 ReLU 是否被激活,而且可以識別所有值為負(fù)的梯度。本質(zhì)上,除了能把所有不被激活的修正線性單元 ReLU 關(guān)閉,所有反向傳播時遇到的負(fù)信號還能被設(shè)置到閾值 0。最終,我們只需要反向傳遞梯度為正的值即可。這樣的話,反向傳播最后獲得的圖片就會更加清晰,因為我們?nèi)コ怂胸?fù)梯度對我們所選的神經(jīng)元造成的影響,只保留了正面的影響(詳見: Striving for Simplicity: The all Convolutional Net, Springenberg, Dosovitskiy, et al., 2015 for more information)。



圖注:使用 guided backpropagation 后噪聲明顯減少


VII. 對圖像進行最優(yōu)化


i. 類別可視化




接下來講授的技巧涉及在圖像上進行最優(yōu)化操作??紤]如下問題:我們能否找到一個圖像,它能夠最大化某些類別的分?jǐn)?shù)?為達(dá)到該目的,我們希望保持神經(jīng)網(wǎng)絡(luò)架構(gòu)不變,而使用不同損失函數(shù)以在圖像上進行最優(yōu)化。這個方法包括如下步驟:




(1) 向神經(jīng)網(wǎng)絡(luò)中傳入一個隨機的圖像;

(2) 設(shè)定梯度分?jǐn)?shù)向量為 [0,0,…,1,0,...0](將感興趣的那一類設(shè)為 1,不感興趣的則為 0),接著對對象進行反向傳播;




(3) 進行一個小規(guī)?!笀D像更新」;

(4) 將更新的圖像進行正向傳播;

(5) 重復(fù) (2) 以設(shè)定其他的梯度分?jǐn)?shù)向量。我們基于一個隨機噪聲的圖像開始,并對目標(biāo)類(也就使用了上述的梯度分?jǐn)?shù)向量進行逆?zhèn)鞑サ哪且活悾┻M行梯度上升操作,我們會生成一個圖像,它能改進神經(jīng)網(wǎng)絡(luò)對目標(biāo)類的激活狀態(tài)。從數(shù)學(xué)上來說,令 I 代表一個圖像,y 代表一個目標(biāo)類,Sy(I) 則是神經(jīng)網(wǎng)絡(luò)賦給圖像 I 在 y 類上的分?jǐn)?shù)。我們希望解決如下的最優(yōu)化問題:




也就是說,我們希望找到一個圖像 I?,它能夠最大化神經(jīng)網(wǎng)絡(luò)賦給 y 類的分?jǐn)?shù)。在如上的等式中,R 是一個正則化項。正則化項改進了輸出圖像的可視化程度(參見 Simonyan 等人,Deep Inside Convolutional Networks: Visualising Image Classification Models and Saliency Maps,ICLR Workshop 2014)。這個內(nèi)容在去年完成,它論述了類的分?jǐn)?shù)問題。但是,該技巧可以被應(yīng)用到神經(jīng)網(wǎng)絡(luò)中的所有節(jié)點上。我們從某個隨機圖像開始正向傳播,直到到達(dá)了我們想要研究以及可視化的層為止。對該層中的任一神經(jīng)節(jié)點,重復(fù)該步驟(即設(shè)定其他梯度分?jǐn)?shù)為 0、目標(biāo)對象梯度值為 1、在圖像上反向傳播),以檢查哪種圖像會最大程度地激活神經(jīng)網(wǎng)絡(luò)中的神經(jīng)節(jié)點。注意,這些技巧中都有正則化項,以避免對抗的圖像。不同的正則化方案側(cè)重圖像的不同方面,以判斷我們認(rèn)為的「正常的」圖像。所以,它們會對這些試驗的結(jié)果有很大影響。


ii. 特征反演(Feature Inversion)


另一個可以探討的問題是:給定一個卷積神經(jīng)網(wǎng)絡(luò)的「編碼」(特征代表,可以理解為是神經(jīng)網(wǎng)絡(luò)中某一層的輸出值),能否根據(jù)其重構(gòu)原來圖像?如下的技巧就試圖實現(xiàn)這一功能。它分為三步:


(1) 向網(wǎng)絡(luò)中傳入一些輸入圖像;

(2) 忽略輸入圖像;

(3) 在某些層對輸入進行反向傳播,直到在網(wǎng)絡(luò)中找到這樣的層,能夠生成與輸入圖像相同的「編碼」(在這一層學(xué)到的特征表示)的圖像。


從數(shù)學(xué)上看,令 I 代表一個輸入圖像,φl(I) 為卷積神經(jīng)網(wǎng)絡(luò) φ 中的激活層 l。我們希望解決如下優(yōu)化問題:




也就是說,我們希望找到一個圖像 I?,它與圖像 I 在神經(jīng)網(wǎng)絡(luò) φ 中的 l 層有相似的特征表示。其中 ||.||2 是代表 L2 范數(shù),R 是正則項(可能是隱式的)。


概括來說,我在這里的想法是,要儲存一個圖像,只需存儲圖像的「編碼」就行了。我們可以根據(jù)上述方法使用這些「編碼」來重構(gòu)圖像(盡管有損失)(參見 Yosinski 等人,'Understanding Neural Networks Through DeepVisualization',ICML 2015 Deep Learning Workshop)。


總的來說,這項技術(shù)允許我們看到,圖像是如何通過一組特定「編碼」(特征代表)在神經(jīng)網(wǎng)絡(luò)上被恢復(fù)的。


VIII. 卷積網(wǎng)絡(luò)中的對抗圖像


對抗圖像,是對原有圖像加入很小的擾動而構(gòu)成的圖像;這些擾動由數(shù)據(jù)集的數(shù)據(jù)構(gòu)成,被特意設(shè)定為最壞情況。由此,神經(jīng)網(wǎng)絡(luò)會錯誤地給這個新形成的圖像很高的概率。在實踐中,我們可以取任一被正確標(biāo)記的傳入神經(jīng)網(wǎng)絡(luò)的圖像,并基于其它對抗圖像對其添加擾動值。




我們無意探討過深的數(shù)學(xué)細(xì)節(jié),但這種情況發(fā)生的原因是因為神經(jīng)網(wǎng)絡(luò)常有很高的維度,因此,它有著內(nèi)在的線性本質(zhì)。直覺上說,我們考慮如下的線性例子:令 x 為一輸入圖像,w 為該模型的權(quán)重值,則獲得輸出的運算就是 x 和 w 之間的內(nèi)積,即 wTx。如果我們以 η 來輕微地對輸入進行擾動,我們則得到 xˉ = x + η。那么,輸出就便成了 xˉ = wT x + wTη。這種對抗擾動導(dǎo)致激活值增長了 wTη。進而,我們可以在某些關(guān)于 η 的限制條件下(通常是正則化約束)最大化該項以引起模型中的問題。但是,隨著問題維度的不斷增加,我們可以在滿足正則化條件的情況下,對 η 向量施加很多小的擾動。這些細(xì)微的變化加在一起,最終會對輸出造成很大的變化。


另一種考察不同模型間對抗圖像的方法,是將他們視為對抗擾動在模型權(quán)重向量下高度對齊的結(jié)果。這是因為如上解釋中所說的內(nèi)容:這些小的改變迫使該線性模型專注某一個信號,該信號和模型的權(quán)重值最相近;即便其它 (從正確圖像中得來的) 信號有更大的振幅也是如此。




IX. Deep Dream 實驗



圖注:Deep Dream GitHub:https://github.com/google/deepdream


Deep Dream 實驗背后的機理實際上是很簡單的?;旧衔覀冎灰薷囊幌聢D像,以增強網(wǎng)絡(luò)中選定的某層的激活情況。具體地,我們需要:




(1) 從神經(jīng)網(wǎng)絡(luò)中選擇某一層;

(2) 向其中傳入某些輸入圖像,以確定給定層的特征;

(3) 設(shè)定那一層的的梯度值為激活值自身;

(4) 對該圖像進行反向傳播。


X. 神經(jīng)風(fēng)格實驗




考慮如下的情景:我們有兩個圖像,一個為內(nèi)容圖像 Ic, 一個為風(fēng)格圖像 Is,我們想生成第三個圖像,使之能夠具有 Ic 的內(nèi)容及 Is 的風(fēng)格。也就是說,我們要做的是從 Ic 中解析出內(nèi)容,從 Is 中解析出風(fēng)格。




為了解析出內(nèi)容,我們將 Ic 傳入我們的神經(jīng)網(wǎng)絡(luò)并儲存每一層的激活值。但解析風(fēng)格的過程卻有所不同。我們將 Is 傳入神經(jīng)網(wǎng)絡(luò),并計算每一層激活值的 Garmian 矩陣(G=VTV)。從代數(shù)的觀點來看,Garmian 矩陣 G 僅僅是 V 的列內(nèi)積值。例如,CONV1 層由 244×244×64 個激活值構(gòu)成,我們則計算得一 64×64 的 Gram 矩陣,它是由每個區(qū)域內(nèi)配對激活值的協(xié)方差求和而成。從圖像的角度來說,我們是將一層由三維(244×244×64)矩陣構(gòu)成的激活值轉(zhuǎn)換到一個二維矩陣((244×244)×64),并對其取外積以得到該 64×64 的矩陣。對矩陣中的每個項 gi,j,我們都是將輸出通道 i 及 j 在那一層上的激活值乘在一起。如果通道 i 及 j 的神經(jīng)元交結(jié)在一起,那么它們會加在一起,我們也會得到一個更大的 gi,j。所以 Gram 矩陣 G 含有在對整個空間位置平均后哪些神經(jīng)元交結(jié)在一起的數(shù)據(jù)。我們對神經(jīng)網(wǎng)絡(luò)中的每一層都計算一個 Gram 矩陣。




最終,我們有了這些信息之后,就能夠?qū)φ麄€圖像進行最優(yōu)化以得到: Ic 的內(nèi)容及 Is 的風(fēng)格(詳見 Leon A. Gatys 等人,《A Neural Algorithm of Artistic Style》,2015)。




 最后,Andrej 還推薦了一個快速神經(jīng)風(fēng)格遷移項目,可以實時通過網(wǎng)絡(luò)攝像頭實現(xiàn)風(fēng)格遷移:https://github.com/jcjohnson/fast-neural-style,參見機器之心文章《開源 | 怎么讓你的照片帶上藝術(shù)大師風(fēng)格?李飛飛團隊開源快速神經(jīng)網(wǎng)絡(luò)風(fēng)格遷移代碼》。




XI. 結(jié)語


在這篇回顧中,我們回顧了一些能夠用于理解及可視化神經(jīng)網(wǎng)絡(luò)的技術(shù)。這些技術(shù)是從各種資源中搜集來的,其呈現(xiàn)的順序與重要性無關(guān)。


我們探討了如何可視化那些能最大化激活神經(jīng)元的區(qū)塊,檢查了其權(quán)重值及其對激活值的影響(第三節(jié));我們亦討論了使用如 t-SNE 這樣的技術(shù)來可視化全局表達(dá)(第四節(jié));在所討論的遮蓋實驗中,我們修改了輸入并觀察了輸出改變情況(第五節(jié));然后,我們談到了幾種去卷積方法(第六節(jié)),接著對圖像進行最優(yōu)化(第七節(jié))以最大化一個類、神經(jīng)元之間的激活率(firing rates)或是匹配一個特定的編碼。此外,我們還基于簡化的線性解釋,討論了卷積網(wǎng)絡(luò)中的對抗輸入。最后,我們涉及到了一些關(guān)于最優(yōu)化圖像的一些應(yīng)用(在最后關(guān)于 Deep Dream、神經(jīng)風(fēng)格的兩節(jié)中)。這些技術(shù)表明,神經(jīng)網(wǎng)絡(luò)中的「層」或特性并非僅僅是隨機模式,有著能夠直覺被理解的特性。我們能夠使用這些可視化技巧來發(fā)現(xiàn)模型的中的問題,以獲得更好的結(jié)果。


最后,我們想提及一個也許更具價值的觀點:如今神經(jīng)網(wǎng)絡(luò)給出的解決方案,在神經(jīng)網(wǎng)絡(luò)不斷增長的情況下的被證明是經(jīng)驗最優(yōu)的——也就是說,在所謂「好」與「差」的答案之間的鴻溝消失了。所以,困在一個局部最優(yōu)點,也許不再是一個問題。



本文為機器之心原創(chuàng),轉(zhuǎn)載請聯(lián)系本公眾號獲得授權(quán)。

------------------------------------------------

加入機器之心(全職記者/實習(xí)生):hr@almosthuman.cn

投稿或?qū)で髨蟮溃篹ditor@almosthuman.cn

廣告&商務(wù)合作:bd@almosthuman.cn



本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
從數(shù)學(xué)角度看神經(jīng)網(wǎng)絡(luò)是如何工作的?
深度網(wǎng)絡(luò)揭秘之深度網(wǎng)絡(luò)背后的數(shù)學(xué) | 雷鋒網(wǎng)
教程 | 沒有博士學(xué)位,照樣玩轉(zhuǎn)TensorFlow深度學(xué)習(xí)
直白介紹卷積神經(jīng)網(wǎng)絡(luò)(CNN)
深度學(xué)習(xí)之父Goffrey Hinton靈魂一問:未來人類如何與更聰明的機器爭權(quán)? | 最前線
刷臉背后,卷積神經(jīng)網(wǎng)絡(luò)的數(shù)學(xué)原理原來是這樣的
更多類似文章 >>
生活服務(wù)
熱點新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服