一、BERT 簡介
BERT(Bidirectional Encoder Representations from Transformers)是由 Google 在 2018 年提出的一種預訓練語言表示模型。它基于 Transformer 編碼器結構,首次提出了 雙向上下文建模 的方法,大幅度提升了自然語言處理(NLP)任務的表現。
傳統的語言模型(如 RNN、LSTM)多是 單向建模,只能從左到右或從右到左學習語義。而 BERT 通過 Mask Language Model (MLM) 技術,使得模型能夠同時利用 前文和后文信息,達到深度雙向表示的效果。
二、BERT 的模型結構
BERT 的核心是 多層 Transformer Encoder,每一層由以下部分組成:
輸入嵌入層(Input Embedding)
Token Embedding:詞的向量表示。
Segment Embedding:表示句子對中的句子 A 或 B。
Position Embedding:位置編碼,用于保留詞序信息。
輸入向量表示為:
多頭自注意力層(Multi-Head Self-Attention)
與 Transformer Encoder 一致,計算公式為:前饋神經網絡(Feed Forward Network, FFN)
殘差連接 + 層歸一化(Residual Connection + LayerNorm)
三、BERT 的預訓練任務
BERT 通過 大規模語料預訓練 + 下游任務微調 的方式工作。其預訓練包含兩大任務:
1. Masked Language Model (MLM)
在輸入句子中,隨機遮蓋 15% 的詞,然后讓模型預測這些被遮蓋的詞。
例如:
輸入:"I love [MASK] learning"
預測:"I love machine learning"
其損失函數為交叉熵:
其中 表示被 Mask 的位置,
? 表示上下文。
2. Next Sentence Prediction (NSP)
給定兩句話,預測第二句是否是第一句的真實后續。
正樣本:句子 B 緊跟句子 A。
負樣本:句子 B 來自語料中的隨機句子。
其損失函數為二分類交叉熵:
四、BERT 的訓練與微調
預訓練階段
使用大規模語料(BooksCorpus, Wikipedia)進行訓練。
學習通用的語言表示。
微調階段
將預訓練好的 BERT 模型參數作為初始化。
根據具體任務(文本分類、問答、命名實體識別等)在最后接入不同的輸出層,并在小規模任務數據上訓練。
五、BERT 的應用場景
文本分類(情感分析、新聞分類)
問答系統(SQuAD 競賽表現優異)
命名實體識別(NER)
自然語言推理(NLI)
機器翻譯、對話系統
六、總結
BERT 基于 Transformer Encoder 架構,采用 雙向上下文建模。
通過 MLM + NSP 的預訓練任務,使模型學到深層語義表示。
在多個 NLP 下游任務上達到 SOTA(state-of-the-art)表現。
BERT 的提出是 NLP 領域的里程碑,為后續的 RoBERTa、ALBERT、DistilBERT 等改進模型奠定了基礎。