返回列表

[11th solution] Feature design and Knowledge distillation

504. Feedback Prize - Predicting Effective Arguments | feedback-prize-effectiveness

开始: 2022-05-24 结束: 2022-08-23 智能评测 数据算法赛
[第11名方案] 特征设计与知识蒸馏

[第11名方案] 特征设计与知识蒸馏

作者: Tifo (Grandmaster) | 排名: 第11名 | 发布日期: 2022-08-24

首先,感谢主办方举办了这场有趣的比赛,也感谢社区分享的那些精彩想法,给了我很多启发。

有效的方法

  • 预训练
  • 特征设计
  • 伪标签
  • 知识蒸馏

Transformer 模型

  • Deberta-v3-large
  • Deberta-large
  • Deberta-xlarge

特征设计

1. 将同一篇文章中不同的 discourse_id 拼接起来,并预测标签的 token 概率:

[CLS LEAD] lead discourse [END LEAD] [CLS POSITION] position discourse [END POSITION] ...

2. 直接预测文章中 [CLS][END] 标签的 token 概率:

essay.... [CLS CLAIM] I think that the face is a natural landform because there is no life on Mars that we have descovered yet [END CLAIM] essay ...

就我而言,使用完整文章训练模型比不使用文章(如特征 1)效果更好,但这同时也增加了一些多样性。

3. 添加分类器标签:

essay.... [CLS CLAIM] [Ineffective] [Adequate] [Effective] I think that the face is a natural landform because there is no life on Mars that we have descovered yet [END CLAIM] essay ...

这一次,预测的概率不是 [CLS][END],而是 [Ineffective][Adequate][Effective]。激活函数使用的是 Sigmoid 而不是 Softmax。然后这3个标签的概率会被缩放到1。这也能增加多样性。

4. 预测一个片段中的所有 token,并取平均值作为话语概率。

预训练

我使用 feedback-2021-data 进行模型预训练,这可以将模型性能提升约 0.003。

伪标签

我在伪标签上花了很多时间,特别是在使用伪标签(额外的更多数据)训练模型时。
在早期阶段,我尝试了硬标签,但没有带来任何提升。最终,概率的软标签在模型性能上带来了一些提升(损失函数使用的是 soft cross entropy)。

知识蒸馏 (KD)

就我而言,在模型融合时,KD 比伪标签效果更好。我发现蒸馏损失权重越高,CV(交叉验证)分数越好,但 LB(排行榜)分数越差。因此,我在训练早期采用较高的蒸馏损失权重,在后期降低权重,这可以同时提升 CV 和 LB。

后处理

我没有额外的时间去探索后处理方法,所以我只使用了加权平均。

总之,在这场比赛中单打独斗有点难。还有很多事情我还没来得及尝试。

同比赛其他方案