日韩性视频-久久久蜜桃-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]

總結

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

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

主站蜘蛛池模板: 午夜视频色 | 天天久久| 亚洲一区欧洲一区 | 91美女高潮出水 | 999xxxx | 国产剧情演绎av | 久久久久亚洲日日精品 | 麻豆国产在线视频 | 一级女性全黄久久生活片免费 | 色呦网站 | 久久丁香| 久久久久精 | 欧美激情一区二区三区四区 | av网址免费观看 | 自拍偷拍精品视频 | 在线观看的黄网 | 亚洲av无一区二区三区怡春院 | 精品国产av一区二区三区 | 久一区二区三区 | 亚洲色图国产精品 | 国产3p在线播放 | 欧美精品入口蜜桃 | 天天综合亚洲 | 久久久久久久九九九九 | 成人精品在线观看视频 | 91麻豆一区二区三区 | 欧美激情欧美激情在线五月 | 亚洲欧美日韩在线一区二区 | 中文在线免费看视频 | 免费黄色美女网站 | 午夜激情在线观看视频 | 亚洲一区二区视频在线观看 | 澳门黄色网 | 性视频黄色 | 黄色av播放 | 少妇三级全黄 | 熟女av一区二区 | 一个人看的视频www 色就是色网站 | 国产麻豆久久 | 亚洲婷婷在线 | 成人免费黄色网 | 亚洲综合视频在线观看 | 国产香蕉在线视频 | 偷拍亚洲色图 | 强伦人妻一区二区三区视频18 | 厨房性猛交hd | 国产主播在线观看 | 久久久激情视频 | 婷婷天堂网| 奇米97| 日本三级韩国三级美三级91 | 亚洲剧情av | 韩国视频一区二区三区 | 五月婷婷啪啪 | 日韩中文字幕久久 | 三级黄色免费网站 | 一级福利视频 | 91欧美亚洲| 极品白嫩少妇无套内谢 | 美女扒开腿让人桶爽 | 一区二区精品在线观看 | 久久精品日韩无码 | 不卡一区在线观看 | 久青草国产在线 | 国产99久久久国产精品成人免费 | 哪个网站可以看毛片 | 懂色av一区二区三区蜜臀 | 国产情侣呻吟对白高潮 | 色av导航 | 成人午夜视频一区二区播放 | 欧美日韩天堂 | 日韩欧美亚洲 | 欧美hdse | 精品国产人妻一区二区三区 | 色偷偷综合网 | 欧美福利片在线观看 | 99精品视频免费版的特色功能 | 色哟哟网站在线观看 | 久久久免费在线观看 | 直接看的av网站 | 欧美偷拍另类 | 国产91精品一区二区绿帽 | 午夜免费网址 | 日韩无码精品一区二区 | 成年人免费视频播放 | 麻豆一区产品精品蜜桃的特点 | 欧美日韩成人免费观看 | 黄色小视频大全 | 久久夜夜夜 | 琪琪色影音先锋 | 免费观看91视频 | 青青视频免费在线观看 | 日韩色黄大片 | 美女视频在线观看免费 | 亚洲AV无码乱码国产精品牛牛 | 亚洲天堂中文字幕在线 | 黄瓜视频在线观看 | missav|免费高清av在线看 | 婷婷视频网 |