天天看點

Transformers回顧 :從BERT到GPT4

人工智能已成為近年來最受關注的話題之一,由于神經網絡的發展,曾經被認為純粹是科幻小說中的服務現在正在成為現實。 從對話代理到媒體内容生成,人工智能正在改變我們與技術互動的方式。 特别是機器學習 (ML) 模型在自然語言處理 (NLP) 領域取得了重大進展。 一個關鍵的突破是引入了“自注意力”和用于序列處理的Transformers架構,這使得之前主導該領域的幾個關鍵問題得以解決。

Transformers回顧 :從BERT到GPT4

在本文中,我們将研究革命性的Transformers架構以及它如何改變NLP,我們還将全面回顧從BERT到Alpaca的Transformers模型,重點介紹每種模型的主要特征及其潛在應用。

類似bert的文本模型

第一部分是基于Transformer編碼器的模型,用于向量化、分類、序列标記、QA(問答)、NER(命名實體識别)等。

1、BERT Google / 2018

Transformer 編碼器,wordpiece tokenization(30K 詞彙量)。 輸入嵌入由三個向量組成:标記向量、可訓練位置向量和片段向量(第一個文本或第二個文本)。 模型輸入是 CLS 标記嵌入、第一個文本的嵌入和第二個文本的嵌入。

BERT 有兩個訓練任務:Masked Language Modeling (MLM) 和 Next Sentence Prediction (NSP)。 在 MLM 中,15% 的令牌被屏蔽,80% 被 MASK 令牌替換,10% 被随機令牌替換,10% 保持不變。 模型會預測正确的 令牌,而損失僅在這 15% 的屏蔽令牌上計算。 在 NSP 中,模型預測第二個文本是否跟在第一個文本之後。 預測是在 CLS 令牌的輸出向量上進行的。

為了加快訓練速度,首先90%的訓練在序列長度為 128 個标記上進行,然後剩下的10% 的時間在 512 個标記上訓練模型以獲得更有效的位置嵌入。

2、RoBERTa Facebook / 2019

BERT的改進版本,它隻在MLM上訓練(因為NSP被認為不太有用),訓練序列更長(512個令牌)。使用動态屏蔽(當再次處理相同的資料時,不同的令牌被屏蔽),訓練超參數是精心選擇的。

3、XLM Facebook / 2019

訓練多語言模型的方法之一是使用不同的基本模型(目前最流行的模型是基于RoBERTa的XLM-R)。在最初的XLM中,所有語言都有一個共享的BPE詞彙表。

XLM 有兩個訓練任務:MLM和翻譯。翻譯本質上與一對文本上的 MLM 相同,但文本是彼此的平行翻譯,具有随機掩碼和段嵌入編碼語言。

4、Transformer-XL Carnegie Mellon University / 2019

該模型設計用于處理長序列,主要有兩個思想:片段的循環處理和相對位置編碼。

長文本被分成幾個片段,每次處理一個片段。前一段的輸出被緩存,在計算目前段中的自我關注時,鍵和值是基于目前段和前一段的輸出計算的(隻是簡單地連接配接在一起)。梯度也隻在目前段内計算。

這種方法不适用于絕對位置。是以模型中重新參數化了注意力權重公式。絕對的位置編碼向量被一個固定的矩陣取代,該矩陣基于标記位置之間距離的正弦值和對所有位置共有的可訓練向量。

5、ERNIE 清華大學,華為 / 2019

将知識圖譜中有關命名實體的資訊嵌入到 BERT 中。 輸入由一組文本标記和一組實體标記組成(每個标記代表整個實體)。 文本标記由 BERT 編碼。 在 BERT 之上,有一組 K 編碼器塊(約占網絡參數的 3%)。 在這些塊中:

  • 文本标記的更新向量和實體标記的原始向量首先獨立地計算自注意力;
  • 實體向量與它們在文本中出現的第一個标記相比對;
  • 使用GeLU 激活,并且用于獲得文本标記的新隐藏表示;
  • 文本和實體标記的新向量從隐藏表示中獲得,并作為輸入傳遞給下一個編碼器塊。

在預訓練期間,計算三種損失:MLM、NSP 和來自令牌的實體預測(如自編碼器),自編碼器使用下面規則:

  • 在 5% 的情況下,實體被替換為錯誤的實體,但比對被保留,模型必須預測正确的實體;
  • 在 15% 的情況下,比對被移除,模型必須僅基于文本來預測實體;
  • 在其他情況下,是正常的。

預訓練模型可以像正常 BERT 模型一樣進行微調(有 CLS 令牌)。 也可以使用額外的程式進行微調以确定實體及其類型之間的關系。

6、XLNet Carnegie Mellon University / 2019

因為BERT訓練過程存在問題:

  • 在訓練期間,損失計算僅計算掩碼标記。
  • 隻有個别标記被屏蔽,一個屏蔽标記的預測不會影響其他标記的預測。
  • 模型在訓練期間主動看到的實際應用程式中沒有 MASK 令牌。

XLNet 基于 Transformer-XL,除了替換語言模組化 (PLM) 任務外,它學習在短的上下文中預測标記,而不是直接使用 MASK。 這確定了梯度會計算所有标記并消除了對特殊掩碼标記的需要。

上下文中的标記被打亂(比如:可以根據第 i-2個和第i+1個标記預測第 i 個标記),但它們的位置仍然是已知的。 這無法通過目前的位置編碼(包括 Transformer-XL)實作。 當嘗試在給定上下文的一部分的情況下預測令牌的機率時,模型不應該知道本身的令牌,但應該知道令牌在上下文中的位置。 為了解決這個問題,他們将self-attention 分為兩個流:

  • 在每個标記位置,有兩個向量而不是一個:内容向量和查詢向量。
  • 内容向量包含有關令牌的完整資訊,而查詢向量僅包含位置資訊。
  • token 的兩個向量都是基于上下文向量計算的,但是 self-attention 中的查詢向量是使用過去的内容向量計算的,内容向量是使用過去的查詢向量計算的。
  • query vector 不接收關于相應 token 的内容的資訊,但知道上下文的所有資訊,而 content vector 包含完整的資訊。

在微調期間,如果忽略查詢向量,模型将像正常的 Transformer-XL 一樣工作。

在實踐中該模型的要求上下文必須足夠長,以便模型能夠正确學習。 它在與 RoBERTa 相同數量的資料上學習,結果相似,但由于實作的複雜性,該模型并沒有像 RoBERTa 那樣流行。

7、ALBERT Google / 2019

在不犧牲品質的情況下簡化BERT:

  • 在不同的編碼器塊中使用共同的參數,并且已經證明可以共享自注意力的權重,但是分離全連接配接層的權重會導緻品質下降。
  • 與BERT相比,使用了更小的輸入嵌入和更大的隐藏層向量。這可以通過在網絡輸入處使用一個額外的投影矩陣來實作,這樣也可以将嵌入的大小與隐藏表示的大小解耦。
  • 模型的參數減少了18倍,運作速度提高了1.7倍。

模型在MLM和句子順序預測(SOP)上進行訓練。

8、DistilBERT Google / 2019

另一種優化BERT的方法是蒸餾:

  • 編碼器塊的數量減半
  • 三個損失成分:MLM、與教師模型輸出的交叉熵,以及相應層輸出之間的餘弦距離。
  • 模型比教師模型小40%,速度快60%,并且在各種任務上保持了97%的品質。

9、LaBSE Google / 2020

基于BERT的多語言矢量化模型。它在MLM和TLM上進行訓練(20%的标記被屏蔽),然後對其進行微調。它支援100多種語言,包含500K個标記的詞彙表。

10、ELECTRA Google, Stanford University / 2020

使用生成對抗方法加速BERT訓練:

  • 訓練了兩個類bert模型:一個小型生成器和一個主鑒别器
  • 生成器在MLM上進行訓練,然後填充掩碼令牌
  • 鑒别器被訓練來預測由生成器生成的文本的原創性(替換檢測任務)
  • 訓練完成後,去掉生成器,用鑒别器進行微調

訓練資料的數量與RoBERTa或XLNet相同,并且模型比BERT、RoBERTa和ALBERT更快地學習到相似的品質水準。訓練時間越長,它的表現就越好。

11、DeBERTa Microsoft / 2020

另一種将标記向量的内容和位置分離為兩個單獨的向量的模型:

  • 位置向量在所有層之間共享,并且是相對的,即标記之間的每個可能距離都有一個。
  • 為它們添加了兩個新的權重矩陣K_pos和Q_pos。
  • 對注意力權重計算進行修改,簡化為三個乘積的和:Q_cont * K_cont + Q_cont * K_pos + K_cont * Q_pos
  • 與ALBERT中一樣,使用投影矩陣将嵌入大小與隐藏标記表示向量的大小解耦。

類似GPT 和T5的而模型

基于完整Transformers的模型。 它的應用範圍非常廣泛:除了上一節的任務外,它還包括會話代理、機器翻譯、邏輯和數學推理、代碼分析和生成,以及基本上文本生成。 最大和“最智能”的模型通常基于解碼器架構。 此類模型通常在 few-shot 和 zero-shot 模式下無需微調即可表現良好。

1、GPT-2 OpenAI / 2018

解碼器在因果LM的任務上進行訓練(根據左側上下文預測下一個令牌)。從體系結構的角度來看,有一些小的變化:從每個解碼器塊中移除交叉注意層,并使用了LayerNorm

使用的标記器是位元組級BPE (50K詞彙表),沒有使用類似的子字元串例如(“dog”、“dog!”、“dog.”)。 最大序列長度為 1024。層輸出緩存所有先前生成的标記。

2、T5 Google / 2019

在MLM上進行完整的預訓練(15%的令牌被屏蔽),跨度由代碼掩碼(, ,…)屏蔽。輸出預測序列spanspan…

LayerNorm在自注意力層和全連接配接層輸入之前應用。使用相對位置編碼:

位置由可學習的嵌入編碼,其中每個“嵌入”隻是在計算注意力權重時添加相應logit的标量

矩陣B是跨層共享的,但對于不同的自注意力注頭是不同的。

每一層考慮令牌之間的128個距離,其餘的歸零,這樣可以對比訓練期間看到的序列更長的序列進行推理。

标記化使用sentencepece (32K詞彙表)完成,在預訓練期間最大序列長度為512。

3、BART Facebook / 2019

另一個完整的transformers,但是用GeLU取代了ReLU。訓練它從噪聲文本(AE去噪)中預測原始文本,噪聲類型如下:

  • 令牌屏蔽
  • 删除令牌
  • 令牌填充
  • 句子中令牌順序颠倒
  • 使随機令牌成為序列的開始

使用位元組級BPE(詞彙表大小為50K)

4、CTRL Salesforce / 2019

使用字首代碼令牌(例如, input text…)控制生成的解碼器。在訓練期間将代碼配置設定給适當的文本,然後在推理期間使用代碼生成相應樣式的文本。該模型是在因果LM上訓練的,并且沒有使用額外的損失。使用的标記化是BPE,詞彙表大小為250K。

4、GPT-3 OpenAI / 2020

這是一個具有Sparse Transformer架構的GPT-2模型,并且增加了2048個令牌的序列長度。還記的那句話嗎:别問,問就是GPT3

5、mT5 Google / 2020

基于T5模型,具有類似的訓練,但使用多語言資料。ReLU激活被替換為GeGLU,詞彙表擴充到250K個标記。

6、GLAM Google / 2021

這個模型在概念上類似于Switch Transformer,但更側重于在少樣本的模式下工作,而不是微調。不同規模的模型使用32到256個專家層,K=2。使用來自Transformer-XL的相對位置編碼。在處理令牌時,隻有不到10%的網絡參數被激活。

7、 LaMDA Google / 2021

類似gpt的模型。該模型是一個會話模型,在因果LM上進行了預訓練,并在生成和判别任務上進行了微調。該模型還可以對外部系統(搜尋、翻譯)的調用。

8、GPT-NeoX-20B EleutherAI / 2022

這個模型類似于GPT-J,也使用旋轉位置編碼。模型權重使用float16表示。最大序列長度為2048。

9、BLOOM BigScience / 2022

這是46種語言和13種程式設計語言的最大開源模型。為了訓練模型,使用一個名為ROOTS的大型聚合資料集,其中包括大約500個開放資料集。

10、PaLM Google / 2022

這是一個大型多語言解碼器模型,使用Adafactor進行訓練,在預訓練時禁用dropout,在微調時使用0.1。

11、LLaMA Meta / 2023

用于科學研究的開源大型gpt類LM,已用于訓練多個指令模型。該模型使用了pre-LayerNorm、SwiGLU激活和RoPE位置嵌入。因為開源是以這是彎道超車的主要模型之一。

文本的指導模型

這些模型抓喲用于校正模型輸出(例如 RLHF)以提高對話和任務解決期間的響應品質。

1、InstructGPT OpenAI / 2022

這項工作調整GPT-3以有效地遵循訓示。該模型在一個由提示和答案組成的資料集上進行微調,這些提示和答案是人類根據一套标準認為好的。基于InstructGPT,OpenAI 建立了一個被我們現在熟知的模型ChatGPT。

2、Flan-T5 Google / 2022

适用于T5的指導模型。在某些任務中,Flan-T5 11B在沒有這種微調的情況下優于PaLM 62B。這些模型已經作為開源釋出。

3、Sparrow DeepMind / 2022

基本模型是通過在標明的高品質對話上對Chinchilla進行微調獲得的,前80%的層被當機。然後該模型被進一步訓練,使用一個大提示來引導它進行對話。有幾個獎勵模型也在Chinchilla的基礎上進行訓練。該模型可以通路搜尋引擎并檢索最多500個字元的片段,這些片段可以成為響應。

在推理過程中,獎勵模型用于對候選人進行排序。候選項要麼由模型生成,要麼從搜尋中獲得,然後最好的一個成為響應。

4、Alpaca Stanford University / 2023

上面LLaMA 的指導模型。主要重點是使用GPT-3建構資料集的過程:

  • 目标是獲得一組Task-Input-Output三元組,其中Input可以為空。
  • 人類會生成175個帶有答案的任務提示,這些提示被輸入到GPT-3中,GPT-3會生成新的任務。
  • 生成過程是疊代的,在每個步驟中,都提供了一些來自人類的任務示例和一些來自先前生成的任務示例。
  • GPT-3将生成的任務分為分類任務或非分類任務,并根據此生成不同的輸入和輸出。
  • 三元組根據品質和與資料庫中現有三元組的不相似度進行過濾。

總共生成了52K個唯一的三元組,并對LLaMA 7B進行了微調。

5、Koala Berkeley University / 2023

這是在指令資料上對LLaMA進行微調,但與上面的Alpaca不同的是,它不僅在GPT-3等大型模型生成的資料上進行微調。還資料集的組成為:

  • 30k個關于數學、詩歌和對話的說明和回答樣本;
  • 52K個Alpaca 資料集的樣本;
  • 160K對使用者對有用性和危害偏好的模型響應;
  • 20K對帶有使用者問題和評分的模型回答;
  • 93K個總結,使用者對其品質評分;

與GPT-3相比,沒有品質的增加。但是在盲測中,使用者更喜歡Koala 的回答,而不是Alpaca 的回答。

從文本生成圖像的模型

基于文本描述的圖像生成器。擴散模型與transformers 相結合在這一領域占據主導地位,不僅可以生成圖像,還可以進行内容操作和分辨率增強。

1、DALL-E OpenAI / 2021

這項工作分兩個階段進行:對圖像的标記進行訓練,然後學習文本和圖像的聯合生成模型。

在第一階段,訓練dVAE,其中将圖像從256x256x3空間轉換為32x32xdim并傳回,其中dim是隐藏表示向量的次元。總共有8192個這樣的标記向量,這些标記向量将在模型中進一步使用。

使用的主要模型是稀疏transformer 解碼器。文本令牌和圖像令牌作為輸入,模型學習聯合分布(Causal LM),之後可以基于文本生成圖像令牌。dVAE基于這些相同的令牌生成一個映像。文本标記的損失權重是1/8,圖像标記的權重損失是7/8。

對于文本标記,有正常嵌入和位置嵌入,對于圖像标記,有正常的、按列定位的和按行定位的嵌入。文本标記序列的最大長度為256,标記化為BPE (16K詞彙表)。

2、GLIDE OpenAI / 2021

一種在像素級操作并由文本控制的擴散模型(DM)。它基于U-Net架構,具有卷積、注意和殘差連接配接。使用不同的方法來控制生成。使用CLIP獲得的圖像向量和文本向量的标量積

3、Latent Diffusion [Stable Diffusion] CompVis [Stability AI] / 2021 [2022]

在像素空間中工作的擴散模型,主要包含2個模型:

  • 一種用于從潛在空間降維和生成的VAE自編碼器
  • 内部表征的DM

自編碼器以類似gan的方式進行訓練,在其結果上使用鑒别器,并将額外的正則化表示與标準正态分布的接近程度。

結果在潛在空間中進入DM解碼:如果條件是一個向量,則在步驟的輸入處與潛在向量連接配接,如果是一個向量序列,則用于不同U-Net層的交叉注意。對于文本提示使用CLIP向量。

這個通用的模型可以被訓練用于不同的任務:文本到圖像,着色,繪畫,超分辨率。

4、Imagen Google / 2022

Imagen背後的主要思想是增加文本編碼器的大小比增加DM的大小可以給生成模型帶來更多的好處。是以CLIP被替換為T5-XXL。

從圖像生成文本的模型

本節中的模型通常被稱為多模态模型,因為它們在生成文本的同時能夠分析不同性質的資料。生成的文本可以是自然語言,也可以是一組指令,例如機器人的指令。

1、CoCa Google / 2022

一個單獨的圖像編碼器(ViT或CNN) +一個共享解碼器,其中前半部分處理文本,後半部分與圖像編碼器的輸出共同處理文本。

288x288的圖像被切成18x18的塊,編碼器将其轉換為向量+基于所有這些向量的共享注意力池向量。

解碼器的前半部分的輸出是文本向量和序列末尾的CLS标記向量,使用sentencepece (64K詞彙表)進行标記化。文本和圖像矢量通過交叉注意在解碼器的後半部分合并。

兩個損失的權重分别:

  • 圖像的注意力池向量與圖像描述對的文本的CLS标記向量之間的相似性。
  • 整個解碼器輸出的自回歸損失(以圖像為條件)。

在微調過程中,圖像編碼器可以被當機,隻有注意力池可以被微調。

2、PaLM-E Google / 2023

圖像由ViT編碼,輸出向量以及文本令牌和指令被輸入PaLM, PaLM生成輸出文本。

PaLM-E用于所有任務,包括 VQA、對象檢測和機器人操作。

3、GPT-4 OpenAI / 2023

這是一個具有少量已知細節的封閉模型。據推測,它有一個具有稀疏注意力和多模态輸入的解碼器。它使用自回歸訓練和微調RLHF,序列長度從8K到32K。

它已經在人類考試中進行了零樣本和少樣本的測試,并達到了類似人類的水準。它可以立即和逐漸解決基于圖像的問題(包括數學問題),了解和解釋圖像,并可以分析和生成代碼。還适用于不同的語言,包括小語種。

總結

下面是簡短結論。它們可能不完整,或者根本不正确,是以僅供參考。

自動顯示卡不能挖礦以後,各種大型模型蜂擁而至,模型的基數一直在增長,但是簡單的層的增加和資料集的增長被各種更好的技術替代,這些技術允許品質改進(使用外部資料和工具,改進網絡結構和新的微調技術)。但是越來越多的工作表明訓練資料的品質比數量更重要:正确選擇和形成資料集可以減少訓練時間并提高結果品質。

OpenAI現在正在走向閉源,他們已經嘗試過不釋放GPT-2的權重但沒有成功。 但是GPT4是黑盒,近幾個月來改進和優化開源模型的微調成本和推理速度的趨勢在很大程度上降低了大型私有模型作為産品的價值,開源模型在品質上也正迅速趕上巨頭,這又可以彎道超車了。

最後開源模型的總結如下:

  • 在編碼器模型塊中,XLM-RoBERTa 和 LaBSE 模型被認為是可靠的多語言解決方案;
  • 在開放的生成模型中,最有趣的是 LLaMA 和來自 EleutherAI 的模型(都有它們所有的微調版本)、Dolly-2、BLOOM(同樣有指令微調選項);
  • 代碼方面,SantaCoder的模型還不錯,但是總體來說品質也明顯落後于ChatGPT/GPT-4;
  • Transformer-XL 和 Sparse Transformer 實作了其他模型中使用的技術,可以仔細研究;

以上,僅供參考。

作者:Vladimir Zhyvov

繼續閱讀