1. 程式人生 > >《Attention Is All You Need》

《Attention Is All You Need》

本文是對Google2017年發表於NIPS上的論文"Attention is all you need"的閱讀筆記.

對於深度學習中NLP問題,通常是將句子分詞後,轉化詞向量序列,轉為seq2seq問題.

  • RNN方案

    採用RNN模型,通常是遞迴地進行 y t =

    f ( y t 1 ,
    x t ) y_t=f(y_{t-1},x_t) ,優點在於結構簡單,十分適合序列建模;缺點在於需要前一個輸出作為後一個的輸入參與運算,因此無法平行計算,速度很慢,且單向RNN只能獲取前向序列關係,需要採用雙向RNN才可以獲取完整的全域性資訊.

  • CNN方案

    採用CNN模型,則是通過一個視窗(卷積核)來對整個序列進行遍歷, y t = f ( x t 1 , x t , x t + 1 ) y_t = f(x_{t-1},x_t,x_{t+1}) 只能獲取到區域性資訊,需要層疊來增大感受野.

本文提出了一種Transformer注意力機制,完全替代了RNN、CNN.

y t = f ( x t , A , B ) y_t = f(x_t,A,B)

將A、B都取為X時,則稱為Self-Attention,即通過 x t x_t 和整個 X X 進行關係運算最後得到 y t y_t .

Attention層

Google給出瞭如下的Attention結構

Attention層.jpg

A t t e n t i o n ( Q , K , V ) = s o f t m a x ( Q K T d k ) V Attention(Q,K,V) = softmax(\frac{QK^T}{\sqrt{d_k}})V

其中, d k d_k k e y key 的維數, d v d_v v a l u e value 的維數, Q R n × d k , K R m × d k V R m × d v Q\in R^{n\times d_k}, K\in R^{m\times d_k}, V\in R^{m\times d_v}

d k d_k 較小時,採用點積和加法注意力機制的效果時相同的,當 d k d_k 較大時,點積的效果會下降很多,這是由於 d k d_k 較大時,點積產生的值會很大導致 s o f t m a x softmax 陷入了飽和區,因此這裡除以了 d k \sqrt{d_k} .

Y s e l f = A t t e n t i o n ( V , V , V ) Y_{self} = Attention(V,V,V)
通過self-attention,可以無視詞之間距離直接計算遠距離的兩個詞的依賴關係,從而能學習到整個句子的內部結構,並且相當於進行了句法分析.

Multi-Head Attention

多頭注意力機制就是重複進行 h h 次(引數不共享),即採用不同的引數進行 h h 次,捕獲不同子空間上的相關資訊,將最後的結果拼接起來,會產生更好的效果.
M u l t i H e a d ( Q , K , V ) = C o n c a t ( h e a d 1 , , h e a d h ) W O w h e r e    h e a d i = A t t e n t i o n ( Q W i Q , K W i K , V W i V ) MultiHead(Q,K,V) = Concat(head_1,\dots,head_h)W^O\\ where\ \ head_i = Attention(QW_i^Q,KW_i^K,VW_i^V)

其中, W i Q R d m o d e l × d k , W i K R d m o d e l × d k , W i V R d m o d e l × d v , W O R h d v × d m o d e l W_i^Q\in R^{d_{model}\times d_k}, W_i^K\in R^{d_{model}\times d_k}, W_i^V\in R^{d_{model}\times d_v}, W^O \in R^{hd_v\times d_{model}}

相關推薦

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

[NIPS2017]Attention is all you need

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

一文讀懂「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 個人分類: 演算法