1. 程式人生 > >[NIPS2017]Attention is all you need

[NIPS2017]Attention is all you need

這篇文章是火遍全宇宙,關於網上的解讀也非常多,將自己看完後的一點小想法也總結一下。
看完一遍之後,有很多疑問,我是針對每個疑問都瞭解清楚後才算明白了這篇文章,可能寫的不到位,只是總結下,下次忘記了便於翻查。
一:Q,K, V 到底是什麼?
在傳統的seq2seq框架下:
query: seq2seq模型中decode時隱層向量St1_{t-1}, 記作qt1_{t-1}, Q就是多個query組成的矩陣Q
value: seq2seq模型中encode時的隱層向量hi_i,記作vi_i, V是輸入序列中n個詞的embedding矩陣
key: 對hi_i做了一次先行對映得到的向量, 記作ki

_i,K同上
在本文的transformer下,結合文字和圖:
(1) encoder self-attention
Q 就是input sequence(w1w_1, w2w_2, …, wiw_i, …, wnw_n)將其對映為word embedding後 (x1x_1, x2x_2, …, xix_i, …, xnx_n),Q= (x1x_1, x2x_2, …, xix_i, …, xnx_n),並且 K=V=Q
(2) decoder self-attention
當t=0時,decoder self-attention的Q是<bos>的embedding, 當t=j時,Q=(E&lt;
bos&gt;_{&lt;bos&gt;}
, Ey1_{y1}, …, Eyj1_{y_{j-1}}), 其中yj1_{j-1}是t=j-1時刻decoder的輸出. K=V=Q
(3) encoder-decoder self-attention
K=V是encoder的輸出,將encoder的輸出傳給decoder, 這一操作使得decoder可以獲取輸入XX序列的資訊, 類似於傳統seq2seq中的decoder端的attention. Q是decoder self-attention的輸出.
在這裡插入圖片描述

二: 怎麼理解self-attention, 怎麼做self-attention,為什麼用self-attention?
(1) 在傳統的 seq2seq 中的 encoder 階段,針對輸入X

X = (x1x_1, x2x_2, …,xix_i, …, xnx_n),經過RNN或LSTM變換後得到序列的隱層狀態 HH = (h1h_1, h2h_2, …, hih_i, …, hnh_n),但是此篇文章拋棄了 RNN,encoder 過程就沒了 hidden states,那拿什麼做 self-attention 呢?input 的 sequence 共有 n 個 word,將每一個 word 對映成 embedding, 就得到 n 個 embedding,可以用 embedding 代替 hidden state 做 self-attention 。所以 Q 就是一個n行dkd_k列的矩陣,這個矩陣就是n個詞的embedding,並且Q=K=V。那麼為什麼管Q 就是query呢?就是每次用一個詞的embedding,去計算其與剩下的(n-1)個詞的 embedding 的 match 程度(也就是 attention 的大小,這就是self-attention的意思了。
在這裡插入圖片描述
針對n個詞,一共要做n輪這樣的操作:
在這裡插入圖片描述
(2)首先將query 和每個key進行相似度計算得到權重,常用的相似度函式有點積拼接,感知機等
然後使用一個softmax函式對這些權重歸一化,最後權重與相應的鍵值value進行加權求和得到attention後的context
(3) 句子中的每個詞都要和該句子中的所有詞進行attention計算,目的是學習句子內部的詞以來關係,捕獲句子的內部結構。
三:怎麼理解 decoder self-attention中的Masked Multi-Head Attention

四:如何理解公式(1), 怎麼理解縮放因子1dk\frac{1}{\sqrt{d_k}}
在這裡插入圖片描述
公式(1)中的softmax(QKTdk\frac{QK^T}{\sqrt{d_k}}) 就是類似aija_{ij}cic_i的計算,Q和K就相當於eije_{ij}計算中的Si1S_{i-1}hjh_j
在這裡插入圖片描述

在這裡插入圖片描述
上圖中的Q換成q, K換成k

相關推薦

[NIPS2017]Attention is all you need

這篇文章是火遍全宇宙,關於網上的解讀也非常多,將自己看完後的一點小想法也總結一下。 看完一遍之後,有很多疑問,我是針對每個疑問都瞭解清楚後才算明白了這篇文章,可能寫的不到位,只是總結下,下次忘記了便於翻查。 一:Q,K, V 到底是什麼? 在傳統的seq2seq

Paper Reading - Attention Is All You Need ( NIPS 2017 )

int tput represent enc perf task desc compute .com Link of the Paper: https://arxiv.org/abs/1706.03762 Motivation: The inherently sequen

Attention is all you need及其在TTS中的應用Close to Human Quality TTS with Transformer和BERT

ips fas 缺點 不同的 stand 進入 簡單 code shang 論文地址:Attention is you need 序列編碼 深度學習做NLP的方法,基本都是先將句子分詞,然後每個詞轉化為對應的的詞向量序列,每個句子都對應的是一個矩陣\(X=(x_1,x_2,

#論文閱讀#attention is all you need

ali 計算 str red read required ado 論文 uci Vaswani A, Shazeer N, Parmar N, et al. Attention is all you need[C]//Advances in Neural Infor

Attention Is All You Need(Transformer)原理小結

1. 前言 谷歌在2017年發表了一篇論文名字教Attention Is All You Need,提出了一個只基於attention的結構來處理序列模型相關的問題,比如機器翻譯。傳統的神經機器翻譯大都是利用RNN或者CNN來作為encoder-decoder的模型基礎,而谷歌最新的只基於Attention

Attention is all you need 論文詳解(轉)

一、背景 自從Attention機制在提出之後,加入Attention的Seq2Seq模型在各個任務上都有了提升,所以現在的seq2seq模型指的都是結合rnn和attention的模型。傳統的基於RNN的Seq2Seq模型難以處理長序列的句子,無法實現並行,並且面臨對齊的問題。 所以之後這類模型的發展大

[閱讀筆記]Attention Is All You Need - Transformer結構

例如 position 頻率 product 結構圖 上一個 預測 獲得 line Transformer 本文介紹了Transformer結構, 是一種encoder-decoder, 用來處理序列問題, 常用在NLP相關問題中. 與傳統的專門處理序列問題的encoder

pytorch求索(4): 跟著論文《 Attention is All You Need》一步一步實現Attention和Transformer

寫在前面 此篇文章是前橋大學大神復現的Attention,本人邊學邊翻譯,借花獻佛。跟著論文一步一步復現Attention和Transformer,敲完以後收貨非常大,加深了理解。如有問題,請留言指出。 import numpy as np import torch import

Attention Is All You Need

本文是對Google2017年發表於NIPS上的論文"Attention is all you need"的閱讀筆記. 對於深度學習中NLP問題,通常是將句子分詞後,轉化詞向量序列,轉為seq2seq問題. RNN方案 採用RNN模型,通常是遞迴地進行

Attention is All You Need -- 淺析

       由於最近bert比較火熱,並且bert的底層網路依舊使用的是transformer,因此再學習bert之前,有必要認真理解一下Transformer的基本原理以及self-attention的過程,本文參考Jay Alammar的一篇博文,翻譯+

Transformer【Attention is all you need

nsf 打開 enc 一個 png 分別是 att 參考 for 前言 Transfomer是一種encoder-decoder模型,在機器翻譯領域主要就是通過encoder-decoder即seq2seq,將源語言(x1, x2 ... xn) 通過編碼,再解碼的方式映射

bert之transformer(attention is all you need

Attention Is All You Need 自從Attention機制在提出之後,加入Attention的Seq2Seq模型在各個任務上都有了提升,所以現在的seq2seq模型指的都是結合rnn和attention的模型。傳統的基於RNN的Seq2Seq模型難以處理長序列的句子,無法實現

Attention is all you need閱讀筆記

xinxinzhang 每個單元的介紹: 一、add&norm (1).norm(層正則化): 原文:http://blog.csdn.net/zhangjunhit/article/details/53169308 本文主要是針對 batch normaliza

一文讀懂「Attention is All You Need」| 附程式碼實現

前言 2017 年中,有兩篇類似同時也是筆者非常欣賞的論文,分別是 FaceBook 的Convolutional Sequence to Sequence Learning和 Google 的Attention is All You Need,它們都算是 Seq2Se

釋出一年了,做NLP的還有沒看過這篇論文的嗎?--“Attention is all you need

筆記作者:王小草 日期:2018年10月30日 歡迎關注我的微信公眾號“AI躁動街” 1 Background 說起深度學習和神經網路,影象處理一呼百應的“卷積神經網路CNN“也好,還是自然語言處理得心應手的”迴圈神經網路RNN”,都簡直是膾炙人口、婦孺皆知

谷歌機器翻譯Attention is All You Need

通常來說,主流序列傳導模型大多基於 RNN 或 CNN。Google 此次推出的翻譯框架—Transformer 則完全捨棄了 RNN/CNN 結構,從自然語言本身的特性出發,實現了完全基於注意力機制的 Transformer 機器翻譯網路架構。   論文連結:

論文閱讀-attention-is-all-you-need

都是 所有 for 表示 權重 all osi max forward 1結構介紹 是一個seq2seq的任務模型,將輸入的時間序列轉化為輸出的時間序列。 有encoder和decoder兩個模塊,分別用於編碼和解碼,結合時是將編碼的最後一個輸出 當做 解碼的第一個模塊的輸

Day3_attention is all you need 論文閱讀

感覺自己看的一臉懵b; 但看懂了這篇文章要講啥: 以RRN為背景的神經機器翻譯是seq2seq,但這樣帶來的問題是不可以平行計算,拖長時間,除此之外會使得尋找距離遠的單詞之間的依賴關係變得困難。而本文講的Attention機制就很好的解決了這個問題,並且也解決了遠距離之間的依賴關係問題。 前饋神

All you need is attention(Tranformer) --學習筆記

1、回顧 傳統的序列到序列的機器翻譯大都利用RNN或CNN來作為encoder-decoder的模型基礎。實際上傳統機器翻譯基於RNN和CNN進行構建模型時,最關鍵一步就是如何編碼這些句子的序列。往往第一步是先將句子進行分詞,然後每個詞轉化為對應的詞向量,那麼每

Attention all you need

2018年11月05日 14:30:02 聶小閒 閱讀數:4 個人分類: 演算法