官术网_书友最值得收藏!

2.3.1 Transformer的模型結(jié)構(gòu)

Transformer是谷歌在2017年的論文“Attention is all you need”[3]中提出的,用于自然語言處理的各項(xiàng)任務(wù),現(xiàn)在是谷歌云的張量處理單元(tensor processing unit,TPU)推薦的參考模型,也是OpenAI GPT系列大模型的基本結(jié)構(gòu)。Transformer是一種強(qiáng)大的模型,能夠完成并行處理、提取特征、優(yōu)化機(jī)器翻譯等任務(wù)。

Transformer是一種能夠完成機(jī)器翻譯任務(wù)的模型,它可以把一種語言轉(zhuǎn)換成另一種語言。如果不考慮Transformer的內(nèi)部結(jié)構(gòu),只看它的輸入和輸出,那么它的結(jié)構(gòu)可以用圖2-7來表示。

圖2-7 將法文翻譯成英文

打開Transformer的黑盒,就可以看到Transformer是由多個編碼器(encoder)和解碼器(decoder)堆疊而成的,如圖2-8所示。可以看到左邊是由多層編碼器構(gòu)成的,右邊是由多層解碼器構(gòu)成的。

圖2-8 Transformer由多個編碼器和解碼器構(gòu)成

繼續(xù)將編碼器和解碼器拆開,可以看到完整的Transformer結(jié)構(gòu),如圖2-9所示。編碼器包含一個多頭注意力(multi-head attention)層,它由多個自注意力(self-attention)單元組成。解碼器則包含兩個多頭注意力層,一個用于編碼器-解碼器的注意力,另一個用于自注意力。在每個多頭自注意力層的上方,還有一個加法和歸一化(add & norm)層,加法表示使用殘差連接來防止網(wǎng)絡(luò)退化,歸一化表示使用層歸一化來對每一層的激活值進(jìn)行規(guī)范化。

圖2-9 完整的Transformer結(jié)構(gòu)

圖2-8只給出了解碼器的目標(biāo)輸出,沒有顯示解碼器的目標(biāo)輸入。而圖2-9則同時顯示了目標(biāo)輸入(嵌入層的輸入)和目標(biāo)輸出(Softmax層的輸出),這是為了統(tǒng)一訓(xùn)練和預(yù)測的過程。在模型訓(xùn)練時,目標(biāo)輸入是已知的翻譯結(jié)果(比如將法文翻譯成英文時的目標(biāo)是英文),而在模型訓(xùn)練完成后進(jìn)行預(yù)測時,目標(biāo)輸入的第一個詞是特殊的開始標(biāo)記(如<|im_start|>)。關(guān)于這個過程的更多細(xì)節(jié),將在2.3.5節(jié)中詳細(xì)介紹。

為了能夠讓讀者更好地理解Transformer的模型原理,在接下來的內(nèi)容中,將用具體的代碼來實(shí)現(xiàn)它。我們使用的是TensorFlow 2.0框架。

代碼清單2-1 導(dǎo)入TensorFlow 2.0

    from __future__ import absolute_import, division, print_function
    import tensorflow_datasets as tfds
    import tensorflow as tf
    import tensorflow.keras.layers as layers
    import time
    import numpy as np
    import matplotlib.pyplot as plt

下面用一個簡單的例子來說明Transformer的基本工作流程。我們還是使用前面的例子,把法文的“Je suis étudiant”翻譯成英文。

(1)得到輸入句子中每個單詞的向量表示x,它是由詞嵌入(word embedding)向量和位置嵌入(position embedding)向量相加而得到的。

(2)把輸入句子的詞嵌入矩陣X作為編碼器的輸入,經(jīng)過N層編碼器的處理,得到了句子中每個單詞的編碼信息矩陣C,如圖2-10所示。矩陣X的維度是n × d,其中n是單詞的個數(shù),d是詞嵌入的維度。

圖2-10 編碼器的處理過程

(3)把編碼器輸出的編碼矩陣C作為解碼器的輸入,解碼器根據(jù)編碼矩陣C和已經(jīng)翻譯過的單詞來生成下一個單詞,如圖2-11所示。

圖2-11 經(jīng)過解碼器后的輸出

從圖2-11可知,解碼器首先從編碼器獲取編碼矩陣,并以“<Begin>”作為起始符,預(yù)測出第一個單詞“I”;然后將“<Begin>”和“I”作為輸入,預(yù)測出第二個單詞“am”。以此類推,生成完整的句子。這就是Transformer的基本工作流程,下面詳細(xì)介紹其中的各個組成部分。

主站蜘蛛池模板: 青川县| 郧西县| 密山市| 永修县| 武胜县| 中西区| 孙吴县| 宣汉县| 阳曲县| 仙游县| 保德县| 白玉县| 青河县| 巴林左旗| 东莞市| 田东县| 陇南市| 台南县| 江都市| 浪卡子县| 新巴尔虎左旗| 罗甸县| 阿合奇县| 商城县| 东丰县| 大埔区| 鄢陵县| 南木林县| 大连市| 丹江口市| 康马县| 温宿县| 二手房| 象山县| 凌海市| 施甸县| 鹤山市| 喀什市| 临安市| 安化县| 辉县市|