478. Feedback Prize - Evaluating Student Writing | feedback-prize-2021
我要感谢主办方提供了出色的数据集和比赛,特别要感谢我的队友 @nazarov 和 @tikutiku,我从他们身上学到了很多东西。
我们使用了按文本ID分组的5折 StratifiedGroupKFold 方法。起初我没有在后处理阶段进行验证,但由于后处理是最终得分的重要组成部分,我转而使用了公共Notebook中的 min_thresh 和 proba_thresh 方法。起初我们的CV(交叉验证)与LB(排行榜)一致性很好,但似乎在超过0.710的LB界限后开始出现分歧。
像大多数其他团队一样,我们很快发现,虽然 Longformer 和 BigBird 很方便,但效率很低,而像 Deberta 这样的模型似乎表现要好得多。@nazarov 在构建流程方面做得非常出色,利用加权重叠来分割和合并长序列(Tom 在我们合并之前也有类似的方法),这使我们能够使用以下模型:
通常训练5个Epoch。我们发现结果对Batch Size非常敏感,BS=4 似乎是一个最佳点,使用 LR=1e-5 和余弦衰减。我能够在我的GPU上使用 DeepSpeed 训练 deberta-xlarge,设置 BS=2 和梯度累积=2。
我们的模型还使用了多样本丢弃,我的模型在头部使用了一个注意力层。我们还使用 BIEO 方案训练了几个模型。我们还将所有的 "\xa0" 字符替换为空格。
为了增加多样性,我们使用了一系列损失函数:交叉熵、修改后的 Dice Loss(因为 Dice 和 F1 是等价的),Tom 使用了条件随机场 (CRF)。
概率在 0.03-0.07 范围内的随机Token掩码。
我们唯一使用的方法是 min_thresh 和 proba_thresh 方法,这些方法是通过OOF预测进行优化的,还有链接证据方法以及一种确保只有一个“Lead”预测的方法。Tom 在比赛的最后几个小时里英勇地尝试在PP中使用文章主题聚类,但我们时间不够了。不幸的是,我们错过了梯度提升树后处理的Notebook。
集成比较棘手,因为CRF方法在维特比解码后输出的是硬标签而不是logits/概率。我们发现,将OHE(独热编码)CRF预测与其他模型的Softmax概率取简单平均值,效果优于线性模型或第二阶段堆叠模型。
我还设法建立了一个流程来创建精确的Token到单词的映射,这使得大部分预测分割可以使用张量而不是昂贵的for/while循环来完成。这比公共Notebook中的方法快了不少,并允许我们在时间限制内集成更多的模型。
为了选择最终的集成模型,我使用了我在 CommonLit 比赛中用过的一种类似技术:从一个包含所有模型的篮子开始,根据其对CV F1分数的影响,每次迭代移除一个模型,直到我得到一个能在时间限制内运行且信息量最大的模型篮子。
我们最终的两次提交使用了: