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