Deep Learning-CNN可視化

關於CNN可視化:

  1. 卷積核filter可視化
  2. feature map可視化

 

卷積核filter可視化

<1>藉助反向decode的過程實現filter可視化

所謂filter可視化,不是簡單的從filter的weights和biases從看出filter的樣子,而是應該從filter的機制出發,去理解filter到底“看到了什麼內容,``想看到什麼內容``” 

對於CNN,作爲model對應了一個function set,而不斷訓練CNN中params的過程就是在不斷逼近true function的過程。所以當CNN中params固定時,整個model對應的就是一個function,其對應的就是一個映射。類似於AE中encode和decode的過程,對於某一層的feature map,對應的可以認爲是AE中的code。所以要想知道filter到底看到的是什麼,就可以藉助這個decode的想法反向推回image,也就是將feature map反映射回image,從而實現可視化filter看到的內容。但是decoder也需要有輸入code,即這個feature map。如何選擇輸入又是一個問題。換句話說,想要知道的不僅僅是filter看到了寫什麼,而是filter想看到些什麼。進而,要想知道filter想看到什麼,首先要知道什麼時候filter是看到了他想看的。從filter實現對上一層輸出的feature map或者是原始image進行卷積計算併產生輸出的過程中可以知道filter實際上是在尋找搜索區域中與其本身所描述的內容相一致的那部分內容。也就是說,當filter遇到搜索區域中與其所描述的內容相一致的內容時,filter會產生大的輸出,也就是產生很大的響應。所以,要想知道filter想看到什麼—>filter看到什麼內容時會興奮,即產生大的響應—>給一個filter很大的響應,fix filter的params不進行update,藉助decode的實現,反向推出image,這個所得到的image也就是filter想要看到的內容。

 

<2>使用gradient ascent的方法實現filter可視化

實際上和<1>異曲同工。只不過這裏採用的是自動學習decode過程中經歷的deconv、depool、derelu等結構的params。這裏實際上和模型前向訓練(得到儘可能小的loss)時一樣都是一個優化問題。這裏的優化函數對應於模型前向訓練過程中的損失函數。所以這裏的目標是爲了得到一個儘可能大的output。

這裏和前向的模型訓練有幾點不同:

  • 1)該過程的target是前向過程中input的data,而不是weights和biases值。所以在該過程中改變的是輸入input的值,而網絡結構中的params的值是保持不變的。
  • 2)這裏需要的是一個儘可能大的output,對應的就是filter的響應,要儘可能大。而不是loss function希望他儘可能地小。

所以藉助使用gradient descent算法對前向網絡中的weights和biases進行更新的思想,使用gradient ascent算法對網絡的input進行更新,從而得到能使filter產生很大響應的feature map。從而得到filter想要看到的內容,即input。

可以發現,上述兩個方法,都有一個很重要的部分,那就是如何定義一個“具有很大響應的feature map”

 

feature map可視化

<1>藉助反向decode的過程實現feature map可視化

本質上就是爲了得到原圖像。但是需要一個decode的過程是因爲這個過程通常發生在一個特定的情景下:一次得到多個圖像的feature map,並且要找出響應最大的feature map對應的圖像,如果能夠做到對每一個任意指定的feature map都能找到原圖像時,那完全沒必要做decode。但是如果很難從輸入的數據集中找到每個feature map對應的圖像的話,則需要藉助decode的過程反向得到儘可能逼近於原圖像的圖像。在找到feature map中最大響應的位置可以使用maxpooling,得到一個[1, 1, num_ch]的tensor,其中num_ch爲輸入maxpooling層的tensor的深度。之後decode的過程中,輸入的就是這個經過maxpooling的輸出tensor,並需要經過depooling的過程(在depooling的過程中,一些信息會丟失)。

 

<2>直接對feature map進行可視化

重點是要解決高維度的問題,此時可以藉助t-SNE來實現降維,從而實現可視化。

 

2.1.找出feature map中響應最大的部分所對應的圖像塊

<1>

因爲已知feature map是由原圖像經過某個映射得到的,所以找出對應的圖像塊,即在原圖像中crop出對應的圖像塊。現在主要是存在兩個問題:1)最大響應部分的位置如何獲取。2)需要crop出的圖像塊尺寸是多少。

  • 對於1)可以通過maxpooling來得到最大響應位置在feature map中的位置,再加上比例的縮放關係來獲取最大響應在原圖像的對應位置
  • 對於2)可以通過感受野尺寸在不同層次下的縮放關係來得到在原圖像中需要crop出的圖像塊的尺寸。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章