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