PAYING MORE ATTENTION TO ATTENTION:

PAYING MORE ATTENTION TO ATTENTION : IMPROVING THE PERFORMANCE OF C NVOLUTIONAL NEURAL NETWORKS VIA ATTENTION TRANSFER

論文地址:https://arxiv.org/abs/1612.03928

github地址:https://github.com/szagoruyko/attention-transfer

文章的提出的模型結構很樸素,和大部分的知識蒸餾方式相同,教師網絡通過生成的注意力圖(attentior map)來指導學生網絡的注意力圖學習,通過attention transfer 縮小學生attentior map 和教師網絡attentior map 的距離使得學生網絡學習到教師網絡的注意力圖。這樣學生網絡學習到了這些知識,便能夠生成儘可能與教師網絡相似的特徵圖。

這邊提一點,在學習中間層特徵圖,不管是熱力圖,注意力圖還是普通的特徵圖,兩個網絡在這個地方的大小是一致的,這樣才能通過距離度量計算特徵圖的距離。

這是hint loss的思想,不同於hint loss只是單純縮減特徵圖,而是將特徵圖轉化爲注意力圖,使得學生網絡模型學習到的不 單純只是特徵圖信息,而是真正的學到裏面的特徵。使得學生網絡生成的特徵圖更加靈活,不侷限於教師網絡的特徵圖。

這個注意力圖生成的方式也是非常樸素的,將多通道特徵圖疊加起來成爲單通道圖。這裏的疊加可以是本身的n次方後疊加,也可以是不做乘方後的疊加。次方越高,注意力圖越關注於高層特徵(後幾層卷積層),這是因爲通過卷積後,後幾層特徵圖的取值都是比較大的,顯示出的注意力圖也是明顯的。如下圖:

其次,模型越複雜的,生成的注意力圖關注的目標特徵越明顯:

上圖特徵從上往下變複雜。

def at(x):
    return F.normalize(x.pow(2).mean(1).view(x.size(0), -1))

從源碼上可以看到,先對特徵圖進行平方,在對平方後的特徵圖在通道上求平均(B,C,W,H)->(B,W,H),最後再進行平鋪以進行後面的loss計算->(B,W*H)。

本文和hint loss一樣使用:

def at_loss(x, y):
    return (at(x) - at(y)).pow(2).mean()

x爲學生特徵圖,y爲教師特徵圖。

並且,attention transfer可以在多個位置使用,並且模型不同,使用的個數影響不同:

最後,網絡通過反向傳播優化總損失。

實驗表明本文有效,具體看原論文。

完(笑)

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章