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 等改进模型奠定了基础。