赛题分析
数据样例:
标签:52种类型,均脱敏
数据:
- 标注样本4w条
- 无标注样本100w条
- 测试集每阶段各1w条
数据分析:
- 输入多样化(汉字、字母、数字、空格等)
- 实体类型与商品类型相关
- 实体无嵌套现象
- 实体样本为长尾分布
赛题难点:
- 解决输入中多类型符号表示
- 解决语言模型在电商领域适应性
- 充分利用无标注数据增强单模型效果
整体设计
方案框架:
1、模型输入
- 将输入转为小写,减少未登录词影响
- 将空格转为特殊符号“|”
2、预训练
- 赛题给定104w样本+Multi-CPR 100w样本
- 使用MLM进行增量预训练
3、微调
- Nezha + global pointer
- 原始训练集 + 清洗训练集 + 100w伪标签样本
预训练
-
**训练数据:**204w无标签数据
-
**初始化权重:**nezha-wwm-base
-
**预训练任务:**MLM
-
参数设置:
lr:2e-5
max length:128(动态padding)
batch size:128
epoch:5
mlm probability:0.15
微调
- 通过伪标签蒸馏策略,充分利用无标注数据增强单模型效果
- K折融合减少伪标签噪声
- 清洗样本减少标注噪声
创新
领域预训练
- MLM (Masked Language Model):遮蔽词语言模型
- WWM (Whole Word Mask):全词遮蔽
- Ngram Mask:词片段遮蔽
MLM | WWM | Ngram Mask | CPR data | 初赛指标 |
---|---|---|---|---|
0.8101 | ||||
√ | 0.8116 | |||
√ | 0.8108 | |||
√ | 0.8113 | |||
√ | √ | 0.8120 | ||
√ | √ | √ | 0.8124 | |
√ | √ | 0.8125 |
结论:在数据量大的情况下简单的MLM足以有很好的效果。
伪标签+数据清洗
- 通过K折伪标的方式对单模型蒸馏,使单模型性能逼近多模型,方便落地;
- 通过修改伪标签损失比例进一步减少伪标噪声的影响;
- K折清洗缓解标注噪声对模型的影响,也可作为一种数据增强手段。
模型 | 伪标数据量 | 损失比例 | 数据 | 复赛指标 |
---|---|---|---|---|
nezha base | - | - | 原始 | 0.8154 |
nezha base | 50w | - | 原始 | 0.8161 |
nezha base | 100w | - | 原始 | 0.8164 |
nezha base | 100w | 清洗 | 0.8166 | |
nezha base | 100w | 0.45 | 清洗 | 0.8172 |
nezha base | 100w | 0.5 | 清洗 | 0.8174 |
nezha base | 100w | 0.5 | 清洗+原始 | 0.8175 |
损失计算方式:
1、批次内包含标注样本和伪标样本:
L
=
(
1
−
α
)
∗
l
o
s
s
(
l
a
b
e
l
e
d
)
+
α
∗
l
o
s
s
(
p
s
e
u
d
o
)
L=(1-α)*loss(labeled)+α*loss(pseudo)
L=(1−α)∗loss(labeled)+α∗loss(pseudo)
2、批次内只包含标注样本:
L
=
l
o
s
s
(
l
a
b
e
l
e
d
)
L=loss(labeled)
L=loss(labeled)
3、批次内只包含伪标样本:
L
=
α
∗
l
o
s
s
(
p
s
e
u
d
o
)
L=α*loss(pseudo)
L=α∗loss(pseudo)
训练策略
swa(随机权重平均)
- 平均最后五次验证checkpoint权重,避免陷入局部最优,提升模型泛化能力;
- 性能约提升2-3万分点。
动态融合nezha后三层输出
- 性能约提升2万分点。
差分学习率+逐层降低学习率
- 放大任务层学习率;
- 将nezha参数按照layer分为3组,越靠近任务层的组学习率越大
对抗训练
- 使用AWP(Adversarial Weight Perturbation)增强模型的抗干扰能力,相比FGM提升1.4k左右。
模型优势
- 选择global pointer作为下游任务层,性能、训练速度、推理速度都优于CRF结构,更适应落地需求;
- 使用 预训练 加 伪标签蒸馏 的方式,充分利用无标注样本来提升单模型效果,使得单模型性能逼近多模型;
- 多种优化策略,增强模型在实际场景中的鲁棒性。
总结
创新性
- 使用分层学习率、对抗训练、swa等技术,增加模型拟合性能和鲁棒性;
- 采用预训练和伪标签结合的方式,在有限的场景下提高单模型的性能;
- 通过多折交叉清洗,在避免引入人工的前提下减少数据噪声的影响。
思考和展望
- 在伪标签构造部分直接选取了所有样本,之后可以尝试使用预测分数过滤掉部分置信度低的预测样本,提高训练效率;
- 可以使用模型蒸馏的方式对模型进一步压缩;
- 引入领域词典等额外特征增强模型的效果。
公众号:自然语言处理及深度学习