CVPR2018 — 可解釋的CNN(spotlight)

Original article was published by 許竣翔Jordan Hsu on Deep Learning on Medium


Know how

上圖是傳統CNN與這篇的CNN的差別,這篇其實就是把Conv layer的loss部分做改良,除了原任務的loss(例如cross-entropy)外,額外加上一個mutual information的loss(接下來會解釋),所以上右圖的綠色部分不是額外加了什麼layer,只是作者的畫圖表達方式不同而已

除了上述loss外,還有額外加了一個mask,主要概念是抑制分散的activation(如下圖),讓feature map能focus在某一區塊(object-part)

我們無法確保傳統的CNN會學到什麼,因此他的檢測結果很容易受到dataset的不同而影響performance

接下來產生了幾個問題:
1. mask是要有ground-truth的label,我才能指導model去學習物體的哪些部分是有意義的嗎?
2. 我怎麼知道要mask哪裏,才能抑制noisy activation & 留下預測所需的關鍵資訊?(information bottleneck theory [2])
3. 那個mutual information是誰跟誰的mutual information,為什麼能讓filter們各司其職?

第一個問題的答案是NO,不然也不用在這邊講這篇paper了xD

要回答第二個問題,首先我們先介紹paper中如何定義mask的,假設一張輸入圖片經過conv和relu後得到feature map(下稱為x)的shape是3*3,那我們就會有3*3張masks(對應每個x的pixel),每張mask的shape也都是3*3,如下圖,每張mask的能量分別會以一個點為中心像四周衰減(L1-norm)

paper中的做法是會去看x的pixel值在哪個座標最大(relu後的值最大),就去用哪張mask做x ◦ mask,用意是確保x只會激活某個region,以此來filter out noisy activation,可以把以上概念想成我今天要檢測貓,然後filter可能會同時用部分貓腳、貓耳朵、貓臉來聯合檢測,但我希望一個filter只要foucs在一個object-part就好,所以會用mask的方式只留下x上最明顯的區域(下圖)

而如何”留下預測所需的關鍵資訊”呢,filter的優化目標除了原任務的loss外,加上了針對不同的x,我們如何選擇一個合適的mask,paper中的做法是最大化所有x(下稱X)與所有masks(下稱T)之間的mutual information,代表當我今天拿到一個x,我能最大程度的降低要選擇哪個mask的不確定性(i.e. 如果我選擇每個mask的機率是一樣的,那我等於不知道哪個mask對x合適,所以我的目標是要確定選某一個mask,這樣我的不確定性就是0),上述formulate成數學式的話,如下圖:

最後一項為原任務loss

其中

目標:最大化mutual information(MI),因此loss function前面有負號

值得注意的是,filter loss這件事在此paper只有考慮在high-layer的conv,原因是low-layer的conv通常會學到一些common senses,例如圖片的形狀、紋理、顏色…,而high-layer的conv會開始學到task-specific的資訊,因此只需對high-layer的conv增加限制、希望高層的conv can learn a better representation即可

最後回答第三個問題:為什麼能讓filter們各司其職。還記得剛提到我們希望每個filter只負責一個object-part嗎(例如當鳥頭出現時,對應的filter會做事,即根據其x最大的pixel值的座標,從T裡(更精確來說,是T+)挑一個對應位置的mask指定給它;不相關的filter就保持安靜,即指定給它一個全黑的mask,下稱T-),首先,我們需要在training process determines the target category for each filter,paper中是依據filter對於某類型image set得到的x的pixel值平均後來決定filter對哪個類別特別有興趣,就讓該filter負責該類型圖片的檢測(如下圖)

c為圖片類別,例如狗、貓之類的

定義好filter的類別後,我們來改寫一下上面提到的MI(數學推導見[3])

紅框部分為常數,代表prior entropy of masks
藍框部分目標為Low inter-category entropy,T’ ∈ {T-,T+},When we know x, we need to assure T- or T+ (category c or not) to minimize the conditional entropy
棕框部分目標為Low spatial entropy, T+為 all positive masks. When we know x, we need to assure the one mask to minimize the conditional entropy. 而不是選所有mask的機率都一樣(這樣entropy會高)