4. BERT模型原理
在金融新闻分类与事件识别任务中,BERT之所以能显著优于传统词袋模型和单向语言模型,核心在于它同时解决了三个问题:上下文双向建模、大规模无标注预训练、下游任务微调。本节围绕这四个关键词展开:双向编码器、MLM与NSP预训练、微调机制、输入输出表示。
一、双向编码器:让每个词同时“看见”左右上下文
传统RNN或类模型按从左到右顺序读入文本,每个词只能利用左侧信息。金融新闻中大量存在歧义表达,例如“该公司下调全年营收指引”与“分析师下调目标价”,同一个“下调”在不同左右搭配下指向的事件类型完全不同。BERT采用Transformer Encoder堆叠,通过自注意力机制让序列中任意两个位置直接建立联系,因此每个的表示都融合了左右两侧全部上下文。
需要区分两个概念:双向编码不等于简单地把正向和反向LSTM拼接。BERT的双向性来自自注意力对全序列的并行建模,没有时序递归,因此训练时可并行计算,也更容易捕捉长距离依赖。金融文本中常见的“尽管……但是……”“受……影响”等跨句逻辑,正是双向编码的收益点。
二、MLM与NSP:预训练任务如何塑造语言理解能力
BERT的预训练包含两个自监督任务:Masked Language Model(MLM)和Next Sentence Prediction(NSP)。
- MLM:随机遮盖输入序列中约15%的,让模型根据上下文预测被遮盖词。其中80%替换为[MASK],10%替换为随机词,10%保持不变,以缓解预训练与微调阶段的不一致。
- NSP:输入两个句子A和B,判断B是否为A的真实下一句,正负样本各半,用于学习句子级关系。
在金融场景中,MLM让模型学会“[MASK]评级被下调至‘卖出’”这类搭配,NSP则帮助模型理解“财报发布”与“股价波动”之间的篇章关系。后续研究如RoBERTa指出NSP作用有限,但理解NSP的设计动机,有助于我们判断何时该选用BERT、RoBERTa或FinBERT等变体。
三、微调机制:把通用语言知识迁移到金融任务
预训练完成后,BERT进入微调阶段。微调的本质是:在预训练参数基础上,针对具体任务添加少量输出层,并用标注数据继续更新全部或部分参数。金融新闻分类通常使用[CLS]位置的向量接一个全连接层;事件识别若为序列标注任务,则对每个的输出接分类层。
from transformers import BertTokenizer, BertForSequenceClassification
import torch
tokenizer = BertTokenizer.from_pretrained("bert-base-chinese")
model = BertForSequenceClassification.from_pretrained(
"bert-base-chinese", num_labels=6
)
text = "央行宣布全面降准0.5个百分点,释放长期资金约1万亿元"
inputs = tokenizer(text, return_tensors="pt", truncation=True, max_length=128)
outputs = model(**inputs)
logits = outputs.logits
pred = torch.argmax(logits, dim=-1)
print("预测类别:", pred.item())
微调时常见的关键参数包括学习率(通常2e-5到5e-5)、批大小、最大序列长度和训练轮数。金融文本常含数字、机构名和专有缩写,建议最大长度不低于128,重要公告可设为256或512。
四、输入输出表示:从文本到向量的完整链路
BERT的输入表示由三部分相加而成: Embedding、Segment Embedding和Position Embedding。特殊符号[CLS]位于序列首位,其最终隐藏状态常作为整句表示;[SEP]用于分隔句子对。
| 组成 | 作用 | 金融场景示例 |
|---|---|---|
| Embedding | 将子词映射为向量 | “降准”可能拆为“降”“准” |
| Segment Embedding | 区分句子A/B | 新闻标题与正文分属不同段 |
| Position Embedding | 保留顺序信息 | “上调”与“下调”位置不同 |
| [CLS]输出 | 句级分类表示 | 新闻类别、情绪极性 |
| 各输出 | 序列标注表示 | 事件触发词、论元边界 |
[CLS]向量直接用于所有任务。对于事件论元抽取等级任务,应使用对应的隐藏状态,而非仅依赖[CLS]。另外,中文BERT需使用中文分词器,混用英文词表会导致大量[UNK],严重损害金融专有名词识别。五、复盘:原理如何指导实战选择
理解BERT原理后,实战中可做出更理性的决策:若标注数据少,优先冻结底层、只微调顶层;若金融术语多,可选用FinBERT或在领域语料上继续MLM预训练;若任务涉及长公告,需评估最大长度与截断策略。双向编码器提供上下文理解,MLM与NSP提供通用语言先验,微调完成领域适配,输入输出表示决定任务接口——四者共同构成BERT在金融新闻分类与事件识别中的能力基础。