【大模型基礎_毛玉仁】2.3 基于 Encoder-only 架構的大語言模型


更多內容:XiaoJ的知識星球


目錄

    • 2.3 基于Encoder-only 架構的大語言模型
      • 2.3.1 Encoder-only 架構
      • 2.3.2 BERT 語言模型
        • 1)BERT 模型結構
        • 2)BERT 預訓練方式
        • 3)BERT 下游任務
      • 2.3.3 BERT 衍生語言模型
        • 1)RoBERTa 語言模型
        • 2)ALBERT 語言模型
        • 3)ELECTRA 語言模型


2.3 基于Encoder-only 架構的大語言模型

2.3.1 Encoder-only 架構

Encoder-only 架構的核心在于能夠覆蓋輸入所有內容的雙向編碼模型(Bidirectional Encoder Model)。

在處理輸入序列時,雙向編碼模型融合了從左往右的正向注意力以及從右往左的反向注意力,能夠充分捕捉每個 Token 的上下文信息,因此也被稱為具有全面的注意力機制

雙向編碼器為每個詞生成動態的上下文嵌入(Contextual Embedding),使得模型能更精準理解詞之間的依賴性和語義,有效處理詞語的多義性問題。使得雙向編碼器在句子級別的任務上表現出色,顯著超過了靜態詞嵌入方法的性能。

Encoder-only 架構基于雙向編碼模型,選用了 Transformer 架構中的編碼器部分。雖然 Encoder-only 模型不直接生成文本,但其生成的上下文嵌入對于深入理解輸入文本的結構和含義至關重要。

當前, BERT及其變體,如 RoBERTa、ALBERT等,都是基于 Encoder-only 架構的主流大語言模型。


2.3.2 BERT 語言模型

BERT(Bidirectional Encoder Representations from Transformers)

  • 是一種基于 Encoder-only 架構的預訓練語言模型。

  • 其核心在于通過雙向編碼模型深入挖掘文本的上下文信息,而為下游任務提供優秀的上下文嵌入。

1)BERT 模型結構

BERT 模型的結構與 Transformer 中的編碼器幾乎一致,由多個編碼模塊堆疊,每個編碼模塊包含一個多頭自注意力模塊和一個全連接前饋模塊。

根據參數量的不同,BERT 模型共有 BERT-Base 和 BERT-Large 兩個版本。

2)BERT 預訓練方式

BERT 使用小說數據集 BookCorpus 和英語維基百科數據集進行預訓練。

在預訓練任務上,BERT 開創性地提出了掩碼語言建模(Masked Language Model, MLM)下文預測(Next Sentence Prediction, NSP) 兩種任務來學習生成上下文嵌入。其完整的預訓練流程如下。

圖 2.7: BERT 預訓練任務。
在這里插入圖片描述

BERT 預訓練任務步驟:

(1)構造樣本序列:

BERT 先基于給定的原始文本構造多個樣本序列,每個樣本序列由原始文本中的兩個句子組成,這兩個句子有 50% 的概率是來自原文的連續句子,另外 50% 的概率是隨機挑選的兩個句子。隨后,對樣本序列分詞, 在序列開頭添加標簽 [CLS],在每個句子結尾添加標簽 [SEP]。

(2)判斷句子連續性:

接著,BERT 利用模型判斷樣本序列中的兩個句子是否為連續的。這一任務訓練 BERT 識別和理解句子之間的關系,捕捉句子層面的語義特征。

(3)掩碼預測:

最后,BERT 隨機選樣本序列中約 15% 的 Token 進行遮掩,將其替換為標簽 [MASK] 或者隨機單詞。模型需要預測這些被替換的 Token 的原始內容。要求模型根據周圍的上下文信息來推斷缺失的 Token。預測過程使用的交叉熵損失函數驅動了 BERT 模型中參數的優化,使其能夠學習到 文本的雙向上下文表示。

值得注意的是,在 MLM 任務的訓練過程中,BERT 僅針 對那些被隨機替換的 Token 進行學習,即只計算這些 Token 的預測損失來更新模型參數。

通過這兩種預訓練任務的結合,使 BERT 在理解語言的深度和廣度上都有顯著提升。BERT 不僅能夠捕捉到 Token 的細粒度特征,還能夠把握長距離的依賴關系和句子間的復雜聯系,為各種下游任務提供了堅實的語言理解基礎。

3)BERT 下游任務

BERT 可以應用于各種自然語言處理任務,包括但不限于:

文本分類(如情感分析)、問答系統、文本匹配(如自然語言推斷)、語義相似度計算。

(1) [CLS] 標簽設計

由于 BERT 的輸出是輸入中所有 Token 的向量表示,因此總長度不固定,無法直接應用于各類下游任務。

為解決這一問題,BERT 設計了 [CLS] 標簽(即Classification Token,分類標記)來提取整個輸入序列的聚合表示。[CLS] 標簽匯總整個輸入序列的信息,生成一個固定長度的向量表示,從而實現對所有 Token 序列信息的概括,便于處理各種下游任務。

(2)任務處理

文本分類任務中:

  • 將輸出中 [CLS] 標簽對應的向量提取出來,傳遞給一個全連接層,從而用于分類。

  • 例如判斷整個句子的情緒是積極、消極或是中立的。

問答系統任務中:

  • 需要輸入問題以及一段相關的文本,即“[CLS] 問題 [SEP] 文 本 [SEP]”。

  • 最終取出 [CLS] 標簽的對應向量,并傳遞給兩個全連接層,用于判斷答案是否存在于相關文本中。如果存在,這兩個全連接層分別用于輸出答案的起始和結束位置。

  • 通過這種方式,BERT 能夠從提供的段落中準確提取出問題的答案。

語義相似度任務中:

  • 過構造“[CLS] 文本 1[SEP] 文本 2[SEP]”的方式,

  • 結合一個 線性層來直接輸出兩個文本之間的相似度;

  • 也可以不添加額外的組件,直接提取 [CLS] 標簽對應的向量,再利用額外的相似度度量方法(例如余弦相似度)來計算多段文本之間的相似度。


2.3.3 BERT 衍生語言模型

1)RoBERTa 語言模型

RoBERTa(Robustly Optimized BERT Pretraining Approach)

  • 中文解釋:魯棒優化 BERT 預訓練方法。

  • 旨在解決BERT在訓練程度上不充分問題,以提升預訓練語言模型的性能

  • 在BERT的基礎上采用:更大數據集、更長的訓練時間、更細致的超參數調整

(1) RoBERTa 模型結構

RoBERTa 在結構上與BERT基本一致,基于多層堆疊的編碼模塊,每個編碼 模塊包含多頭自注意力模塊和全連接前饋模塊。RoBERTa同樣有兩個版本,分別 是RoBERTa-Base和RoBERTa-Large。

RoBERTa-Base與BERT-Base對標,RoBERTa-Large 則與BERT-Large 對標。

(2) RoBERTa 預訓練方式

RoBERTa 移除了 BERT 中的下文預測任務,并將 BERT 原生的靜態掩碼語言建模任務更改為動態掩碼語言建模

具體而言,

BERT 在數據預處理期間對句子進行掩碼,隨后在每個訓練epoch(一次完整訓練過程)中,掩碼位置不再變化。

而RoBERTa則將訓練數據復制成10個副本,分別進行掩碼。

在同樣訓練40個epoch 的前提下,BERT在其靜態掩碼后的文本上訓練了40次,而RoBERTa將 10 個不同掩碼后的副本分別訓練了4次。從而增加模型訓練的多樣性,有助于模型學習到更豐富的上下文信息。

這些改進使得RoBERTa在理解上下文和處理長文本方面表現出色,尤其在捕捉細微的語義差異和上下文依賴性方面。

2)ALBERT 語言模型

ALBERT(A Lite BERT):輕量級 BERT 模型

  • 旨在通過參數共享和嵌入分解技術來減少模型的參數量和內存占用,從而提高訓練和推理效率

  • 通過參數因子分解技術跨層參數共享技術顯著減少了參數的數量。

(1) ALBERT 模型結構

ALBERT的結構與BERT以及RoBERTa都類似,由多層堆疊的編碼模塊組成。

但是ALBERT通過參數因子分解以及跨層參數共享,在相同的模型架構下,顯著減少了模型的參數量。

參數因子分解:

在BERT 中:

  • Embedding 層的輸出向量維度 E 與隱藏層的向量維度H 是一致的,這意味著Embedding 層的輸出直接用作后續編碼模塊的輸入。

  • 具體來說, BERT-Base 模型對應的詞表大小V 為3,0000左右,并且其隱藏層的向量維度H設置為768。因此,BERT的Embedding層需要的參數數量是V ×H,大約為2,304萬。

ALBERT中:

  • 將Embedding層的矩陣先進行分解,將詞表對應的獨熱編碼向量通過一個低維的投影層下投影至維度E,再將其上投影回隱藏狀態的維度H。

  • 具體來說,ALBERT選擇了一個較小的Embedding層維度,例如128,并將 參數數量拆解為V ×E+E×H。按照這個設計,ALBERT的Embedding層大約 需要394萬個參數

跨層參數共享:

以經典的 BERT-Base 模型為例,模型中共有 12 層相同架構的編碼模塊,所有 Transformer 塊的參數都是獨立訓練的。

ALBERT 為了降低模型的參數量,提出了跨層參數共享機制,只學習第一層編碼模塊的參數,并將其直接共享給其他所有層。

該機制一定程度上犧牲了模型性能,但顯著提升了參數存儲空間的壓縮比, 從而實現更高效的資源利用。

ALBERT 共提出了四個版本的模型:

  • 分別是 ALBERT-Base、ALBERT-Large、ALBERT-XLarge 以及 ALBERT-XXLarge。

  • ALBERT-Base 與 BERT-Base 對標,ALBERT Large 與 BERT-Large 對標,剩余兩個更大。

(2) ALBERT 預訓練方式

ALBERT 使用與 BERT 一致的數據集來進行預訓練,即小說數據集 BookCorpus及英語維基百科數據集。

在預訓練任務的選擇上:

  • ALBERT 保留了 BERT 中的掩碼語言建模任務,

  • 并將下文預測任務替換為句序預測(Sentence Order Prediction, SOP),如圖所示。

圖 2.8: ALBERT 句序預測任務。
在這里插入圖片描述

具體而言,ALBERT 從文本中選擇連續的兩個句子,將這兩個句子直接拼接起來,或是先將這兩個句子的順序翻轉后再進行拼接,并將拼接后的內容作為輸入樣本,而模型需要預測該樣本中 的兩個句子是正序還是反序。

與 BERT 相比,ALBERT 通過創新的參數共享和參數因子分解技術,在較好 地保持原有性能的同時顯著減少了模型的參數數量,這使得它在資源受限的環境 中更加實用,處理大規模數據集和復雜任務時更高效,并降低了模型部署和維護 的成本。

3)ELECTRA 語言模型

ELECTRA(Efficiently Learning an Encoder that Classifies Token Replacements Accurately)

  • 中文解釋:高效地學習一個能夠準確分類Token替換的編碼器。

  • 旨在解決大規模預訓練語言模型中的效率和可擴展性問題。

  • 通過使用生成器-判別器架構,ELECTRA 能高效利用預訓練數據,提高模型在下游任務中的表現。

(1) ELECTRA 預訓練方式

在模型結構上,ELECTRA 在 BERT 原有的掩碼語言建模基礎上結合了生成對抗網絡(Generative Adversarial Network, GAN)的思想,采用了一種生成器-判別器結構

  • 生成器(Generator):能進行掩碼預測的模型(如BERT),負責將掩碼后的文本恢復原狀。

  • 判別器(Discriminator):則使用替換詞檢測(Replaced Token Detection, RTD)預訓練任務,檢測生成器輸出的內容中的每個 Token 是否是原文中的內容。

其完整的流程如圖所示。

圖 2.9: ELECTRA 預訓練任務。
在這里插入圖片描述

(2) ELECTRA 模型結構

根據生成器與判別器的不同規模,ELECTRA 共提出了三個版本的模型,分別 是 ELECTRA-Small、ELECTRA-Base 以及 ELECTRA-Large。

其中,ELECTRA-Small 和 ELECTRA-Base 使用與 BERT 一致的數據集來進行預訓練,而 ELECTRA-Large 則使用了更多樣化的訓練數據,從而幫助模型學習更廣泛的語言表示。

另外,在 BERT 中,只有 15% 的固定比例 Token 被掩碼,模型訓練的內容也僅限于這 15% 的 Token。

但在 ELECTRA 中,判別器會判斷生成器輸出的所有 Token 是否被替換過,因此能更好地學習文本的上下文嵌入。


Encoder-only 架構的語言模型小結:

上述基于 Encoder-only 架構的大語言模型在文本分類、情感分析等多個自然語言處理任務中取得了良好效果。表2.1從模型參數量及預訓練語料等方面對上述模型進行總結。

表 2.1: Encoder-only 架構代表模型參數和語料大小表。

模型發布時間參數量(億)語料規模預訓練任務
BERT2018.101.1, 3.4約 15GBMLM+NSP
RoBERTa2019.071.2, 3.5160GBDynamic MLM
ALBERT2019.090.12, 0.18, 0.6, 2.2約 15GBMLM+SOP
ELECTRA2020.030.28, 2.2, 6.6約 20-200GBRTD

可以看出這些經典模型參數大小止步于 6.6 億,預訓練任務也主要服務于自然語言理解。這些模型沒有繼續尋求參數量上的突破,并且通常只專注于判別任務,難以應對生成式任務,因此在當前愈發熱門的生成式人工智能領域中可以發揮的作用相對有限。


聲明:資源可能存在第三方來源,若有侵權請聯系刪除!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/897733.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/897733.shtml
英文地址,請注明出處:http://en.pswp.cn/news/897733.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

AIP-165 按條件刪除

編號165原文鏈接https://google.aip.dev/165狀態批準創建日期2019-12-18更新日期2019-12-18 有時API需要提供一種機制,按照一些過濾參數刪除大量資源,而非提供待刪除的各資源名字。 這是一個稀有的場景,用于用戶一次性刪除數千或更多資源的…

【Maven教程與實戰案例】

文章目錄 前言一、Maven是什么?二、Maven的安裝與配置1. 安裝前置條件2. 下載與配置 Maven3. 驗證安裝 三、Maven的核心概念1. POM.xml 文件2. 構建生命周期與插件機制 四、實戰項目示例1. 項目目錄結構2. 編寫代碼App.javaAppTest.java 3. 構建項目4. 運行項目 前言…

20250310:OpenCV mat對象與base64互轉

代碼: https://github.com/ReneNyffenegger/cpp-base64 指南:https://renenyffenegger.ch/notes/development/Base64/Encoding-and-decoding-base-64-with-cpp/ 實操:

概率論的基本知識

逆概率還不懂,改天再想想。 聯合概率 聯合概率(Joint Probability) 是概率論中的一個重要概念,用于描述多個隨機變量同時取某些值的概率。聯合概率可以幫助我們理解多個變量之間的關系。

pytest數據庫測試文章推薦

參考鏈接: 第一部分:http://alextechrants.blogspot.fi/2013/08/unit-testing-sqlalchemy-apps.html第二部分:http://alextechrants.blogspot.fi/2014/01/unit-testing-sqlalchemy-apps-part-2.html

如何自己做奶茶,從此告別奶茶店

自制大白兔奶茶,奶香與茶香激情碰撞,每一口都是香濃與甜蜜的雙重誘惑,好喝到跺腳!絲滑口感在舌尖舞動,仿佛味蕾在開派對。 簡單幾步就能復刻,成本超低,輕松在家享受奶茶自由。 材料:大白兔奶糖&…

SOA(面向服務架構)與微服務架構的區別與聯系

SOA(面向服務架構)與微服務架構的區別與聯系 1. 引言 在現代軟件架構中,SOA(Service-Oriented Architecture,面向服務架構)和微服務架構(Microservices Architecture)是兩種常見的…

LLM的準確率評估采用什么方式:準確率評估使用的是 `sklearn.metrics` 模塊中的 `accuracy_score` 函數

LLM的準確率評估采用什么方式:準確率評估使用的是 sklearn.metrics 模塊中的 accuracy_score 函數 評估方式 代碼里的準確率評估是基于每個樣本最后一個預測的 token 與真實的 token 進行對比。具體來說,它會遍歷測試數據集中的每個樣本,使用模型預測出最后一個 token 的 …

文件和異常

從文件中讀取數據 讀取整個文件 讀取整個文件 要讀取文件,需要一個包含幾行文本的文件。下面首先創建一個文件,它包含精確 到小數點后30位的圓周率值,且在小數點后每10位處換行: pi_digits.txt 3.14159265358979323846264338…

2025最新版Windows通過GoLand遠程連接Linux構建Go項目保姆級教學

以Ubuntu24.04和GoLand2024.1.6為例子,演示如何在Windows上通過GoLand遠程連接Linux進行Go編程。 通過go version指令可以發現當前Ubuntu系統沒有安裝go。 go version 通過指令安裝go,其他系統可以通過wget安裝,要指定安裝的具體go版本&…

Spring Boot 集成 Lua 腳本:實現高效業務邏輯處理

1. 前言 1.1 什么是Lua Lua是一種輕量級、高性能的腳本語言,常用于游戲開發、嵌入式系統、配置文件解析等領域。Lua語法簡潔,易于學習和使用,且具有強大的擴展性。 1.2 Spring Boot與Lua集成的意義 將Lua集成到Spring Boot應用中,可以實現動態配置業務邏輯、簡化復雜業…

Linux筆記---文件系統硬件部分

1. 文件系統 文件系統是操作系統用于明確存儲設備(常見的是磁盤,也有基于NAND Flash的固態硬盤)或分區上的文件的方法和數據結構,即在存儲設備上組織文件的方法。 1.1 基本組成 索引節點(inode)&#xff…

12.31[net]review

復用(Multiplexing)的概念 定義:在傳輸層,復用是指多個應用進程可以使用同一個傳輸層協議(如 TCP 或 UDP)來發送數據。從應用層的角度看,不同的應用進程(如網頁瀏覽器、郵件客戶端等…

網絡安全防護架構有哪些 網絡安全防護措施包括

網絡安全預防措施 網安措施 計算機網絡安全措施主要包括保護網絡安全、保護應用服務安全和保護系統安全三個方面,各個方面都要結合考慮安全防護的物理安全、防火墻、信息安全、Web安全、媒體安全等等。 (一)保護網絡安全。 網絡安全是為保護商務各方網絡端系統之…

物理筆記 | 拓撲相變的物理圖像

1. 一般相變 對于一般的相變是朗道理論預言的由對稱性自發破缺導致的。 比如在一維橫場Ising模型中的量子相變 H ? J ∑ j σ j z σ j 1 z ? h ∑ j σ j x H -J \sum_{j} \sigma_j^z \sigma_{j1}^z - h \sum_{j} \sigma_j^x H?Jj∑?σjz?σj1z??hj∑?σjx? 其相…

紅黑樹介紹

1 問題引入 為什么有AVL樹,還要引入紅黑樹? 在進行多次的插入和刪除時: 1)AVL樹會存在大量的旋轉操作,追求的是嚴格平衡; 2)紅黑樹通過為節點增加顏色來換取增刪節點時旋轉次數…

Java基礎:枚舉類enum入門案例

1.基礎枚舉定義與使用: package com.zxy;public class Main {public static void main(String[] args) { // 獲取枚舉值cars car cars.BMW;switch (car){case BMW :System.out.println("BMW");break;case BENZ :System.out.println("BENZ&…

torch numpy sort排序出現索引順序不正常

問題 torch 調用numpy ,numpy 的sort排序值的順序沒發現問題,但是排序的索引argsort()是有明顯問題。 方案 多一次取索引 arr.argsort().argsort()參考: https://blog.csdn.net/qq_50571974/article/details/123173118

大模型架構記錄5-向量數據庫

一 倒排索引、KNN、PQ 1.1 基礎版本 query -> requery 對問題做處理,處理上下文 對query 做 refined query 1.2 向量數據庫 二 搜索邏輯 2.1 knn 2.2 近似KNN 先和N個空間的均值比較再和空間內部的所有點比較,計算最近值。 優化一: …

Python :數據模型

一. 什么是數據模型? Python數據模型是Python對象系統的抽象,通過一組特殊方法?(如__init__、__len__等)和協議?(如迭代協議、上下文管理協議),定義了對象如何與語言的內置功能(如…