理解卷積神經網絡中的自注意力機制
導讀
計算機視覺中的編解碼結構的局限性以及提升方法。
卷積神經網絡(CNN)廣泛應用于深度學習和計算機視覺算法中。雖然很多基于CNN的算法符合行業(yè)標準,可以嵌入到商業(yè)產品中,但是標準的CNN算法仍然有局限性,在很多方面還可以改進。這篇文章討論了語義分割和編碼器-解碼器架構作為例子,闡明了其局限性,以及為什么自注意機制可以幫助緩解問題。
標準編解碼結構的局限性
解碼器架構(圖1)是許多計算機視覺任務中的標準方法,特別是像素級預測任務,如語義分割、深度預測和一些與GAN相關的圖像生成器。在編碼器-解碼器網絡中,輸入圖像進行卷積、激活以及池化得到一個潛向量,然后恢復到與輸入圖像大小相同的輸出圖像。該架構是對稱的,由精心設計的卷積塊組成。由于其簡單和準確,該體系結構被廣泛使用。
但是,如果我們深入研究卷積的計算(圖2),編碼器-解碼器架構的局限性就會浮出表面。例如,在3x3卷積中,卷積濾波器有9個像素,目標像素的值僅參照自身和周圍的8個像素計算。這意味著卷積只能利用局部信息來計算目標像素,這可能會帶來一些偏差,因為看不到全局信息。也有一些樸素的方法來緩解這個問題:使用更大的卷積濾波器或有更多卷積層的更深的網絡。然而,計算開銷越來越大,結果并沒有得到顯著的改善。
理解方差和協(xié)方差
方差和協(xié)方差都是統(tǒng)計學和機器學習中的重要概念。它們是為隨機變量定義的。顧名思義,方差描述的是單個隨機變量與其均值之間的偏差,而協(xié)方差描述的是兩個隨機變量之間的相似性。如果兩個隨機變量的分布相似,它們的協(xié)方差很大。否則,它們的協(xié)方差很小。如果我們將feature map中的每個像素作為一個隨機變量,計算所有像素之間的配對協(xié)方差,我們可以根據(jù)每個預測像素在圖像中與其他像素之間的相似性來增強或減弱每個預測像素的值。在訓練和預測時使用相似的像素,忽略不相似的像素。這種機制叫做自注意力。
CNN中的自注意力機制
為了實現(xiàn)對每個像素級預測的全局參考,Wang等人在CNN中提出了自我注意機制(圖3)。他們的方法是基于預測像素與其他像素之間的協(xié)方差,將每個像素視為隨機變量。參與的目標像素只是所有像素值的加權和,其中的權值是每個像素與目標像素的相關。
如果我們將原來的圖3簡化為圖4,我們就可以很容易地理解協(xié)方差在機制中的作用。首先輸入高度為H、寬度為w的特征圖X,然后將X reshape為三個一維向量A、B和C,將A和B相乘得到大小為HWxHW的協(xié)方差矩陣。最后,我們用協(xié)方差矩陣和C相乘,得到D并對它reshape,得到輸出特性圖Y,并從輸入X進行殘差連接。這里D中的每一項都是輸入X的加權和,權重是像素和彼此之間的協(xié)方差。
利用自注意力機制,可以在模型訓練和預測過程中實現(xiàn)全局參考。該模型具有良好的bias-variance權衡,因而更加合理。
深度學習的一個可解釋性方法
SAGAN將自注意力機制嵌入GAN框架中。它可以通過全局參考而不是局部區(qū)域來生成圖像。在圖5中,每一行的左側圖像用顏色表示采樣的查詢點,其余五幅圖像為每個查詢點對應的關注區(qū)域。我們可以看到,對于天空和蘆葦灌木這樣的背景查詢點,關注區(qū)域范圍廣泛,而對于熊眼和鳥腿這樣的前景點,關注區(qū)域局部集中。