天天看點

打開深度學習的潘多拉魔盒(模型可視化)打開深度學習的潘多拉魔盒(模型可視化) - v3.x

打開深度學習的潘多拉魔盒(模型可視化) - v3.x

深度學習原理與實踐(開源圖書)-總目錄,建議收藏,告别碎片閱讀!

深度學習在各個領域攻城略地,在諸多領域秒殺傳統算法,但是其運作細節一直是個黑盒。理論研究者特别是數學家無法完全解釋的事物。學術界、研究所和企業界紛紛希望搞出工具箱,希望打開這個潘多拉魔盒,一窺究竟。總體上有兩個目标: (1) 量化和圖形化其運作機理;(2) 使從業者有更多的Insight,能夠更好的知道深度學習實踐,并降低深度學習的門檻。社會變化快,天天潘多拉(Pandora)魔盒滿天飛,重溫一下潘多拉(Pandora)的故事,貌似還是蠻溫情的(:>…)

衆神之王宙斯對普羅米修斯造人以及盜取火種之事耿耿于懷,于是指令赫淮斯托斯用黏土做成的第一個人類女人來報複和懲戒普羅米修斯。衆神聽從宙斯指令各給了女人一份禮物:阿佛洛狄忒(Aphrodite)為她淋上令男人瘋狂的激素;赫拉賜予她好奇心(curiosity);女神雅典娜(Athena)給了她無知(not wisdom),并教女人織布,制造出各顔各色的美麗衣織,使女人看來更加鮮豔迷人;神的使者赫爾墨斯(Hermes)傳授她語言的天賦,即說謊的天賦;宙斯給其賜名: 潘多拉(Pandora)。根據神話,潘多拉打開魔盒,釋放出人世間的所有邪惡——貪婪、虛僞、诽謗、嫉妒、痛苦等等,但潘多拉卻照衆神之王宙斯的旨意趁希望沒有來得及釋放時,又蓋上了盒蓋,最後把它永遠鎖在盒内。後來潘多拉(Pandora)泛指災禍之源。

1 模型可視化概述

可視化工作分為兩大類:非參數化方法和參數法方法。非參數化方法不分析卷積核具體的參數,而是先選取圖檔庫,然後将圖檔在已有模型中進行一次前向傳播,對某個卷積核,我們使用對其響應最大的圖檔塊來對之可視化。參數法方法着重分析卷積核中的參數,使用參數重構出圖像。

2 模型可視化

深度學習裡面大部分都是對若幹次元的資料進行卷積操作。了解卷積操作的關鍵是了解中間層的特征激活值。特征激活值和圖像是反卷積的關系,利用反卷積操作可以完成反向映射操作。反卷積網絡可以被看成是一個卷積模型,這個模型使用和卷積同樣的元件(過濾和池化),但是卻是相反的過程。反卷積網絡用來可視化已經訓練好的卷積神經網絡,是以此處的反卷積網絡并不要求具有學習能力。

2.1 卷積核(Filters)可視化

Krizhevsky憑借AlexNet模型,基于深度神經網絡一舉赢得2012年度ImageNet大規模圖像識别挑戰賽(ILSVRC)冠軍。這次突破客觀上推動了卷積神經網絡的複興。Krizhevshy再其論文中直接可視化了第一個卷積層的卷積核。從卷積核的可視化的觀察可以發現:卷積核相當于特征提取器,一個特征提取器用于提取一個特征,所需每個卷積層需要多個卷積核(特征提取器)。如下圖所示:

打開深度學習的潘多拉魔盒(模型可視化)打開深度學習的潘多拉魔盒(模型可視化) - v3.x

圖檔來源: AlexNet論文-NIPS

深度神經網絡所有卷積層的卷積核都可以可視化。所有卷積層的卷積核可視化的觀察可以發現:低級卷積層提取低級特征(點線面等),中級卷積層提取中級特征(形狀等),進階卷積層提取進階特征(抽象特征)。這種分層特征提取又直接證明了深度學習的多層卷積操作等效于大腦皮層處理視覺資訊時的分層處理機制(V1-V5);間接證明了深度學習是類似人腦的智能算法。如下圖所示:

打開深度學習的潘多拉魔盒(模型可視化)打開深度學習的潘多拉魔盒(模型可視化) - v3.x

圖檔來源: CS231n: Convolutional Neural Network

2.2 特征激活值可視化(基于反卷積)

卷積核可視化對于了解神經網絡模型并不是非常直接,是以Matthew D Zeiler提出使用特征激活值可視化的方法可視化卷積層。Matthew D Zeiler利用這種可視化手段,成功用于可視化和優化AlexNet模型,并提出ZFNet模型,赢得了2013年度ImageNet大規模圖像識别挑戰賽(ILSVRC)的冠軍。

打開深度學習的潘多拉魔盒(模型可視化)打開深度學習的潘多拉魔盒(模型可視化) - v3.x

圖檔來源: ZFNet論文-1311.2901

2.3 特征映射(Feature Maps)可視化

将卷積層的 filters 和 feature maps 當成圖檔可視化有兩個意義: (1) 特征平滑規律的 filters 是模型訓練良好的标志之一,未收斂或過拟合模型的卷積層 filters 會出現很多 noise。(2) 觀察 filters 和 feature maps 的圖檔,特别是第一層卷積的圖檔可以總結出該層所關注的圖檔特征,這有助于我們了解卷積神經網絡的工作原理。reminisce/mxboard-demo給我們展現了深度學習可視化的各種技巧。對于良好的模型,其Filters都表現出良好的光滑性和規律性,彩色Filters負責提取原始圖檔前景和背景的局部特征,灰白圖檔負責提取圖檔中物體的輪廓特征。 MXNet Model Zoo 中VGG16模型的特征映射(Feature Maps)可視化效果如下:

打開深度學習的潘多拉魔盒(模型可視化)打開深度學習的潘多拉魔盒(模型可視化) - v3.x

圖檔來源: reminisce/mxboard-demo

3 代碼實作

代碼實作請參考下面代碼。目前可視化工具箱基本滿足需求,了解基本原理即可使用。前面兩個項目是示範性項目,代碼很容易學習和了解。後面兩個項目是百度和谷歌的可視化工具箱,看源碼就免了,學會使用就可以了。

  • reminisce/mxboard-demo
  • yosinski/deep-visualization-toolbox
  • Paddle/Visual DL
  • tensorflow/tensorboard

4 經典參考案例

Yosinski[4]開發一個可以支援任意CNN模型可視化的架構,項目名稱: yosinski/deep-visualization-toolbox。目前支援Caffee架構,其他架構估計需要進一步擴充。可視化效果非常驚豔。

清華大學視覺分析小組提供了一個線上的CNN可視化工具CNNVis,幫忙初學者更好地分析深度卷積神經網絡。大家可以在訓練的時候采取不同的卷積核尺寸和個數對照來看訓練的中間過程。

百度PaddlePaddle& ECharts團隊宣布上線深度學習可視化工具Visual DL,該工具可以使得深度學習任務變得生動形象,實作可視分析。百度希望能夠借此為全球更廣泛的使用者提供更便捷高效的深度學習工具。

Tensorflow官方推出了可視化工具Tensorboard,可它可以将模型訓練過程中的各種資料彙總起來存在自定義的路徑與日志檔案中,然後在指定的web端可視化地展現這些資訊。Tensorboard可以記錄與展示以下資料形式:Scalars, Images, 音頻Audio, Graph, Distribution, Histograms, Embeddings等。在訓練的過程中将一些資訊加以記錄并可視化得表現出來,有助于我們了解和探索我們設計的深度學習模型。

5 參考論文

  • [1] Dumitru Erhan, Yoshua Bengio. Visualizing Higher-Layer Features of a Deep Network. 2009.
  • [2] Matthew D Zeiler, Rob Fergus. Visualizing and understanding convolutional neural networks. arXiv preprint arXiv:1311.2901, 2013.
  • [3] Matthew D Zeiler, Rob Fergus. Adaptive deconvolutional networks for mid and high level feature learning. In: ICCV (2011)
  • [4] J. Yosinski, J. Clune, A. M. Nguyen, T. Fuchs, and H. Lipson, “Understanding neural networks through deep visualization,” CoRR, vol. abs/1506.06579, 2015.