歡迎光臨
每天分享高質量文章

一層一層剝開黑匣子:深度摺積網路的視覺化

導讀:由於深度摺積網路的架構複雜,引數量巨大,許多朋友會感覺它就像一個神秘的黑匣子。但其實我們已有許多手段探查深度摺積網路的具體運作,並瞭解其決策的原因。在此我們以AlexNet為例。

01

對於某張輸入影象,可觀察每層的神經元的輸出影象(經ReLU後的)。以AlexNet的conv1層和conv5層為例,它們分別有64和256個神經元,如下圖所示。

可見,大多數神經元的輸出是全黑的,即純零。用專業術語說,它們具有稀疏性(sparsity)。這是件好事,因為如果希望網路準確判斷影象的分類,最佳的情況就是每個神經元對應某種特徵,且每次只有與影象內容真正相關的神經元被啟用,其餘神經元不會產生幹擾。

02

看摺積核的權重。初始的權重是隨機噪聲,隨著網路的訓練,權重將出現各種結構。可選擇conv1和conv2的部分摺積核顯示如下圖所示。

可見conv1作為第1層,摺積核很有特點。這裡的權重來自於原始的AlexNet,其中把網路切開成2部分,因此可看到其中一半學會了高頻的灰度結構,一半學會了低頻的彩色特徵。這裡的灰度摺積核有些像計算機視覺理論中的Gabor 濾波器,是有效的分析影象紋理的手段。

而conv2的摺積核是5*5,比較小,就很難直接看出其目的。由於我們在現代網路中大量使用3*3摺積核,會更難看清楚。實際上,應該將每層的摺積核結合之前層的摺積核,才能看到它所對應的影象特徵。這就是下麵方法的思路。

03

在《Visualizing and Understanding Convolutional Networks》(https://arxiv.org/pdf/1311.2901.pdf)中提出了一種有效手段,對於某個神經元,可看到在訓練影象中最能啟用這個神經元的影象特徵(可認為是神經元的識別標的),以及相應的訓練影象。以AlexNet第1至3層的部分神經元為例,如下圖所示。

可見,第1層的神經元可識別各種角度的邊緣以及某些顏色,符合此前看到的conv1的摺積核的情況。第2層可識別簡單的形狀和紋理(這些特徵是由第1層的邊緣和顏色組成)。第3層可識別物體的更大更複雜的區域性(是由第2層的概念組成)。由此類推,對應著越來越複雜的概念,最後在高層已經基本可看出物體的分類情況。

例如,第4層和第5層的識別標的如下圖所示。

在左邊的識別標的圖中,還可看到每個神經元會聚焦到影象的相關部位,忽略影象的背景。

再看神經元的訓練過程。以第3層的幾個神經元為例,從左到右是隨著訓練的進行,神經元的識別標的的變化,如下圖所示。可見,一開始神經元並沒有明確的識別標的,但隨後會逐漸成型,明確針對某一類標的進行識別:

由於神經元是隨機初始化,所以它們會有不同的演變方向,就像下山時朝著不同的路線前進,最終會分別識別不同型別的標的。

04

可透過遮擋影象,發現哪些區域對於類別識別最為關鍵。具體方法是每次將影象的一部分清零(在下圖中顯示為灰色),觀察是否會影響正確的識別結果。影響越大,就說明擋住的區域越為重要。可將結果畫成熱力圖。

圖中的藍色代表最關鍵的區域,紅色代表最無關緊要的區域。可見,博美犬的面部對於判斷品種很重要,車輪對於判斷車輪很重要,阿富汗獵犬的整個身體都對於判斷品種很重要。

05

可採用2017年6月釋出的SmoothGrad技術(https://pair-code.github.io/saliency/),找到更細緻的判斷依據。下圖中分別為:輸入源影象,網路判斷為足球的原因所在,正確答案馬爾濟斯犬的原因所在:  

可見,網路判斷為足球是根據足球錶面的六邊形紋理,而正確答案馬爾濟斯犬來自於小狗的紋理。

06

註意到AlexNet的fc2層的輸出在ReLU後是4096個數字,可認為它們代表了影象的4096維的語意編碼。透過使用t-SNE聚類,可以將這4096維降維到2維,即,為每個影象找到一個2維坐標,使得坐標相近的影象對應於編碼相近的影象。效果如下圖所示。

可見,車輛、植物、動物等等都會自動聚集在一起,且可觀察到語意的平滑過渡。

07

http://people.csail.mit.edu/torralba/research/drawCNN/drawNet.html還提供了清晰的AlexNet網路運作示例,如下圖所示。

▲AlexNet的運作

選定其中的某個摺積神經元,可直接看到它與其他摺積神經元之間的連線權重的視覺化,以及最能啟用這些摺積神經元的樣本影象區域。

08

透過GAN架構,可更清晰和全面地展現某個神經元所學會判別的事物(https://arxiv.org/pdf/1612.00005.pdf)。例如,某個神經元看上去是識別人臉,但經過分析,它實際也會對建築的門窗,以及綠色產生反應,如下圖所示。圖中是透過GAN技術生成的能啟用這個神經元的影象。

關於作者:彭博,人工智慧、量化交易、區塊鏈領域的技術專家,有20年以上的研發經驗。 在人工智慧與資訊科技方面,對深度學習、機器學習、計算機圖形學、智慧硬體等有較為深入的研究。

本文摘編自《深度摺積網路:原理與實踐》,經出版方授權釋出。

延伸閱讀《深度摺積網路:原理與實踐

轉載請聯絡微信:togo-maruko

點選文末右下角“寫留言”發表你的觀點

推薦語:20年開發經驗專家/知乎大V,從技術理論、工作原理、實踐方法等方面系統、深入講解DCNN。

推薦閱讀

關於Python的一切:2018年,你讀這8本書就夠了

LeCun:智慧的精華在於預測能力!“預測學習”瞭解一下!

Bruce Eckel:我最喜歡Python,Kotlin或將取代Java(附演講全文+PPT)

註意!有人正在計算你今天會出現在哪裡,並嘗試左右你的行為

Q: 深度摺積網路你已經學習了多少?

歡迎留言與大家分享

覺得不錯,請把這篇文章分享給你的朋友

轉載 / 投稿請聯絡:baiyu@hzbook.com

更多精彩,請在後臺點選“歷史文章”檢視

點選閱讀原文,瞭解更多

贊(0)

分享創造快樂