1. 程式人生 > >開啟深度學習的潘多拉魔盒(模型視覺化)

開啟深度學習的潘多拉魔盒(模型視覺化)

開啟深度學習的潘多拉魔盒(模型視覺化) - 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再其論文中直接可視化了第一個卷積層的卷積核。從卷積核的視覺化的觀察可以發現:卷積核相當於特徵提取器,一個特徵提取器用於提取一個特徵,所需每個卷積層需要多個卷積核(特徵提取器)。如下圖所示:

卷積核的視覺化

圖片來源: AlexNet論文-NIPS

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

深度學習所有卷積核可視化
圖片來源: CS231n: Convolutional Neural Network

2.2 特徵啟用值視覺化(基於反捲積)

卷積核可視化對於理解神經網路模型並不是非常直接,所以Matthew D Zeiler提出使用特徵啟用值視覺化的方法視覺化卷積層。Matthew D Zeiler利用這種視覺化手段,成功用於視覺化和優化AlexNet模型,並提出ZFNet模型,贏得了2013年度ImageNet大規模影象識別挑戰賽(ILSVRC)的冠軍。

特徵啟用值視覺化

圖片來源: 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)視覺化效果如下:

特徵對映(Feature Maps)視覺化
圖片來源: reminisce/mxboard-demo

3 程式碼實現

程式碼實現請參考下面程式碼。目前視覺化工具箱基本滿足需求,瞭解基本原理即可使用。前面兩個專案是演示性專案,程式碼很容易學習和理解。後面兩個專案是百度和谷歌的視覺化工具箱,看原始碼就免了,學會使用就可以了。

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.