權重形成機制不同?


拿NLP中序列建模來做個例子,有幾點區別:

  1. Context Window:因為一維卷積需要指定窗口的大小,比如圖中,就是每次只看3個詞。而且attention,這裡是self-attention,他的context window是「無限」的,無限是指序列的長度是多少,窗口的大小就是多少,因為attention權重的計算涉及到一個序列裡面所有的詞。如上圖所示,句子有5個詞,窗口大小就是5. 所以一維卷積是「local」的,attention可以說是「global」的。
  2. Time Complexity:這個其實也是剛才的窗口大小不同導致的,因為一維卷積只看k個詞(窗口大小為k),如果序列長度為n,那麼複雜度就是kn。而attention因為在每個位置,每個詞的權重計算都要考慮到所有的詞,所以複雜度就是n^2.
  3. Dynamic Weights: 和二維卷積一樣,一維卷積的權重是不變的,就是不會隨著在序列位置中的變化而改變,但是attention不一樣,每個位置的權重都是不一樣的,attention scores(weights)是由dot-product計算出來的,具體地, softmax(qk/d^1/2).

但由於self-attention複雜度高,對長序列建模效果沒有那麼好,所以對一維卷積有很多改進的工作,比如上圖的Pay Less Attention with Lightweight and Dynamic Convolutions (ICLR19, FAIR)1。還有比較新的Time-aware Large Kernel Convolutions (TaLK)2。

在NMT,LM等任務上的效果都能和attention-based模型扳手腕。基本上就從動態權重和動態窗口大小上面對一維卷積進行改進,而另一方面又有一些對attention的改進工作,比如將無限窗口限制一下,或者層次化一下,有太多文章這裡就不贅述了。

Ref:

1.https://arxiv.org/abs/1901.10430

2.https://arxiv.org/abs/2002.03184


  • 一維卷積的感受野是有限的,注意力機制的感受野是無限的(全局的)
  • 一維卷積的連接強度(權重)是與輸入無關的,注意力機制的連接強度是與輸入相關的


首先attention是一種機制,不同語境下,可以是完全不一樣的東西。

而1d convolution就是個操作符而已。

如果你把1d conv看某種加權之後在加和的操作,好像表面上和attention的幹活有點兒類似。

但是就算這麼附會的理解,也不對。

1d conv沒有key的概念,給定hidden states,過一遍1d conv那結果始終都是不變的。


卷積是固定參數,推理階段對於所有輸入都作用一樣的權重

attention的權重由輸入特徵所決定,所以對於不同的樣本,權重不一樣


參照另一個問題的回復。

深度學習中Attention與全連接層的區別何在? - 哈哈哈的回答 - 知乎

深度學習中Attention與全連接層的區別何在??

www.zhihu.com圖標

1.動態與靜態權重的區別

attention模塊獲得的權重,對於不同的樣本,是不同的;與之相反,一維卷積層中的權重,對於任意樣本,都是相同的。

在attention模塊中,為什麼要對不同的樣本,施以不同的權重呢?

舉個例子,在下面兩張圖片中,鷹在圖片中的位置是不同的。如果我們希望演算法既能捕捉到左圖的鷹,又能捕捉到右圖的鷹,我們就希望這個演算法能夠根據每個樣本的特點,對每個樣本內部的不同位置,施加不同的權重。

飛翔的鷹

2.Attention未必是特徵加權的形式

通常的attention,例如SENet,都是學習得到一組權重,然後進行特徵加權的形式。

SENet

但是,attention可以不是特徵加權的形式,也可以是「軟閾值化」的形式。

舉個例子,attention可以用來生成軟閾值函數所需的閾值,用軟閾值函數來進行特徵的非線性變換,以應對各個樣本中雜訊強度不同的情況(深度殘差收縮網路[1])。

參考

  1. ^Minghang Zhao, Shisheng Zhong, Xuyun Fu, Baoping Tang, Michael Pecht, Deep residual shrinkage networks for fault diagnosis, IEEE Transactions on Industrial Informatics, 2020, 16(7): 4681-4690. https://ieeexplore.ieee.org/document/8850096


推薦閱讀:
相关文章