3. NLP与深度学习回顾
在进入BERT金融新闻分类实战之前,我们需要把NLP深度学习的关键技术脉络梳理清楚。BERT并非凭空出现,它站在词向量、RNN、CNN、注意力机制与Transformer的肩膀上。理解这条演进链,才能在后续调参、排障和模型改造时知道"为什么这样做"。
一、核心原理:表示、序列与注意力三条主线
NLP深度学习的发展可以归纳为三条主线:如何表示词、如何建模序列、如何捕捉长距离依赖。
- 词向量:Word2Vec、GloVe把离散词映射为稠密向量,让"相似词"在向量空间中距离更近。但它是静态的,"苹果"在"苹果手机"和"吃苹果"中向量相同。
- RNN/LSTM:按时间步递归处理序列,天然适合变长文本,但存在梯度消失、无法并行、长依赖衰减的问题。
- CNN:用卷积核在词序列上滑动,捕捉局部n-gram特征,可并行、速度快,但感受野有限。
- 注意力机制:让模型对序列中不同位置分配不同权重,直接建立任意两位置的连接,突破距离限制。
- Transformer:完全基于自注意力,抛弃循环结构,实现全并行训练,成为BERT的骨架。
关键转折:从"顺序处理"到"全局加权"。RNN像逐字阅读,Transformer像一眼扫过全文并标注重点。
二、方法流程:一次文本分类的完整数据流
以金融新闻"央行宣布降准0.5个百分点"为例,走一遍典型流程:
- 分词与映射:文本切分为,查词表转为ID序列。
- 词向量层:ID查表得到向量,或由BERT的Embedding层生成上下文相关向量。
- 编码器:RNN/CNN/Transformer逐层提取语义特征。
- 池化与分类:取[CLS]或平均池化,接全连接层输出类别概率。
- 损失与优化:交叉熵损失,反向传播更新参数。
输入: "央行 宣布 降准 0.5 个百分点"
_ids: [101, 2345, 678, 9012, 345, 6789, 102]
embedding: (7, 768)
encoder_out: (7, 768)
pooled: (768,)
logits: [0.1, 0.7, 0.2] # 政策/市场/公司
pred: 政策
三、案例场景:金融新闻中的长依赖与歧义
金融文本有两大难点:长距离依赖和领域歧义。
例如:"尽管该公司一季度营收同比增长20%,但受原材料价格上涨影响,净利润同比下滑15%。"判断情感极性时,模型必须把"净利润"与"下滑"关联,而中间隔了多个词。RNN容易遗忘,CNN感受野不够,注意力机制则能直接给"下滑"高权重。
再如"苹果"在科技新闻与农业新闻中含义不同。静态词向量无法区分,而BERT通过上下文动态生成向量,能根据周围词调整表示。这正是BERT在金融新闻分类中优于Word2Vec+RNN的关键原因。
四、误区与复盘:常见认知偏差
误区一:认为BERT完全取代了RNN和CNN。实际上在低资源、强时序场景,BiLSTM+CRF仍是序列标注的强基线;CNN在短文本分类中依然高效。
- 误区二:把注意力权重直接当作"解释"。注意力高不等于因果重要,需结合梯度或消融实验验证。
- 误区三:忽视位置编码。Transformer本身无序,位置信息靠Positional Encoding注入,去掉后性能骤降。
- 误区四:认为词向量维度越高越好。维度过高易过拟合,金融小数据集常用128或256维。
| 模型 | 并行能力 | 长依赖 | 金融场景适用性 |
|---|---|---|---|
| Word2Vec + RNN | 差 | 弱 | 小数据基线 |
| TextCNN | 好 | 中 | 短新闻快分类 |
| BiLSTM + Attention | 差 | 中 | 序列标注 |
| Transformer | 好 | 强 | 长文本建模 |
| BERT | 好 | 强 | 金融新闻分类首选 |
复盘来看,BERT的成功不是单点突破,而是词向量提供表示基础、Transformer提供并行架构、注意力提供全局建模、预训练提供海量语料知识,四者叠加的结果。在金融新闻分类任务中,理解这条链路,才能判断何时用TextCNN做快速基线,何时上BERT做精细分类,以及为什么微调时学习率要设得很小。