一、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:位置编码,用于保留词序信息。

    输入向量表示为:E = E_{\text{token}} + E_{\text{segment}} + E_{\text{position}}

  • 多头自注意力层(Multi-Head Self-Attention)
    与 Transformer Encoder 一致,计算公式为:

    \text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right) V
  • 前馈神经网络(Feed Forward Network, FFN)

    \text{FFN}(x) = \max(0, xW_1 + b_1)W_2 + b_2
  • 残差连接 + 层归一化(Residual Connection + LayerNorm)

三、BERT 的预训练任务

BERT 通过 大规模语料预训练 + 下游任务微调 的方式工作。其预训练包含两大任务:

1. Masked Language Model (MLM)

在输入句子中,随机遮盖 15% 的词,然后让模型预测这些被遮盖的词。
例如:

  • 输入:"I love [MASK] learning"

  • 预测:"I love machine learning"

其损失函数为交叉熵:

\mathcal{L}_{\text{MLM}} = - \sum_{i \in M} \log P(w_i | w_{\setminus M})

其中 M 表示被 Mask 的位置,w_{\setminus M}​ 表示上下文。

2. Next Sentence Prediction (NSP)

给定两句话,预测第二句是否是第一句的真实后续。

  • 正样本:句子 B 紧跟句子 A。

  • 负样本:句子 B 来自语料中的随机句子。

其损失函数为二分类交叉熵:

\mathcal{L}_{\text{NSP}} = - \big[ y \log P(\text{IsNext}) + (1-y) \log (1 - P(\text{IsNext})) \big]

四、BERT 的训练与微调

  1. 预训练阶段

    • 使用大规模语料(BooksCorpus, Wikipedia)进行训练。

    • 学习通用的语言表示。

  2. 微调阶段

    • 将预训练好的 BERT 模型参数作为初始化。

    • 根据具体任务(文本分类、问答、命名实体识别等)在最后接入不同的输出层,并在小规模任务数据上训练。

五、BERT 的应用场景

  • 文本分类(情感分析、新闻分类)

  • 问答系统(SQuAD 竞赛表现优异)

  • 命名实体识别(NER)

  • 自然语言推理(NLI)

  • 机器翻译、对话系统

六、总结

  • BERT 基于 Transformer Encoder 架构,采用 双向上下文建模。

  • 通过 MLM + NSP 的预训练任务,使模型学到深层语义表示。

  • 在多个 NLP 下游任务上达到 SOTA(state-of-the-art)表现。

BERT 的提出是 NLP 领域的里程碑,为后续的 RoBERTa、ALBERT、DistilBERT 等改进模型奠定了基础。

更多推荐