第16名解决方案 - CommonLit评估学生摘要竞赛
竞赛排名:第16名
发布时间:2023年10月13日
团队:Minh Tri Phan (@shinomoriaoshi), Raja Biswas (@conjuring92), yao (@syhens)
第16名解决方案
感谢Kaggle和@cookiecutters举办这场有趣的比赛。祝贺所有获奖者和金牌得主。感谢才华横溢的队友@conjuring92和@syhens的杰出贡献。
特别感谢@tsunotsuno在LGBM技巧方面的出色工作,以及所有参赛者无私的分享和努力。
前言
- 我们认为本次竞赛是分布外预测的完美示例,因此不完全信任本地CV或公开榜(LB)。我们通过训练稳定性、部分CV、部分LB以及模型多样性来评估模型
- 因此我们尝试设计尽可能多的模型架构和训练技术
模型1 - Transformer + Catboost
Transformer模型
CV/LB/PB: 0.552/0.488/0.556
- 输入:文本 + [SEP] + prompt_question
- 损失函数:MCRMSE
- 骨干网络:deberta-v3-large
- 超参数:
- max_length: 256
- pooling: attention
- random-reinit: 1
- differential learning rate factor: 2.6
- lr: 1e-5
- 训练轮次:4轮
- 每轮结束后评估
- 增加2个完整拟合的检查点,使PB提升0.003
GBDT - Catboost
CV/LB: 0.513/0.443/0.484
- 超参数:
- learning_rate: 0.05
- Cat_features = ["summary_n_sentence"]
- 特征:
- summary_length, summary_n_sentence, 句子平均编辑距离等
- 移除了拼写错误、词性标注等特征
- 移除prompt_length在CV上有轻微提升,但对LB/PB无帮助
- 总推理时间:32分钟
模型2 - 跨度模型
- 通过随机分组与特定提示相关的N个摘要并将它们的分数一起预测,将问题重新构建为跨度回归任务
- 预测基于由提示文本中前8个最重要的句子组成的上下文
- 句子重要性值通过计算该句子与提示所有摘要的平均余弦相似度确定
- 使用MSE损失函数处理上下文和措辞目标
- 将内容和措辞分数离散化为16个区间创建辅助目标,并对辅助目标使用ArcFace损失
- 在每个跨度示例中对摘要使用排序损失
- 推理时,N个摘要的随机分组提供了类似TTA的效果
- 使用2个完整拟合检查点的Private LB:0.473
模型3 - 搜索方法
- 输入文本由上下文和学生摘要组成
- 上下文:
- 基于余弦相似度分数从提示文本中检索与摘要最相似的3个句子
- 连接提示标题和提示问题
- 使用BCEWithLogitsLoss训练模型:
- 将分数缩放到0-1之间
- 使用BCEWithLogitsLoss计算缩放分数与logits之间的损失
- 使用2个完整拟合检查点的Private LB:0.476
模型4 - 长上下文
- 参数:
- max_len: 1024
- lr: 2e-5
- weight_decay: 1e-2
- n_epochs: 3
- 1轮后启用AWP和EMA
- 每轮评估10次
- 推理时间:205分钟(4折)
- CV/Public LB/Private LB: 0.499/0.438/0.462
- 骨干网络:OpenAssistant/reward-model-deberta-v3-large-v2
- 问题:推理时间过长,不适合集成
模型5 - 双编码器迁移学习
- 模型思想:
- 不是在通过骨干网络前连接文本和提示信息,而是在Transformer之后连接它们。一个好处是许多摘要共享相同的提示,可以只计算一次并放入哈希表
- 为解决文本与提示之间缺乏连接的问题,从长上下文模型加载训练好的骨干网络(使用连接文本和提示训练,长序列长度),冻结顶部12层,训练第二阶段模型
- 参数:
- max_len context: 1536
- max_len text: 512
- n_epochs: 1
- 50步后启用AWP和EMA
- 使用LGBM技巧
- 推理时间:39分钟(4折)
- CV/Public LB/Private LB: 0.500/0.445/0.470
最终集成
我们将上述模型与@tsunotsuno的公开模型(实际自行训练而非直接使用)进行集成。在集成阶段,我们观察到CV与Public LB之间存在非常混乱的相关性。例如,我们简单取各模型预测结果的平均值,通过约束优化权重以防止过拟合。
未成功的方法
- 尝试从LLMs(T5和Llama)生成合成数据,但完全没有效果
- 对目标模型使用LoRA训练获得0.53+的CV分数,但在本地集成中无帮助
团队成员