ICLR 2017 | AT_注意力引導的知識蒸餾

ICLR2017 | Paying More Attention to Attention
https://github.com/szagoruyko/attention-transfer

1.注意力機制

注意力在人類視覺體驗中起着至關重要的作用。如下圖所示,以圖像分類爲例,注意力地圖展示了學習完成後的網絡模型更關注於圖像的哪個區域,是網絡模型學習成果的體現。本文通過迫使學生模型模仿強大的教師模型的注意力特徵圖,來顯著提高學生模型的性能。爲此,本文提出了基於激活注意力地圖的蒸餾法。

2.獲取激活注意力地圖

要利用激活注意力地圖進行知識蒸餾的第一步就是得到當前網絡的激活注意力地圖。對於神經網絡的某一層來說,激活注意力地圖的獲取方式如下圖和公式所示。作者將把當前層中所有通道的激活進行合理的組合,最終形成一張可以表徵當前層信息的激活注意力地圖,該組合函數爲F。

本文中,作者提出了三種F函數,也就是三種組合形式。如下三個組合函數的前提都是假設每個通道中的特徵絕對值大,就認爲當前位置被激活的程度也大。其中與Fsum()相比,Fpsum()(其中p > 1)更重視激活程度最高的神經元對應的空間位置。而Fp max(A)將只考慮其中一個位置來激活,Fp sum(A)將傾向於攜帶多個高激活神經元的空間位置。

通過實驗比對本文最終採用的是Fpsum()函數(p=2),來對每個層中所有通道進行激活組合,並生成一個表徵當前層的激活注意力圖,具體操作如下代碼所示。

    def avg_channel(self,f_s,f_t):
        f_s = f_s.pow(2).mean(0)
        f_t = f_t.pow(2).mean(0)

        return f_s,f_t
3.基於激活注意力地圖的知識蒸餾

下圖表達了位於網絡不通深度的激活注意力地圖是不同的。具體來說,我們可以看到靠近網絡輸入層的注意力比較分散;靠近中間層的注意力圖主要集中在一些分辨性強的區域,比如說眼睛,鼻子,嘴巴;而高層的注意力圖更加關注整體目標的激活。

基於上述的這種不同層隱含着不用性質的激活圖,如下圖所示,這種基於注意力激活的蒸餾方式被應用於網絡的不同層中,使得學生模型能夠分階段的學習教師模型中不同層級間不同含義的激活注意力圖。

得到每一層的激活注意力圖之後,進行蒸餾損失的構建過程,本文與之前介紹過的蒸餾方法類似,都是計算兩者之間的 距離用以約束,實現知識學習。

4.結果展示及思考

如下表所示,展示了激活注意力引導的知識蒸餾策略的有效性。值得注意的是,本文提到的這種Attention蒸餾方式適合用於教師模型和學生模型整體結構比較類似的情況下,反之這種策略將不會有效。我自己在應用的時候也驗證了這一點。而且本文提到的ATLoss可以和我們之前講到過的RKD,PKT,SP,VID等用來學習網絡最終輸出蒸餾的方式進行結合使用,初步來看將AT和PKT結合起來使用會產生較好的效果。上述提到的幾種蒸餾方法的詳解在下面給出了鏈接。

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