通俗理解講解一
以翻譯為例
- source:我 是 中國(guó)人
- target: I am Chinese
比如翻譯目標(biāo)單詞為 I 的時(shí)候壁畸,Q為I
而source中的 “我” “是” “中國(guó)人”都是K茅郎,
那么Q就要與每一個(gè)source中的K進(jìn)行對(duì)齊(相似度計(jì)算);"I"與"我"的相似度号杏,"I"與"是"的相似度婴氮;"I"與"中國(guó)人"的相似度;
相似度的值進(jìn)行歸一化后會(huì)生成對(duì)齊概率值(“I"與source中每個(gè)單詞的相似度(和為1))盾致,也可以注意力值主经;
而V代表每個(gè)source中輸出的context vector;如果為RNN模型的話就是對(duì)應(yīng)的狀態(tài)向量庭惜;即key與value相同罩驻;
然后相應(yīng)的V與相應(yīng)的P進(jìn)行加權(quán)求和,就得到了context vetor护赊;
從網(wǎng)上找到了一張圖更能證明我的理解的正確性惠遏;
這里的v與上面的V是不一樣的骏啰,這屬于一個(gè)單隱藏層的前饋神經(jīng)網(wǎng)絡(luò)节吮;v屬于隱藏層激活后的一個(gè)計(jì)算得分的權(quán)重系數(shù)矩陣;
w屬于激活前的權(quán)重系數(shù)矩陣判耕;
這里應(yīng)該是輸出神經(jīng)元為一個(gè)得分值透绩;所以需要多個(gè)前饋神經(jīng)網(wǎng)絡(luò)同時(shí)計(jì)算每個(gè)hi的得分;與我預(yù)想的不同,以為一個(gè)前饋神經(jīng)網(wǎng)絡(luò)就可以輸出所有對(duì)應(yīng)的得分帚豪,即輸出層的維度是與input序列長(zhǎng)度一樣碳竟;(目前的理解);為什么不與預(yù)想的一致呢狸臣?
然后對(duì)所有得分進(jìn)行歸一化莹桅,一般選擇softmax方法;讓權(quán)重系數(shù)為1
第二階段:將hi與對(duì)應(yīng)的權(quán)重系數(shù)相乘得到一個(gè)context vector烛亦;即注意力值.
通俗理解講解二
Q诈泼、K、V是什么
[PS:本文談?wù)摰腝此洲、K厂汗、V只限于seq2seq結(jié)構(gòu)]
- Q:指的是query,相當(dāng)于decoder的內(nèi)容
- K:指的是key呜师,相當(dāng)于encoder的內(nèi)容
- V:指的是value,相當(dāng)于encoder的內(nèi)容
看到這里贾节,是不是只想直呼臥槽汁汗,這什么鬼。不急栗涂,先看一個(gè)例子
例子
由于討論的是seq2seq任務(wù)知牌,于是來(lái)看看機(jī)器翻譯。
假如我們要將我喜歡看電影翻譯成I like watching movies斤程,步驟則會(huì)如下
- 使用一種編碼方式(如LSTM角寸、CNN、Transformer等)編碼中文
- 使用一種方式解碼
1.機(jī)器翻譯這個(gè)任務(wù)中會(huì)在解碼端給一個(gè)開(kāi)始的標(biāo)記忿墅,如</s>扁藕,我們根據(jù)這個(gè)標(biāo)記傳給解碼端,開(kāi)始生成英文疚脐,比如生成了I這個(gè)單詞亿柑,下一步當(dāng)然是需要生成’like’這個(gè)單詞,于是這個(gè)I將會(huì)作為query集去查找棍弄,形象話說(shuō)就是我們需要使用已經(jīng)有的東西去詢問(wèn)一些事情。
** 2.去哪里查找呼畸?當(dāng)然是編碼端痕支,也就是那些可以被查找的信息,如果原文在編碼中是字向量表示則是我蛮原、喜卧须、歡、看、電故慈、影板熊。
3.找到了返回啥的信息?返回編碼端的信息察绷,具體的會(huì)將我干签、喜、歡拆撼、看容劳、電、影做一個(gè)調(diào)整再回傳闸度。
到這里竭贩,對(duì)于使用Attention機(jī)制的seq2seq任務(wù),這么理解我認(rèn)為是沒(méi)問(wèn)題的莺禁。