首頁 > 易卦

「技術綜述」深度學習視覺化都有哪些要點?

作者:由 有三AI 發表于 易卦日期:2022-07-03

什麼叫視覺化

作者 | 言有三

編輯 | 言有三

大家最詬病深度學習的一點就是理論基礎不夠系統,模型就像一個黑盒子,這就更加凸顯了深度學習模型視覺化的重要性了。

本文以實戰經驗為主,除去資料的視覺化部分,我們說以下幾個主要的方向(1)模型結構的視覺化(2)卷積引數的視覺化(3)啟用區域的視覺化(4)訓練過程的視覺化。

1 模型結構的視覺化

所謂模型結構的視覺化,就是為了方便更直觀的看到模型的結構,從而方便進行除錯,下面對2個主流的框架進行展示。

1。1 caffe網路結構視覺化

定義一個簡單的3層的模型(模型可以檢視我們git,程式碼太長此處不展示),我們可以採用幾種方案進行視覺化;第一種,利用caffe自帶的視覺化方法;第二種,利用開源專案netscope;由於netscope視覺化效果更好,因此我們採用netscope進行視覺化,工具網址如下:http://ethereon。github。io/netscope/#/editor

「技術綜述」深度學習視覺化都有哪些要點?

視覺化後的結果如上圖,可以看到網路的結構是透過卷積+啟用函式的堆疊,同時網路的資料輸入層和最後的全連線層作為了loss層和acc層的輸入。

當我們想要看每一層的引數時,就可以將滑鼠放上相應的結構塊;

「技術綜述」深度學習視覺化都有哪些要點?

當然,還可以使用caffe自帶的指令碼進行視覺化,在caffe根目錄下的python目錄下有draw_net。py這個指令碼。

draw_net。py執行的時候帶三個引數,第一個引數是網路模型的prototxt檔案,第二個引數是儲存的圖片路徑及名字,第三個引數是rankdirx,他有四種選項,分別是LR, RL, TB, BT。用來表示網路的方向,分別是從左到右,從右到左,從上到小,從下到上。預設為LR。

1。2 tensorflow網路結構視覺化

在tensorflow中要進行視覺化,必須使用name scope來確定模組的作用範圍,新增部分名稱和作用域,否則網路圖會非常複雜。與上面類似,我們同樣定義一個三層的卷積網路(程式碼還是看git)。

要想利用tensorboard進行視覺化,必須在session中透過summary儲存網路圖,只需要在訓練程式碼中新增命令即可,summary = tf。summary。FileWriter(“output”, sess。graph)

最後利用tensorboard命令來檢視訓練結果和視覺化結果,網路的視覺化結果如下。

「技術綜述」深度學習視覺化都有哪些要點?

可以看出,網路的結構視覺化和caffe的差不多。除了caffe的網路結構視覺化是輸入模型配置檔案,大部分的深度學習框架都使用了python進行開發,模型結構的視覺化與tensorflow結果差不多。相比較來說,caffe的模型視覺化方法更加簡單直接,獨立於程式碼,可以更便捷地看到每一層的引數配置。

2 卷積引數視覺化

前面我們可視化了網路的結構,從而對要訓練的網路就有了整體的把握。當我們得到了訓練結果之後,一個模型常有百萬千萬級別的引數,我們能否透過視覺化的方法,來評判一下這個網路結構的好壞呢?通常情況下,我們希望網路結構學習到的權重,模式足夠豐富,這樣才有強大的表徵能力。

2。1 淺層卷積引數視覺化

網路的早期卷積學習到的是通用的特徵,由於大部分網路的輸入都是彩色圖,所以資料層的通道數為3。正好我們平時用的彩色圖的通道就是3維,這時候如果直接將這3組通道轉換為一個彩色圖,我們就可以很直觀的視覺化這第一層的卷積引數,對於任意以輸入圖為3通道彩色圖的網路結構來說,這都是通用的。

下面是alexnet學習到的權重的第一層卷積的視覺化。

「技術綜述」深度學習視覺化都有哪些要點?

這其中有一些卷積核為灰度圖,說明三個通道的對應引數相近,學習到的是與顏色無關的特徵。有的為彩色圖,說明3個通道的特徵差異大,學習到的是與顏色有關的特徵。這與上面人眼和感知特性也是相通的,在底層,學習到的是邊緣,形狀,顏色等敏感等資訊。

細心的讀者應該可以注意到,上面的引數,具有一定的互補性和對稱性。

2。2 高層卷積引數視覺化

到了高層,由於輸入的通道數不再為3,所以無法像第一層那樣,將其投射到影象空間進行直觀的視覺化。

這時候就有了兩種思路。分別是dataset-centric和network-centric方法。他們的區別就是,第一個要視覺化核函式,必須要使用真實的輸入資料。第二個,則是透過生成一個隨機圖片,然後進行迭代的方法,來最大化響應層的神經元的啟用,這個時候為使得輸入的圖片更加平滑,可以考慮使用GAN等方法。

主要的研究方法包括兩種,反捲積法【2】和梯度計算法【3】。

反捲積方法的核心思想就是利用上取樣從特徵空間逐步恢復到影象空間。假設我們要視覺化第1個feature map的一個unit,即特徵圖的一個畫素的activation,則首先從資料集中計算一下多個輸入影象各自經過前向傳播後在這個unit上產生的activation,取出activation最大的一些影象,這些影象作為輸入圖。

然後將輸入圖分別在這個unit上產生的activation進行反向傳播,其他位置置為零。其中與pooling對應的就是uppooling,它透過在max pooling的時候記錄下最大啟用位置,在反捲積的時候進行恢復。與卷積對應的操作就是轉置卷積操作,這是被用於影象分割的方法,也是通常意義上所說的反捲積。

反捲積的結果,就是一個重建的圖。

「技術綜述」深度學習視覺化都有哪些要點?

梯度計算法包括標準的梯度計算法以及它的一些改進版本integrated gradients,guided backprop,基本原理如下,在訓練的過程中固定網路的引數不變,學習輸入。

「技術綜述」深度學習視覺化都有哪些要點?

反捲積法和梯度計算法可視化出來的結果,可以反映出神經元學習到的類別的輪廓,但是結果不夠精細。GoogleBrain團隊的deep dream【4】研究,對inception網路進行了逐層的特徵視覺化,揭示了每一個網路層的特性。該專案是透過輸入隨機噪聲和想讓網路學習的影象的先驗知識,最後視覺化網路學習到的該類的結果,雖然不是現實存在的影象,但是卻具有該類別的特性,如同人類夢境中生成的不真實卻又有辨識度的場景一樣。

下面展示了layer 4c層的一個神經元的結果。

「技術綜述」深度學習視覺化都有哪些要點?

3 啟用熱圖視覺化

可視化了卷積引數,它可以反映出所學習到的網路的引數本身有什麼樣的特點,它是從神經元的角度解釋了 CNN,而啟用熱圖視覺化考慮從輸入影象的角度解釋CNN。它從輸入影象中找出啟用卷積層中特定神經元的選擇性模式,來反應網路到底學習到了什麼資訊。

特徵圖視覺化的結果是sensitivity map,也叫saliency maps,以CAM(Class Activation Mapping)【5】方法及其變種為代表。

CAM利用GAP(Global Average Pooling)替換掉了全連線層,將輸出通道調整為輸出類別數,再加權然後透過softmax層得到結果,視覺化原理圖如下:

「技術綜述」深度學習視覺化都有哪些要點?

看上圖,最後輸入softmax的特徵圖,等於k個featuremap的加權和,其中w係數包括c維,c等於類別數目。等到了熱力圖之後,直接上取樣到原圖中就能得到啟用區域,因為featuremap保留了原圖的空間關係。

4 訓練過程視覺化

最後,我們透過tensorflow視覺化開源框架來展示在專案中的視覺化,由於我們前面已經有許多期文章講述過視覺化的各個模組細節,所以此處就不再做技術細節展示,而只展示結果。

專案是這個:

https://github。com/carpedm20/DCGAN-tensorflow,我們用來生成了一批嘴唇資料。

4。1 loss視覺化

loss等標量指標視覺化可以反應網路的學習情況,是必須關注的。

「技術綜述」深度學習視覺化都有哪些要點?

「技術綜述」深度學習視覺化都有哪些要點?

4。2 中間結果視覺化

「技術綜述」深度學習視覺化都有哪些要點?

對於影象生成任務,沒有什麼比檢視中間結果更加有說服力的了。

4。3 網路結構視覺化

「技術綜述」深度學習視覺化都有哪些要點?

tensorflow視覺化網路結果雖然比caffe更加複雜,但也更加細緻,關注關注沒有壞處。

另外,還可以檢視權重的直方圖分佈等等,對於網路的效能判斷也有輔助作用。

5 總結

正所謂一圖勝千言,視覺化起來high啊,這個坑遠遠沒有這麼簡單。

如果你想了解更多,有一篇綜述文章【6】做了分類,不過對於大部分人來說那個分類並不好理解,所以我還是按照本文的組織形式。

參考文章

[1] Erhan D, Bengio Y, Courville A, et al。 Visualizing higher-layer features of a deep network[J]。 University of Montreal, 2009, 1341(3): 1。

[2] Zeiler M D, Fergus R。 Visualizing and Understanding Convolutional Networks[J]。 2013, 8689:818-833。

[3] Simonyan K, Vedaldi A, Zisserman A。 Deep inside convolutional networks: Visualising image classification models and saliency maps[J]。 arXiv preprint arXiv:1312。6034, 2013。

[4] https://distill。pub/2017/feature-visualization/

[5] Zhou B, Khosla A, Lapedriza A, et al。 Learning deep features for discriminative localization[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition。 2016: 2921-2929。

[6] How convolutional neural network see the world - A survey of convolutional neural network visualization methods