色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何理解attention中的Q,K,V?

新機(jī)器視覺 ? 來源:知乎問答 ? 2023-12-04 09:40 ? 次閱讀

回答一:作者-不是大叔

我們直接用torch實(shí)現(xiàn)一個(gè)SelfAttention來說一說: 1.首先定義三個(gè)線性變換矩陣,query, key, value:

class BertSelfAttention(nn.Module):

    self.query = nn.Linear(config.hidden_size, self.all_head_size) # 輸入768, 輸出768
    self.key = nn.Linear(config.hidden_size, self.all_head_size) # 輸入768, 輸出768
self.value=nn.Linear(config.hidden_size,self.all_head_size)#輸入768,輸出768

 注意,這里的query, key, value只是一種操作(線性變換)的名稱,實(shí)際的Q/K/V是它們?nèi)齻€(gè)的輸出

2. 假設(shè)三種操作的輸入都是同一個(gè)矩陣(暫且先別管為什么輸入是同一個(gè)矩陣),這里暫且定為長度為L的句子,每個(gè)token的特征維度是768,那么輸入就是(L,768),每一行就是一個(gè)字,像這樣:

63352ccc-9025-11ee-939d-92fbcf53809c.png

乘以上面三種操作就得到了Q/K/V,(L, 768)*(768,768) = (L,768),維度其實(shí)沒變,即此刻的Q/K/V分別為:

63421c16-9025-11ee-939d-92fbcf53809c.png

代碼為:

class BertSelfAttention(nn.Module):
    def __init__(self, config):
        self.query = nn.Linear(config.hidden_size, self.all_head_size) # 輸入768, 輸出768
        self.key = nn.Linear(config.hidden_size, self.all_head_size) # 輸入768, 輸出768
        self.value = nn.Linear(config.hidden_size, self.all_head_size) # 輸入768, 輸出768
    
    def forward(self,hidden_states): # hidden_states 維度是(L, 768)
        Q = self.query(hidden_states)
        K = self.key(hidden_states)
        V = self.value(hidden_states)

3. 然后來實(shí)現(xiàn)這個(gè)操作:

634c6400-9025-11ee-939d-92fbcf53809c.png

① 首先是Q和K矩陣乘,(L, 768)*(L, 768)的轉(zhuǎn)置=(L,L),看圖:

635aa88a-9025-11ee-939d-92fbcf53809c.png

首先用Q的第一行,即“我”字的768特征和K中“我”字的768為特征點(diǎn)乘求和,得到輸出(0,0)位置的數(shù)值,這個(gè)數(shù)值就代表了“我想吃酸菜魚”中“我”字對“我”字的注意力權(quán)重,然后顯而易見輸出的第一行就是“我”字對“我想吃酸菜魚”里面每個(gè)字的注意力權(quán)重;整個(gè)結(jié)果自然就是“我想吃酸菜魚”里面每個(gè)字對其它字(包括自己)的注意力權(quán)重(就是一個(gè)數(shù)值)了~ ② 然后是除以根號dim,這個(gè)dim就是768,至于為什么要除以這個(gè)數(shù)值?主要是為了縮小點(diǎn)積范圍,確保softmax梯度穩(wěn)定性,具體推導(dǎo)可以看這里:蓮生三十二:Self-attention中dot-product操作為什么要被縮放(https://zhuanlan.zhihu.com/p/149903065),然后就是為什么要softmax,一種解釋是為了保證注意力權(quán)重的非負(fù)性,同時(shí)增加非線性,還有一些工作對去掉softmax進(jìn)行了實(shí)驗(yàn),如PaperWeekly:線性Attention的探索:Attention必須有個(gè)Softmax嗎?(https://zhuanlan.zhihu.com/p/157490738)

③ 然后就是剛才的注意力權(quán)重V矩陣乘了,如圖:

63629874-9025-11ee-939d-92fbcf53809c.jpg

注意力權(quán)重 x VALUE矩陣 = 最終結(jié)果 首先是“我”這個(gè)字對“我想吃酸菜魚”這句話里面每個(gè)字的注意力權(quán)重,和V中“我想吃酸菜魚”里面每個(gè)字的第一維特征進(jìn)行相乘再求和,這個(gè)過程其實(shí)就相當(dāng)于用每個(gè)字的權(quán)重對每個(gè)字的特征進(jìn)行加權(quán)求和,然后再用“我”這個(gè)字對對“我想吃酸菜魚”這句話里面每個(gè)字的注意力權(quán)重和V中“我想吃酸菜魚”里面每個(gè)字的第二維特征進(jìn)行相乘再求和,依次類推~最終也就得到了(L,768)的結(jié)果矩陣,和輸入保持一致~

整個(gè)過程在草稿紙上畫一畫簡單的矩陣乘就出來了,一目了然~最后上代碼:

class BertSelfAttention(nn.Module):

    def __init__(self, config):
        self.query = nn.Linear(config.hidden_size, self.all_head_size) # 輸入768, 輸出768
        self.key = nn.Linear(config.hidden_size, self.all_head_size) # 輸入768, 輸出768
        self.value = nn.Linear(config.hidden_size, self.all_head_size) # 輸入768, 輸出768
    
    def forward(self,hidden_states): # hidden_states 維度是(L, 768)
        Q = self.query(hidden_states)
        K = self.key(hidden_states)
        V = self.value(hidden_states)
        
        attention_scores = torch.matmul(Q, K.transpose(-1, -2))
        attention_scores = attention_scores / math.sqrt(self.attention_head_size)
        attention_probs = nn.Softmax(dim=-1)(attention_scores)


        out = torch.matmul(attention_probs, V)
        return out

4. 為什么叫注意力網(wǎng)絡(luò)?因?yàn)榭梢钥吹絈/K/V都是通過同一句話的輸入算出來的,按照上面的流程也就是一句話內(nèi)每個(gè)字對其它字(包括自己)的權(quán)重分配;那如果不是自注意力呢?簡單來說,Q來自于句A,K、V來自于句B即可~ 5. 注意,K/V中,如果同時(shí)替換任意兩個(gè)字的位置,對最終的結(jié)果是不會(huì)有影響的,至于為什么,可以自己在草稿紙上畫一畫矩陣乘;也就是說注意力機(jī)制是沒有位置信息的,不像CNN/RNN/LSTM;這也是為什么要引入位置embeding的原因。 02 

回答二:作者-到處挖坑蔣玉成

其實(shí)直接用邱錫鵬老師PPT里的一張圖就可以直觀理解——假設(shè)D是輸入序列的內(nèi)容,完全忽略線性變換的話可以近似認(rèn)為Q=K=V=D(所以叫做Self-Attention,因?yàn)檫@是輸入的序列對它自己的注意力),于是序列中的每一個(gè)元素經(jīng)過Self-Attention之后的表示就可以這樣展現(xiàn):

636e7e64-9025-11ee-939d-92fbcf53809c.jpg

也就是說,The這個(gè)詞的表示,實(shí)際上是整個(gè)序列加權(quán)求和的結(jié)果——權(quán)重從哪來?點(diǎn)積之后Softmax得到——這里Softmax(QK)就是求權(quán)重的體現(xiàn)。我們知道,向量點(diǎn)積的值可以表征詞與詞之間的相似性,而此處的“整個(gè)序列”包括The這個(gè)詞自己(再一次強(qiáng)調(diào)這是Self-Attention),所以最后輸出的詞的表示,其“主要成分”就主要地包含它自身和跟它相似的詞的表示,其他無關(guān)的詞的表示對應(yīng)的權(quán)重就會(huì)比較低。 03

回答三:作者-渠梁

首先附上鏈接:張俊林:深度學(xué)習(xí)中的注意力模型(2017版)(https://zhuanlan.zhihu.com/p/37601161) 。這個(gè)幾乎是我讀到過的講解Attention最為透徹的篇章之一了。 Q(Querry)代表查詢值,對應(yīng)Decoder的H(t-1)狀態(tài)。這里要正確理解H(t-1),想要解碼出t時(shí)刻的輸出,你送入Decoder的必然有前一時(shí)刻計(jì)算出的隱狀態(tài)。好了,所謂查詢,就是你要拿著這個(gè)Decoder中的H(t-1)去和Encoder中各個(gè)時(shí)刻的隱狀態(tài)[H(1), H(2), ... , H(T)](也就是各個(gè)Key)去比,也就是二者計(jì)算相似度(對應(yīng)于文獻(xiàn)中的各種energy函數(shù))。最后算出來的結(jié)果用Softmax歸一化,這個(gè)算出來的權(quán)重就是帶有注意力機(jī)制的權(quán)重,其實(shí)在翻譯任務(wù)中,Key和Value是相等的。在Transformer的實(shí)現(xiàn)源碼中,Key和Value的初始值也是相等的。有了這個(gè)權(quán)重之后,就可以用這個(gè)權(quán)重對Value進(jìn)行加權(quán)求和,生成的這個(gè)新的向量就是帶有注意力機(jī)制的語義向量 Context vector,而這個(gè)語義向量會(huì)權(quán)衡Target與Source的token與token的關(guān)系,從而實(shí)現(xiàn)解碼輸出時(shí),與Source中“真正有決定意義”的token關(guān)聯(lián)。 姑且畫蛇添足的再說幾句:

首先,Attention機(jī)制是由Encoder-Decoder架構(gòu)而來,且最初是用于完成NLP領(lǐng)域中的翻譯(Translation)任務(wù)。那么輸入輸出就是非常明顯的 Source-Target的對應(yīng)關(guān)系,經(jīng)典的Seq2Seq結(jié)構(gòu)是從Encoder生成出一個(gè)語義向量(Contextvector)而不再變化,然后將這個(gè)語義向量送入Decoder配合解碼輸出。這種方法的最大問題就是這個(gè)語義向量,我們是希望它一成不變好呢?還是它最好能配合Decoder動(dòng)態(tài)調(diào)整自己,來使Target中的某些token與Source中的真正“有決定意義”的token關(guān)聯(lián)起來好呢? 這就是為什么會(huì)有Attention機(jī)制的原因。說到底,Attention機(jī)制就是想生成會(huì)動(dòng)態(tài)變化的語義向量來配合解碼輸出。而新貴 Self-Attention則是為了解決Target與Source各自內(nèi)部token與token的關(guān)系。在Transformer中,這兩種注意力機(jī)制得到了有機(jī)的統(tǒng)一,釋放出了異常驚人的潛力。

審核編輯:黃飛

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4367

    瀏覽量

    64048
  • 深度學(xué)習(xí)
    +關(guān)注

    關(guān)注

    73

    文章

    5554

    瀏覽量

    122418

原文標(biāo)題:【深度學(xué)習(xí)】如何理解attention中的Q,K,V?

文章出處:【微信號:vision263com,微信公眾號:新機(jī)器視覺】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 0人收藏

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    請問不同Q格式的用這個(gè)相乘怎么理解??

    // Q21 = Q21*(GLOBAL_Q-GLOBAL_Q) Tmp1 = _IQmpy(v->K1,(
    發(fā)表于 11-22 09:59

    為什么要有attention機(jī)制,Attention原理

    沒有attention機(jī)制的encoder-decoder結(jié)構(gòu)通常把encoder的最后一個(gè)狀態(tài)作為decoder的輸入(可能作為初始化,也可能作為每一時(shí)刻的輸入),但是encoder的state
    的頭像 發(fā)表于 03-06 14:11 ?1.7w次閱讀
    為什么要有<b class='flag-5'>attention</b>機(jī)制,<b class='flag-5'>Attention</b>原理

    50 V、100 mA PNP 電阻器晶體管;R1 = 22kΩ,R2 = 22kΩ-PDTA124ET-Q

    50 V、100 mA PNP 電阻器晶體管;R1 = 22kΩ,R2 = 22kΩ-PDTA124ET-Q
    發(fā)表于 02-07 19:09 ?0次下載
    50 <b class='flag-5'>V</b>、100 mA PNP 電阻器晶體管;R1 = 22<b class='flag-5'>k</b>Ω,R2 = 22<b class='flag-5'>k</b>Ω-PDTA124ET-<b class='flag-5'>Q</b>

    50 V、100 mA PNP/PNP 電阻配備雙晶體管;R1 = 47kΩ,R2 = 47kΩ-PUMB2-Q

    50 V、100 mA PNP/PNP 電阻配備雙晶體管;R1 = 47kΩ,R2 = 47kΩ-PUMB2-Q
    發(fā)表于 02-07 19:15 ?0次下載
    50 <b class='flag-5'>V</b>、100 mA PNP/PNP 電阻配備雙晶體管;R1 = 47<b class='flag-5'>k</b>Ω,R2 = 47<b class='flag-5'>k</b>Ω-PUMB2-<b class='flag-5'>Q</b>

    50V,100mA NPN/NPN 電阻配備雙晶體管;R1=47kΩ,R2=47kΩ-PUMH2-Q

    50 V、100 mA NPN/NPN 電阻配備雙晶體管;R1 = 47kΩ,R2 = 47kΩ-PUMH2-Q
    發(fā)表于 02-08 19:15 ?0次下載
    50<b class='flag-5'>V</b>,100mA NPN/NPN 電阻配備雙晶體管;R1=47<b class='flag-5'>k</b>Ω,R2=47<b class='flag-5'>k</b>Ω-PUMH2-<b class='flag-5'>Q</b>

    NPN 500 mA、50 V 電阻晶體管;R1=1kΩ,R2=10kΩ-PDTD113ZT-Q

    NPN 500 mA、50 V 電阻晶體管;R1 = 1kΩ,R2 = 10kΩ-PDTD113ZT-Q
    發(fā)表于 02-09 21:44 ?0次下載
    NPN 500 mA、50 <b class='flag-5'>V</b> 電阻晶體管;R1=1<b class='flag-5'>k</b>Ω,R2=10<b class='flag-5'>k</b>Ω-PDTD113ZT-<b class='flag-5'>Q</b>

    50V,100mA NPN 電阻器晶體管;R1=10kΩ,R2=47kΩ-PDTC114YT-Q

    50 V、100 mA NPN 電阻器晶體管;R1 = 10kΩ,R2 = 47kΩ-PDTC114YT-Q
    發(fā)表于 02-09 21:58 ?0次下載
    50<b class='flag-5'>V</b>,100mA NPN 電阻器晶體管;R1=10<b class='flag-5'>k</b>Ω,R2=47<b class='flag-5'>k</b>Ω-PDTC114YT-<b class='flag-5'>Q</b>

    PNP 500 mA、50 V 電阻晶體管;R1=2.2kΩ,R2=10kΩ-PDTB123YT-Q

    PNP 500 mA、50 V 電阻晶體管;R1 = 2.2kΩ,R2 = 10kΩ-PDTB123YT-Q
    發(fā)表于 02-10 18:35 ?0次下載
    PNP 500 mA、50 <b class='flag-5'>V</b> 電阻晶體管;R1=2.2<b class='flag-5'>k</b>Ω,R2=10<b class='flag-5'>k</b>Ω-PDTB123YT-<b class='flag-5'>Q</b>

    500 mA、50 V NPN 電阻器晶體管;R1=4.7kΩ,R2=4.7kΩ-PDTD143ET-Q

    500 mA、50 V NPN 電阻器晶體管;R1 = 4.7kΩ,R2 = 4.7kΩ-PDTD143ET-Q
    發(fā)表于 02-14 19:19 ?0次下載
    500 mA、50 <b class='flag-5'>V</b> NPN 電阻器晶體管;R1=4.7<b class='flag-5'>k</b>Ω,R2=4.7<b class='flag-5'>k</b>Ω-PDTD143ET-<b class='flag-5'>Q</b>

    50V,100mA NPN/NPN 電阻器晶體管;R1=10kΩ,R2=10kΩ-PUMH11-Q

    50 V、100 mA NPN/NPN 電阻器晶體管;R1 = 10kΩ,R2 = 10kΩ-PUMH11-Q
    發(fā)表于 02-15 19:06 ?0次下載
    50<b class='flag-5'>V</b>,100mA NPN/NPN 電阻器晶體管;R1=10<b class='flag-5'>k</b>Ω,R2=10<b class='flag-5'>k</b>Ω-PUMH11-<b class='flag-5'>Q</b>

    50V,100mA NPN 電阻器晶體管;R1=10kΩ,R2=10kΩ-PDTC114ET-Q

    50 V、100 mA NPN 電阻器晶體管;R1 = 10kΩ,R2 = 10kΩ-PDTC114ET-Q
    發(fā)表于 02-15 19:07 ?0次下載
    50<b class='flag-5'>V</b>,100mA NPN 電阻器晶體管;R1=10<b class='flag-5'>k</b>Ω,R2=10<b class='flag-5'>k</b>Ω-PDTC114ET-<b class='flag-5'>Q</b>

    50V,100mA NPN/PNP 電阻配備雙晶體管;R1=10kΩ,R2=47kΩ-PUMD9-Q

    50 V、100 mA NPN/PNP 電阻配備雙晶體管;R1 = 10kΩ,R2 = 47kΩ-PUMD9-Q
    發(fā)表于 02-15 19:08 ?0次下載
    50<b class='flag-5'>V</b>,100mA NPN/PNP 電阻配備雙晶體管;R1=10<b class='flag-5'>k</b>Ω,R2=47<b class='flag-5'>k</b>Ω-PUMD9-<b class='flag-5'>Q</b>

    簡述深度學(xué)習(xí)Attention機(jī)制

    Attention機(jī)制在深度學(xué)習(xí)得到了廣泛的應(yīng)用,本文通過公式及圖片詳細(xì)講解attention機(jī)制的計(jì)算過程及意義,首先從最早引入attention到機(jī)器翻譯任務(wù)(Bahdanau
    的頭像 發(fā)表于 02-22 14:21 ?2031次閱讀
    簡述深度學(xué)習(xí)<b class='flag-5'>中</b>的<b class='flag-5'>Attention</b>機(jī)制

    理解KV cache的作用及優(yōu)化方法

    MQA (Multi Query Attention,多查詢注意力) 是多頭注意力的一種變體。其主要區(qū)別在于,在 MQA 不同的注意力頭共享一個(gè)KV的集合,每個(gè)頭只單獨(dú)保留了一份查
    的頭像 發(fā)表于 12-04 15:24 ?8679次閱讀
    <b class='flag-5'>理解</b>KV cache的作用及優(yōu)化方法

    摩爾線程Round Attention優(yōu)化AI對話

    摩爾線程科研團(tuán)隊(duì)發(fā)布研究成果《Round Attention:以輪次塊稀疏性開辟多輪對話優(yōu)化新范式》,該方法端到端延遲低于現(xiàn)在主流的Flash Attention推理引擎,kv-cache 顯存占用節(jié)省55%到82% 。
    的頭像 發(fā)表于 03-06 09:39 ?398次閱讀
    摩爾線程Round <b class='flag-5'>Attention</b>優(yōu)化AI對話
    主站蜘蛛池模板: 超污视频带污疼免费视频 | 国产精品视频人人做人人爽 | 亚洲 日韩 国产 中文视频 | 亚洲综合AV在线在线播放 | 李亚男三级 | 久久精品一本到99热 | 免费无遮挡又黄又爽网站 | 一二三四中文字幕在线看 | 色欲人妻AAAAAAA无码 | 4399日本电影完整版在线观看免费 | 国产午夜电影在线观看不卡 | 囯产精品一品二区三区 | 毛片免费播放 | 一本色道久久综合亚洲精品加 | 2019天天射干| 久久精品熟一区二区三区 | 杨幂被视频在线观看 | 久久全国免费久久青青小草 | 农民工老头在出租屋嫖老熟女 | 99热这里只有 精品 99热这里只就有精品22 | 亚洲免费国产 | 2021扫黑风暴在线观看免费完整版 | 一边喂奶一边做边爱 | WWW国产亚洲精品久久 | 免费国产足恋网站 | 岛国精品在线观看 | 翁公吮她的花蒂和奶水 | 领导边摸边吃奶边做爽在线观看 | 国产精品高潮呻吟AV久久96 | 成人无码精品一区二区在线观看 | free高跟丝袜秘书hd | 99久久亚洲| 麻豆人妻换人妻X99 麻豆区蜜芽区 | 日本69xx 老师 | 美女扒开腿让男生桶免费看动态图 | 九九热这里只有国产精品 | 国产真实强被迫伦姧女在线观看 | 欧美肥婆性生活 | 91精品一区二区综合在线 | 亚洲一级毛片免费在线观看 | 美女被强奷到抽搐的动态图 |

    電子發(fā)燒友

    中國電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會(huì)員交流學(xué)習(xí)
    • 獲取您個(gè)性化的科技前沿技術(shù)信息
    • 參加活動(dòng)獲取豐厚的禮品