iPAS AI 應用規劃師 中級 科目一

BERT 預訓練時遮住詞語在做什麼?

原題 03

某企業計畫應用 BERT(Bidirectional Encoder Representations from Transformers)模型分析大量顧客意見,以強化客服自動回覆系統。在 BERT 的預訓練過程中,「遮罩語言模型(Masked Language Model,MLM)」的主要訓練策略為何?

白話

一家企業要用 BERT 這個 AI 模型來分析顧客留言,讓客服能自動回覆。

BERT 在正式使用前,要先「預訓練」(Pretrain),學習語言的基本規律。其中有一個叫做「遮罩語言模型」(Masked Language Model,MLM)的預訓練策略。

問你:MLM 是怎麼訓練 BERT 的?它的核心做法是什麼?

點選你的答案。

01 總結

一句話總結

BERT 的 MLM 訓練方式:把句子裡隨機幾個字遮起來(換成 [MASK]),然後讓模型同時看左邊和右邊的字,猜出被遮住的是什麼詞。靠這個方法,BERT 學會了雙向的語言理解。

02 情境

先感受問題:訓練 AI 讀懂語言,要出什麼題目?

假設「誠信保險」公司要用 BERT 分析顧客投訴留言,例如:「我的保單已經繳了十年,為什麼理賠還是被拒絕?」

BERT 在能做這個任務之前,要先「學會語言」,就像學語文要先學文法再做閱讀測驗。

問題是:要怎麼出「學語言」的題目?我們有幾億句話的文字,但這些文字沒有人幫它們標「正確答案」。

這就是自監督學習(Self-supervised Learning)的核心挑戰:在沒有人工標注的情況下,從文字本身製造訓練題目

MLM 的解法很聰明:把句子裡幾個字遮起來,讓 AI 猜。正確答案就是被遮住的那個字,不需要人來標。

原句:我的保單已經繳了十年,為什麼理賠還是被拒絕?
遮蔽後:我的保單已經繳了十年,為什麼 [MASK] 還是被拒絕?
正確答案:理賠

BERT 要同時看「為什麼」和「還是被拒絕」這兩邊,才能猜出中間填「理賠」。這就逼著模型學會從雙向上下文推理。

03 對照

只看左邊(單向模型)為什麼不夠

BERT 之前,語言模型大多是「從左到右」(Left-to-Right)預測,就像 GPT 的原始設計:看前面幾個字,猜下一個字。

這種單向訓練的五個問題:

  1. 讀不懂語境歧義:「蘋果宣布」下一個字是什麼?不看後面不知道是水果還是科技公司。
  2. 代詞指向搞錯:「張律師告訴陳經理他要離開」,「他」是誰?只看左邊的模型常猜錯。
  3. 填空能力差:閱讀理解題經常需要「前後對照」才能理解一句話的意思。
  4. 專業術語理解弱:金融、法律術語常常需要後文才能確定詞義,例如「信用」在不同語境含義不同。
  5. 問答任務準確率低:回答問題時需要同時理解問題和答案的雙向關係,單向模型先天吃虧。

這些缺點讓舊模型在理解任務(分類、問答)上表現有限。BERT 用 MLM 強制訓練模型看兩邊,根本解決這個問題。

04 解法

MLM 怎麼讓 BERT 學會雙向理解

MLM 的做法分三步:

第一步:隨機選 15% 的詞遮起來。在誠信保險的訓練語料裡,把每句話隨機 15% 的詞換成 [MASK]:

「我的 [MASK] 已經繳了十年,為什麼理賠還是被 [MASK]?」

第二步:BERT 同時看左右兩邊,預測被遮的詞。不像從左到右的模型,BERT 用 Transformer 的 Self-Attention 讓每個位置都能看到整個句子(除了被遮的那格)。

第三步:比對預測和正確答案,調整模型參數。預測「保單」和「拒絕」,跟正確答案對照,計算損失,反向傳播調整參數。

訓練幾百億次之後,BERT 對語言的雙向理解能力已經內化:看到一段話,它能自動對照前後文來理解每個詞的意思。

這就是選項 B 講的:隨機遮罩部分詞語,並讓模型根據雙向上下文(Bidirectional Context)預測被遮罩的詞

技術版:MLM 背後的細節與訓練設計

中級考試大概率會考程式碼跟公式,所以這部分你還是要學。但如果現在學起來很痛苦,可以先跳過,等讀完其他題目回頭再來。

本題沒有複雜公式,但相關技術背景值得知道。

MLM 的 15% 遮罩不是全部換成 [MASK]。BERT 論文有特殊設計:

  • 80% 機率:換成 [MASK](真正遮住)
  • 10% 機率:換成隨機的其他詞(例如原來是「保單」但換成「電話」)
  • 10% 機率:保留原詞不動(讓模型學習在未遮罩位置也要驗證)

這個設計是為了讓模型不要「只在看到 [MASK] 時才認真工作」,而是對每個 token 都保持警惕。

BERT 同時有兩個預訓練任務

  1. MLM(遮罩語言模型):上面說的,猜被遮住的詞。
  2. NSP(Next Sentence Prediction,下句預測):給兩個句子,讓模型猜第二句是不是真的接在第一句後面。(後來研究發現 NSP 效果不大,很多後繼模型把它拿掉了。)

用 Hugging Face 載入預訓練 BERT 的示範

from transformers import BertTokenizer, BertForMaskedLM
import torch

tokenizer = BertTokenizer.from_pretrained("bert-base-chinese")
model = BertForMaskedLM.from_pretrained("bert-base-chinese")

# 把一個字換成 [MASK]
text = "我的保單已經繳了十年,為什麼[MASK]還是被拒絕?"
inputs = tokenizer(text, return_tensors="pt")
mask_pos = (inputs["input_ids"] == tokenizer.mask_token_id).nonzero()[0][1]

with torch.no_grad():
    outputs = model(**inputs)
    logits = outputs.logits

# 拿出 [MASK] 位置預測概率最高的詞
predicted_id = logits[0, mask_pos].argmax()
print(tokenizer.decode([predicted_id]))  # 輸出:理賠(或類似語意的詞)
Step 1 純故事版
  1. 把句子裡一個詞換成 [MASK](空格)
  2. BERT 同時看空格左邊和右邊所有字
  3. 猜空格應該填什麼詞
  4. 比對答案,告訴模型猜錯了多少,讓它調整
Step 2 中文 ↔ 程式碼對照
故事程式碼
準備文字並遮住一個詞text = "...為什麼[MASK]還是..."
把文字轉成模型看得懂的格式inputs = tokenizer(text, return_tensors="pt")
讓 BERT 預測所有位置的詞outputs = model(**inputs)
找出 [MASK] 位置的預測logits[0, mask_pos].argmax()
轉回人看得懂的文字tokenizer.decode([predicted_id])
Step 3 符號角色表
[MASK]
特殊 token,代表「這個位置被遮住了,請猜是什麼詞」。
BertForMaskedLM
BERT 加上一個預測遮罩詞的輸出層,適合直接做 MLM 推理。
logits
模型對每個位置、每個詞彙的原始分數,尚未轉成概率。argmax() 取最高分的詞。
mask_pos
[MASK] token 在 input_ids 裡的位置索引,用來找到模型對那個位置的預測。
Step 4 完整公式對應

本題沒有核心數學公式,MLM 的損失函數是標準交叉熵(Cross-Entropy Loss),只計算被遮罩位置的預測損失,不計算未遮罩位置。這個 Step 跳過。

Step 5 自我複述

蓋住程式碼,用自己的話說出 MLM 訓練的 4 步驟:

  1. 從語料庫取一句話,隨機遮住 15% 的詞
  2. BERT 用雙向注意力看整句,對每個被遮位置輸出預測詞
  3. 計算預測和正確詞的差距(交叉熵損失)
  4. 反向傳播,更新 BERT 參數

重複幾百億次,BERT 就學會了語言的雙向理解。

05 陷阱

為什麼其他選項是錯的

A依序遮罩句尾詞語,讓模型從左到右逐步生成完整句子

字面在說什麼

把句子最後幾個字遮住,讓模型從前往後依序生成,這是語言生成(Language Generation)的做法,例如 GPT 系列的自回歸訓練(Auto-regressive Training)。

為什麼不對

MLM 遮的不是句尾,是隨機選 15%。而且 BERT 不「生成」文字,它是雙向「理解」模型,不做從左到右的依序預測。選項 A 描述的是 GPT(單向生成),不是 BERT(雙向理解)。

誰會選錯

知道「語言模型會預測下一個字」這個常識,就直覺以為 BERT 也這樣做的考生。BERT 和 GPT 都是 Transformer,但訓練任務相反:BERT 靠填空學理解,GPT 靠接龍學生成。

C透過對抗訓練(Adversarial Training)生成語意相似的擾動樣本以提升泛化性

字面在說什麼

對抗訓練(Adversarial Training)是刻意製造讓模型容易出錯的樣本(例如把「保單」改成「保單子」),逼模型學得更穩健。

為什麼不對

這不是 MLM 的做法,也不是 BERT 的標準預訓練策略。BERT 有一個後繼研究叫 CERT 或 ALUM 確實引入對抗訓練,但那是在標準 BERT 之上的改進,不是 BERT 本身的 MLM。

誰會選錯

讀過對抗訓練(GAN 或魯棒性訓練)的考生,看到「提升泛化性」覺得合理就選。容易被「改善品質」的語意混淆:對抗訓練也是在「改善模型」,但方法和 MLM 完全不同。

D以未遮罩的詞為條件,使用解碼器(Decoder)結構重建整句內容

字面在說什麼

這描述的是自編碼器(Autoencoder)或 Encoder-Decoder 架構的做法,讓解碼器根據已知部分重建整句話。

為什麼不對

BERT 只有 Encoder(編碼器),沒有 Decoder(解碼器)。BERT 不「重建整句」,它只預測被遮罩的那幾個詞,而且用的是 Encoder 的輸出直接接分類層,不涉及解碼器架構。有 Decoder 的 Transformer 是 GPT(Decoder only)或 T5(Encoder-Decoder)。

誰會選錯

學過自編碼器的考生,看到「以未遮罩的詞為條件」+「重建整句」這個描述很符合自編碼器的直覺,就選 D。需要記住:BERT = Encoder only,重建整句 = Autoencoder,兩者不同。

06 變形

同個考點下次怎麼變形

變形 1 邊界

BERT 預訓練的另一個任務 NSP(Next Sentence Prediction)是什麼?

直覺

MLM 讓 BERT 學單句理解,那有沒有學「兩句之間關係」的任務?

答案

有,就是 NSP。給模型兩個句子,問「第二句是不是真的緊接在第一句後面?」50% 機率是真正的下一句,50% 機率是隨機句子。但後續研究(RoBERTa 等)發現 NSP 效果不大,反而影響 MLM 效果,現在很多模型把它拿掉了。

變形 2 反例

如果 BERT 遮住的不是 15% 而是 50%,訓練效果會怎樣?

直覺

遮更多字,任務更難,模型應該學更多?

答案

反而更差。遮太多字代表上下文資訊太少,模型根本沒有足夠線索來猜被遮的詞,只能亂猜,學不到真正的語言規律。15% 是實驗確認的甜蜜點:難度夠高又留有足夠上下文。這也是 MAE(Masked Autoencoder)在視覺領域遮 75% 才有效的原因之一,視覺資訊冗餘度更高。

變形 3 升級版

BERT 預訓練完後,要怎麼用它做「情感分析」?

直覺

BERT 訓練時做的是填空,不是分類,怎麼拿來判斷正負面?

答案

微調(Fine-tuning)。拿預訓練好的 BERT,在 [CLS] token 後面加一層分類器,用少量有標注的情感資料(例如 1 千則「正/負面」評論)繼續訓練這個分類層(有時也更新 BERT 參數)。BERT 的語言理解能力已經很強,只需要少量樣本就能學會情感分類。

變形 4 跨領域

MLM 的「遮罩預測」思路有沒有用到圖片或語音領域?

直覺

MLM 是文字概念,遮住一塊圖片讓模型猜聽起來像遊戲?

答案

真的被用了,而且效果很好。MAE(Masked Autoencoder,2021)把圖片切成 patch,遮住 75%,讓模型預測被遮的像素。語音領域有 wav2vec 2.0,遮住部分音訊片段讓模型預測。同一個自監督學習思路,橫跨視覺、語音、語言。

變形 5 評估指標

怎麼知道 BERT 的 MLM 預訓練是否夠好?

直覺

用填空猜對率來衡量?

答案

直接指標是 Perplexity(困惑度):值越低代表模型對語料越「不困惑」,預測越準。但更實用的是下游任務的表現:在 GLUE Benchmark(含情感分析、問答、文本蘊涵等多個任務)的分數,才是真正衡量 BERT 語言理解能力的黃金指標。

07 延伸

想再往下看,這 5 個

出處

iPAS 經濟部產業人才能力鑑定 ・ 114 年第二次 iPAS AI 應用規劃師 中級 科目一 第 3 題

查看官方原文 PDF