一文讀懂 Transformer 神經(jīng)網(wǎng)絡(luò)模型
Hello folks,我是 Luga,今天我們來(lái)聊一下人工智能(AI)生態(tài)領(lǐng)域相關(guān)的技術(shù) - Transformer 神經(jīng)網(wǎng)絡(luò)模型 。
自從最新的大型語(yǔ)言模型(LLaM)的發(fā)布,例如 OpenAI 的 GPT 系列、開(kāi)源模型 Bloom 以及谷歌發(fā)布的 LaMDA 等,Transformer 模型已經(jīng)展現(xiàn)出了其巨大的潛力,并成為深度學(xué)習(xí)領(lǐng)域的前沿架構(gòu)楷模。
一、什么是 Transformer 模型 ?
在過(guò)去幾年中,Transformer 模型已經(jīng)成為高級(jí)深度學(xué)習(xí)和深度神經(jīng)網(wǎng)絡(luò)領(lǐng)域的熱門(mén)話(huà)題。自從其在 2017 年被引入以來(lái),Transformer 深度學(xué)習(xí)模型架構(gòu)已經(jīng)在幾乎所有可能的領(lǐng)域中得到了廣泛應(yīng)用和演進(jìn)。該模型不僅在自然語(yǔ)言處理任務(wù)中表現(xiàn)出色,還對(duì)于其他領(lǐng)域,尤其是時(shí)間序列預(yù)測(cè)方面,也具有巨大的幫助和潛力。
那么,什么是 Transformer 神經(jīng)網(wǎng)絡(luò)模型?
Transformer 模型是一種深度學(xué)習(xí)架構(gòu),自 2017 年推出以來(lái),徹底改變了自然語(yǔ)言處理 (NLP) 領(lǐng)域。該模型由 Vaswani 等人提出,并已成為 NLP 界最具影響力的模型之一。
通常而言,傳統(tǒng)的順序模型(例如循環(huán)神經(jīng)網(wǎng)絡(luò) (RNN))在捕獲遠(yuǎn)程依賴(lài)性和實(shí)現(xiàn)并行計(jì)算方面存在局限性。為了解決這些問(wèn)題,Transformer 模型引入了自注意力機(jī)制,通過(guò)廣泛使用該機(jī)制,模型能夠在生成輸出時(shí)權(quán)衡輸入序列中不同位置的重要性。
Transformer 模型通過(guò)自注意力機(jī)制和并行計(jì)算的優(yōu)勢(shì),能夠更好地處理長(zhǎng)距離依賴(lài)關(guān)系,提高了模型的訓(xùn)練和推理效率。它在機(jī)器翻譯、文本摘要、問(wèn)答系統(tǒng)等多個(gè) NLP 任務(wù)中取得了顯著的性能提升。
除此之外,Transformer 模型的突破性表現(xiàn)使得它成為現(xiàn)代 NLP 研究和應(yīng)用中的重要組成部分。它能夠捕捉復(fù)雜的語(yǔ)義關(guān)系和上下文信息,極大地推動(dòng)了自然語(yǔ)言處理的發(fā)展。
二、Transformer 模型歷史發(fā)展
Transformer 在神經(jīng)網(wǎng)絡(luò)中的歷史可以追溯到20世紀(jì)90年代初,當(dāng)時(shí) Jürgen Schmidhuber 提出了第一個(gè) Transformer 模型的概念。這個(gè)模型被稱(chēng)為"快速權(quán)重控制器",它采用了自注意力機(jī)制來(lái)學(xué)習(xí)句子中單詞之間的關(guān)系。然而,盡管這個(gè)早期的 Transformer 模型在概念上是先進(jìn)的,但由于其效率較低,它并未得到廣泛的應(yīng)用。
隨著時(shí)間的推移和深度學(xué)習(xí)技術(shù)的發(fā)展,Transformer 在2017年的一篇開(kāi)創(chuàng)性論文中被正式引入,并取得了巨大的成功。通過(guò)引入自注意力機(jī)制和位置編碼層,有效地捕捉輸入序列中的長(zhǎng)距離依賴(lài)關(guān)系,并且在處理長(zhǎng)序列時(shí)表現(xiàn)出色。此外,Transformer 模型的并行化計(jì)算能力也使得訓(xùn)練速度更快,推動(dòng)了深度學(xué)習(xí)在自然語(yǔ)言處理領(lǐng)域的重大突破,如機(jī)器翻譯任務(wù)中的BERT(Bidirectional Encoder Representations from Transformers)模型等。
因此,盡管早期的"快速權(quán)重控制器"并未受到廣泛應(yīng)用,但通過(guò) Vaswani 等人的論文,Transformer 模型得到了重新定義和改進(jìn),成為現(xiàn)代深度學(xué)習(xí)的前沿技術(shù)之一,并在自然語(yǔ)言處理等領(lǐng)域取得了令人矚目的成就。
Transformer 之所以如此成功,是因?yàn)樗軌驅(qū)W習(xí)句子中單詞之間的長(zhǎng)距離依賴(lài)關(guān)系,這對(duì)于許多自然語(yǔ)言處理(NLP)任務(wù)至關(guān)重要,因?yàn)樗试S模型理解單詞在句子中的上下文。Transformer 利用自注意力機(jī)制來(lái)實(shí)現(xiàn)這一點(diǎn),該機(jī)制使得模型在解碼輸出標(biāo)記時(shí)能夠聚焦于句子中最相關(guān)的單詞。
Transformer 對(duì) NLP 領(lǐng)域產(chǎn)生了重大影響。它現(xiàn)在被廣泛應(yīng)用于許多 NLP 任務(wù),并且不斷進(jìn)行改進(jìn)。未來(lái),Transformer 很可能被用于解決更廣泛的 NLP 任務(wù),并且它們將變得更加高效和強(qiáng)大。
有關(guān)神經(jīng)網(wǎng)絡(luò) Transformer 歷史上的一些關(guān)鍵發(fā)展事件,我們可參考如下所示:
- 1990年:Jürgen Schmidhuber 提出了第一個(gè) Transformer 模型,即"快速權(quán)重控制器"。
- 2017年:Vaswani 等人發(fā)表了論文《Attention is All You Need》,介紹了 Transformer 模型的核心思想。
- 2018年:Transformer 模型在各種 NLP 任務(wù)中取得了最先進(jìn)的結(jié)果,包括機(jī)器翻譯、文本摘要和問(wèn)答等。
- 2019年:Transformer 被用于創(chuàng)建大型語(yǔ)言模型(LLM),例如 BERT 和 GPT-2,這些模型在各種 NLP 任務(wù)中取得了重要突破。
- 2020年:Transformer 繼續(xù)被用于創(chuàng)建更強(qiáng)大的模型,例如 GPT-3,它在自然語(yǔ)言生成和理解方面取得了驚人的成果。
總的來(lái)說(shuō),Transformer 模型的引入對(duì)于 NLP 領(lǐng)域產(chǎn)生了革命性的影響。它的能力在于學(xué)習(xí)長(zhǎng)距離依賴(lài)關(guān)系并理解上下文,使得它成為眾多 NLP 任務(wù)的首選方法,并為未來(lái)的發(fā)展提供了廣闊的可能性。
三、Transformer 模型通用架構(gòu)設(shè)計(jì)
Transformer 架構(gòu)是從 RNN(循環(huán)神經(jīng)網(wǎng)絡(luò))的編碼器-解碼器架構(gòu)中汲取靈感而來(lái),其引入了注意力機(jī)制。它被廣泛應(yīng)用于序列到序列(seq2seq)任務(wù),并且相比于 RNN, Transformer 摒棄了順序處理的方式。
不同于 RNN,Transformer 以并行化的方式處理數(shù)據(jù),從而實(shí)現(xiàn)更大規(guī)模的并行計(jì)算和更快速的訓(xùn)練。這得益于 Transformer 架構(gòu)中的自注意力機(jī)制,它使得模型能夠同時(shí)考慮輸入序列中的所有位置,而無(wú)需按順序逐步處理。自注意力機(jī)制允許模型根據(jù)輸入序列中的不同位置之間的關(guān)系,對(duì)每個(gè)位置進(jìn)行加權(quán)處理,從而捕捉全局上下文信息。
class EncoderDecoder(nn.Module):
"""
A standard Encoder-Decoder architecture. Base for this and many
other models.
"""
def __init__(self, encoder, decoder, src_embed, tgt_embed, generator):
super(EncoderDecoder, self).__init__()
self.encoder = encoder
self.decoder = decoder
self.src_embed = src_embed
self.tgt_embed = tgt_embed
self.generator = generator
def forward(self, src, tgt, src_mask, tgt_mask):
"Take in and process masked src and target sequences."
return self.decode(self.encode(src, src_mask), src_mask,
tgt, tgt_mask)
def encode(self, src, src_mask):
return self.encoder(self.src_embed(src), src_mask)
def decode(self, memory, src_mask, tgt, tgt_mask):
return self.decoder(self.tgt_embed(tgt), memory, src_mask, tgt_mask)
class Generator(nn.Module):
"Define standard linear + softmax generation step."
def __init__(self, d_model, vocab):
super(Generator, self).__init__()
self.proj = nn.Linear(d_model, vocab)
def forward(self, x):
return F.log_softmax(self.proj(x), dim=-1)
針對(duì) Transformer 的模型通用架構(gòu),我們可參考如下所示:
基于如上的 Transformer 深度學(xué)習(xí)模型的整體架構(gòu)參考模型圖,我們可以看到:它由兩個(gè)主要組件組成:
1.編碼器堆棧
這是由 Nx 個(gè)相同的編碼器層組成的堆棧(在原始論文中,Nx=6)。每個(gè)編碼器層都由兩個(gè)子層組成:多頭自注意力機(jī)制和前饋神經(jīng)網(wǎng)絡(luò)。多頭自注意力機(jī)制用于對(duì)輸入序列中的不同位置之間的關(guān)系進(jìn)行建模,而前饋神經(jīng)網(wǎng)絡(luò)則用于對(duì)每個(gè)位置進(jìn)行非線(xiàn)性轉(zhuǎn)換。編碼器堆棧的作用是將輸入序列轉(zhuǎn)換為一系列高級(jí)特征表示。
Transformer 編碼器的整體架構(gòu)。我們?cè)?Transformer 編碼器中使用絕對(duì)位置嵌入,具體可參考如下:
2.解碼器堆棧
這也是由 Nx 個(gè)相同的解碼器層組成的堆棧(在原始論文中,Nx=6)。每個(gè)解碼器層除了包含編碼器層的兩個(gè)子層外,還包含一個(gè)額外的多頭自注意力機(jī)制子層。這個(gè)額外的自注意力機(jī)制用于對(duì)編碼器堆棧的輸出進(jìn)行關(guān)注,并幫助解碼器對(duì)輸入序列中的信息進(jìn)行解碼和生成輸出序列。
在編碼器和解碼器堆棧之間,還有一個(gè)位置編碼層。這個(gè)位置編碼層的作用是利用序列的順序信息,為輸入序列中的每個(gè)位置提供一個(gè)固定的編碼表示。這樣,模型可以在沒(méi)有遞歸或卷積操作的情況下,利用位置編碼層來(lái)處理序列的順序信息。
Transformer 解碼器的整體架構(gòu),具體可參考如下所示:
在實(shí)際的場(chǎng)景中,兩者的互動(dòng)關(guān)系如下:
四、什么是 Transformer 神經(jīng)網(wǎng)絡(luò)?
眾所周知,Transformer 在處理文本序列、基因組序列、聲音和時(shí)間序列數(shù)據(jù)等神經(jīng)網(wǎng)絡(luò)設(shè)計(jì)中起著關(guān)鍵作用。其中,自然語(yǔ)言處理是 Transformer 神經(jīng)網(wǎng)絡(luò)最常見(jiàn)的應(yīng)用領(lǐng)域。
當(dāng)給定一個(gè)向量序列時(shí),Transformer 神經(jīng)網(wǎng)絡(luò)會(huì)對(duì)這些向量進(jìn)行編碼,并將其解碼回原始形式。而 Transformer 的注意力機(jī)制則是其不可或缺的核心組成部分。注意力機(jī)制表明了在輸入序列中,對(duì)于給定標(biāo)記的編碼,其周?chē)渌麡?biāo)記的上下文信息的重要性。
打個(gè)比方,在機(jī)器翻譯模型中,注意力機(jī)制使得 Transformer 能夠根據(jù)所有相關(guān)單詞的上下文,將英語(yǔ)中的"it"正確翻譯為法語(yǔ)或西班牙語(yǔ)中的性別對(duì)應(yīng)的詞匯。 Transformers 能夠利用注意力機(jī)制來(lái)確定如何翻譯當(dāng)前單詞,同時(shí)考慮其周?chē)鷨卧~的影響。
然而,需要注意的是,Transformer 神經(jīng)網(wǎng)絡(luò)取代了早期的循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)、長(zhǎng)短期記憶(LSTM)和門(mén)控循環(huán)單元(GRU)等模型,成為了更為先進(jìn)和有效的選擇。
通常而言,Transformer 神經(jīng)網(wǎng)絡(luò)接受輸入句子并將其編碼為兩個(gè)不同的序列:
1.詞向量嵌入序列
詞向量嵌入是文本的數(shù)字表示形式。在這種情況下,神經(jīng)網(wǎng)絡(luò)只能處理轉(zhuǎn)換為嵌入表示的單詞。字典中的單詞在嵌入表示中表示為向量。
2.位置編碼器序列
位置編碼器將原始文本中單詞的位置表示為向量。Transformer 將詞向量嵌入和位置編碼結(jié)合起來(lái)。然后,它將組合結(jié)果發(fā)送到各個(gè)編碼器,然后是解碼器。
與 RNN 和 LSTM 按順序提供輸入不同,Transformer 同時(shí)提供輸入。每個(gè)編碼器將其輸入轉(zhuǎn)換為另一個(gè)向量序列,稱(chēng)為編碼。
解碼器以相反的順序工作。它將編碼轉(zhuǎn)換回概率,并根據(jù)概率生成輸出單詞。通過(guò)使用 softmax 函數(shù),Transformer 可以根據(jù)輸出概率生成句子。
每個(gè)解碼器和編碼器中都有一個(gè)稱(chēng)為注意力機(jī)制的組件。它允許一個(gè)輸入單詞使用其他單詞的相關(guān)信息進(jìn)行處理,同時(shí)屏蔽不包含相關(guān)信息的單詞。
為了充分利用 GPU 提供的并行計(jì)算能力,Transformer 使用多頭注意力機(jī)制進(jìn)行并行實(shí)現(xiàn)。多頭注意力機(jī)制允許同時(shí)處理多個(gè)注意力機(jī)制,從而提高計(jì)算效率。
相比于 LSTM 和 RNN,Transformer 深度學(xué)習(xí)模型的優(yōu)勢(shì)之一是能夠同時(shí)處理多個(gè)單詞。這得益于 Transformer 的并行計(jì)算能力,使得它能夠更高效地處理序列數(shù)據(jù)。
五、常見(jiàn)的 Transformer 模型
截止目前,Transformer 是構(gòu)建世界上大多數(shù)最先進(jìn)模型的主要架構(gòu)之一。它在各個(gè)領(lǐng)域取得了巨大成功,包括但不限于以下任務(wù):語(yǔ)音識(shí)別到文本轉(zhuǎn)換、機(jī)器翻譯、文本生成、釋義、問(wèn)答和情感分析。這些任務(wù)中涌現(xiàn)出了一些最優(yōu)秀和最著名的模型。
基于 Transformer 的模型體系圖
1.BERT(雙向編碼器表示的 Transformer )
作為一種由 Google 設(shè)計(jì)的技術(shù),針對(duì)自然語(yǔ)言處理而開(kāi)發(fā),基于預(yù)訓(xùn)練的 Transformer 模型,當(dāng)前被廣泛應(yīng)用于各種 NLP 任務(wù)中。
在此項(xiàng)技術(shù)中,雙向編碼器表示轉(zhuǎn)化為了自然語(yǔ)言處理的重要里程碑。通過(guò)預(yù)訓(xùn)練的 Transformer 模型,雙向編碼器表示(BERT)在自然語(yǔ)言理解任務(wù)中取得了顯著的突破。BERT 的意義如此重大,以至于在 2020 年,幾乎每個(gè)英語(yǔ)查詢(xún)?cè)?Google 搜索引擎中都采用了 BERT 技術(shù)。
BERT 的核心思想是通過(guò)在大規(guī)模無(wú)標(biāo)簽的文本數(shù)據(jù)上進(jìn)行預(yù)訓(xùn)練,使模型學(xué)習(xí)到豐富的語(yǔ)言表示。BERT 模型具備雙向性,能夠同時(shí)考慮一個(gè)詞在上下文中的左側(cè)和右側(cè)信息,從而更好地捕捉詞語(yǔ)的語(yǔ)義和語(yǔ)境。
BERT 的成功標(biāo)志著 Transformer 架構(gòu)在 NLP 領(lǐng)域的重要地位,并在實(shí)際應(yīng)用中取得了巨大的影響。它為自然語(yǔ)言處理領(lǐng)域帶來(lái)了重大的進(jìn)步,并為搜索引擎等應(yīng)用提供了更準(zhǔn)確、更智能的語(yǔ)義理解。
2.GPT-2 / GPT-3(生成預(yù)訓(xùn)練語(yǔ)言模型)
生成式預(yù)訓(xùn)練 Transformer 2和3分別代表了最先進(jìn)的自然語(yǔ)言處理模型。其中,GPT(Generative Pre-trained Transformer)是一種開(kāi)源的 AI 模型,專(zhuān)注于處理自然語(yǔ)言處理(NLP)相關(guān)任務(wù),如機(jī)器翻譯、問(wèn)答、文本摘要等。
上述兩個(gè)模型的最顯著區(qū)別在于“規(guī)?!焙汀肮δ堋?。具體而言,GPT-3 是最新的模型,相比于 GPT-2,其引入了許多新的功能和改進(jìn)。除此之外,GPT-3 的模型容量達(dá)到了驚人的 1750 億個(gè)機(jī)器學(xué)習(xí)參數(shù),而 GPT-2 只有 15 億個(gè)參數(shù)。
具備如此巨大的參數(shù)容量,GPT-3 在自然語(yǔ)言處理任務(wù)中展現(xiàn)出了令人驚嘆的性能。它具備更強(qiáng)大的語(yǔ)言理解和生成能力,能夠更準(zhǔn)確地理解和生成自然語(yǔ)言文本。此外,GPT-3 在生成文本方面尤為出色,能夠生成連貫、富有邏輯的文章、對(duì)話(huà)和故事。
GPT-3 的性能提升得益于其龐大的參數(shù)規(guī)模和更先進(jìn)的架構(gòu)設(shè)計(jì)。它通過(guò)在大規(guī)模文本數(shù)據(jù)上進(jìn)行預(yù)訓(xùn)練,使得模型能夠?qū)W習(xí)到更深入、更全面的語(yǔ)言知識(shí),從而使得 GPT-3 能夠成為目前最強(qiáng)大、最先進(jìn)的生成式預(yù)訓(xùn)練 Transformer 模型之一。
當(dāng)然,除了上面的 2 個(gè)核心模型外,T5、BART 和 XLNet 也是 Transformer(Vaswani 等人,2017)家族的成員。這些模型利用 Transformer 的編碼器、解碼器或兩者來(lái)進(jìn)行語(yǔ)言理解或文本生成。由于篇幅原因,暫不在本篇博文中贅述。
六、Transformer 模型并不是完美的
與基于 RNN 的 seq2seq 模型相比,盡管 Transformer 模型在自然語(yǔ)言處理領(lǐng)域取得了巨大的成功,然而,其本身也存在一些局限性,主要包括以下幾個(gè)方面:
1.高計(jì)算資源需求
Transformer 模型通常需要大量的計(jì)算資源進(jìn)行訓(xùn)練和推理。由于模型參數(shù)眾多且復(fù)雜,需要顯著的計(jì)算能力和存儲(chǔ)資源來(lái)支持其運(yùn)行,從而使得在資源受限的環(huán)境下應(yīng)用 Transformer 模型變得相對(duì)困難。
2.長(zhǎng)文本處理困難
在某些特定的場(chǎng)景下,由于 Transformer 模型中自注意力機(jī)制的特性,其對(duì)于長(zhǎng)文本的處理存在一定的困難。隨著文本長(zhǎng)度的增加,模型的計(jì)算復(fù)雜度和存儲(chǔ)需求也會(huì)顯著增加。因此,對(duì)于超長(zhǎng)文本的處理,Transformer 模型可能會(huì)面臨性能下降或無(wú)法處理的問(wèn)題。
3.缺乏實(shí)際推理機(jī)制
在實(shí)際的業(yè)務(wù)場(chǎng)景中,Transformer 模型通常是通過(guò)在大規(guī)模數(shù)據(jù)上進(jìn)行預(yù)訓(xùn)練,然后在特定任務(wù)上進(jìn)行微調(diào)來(lái)實(shí)現(xiàn)高性能,從而使得模型在實(shí)際推理過(guò)程中對(duì)于新領(lǐng)域或特定任務(wù)的適應(yīng)性有限。因此,對(duì)于新領(lǐng)域或特定任務(wù),我們往往需要進(jìn)行額外的訓(xùn)練或調(diào)整,以提高模型的性能。
4.對(duì)訓(xùn)練數(shù)據(jù)的依賴(lài)性
Transformer 模型在預(yù)訓(xùn)練階段需要大量的無(wú)標(biāo)簽數(shù)據(jù)進(jìn)行訓(xùn)練,這使得對(duì)于資源受限或特定領(lǐng)域數(shù)據(jù)稀缺的情況下應(yīng)用 Transformer 模型變得困難。此外,模型對(duì)于訓(xùn)練數(shù)據(jù)的質(zhì)量和多樣性也有一定的依賴(lài)性,不同質(zhì)量和領(lǐng)域的數(shù)據(jù)可能會(huì)對(duì)模型的性能產(chǎn)生影響。
5.缺乏常識(shí)推理和推理能力
盡管 Transformer 模型在語(yǔ)言生成和理解任務(wù)上取得了顯著進(jìn)展,但其在常識(shí)推理和推理能力方面仍存在一定的局限性。模型在處理復(fù)雜推理、邏輯推斷和抽象推理等任務(wù)時(shí)可能表現(xiàn)不佳,需要進(jìn)一步的研究和改進(jìn)。
盡管存在這些局限性,Transformer 模型仍然是當(dāng)前最成功和最先進(jìn)的自然語(yǔ)言處理模型之一,為許多 NLP 任務(wù)提供了強(qiáng)大的解決方案。未來(lái)的研究和發(fā)展努力將有助于克服這些局限性,并推進(jìn)自然語(yǔ)言處理領(lǐng)域的進(jìn)一步發(fā)展。