論文閱讀筆記:Visualizing and Understanding Convolutional Networks

概要描述

這是一篇發(fā)表于2014年很經(jīng)典的論文,形成了很多對卷積神經(jīng)網(wǎng)絡(luò)的普遍認(rèn)識,目前的引用數(shù)為1315,主要工作是AlexNet的可視化,以及在此基礎(chǔ)上做了一些分析,對于理解卷積神經(jīng)網(wǎng)絡(luò)很有裨益。

可視化方法

可視化方法主要是通過deconv的方法將某一層特征圖的Top-k激活反向投射到原圖像上,從而判斷該激活值主要識別圖像的什么部分。這就要求針對每一層都必須有對應(yīng)的逆向操作。具體而言,對于MaxPooling層,在前饋時使用switch變量來記錄最大值來源的index,然后以此近似得到Unpooling。對于Relu層,直接使用Relu層。而對于conv層,使用deconv,即使用原來卷積核的轉(zhuǎn)置作為卷積核(PS:此文作者在2011年提出了deconvnet。本文引用了該文獻。)。反向重建過程如下圖所示:

特征分析

通過上面的可視化方法,作者對‘AlexNet的各層的Top-9`激活值進行了可視化,如下圖所示:


分析上述特征圖,作者發(fā)現(xiàn)了網(wǎng)絡(luò)特征的層級特性。第二層對應(yīng)邊、角、顏色的識別,而第三層具有更多的不變性,捕獲了一些紋理特征。第四層顯示了類別的重要差異,比如狗的臉啊,鳥的腳等等。第五層則開始關(guān)注目標(biāo)整體。這形成了對于神經(jīng)網(wǎng)絡(luò)的認(rèn)識,底層網(wǎng)絡(luò)專注于識別低級特征,更高層網(wǎng)絡(luò)通過對下層低級特征的組合抽象形成更高級的特征。

作者利用這種可視化方法,找出了原AlexNet結(jié)構(gòu)的問題(比如第一層缺少中頻信息,第二層由于步長太大導(dǎo)致了一些疊加效應(yīng)等等)并對結(jié)構(gòu)進行了改變,之后進行了對比,發(fā)現(xiàn)改變之后的模型top-5性能高于原網(wǎng)絡(luò)。作者還進行了遮擋敏感性和一致性分析,具體詳見論文。

實驗

此處的結(jié)果是最令我震撼的,它回答了一個久久困擾我的問題:為什么目前用的卷積網(wǎng)絡(luò)都是VGG, ZF, ResNet之類的基于Imagenet的網(wǎng)絡(luò)架構(gòu)作為backbone network

首先,作者進行了網(wǎng)絡(luò)結(jié)構(gòu)尺寸調(diào)整實驗。去除掉包含大部分網(wǎng)絡(luò)參數(shù)最后兩個全連接層之后,網(wǎng)絡(luò)性能下降很少;去掉中間兩層卷積層之后,網(wǎng)絡(luò)性能下降也很少;但是當(dāng)把上述的全連接層和卷積層都去掉之后,網(wǎng)絡(luò)性能急劇下降,由此作者得出結(jié)論:模型深度對于模型性能很重要,存在一個最小深度,當(dāng)小于此深度時,模型性能大幅下降。

然后,就是最震撼的結(jié)果了。作者使用AlexNet去做Caltech-101, Caltech-256PASCAL VOC 2012,得到以下結(jié)果:

解釋一下,表中的Non-pretr表示沒有使用Imagenet預(yù)訓(xùn)練結(jié)果,而是使用新的訓(xùn)練集重新訓(xùn)練,結(jié)果表現(xiàn)非常糟糕;而ImageNet-pretr表示使用了Imagenet的預(yù)訓(xùn)練結(jié)果,作者固定了原來網(wǎng)絡(luò)的權(quán)值,只是使用新數(shù)據(jù)訓(xùn)練了softmax分類器,效果非常好。這就形成了目前的人們對于卷積神經(jīng)網(wǎng)絡(luò)的共識:卷積網(wǎng)絡(luò)相當(dāng)于一個特征提取器。特征提取器是通用的,因為ImageNet數(shù)據(jù)量,類別多,所以由ImageNet訓(xùn)練出來的特征提取器更具有普遍性。也正是因為此,目前的卷積神經(jīng)網(wǎng)絡(luò)的Backbone Network基本上都是Imagenet上訓(xùn)練出來的網(wǎng)絡(luò)。那么試想一下,如果繼續(xù)增加數(shù)據(jù)量,將類別擴展到10k、100k、 1M等等,是不是能夠得到更加通用更好的特征提取器,如此,是不是就能向General AI更近一步呢?當(dāng)然,這樣做的話需要大量的投入,那么可不可以像人類基因組計劃那樣分工合作呢,那樣的話,必將是一番很壯麗的景象。另外,也可以從其他角度進行考慮,可以類似于人類的認(rèn)知方式,采用人類陪同教導(dǎo)的方式讓機器持續(xù)學(xué)習(xí),最后再綜合起來,或許可以得到更好的AI。

One more thing

推薦一個很好的交互神經(jīng)網(wǎng)絡(luò)可視化網(wǎng)站:3D convolutional network visualization,可以很好地幫助理解神經(jīng)網(wǎng)絡(luò)的過程。友情提示:

  • 黑色和灰色表示負值,越黑越負;綠色表示正值,越亮越正;
  • 鼠標(biāo)點擊節(jié)點可以查看具體數(shù)值和其他相關(guān)信息。
  • 作者有相關(guān)論文;網(wǎng)絡(luò)訓(xùn)練使用Matlab,展示使用JavaScrip。
    放一張截圖:
網(wǎng)頁截圖
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容