240629_昇思學習打卡-Day11-Vision Transformer中的self-Attention

240629_昇思學習打卡-Day11-Transformer中的self-Attention

根據昇思課程順序來看呢,今兒應該看Vision Transformer圖像分類這里了,但是大概看了一下官方api,發現我還是太笨了,看不太明白。正巧昨天學SSD的時候不是參考了太陽花的小綠豆-CSDN博客大佬嘛,今兒看不懂就在想,欸,這個網絡大佬講沒講,就去翻了下,結果還真給我找到了,還真講過,還有b站視頻,講的賊好,簡直就是茅廁頓開,這里附大佬的b站首頁霹靂吧啦Wz的個人空間-霹靂吧啦Wz個人主頁-嗶哩嗶哩視頻 (bilibili.com),強烈建議去看,附本期鏈接Transformer中Self-Attention以及Multi-Head Attention詳解_嗶哩嗶哩_bilibili,記得給大佬三連,有能力的給大佬充充電(本人已充)。

本文就大佬所講內容、查閱資料、昇思api及結合自己理解進行記錄。

前言

在了解Vision Transformer之前,我們需要先了解一下Transformer,Transformer最開始是應用在NLP領域的,拿過來用到Vision中就叫Vision Transformer。而這里要提到的,就是Transformer中的self-Attention(自注意力)和Multiple-Head Attention(多頭注意力)。

用在NLP領域中用到的注意力機制舉例,一般為Encoder-Decoder框架,比如中英翻譯,輸入的英文是Source,我們要獲取到的是Target(中文翻譯),Attention機制就發生在Target的元素Query和Source中的所有元素之間,其同時關注自身和目標值。

而這里說的自注意力機制只關注自身,比如Source中會有一個注意力機制,Target中會有一個注意力機制,他兩是沒有關系的。

還是用中英翻譯舉例,注意力機制的查詢和鍵分別來自于英文和中文,通過查詢(Query)英文單詞,去匹配中文漢字的鍵(Key),自注意力機制只關注自己一個語言,可以理解為:”我喜歡“后面可以跟”你“,也可以跟”吃飯“。

1)如果查詢和鍵是同一組內的特征,并且相互做注意力機制,則稱為自注意力機制或內部注意力機制。
2)多頭注意力機制的多頭表示對每個Query和所有的Key-Value做多次注意力機制。做兩次,就是兩頭,做三次,就是三頭。這樣做的意義在于獲取每個Query和所有的Key-Value的不同的依賴關系。
3)自注意力機制的優缺點簡記為【優點:感受野大。缺點:需要大數據。】

以下是關于這兩個自注意力機制的官方公式,很復雜也很難理解,但現在別盯著他不放,先慢慢往下看,這篇就是說明這個公式及其過程:

image-20240629175235197

Self-Attention

self-attention

我們先說明白這里面這些符號都是干啥的,或者求出來用來干啥的,避免看半天還一頭霧水:

q代表query,后續會去和每一個k進行匹配

k 代表key,后續會被每個q匹配

v 代表從a中提取得到的信息,后續會和q和k的乘積進行運算

d是k的維度

后續q 和k匹配的過程可以理解成計算兩者的相關性,相關性越大對應v的權重也就越大

簡單來說,最初的輸入向量首先會經過Embedding層映射成Q(Query),K(Key),V(Value)三個向量,由于是并行操作,所以代碼中是映射成為dim x 3的向量然后進行分割,換言之,如果你的輸入向量為一個向量序列(𝑥1,𝑥2,𝑥3),其中的𝑥1,𝑥2,𝑥3都是一維向量,那么每一個一維向量都會經過Embedding層映射出Q,K,V三個向量,只是Embedding矩陣不同,矩陣參數也是通過學習得到的。這里大家可以認為,Q,K,V三個矩陣是發現向量之間關聯信息的一種手段,需要經過學習得到,至于為什么是Q,K,V三個,主要是因為需要兩個向量點乘以獲得權重,又需要另一個向量來承載權重向加的結果,所以,最少需要3個矩陣。

后續我們要用q*k得到v的權重,然后進行一定縮放(除以根號d),再乘上v,就是第一個公式。

從數值上理解

wk我悟了,用引用的話行內公式不會亂

假設 a 1 = ( 1 , 1 ) a_1=(1,1) a1?=(1,1) a 2 = ( 1 , 0 ) a_2=(1,0) a2?=(1,0) W q = ( 1 1 0 1 ) W^q=\binom{1 \ \ \ 1}{0 \ \ \ 1} Wq=(0???11???1?),那么根據以上的說法,我們可以計算出 q 1 q^1 q1 q 2 q^2 q2
q 1 = ( 1 , 2 ) ( 1 1 0 1 ) = ( 1 , 2 ) , q 2 = ( 1 , 0 ) ( 1 1 0 1 ) = ( 1 , 1 ) q^1=(1,2)\binom{1 \ \ \ 1}{0 \ \ \ 1}=(1,2),q^2=(1,0)\binom{1 \ \ \ 1}{0 \ \ \ 1}=(1,1) q1=(1,2)(0???11???1?)=(1,2)q2=(1,0)(0???11???1?)=(1,1)
此時可以并行化,就是把 q 1 q^1 q1 q 2 q^2 q2在拼接起來,拼成 ( 1 1 1 0 ) \binom{1 \ \ \ 1}{1 \ \ \ 0} (1???01???1?),在與 W q W^q Wq進行運算,結果不會發生改變
( q 1 q 2 ) = ( 1 1 1 0 ) ( 1 1 0 1 ) = ( 1 2 1 1 ) \binom{q^1}{q^2}=\binom{1 \ \ \ 1}{1 \ \ \ 0}\binom{1 \ \ \ 1}{0 \ \ \ 1}=\binom{1 \ \ \ 2}{1 \ \ \ 1} (q2q1?)=(1???01???1?)(0???11???1?)=(1???11???2?)
同理可以得到 ( k 1 k 2 ) \binom{k^1}{k^2} (k2k1?) ( v 1 v 2 ) \binom{v^1}{v^2} (v2v1?),求得的這些數值依次是q(Query),k(Key),v(Value)。接著先拿 q 1 q^1 q1和每個k進行match,點乘操作,接著除以 d \sqrt{d} d ?,得到對應的 α \alpha α,,其中 d d d代表向量 k i k^i ki的長度,此時等于2,除以 d \sqrt{d} d ?的原因在論文中的解釋是“進行點乘后的數值很大,導致通過softmax后梯度變的很小,所以通過除以 d \sqrt{d} d ?來進行縮放,比如計算 α 1 , i \alpha_{1,i} α1,i?
α 1 , 1 = q 1 ? k 1 d = 1 ? 1 + 2 ? 0 2 = 0.71 \alpha_{1,1}=\frac{{q^1} \cdot {k^1}}{\sqrt{d}}=\frac{1*1+2*0}{\sqrt2}=0.71 α1,1?=d ?q1?k1?=2 ?1?1+2?0?=0.71

α 1 , 2 = q 1 ? k 2 d = 1 ? 0 + 2 ? 1 2 = 1.41 \alpha_{1,2}=\frac{{q^1} \cdot {k^2}}{\sqrt{d}}=\frac{1*0+2*1}{\sqrt2}=1.41 α1,2?=d ?q1?k2?=2 ?1?0+2?1?=1.41

同理用 q 2 q^2 q2去匹配所有的k能得到 α 2 , i \alpha_{2,i} α2,i?,統一寫成矩陣乘法形式:
( α 1 , 1 α 1 , 2 α 2 , 1 α 2 , 2 ) = ( q 1 q 2 ) ( k 1 k 2 ) T d \binom{\alpha_{1,1} \ \ \ \alpha_{1,2}}{\alpha_{2,1} \ \ \ \alpha_{2,2}}=\frac{\binom{q^1}{q^2}{\binom{k^1}{k^2}}^T}{\sqrt{d}} (α2,1????α2,2?α1,1????α1,2??)=d ?(q2q1?)(k2k1?)T?
然后對每一行即 ( α 1 , 1 , α 1 , 2 ) (\alpha_{1,1},\alpha_{1,2}) (α1,1?,α1,2?)分別進行softmax處理得到KaTeX parse error: Expected 'EOF', got '?' at position 9: (\alpha ?? _{1,1},\alpha …,這里的$\alpha ? 相當于計算得到針對每個 相當于計算得到針對每個 相當于計算得到針對每個v 的權重,到這我們就完成了第一個公式( 的權重,到這我們就完成了第一個公式( 的權重,到這我們就完成了第一個公式(Attention(Q,K,V) )中的 )中的 )中的softmax(\frac{QK^T}{\sqrt{d}})$部分

self-attention
為啥這里又亂了。。
在這里插入圖片描述

self-attention

self-attention

從維度上進行理解

我們假設載入的 x 1 x_1 x1?經過Embedding后變為 a 1 a_1 a1?維度為1X4, W q W^q Wq的維度為4X3,兩者進行叉乘運算后就得到了維度為1X3的Query,k和v同理

image-20240629194210213

然后我們吧a1和a2并行起來

image-20240629211555129

然后把公式中的式子也換成維度:

圖片

整個過程放在一張圖上可以這么看:

self-attention

這里暫時不附代碼,Multiple-Head Attention下篇記錄。

打卡圖片:

image-20240629213756082

參考博客:

11.1 Vision Transformer(vit)網絡詳解_嗶哩嗶哩_bilibili

詳解Transformer中Self-Attention以及Multi-Head Attention_transformer multi head-CSDN博客

Vision Transformer詳解-CSDN博客

一文搞定自注意力機制(Self-Attention)-CSDN博客

以上圖片均引用自以上大佬博客,如有侵權,請聯系刪除

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/37783.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/37783.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/37783.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

LeetCode.30 串聯所有單詞的子串

問題描述 給定一個字符串 s 和一個字符串數組 words。 words 中所有字符串 長度相同。 s 中的 串聯子串 是指一個包含 words 中所有字符串以任意順序排列連接起來的子串。 例如,如果 words ["ab","cd","ef"], 那么 &q…

MySQL Workbench支持哪些數據庫版本的連接?

MySQL Workbench支持哪些數據庫版本的連接? MySQL Workbench 是一款強大的數據庫管理和設計工具,它支持連接多種版本的 MySQL 數據庫。包括但不限于: MySQL 官方發行的所有版本,從 MySQL 5.0 到最新的 MySQL 8.x 和更高版本。 M…

Linux - 札記 - W10: Warning: Changing a readonly file

Linux - 札記 - W10: Warning: Changing a readonly file 這里寫目錄標題 一、問題描述1. 現象2. 原因 二、解決方案 一、問題描述 1. 現象 在使用 vim 編輯文件時(我這里是要編輯 /root/.ssh/authorized_keys)提示:W10: Warning: Changing…

【論文+代碼|已完結】基于人工智能的圖像識別技術在醫療診斷中的應用

基于人工智能的圖像識別技術在醫療診斷中的應用 摘要:隨著人工智能技術的飛速發展,圖像識別技術在醫療領域的應用日益廣泛。本畢業設計旨在研究基于人工智能的圖像識別技術在醫療診斷中的應用,通過對大量醫療圖像數據的分析和處理&#xff0…

IOS Swift 從入門到精通:ios 連接數據庫 安裝 Firebase 和 Firestore

創建 Firebase 項目 導航到Firebase 控制臺并創建一個新項目。為項目指定任意名稱。 在這里插入圖片描述 下一步,啟用 Google Analytics,因為我們稍后會用到它來發送推送通知。 在這里插入圖片描述 在下一個屏幕上,選擇您的 Google Analytics 帳戶(如果已創建)。如果沒…

<電力行業> - 《第7課:發電》

1 發電的原理 電力生產的發電環節是利用電能生產設備將各種一次能源或其他形式的能轉換為電能。生產電能的主要方式有火力發電、水力發電、核能發電、地熱發電、風力發電、太陽能發電、潮汐能發電、生物智能發電和燃料電池發電等。 除太陽能發電的光伏電池技術和燃料電池發電…

c++ 子類繼承父類

這個是子類繼承父類 是否重寫從父類那里繼承來的函數 這個例子的路徑 E盤 demo文件夾 fatherChildfunc

藍卓出席“2024C?O大會”,探討智能工廠建設新路徑

6月29日,“2024C?O大會”在金華成功舉辦。此次大會由浙江省企業信息化促進會主辦,與以往CIO峰會不同,“C?O”代表了企業數字化中的核心決策者群體,包括傳統的CIO、CEO、CDO等。 本次大會圍繞C?O、AIGC與制造業、數據價值、未來…

統計信號處理基礎 習題解答11-9

一個飛行器開始于一個未知位置(, ),按照 以常速運動,其中, 分別是飛行器在x、y方向的速度分量,都是未知的。我們希望估計每一時刻, 飛行器的位置和速度。盡管初始位置(, )和速度, 都是未知的,但是它們可以看成一個隨機矢量。證明能夠由MMSE估計器估計為 …

libarclite_iphonesimulator.a‘; try increasing the minimum deployment target

1. Xcode 15 編譯出現以下錯誤 clang: error: SDK does not contain libarclite at the path /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/arc/libarclite_iphonesimulator.a; try increasing the minimum deployment ta…

React+TS前臺項目實戰(二十一)-- Search業務組件封裝實現全局搜索

文章目錄 前言一、Search組件封裝1. 效果展示2. 功能分析3. 代碼詳細注釋4. 使用方式 二、搜索結果展示組件封裝1. 功能分析2. 代碼詳細注釋 三、引用到文件,自行取用總結 前言 今天,我們來封裝一個業務靈巧的組件,它集成了全局搜索和展示搜…

spring如何給bean動態取不同的別名

開源項目SDK:https://github.com/mingyang66/spring-parent 個人文檔:https://mingyang66.github.io/raccoon-docs/#/ spring、springboot向容器中注入bean的時候一般情況下只有一個別名,在某些特殊場景需要指定多個別名。 方案一&#xff1a…

v-if 和 v-show 的含義、使用方式及使用時的區別

學習內容: v-if 和 v-show 的含義、使用方式及使用時的區別: 例如: v-if 的含義v-if 的用法v-show 的含義v-show 的用法v-if 與 v-show 區別 知識小結: 小結 1、v-if v-if 是一種條件性地渲染元素的指令。當條件為真時&#…

ic基礎|功耗篇04:門級低功耗技術

大家好,我是數字小熊餅干,一個練習時長兩年半的IC打工人。我在兩年前通過自學跨行社招加入了IC行業。現在我打算將這兩年的工作經驗和當初面試時最常問的一些問題進行總結,并通過匯總成文章的形式進行輸出,相信無論你是在職的還是…

【chatgpt】npy文件和npz文件區別

npy文件和npz文件都是用于存儲NumPy數組的文件格式。它們的主要區別如下: npy文件:這種文件格式用于存儲單個NumPy數組。它是一種簡單的二進制文件格式,可以快速地讀寫NumPy數組。 npz文件:這種文件格式是一個壓縮包,…

《Windows API每日一練》6.2 客戶區鼠標消息

第五章已經講到,Windows只會把鍵盤消息發送到當前具有輸入焦點的窗口。鼠標消息則不同:當鼠標經過窗口或在窗口內被單擊,則即使該窗口是非活動窗口或不帶輸入焦點, 窗口過程還是會收到鼠標消息。Windows定義了 21種鼠標消息。不過…

UE5藍圖快速實現打開網頁與加群

藍圖節點:啟動URL 直接將對應的網址輸入,并使用即可快速打開對應的網頁,qq、discord等群聊的加入也可以直接通過該節點來完成。 使用后會直接打開瀏覽器。

第11章 規劃過程組(收集需求)

第11章 規劃過程組(一)11.3收集需求,在第三版教材第377~378頁; 文字圖片音頻方式 第一個知識點:主要輸出 1、需求跟蹤矩陣 內容 業務需要、機會、目的和目標 項目目標 項目范圍和 WBS 可…

【強化學習】第01期:緒論

筆者近期上了國科大周曉飛老師《強化學習及其應用》課程,計劃整理一個強化學習系列筆記。筆記中所引用的內容部分出自周老師的課程PPT。筆記中如有不到之處,敬請批評指正。 文章目錄 1.1 概述1.2 Markov決策過程1.2.1 Markov Process (MP) 馬爾科夫過程1…

(五)SvelteKit教程:錯誤頁和重定向

(五)SvelteKit教程:錯誤頁和重定向 設置404頁面和重定向非常容易,我們還是在 /about 目錄下學習這個知識,文件結構如下: ├── layout.svelte ├── page.svelte ├── about │ └── [aboutID] │…