574. CommonLit - Evaluate Student Summaries | commonlit-evaluate-student-summaries
感谢主办方组织这次竞赛,也感谢所有分享宝贵信息的参与者。我学到了很多。
我的方法是平均以下两个模型:
后一个模型的关键点是使用注意力掩码,仅关注摘要文本部分,这是其他顶级解决方案中提到的技巧。
我训练了如下表所示的deberta模型。其中8个是deberta-v3-large,2个是bart-large。bart-large模型将提示文本作为编码器输入,摘要文本作为解码器输入(但实际效果可能不太理想)。交叉验证策略使用Group K折(以prompt_id分组)。
| 实验ID | 模型 | 输入 | 池化方法 | 最大长度 | 轮数 | 冻结层 | 损失函数 | AWP | CV | 公开榜 | 私有榜 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | deberta-v3-large | 文本 | 注意力 | 822 | 10 | 18 | smooth l1 | 否 | 0.542 | 0.494 | 0.541 |
| 2 | bart-large | 文本, 问题+提示文本 | 均值 | 822 | 4 | - | smooth l1 | 否 | 0.555 | 0.514 | 0.556 |
| 3 | deberta-v3-large-squad2 | 文本 | 注意力 | 822 | 4 | 18 | smooth l1 | 否 | 0.581 | 0.496 | 0.549 |
| 4 | deberta-v3-large | 文本 | 注意力 | 822 | 10 | 18 | smooth l1 | 是 | 0.535 | 0.488 | 0.532 |
| 5 | bart-large | 文本+问题, 提示文本 | 注意力 | 822 | 10 | - | smooth l1 | 是 | 0.533 | 0.486 | 0.510 |
| 6 | deberta-v3-large | 问题+标题+文本 | 注意力 | 822 | 10 | 18 | smooth l1 | 否 | 0.538 | 0.497 | 0.563 |
| 7 | deberta-v3-large | 问题+标题+文本 | 注意力 | 512 | 4 | - | smooth l1 | 是 | 0.628 | 0.519 | 0.535 |
| 8 | deberta-v3-large | 标题+问题+文本 | 多尺度 | 822 | 10 | 18 | smooth l1 | 是 | 0.535 | 0.477 | 0.538 |
| 9 | deberta-v3-large | 文本 | 注意力 | 822 | 4 | 18 | MSE+排序 | 否 | 0.551 | 0.487 | 0.544 |
| 10 | deberta-v3-large | 文本+标题+问题+提示文本 | 见下文 | 训练:1800 预测:1024 | 4 | 18 | smooth l1 | 否 | 0.504 | 0.461 | 0.47 |
所有训练都使用了0.8-0.9的层间学习率衰减。
我使用LightGBM堆叠了9个模型(实验ID 1-9),使用的元特征包括:
该堆叠模型交叉验证分数达到0.478。
最终提交结果是堆叠模型和长token模型(实验ID 10)的简单平均,交叉验证分数0.471,公开榜0.433。我也尝试了nelder-mead权重优化,但效果不如简单平均。
最初我将摘要和提示文本直接连接输入deberta-v3-large,但交叉验证没有提升。我意识到需要让模型识别摘要文本的位置,因此准备了注意力掩码来标记摘要、标题、问题和提示文本的位置。
注意力掩码示意图
这些掩码与deberta输出结合使用,模型架构如下:
模型架构图
该模型训练时token长度设为1800,但预测时受9小时时间限制只能缩减到1024。该模型(实验ID 10)显著提升了挑战性提示的交叉验证分数,达到CV 0.504,公开榜0.461,推理时间超过4小时。
我注意到当摘要大量复制提示文本时会出现显著误差,这些摘要内容和语言表达得分都很低。评分者遇到这类摘要时往往会停止阅读并直接给低分。因此我尝试计算摘要句与提示句之间的编辑距离,构建N×M相似度矩阵:
编辑距离相似度矩阵
将该矩阵输入CNN模型生成目标值,但效果不如预期(该想法来自这篇论文)。