返回列表

How We Found "Magic" (13th Solution Overview)

362. Google QUEST Q&A Labeling | google-quest-challenge

开始: 2019-11-22 结束: 2020-02-10 自然语言处理 数据算法赛
我们是如何发现“魔法”的(第13名方案概览)

我们是如何发现“魔法”的(第13名方案概览)

作者: Tonghui Li
比赛排名: 第13名

这是我第一次参加NLP比赛,很感激能获得我的第一枚金牌。能与我才华横溢且极其努力的队友们 @chanhu@xiaojiu1414@serigne@seif95 合作,是一种极大的荣幸。

我们的模型集成与其他团队分享的方案没有什么不同,包括 bert base、bert large、xlnet 和 roberta。我想分享一下我对提交技巧的思考过程。

在此之前

我们使用的一些建模技巧包括:

  • 针对问题和答案使用独立的回归头;
  • 头部和尾部分词;
  • 将拼接的 [CLS] 向量作为回归输入;
  • 将 USE 差异和实体嵌入作为 Bert 中的外部特征。

我个人曾认为“魔法”会在于巧妙的损失函数,我尝试了许多不同的损失函数,包括基于排序的自定义 BCE,但没有一个显著优于原始的 BCE。值得一提的是,在比赛初期,我训练了一个 MSE 模型,在与我的 BCE 模型简单融合后,它带来了不错的提升,但它与“魔法”技巧配合得并不好。

回到“魔法”

我的队友已经分享了我们的后处理代码。我将解释我们是如何想出其中的每一个步骤的。

第一个小技巧是文化列表。这部分仅针对第19列,即 question_type_spelling。这来自于一个观察:只有当主机是 english.stackexchange.comell.stackexchange.com 时,该列才非零。

第二个(也是更重要的)部分是基于这个讨论,在预测值之间建立等式关系。

最初的尝试 是假设有90个评分者并对输出进行四舍五入。我相信你们很多人可能都熟悉这个假设。这给我们带来了大约0.03的巨大提升。也就是在那时,我发现我的 BCE 和 MSE 融合模型在应用这个技巧后效果并不好。经过后处理,融合模型的性能远不如我的单 BCE 模型。

改进 这个技巧源于对训练标签的深入研究。假设90个评分者的假设是真的,如果我是评分者之一,我会给一些问题随机打分。这意味着如果这些分数真的是由人类给出的,那么每一列应该有90个(或接近)唯一值。根据唯一值的数量,很容易推断出每一列的实际评分者数量。一个令人欣慰的事实是,对于评分者数量相同的列,其唯一值列表总是相同的。

这个改进起初并没有像我预期的那样奏效。 但根据我的观察,我真的相信这条路是对的。然后我意识到,因为评分者数量太稀疏,而且某些列的原始预测值真的很小,四舍五入可能将许多预测值压缩为0。考虑到比赛指标只关心排序而不是实际数值,Min-max 缩放 这些预测值就成了顺理成章的做法。缩放又给我们带来了约0.02的提升。

最后

再次感谢,我在这次比赛中过得很愉快,也学到了很多关于 NLP 的知识。但正如你所见,主要的提升来自于后处理。我想一个收获是,如果你在比赛中遇到了瓶颈,一定要再回头看看数据。

干杯!

同比赛其他方案