返回列表

3rd place solution

574. CommonLit - Evaluate Student Summaries | commonlit-evaluate-student-summaries

开始: 2023-07-12 结束: 2023-10-11 智能评测 数据算法赛
```html

第三名解决方案

作者:Dmitrii Krasnov(MASTER)

发布时间:2023年10月12日

投票:43票(44票支持)

比赛排名:第3名

我的解决方案相当简单,因为我几乎没有使用复杂的技巧——相反,我只是构建了一个可靠的流程并找到了合适的超参数。我有一些很棒的想法(至少我自己这么认为 :))——利用增强技术,并基于commonlit.org上的其他文本使用大模型生成合成数据。但那时,当我还在积极贡献时,文本的许可存在不确定性,我没有完成增强技术的使用——我忙于工作(尝试让RLHF生效),所以我退出了比赛——我最后一次提交是一个月前。但显然这个决定是正确的,至少我没有过拟合 :)

现在让我们将我的解决方案分解为几个部分。

1. 数据:

我使用了相当标准的模板:提示词 + 问题 + 文本。在比赛末期,我深入挖掘数据并进行了良好的预处理——毕竟,有很多非常相似的论文具有相同或不同的分数。因此,我尝试通过相似性(如莱文斯坦距离)找到这些样本,然后将它们合并。此外,我基于这一洞察决定进行增强——如果有很多相似的论文(仅因拼写错误而不同)——我可以使用类似反向自动校正的方法——用相近的词汇随机替换某些词。仅使用这一技术,我在fold3上就获得了0.453的私有分数(比我最终选择的混合模型更好,可能让我获得第二名)——但那时我太累了,没有进一步研究增强技术。但我认为增强技术很可能让我赢得比赛。

2. 模型

Deberta是王者,所以这里没什么好说的。我尝试使用像Llama这样的解码器模型,但Deberta仍然更好。一些技术给了我提升——使用EMA(老实说,没有EMA会非常不稳定,所以它可能是必需的)和使用差异学习率。我尝试了几种池化选项,但对我而言最好的选择是连接CLS标记和学生文本的平均池化。我还使用token_type_ids来区分提示、问题和文章。

3. 推理与训练

我采用了以下方案——我在某个折(例如fold0)上尝试找到好的超参数,然后在其他折上使用完全相同的超参数进行训练。然后我提交整个混合模型和4个单独模型(一天共5次提交),第二天重复该过程。我意识到在推理时可以使用maxlen 1500(没有深入研究这个数字,尝试过1024和2048,但1500在效率方面更好),所以在最终混合中我选择了各折中最好的10个检查点(有些折有2个检查点,有些有3个)。首先按折取平均值,然后再取总平均。就是这样。

简要总结有效的方法(按重要性从高到低排序,个人观点):

  1. 使用Deberta

  2. EMA(指数移动平均)

  3. 数据增强

  4. 差异学习率

  5. 自定义池化

  6. token_type_ids

  7. 数据清洗

无效的方法(随机排序):

  1. 解码器模型

  2. AWP(对抗性权重扰动)

  3. FGM(快速梯度方法)

  4. 权重衰减(WD)

  5. 恒定学习率

  6. 手工特征

  7. 使用GBT进行堆叠

最终,对我来说这是一场很好的比赛。去年我参加了另一场NLP比赛并获得银牌,但当时我整天都在努力(那时候我没有工作,所以有很多空闲时间)。这次我也预期是银牌,我认为这是一个不错的成绩,但我获得了第三名。无论如何,这场比赛对我来说很轻松,因为我投入的努力很少(至少与上一场比赛相比)。我希望这意味着我今年会有很大成长——我认为这是参加Kaggle的主要目标。

祝大家一切顺利。

```
同比赛其他方案