Seq2Seq腿堤、Attention、以及Transformer介紹

Seq2Seq(Sequence To Sequence)

Seq2seq 由Google首次引入機(jī)器翻譯届垫。在此之前释液,翻譯工作非常幼稚。您以前鍵入的每個(gè)單詞都被轉(zhuǎn)換為其目標(biāo)語(yǔ)言装处,而不考慮其語(yǔ)法和句子結(jié)構(gòu)。Seq2seq通過(guò)深度學(xué)習(xí)徹底改變了翻譯過(guò)程浸船。它不僅在翻譯時(shí)考慮了當(dāng)前單詞/輸入妄迁,還考慮了其??鄰域。

如今李命,它可用于各種不同的應(yīng)用程序登淘,例如圖像字幕,會(huì)話模型封字,文本摘要等黔州。

Seq2seq工作:

  • Seq2Seq將一系列單詞(句子或句子)作為輸入,并生成一個(gè)輸出單詞序列阔籽。它通過(guò)使用遞歸神經(jīng)網(wǎng)絡(luò)(RNN)來(lái)實(shí)現(xiàn)流妻。盡管很少使用RNN的原始版本,但使用了更高級(jí)的版本笆制,即LSTM或GRU绅这。這是因?yàn)镽NN存在梯度消失的問(wèn)題。Google提出的版本使用LSTM在辆。它通過(guò)在每個(gè)時(shí)間點(diǎn)進(jìn)行兩次輸入來(lái)發(fā)展單詞的上下文证薇。一個(gè)來(lái)自用戶,另一個(gè)來(lái)自其先前的輸出匆篓,因此名稱為recurrent(輸出作為輸入)浑度。
  • Seq2Seq是用于序列預(yù)測(cè)任務(wù)(例如語(yǔ)言建模和機(jī)器翻譯)的模型。這個(gè)想法是使用一個(gè)LSTM編碼器一次一次讀取輸入序列鸦概,以獲得較大的固定維矢量表示(上下文矢量)箩张,然后使用另一個(gè)LSTM解碼器提取輸出。該向量的序列。第二個(gè)LSTM本質(zhì)上是遞歸神經(jīng)網(wǎng)絡(luò)語(yǔ)言模型伏钠,除了它以輸入序列為條件横漏。

它主要有兩個(gè)部分,即編碼器和解碼器熟掂,因此有時(shí)被稱為編碼器-解碼器網(wǎng)絡(luò)缎浇。

編碼器: 它使用深層神經(jīng)網(wǎng)絡(luò)層并將輸入的單詞轉(zhuǎn)換為相應(yīng)的隱藏向量。每個(gè)向量代表當(dāng)前單詞和該單詞的上下文赴肚。

解碼器: 類似于編碼器素跺。它以編碼器生成的隱藏矢量,其自身的隱藏狀態(tài)和當(dāng)前單詞作為輸入誉券,以生成下一個(gè)隱藏矢量并最終預(yù)測(cè)下一個(gè)單詞指厌。

編輯器-解碼器 架構(gòu)

除了這兩個(gè)之外,還有其他優(yōu)化引導(dǎo)seq2seq的組件:

Attention:解碼器的輸入是單個(gè)向量踊跟,必須存儲(chǔ)有關(guān)上下文的所有信息踩验。這對(duì)于大序列來(lái)說(shuō)是一個(gè)問(wèn)題。因此商玫,應(yīng)用了attention機(jī)制箕憾,其允許解碼器選擇性地查看輸入序列。
Beam Search:解碼器選擇最高概率詞作為輸出拳昌。但是袭异,由于貪婪算法的基本問(wèn)題,這并不總是能產(chǎn)生最佳結(jié)果炬藤。因此御铃,應(yīng)用Beam Search,建議在每個(gè)步驟可能進(jìn)行平移沈矿。這樣就形成了具有最高k個(gè)結(jié)果的樹(shù)上真。
Buckting: seq2seq模型中的可變長(zhǎng)度序列是可能的,因?yàn)閷?duì)輸入和輸出都進(jìn)行了0填充细睡。但是谷羞,如果我們?cè)O(shè)置的最大長(zhǎng)度為100,而句子的長(zhǎng)度僅為3個(gè)字溜徙,則會(huì)浪費(fèi)大量空間湃缎。因此,我們使用Bucking的概念蠢壹。我們制作不同大小的存儲(chǔ)桶嗓违,例如(4,8)(8图贸,15)蹂季,依此類推冕广,其中4是我們定義的最大輸入長(zhǎng)度,而8是定義的最大輸出長(zhǎng)度偿洁。

Attention

Self-attention機(jī)制:

Self-Attention

Attention機(jī)制允許輸出將注意力集中在輸入上逮诲,同時(shí)產(chǎn)生輸出剪芍,而Self-attention模型則允許輸入彼此交互(即赛不,計(jì)算一個(gè)輸入對(duì)所有其他輸入的關(guān)注)疗垛。

  • 第一步是將每個(gè)編碼器輸入向量與我們?cè)谟?xùn)練過(guò)程中訓(xùn)練的三個(gè)權(quán)重矩陣\scriptstyle (W(Q),W(K)宾肺,W(V))相乘溯饵。這個(gè)矩陣乘法將為我們每個(gè)輸入向量提供三個(gè)向量:關(guān)鍵(key)向量查詢(query)向量值(value)向量锨用。
  • 第二步是將當(dāng)前輸入的查詢向量與其他輸入的關(guān)鍵向量相乘丰刊。
  • 在第三步中,我們將分?jǐn)?shù)除以關(guān)鍵向量\scriptstyle (d_k)的尺寸的平方根增拥。其背后的原因是啄巧,如果點(diǎn)積變大,那么在將來(lái)應(yīng)用softmax函數(shù)后跪者,這會(huì)使一些Self-attention得分變得很小棵帽。
  • 在第四步中,我們將對(duì)查詢?cè)~(此處為第一個(gè)詞)計(jì)算出的所有Self-attention得分應(yīng)用softmax函數(shù)渣玲。
  • 在第五步中,將值向量乘以上一步中計(jì)算出的向量弟晚。
  • 在最后一步中忘衍,我們總結(jié)了在上一步中獲得的加權(quán)值向量,這將為給定單詞提供Self-attention輸出卿城。

以上過(guò)程適用于所有輸入序列枚钓。數(shù)學(xué)上,輸入矩陣\scriptstyle (Q瑟押、K搀捷、V)的自注意矩陣的計(jì)算公式為:
\text { Attention }(Q, K, V)=\operatorname{softmax}\left(\frac{Q K^{T}}{\sqrt{d_{k}}}\right) V

Multi-headed-attention:

Multi-headed attention

以下是計(jì)算Multi-headed-attention機(jī)制的分步過(guò)程:

  • 接受輸入句子的每個(gè)單詞,并從中生成嵌入詞多望。
  • 在這種機(jī)制中嫩舟,創(chuàng)建了h個(gè)不同的attention heads,每個(gè)頭具有不同的權(quán)重矩陣\scriptstyle (W(Q)怀偷,W(K)家厌,W(V))
  • 在此步驟中椎工,將輸入矩陣與每個(gè)權(quán)重矩陣\scriptstyle (W^Q饭于,W^K蜀踏,W^V)相乘,以生成每個(gè)attention head的鍵(key)掰吕,值(value)和查詢(query)矩陣果覆。
  • 現(xiàn)在,我們將attention機(jī)制應(yīng)用于這些key殖熟,value和query矩陣局待,從而為我們提供了來(lái)自每個(gè)attention head的輸出矩陣。
  • 在這一步中吗讶,我們將從權(quán)重為\scriptstyle W_O的每個(gè)attention head和點(diǎn)積獲得的輸出矩陣連接起來(lái)燎猛,以生成multi-headed attention層的輸出。

數(shù)學(xué)上的Multi-headed-attention可以表示為:
\begin{array}{c} \text { MultiHead }(Q, K, V)=\operatorname{concat}\left(\text { head }_{1} \text { head }_{2} \ldots \text { head }_{n}\right) W_{O} \\ \text { where, head }_{i}=\text { Attention }\left(Q W_{i}^{Q}, K W_{i}^{K}, V W_{i}^{V}\right) \end{array}

Attention in Transformer architecture

–Transformer 架構(gòu)使用attention模型在三個(gè)步驟中使用multi-headed attention:

  • 第一個(gè)是編碼器-解碼器 attention層照皆,在這種類型的層中重绷,查詢來(lái)自上一個(gè)解碼器層,而鍵和值來(lái)自編碼器輸出膜毁。這允許解碼器中的每個(gè)位置都注意輸入序列的所有位置昭卓。

  • 第二種類型是編碼器中包含的self-attention層,該層從先前的編碼器層的輸出中接收鍵瘟滨,值和查詢輸入候醒。編碼器中的每個(gè)位置都可以從上一個(gè)編碼器層中的每個(gè)位置獲取attention得分。


    Self-attention in Encoder
  • 第三種是解碼器中的self-attention 杂瘸,這類似于編碼器中的所有內(nèi)容倒淫,所有查詢,鍵和值都來(lái)自上一層的self-attention败玉。self-attention解碼器允許每個(gè)位置參加直到并包括該位置的每個(gè)位置敌土。將來(lái)的值用(-Inf)掩蓋。這就是所謂的“self-attention”运翼。


    Self-attention in Decoder

復(fù)雜性

在NLP任務(wù)中使用self-attention層的優(yōu)勢(shì)在于返干,與其他操作相比,執(zhí)行該過(guò)程的計(jì)算成本較低血淌。下表是表示不同操作的復(fù)雜性的表:

FLOPs
Self-Attention O({length}^2 \cdot dim)
RNN(LSTM) O(length \cdot {dim}^2)
Convolution O(length \cdot {dim}^2 \cdot kernel_{width})

Transformer

transformer的基本組成部分是self-attention矩欠。首先,我們需要克服順序處理悠夯,重復(fù)性和LSTM癌淮!只需更改輸入表示形式即可!

集合和標(biāo)記化

transformer 革命始于一個(gè)簡(jiǎn)單的問(wèn)題:為什么不輸入整個(gè)輸入序列疗疟?隱藏狀態(tài)之間沒(méi)有依賴性该默!

例如,句子“hello,I love you”:


tokenization

這個(gè)處理步驟通常稱為標(biāo)記化策彤,這是在我們將輸入輸入模型之前的三個(gè)步驟中的第一步栓袖。
因此匣摘,我們現(xiàn)在有了一組元素,而不是元素序列裹刮。
集合是不同的元素音榜,其中集合中元素的排列并集合不是無(wú)所謂。

換句話說(shuō)捧弃,順序無(wú)關(guān)緊要赠叼。我們將輸入集表示為\scriptstyle \mathbf{X}=\mathbf{x}_{1}, \mathbf{x}_{2}, \mathbf{x}_{3} \ldots, \mathbf{x}_{N}, 其中\scriptstyle \mathbf{x} \in R^{N \times d_{i n}} 违霞。序列的元素被稱為標(biāo)記嘴办。

標(biāo)記化后,我們將詞投影到一個(gè)分布的幾何空間中买鸽,或簡(jiǎn)單地構(gòu)建詞嵌入

詞嵌入

通常涧郊,嵌入是連續(xù)值向量的分布低維空間中符號(hào)(詞,字符眼五,句子)的表示妆艘。

詞不是離散符號(hào)。它們彼此之間密切相關(guān)看幼。這就是為什么當(dāng)我們?cè)谶B續(xù)的歐幾里德空間中投影它們時(shí)批旺,我們可以找到它們之間的關(guān)聯(lián)。

然后诵姜,根據(jù)任務(wù)汽煮,我們可以將詞嵌入推得更遠(yuǎn)或保持在一起。

理想情況下棚唆,嵌入是通過(guò)將語(yǔ)義相似的輸入并排放置在嵌入空間中來(lái)捕獲輸入的語(yǔ)義逗物。

在自然語(yǔ)言中,我們可以找到相似的詞義甚至相似的句法結(jié)構(gòu)(即瑟俭,對(duì)象聚在一起)。無(wú)論如何契邀,當(dāng)您將它們投影到2D或3D空間中時(shí)摆寄,都可以直觀地識(shí)別出某些群集。如下圖3D效果圖


位置編碼

將序列轉(zhuǎn)換為集合(標(biāo)記化)時(shí)坯门,會(huì)失去順序的概念微饥。您是否可以從以下順序中找到單詞(標(biāo)記)的順序:“hello,I love you”古戴?類似簡(jiǎn)短點(diǎn)可以欠橘!但是30個(gè)無(wú)序單詞呢?

機(jī)器學(xué)習(xí)與規(guī)模有關(guān)现恼。神經(jīng)網(wǎng)絡(luò)當(dāng)然不能理解集合中的任何順序肃续。

由于transformer將序列作為一組處理黍檩,因此從理論上講它們是置換不變的

讓我們通過(guò)根據(jù)位置稍微更改嵌入來(lái)幫助他們有秩序感始锚。位置編碼是一組小的常量刽酱,這些常量會(huì)在第一個(gè)self-attention層之前添加到詞嵌入向量中。

因此瞧捌,如果同一單詞出現(xiàn)在不同的位置棵里,則實(shí)際表示將略有不同,具體取決于它在輸入句子中出現(xiàn)的位置姐呐。

input-processing-tokenization-embedding

在變壓器論文中殿怜,作者提出了用于位置編碼的正弦函數(shù)。正弦函數(shù)告訴模型要注意特定的波長(zhǎng)\scriptstyle \lambda,給定信號(hào) \scriptstyle y(x)=sin(ks)波長(zhǎng)將是 \scriptstyle k=\frac{2 \pi}{\lambda}曙砂。在我們的情況下\scriptstyle \lambda 將取決于句子中的位置头谜。 \scriptstyle i用于區(qū)分奇數(shù)和偶數(shù)位置。
數(shù)學(xué)上:
\begin{array}{c} P E_{(p o s, 2 i)}=\sin \left(\frac{\text { pos }}{10000^{2 i / 512}}\right) \\ P E_{(p o s, 2 * i+1)}=\cos \left(\frac{\text { pos }}{10000^{2 i / 512}}\right) \end{array}
作為記錄麦轰,\scriptstyle 512=d_{model}乔夯,這是嵌入向量的維數(shù)。
A 2D Vizualization of a positional encoding

高維空間中的向量相似度

在幾何中款侵,內(nèi)部矢量積被解釋為矢量投影末荐。定義矢量相似度的一種方法是通過(guò)計(jì)算歸一化內(nèi)積。在低維空間中新锈,如下面的2D示例甲脏,這將對(duì)應(yīng)于余弦值。

vector-similarity

數(shù)學(xué)公式:
\operatorname{sim}(\mathbf{a}, \mathbf妹笆)=\cos (\mathbf{a}, \mathbf块请)=\frac{\mathbf{a} \mathbf}{|\mathbf{a}||\mathbf拳缠|}=\frac{1}{s} * \mathbf{a} \mathbf墩新

我們可以通過(guò)計(jì)算縮放的點(diǎn)積(即角度的余弦)來(lái)關(guān)聯(lián)表示任何事物(即動(dòng)物)的向量之間的相似性。

在transformer中窟坐,這是最基本的操作海渊,由我們前面提到的self-attention層處理。接下來(lái)我們進(jìn)一步對(duì)self-attention做補(bǔ)充學(xué)習(xí)哲鸳。

self-attention

自我注意臣疑,有時(shí)也稱為內(nèi)部注意,是一種與單個(gè)序列的不同位置相關(guān)聯(lián)的注意力機(jī)制徙菠,目的是計(jì)算序列的表示形式讯沈。

self-attention使我們能夠找到表示句子的句法和上下文結(jié)構(gòu)的輸入的不同單詞之間的相關(guān)性。

讓我們以輸入序列“hello,I love you”為例婿奔。經(jīng)過(guò)訓(xùn)練的self-attention層會(huì)將“l(fā)ove”一詞與“I”和“you”一詞聯(lián)系起來(lái)缺狠,其權(quán)重要高于“hello”一詞问慎。從語(yǔ)言學(xué)的角度來(lái)看,我們知道這些單詞共享主語(yǔ)-動(dòng)詞-賓語(yǔ)的關(guān)系儒老,這是一種理解self-attention的直觀方法蝴乔。

實(shí)際上,Transformer使用3種不同的表示形式:嵌入矩陣的query驮樊,key和value薇正。這可以很容易地通過(guò)乘以我們的輸入來(lái)完成\scriptstyle \mathbf{X} \in R^{N \times d_{k}} 3種不同的重量矩陣 , \scriptstyle \mathbf{W}_{Q}, \quad \mathbf{W}_{K}\scriptstyle \mathbf{W}_{V} \in R^{d_{k} \times d_{\text {model }}}囚衔。本質(zhì)上挖腰,它只是初始詞嵌入中的矩陣乘法。

key-query-value

有了query练湿,vakue和key矩陣猴仑,我們現(xiàn)在可以將self-attention層應(yīng)用為:
\operatorname{Attention}(\mathbf{Q}, \mathbf{K}, \mathbf{V})=\operatorname{softmax}\left(\frac{\mathbf{Q K}^{T}}{\sqrt{d_{k}}}\right) \mathbf{V}

\scriptstyle \sqrt{d_k}只是作為比例因子,以確保矢量不會(huì)爆炸肥哎。

我們已經(jīng)區(qū)分了按鍵\scriptstyle K從值\scriptstyle V作為不同的表示形式辽俗。因此,最終的表示是self-attention矩陣\scriptstyle \operatorname{softmax}\left(\frac{\mathrm{QK}^{T}}{\sqrt{d_{k}}}\right)乘以值\scriptstyle V矩陣篡诽。

首先崖飘,我們有矩陣而不是向量,結(jié)果是矩陣乘法杈女。其次朱浴,我們不按向量大小按比例縮小,而是按矩陣大小按比例縮小\scriptstyle \sqrt{d_k}达椰,(即句子中的詞數(shù)翰蠢!句子大小各不相同:)

接下來(lái)要做規(guī)范化和短跳轉(zhuǎn)連接,類似于在卷積或遞歸后處理張量

殘留短跳轉(zhuǎn)連接

在語(yǔ)言中啰劲,有一個(gè)重要的概念是對(duì)世界和我們將思想結(jié)合起來(lái)的能力有更廣泛的了解梁沧。人類廣泛利用這些自上而下的影響(我們的期望)來(lái)組合不同上下文中的單詞。跳過(guò)連接以一種非常粗糙的方式賦予了Transformer很小的能力蝇裤,使不同級(jí)別的處理表示形式可以交互趁尼。

通過(guò)形成多條路徑,我們可以將對(duì)最后一層的高級(jí)理解“傳遞”到先前的層猖辫。這使我們能夠重新調(diào)整我們對(duì)輸入的理解。同樣砚殿,這是與人類自上而下的理解相同的想法啃憎,無(wú)非是期望。

規(guī)范化層

在規(guī)范化層(Layer Norm-LN)中似炎,均值和方差是在通道和空間暗淡之間計(jì)算的辛萍。在語(yǔ)言中悯姊,每個(gè)單詞都是一個(gè)向量。由于我們要處理向量贩毕,因此我們只有一個(gè)空間維度悯许。
\begin{array}{c} \mu_{n}=\frac{1}{K} \sum_{k=1}^{K} x_{n k} \\ \sigma_{n}^{2}=\frac{1}{K} \sum_{k=1}^{K}\left(x_{n k}-\mu_{n}\right)^{2} \\ \hat{x}_{n k}=\frac{x_{n k}-\mu_{n}}{\sqrt{\sigma_{n}^{2}+\epsilon}}, \hat{x}_{n k} \in R \\ \mathrm{LN}_{\gamma, \beta}\left(x_{n}\right)=\gamma \hat{x}_{n}+\beta, x_{n} \in R^{K} \end{array}

在具有合并空間尺寸的4D張量中,我們可以使用下圖將其可視化:


layer-norm

在應(yīng)用規(guī)范化層并形成殘余跳轉(zhuǎn)連接之后:


encoders-attention-with-normalizarion

即使這可能是一個(gè)獨(dú)立的構(gòu)建塊辉阶,該Transformer的創(chuàng)建者也會(huì)在頂部添加另一個(gè)線性層先壕,并將其與另一個(gè)跳轉(zhuǎn)連接一起重新規(guī)范化

線性層

\mathbf{y}=\mathbf{x} \mathbf{W}^{T}+\mathbf

\scriptstyle \mathbf{W}是矩陣谆甜,\scriptstyle \mathbf{y,x,b}
這是具有N個(gè)此類構(gòu)造塊的Transformer的編碼器部分垃僚,如下所示:

encoder-without-multi-head

實(shí)際上,這幾乎是Transformer的編碼器规辱。有一個(gè)區(qū)別:multi-head attention

Multi-head attention 和 并行應(yīng)用

我們將key谆棺,query,value矩陣的獨(dú)立集合映射到不同的較低維空間中罕袋,并在那里計(jì)算attention(輸出稱為“head”)改淑。通過(guò)將每個(gè)矩陣與單獨(dú)的權(quán)重矩陣相乘來(lái)實(shí)現(xiàn)映射,表示為\scriptstyle \mathbf{W}_{i}^{K}, \mathbf{W}_{i}^{Q} \in R^{d_{\text {model }} \times d_{k}}\scriptstyle \mathbf{W}_{i}^{V} \in R^{d_{\text {model }} \times d_{k}}

為了補(bǔ)償額外的復(fù)雜性浴讯,將輸出矢量大小除以head數(shù)量朵夏。具體來(lái)說(shuō),在香草變壓器中兰珍,他們使用 \scriptstyle d_{model}=512\scriptstyle h=8 頭侍郭,這給了我們64的矢量表示。現(xiàn)在掠河,該模型具有多個(gè)獨(dú)立的路徑(方式)來(lái)理解輸入亮元。

然后使用平方權(quán)重矩陣將這些頭連接起來(lái)并進(jìn)行變換\scriptstyle W^O \in R^{d_{model} \times{d_{model}} },因?yàn)?img class="math-inline" src="https://math.jianshu.com/math?formula=%5Cscriptstyle%20d_%7Bmodel%7D%3Dhd_k" alt="\scriptstyle d_{model}=hd_k" mathimg="1"> 放在一起唠摹,我們得到:

\begin{aligned} \text { MultiHead }(\mathbf{Q}, \mathbf{K}, \mathbf{V}) &=\text { Concat }\left(\text { head }_{1}, \ldots, \text { head }_{\mathrm{h}}\right) \mathbf{W}^{O} \\ \text { where head }_{\mathbf{i}} &=\text { Attention }\left(\mathbf{Q} \mathbf{W}_{i}^{Q}, \mathbf{K} \mathbf{W}_{i}^{K}, \mathbf{V} \mathbf{W}_{i}^{V}\right) \end{aligned}

然后
\mathbf{W}_{i}^{Q}, \mathbf{W}_{i}^{K}, \mathbf{W}_{i}^{V} \in R^{d_{\text {model }} \times d_{k}}

由于head是彼此獨(dú)立的爆捞,因此我們可以在不同的worker上并行執(zhí)行self-attention計(jì)算:

parallel-multi-head-attention

multi-head attetion背后的直覺(jué)是,它使我們每次都可以不同地關(guān)注序列的不同部分勾拉。這實(shí)際上意味著:

  • 該模型可以更好地捕獲位置信息煮甥,因?yàn)槊總€(gè)head都將參與輸入的不同部分。它們的組合將為我們提供更強(qiáng)大的表示藕赞。
  • 通過(guò)以獨(dú)特的方式關(guān)聯(lián)單詞成肘,每個(gè)head也將捕獲不同的上下文信息。

multi-head attention使模型可以共同關(guān)注來(lái)自不同位置的不同表示子空間的信息斧蜕。簡(jiǎn)單的attention head双霍,取平均值可以抑制這種情況

我們將在以下圖表中描述multi-head self-attention:


multi-head-attention

總結(jié):Transformer編碼器

要處理一個(gè)句子,我們需要以下三個(gè)步驟:

  • 輸入句子的詞嵌入是同時(shí)計(jì)算的。

  • 然后洒闸,將位置編碼應(yīng)用于每個(gè)嵌入染坯,從而生成詞矢量,該詞矢量還包含位置信息丘逸。

  • 詞向量被傳遞到第一編碼器塊单鹿。

每個(gè)塊均由以下幾層按相同順序組成:

    1. multi-head self-attention,用于查找每個(gè)單詞之間的相關(guān)性
    1. 規(guī)范化層
    1. 前兩個(gè)子層周圍的殘余跳轉(zhuǎn)連接
    1. 線性層
    1. 第二規(guī)范化層
    1. 第二個(gè)殘余跳轉(zhuǎn)連接

上述塊可以復(fù)制多次以形成編碼器深纲。在這里中仲锄,編碼器由6個(gè)相同的塊組成。


encoder

Transformer 解碼器

解碼器包括所有上述組件以及兩個(gè)新穎的組件囤萤。像之前一樣:

  • 輸出序列將全部輸入昼窗,并計(jì)算單詞嵌入
  • 再次應(yīng)用位置編碼
  • 并將向量傳遞到第一個(gè)解碼器塊

每個(gè)解碼器塊包括:

  • Masked multi-head self-attention層
  • 緊隨殘差連接規(guī)范化層
  • 新的multi-head self-attention(Encoder-Decoder attention)
  • 第二次規(guī)劃層和殘差連接
  • 線性層和第三次殘差連接

解碼器塊再次出現(xiàn)6次。最終輸出通過(guò)最終線性層進(jìn)行轉(zhuǎn)換涛舍,并使用標(biāo)準(zhǔn)softmax函數(shù)計(jì)算輸出概率


decoder

輸出概率預(yù)測(cè)輸出語(yǔ)句中的下一個(gè)標(biāo)記澄惊。本質(zhì)上,我們?yōu)榉ㄕZ(yǔ)中的每個(gè)單詞分配一個(gè)概率富雅,我們只保留得分最高的單詞掸驱。

Masked Multi-head attention

果您尚未意識(shí)到,在解碼階段没佑,我們會(huì)預(yù)測(cè)一個(gè)單詞(標(biāo)記)一個(gè)接一個(gè)毕贼。在諸如機(jī)器翻譯之類的NLP問(wèn)題中,順序標(biāo)記預(yù)測(cè)是不可避免的蛤奢。結(jié)果鬼癣,需要修改self-attention層,以便僅考慮到目前為止已生成的輸出語(yǔ)句啤贩。

在我們的翻譯示例中待秃,解碼器在第三遍的輸入將為“ Bonjour”,“ je”…………”痹屹。

如您所知章郁,這里的區(qū)別在于我們不知道整個(gè)句子,因?yàn)樗€沒(méi)有產(chǎn)生出來(lái)志衍。這就是為什么我們需要忽略未知詞暖庄。否則,模型將只復(fù)制下一個(gè)單詞楼肪!為此培廓,我們屏蔽了下一個(gè)單詞嵌入(將它們?cè)O(shè)置為-inf)。

數(shù)學(xué)上春叫,我們有:
\text { MaskedAttention }(\mathbf{Q}, \mathbf{K}, \mathbf{V})=\operatorname{softmax}\left(\frac{\mathbf{Q K}^{T}+\mathbf{M}}{\sqrt{d_{k}}}\right) \mathbf{V}

其中矩陣M是由0-inf組成
零將成為指數(shù)的-医舆,而無(wú)窮變成0

這實(shí)際上具有與刪除相應(yīng)連接相同的效果俘侠。其余原理與編碼器的注意完全相同。再一次蔬将,我們可以并行實(shí)現(xiàn)它們以加快計(jì)算速度。

顯然央星,為了我們計(jì)算的每個(gè)新標(biāo)記霞怀,每一個(gè)mask都會(huì)更改。

編碼器-解碼器 attention

實(shí)際上莉给,這是解碼器處理編碼表示的地方毙石。編碼器生成的attention矩陣將與先前的Masked Multi-head attention塊的結(jié)果一起傳遞到另一個(gè)attention層。

編碼器-解碼器注意層背后的直覺(jué)是將輸入和輸出語(yǔ)句組合在一起颓遏。編碼器的輸出封裝了輸入語(yǔ)句的最終嵌入徐矩。就像我們的數(shù)據(jù)庫(kù)。因此叁幢,我們將使用編碼器輸出來(lái)生成Key和Value矩陣滤灯。另一方面,Masked Multi-head attention塊的輸出包含到目前為止生成的新句子曼玩,并在attention層中表示為Query矩陣鳞骤。同樣,它是數(shù)據(jù)庫(kù)中的“搜索”黍判。

訓(xùn)練編碼器-解碼器attention以將輸入句子與相應(yīng)的輸出詞相關(guān)聯(lián)

最終將確定每個(gè)英語(yǔ)單詞與法語(yǔ)單詞的關(guān)聯(lián)程度豫尽。這基本上就是英語(yǔ)和法語(yǔ)之間發(fā)生映射的地方。

注意顷帖,編碼器最后一個(gè)塊的輸出將在每個(gè)解碼器塊中使用

Transformer優(yōu)勢(shì)

    1. 每個(gè)塊的分布式和獨(dú)立表示:每個(gè)transformer塊都有\scriptstyle h=8情境化表示美旧。可以將其視為卷積層的多個(gè)特征圖贬墩,這些特征圖可捕獲圖像中的不同特征榴嗅。卷積的不同之處在于,這里我們對(duì)其他空間有多個(gè)視圖(線性重投影)震糖。當(dāng)然录肯,這可以通過(guò)最初將單詞表示為歐式空間中的向量(而不是離散符號(hào))來(lái)實(shí)現(xiàn)。
    1. 含義在很大程度上取決于上下文:這正是self-attention的全部?jī)?nèi)容吊说!我們將attention權(quán)重表示的單詞表示之間的關(guān)系關(guān)聯(lián)起來(lái)论咏。因?yàn)槲覀冏匀粫?huì)讓模型建立全局關(guān)聯(lián),所以沒(méi)有局部性的概念颁井。
    1. 多個(gè)編碼器和解碼器塊:模型具有更多層厅贪,可以進(jìn)行更多抽象表示。類似于堆疊遞歸或卷積塊雅宾,我們可以堆疊多個(gè)transformer塊养涮。第一個(gè)塊將字向量對(duì),雙雙第二個(gè)對(duì),三雙第三個(gè)對(duì)等相關(guān)聯(lián)贯吓,依此類推懈凹。平行地,multi-head專注于該對(duì)的不同段悄谐。這類似于接受域,但是在成對(duì)的分布式表示方面介评。
    1. 高級(jí)別和低級(jí)別信息的組合:當(dāng)然,還有跳轉(zhuǎn)連接爬舰!它們使自上而下的理解能夠與向后流動(dòng)的多個(gè)梯度路徑一起向后流動(dòng)们陆。

參考

Sequence to Sequence papaerswithcode web
seq2seq model in Machine Learning
Seq2Seq code-github_1
Seq2Seq code-github_2
Self -attention in NLP
How Transformers work in deep learning and NLP: an intuitive introduction

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市情屹,隨后出現(xiàn)的幾起案子坪仇,更是在濱河造成了極大的恐慌,老刑警劉巖垃你,帶你破解...
    沈念sama閱讀 216,843評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件椅文,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡蜡镶,警方通過(guò)查閱死者的電腦和手機(jī)雾袱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,538評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)官还,“玉大人芹橡,你說(shuō)我怎么就攤上這事⊥祝” “怎么了林说?”我有些...
    開(kāi)封第一講書人閱讀 163,187評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)屯伞。 經(jīng)常有香客問(wèn)我腿箩,道長(zhǎng),這世上最難降的妖魔是什么劣摇? 我笑而不...
    開(kāi)封第一講書人閱讀 58,264評(píng)論 1 292
  • 正文 為了忘掉前任珠移,我火速辦了婚禮,結(jié)果婚禮上末融,老公的妹妹穿的比我還像新娘钧惧。我一直安慰自己,他們只是感情好勾习,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,289評(píng)論 6 390
  • 文/花漫 我一把揭開(kāi)白布浓瞪。 她就那樣靜靜地躺著,像睡著了一般巧婶。 火紅的嫁衣襯著肌膚如雪乾颁。 梳的紋絲不亂的頭發(fā)上涂乌,一...
    開(kāi)封第一講書人閱讀 51,231評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音英岭,去河邊找鬼湾盒。 笑死,一個(gè)胖子當(dāng)著我的面吹牛诅妹,可吹牛的內(nèi)容都是我干的历涝。 我是一名探鬼主播,決...
    沈念sama閱讀 40,116評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼漾唉,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了堰塌?” 一聲冷哼從身側(cè)響起赵刑,我...
    開(kāi)封第一講書人閱讀 38,945評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎场刑,沒(méi)想到半個(gè)月后般此,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,367評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡牵现,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,581評(píng)論 2 333
  • 正文 我和宋清朗相戀三年铐懊,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瞎疼。...
    茶點(diǎn)故事閱讀 39,754評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡科乎,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出贼急,到底是詐尸還是另有隱情茅茂,我是刑警寧澤,帶...
    沈念sama閱讀 35,458評(píng)論 5 344
  • 正文 年R本政府宣布太抓,位于F島的核電站空闲,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏走敌。R本人自食惡果不足惜碴倾,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,068評(píng)論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望掉丽。 院中可真熱鬧跌榔,春花似錦、人聲如沸机打。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,692評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)残邀。三九已至皆辽,卻和暖如春柑蛇,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背驱闷。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,842評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工耻台, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人空另。 一個(gè)月前我還...
    沈念sama閱讀 47,797評(píng)論 2 369
  • 正文 我出身青樓盆耽,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親扼菠。 傳聞我的和親對(duì)象是個(gè)殘疾皇子摄杂,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,654評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容