1. 程式人生 > >cs231n-(8)理解和視覺化卷積網路

cs231n-(8)理解和視覺化卷積網路

視覺化卷積網路學到的內容

視覺化卷積網路學到的內容已經有所研究,這裡介紹相關工作。

視覺化啟用值和第一層權重

啟用層
最直接的方法是前向傳播過程中,視覺化啟用值。對於使用ReLU的網路,啟用圖看起來相對點狀且密集(relatively blobby and dense),隨著訓練進行,啟用圖變得稀疏,啟用值出現在某一區域。一個可能出現且容易注意到的問題是,視覺化啟用圖為零(對於許多輸入來說),這是dead filter,這可能是學習率過高導致。

cs231n09_01.jpeg
上圖是AlexNet輸入一張貓的圖片後的啟用圖。左邊是第一層CONV的得啟用圖,右邊是第五層CONV值的啟用圖。每張啟用圖對應一個濾波器。可以看出啟用圖是稀疏的(大部分值為零)且在某些固定位置啟用。

卷積/全連線濾波器
權重視覺化。最常見的是視覺化第一層的權重,因為它直接對應輸入原始資料,後面層的權重也可以視覺化。視覺化權重比較有用,因為訓練良好的網路,權重視覺化後比較平滑,沒有什麼噪聲。如果視覺化後噪聲很多,說明網路可能沒有訓練好,或者正則化強度不夠導致了過擬合。

cs231n09_02.jpeg
左邊是AlexNet權重視覺化。左圖對應第一個CONV權重,右圖對應第二個CONV權重。左圖權重平滑,說明網路訓練良好。有彩色和灰度圖是因為AlexNet包含兩個資料流,一個是高頻率的灰度圖,一個是低頻率的彩色圖。第二層CONV的權重也是平滑,沒有噪聲。

尋找使網路“最啟用”的影象

cs231n09_03.jpeg
上圖是AlexNet第5層池化層中神經元值對應的圖。白色區域是神經元的感受視野。神經元對上半身、文字和高光亮相應較大。

使用t-SNE嵌入

卷積網路可以看做逐漸把圖片轉換為線性分類器可分特徵的過程。我們可以把圖片嵌入到2維空間中,這樣,低緯度表示時它們距離比高緯度表示更小。t-SNE就是最出名的一種嵌入方法。

為了完成嵌入,使用CNN提取特徵(AlexNet中是在分類器前面的4096維的向量),把這些向量嵌入到t-SNE得到每個圖片的2維向量。對應圖片可以網格形式展示。

cs231n09_04.jpeg
臨近的影象,高維空間表示也臨近。注意到臨近的影象是基於類別或語義的臨近,而不是基於畫素或顏色。更多參考t-SNE visualization of CNN codes

遮擋部分影象

當卷積網路分類影象時,怎麼才能確定是識別了影象內容,而不是影象背景呢?一個研究方法是通過遮擋部分影象來確定網路對影象哪部分感興趣。通過遮擋不同部分,對應正確類別概率可以視覺化為2維熱力圖。論文

Visualizing and Understanding Convolutional Networks中講述了方法。

cs231n09_05.jpeg

上面三幅影象為輸入影象,灰度部分為遮擋。下圖是通過遮擋不同部分,得到對應正確類別概率生成的熱力圖。可以看出,遮擋關鍵部分,會使正確類別概率下降。

視覺化資料梯度等

基於CNN重建原始影象

保留多少空間資訊

Plotting performance as a function of image attributes

Fooling ConvNets

Comparing ConvNets to Human labelers