AI時代系列(2) 機器學習三部曲: 🔹 第二部:《深度學習 —— 神經網路的革命》
62/100 第七週:📌 語言模型與生成式 AI(BERT、GPT)🗣🔍
62.BERT 架構與掩蔽語言模型 🎭 從遮住字詞中學習理解語意!
________________________________________
🎯 單元導讀:
你能否透過「填空」練習學好語言?
BERT(Bidirectional Encoder Representations from Transformers)就是這樣被訓練出來的!
它不單靠上下文,而是同時從左右文理解語意,藉由遮蔽句子中的詞彙並預測它們,學會更深層次的語境關係。
本課將說明 BERT 的架構、掩蔽語言模型訓練方式,及其在自然語言理解任務中的優勢。
________________________________________
📚 一、什麼是 BERT?
➤ 定義:
雙向編碼器表示的變換器(BERT) 是由 Google 於 2018 年提出的雙向 Transformer Encoder 預訓練語言模型,採用「遮掩(掩蔽)詞預測」方式進行語意學習。擅長各種自然語言處理任務,如分類、問答、命名實體辨識等。
________________________________________
✅ 訓練任務 1:Masked Language Model(MLM)🎭
• 隨機遮蔽輸入句子中的 15% 詞彙
• 模型學會根據上下文預測被遮蔽的詞
• 類似「語意填空」:
📘 例子:
輸入:The [MASK] barked at the mailman.
目標:The **dog** barked at the mailman.
✅ 訓練任務 2:Next Sentence Prediction(NSP)
• 給定句 A,判斷句 B 是否為其「真實下一句」
• 幫助學會句與句之間的邏輯關係(用於問答、摘要等)
📘 例子:
句A:The man went to the store.
句B1:He bought a gallon of milk. ✅
句B2:Penguins are flightless birds. ❌
________________________________________
🏗 二、BERT 架構設計(僅用 Encoder)
Input Tokens → Token + Position + Segment Embedding
↓
多層 Transformer Encoder(雙向 Self-Attention)
↓
Contextual Representations(語意向量)
↓
[CLS] 用於分類 / 被 Mask 的詞彙預測
BERT 的處理流程從輸入開始,首先將文字轉換成 Token,並加上位置編碼(Position Embedding)與句子區段資訊(Segment Embedding),形成完整的輸入向量。接著,這些向量會送入多層 Transformer Encoder 中進行雙向的 Self-Attention 運算,讓模型同時理解詞語在上下文中的意義。輸出會是每個詞彙對應的語意向量(Contextual Representations),其中 [CLS] 代表整句的總體語意,常用於分類任務;而被遮蔽的詞則透過 Masked LM 任務進行預測訓練,這就是 BERT 架構中的核心流程。
🔍 為什麼只用 Encoder?
Encoder 擅長捕捉輸入中詞與詞之間的相對關係,非常適合分類、問答、語意配對等理解任務。
Decoder 結構偏向生成(如 GPT、T5),但對於理解任務來說會引入不必要的計算。
________________________________________
🔍 三、BERT 的雙向特性(Bidirectionality)
與傳統 GPT 不同,BERT 在訓練時會同時觀察詞語的前後文,不是單向預測:
輸入:The [MASK] was barking loudly.
左文:"The"
右文:"was barking loudly"
→ BERT 同時考慮左右語境預測 "dog"
這使得 BERT 更適合「理解導向」任務,例如分類、問答、匹配,而不是語句生成。
________________________________________
🧠 四、BERT 的應用場景
在 BERT 模型中,不同任務會根據輸出方式採用不同的處理方式。例如:句子分類任務會使用 [CLS] 向量作為整句代表,接上全連接層與 Softmax 進行分類;文本匹配任務則取兩句的 [CLS] 向量,計算其相似度來判斷語意關聯;**命名實體辨識(NER)**則針對每個 token 的輸出向量逐一分類,判斷其所屬實體類別;而在 問答任務(如 SQuAD) 中,模型則需預測答案在文章中對應的開始與結束位置,分別對每個 token 做機率預測,找出最可能的答案區段。這些任務靈活利用了 BERT 的輸出向量,實現多種語言理解應用。
________________________________________
📈 五、BERT 在 NLP 界的重要貢獻
• 成為 NLP 任務的基準模型(例如 GLUE、SQuAD 排行榜)
• 開啟「預訓練 → 微調」的標準流程
• 為後續如 RoBERTa、DistilBERT、ALBERT 奠定基礎
________________________________________
🧪 六、小結與學習啟示:
✅ BERT 使用「遮詞預測 + 雙向上下文」的設計,有效學會語言理解邏輯
✅ 它僅使用 Encoder 結構,適合分類、匹配、問答等理解任務
✅ 透過微調,BERT 可以快速遷移至各種下游任務,實現高準確率低門檻訓練!
________________________________________
💬 問題挑戰與思考:
1️⃣ 為什麼 BERT 使用 Masked LM 而不是傳統的語言模型?
參考答案:
傳統語言模型(如左到右的自回歸模型)只能看到前文,限制了語意學習的完整性;而 BERT 採用 Masked LM,能讓模型在預測被遮住的詞時,同時考慮左右文脈,實現真正的雙向語意理解,這對分類、問答等理解型任務效果更佳。
________________________________________
2️⃣ 若拿掉 NSP(Next Sentence Prediction)任務,對哪些應用可能產生影響?
參考答案:
NSP 任務訓練模型理解句子之間的邏輯與語篇關係,因此若移除 NSP,可能會影響如自然語言推論(NLI)、**文本配對(如 QA 配對、對話上下文理解)**等需要判斷句子關聯的任務。不過實驗上,如 RoBERTa 移除 NSP 反而提升效能,顯示 NSP 並非所有應用必備。
________________________________________
3️⃣ 如果要讓 BERT 支援「生成任務」,你會怎麼調整架構或任務設計?
參考答案:
原始 BERT 無法逐字生成,因為它是雙向遮蔽的理解型架構。若要支援生成,可考慮以下方法:
• 改為 Encoder-Decoder 架構,如 BART、T5,將輸入餵給 Encoder,由 Decoder 負責生成。
• 轉為單向自回歸訓練,如用 BERT 初始化 GPT 架構或訓練 Decoder-only 模型。
• 使用變形 Mask,如 span-based masking(BART)、可見區塊設計(UniLM),讓 BERT 在預測未來詞時有條件限制。










