BERT(Bidirectional Encoder Representations from Transformers)模型详解
一、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 等改进模型奠定了基础。
更多推荐

所有评论(0)