一文看懂AI的 Transformer 架構!

公众号-JavaEdge發表於2024-07-22

1 AI的轉換器是啥?

轉換器,一種將輸入序列轉換或更改為輸出序列的神經網路架構。它們透過學習上下文和跟蹤序列元件之間的關係來做到這一點。例如,請考慮以下輸入序列:“天空是什麼顏色的?” 轉換器模型會使用內部數學表示法來識別顏色、天空和藍色這三個詞之間的相關性和關係。利用這些知識,它會生成輸出:“天空是藍色的。”

組織可以使用轉換器模型進行所有型別的序列轉換,包括語音識別、機器翻譯以及蛋白質序列分析。

神經網路

AI

2 為啥轉換器重要?

早期深度學習模型主要側重自然語言處理(NLP)任務,旨在讓計算機理解和響應自然人類語言。它們根據前一個單詞按順序猜出下一個單詞。

為更好理解,考慮手機中的自動完成功能。根據鍵入單詞對的頻率提出建議。如經常鍵入“我很好”,在鍵入之後,手機會自動提示

早期機器學習(ML)模型在更廣泛的範圍內應用類似技術。它們繪製訓練資料集中不同單詞對或單片語之間的關係頻率,並試圖猜出下一個單詞。然而,早期技術無法保留超過一定輸入長度上下文。如早期的 ML 模型無法生成有意義段落,因為它無法保留段落中第一句話和最後一句話之間的上下文。要生成諸如“我來自義大利。我喜歡騎馬。我會說義大利語。”等輸出,模型需記住義大利和義大利語之間聯絡,而早期神經網路根本做不到。

轉換器模型從根本改變 NLP 技術,使模型能處理文字中的這種長期依賴關係。

轉換器的更多好處。

2.1 啟用大規模模型

轉換器透過平行計算處理整個長序列,這大大減少了訓練和處理時間。這使得訓練可以學習複雜語言表示的超大型語言模型(LLM)(例如 GPT 和 BERT)成為可能。它們擁有數十億個引數,可以捕獲各種人類語言和知識,並且它們正在推動研究朝著更具通用性的 AI 系統發展。

大型語言模型

GPT

2.2 實現更快的自定義

使用轉換器模型,可用RAG技術。這些技術支援為行業組織特定的應用程式自定義現有模型。模型可在大型資料集上進行預訓練,然後在較小的特定於任務的資料集上進行微調。這種方法使複雜模型的使用大眾化,並消除了從頭開始訓練大型模型時的資源限制。模型可以在多個領域和不同使用案例的任務中表現良好。

2.3 促進多模態 AI 系統

藉助轉換器,可將 AI 用於組合複雜資料集的任務。如DALL-E這樣的模型表明,轉換器可結合 NLP 和計算機視覺,根據文字描述生成影像。藉助轉換器,可建立整合不同資訊型別並更緊密地模仿人類的理解和創造力的 AI 應用程式。

計算機視覺

2.4 人工智慧研究和行業創新

轉換器創造新一代 AI 技術和 AI 研究,突破 ML 可能性的界限。它們的成功激發瞭解決創新問題的新架構和應用程式。它們使機器能夠理解和生成人類語言,從而開發出增強客戶體驗和創造新商機的應用程式。

3 轉換器使用案例?

可用任何順序資料(例如人類語言、音樂創作、程式語言等)訓練大型轉換器模型。

3.1 自然語言處理

轉換器使機器能夠以比以往任何時候都更準確的方式理解、解釋和生成人類語言。它們可以總結大型文件,併為各種使用案例生成連貫且與上下文相關的文字。像 Alexa 這樣的虛擬助手使用轉換器技術來理解和響應語音命令。

3.2 機器翻譯

翻譯應用程式使用轉換器在不同語言之間提供實時、準確的翻譯。與以前的技術相比,轉換器極大地提高了翻譯的流暢性和準確性。

機器翻譯

3.3 DNA 序列分析

透過將 DNA 片段視為類似於語言的序列,轉換器可以預測基因突變的影響,瞭解遺傳模式,並幫助識別導致某些疾病的 DNA 區域。這種能力對於個性化醫學至關重要,在個性化醫學中,瞭解個體的基因組成可以帶來更有效的治療。

3.4 蛋白質結構分析

轉換器模型可處理順序資料,這使其非常適合對摺疊成複雜蛋白質結構的長鏈氨基酸進行建模。瞭解蛋白質結構對於藥物發現和理解生物過程至關重要。您還可以在基於氨基酸序列預測蛋白質三維結構的應用程式中使用轉換器。

4 轉換器的工作原理

自 21 世紀初,神經網路一直是各種人工智慧任務(如影像識別和 NLP)的主導方法。它們由層互連的計算節點或神經元組成,這些節點或神經元模仿人腦並協同工作以解決複雜的問題。

處理資料序列的傳統神經網路通常使用編碼器/解碼器架構模式:

  • 編碼器讀取和處理整個輸入資料序列,如英語句子,並將其轉換為緊湊的數學表示形式。這種表示形式是捕獲輸入本質的摘要
  • 然後,解碼器獲取此摘要並逐步生成輸出序列,該序列可以是翻譯成法語的相同句子

這過程是按序進行,即它必須一個接一個地處理每個單詞或資料的一部分。這個過程很慢,在很長的距離上可能會丟失一些更精細的細節。

4.1 自注意力機制

轉換器模型透過整合所謂的自注意力機制來修改這一過程。該機制不是按順序處理資料,而是使模型能同時檢視序列的不同部分,並確定哪些部分最重要。

想象在一個繁忙嘈雜房間,試圖聽清別人說話。大腦會自動專注於他們聲音,同時抑制不太重要噪音。自注意力使模型能夠做類似的事情:它更關注相關資訊位,並將它們結合起來,做出更好的輸出預測。這種機制提高了轉換器的效率,使它們能夠在更大的資料集上接受訓練。它也更有效,尤其是在處理長文字片段時,很久以前的上下文可能會影響接下來的內容的含義。

5 轉換器架構由哪些元件組成?

轉換器神經網路架構具有多個軟體層,協同工作以生成最終輸出。轉換體系結構的元件:

編碼器(左邊)和解碼器(右邊):

編碼器(Encoder)

  1. 輸入嵌入(Input Embedding):將輸入的詞嵌到一個高維向量空間中,這樣每個詞都表示為一個向量

  2. 位置編碼(Positional Encoding):由於Transformer模型沒有像RNN那樣的時間序列資訊,需要加入位置編碼來提供詞語在句子中的位置資訊。位置編碼和輸入嵌入相加後作為編碼器的輸入。

  3. 多頭自注意力機制(Multi-Head Self-Attention)

    • 自注意力機制(Self-Attention):計算輸入序列中每個詞與其他詞之間的注意力得分。透過注意力得分,模型可捕捉到詞與詞之間的依賴關係
    • 多頭機制(Multi-Head):透過多個注意力頭(Head)來捕捉不同的注意力模式。每個頭獨立計算注意力,最後將它們的輸出拼接
  4. 加和規範化(Add & Norm):每個多頭自注意力和前饋神經網路的輸出都會和輸入進行相加,然後進行層規範化(Layer Normalization)

  5. 前饋神經網路(Feed Forward):一個包含兩個線性變換和一個啟用函式的全連線層。這個層對每個位置的輸入獨立進行處理

解碼器(Decoder)

  1. 輸出嵌入(Output Embedding):將目標序列的詞嵌入到一個高維向量空間中

  2. 位置編碼(Positional Encoding):與編碼器的相同,將位置編碼和輸出嵌入相加後作為解碼器的輸入

  3. 遮掩多頭自注意力機制(Masked Multi-Head Self-Attention):在解碼器中,對自注意力機制進行遮掩處理,以確保預測下一個詞時不能看到未來的詞。這是透過遮掩矩陣實現的

  4. 多頭注意力機制(Multi-Head Attention):解碼器的每個層還有一個額外的多頭注意力層,它對編碼器的輸出進行注意力計算。這允許解碼器在生成詞語時參考輸入序列的資訊

  5. 加和規範化(Add & Norm):與編碼器的相同

  6. 前饋神經網路(Feed Forward):與編碼器的相同

最終輸出

  1. 線性層(Linear):將解碼器的輸出對映到詞彙表大小的向量

  2. Softmax:將線性層的輸出透過Softmax變換為機率分佈,表示生成每個詞的機率

總結

Transformer模型透過多層堆疊的編碼器和解碼器結構實現了高效的序列到序列的轉換。在編碼器中,透過多頭自注意力機制捕捉輸入序列中詞與詞之間的關係;在解碼器中,透過遮掩多頭自注意力機制和多頭注意力機制實現生成目標序列時的依賴關係。最終透過線性層和Softmax層生成詞的機率分佈。

這個架構的優點在於它可以並行處理輸入資料,避免了RNN中序列處理的時間複雜度,同時透過多頭注意力機制捕捉了豐富的上下文資訊。

5.1 輸入嵌入

此階段將輸入序列轉換為軟體演算法可以理解的數學域:

  • 首先,輸入序列分解為一系列標記或單個序列元件。如輸入是個句子,則標記就是單詞
  • 然後,嵌入將標記序列轉換為數學向量序列。向量攜帶語義和語法資訊,以數字表示,其屬性是在訓練過程中學習的

可將向量視覺化為 n 維空間中的一系列座標。如一個二維圖表,其中 x 代表單詞第一個字母的字母數字值,y 代表它們的類別。香蕉一詞的值為 (2,2),因為它以字母 b 開頭,屬於水果類別。芒果一詞的值為 (13,2),因為它以字母 m 開頭,也屬於水果類別這樣,向量 (x, y) 告訴神經網路,香蕉芒果這兩個詞屬於同一類別。

想象一個 n 維空間,其中包含數千個屬性,這些屬性涉及對映到一系列數字的句子中的任何單詞的語法、含義和用法。軟體可以使用這些數字來計算數學術語中單詞之間的關係,並理解人類語言模型。嵌入提供了一種將離散標記表示為連續向量的方法,模型可以處理和學習這些向量。

5.2 位置編碼

模型本身並不按順序處理順序資料。轉換器要一種方法來考慮輸入序列中標記的順序。

位置編碼向每個標記的嵌入中新增資訊,以指示其在序列中的位置。這通常是透過使用一組函式來完成的,這些函式生成一個唯一的位置訊號,並將其新增到每個標記的嵌入中。透過位置編碼,模型可以保留標記的順序並理解序列上下文。

5.3 轉換器資料塊

典型的轉換器模型將多個轉換器資料塊堆疊在一起。每個轉換器模組都有兩個主要元件:多頭自注意力機制和位置前饋神經網路。自注意力機制使模型能夠權衡序列中不同標記的重要性。在進行預測時,它側重於輸入的相關部分。

如以“不要說謊”和“他躺下”這兩句話為例。**“在這兩句話中,如果不看旁邊的單詞,就無法理解這個詞的含義。“”和“”這兩個詞對於理解正確的含義至關重要。自注意力可以根據上下文對相關標記進行分組。

前饋層具有其他元件,可幫助轉換器模型更有效地訓練和執行。例如,每個轉換器模組包括:

  • 圍繞兩個主要元件的連線,就像快捷方式。它們使資訊能夠從網路的一部分流向另一部分,從而跳過兩者之間的某些操作
  • 層歸一化將數字(特別是網路中不同層的輸出)保持在一定範圍內,以便模型平穩訓練
  • 線性變換函式使模型能夠調整值,以更好地執行正在訓練的任務,例如文件摘要,而不是翻譯

5.4 線性資料塊和 Softmax 資料塊

最終,模型需要做出具體預測,如選擇序列中的下一個單詞。這就是線性資料塊的用處。它是最後階段之前的另一個全連線層,也稱為密集層。它執行從向量空間到原始輸入域的學習線性對映。在這個關鍵層,模型的決策部分採用複雜的內部表示形式,然後將其轉化為可以解釋和使用的特定預測。該層的輸出是每個可能的標記的一組分數(通常稱為對數)。

Softmax 函式是獲取對數分數並將其歸一化為機率分佈的最後階段。Softmax 輸出的每個元素都表示模型對特定類或標記的置信度。

6 轉換器與其他神經網路架構有何不同?

迴圈神經網路 (RNN) 和卷積神經網路 (CNN) 是機器學習和深度學習任務中經常使用的其他神經網路。以下內容探討了它們與轉換器的關係。

6.1 轉換器與RNN

轉換器模型和 RNN 都是用於處理順序資料的架構。

RNN 在迴圈迭代中一次處理一個元素的資料序列。該過程從輸入層接收序列的第一個元素開始。然後將資訊傳遞到隱藏層,該隱藏層處理輸入並將輸出傳遞到下一個時間步驟。此輸出與序列的下一個元素相結合,將反饋到隱藏層。該迴圈對序列中的每個元素重複執行,RNN 保持一個隱藏的狀態向量,該向量會在每個時間步驟進行更新。此過程有效地使 RNN 能夠記住過去輸入的資訊。

相比之下,轉換器同時處理整個序列。與 RNN 相比,這種並行化可以縮短訓練時間,並且能夠處理更長的序列。轉換器中的自注意力機制還使模型能夠同時考慮整個資料序列。這樣就無需復發或隱藏向量。相反,位置編碼會維護有關序列中每個元素位置的資訊。

許多應用中尤其NLP任務,轉換器很大程度取代 RNN,因為它們可更有效處理長期依賴關係。還具有比 RNN 更高的可擴充套件性和效率。RNN 在某些情況下仍然有用,尤其是在模型大小和計算效率比捕獲長距離互動更重要的情況下。

6.2 轉換器與CNN

CNN 專為網格類資料(例如影像)而設計,其中空間層次結構和位置是關鍵。它們使用卷積層對輸入應用篩選條件,透過這些篩選後的檢視捕獲區域性圖案。例如,在影像處理中,初始層可以檢測邊緣或紋理,而更深層可以識別更復雜的結構,例如形狀或物件。

轉換器主要設計用於處理順序資料,無法處理影像。視覺轉換器模型現在正在透過將影像轉換為順序格式來處理影像。但對許多實際的計算機視覺應用,CNN 仍是有效和高效選擇。

7 轉換器模型有哪些不同型別?

轉換器已經發展成為一個多樣化的架構系列。

一些型別的轉換器模型。

7.1 雙向轉換器

基於轉換器的雙向編碼器表示形式(BERT)修改了基本架構,以處理與句子中所有其他單詞相關的單詞,而不是孤立地處理單詞。從技術上講,它採用了一種稱為雙向掩碼語言模型(MLM)的機制。在預訓練期間,BERT 會隨機遮蔽一定比例的輸入標記,並根據其上下文預測這些被遮蔽的標記。雙向方面源於這樣一個事實,即 BERT 同時考慮了兩層中從左到右和從右到左的標記序列,以便更好地理解。

7.2 生成式預訓練轉換器

GPT 模型使用堆疊轉換器解碼器,這些解碼器使用語言建模目標在大型文字語料庫上進行預訓練。它們是自迴歸的,即它們會根據所有先前的值迴歸或預測序列中的下一個值。

透過超過 1750 億個引數,GPT 模型可生成根據風格和語氣進行調整的文字序列。GPT 模型引發了人工智慧對實現通用人工智慧的研究。這意味著組織可以在重塑其應用程式和客戶體驗的同時達到新的生產力水平。

7.3 雙向和自迴歸轉換器

雙向和自迴歸轉換器 (BART) 是一種結合了雙向和自迴歸屬性的變壓器模型。它就像是 BERT 的雙向編碼器和 GPT 的自迴歸解碼器的混合體。它一次讀取整個輸入序列,並且像 BERT 一樣是雙向的。但是,它每次生成一個標記的輸出序列,以先前生成的標記和編碼器提供的輸入為條件。

7.4 用於多模態任務的轉換器

ViLBERT 和 VisualBERT 等多模態轉換器模型旨在處理多種型別的輸入資料,通常是文字和影像。它們透過使用雙流網路來擴充套件轉換器架構,這些網路在融合資訊之前分別處理視覺和文字輸入。這種設計使模型能夠學習跨模態表示。例如,ViLBERT 使用協同注意力轉換器層來實現單獨的流互動。這對於理解文字和影像之間的關係至關重要,例如視覺問答任務。

7.5 視覺轉換器

視覺變換器 (ViT) 將變換器結構重新用於影像分類任務。它們不是將影像處理為畫素網格,而是將影像資料視為一系列固定大小的補丁,類似於句子中單詞的處理方式。每個補丁都經過展平、線性嵌入,然後由標準轉換器編碼器按順序處理。新增位置嵌入是為了維護空間資訊。這種全域性自注意力的使用使模型能夠捕獲任何一對補丁之間的關係,無論它們的位置如何。

關注我,緊跟本系列專欄文章,咱們下篇再續!

作者簡介:魔都架構師,多家大廠後端一線研發經驗,在分散式系統設計、資料平臺架構和AI應用開發等領域都有豐富實踐經驗。

各大技術社群頭部專家博主。具有豐富的引領團隊經驗,深厚業務架構和解決方案的積累。

負責:

  • 中央/分銷預訂系統效能最佳化
  • 活動&券等營銷中臺建設
  • 交易平臺及資料中臺等架構和開發設計
  • 車聯網核心平臺-物聯網連線平臺、大資料平臺架構設計及最佳化
  • LLM Agent應用開發
  • 區塊鏈應用開發

目前主攻市級軟體專案設計、構建服務全社會的應用系統。

參考:

  • 程式設計嚴選網

本文由部落格一文多發平臺 OpenWrite 釋出!

相關文章