天天看點

大型語言模型和 Transformer 架構:基礎知識

作者:順發AI
大型語言模型和 Transformer 架構:基礎知識

一、概述

讓我們從生成式 AI 世界中的一些基本概念開始。

大型語言模型和 Transformer 架構:基礎知識

來源:解鎖創成式 AI 模型和系統(如 GPT-4 和 ChatGPT)的力量,用于高等教育 學生和講師指南 解鎖創成式 AI 模型和系統(如 GPT-4 和 ChatGPT)的力量 面向高等教育 學生和講師指南

1. 生成式人工智能

生成式人工智能是人工智能的一個分支,主要專注于生成新内容。雖然傳統的機器學習模型被訓練來識别模式、做出預測或對資訊進行分類,但生成式人工智能完全是關于創造的(是以被稱為“生成”)。内容類型可以是圖像、音樂,或者對我們的讨論來說很重要的文本。在機器學習的廣闊領域中,将生成式 AI 視為專注于根據其訓練輸出新的原創内容的細分市場。

2. 語言模型

簡而言之,語言模型 (LM) 是一種經過訓練來了解和生成人類語言的 AI 模型。通過處理大量文本資料,它可以學習文法、詞彙、上下文和細微差别,進而能夠根據給定的提示生成相關文本。例如,它可以幫助自動完成句子,生成對問題的回答,甚至撰寫文章。

3. 大語言模型

大型語言模型 (LLM) 本質上是标準語言模型的增強版本。他們接受了更大規模的訓練,處理了更多樣化和更廣泛的資料集。由于這種廣泛的教育訓練,他們可以更深入地了解上下文,生成更連貫的文本,并處理更廣泛的語言任務。這一類别中值得注意的例子包括OpenAI的GPT-3和GPT-4。

4. 生成式人工智能和大型語言模型

生成式人工智能與LLM有何關系?從本質上講,LLM是生成AI的一個子集。如前所述,它們隻是專門的模型,隻關注文本,生成可以模仿人類編寫内容的句子和段落。當我們在制作書面内容的背景下談論生成人工智能時,我們經常指的是這些語言模型。

5. 基礎模型

從本質上講,基礎模式就像我們生命早期接受的通識教育。它提供了對世界的廣泛和基礎的了解,但不是專業化。同樣,人工智能中的基礎模型是在龐大的資料集上預先訓練的,使它們能夠掌握廣泛的一般模式和資訊。它們的通用性允許它們使用較小的、特定于任務的資料集進行微調或适應特定任務。在許多方面,LLM可以被視為一種基礎模型。例子包括GPT,BERT,Llama等。

二、變壓器架構

1. 這是什麼?

變壓器架構是在2017年的“注意是你需要的一切”論文中提出的,并已成為建構LLM的熱門選擇。該架構允許模型使用注意力機制學習句子中所有單詞的上下文,而不僅僅是局限于相鄰單詞。通過為單詞之間的這些關系配置設定注意力權重,模型可以學習每個單詞與其他單詞的相關性,無論它們在輸入文本中的哪個位置。根據權重值,模型在進行預測時可以選擇性地選擇關注或關注*某些單詞。*這些權重通常是在訓練過程中學習的,通常使用大量資料。

值得注意的是,與按順序逐字處理文本的傳統NLP模型不同,轉換器可以一次處理多個單詞,進而實作并行處理,是以性能更好。

真正使這種架構與衆不同并使其具有革命性的一些重要因素是:

  • 自我注意:這允許模型權衡輸入序列中不同單詞相對于特定單詞的重要性,進而在單詞周圍的單詞上下文中“了解”單詞。通過訓練,這将自動建立一種内部表示或對語言的了解。這種内部表示越好,它在任何語言任務中的表現就越好。
  • 位置編碼:轉換器需要一種方法來從輸入文本中捕獲單詞的順序,以便它将有關順序的資訊存儲在資料本身中(對位置進行編碼并添加到輸入嵌入中)。然後,當您使用更多資料進行訓練時,模型将能夠學習如何更好地解釋這些位置編碼。

轉換器模型可以被認為是半監督學習,因為本質上它們是使用大型未标記資料集進行預訓練的,然後通過監督訓練進行微調以提高其性能。

此體系結構有 2 個主要部分:編碼器和解碼器。它們共享一些相似的核心元件——輸入标記化、嵌入層、位置編碼、自我注意層、前饋網絡等。

在将它們放在一起之前,讓我們先了解每個核心元件,以了解編碼器和解碼器中的流程。

大型語言模型和 Transformer 架構:基礎知識

2. 輸入标記化

我們需要做的第一件事是标記輸入的單詞。标記化是将原始文本轉換為較小的塊或标記的過程,然後可以由模型進行處理。

大型語言模型和 Transformer 架構:基礎知識

标記化後,每個标記都會轉換為數字/唯一ID,每個數字代表模型可以使用的所有可能單詞(模型的詞彙表)在字典中的位置。此詞彙表是在預訓練期間建立的,應包含數千甚至數百萬個唯一令牌。

3. 嵌入層

一旦輸入被表示為數字,我們就會将其傳遞給嵌入層。令牌化過程中的原始令牌 ID 對模型不是特别有用。這些數字不包含有關它們所表示的單詞的語義資訊。

該層是一個可訓練的向量嵌入空間,其中每個标記都轉換為一個向量(也稱為嵌入),以便捕獲語義本質并将标記的含義/上下文編碼為一系列數值,并且向量在該空間中占據唯一位置。這些輸入令牌的處理也設計為并行完成。

具有相似含義或出現在相似上下文中的單詞将具有更靠近的嵌入,具有不同含義的單詞将具有更遠的嵌入。例如:像“蘋果”、“香蕉”、“橙子”等詞在空間中會非常接近,同時與“汽車”、“火車”、“自行車”等相距甚遠。

矢量大小通常為 512,這相當大,但仍然可以變大。

大型語言模型和 Transformer 架構:基礎知識

您可以将向量大小想象為嵌入空間中的維數。更高的次元允許模型編碼更複雜的關系和微妙之處,但它也需要更多的資料和計算能力來有效訓練。

作為簡化的示例,使用僅 3 的向量大小,然後您可以将單詞繪制到 3D 空間中并檢視它們之間的關系。

大型語言模型和 Transformer 架構:基礎知識

這些密集的向量表示不僅僅是随機配置設定的。他們是有學問的。訓練語言模型(或使用嵌入的任何模型)時,初始嵌入可能會随機開始。但是,當模型在大量文本上進行訓練時,它會調整這些嵌入以最大程度地減少其預測誤差。随着時間的推移,該模型将具有相似含義或出現在類似上下文中的單詞更緊密地放置在此嵌入空間中,因為這樣做有助于做出更好的預測。

4. 位置編碼

變壓器設計用于同時并行處理輸入序列的所有部分。這意味着他們無法固有地識别令牌的順序。如果沒有考慮序列資訊的機制,所有單詞都将顯得獨立且不受上下文限制。

大型語言模型和 Transformer 架構:基礎知識

在進階别上,位置編碼涉及将唯一生成的向量添加到每個輸入令牌的嵌入中。《注意就是你需要的一切》一文提到,位置編碼與嵌入具有相同的次元/長度,是以可以将兩者相加。這是一種確定盡管并行處理所有單詞,但模型不會失去語言的順序本質的方法。

此向量僅根據令牌在序列中的位置确定,而與令牌本身無關。目标是確定令牌嵌入和位置編碼的總和對于每個位置都是唯一的,并為模型提供足夠的資訊來确定每個單詞的原始位置。

大型語言模型和 Transformer 架構:基礎知識

想象一下,試圖将一個句子從英語翻譯成法語。形容詞和名詞的位置在兩種語言之間經常不同。為了産生流暢的翻譯,模型必須識别這些位置差異。通過位置編碼了解每個單詞的位置,Transformer可以生成上下文準确的翻譯,保留語言之間的詞序細微差别。

4. 自我注意層

對輸入令牌和位置編碼求和後,将生成的向量傳遞到自注意層,在該層中,模型分析輸入序列中标記之間的關系。

想象一下,閱讀一個句子,對于你閱讀的每個單詞,能夠感覺到該句子中每個單詞在了解目前單詞的上下文方面的重要性。這本質上就是自我關注的作用。

對于句子中的每個單詞,自我注意會給其他每個單詞配置設定一個權重,訓示它應該對該單詞給予多少“注意”,允許模型關注輸入序列的不同部分,以更好地捕獲單詞之間的上下文依賴關系。如果一個單詞相對于另一個單詞具有較高的注意力權重,則意味着模型認為這兩個單詞在給定的上下文中密切相關。

大型語言模型和 Transformer 架構:基礎知識

值得注意的是,它可以将注意力集中在附近的單詞或相距很遠的單詞上。這使模型能夠捕獲資料中的短期和長期依賴關系,使其特别擅長了解句子或段落等長序列中的上下文。

例如,如果一個模型試圖了解句子“他坐在河岸邊”中的“bank”這個詞,注意機制可以突出顯示“river”這個詞對于将“bank”上下文化特别重要(權重更高)。

多頭注意力\

在轉換器架構中,這種自我注意機制不會隻應用一次。相反,多組自我注意力權重(又名頭部)是互相獨立并行學習的。這裡的直覺是,每個頭都可以學會關注資料中的不同方面或關系。

例如,一個頭可能關注句法關系,另一個頭關注語義關系,另一個頭關注句子中人實體之間的關系,正在描述的活動,另一個頭關注特定的單詞模式或押韻。每個磁頭産生自己的輸出,這些輸出被串聯和線性變換以産生最終的多頭輸出。此輸出是輸入的更豐富的表示形式,捕獲了各個方面和細微差别。

舉這句話的例子:

“貓坐在墊子上。”

假設我們的模型的次元為 512(我們稱之為值 d_model),2 個注意力頭,并對單詞而不是子單詞進行操作。進入注意力層的輸入嵌入看起來像

| Word | d_model (512)            |
|------|--------------------------|
| The  | [0.1,0.2,...512th value] |
| cat  | [0.3,0.1,...512th value] |
| sat  | [0.9,0.2,...512th value] |
| on   | [0.5,0.6,...512th value] |
| the  | [0.1,0.2,...512th value] |
| mat  | [0.4,0.8,...512th value] |
           

第一個注意力頭集中在活動“坐”上,是以它可能更重于活動“貓”的主題和活動“墊子”的位置。第二個頭可能會注意不同實體的關系——“貓”和“墊子”。單詞“sat”的每個頭的計算輸出可能如下所示:

| Head   | d_model (512)                                  |
|--------|------------------------------------------------|
| Head 1 | Weighted combination of ["cat", "sat", "mat"]  |
| Head 2 | Weighted combination of ["cat", "mat"]         |
           

在多頭計算之後,我們從每個頭獲得單詞“sat”的輸出,然後,我們通過連接配接向量來組合它們——結果将是一個大小的向量。2 * 512

concatenated = [value1,value2,...,512th value,value1,value2,...,512th value]
           

現在,我們無法将大小的向量饋送到期望大小為 .是以,我們使用線性變換(基本上是矩陣乘法)将這個大小的向量投影回 .1024``512``1024``512

combined = concatenated x weight_matrix
           

得到的組合向量進入前饋網絡的後續步驟。請記住,對輸入句子中的每個單詞重複此操作。

注意力層中包含的注意力頭數量因模型而異。常見的選擇可能是 8、12 甚至多達 100 個頭。

不建議提前規定注意力主管将學習語言的哪些方面。這使得不同的注意力模式在訓練過程中自然出現。每個頭部的權重是随機初始化的,并給予足夠的訓練資料和時間,每個頭部将學習語言的不同方面。靈活性對于模型适應各種任務的能力至關重要。

5. 前饋網絡

現在,所有注意力權重都已應用于您的輸入,輸出将通過全連接配接的前饋網絡 (FFN) 進行處理。

大型語言模型和 Transformer 架構:基礎知識

前饋是一種人工神經網絡,其中節點之間的連接配接不會形成循環......前饋模型是神經網絡的最簡單形式,因為資訊隻在一個方向上處理。雖然資料可能通過多個隐藏節點,但它始終朝一個方向移動,從不向後移動。

從**DeepAI的“前饋神經網絡”

FFN 層對我們剛剛從多頭注意力層接收到的輸出應用線性變換,然後是非線性激活函數,然後是另一個線性變換(詳細的數學方程,請參閱原文)。這意味着它可以捕獲輸入中每個單詞的非線性關系。如果沒有非線性元件,網絡将不會非常強大,因為它無法學習簡單的線性關系之外的資料中的複雜模式或關系。

簡單來說,在注意力機制弄清楚單詞之間的“上下文”和關系之後,FFN應用一組一緻的轉換來進一步完善上下文資訊。打個比方:如果注意力機制就像識别一道菜的關鍵相關成分,那麼前饋網絡就像微調味道并確定所有東西很好地融合在一起。

根據 FFN 是在編碼器元件還是解碼器元件中,輸出可能會有所不同。編碼器中 FFN 層的輸出是一系列轉換後的嵌入。

另一方面,對于解碼器,輸出是logits(來自神經網絡最後一層的原始預測),表示模型詞彙字典中每個令牌的機率得分。

然後,可以将 logits 傳遞給最終的 softmax 函數(Softmax 是一個數學函數,它将數字向量轉換為機率向量,其中每個值的機率與向量中每個值的相對尺度成正比),其中)它們被歸一化以為每個可能的下一個單詞/标記生成機率分布。一個令牌的分數将高于其他令牌,是以它很可能是預測的令牌。

6. 編碼器和解碼器

這就是所有的核心元件,現在我們可以将它們放在一起,通過一些額外的調整來形成編碼器和解碼器。

就編碼器而言,前面已經描述了大多數元件:

  • 輸入标記化
  • 嵌入層
  • 位置編碼
  • 多頭自我關注
  • 前饋網絡
  • 殘差連接配接和層歸一化:編碼器中的每個步驟(自我注意和前饋神經網絡)都被殘差連接配接包圍,然後是層歸一化。這有助于穩定激活,并通過添加從前幾層繼承的資訊來允許更深層次的模型。

來源:變壓器的編碼器-解碼器:讓我們了解模型架構

  • 堆疊編碼器:變壓器型号不僅有一個編碼器,還可以将多個編碼器堆疊在一起(通常為 6 個)。這意味着當資訊流經這些層時,模型能夠越來越多地了解關系和模式。

最終編碼器層的輸出被認為是解碼器的輸入特征——它是輸入的上下文豐富的表示形式,其中每個标記的表示都受到其周圍标記的影響。

解碼器元件大多類似于編碼器,但它适用于目标輸出序列,并且在層上有一些細微的差異:

  • 輸入标記化:有 2 個主要輸入 — 一個來自編碼器,另一個是解碼器正在生成的持續序列
  • 嵌入層
  • 位置編碼
  • 屏蔽多頭注意力:注意力機制與編碼器的略有不同,因為輸入被部分屏蔽。“屏蔽”部分確定在預測特定單詞時,模型隻能關注序列中的早期位置(或目前位置),而不能關注未來位置(屏蔽位置獲得 0 分)。這可確定對特定單詞的預測不依賴于序列中的未來單詞,進而保留解碼器的自回歸屬性。
  • 編碼器-解碼器注意層:該層根據編碼器的輸出和解碼器不斷生成的部分輸出計算注意力(輸出令牌被傳遞回輸入以觸發下一個令牌的生成,直到模型預測序列結束令牌)。
  • 前饋網絡
  • 殘餘連接配接和層歸一化:類似于編碼器。
  • 輸出:如前所述,FFN 的輸出是 logits,它通過 softmax 函數傳遞以在詞彙表上産生機率分布,進而确定序列中的下一個單詞。

從本質上講,編碼器的作用是表示輸入資料并将其壓縮到上下文中,而解碼器的工作是将此上下文展開為有意義的輸出序列,根據需要關注編碼輸入的最相關部分及其自己的先前輸出。

從技術上講,您可以将這些元件分開以建立體系結構的變體。實際上,有許多型号僅使用編碼器,編碼器-解碼器或僅使用解碼器。

大型語言模型和 Transformer 架構:基礎知識

繼續閱讀