RoBERTa Base Model 全面介紹

RoBERTa Base Model 全面介紹

簡介

RoBERTa(「Robustly Optimized BERT Approach」的縮寫)是 BERT(Bidirectional Encoder Representations from Transformers)模型的進階版本,由 Facebook AI 的研究人員所創建。與 BERT 類似,RoBERTa 是一種基於 Transformer 的語言模型,採用自注意力機制來分析輸入序列,並在句子中產生上下文化的詞彙表示。

在本文中,我們將更詳細地探討 RoBERTa。

RoBERTa 與 BERT 的比較

RoBERTa 與 BERT 的一個關鍵差異在於,RoBERTa 是在顯著更大的資料集上、採用更有效的訓練流程進行訓練。具體來說,RoBERTa 在 160GB 的文字資料上訓練,是 BERT 所用資料集大小的 10 倍以上。此外,RoBERTa 在訓練期間採用了動態遮罩技術,這增強了模型學習更穩健且更具泛化能力的詞彙表示。

RoBERTa 在各種自然語言處理任務(如語言翻譯、文字分類和問答)中,表現出優於 BERT 及其他頂尖模型的效能。它也已成為許多成功 NLP 模型的基礎模型,並在研究與工業應用中廣受歡迎。

總結來說,RoBERTa 是一個強大且有效的語言模型,對 NLP 領域做出了重大貢獻,推動了廣泛應用的進展。

RoBERTa 模型架構

RoBERTa 模型與 BERT 模型共享相同的架構。它是 BERT 的重新實作,但對關鍵超參數進行了修改,並對嵌入層進行了微調。

BERT 的一般預訓練與微調流程如下圖 1 所示。在 BERT 中,預訓練和微調使用相同的架構,但輸出層除外。預訓練的模型參數用於初始化各種下游任務的模型。在微調期間,所有參數都會進行調整。

BERT 模型架構

相比之下,RoBERTa 不使用下一句預訓練目標。而是以更大的 mini-batch 和更高的學習率進行訓練。RoBERTa 採用不同的預訓練方案,並將字元級別的 BPE 詞彙表替換為字節級別的 BPE 分詞器(類似於 GPT-2)。此外,RoBERTa 不需要定義哪個 token 屬於哪個 segment,因為它沒有 token_type_ids。可以使用分隔 token tokenizer.sep_token(或 </s>)輕鬆劃分 segments。

此外,與最初用於訓練 BERT 的 16GB 資料集不同,RoBERTa 在超過 160GB 的未壓縮文字的巨大資料集上進行訓練。該資料集包括 BERT 使用的 16GB 英語維基百科和書籍語料庫,以及來自 WebText 語料庫(38 GB)、CommonCrawl 新聞資料集(6300 萬篇文章,76 GB)和 Common Crawl 故事(31 GB)的額外資料。RoBERTa 使用這個龐大的資料集和 1024 塊 V100 Tesla GPU 進行了一天的預訓練。

RoBERTa 模型的優勢

RoBERTa 具有與 BERT 相似的架構,但為了提升效能,作者對架構和訓練流程進行了幾項簡單的設計更改。這些更改包括:

  1. 移除下一句預測(NSP)目標:在 BERT 中,模型透過輔助的 NSP 損失來訓練,以預測文件的兩個區段是否來自同一份文件或不同文件。作者測試了有無 NSP 損失的模型版本,發現移除 NSP 損失在下游任務上的表現持平或略有提升。
  2. 使用更大的批次大小和更長的序列進行訓練:BERT 最初以 256 個序列的批次大小訓練了 100 萬步。RoBERTa 則以 2000 個序列訓練了 125 步,並以 8000 個序列每批次訓練了 31,000 步。更大的批次改善了遮罩語言建模目標的困惑度以及最終任務的準確率,並且更容易使用分佈式平行訓練進行平行化。
  3. 動態改變遮罩模式:在 BERT 中,遮罩在資料預處理期間只執行一次,導致單一靜態遮罩。為避免此問題,訓練資料被複製並使用不同策略遮罩 10 次,跨越 40 個 epochs,導致 4 個 epochs 使用相同的遮罩。作者將此策略與動態遮罩進行了比較,後者每次將資料傳入模型時都會生成不同的遮罩。

RoBERTa 的效能

RoBERTa 模型在當時的 MNLI、QNLI、RTE、STS-B 和 RACE 任務上達到了最先進的效能,並在 GLUE 基準測試中展現了顯著的效能提升。憑藉 88.5 的分數,RoBERTa 在 GLUE 排行榜上佔據了首位。

BERT 與其後續改進版本的比較

如何使用 RoBERTa

Huggingface 的 Transformers 庫提供了各種不同大小和針對不同任務的預訓練 RoBERTa 模型。在這篇文章中,我們將專注於如何載入 RoBERTa 模型並進行情緒分類。

我們將使用一個在特定任務資料集上微調過的 RoBERTa 模型,即 Huggingface hub 上的預訓練模型 cardiffnlp/twitter-roberta-base-emotion

首先,我們需要安裝並匯入所有必要的套件,並使用 RobertaForSequenceClassification(包含分類頭)載入模型,以及使用 RobertaTokenizer 載入分詞器。

!pip install -q transformers

# 匯入必要套件
import torch
from transformers import RobertaTokenizer, RobertaForSequenceClassification

# 載入模型和分詞器
model_name = "cardiffnlp/twitter-roberta-base-emotion"
tokenizer = RobertaTokenizer.from_pretrained(model_name)
model = RobertaForSequenceClassification.from_pretrained(model_name)

# 分詞輸入
inputs = tokenizer("I love my cat", return_tensors="pt")

# 獲取 logits 並用於預測底層情緒
with torch.no_grad():
    logits = model(**inputs).logits

predicted_class_id = logits.argmax().item()
model.config.id2label[predicted_class_id]

>> Output: Optimism

輸出為「Optimism」,這與我們所使用的分類模型預定義標籤一致。我們可以使用其他預訓練模型或微調模型來獲得更合適標籤的結果。

RoBERTa 的評估結果

使用動態遮罩進行訓練

在原始的 BERT 實作中,遮罩在資料預處理期間執行,導致單一靜態遮罩。作者將此方法與動態遮罩進行了比較,後者每次將序列輸入模型時都會生成新的遮罩模式。動態遮罩展現了與靜態遮罩相當或略優的效能。

BERT 靜態與動態遮罩的比較

基於上述發現,RoBERTa 的預訓練採用了動態遮罩方法。

完整句子(FULL-SENTENCES)且不使用 NSP 損失

將不使用 NSP 損失的訓練與使用來自單一文件的文字區塊(doc-sentences)進行訓練進行比較,結果顯示此配置優於最初發表的 BERTBASE 結果。此外,移除 NSP 損失在下游任務上的表現持平或略有提升。

顯示 RoBERTa 在有無 NSP 損失下的效能表格

雖然觀察到將序列限制為來自單一文件(DOC-SENTENCES)比合併來自多個文件的序列(FULL-SENTENCES)略有效能提升,但 RoBERTa 選擇使用 FULL-SENTENCES 以便於比較,因為 DOC-SENTENCES 格式會導致可變的批次大小。

使用大批次進行訓練

使用大批次大小訓練可以加速優化並提升任務準確率。此外,分佈式數據平行訓練有助於大批次的平行化,進一步提升效率。在適當調整的情況下,大批次大小可以提升模型在給定任務上的效能。

RoBERTa 在不同任務上使用不同批次大小的效能比較

更大的字節級別 BPE

字節對編碼(BPE)結合了字元級別和詞彙級別表示的優點,能夠有效處理自然語言語料庫中通常存在的大量詞彙。RoBERTa 與 BERT 不同,它採用了更大的字節級別 BPE 詞彙表,包含 50K 子詞單元,不需要額外的預處理或輸入分詞。

RoBERTa 的限制導航

雖然 RoBERTa 是一個強大的模型,但它並非沒有侷限性。以下是一些限制:

  1. 計算資源:訓練和微調 RoBERTa 需要大量的計算資源,包括強大的 GPU 和大量記憶體。這可能使得資源有限的個人或組織難以有效使用 RoBERTa。
  2. 領域特定性:預訓練語言模型(如 RoBERTa)在沒有進一步微調的情況下,可能在特定領域的任務或資料集上表現不佳。它們可能需要對特定領域的資料進行額外訓練,以達到所需的效能水準。
  3. 數據效率:RoBERTa 及類似模型需要大量資料進行預訓練,這可能並非所有語言或領域都能提供。這種對大量資料的依賴限制了它們在資料稀缺或獲取成本高昂的場景中的適用性。
  4. 可解釋性:RoBERTa 的黑箱特性可能難以解釋模型如何得出預測。理解模型的內部運作以及診斷錯誤或偏見可能具有挑戰性,尤其是在複雜的應用或敏感領域中。
  5. 微調挑戰:雖然針對特定任務微調 RoBERTa 可以提升效能,但需要專業知識和實驗來選擇正確的超參數、數據增強技術和訓練策略。這個過程可能耗時且資源密集。
  6. 偏見與公平性:預訓練語言模型(如 RoBERTa)可能繼承訓練資料中存在的偏見,導致有偏見或不公平的預測。解決 AI 模型中的偏見並確保公平性仍然是一個重大挑戰,需要仔細的數據管理和模型設計考量。
  7. 分佈外泛化:RoBERTa 可能難以泛化到分佈外的數據,或處理與其訓練數據顯著不同的場景。這一限制可能影響 RoBERTa 在數據分佈變化常見的實際應用中的穩健性和可靠性。

為克服這些限制,您可以選擇更先進的模型,例如最近發布的 Llama 3。或者,您可以將 novita.ai LLM API 金鑰以低成本無縫整合到您現有的系統中:

novita.ai LLM API 提供的模型

結論

RoBERTa 在 BERT 的基礎上,透過使用更大的訓練資料集以及動態遮罩、移除下一句預測目標等改進技術,顯著推進了自然語言處理的發展。這些增強措施,加上字節級別 BPE 分詞器和更大的批次大小,使 RoBERTa 能夠在各種 NLP 任務上達到卓越的效能。雖然它需要大量的計算資源和微調專業知識,但 RoBERTa 對該領域的影響深遠,樹立了新的基準,並作為研究和工業應用的多功能模型。

novita.ai 是無限創意的一站式平台,提供超過 100 個 API。從圖像生成、語言處理到音訊增強和影片編輯,採用廉價的隨用隨付模式,讓您在建立自己的產品時無需煩惱 GPU 維護。立即免費試用。

推薦閱讀

LLM 與 GPT 的區別是什麼?

2024 年 LLM 排行榜預測揭曉

Novita AI LLM 推理引擎:最大吞吐量與最便宜的推理服務