當前位置: 妍妍網 > 碼農

圖解Transformer架構設計

2024-03-26碼農

架構師(JiaGouX)

我們都是架構師!
架構未來,你來不來?

近年來,Transformer 技術在自然語言處理(NLP)領域引起了巨大關註。 Transformer 是一種利用註意力機制(Attention)極大提升深度學習 NLP 轉譯模型效能的新型架構。 它首次出現在【Attention is all you need】這篇論文中,迅速成為了文本數據處理的主流架構。

自此以後,谷歌的 BERT 和 OpenAI 的 GPT 系列等眾多計畫,都基於這一架構構建,表現遠超現有的最先進技術。

在接下來的系列文章中,我將深入淺出地講解 Transformer 的基本原理、架構設計及其內部運作機制。我們會逐步揭示 Transformer 的核心功能。在後續的文章裏,我們還將深入剖析系統的執行細節,特別是多頭註意力(multi-head attention)機制 ——Transformer 的關鍵所在。

本文是這個系列文章的第一篇,主要介紹 Transformer 的使用方法,為何優於 RNN,同時介紹了其架構組成以及在訓練和推理期間的行為特點。


什麽是 Transformer?

Transformer 架構特別擅長處理順序性強的文本數據。簡單來說,它可以將一段 文本作為輸入,並輸出另一段文本,比如將英語句子轉譯成西班牙語。

Transformer 的核心由多個編碼層(Encoder)和解碼層(Decoder)構成。這裏,我們將單個層稱為編碼器或解碼器,而一組這樣的層則稱為編碼器組或解碼器組。

編碼器組和解碼器組各有其對應的嵌入層(Embedding layers),處理各自的輸入數據。最終,透過一個輸出層生成最後的結果。

所有的編碼器結構相同,解碼器也是如此。

編碼器包含一個關鍵的自註意力層,用來計算文本序列中不同單詞間的聯系,還有一個前饋層。而解碼器則包括自註意力層、前饋層以及額外的編碼器 - 解碼器註意力層。每個編碼器和解碼器都有自己的權重集合。

編碼器是可復用的模組,是定義 Transformer 架構的核心部份。除了上述兩層,它還包括圍繞這些層的殘留誤差跳躍連線和兩個 LayerNorm 層。

Transformer 有許多不同的變體,其中一些變體甚至沒有解碼器,完全依賴編碼器來工作。

註意力機制的作用是什麽?

Transformer 的強大效能源於其使用的註意力機制。

這種機制允許模型在處理某個單詞時,同時關註輸入中與該單詞緊密相關的其他單詞。

例如,單詞 「Ball」 與 「blue」 和 「holding」 緊密相關,而與 「boy」 無關。

Transformer 透過自註意力機制,將輸入序列中的每個單詞與其他所有單詞聯系起來。

舉個例子:

  1. The cat drank the milk because it was hungry.

  2. The cat drank the milk because it was sweet.

在第一句中,「it」 指代的是 「cat」,而在第二句中,「it」 指的是 「milk」。當模型處理 「it」 這個詞時,自註意力機制提供了更多關於它的含義資訊,從而幫助模型準確地將 「it」 與相關聯的單詞對應起來。

為了更細致地處理句子的意圖和語意,Transformer 對每個單詞賦予了多重註意力得分。

比如,在處理 「it」 時,第一個得分會突出 「cat」,第二個得分則突出 「hungry」。因此,當它把 「it」 轉譯成另一種語言時,會把 「cat」 和 「hungry」 的某些元素融入到轉譯中。



訓練 Transformer

在訓練和推理階段,Transformer 的運作略有不同。

首先看訓練階段的數據流程。訓練數據分為兩部份:

  • 源序列或輸入序列(如轉譯問題中的英文 「You are welcome」)

  • 目標序列或目標序列(如西班牙語的 「De nada」)

  • Transformer 的目標是學習如何根據輸入序列和目標序列來生成目標序列。

    Transformer 的處理過程如下:

    1. 將輸入序列轉換成嵌入式表示(含位置編碼)並送入編碼器。

    2. 編碼器組處理這些數據,生成輸入序列的編碼表示。

    3. 將目標序列加上句首標記,轉換成嵌入式表示(含位置編碼)並送入解碼器。

    4. 解碼器組在處理這些數據的同時,結合編碼器組生成的編碼表示來生成目標序列的編碼表示。

    5. 輸出層將其轉換成單詞機率和最終的輸出序列。

    6. Transformer 的損失函式將這個輸出序列與訓練數據中的目標序列進行比較,這個損失用於在反向傳播過程中訓練 Transformer。


    推理

    在推理階段,我們只有輸入序列,而沒有目標序列作為解碼器的輸入。Transformer 的目標是僅從輸入序列生成目標序列。

    因此,就像在序列到序列(Seq2Seq)模型中一樣,我們在一個迴圈中生成輸出,並把每個時間步的輸出序列整體輸入到下一個時間步的解碼器中,直至出現句子結束標記。

    與 Seq2Seq 模型的不同之處在於,我們每次不是只輸入上一步的單詞,而是重新輸入到目前為止生成的整個序列。

    在推理過程中,數據流動如下:

    1、將輸入序列轉換成嵌入式表示(含位置編碼)並送入編碼器。

    2、編碼器組處理這些數據,生成輸入序列的編碼表示。

    3、此時不使用目標序列,而是用一個只含有句首標記的空序列。將其轉換成嵌入式表示(含位置編碼)並送入解碼器。

    4、解碼器組結合編碼器組的編碼表示處理這些數據,生成目標序列的編碼表示。

    5、輸出層將其轉換成單詞機率,並生成輸出序列。

    6、我們選取輸出序列的最後一個單詞作為預測詞。然後,將這個單詞填入解碼器輸入序列的第二個位置,這個序列現包含一個句首標記和第一個單詞。

    7、返回步驟 3,重復以上操作,每次將新生成的單詞添加到解碼器序列中,直至預測出句子結束標記。值得註意的是,由於每次叠代編碼器序列不變,我們無需重復前兩步(感謝 Michal Kučírka 的指出)。


    教師強制法

    在訓練過程中,將目標序列輸入解碼器的方法稱為教師強制法。那麽,為什麽要 采用這種方法,這個術語是什麽意思呢?

    在訓練期間,雖然我們可以采用與推理時相同的方法 —— 即迴圈執行 Transformer,逐步生成並處理輸出序列的每一個單詞,但這樣做會讓訓練過程變得更長,且難度增加。因為模型需要根據之前可能預測錯誤的單詞來預測接下來的單詞。

    相反,透過將目標序列直接輸入到解碼器,我們實際上是在給模型提供一個線索,就像教師指導學生那樣。即便模型在開始時預測錯誤,它也可以依據正確的目標單詞來調整接下來的預測,從而避免錯誤的累積。

    此外,Transformer 可以同時並列地輸出所有單詞,而無需透過迴圈逐個處理,這大大加快了訓練速度。


    Transformer 有哪些套用?

    Transformer 在自然語言處理(NLP)領域中套用廣泛,涵蓋了語言模型、文 本分類等多種任務。它們常用於機器轉譯、文本摘要、問答、命名實體辨識和語音辨識等序列到序列模型的套用場景。

    針對不同問題,Transformer 有多種變體。基本的編碼器層作為這些架構的共同基石,根據不同套用需求,配備有特定的 「頭部」 模組。

    Transformer 分類架構

    例如,在情感分析的套用中,Transformer 接收文字檔案作為輸入。其分類 「頭部」 模組處理 Transformer 的輸出,進而預測類別標簽,如判斷文本表達的是積極還是消極情感。

    Transformer 語言模型架構

    語言模型架構采用輸入序列的起始部份,例如一段文本,作為輸入,透過預測接下來的句子來生成新文本。語言模型的頭部模組接收 Transformer 的輸出,並為詞匯表中的每個單詞計算一個機率。機率最高的單詞被選為下一單詞的預測輸出。


    為什麽優於 RNN?

    在 Transformer 問世並取代它們之前,RNN 及其衍生版本 LSTM 和 GRU 一 直是自然語言處理套用的標準架構。

    基於 RNN 的序列到序列模型表現不錯,註意力機制最初被引入時,就是為了增強它們的效能。

    但是,它們存在兩個主要限制:

  • 難以處理長句中相隔較遠的單詞之間的長距離依賴性。

  • 它們逐字處理輸入序列,無法在完成前一個時間步的計算之前進行下一個時間步的計算。這使得訓練和推理速度變慢。

  • 另一方面,盡管 CNN 的所有輸出都可以平行計算,從而使得摺積運算速度更快,但它們在處理長距離依賴性方面也存在限制:

  • 在摺積層中,只有在內核大小範圍內的影像部份(或套用於文本數據時的單詞)可以交互作用。對於更遠的元素,需要透過多層深度網路才能相互影響。

  • Transformer 架構解決了這些問題。它完全放棄了 RNN,完全依賴於註意力機制的優勢。

  • 它們能夠並列處理序列中的所有單詞,從而極大地提高了計算速度。

  • 輸入序列中單詞之間的距離不再重要。無論是相鄰單詞還是相隔較遠的單詞,Transformer 都能很好地計算它們之間的依賴性。

  • 現在我們已經對 Transformer 有了一個總體的了解,下一篇文章將深入探討它的內部功能,了解它的工作細節。

    現在大模型都是基於 Tra nsformer 構建的,要了解大模型必須要了解 Tra nsformer 歡迎 進入微信群一起學習 Tra nsformer

    如喜歡本文,請點選右上角,把文章分享到朋友圈
    如有想了解學習的技術點,請留言給若飛安排分享

    因公眾號更改推播規則,請點「在看」並加「星標」 第一時間獲取精彩技術分享

    ·END·

    相關閱讀:

    來源:AI大模型實驗室

    原文:https://towardsdatascience.com/transformers-explained-visually-part-1-overview-of-functionality-95a6dd460452

    版權申明:內容來源網路,僅供學習研究,版權歸原創者所有。如有侵權煩請告知,我們會立即刪除並表示歉意。謝謝!

    架構師

    我們都是架構師!

    關註 架構師(JiaGouX),添加「星標」

    獲取每天技術幹貨,一起成為牛逼架構師

    技術群請 加若飛: 1321113940 進架構師群

    投稿、合作、版權等信箱: [email protected]