443. Coleridge Initiative - Show US the Data | coleridgeinitiative-show-us-the-data
我将在这里列出我们方案中的一些显著特点,感谢我的队友 @dathudeptrai 在这次比赛,尤其是后半段付出的巨大努力。
他的方案是基于常用 MLM 骨干网络的度量学习,具体细节我会留给他稍后补充。我们找不到让我们的集成模型表现稳定的方法,所以最终我们分别提交了各自的模型,我的最终提交得分为 0.565,而他的是 0.576。
我的是一个带有 CLM 骨干网络和束搜索的文本提取模型,这里使用的是 GPT。我也尝试过用未来掩码修改 Roberta 和 Scibert,基本上是把它们变成 CLM,但到目前为止 GPT 的效果最好。
GPT 有效而 Roberta 失败的原因在于 Roberta 太“聪明”反被聪明误。当你试图构建一个只有单一查询(寻找数据集名称)的文本提取模型时,Roberta 不需要关心上下文,它会试图找到一个最像数据集名称的子字符串,从而导致过拟合。
在我的 GPT + 束搜索模型中,GPT 被强制去预测下一个 token 是否是数据集名称的开始(仅给定之前的上下文),然后预测下一个 token 是否是该提及的结束(给定起始点和目前已提取的内容)。为了使其更鲁棒,我使用了几个数据集来源,并用这些随机标签替换了原始训练集中 95% 的提及。有趣的是,https://www.kaggle.com/datasets 是我能找到的最好的增强来源,尽管它与公开(可能还有私有)标签没有任何重叠。
架构与我在 Tweet 提取比赛中使用的非常相似。我们复用了 XLNet 用于 SQuAD 的解码器头,不是独立预测开始和结束索引,而是先预测开始索引,然后利用该信息预测对应的结束位置。
对于训练,我们正常预测开始索引。
我们获取目标索引处的隐藏表示(忽略预测值)并将其连接到每个位置的表示中。这个新的表示随后被送入一个 MLP 来预测结束索引:
推理过程稍微复杂一点:
我选定的提交在 Private LB 上得分 0.565,但我所知道的最好成绩是 0.594。我只取了在语料库中至少出现 4 次的预测,罕见的预测只有在包含像 'Data', 'Survey' 等词时才会被选中。我尝试使用 scispacy 的缩写检测器为我的最终提交添加更多预测,但这实际上降低了我的分数,我本应该首先信任我的模型。