日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

注意力机制--转载自我的学生隆兴写的博客

發布時間:2024/8/23 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 注意力机制--转载自我的学生隆兴写的博客 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

原文鏈接為:https://a-egoist.com/posts/a44b8419/,學生自己搭建的博客,點贊!

1 Attention

1.1 什么是 Attention

靈長類動物的視覺系統中的視神經接受了大量的感官輸入。在檢查視覺場景時,我們的視覺神經系統大約每秒收到 10810^8108 位的信息,這遠遠超過了大腦能夠完全處理的水平。但是,并非所有刺激的影響都是相等的。意識的聚集和專注使靈長類動物能夠在復雜的視覺環境中將注意力引向感興趣的物體,例如獵物和天敵。

在心理學框架中,人類根據隨意(有意識)線索不隨意(無意識)線索選擇注意點。下面兩張圖展現了在隨意線索不隨意線索的影響下,眼的注意力集中的位置。

卷積、全連接層、池化層基本上都只考慮不隨意線索,注意力機制則顯式地考慮隨意線索。

在注意力機制中,定義以下三點:

  • 隨意線索被稱為查詢(query)
  • 每個輸入是一個不隨意線索(key)和值(value)的 pair
  • 通過注意力池化層來有偏向性的選擇某些輸入
    • 一般寫作 f(x)=∑iα(x,xi)yif(x)=\sum_i\alpha(x,x_i)y_if(x)=i?α(x,xi?)yi?,其中 α(x,xi)\alpha(x,x_i)α(x,xi?) 表示注意力權重

1.2 非參注意力池化層

早在 60 年代就出現了非參數的注意力機制。假設給定數據 (xi,yi),i=1,…,n(x_i,y_i),i=1,\dots,n(xi?,yi?),i=1,,n,其中 xix_ixi? 表示 key,yiy_iyi? 表示 value,要想根據 query 將數據進行池化

最簡單的方案——平均池化:
f(x)=1n∑iyi(1)f(x)=\frac{1}{n}\sum_iy_i\tag{1} f(x)=n1?i?yi?(1)

無論輸入的 xxx 是什么,每次都返回所有 value 的均值。

Nadaraya-Waston 核回歸
f(x)=∑i=1nK(x?xi)∑j=1nK(x?xj)yi(2)f(x)=\sum_{i=1}^{n} \frac{K\left(x-x_{i}\right)}{\sum_{j=1}^{n} K\left(x-x_{j}\right)} y_{i}\tag{2} f(x)=i=1n?j=1n?K(x?xj?)K(x?xi?)?yi?(2)
其中,f(?)f(\cdot)f(?) 中的 xxx 表示 query,K(?)K(\cdot)K(?) 表示核函數,用于衡量 query xxx 和 key xix_ixi? 之間的距離。這一個方法可以類比于 K-Nearest Neighbor,對于一個 query 函數的輸出跟傾向于與其最相關的 value,而這個相關性則通過 query 和 key 共同計算出來。

若公式 (2)(2)(2) 中的 K(?)K(\cdot)K(?) 使用的是高斯核:K(μ)=12πexp?(?μ22)K(\mu)=\frac{1}{\sqrt{2\pi}}\exp(-\frac{\mu^2}{2})K(μ)=2π?1?exp(?2μ2?),那么可得:
f(x)=∑i=1nexp?(?12(x?xi)2)∑j=1nexp?(?12(x?xj)2)yi=∑i=1nsoftmax?(?12(x?xi)2)yi(3)\begin{aligned} f(x) &=\sum_{i=1}^{n} \frac{\exp \left(-\frac{1}{2}\left(x-x_{i}\right)^{2}\right)}{\sum_{j=1}^{n} \exp \left(-\frac{1}{2}\left(x-x_{j}\right)^{2}\right)} y_{i} \\ &=\sum_{i=1}^{n} \operatorname{softmax}\left(-\frac{1}{2}\left(x-x_{i}\right)^{2}\right) y_{i} \end{aligned}\tag{3} f(x)?=i=1n?j=1n?exp(?21?(x?xj?)2)exp(?21?(x?xi?)2)?yi?=i=1n?softmax(?21?(x?xi?)2)yi??(3)

1.3 參數化的注意力機制

在公式 (3)(3)(3) 的基礎上引入可以學習的參數 www
f(x)=∑i=1nsoftmax?(?12((x?xi)w)2)yi(4)f(x)=\sum_{i=1}^{n} \operatorname{softmax}\left(-\frac{1}{2}\left(\left(x-x_{i}\right) w\right)^{2}\right) y_{i}\tag{4} f(x)=i=1n?softmax(?21?((x?xi?)w)2)yi?(4)

1.4 注意力分數

由公式 (3)(3)(3) 可得:
f(x)=∑iα(x,xi)yi=∑i=1nsoftmax?(?12(x?xi)2)yi(5)f(x)=\sum_{i} \alpha\left(x, x_{i}\right) y_{i}=\sum_{i=1}^{n} \operatorname{softmax}\left(-\frac{1}{2}\left(x-x_{i}\right)^{2}\right) y_{i}\tag{5} f(x)=i?α(x,xi?)yi?=i=1n?softmax(?21?(x?xi?)2)yi?(5)
其中 α(?)\alpha(\cdot)α(?) 表示注意力權重,根據輸入的 query 和 key 來計算當前 value 的權重;?12(x?xi)2-\frac{1}{2}\left(x-x_{i}\right)^{2}?21?(x?xi?)2 表示的就是注意力分數。

計算注意力的過程如圖所示:

首先根據輸入的 query,來計算 query 和 key 之間的 attention score,然后將 score 進行一次 softmax?\operatorname{softmax}softmax 得到 attention weight,attention weight 和對應的 value 做乘法再求和得到最后的輸出。

拓展到高緯度

假設 query q∈Rq\mathbf{q} \in \mathbb{R}^{q}qRqmmm 對 key-value (k1,v1),…,(\mathbf{k}_{1}, \mathbf{v}_{1}),\dots,(k1?,v1?),, 這里 ki∈Rk\mathbf{k}_{i} \in \mathbb{R}^{k}ki?Rkvi∈Rv\mathbf{v}_{i} \in \mathbb{R}^{v}vi?Rv

注意力池化層:
f(q,(k1,v1),…,(km,vm))=∑i=1mα(q,ki)vi∈Rvα(q,ki)=softmax?(a(q,ki))=exp?(a(q,ki))∑j=1mexp?(a(q,kj))∈R(6)\begin{array}{c} f\left(\mathbf{q},\left(\mathbf{k}_{1}, \mathbf{v}_{1}\right), \ldots,\left(\mathbf{k}_{m}, \mathbf{v}_{m}\right)\right)=\sum_{i=1}^{m} \alpha\left(\mathbf{q}, \mathbf{k}_{i}\right) \mathbf{v}_{i} \in \mathbb{R}^{v} \\ \alpha\left(\mathbf{q}, \mathbf{k}_{i}\right)=\operatorname{softmax}\left(a\left(\mathbf{q}, \mathbf{k}_{i}\right)\right)=\frac{\exp \left(a\left(\mathbf{q}, \mathbf{k}_{i}\right)\right)}{\sum_{j=1}^{m} \exp \left(a\left(\mathbf{q}, \mathbf{k}_{j}\right)\right)} \in \mathbb{R} \end{array}\tag{6} f(q,(k1?,v1?),,(km?,vm?))=i=1m?α(q,ki?)vi?Rvα(q,ki?)=softmax(a(q,ki?))=j=1m?exp(a(q,kj?))exp(a(q,ki?))?R?(6)
其中 softmax?(?)\operatorname{softmax}(\cdot)softmax(?) 中的參數 a(q,ki)a(\mathbf{q},\mathbf{k}_i)a(q,ki?) 表示注意力分數。

從公式 (6)(6)(6) 可以看出,我們應該關注 a(?)a(\cdot)a(?) 怎么設計,接下來介紹兩種思路。

1.4.1 Additive Attention

可學參數:Wk∈Rh×k,Wq∈Rh×q,v∈Rh\mathbf{W}_{k}\in\mathbb{R}^{h\times k},\mathbf{W}_{q}\in\mathbb{R}^{h\times q},\mathbf{v}\in \mathbb{R}^{h}Wk?Rh×k,Wq?Rh×q,vRh
a(k,q)=vTtanh?(Wkk+Wqq)a(\mathbf{k}, \mathbf{q})=\mathbf{v}^{T} \tanh \left(\mathbf{W}_{k} \mathbf{k}+\mathbf{W}_{q} \mathbf{q}\right) a(k,q)=vTtanh(Wk?k+Wq?q)
其中 tanh?(?)\operatorname{tanh}(\cdot)tanh(?) 表示 tanh 激活函數。等價于將 query 和 key 合并起來后放到一個隱藏層大小為 h 輸出大小為 1 的單隱藏層 MLP

該方法中 query、key 和 value 的長度可以不一樣。

1.4.2 Scaled Dot-Product Attention

如果 query 和 key 都是同樣的長度 q,ki∈Rd\mathbf{q},\mathbf{k}_i\in\mathbb{R}^dq,ki?Rd,那么可以:
a(q,ki)=?q,ki?/da\left(\mathbf{q}, \mathbf{k}_i\right)=\left\langle\mathbf{q}, \mathbf{k}_i\right\rangle/\sqrtozvdkddzhkzd a(q,ki?)=?q,ki??/d?
向量化版本

query Q∈Rn×d\mathbf{Q} \in \mathbb{R}^{n \times d}QRn×d, key K∈Rm×d\mathbf{K} \in \mathbb{R}^{m \times d}KRm×d, value V∈Rm×v\mathbf{V} \in \mathbb{R}^{m \times v}VRm×v

attention score: a(Q,K)=QKT/d∈Rn×ma(\mathbf{Q}, \mathbf{K})=\mathbf{Q K}^{T} / \sqrtozvdkddzhkzd \in \mathbb{R}^{n \times m}a(Q,K)=QKT/d?Rn×m

attention pooling: f=softmax?(a(Q,K))V∈Rn×vf=\operatorname{softmax}(a(\mathbf{Q}, \mathbf{K})) \mathbf{V} \in \mathbb{R}^{n \times v}f=softmax(a(Q,K))VRn×v

2 Self-attention

2.1 什么是 Self-attention

下面三幅圖展示了 CNN、RNN 和 self-attention 如何處理一個序列的輸入。

CNN 會考慮當前輸入和其前面的 n 個輸入以及后面 n 個輸入的關系。

RNN 會考慮當前輸入和其前面的所有輸入的關系。

Self-attention 會考慮當前輸入和全局輸入的關系。

總的來說,Self-attention 可以表述為:給定序列 x1,…,xn,?xi∈Rd\mathbf{x}_{1},\ldots,\mathbf{x}_{n},\forall \mathbf{x}_{i}\in\mathbb{R}^ozvdkddzhkzdx1?,,xn?,?xi?Rd,自注意力池化層將 xi\mathbf{x}_{i}xi? 當做 key, value, query 來對序列抽取特征得到 y1,…,yn\mathbf{y}_{1},\ldots,\mathbf{y}_{n}y1?,,yn?,這里
yi=f(xi,(x1,x1),…,(xn,xn))∈Rd\mathbf{y}_{i}=f\left(\mathbf{x}_{i},\left(\mathbf{x}_{1}, \mathbf{x}_{1}\right), \ldots,\left(\mathbf{x}_{n}, \mathbf{x}_{n}\right)\right) \in \mathbb{R}^ozvdkddzhkzd yi?=f(xi?,(x1?,x1?),,(xn?,xn?))Rd

2.2 Self-attention 怎樣運作

對于每一個輸入 aia^iai 在考慮其與全局的關聯性之后得到 bib^ibi

如何計算 a1a^1a1a2,a3,a4a^2,a^3,a^4a2,a3,a4 的關聯性?在 1.4 節中介紹的注意力分數計算方法就是用于計算 query 和 key 之間關聯性的方法。即常用的 Dot-product attention 和 Additive attention。

計算 a1a^1a1a2,a3,a4a^2,a^3,a^4a2,a3,a4 的關聯性

對于輸入 aia^iai 將其分別左乘上矩陣 Wq,Wk,WvW^q,W^k,W^vWq,Wk,Wv 得到 qi,ki,viq^i,k^i,v^iqi,ki,vi,然后利用 qi,kjq^i,k^jqi,kj 計算 ai,aja^i,a^jai,aj 之間的關聯性,計算結果為 attention score,將 attention score 放入激活函數后得到 attention weight,attention weight 乘上 vjv^jvj 再求和可得到 bib^ibi,即 aia^iai 對應的輸出。

矩陣化

通過上面的幾張圖可以看出,雖然 Self-attention 中間做了很多復雜的工作,但是在 Self-attention 中需要學習的參數只有 Wq,Wk,WvW^q,W^k,W^vWq,Wk,Wv,其他的參數都是預先設定好的。

2.3 Multi-head Self-attention

在 Self-attention 中,我們使用 query 去需要相關的 key,但是相關有很多種不同的定義,不同的定義與不同的 query 綁定,即同一個輸入需要有多個 query。

在上圖中,在 Self-attention 的基礎上對于每個 qi,ki,viq^i,k^i,v^iqi,ki,vi 其左乘上一個矩陣可以得到 qi,1,qi,2,ki,1,ki,2,vi,1,vi,2q^{i,1},q^{i,2},k^{i,1},k^{i,2},v^{i,1},v^{i,2}qi,1,qi,2,ki,1,ki,2,vi,1,vi,2,然后按照 Self-attention 中相同的計算方式可以得到 bi,1,bi,2b^{i,1},b^{i,2}bi,1,bi,2。

然后將得到的 bi,1,bi,2b^{i,1},b^{i,2}bi,1,bi,2 接起來左乘一個矩陣就可以得到 Multi-head Self-attention 的輸出 bib^ibi。

2.4 Position Encoding

因為 Self-attention 考慮的是全局的信息,而且即便輸入的順序改變了,也不會影響輸出的結果。但是在實際的應用中,很多時候需要考慮位置信息,例如一個 sequence。因此,為了讓 Self-attention 能夠考慮到位置信息,為每個輸入加上一個 position encoding。

其中 eie^iei 表示在每個輸入上增加的 position encoding 信息,對于每個 aia^iai 都有一個專屬的 eie^iei 與之對應。eie^iei 產生的方式有很多種,在論文 Learning to Encode Position for Transformer with Continuous Dynamical Model 中提出并比較了 position encoding。

2.5 Self-attention for Image

對于一張 shape = (5, 10, 3) 的 RGB 圖片,可以將其看成一個 vector set,其中的每一個 pixel 都可以看成一個 vector (r, g, b),然后就可以將其放入 Self-attention 模型進行計算。

3 Self-attention v.s. CNN

CNN 和 Self-attention 都可以考慮一定范圍內的信息,但是 CNN 只能夠考慮到感受野內的信息,而 Self-attention 能夠考慮到全局的信息。因此可以把 CNN 看做 Self-attention 的簡化版本,Self-attention 看做 CNN 的復雜化版本。

從集合的角度來看,CNN 可以看做是 Self-attention 的子集。在論文 ON THE RELATIONSHIP BETWEEN SELF-ATTENTION AND CONVOLUTIONAL LAYERS 中詳細介紹了 Self-attention 和 CNN 的關系。

從下圖(出自論文 AN IMAGE IS WORTH 16X16 WORDS: TRANSFORMERS FOR IMAGE RECOGNITION AT SCALE)中的數據可以看出,利用較小的數據量訓練時,CNN 的效果優于 Self-attention,但是隨著數據量的增大,Self-attention 的效果越來越好,在數據量達到 300 Million 的時候 Self-attention 的效果會優于 CNN。

4 Summary

本篇博客對 attention 做了一個基本介紹,然后又介紹了 attention 最常用的一種實現 Self-attention,Self-attention 在 Transformer 和 BERT 中有著舉足輕重的地位。我最開始學習 attention 的目的,是為了了解其在 computer vision 方向的應用,所以在之后的博客中我會更加詳細的介紹目前 attention 在 computer vision 方向的應用以及遇到的問題。

References

《動手學深度學習》

64 注意力機制【動手學深度學習v2】

65 注意力分數【動手學深度學習v2】

67 自注意力【動手學深度學習v2】

68 Transformer【動手學深度學習v2】

Transformer論文逐段精讀【論文精讀】

(強推)李宏毅2021春機器學習課程

[【機器學習2021】自注意力機制 (Self-attention) slides]

總結

以上是生活随笔為你收集整理的注意力机制--转载自我的学生隆兴写的博客的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美日韩激情在线一区二区三区 | 亚洲日本片| 天天干天天上 | 蜜桃精品视频在线观看 | 黄色网免费观看 | 欧美少妇一区二区 | 佐山爱在线视频 | 精品国产一区二区三区四区精华 | 麻豆精品在线观看 | 极品美女开粉嫩精品 | 久久综合资源 | av电影在线不卡 | 国产乱码精品一区二三赶尸艳谈 | 久久精品国产99精品国产亚洲性色 | 日韩色区| 日韩少妇内射免费播放 | 日韩大尺度视频 | 欧美性视频在线 | 九色在线 | 手机看片福利在线 | 天天爽夜夜爽人人爽 | 国产自在线拍 | 影视av| 精品午夜一区二区 | 国产精品一区二区三区在线看 | 在线观看视频国产 | 亚洲天堂久久 | 国产免费www| 捆绑调教在线观看 | 麻豆成人入口 | 久久亚洲成人av | 超碰在线最新地址 | 在线观看成人网 | 亚洲另类色综合网站 | 91久久精品一区二区别 | 超碰午夜 | 亚洲自偷自偷偷色无码中文 | av网址观看 | 男人天堂社区 | 日韩精品一区二区视频 | 日韩不卡在线 | 无码av免费毛片一区二区 | 风韵少妇spa私密视频 | 欧美大色 | 久久久国产高清 | 嫩草嫩草嫩草 | av999| 欧美视频在线一区二区三区 | 99产精品成人啪免费网站 | 欧美香蕉 | 黄色三级视频 | 3d动漫精品啪啪一区二区免费 | 欧美视频一区二区在线 | 天天操天天射天天 | 黄色高清视频 | 日韩av中文字幕在线播放 | 青娱乐青青草 | 国产日韩欧美成人 | 国产尤物视频在线观看 | 美女黄免费 | 漂亮人妻被中出中文字幕 | 国产一区二区视频在线播放 | 国产二级一片内射视频播放 | 三级4级全黄60分钟 成人自拍视频 | 黄页网站在线 | av资源站 | av网址免费观看 | 免费在线播放 | 中文字幕在线观看你懂的 | 无人在线观看高清视频 | 538在线精品视频 | 精品国产乱码久久久久久蜜臀网站 | 91热爆视频 | 韩国电影大尺度在线观看 | 日韩精品在线免费看 | 欧美福利精品 | 亚欧精品在线观看 | 天天都色 | 日韩动漫av| av官网在线观看 | 久久国产99 | 丰满少妇乱子伦精品看片 | 边啃奶头边躁狠狠躁 | 亚洲精品在线观看av | 亚州| 日本涩涩视频 | 97成人人妻一区二区三区 | 久久久夜夜夜 | 美女啪啪免费视频 | 国产精品一色哟哟哟 | 欧美激情在线免费 | 欧美另类国产 | 少妇太爽了太深了太硬了 | 成人啪啪网站 | 激情www | 91美女片黄在线观看游戏 | 大桥未久视频在线观看 | 女人叫床很黄很污句子 | 美女视频黄免费 |