本文是在閱讀完《Residual Attention Network for Image Classification》所做的筆記,

由於本人對注意力機制瞭解甚淺,筆記當中若有不恰當的地方,還望指出。

0 前言

計算機視覺

中的注意力機制的基本思想是讓模型學會專註,把注意力集中在重要的信息上而忽視不重要的信息。

舉個簡單的例子,對於圖像分類任務,有隻狗在廣闊無垠的沙漠裏漫步,模型能識別出有隻狗,那假如狗是在茂密的森林裡散步呢,模型有可能識別不出來,這是為什麼呢?

因為模型並沒有把注意力放在狗上,而是放在整張圖上,這樣一旦換了背景,模型很有可能會分類出錯。而我們人類卻能很好地對此進行分類,因為我們只關注場景中是否有狗,而不關注背景究竟是沙漠還是森林,可以簡單地理解這就是注意力機制。

那如果讓模型也像我們一樣只關注場景中是否有狗,那豈不是分類會更準?是的,會更準。

1 介紹

接下來本文將介紹Residual Attention Network,它是一種注意力網路。受注意力機制和深度神經網路的啟發,作者提出了Residual Attention Network,它主要包含數個堆積的Attention Module,每一個Module專註於不同類型的注意力信息,而這樣簡單地堆積Attention Module會對特徵的表達有負面的,所以作者提出了Attention Residual Learning。

Residual Attention Network的結構如下:

在詳細介紹Residual Attention Network的設計之前,先看看它的優點。

優點:

(1) 生成的特徵更具判別度,即在特徵空間中,類內差距小,類間差距大

(2) 逐漸增加Attention Module的數量,能持續提高模型的性能

(3) 能以端到端的訓練方式整合到深層網路當中

原因:

(1) Stacked network structure:分工不同,不同的Attention Module能捕獲不同的注意力信息,這裡的不同模塊是指所處的位置不同,而模塊的結構是一樣的

(2) Attention Residual Learning:Stacked network structure會導致性能明顯的下降,於是提出了Attention Residual Learning,這個會在下面介紹

(3) Bottom-up top-down feedforward attention

2 網路設計

2.0 Attention Module

Residual Attention Network由多個Attention Module組成。每一個Attention Module分為兩條branch,一條是mask branch,另一條是trunk branch。trunk branch負責提取特徵,mask branch負責生成注意力信息(即權重)。

假定一個模塊H的輸入是x,trunk branch的輸出是T(x),mask branch的輸出是M(x),則模塊H的輸出是 H_{i,c}(x) = M_{i,c}(x) * T_{i,c}(x) ,其中i是像素點的位置,c是對應的通道位置。這其實是Residual Attention Network自稱為mixed attention的原因。例如T(x)的維數為(channel, height, width),那麼M(x)的維數也為(channel, height, width),這樣兩個張量進行點乘操作,也就是空間對應位置的值進行相乘。

在Attention Module中,mask不僅做為前向傳播的特徵選擇器,還做為反向傳播的梯度過濾器,公式一看便知,

frac{partial M(x,	heta)T(x,phi)}{partial phi} = M(x,	heta)frac{partial T(x,phi)}{partial phi}

其中 	heta 是mask branch的參數, phi 是trunk branch的參數。從上面的公式可以看出mask branch能抑制來自雜訊的wrong gradients,這使得Attention Module對雜訊具有更強的魯棒性。

那為什麼要使用多個Attention Module呢?

如果只使用單個的Attention Module,會存在以下問題:

(1) 圖片的背景可能是混亂的、複雜的,前景的形態可能是多變的,例如不同的狗在不同的背景之下,而這把這樣的重任交給單個的Attention Module,這樣效果肯定是不如人意的

(2) 單個Attention Module只修正特徵一次,如果恰好這次的修正是不恰當的,也就是注意力發揮的作用是負面的,那後續的特徵就沒有得到再次修正的機會了,那這樣的結果肯定也是不如人意的

當然了,Residual Attention Network很好地解決了上述的兩個問題,它使用多個Attention Module,每一個trunk branch有其對應的mask branch,這樣不同的mask branch就能學到不同的注意力信息。

如上圖,這是一張熱空氣氣球的圖片,在Low-level處,有對應的Sky mask清除藍色的顏色特徵,同時在High-level處,有對應的Ballon instance mask修正part feature。

2.1 Attention Residual Learning

然而,簡單地堆積Attention Module卻會導致性能的明顯下降。這其中的原因有兩個,一是mask的值是在0-1之間,如果特徵圖反覆地和mask做點乘運算,無疑會降低深層特徵層的值(0.9 * 0.9 * 0.9*0.9 ......會變得很小),另一個是soft mask會破壞trunk branch的良好特性。

為此,作者提出了attention residual learning。Attention Module的輸出H可重新定義為: H_{i,c}(x) = (1 + M_{i,c}(x)) * T_{i,c}(x) ,其中M(x)的取值範圍在0-1之間,如果M(x)的值接近於0,那麼H(x)的值會近似等於T(x),這樣從理論上講,有Attention Module的效果肯定不會差過沒有Attention Module的效果。這裡的M(x)是關鍵,通過添加這個Mask,模型可以自適應地提高重要的特徵同時忽視來自trunk branch的雜訊。

在介紹處提到的Bottom-up top-down feedforward attention其實就是這裡的down sample和up sample。

堆積Attention Module並使用Attention residual learning,能使模型在保留重要的特徵情況下還不破壞原始特徵的特性。堆積的Attention Modules能漸漸地修正特徵圖,從下圖可知,層數越深,特徵越清晰。

2.2 Soft Mask Branch

其中r表示的是相鄰最大池化之間殘差模塊的數目,上圖就是其中一個Soft Mask Branch,包括fast feed-forward sweep和top-down feedback step,前者用於快速地收集整張圖片的全局信息,後者用於把全局信息和原始特徵圖結合起來。

2.3 Spatial Attention and Channel Attenion

對應於mixed attention、channel attention、spatial attention這三種注意力機制,作者分別使用了三種不同類型的激活函數。對於mixed attention f_{1} ,是在每個channel和每個spatioal position簡單地使用了sigmoid函數,對於channel attention f_{2} ,是在channel這個維度添加了L2正則化,對於spatial attention f_{3} ,是在spatial這個維度使用了sigmoid函數。具體的公式如下:

其中i是像素點的位置,c是對應的通道位置, mean_{c}std_{c} 分別表示第c層的均值和標準差, x_{i} 是第i點這個位置的特徵向量。

實驗結果如上圖,mixed attention的效果最好,這表示讓Attention Module自適應地改變而不添加額外的約束會獲得更好的性能。

3 總結

作者提出了Residual Attention Network,它包含數個Attention Module,並使用了Attention Residual Learning。Residual Attention Network效果好的原因有兩,一是包含數個Attention Module,這樣每個Attention Module都能關注不同類型的注意力信息,二是把top-down注意力機制整合到bottom-up top-down feedforward結構當中。


推薦閱讀:
相關文章