362. Google QUEST Q&A Labeling | google-quest-challenge
这是我第一次参加NLP比赛,很感激能获得我的第一枚金牌。能与我才华横溢且极其努力的队友们 @chanhu、@xiaojiu1414、@serigne 和 @seif95 合作,是一种极大的荣幸。
我们的模型集成与其他团队分享的方案没有什么不同,包括 bert base、bert large、xlnet 和 roberta。我想分享一下我对提交技巧的思考过程。
我们使用的一些建模技巧包括:
我个人曾认为“魔法”会在于巧妙的损失函数,我尝试了许多不同的损失函数,包括基于排序的自定义 BCE,但没有一个显著优于原始的 BCE。值得一提的是,在比赛初期,我训练了一个 MSE 模型,在与我的 BCE 模型简单融合后,它带来了不错的提升,但它与“魔法”技巧配合得并不好。
我的队友已经分享了我们的后处理代码。我将解释我们是如何想出其中的每一个步骤的。
第一个小技巧是文化列表。这部分仅针对第19列,即 question_type_spelling。这来自于一个观察:只有当主机是 english.stackexchange.com 或 ell.stackexchange.com 时,该列才非零。
第二个(也是更重要的)部分是基于这个讨论,在预测值之间建立等式关系。
最初的尝试 是假设有90个评分者并对输出进行四舍五入。我相信你们很多人可能都熟悉这个假设。这给我们带来了大约0.03的巨大提升。也就是在那时,我发现我的 BCE 和 MSE 融合模型在应用这个技巧后效果并不好。经过后处理,融合模型的性能远不如我的单 BCE 模型。
改进 这个技巧源于对训练标签的深入研究。假设90个评分者的假设是真的,如果我是评分者之一,我会给一些问题随机打分。这意味着如果这些分数真的是由人类给出的,那么每一列应该有90个(或接近)唯一值。根据唯一值的数量,很容易推断出每一列的实际评分者数量。一个令人欣慰的事实是,对于评分者数量相同的列,其唯一值列表总是相同的。
这个改进起初并没有像我预期的那样奏效。 但根据我的观察,我真的相信这条路是对的。然后我意识到,因为评分者数量太稀疏,而且某些列的原始预测值真的很小,四舍五入可能将许多预测值压缩为0。考虑到比赛指标只关心排序而不是实际数值,Min-max 缩放 这些预测值就成了顺理成章的做法。缩放又给我们带来了约0.02的提升。
再次感谢,我在这次比赛中过得很愉快,也学到了很多关于 NLP 的知识。但正如你所见,主要的提升来自于后处理。我想一个收获是,如果你在比赛中遇到了瓶颈,一定要再回头看看数据。
干杯!