540. Learning Equality - Curriculum Recommendations | learning-equality-curriculum-recommendations
我要感谢组织者举办这场既有趣又具有重要意义的比赛。通过参与其中,我学到了很多东西。也要感谢所有分享解决方案的人,我从展示的许多方法中学到了很多。
我的解决方案包含3个阶段,遵循了本次比赛中最流行的范式——检索、重排序和在校验集上校准结果以选择阈值。
流程的高层图示:
我的总体策略是保持第一阶段的推理简单快速,并在第二阶段使用较重的Transformer模型进行繁重的工作。
基线模型是 sentence-transformers/paraphrase-multilingual-mpnet-base-v2,并通过更好的训练集对其进行迭代微调。
第一阶段的输出是分配给每个主题的一组内容候选。候选选择基于相似度分数阈值(而不是Top-K近邻)。这在几个方面很有帮助:
对于每个主题,我从训练集构建了一个反向主题树。在笔记的其余部分,我将其称为[主题路径]:
(示例)
/12. 20: Bird Reproduction/12: Vertebrates/Book: Introductory Biology/Introductory and General Biology/Bookshelves/Libretext Open Educational Resource Library
我将以下列连接成字符串作为模型的输入:
第一阶段成功的关键在于找到最优的训练集。挑战在于如何为训练选择负样本,因为简单的随机采样会导致模型较弱。
为了创建最优训练集,我创建了以下过程:
早期帮助我的CV/LB的一个关键决定是使用多重负样本排序损失,这显著加速了训练。在上述训练过程中,假阳性候选与MNRL配合得很好,因为在一个批次中,我们可以跨多个主题混合困难和简单样本。但有一个问题——MNRL的要求之一是对于每个样本对 (a_i, p_i):所有的 p_j (j!=i) 和所有的 n_j 都被视为负样本,这在困难负样本的情况下很可能会被打破。为了使其工作,我创建了一个精心设计的训练集准备过程,在训练开始前“预先安排”批次。
对于每个批次:
我将训练数据原样传递给数据加载器,不进行打乱,批次大小与预处理步骤中使用的相同。
在上述过程进行了足够的迭代训练后(最终F2/Precision/Recall停止提高),我采用最好的模型,并在最新的训练集上使用对比损失进一步微调,使用标准的训练过程。
对于第一阶段,我CV中最好的F2分数是0.65。我在达到这些结果时没有提交基于第一阶段的解决方案,因此我没有相应的LB分数。
不同阈值下的平均候选数与召回率如下:
| 阈值 | 平均候选数 | 召回率 |
|---|---|---|
| 0. |