CNN是不是一種局部self-attention?
來源:深度學習愛好者
CNN是不是一種局部self-attention?
cnn可不是一種局部的attention,那么我們來辨析一下cnn和attention都在做什么。
1:cnn可以理解為權(quán)值共享的局部有序的fc層,所以cnn有兩個和fc層根本區(qū)別的特征,權(quán)值共享和局部連接。也就是在保證不丟失一些根本feature的情況下大大減少了參數(shù)量。
2:attention的步驟是通過Q和K點乘得到attention maritx并表示二者的相似性,即Q和K相似性越大的部分點乘越大,之后scale并softmax之后得到attention score,之后乘以V,得到attention之后的結(jié)果。
attention的本質(zhì)是求Q和K的相似性,強調(diào)Q中和K相似的部分而已。
其本質(zhì)區(qū)別還可以理解為cnn是提取特征,attention是強調(diào)特征即可,二者可不相似。那要是這么說所有model都是圍繞feature做一些東西,那就說這些都是一樣的話顯然不合理。
更新,因為對CNN有了新的理解,所以對之前的答案進行更新,但是我前面之前的回答就不會在刪了,后續(xù)有什么關(guān)于這方面進一步的補充和說明會再加進來,歡迎大家收藏。
關(guān)于RNN和self-attention的區(qū)別,可以看我的這篇回答,希望對你有所幫助。
https://zhuanlan.zhihu.com/p/360374591
首先,說結(jié)論,CNN可以看作簡化版的Self-attention,又或者說Self-attention是CNN的泛化。
之前我們對CNN和self-attention作比較,其實下意識的想的是CNN用于圖像處理,將self-attention用于NLP,所以會產(chǎn)生這兩種方法怎么會有關(guān)聯(lián)的錯覺,那么下面都將從圖像處理方面來討論CNN和self-attention的區(qū)別和聯(lián)系,更好的來對比CNN和self-attention。self-attention用于圖像處理的流程:
首先,如果用self-attention對圖像進行處理,對于每一個pixel(像素值)產(chǎn)生Query,其他的pixel產(chǎn)生Key,Query*Key,然后softmax(正如評論中說的,其實不一定非要softmax,也可以采用Relu等激活函數(shù)),最后乘以對應的Value并求和作為每一個pixel經(jīng)過softmax的輸出值。這里大家會發(fā)現(xiàn)對圖像做self-attention的時候每一個pixel考慮了整張圖片所有的pixel,要考慮整張圖像中所有的信息。
那么,如果我們用CNN對圖像進行處理,我們會選取不同的卷積核,用卷積核對圖像進行處理,每一個pixel(像素值)其實只需要考慮這個卷積核中其他的pixel就可以了,只需要考慮這個receptive field就可以了,而不需要考慮整張圖像中的所有信息。
進而,我們可以得到一個一般性的結(jié)論,CNN可以看作一種簡化版的self-attention,即CNN只需要考慮卷積核(receptive field)中的信息即可,但是對于self-attention需要考慮全局的信息。
反過來,我們可以同樣理解為,self-attention是復雜化的CNN,CNN需要劃定receptive field,只考慮Receptive field里面的資訊,而Receptive field的范圍和大小是需要自己設定的大小。而對Self-Attention而言,用attention找到相關(guān)的pixel,就好像Receptive是自動學出來的,即以這個pixel為中心,其他哪些pixel是需要我這個pixel考慮的,是與我這個pixel相關(guān)的。
簡單一句話,CNN每一個pixel只學卷積核中的信息,Self-Attention每一個pixel學整張圖像中的信息。(這里只考慮一層卷積,如果多層卷積的話,CNN其實達到了和self-attention類似的效果)
那么,知道self-attention和CNN聯(lián)系,我們可以得到什么結(jié)論呢?
我們知道了CNN就是Self-Attention的特例,或者說Self-Attention就是CNN的泛化,非常的flexible的CNN,對Self-Attention做某些限制, Self-Attention和CNN是一樣的。(論文:https://arxiv.org/abs/1911.03584 中得到的結(jié)論)
對于self-attenion來說,這是一種非常flexible的model,所以需要更多的數(shù)據(jù)進行訓練,如果數(shù)據(jù)不夠,就可能over-fitting,但對于CNN來說因為限制比較多,在training data不多的時候可以train出一個比較好的Model。
如圖所示,在training data比較小的時候,CNN比較好,在training data比較大的時候,self-attention的效果會更好一些。即Self-Attention的彈性比較大,所以需要比較多的training data,在訓練資料比較小的時候就容易over-fitting,CNN的彈性比較小,在training data比較小的時候,訓練結(jié)果比較好,在training data比較多的時候,CNN就沒有辦法從更大量的訓練資料中得到好處了。
作者:匿名用戶
https://www.zhihu.com/question/448924025/answer/1784363556
有相似性,但是也有差異。CNN可以認為是在每個位置與固定的靜態(tài)的模板做內(nèi)積,是局部的投影,而attention是在不同位置之間計算內(nèi)積,某種意義上可以看作一個distance metric,其中的加權(quán)矩陣其實是定義了一種distance metric。從更普遍一點的意義上,CNN是更加local的,self-attention更多強調(diào)relation. 說CNN是一種特殊的退化的attention也許更合適一點。
作者:林建華
https://www.zhihu.com/question/448924025/answer/1793085963
我認為CNN的卷積層和self-attention不是一回事情。self-attention的K和Q都由數(shù)據(jù)產(chǎn)生, 所以是反應數(shù)據(jù)內(nèi)部的關(guān)系。
CNN卷積層可以看成由參數(shù)組成的K和不同數(shù)據(jù)產(chǎn)生的Q, 反應的是數(shù)據(jù)和參數(shù)的關(guān)系。
也就是說self-attention通過參數(shù)構(gòu)建了不同的空間, 使得數(shù)據(jù)在不同空間中呈現(xiàn)不同的自相關(guān)性質(zhì)。
而CNN卷積通過參數(shù), 構(gòu)建了某些固定的特征, 通過統(tǒng)計數(shù)據(jù)在這些特征上的表現(xiàn)來進行后面的處理。
作者:阿良
https://www.zhihu.com/question/448924025/answer/1786277036
cnn的核心在于使用局部特征獲取全局特征??梢哉f每次將注意力放在局部的卷積核。最后通過局部卷積核特征形成整體的特征表示。
自注意力機制是重點還有個自己的自,自己和自己進行計算,它的好處在于通過自注意力機制能夠?qū)γ總€詞能夠融入全局的信息,目的是借助全局信息幫助局部特征更好表示。
所以cnn是局部到整體,自注意力機制是整體輔助局部。如果硬要將cnn與注意力扯上關(guān)系,我個人理解可以看成是局部注意力(注意沒有自字)
作者:aluea
https://www.zhihu.com/question/448924025/answer/179309914
調(diào)轉(zhuǎn)一下順序,self-attention是一種強歸納偏置的CNN。
這不難理解,我們來看一下self-attention具體做了什么。
假設,對于一層self-attention,存在a、b、c、d四種侯選特征可同時輸入,而僅有ac、bd兩種combine的嵌入表示對下游任務有貢獻。那么self-attention就會注意這兩種combine而遮掩其他特征;比如,[a,b,c]->[a',0,c']。Ps. a'表示a的輸出表征。
對于一層CNN,就比較直白,有一說一,[a,b,c]->[a',b',c']。那么CNN可不可以完成像self-attention的功能,完全可以,再加一層CNN弄兩個過濾器一個濾ac;一個濾bd就完事了。
當然我CNN完全可以不這么干,也能擬合分布;而self-attention必須這么干,所以這是一種更強的歸納偏置。
關(guān)于歸納偏置的重要性,這里就不贅述了。
作者:mof.ii
https://www.zhihu.com/question/448924025/answer/1797006034
CNN不是一種局部的self-attention,但是把局部self-attention實現(xiàn)成一個層,做全self-attention網(wǎng)絡的方法是可以實現(xiàn)的,參考Google Brain在NeurIPS19的Stand-Alone Self-Attention in Vision Models。
文章第二節(jié)詳細比較了卷積層和Self-Attention層的計算方式,值得一看。
*博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權(quán)請聯(lián)系工作人員刪除。