安娜·范德·斯特尔的照片发布在Unsplash上
近日,谷歌举办的Quest问答标签大赛结果出炉,由德米特里·达涅夫斯基(Dmitry Danevskiy)、尤里·卡什尼茨基(Yury Kashnitsky)、奥列格·亚罗舍夫斯基(Oleg Yaroshevskiy)和德米特里·阿布哈诺夫(Dmitry Abulkhanov)组成的四人团队Bibimorph获得冠军。

在QUEST问答标签竞赛中,参与者被要求为不同的问题和答案建立预测算法。比赛提供的数据集包含数千个问答对,大部分来自StackExchange。问题和答案都有标签,以反映问题的好坏和答案是否相关。竞赛的结果将有助于推动问答系统的发展。
在对获胜者的采访中,Bibimorph团队宣布了他们解决这一挑战的独特方法。
Q1:请分享你的背景,包括你是如何开始你的卡格尔之旅的?
我有应用数学和物理学的背景。四年前,我开始关注工业应用中的机器学习。两年来,我一直在一家小型人工智能服务公司工作,负责时间序列分割、人脸识别、语音处理以及复杂深度学习解决方案的实现。现在在一家名为Respeecher的初创公司工作,是从事音频合成前沿研究的首席工程师之一。多年来参加过不同的Kaggle比赛。我认为现代的深度学习方法非常普遍,几乎可以应用于任何非结构化和结构化的数据。这听起来可能有争议,但我用经验证明了它可以在图像、文本、音频和表格数据比赛中获得金牌。赢得Google Quest竞猜标签比赛对我来说尤为重要——我成功获得了特级大师的称号。
尤里·卡什尼茨基
我是物理学和应用数学博士。小时候热衷于航空空技术,于是进入莫斯科物理技术学院学习航空空。当时开始编程,学会了用Python处理VR应用的数据库。在数据库和商业智能工作了几年后,我回到学校,开始了全日制应用数学博士课程。后来,我去邮件。俄罗斯IT巨头Ru集团,担任该公司首位数据科学家。目前,我在荷兰生活和工作,主要从事荷兰国家实验室的RD。在过去的3年里,我一直在领导ML course.ai,这是一个开放的ML课程,非常关注Kaggle比赛。
说到Kaggle,我经历了一个漫长的学习,挣扎,再学习的过程。直到两年前,我才开始认真参加NLP比赛。很长一段时间,当我在mlcourse.ai的学生一次又一次获得金牌的时候,我却幸运地爬到了银牌区的顶端。赢得Google Quest竞猜标签大赛终于给我带来了期待已久的大师称号。
这是Elmo与Nvidia Quadro P6000卡:
Oleg Yaroshevskiy,我有应用统计学和计算机科学的背景。作为一名学生,我对技术对社会的影响感兴趣。在Andrej Karpathy的著名文章《递归神经网络的不合理有效性》的鼓励下,我决定从软件工程转向机器学习。
作为一名研究工程师,我从一开始就为语音处理、机器翻译、机器理解和其他NLP任务设计了深入的模型。2017年7月,我了解了变形金刚,这改变了我的职业生涯。我热爱文学和写作艺术,希望有一天能看到人工智能创作的戏剧。
今天,我是一名研究工程顾问,也是一名活跃的卡格勒。我相信Kaggle有助于在训练深度神经网络和模式识别的背后建立深度直觉。我鼓励其他人尝试数据科学竞赛,并加入这个快速发展的Kaggle爱好者社区。
Dmitriy Abulkhanov I曾就读于莫斯科物理技术学院和Yandex数据分析学院,有数学和物理学背景。作为一名学生,我参加了许多数据科学黑客竞赛。从这些比赛中,我得出一个结论:只要时间足够,没有解决不了的问题。我相信参加比赛可以提供有用的专业知识来解决数据科学中的各种问题。
目前在华为做NLP研究员。
Q2:你的团队是如何组成和协调的?
在TensorFlow 2.0竞猜挑战赛中,我们无缘冠军。为了证明自己,我们参加了Google QUEST智力竞赛。
好在这次比赛的形式和我们之前参加的两次编码比赛是一样的!因此,在Google QUEST问答标签比赛的前2-3周,虽然有许多问题让其他参与者抓狂,但这些对我们来说很容易。
我们四个人合并了,Dmitriy A提出了一个强大的技术,利用StackExchange数据进行语言模型预训练。
Oleg从基于公共笔记本的简单PyTorch基线开始,他还训练了BART模型。Dmiy A .和Yury主要研究预训练语言模型。Dmiy D .带领团队训练模型,制定验证方案和混合模型方案。
我们认为团队合作是一种宝贵的经历,夺冠是大家共同努力的结果。
Q3:你的团队最重要的发现是什么?
简而言之:迁移学习。考虑到我们这次比赛的公开数据集非常小,利用好大量的未标注数据是关键。
但实际上,我们有三个主要秘密:
语言模型预训练伪标签后处理预测秘诀1:语言模型预训练
我们使用了大约700万个StackExchange问题,通过一个掩蔽语言模型的任务和一个预测句子顺序的附加任务来微调BERT语言模型。

除此之外,我们还设置了额外的辅助目标:在对LM进行微调的同时,我们还预测了五个指标——问题得分、查看问题数、最喜欢的问题数、答案得分和答案数。这些目标是基于StackExchange数据设计的。
我们使用定制扩展词汇的原因很简单:StackExchange问题通常不仅包含纯口语,还包含数学和代码。用LaTeX符号、数学公式和一些代码片段扩展词汇有助于捕捉这一事实。
总的来说,LM预培训在改进我们的模型中起着关键作用:
迁移学习。在用比赛数据训练之前,我们的模型已经“看到”了10倍以上的数据。领域适配。由于LM的微调自定义词汇和辅助目标,我们的预训练模型更好地适应了手头的数据。2:虚假标签
伪标签曾经是Kaggle的热门话题,现在已经成为众所周知的常用技术。
图片:“伪标记一种简单的半监督学习方法”教程,Vinko Kodoman
上图总结了这个思路。具体可以参考上面提到的教程。简而言之,对于一些未标记的数据集,模型预测可以作为“伪标签”来扩展已标记的训练数据集。
我们使用来自StackExchange问题转储的20k和100k样本的伪标签来改进四分之三的训练模型。
3:后处理预测
比赛选择的标准是斯皮尔曼协会。对于30个目标标签中的每一个,计算预测值和实际值之间的Spearman相关性。然后平均30个Spearman相关系数,以生成最终测量值。
正如在这篇关于Kaggle的文章中所观察到的,Spearman相关性对一些预测的相等性相当敏感:
上面的例子表明预测向量B可以被“阈值化”以生成b2,从而将其与A的Spearman关联从0.89增加到1。
其实这是整个比赛的缺点之一——目标指标对阈值预测等黑客攻击有点太敏感了。许多团队应用各种阈值启发式方法进行后处理,通常针对每个目标。我们清楚地意识到这是过分的。不过,我们还是对模型预测做了一些后处理。
我们根据训练集中的分布来离散化预测,而不是对预测进行阈值处理。其思想是将特定目标列的预测分布与训练数据集中相应列的相应分布相匹配。其他详情请参考我们的共享解决方案代码:https://github.com/oleg-yaroshevskiy/quest _ QA _贴标/blob/yorko/step 11 _ final/blending _ n _后处理. py # L48。
Q4:你最终的解决方案是什么样的?
基线模型
我们的基线模型几乎是香草伯特和平均池的隐藏状态之上的线性层。至于输入,我们只传递了用特殊记号隔开的问题标题、问题正文和答案正文。
除了上述三个“秘密”,还有一些技术,包括所有BERT层中隐藏状态的softmax归一化权重和多样本丢失。
最终融合
最终的解决方案是将四个模型的折叠预测与上述三个“秘密”结合起来:预训练语言模型、伪标签和后处理预测。
Q5:你从这次比赛中学到了什么?
我们学到了很多!
不要太早参加比赛。先打好技术基础。对于小的训练数据集,重点是以适当的方式利用超大数据集。迁移学习不仅适用于计算机视觉任务,而且在自然语言处理中也很重要。如果是小的训练数据集,请特别注意验证。寻找能够在技能、方法、模型等方面将多样性引入最终解决方案的队友。对刚开始学习数据科学的人有什么建议吗?

我们可以从视频《如何跳入数据科学》中总结出Yury的建议。
有八个主要步骤:
Python .通过Kaggle Learn、Dataquest、codearcademy或者类似的工具学习这种编程语言的基础知识。初级的数据科学家几乎不需要高级的Python技能,但是在工作中使用Python还是不错的。SQL语言。学习基础知识,Kaggle Learn也可以。在面试前更新你的SQL技能,剩下的你会在工作中学习。数学。微积分、线性代数、统计学等基础知识。对于理解要使用的工具集是必不可少的。麻省理工学院的开放课程可能是最好的资源。算法。算法需要用到什么程度是一个有争议的问题,但是可以借鉴R. Sedgewick和T. Roughgarden的经典课程,leetcode也会有所帮助。发展技能。有软件工程背景者优先。“ML工程师”这个词其实现在比“数据科学家”流行多了,因为这个业务不是在Jupyter笔记本上运行的,你得把它部署到生产中去。无论如何,你最好至少知道如何使用git和Docker。机器学习。MLcourse.ai包含基本的ml课程。一些Coursera专业也将是一个很好的起点。至于深度学习,斯坦福大学的cs231n或者fast.ai是两个不错的选择。或者比赛。这很好的证明了你做了一个最小可行的产品。你可以通过手工训练项目学到很多东西。比赛是一个很好的选择,但是不要抱着游戏的心态,充分利用你在Kaggle中学到的知识。面试。不要只是坐在家里学习,做一些面试练习,尝试,失败,学习,迭代,总有一天你会成功的。资源
GitHub上分享的解决方案:https://github.com/oleg-yaroshevskiy/quest _ QA _ labeling/tree/yorokagglenotebook转载了解决方案的推理部分:https://www.kaggle.com/ddanevskyi/.第一名-solutionKaggle的冠军解决方案:https://www . ka ggle . com/c/Google-quest-challenge/discussion/129840 via:https://medium.com/kaggle-blog/ the-3-ingredients-to-our-success-winders-dish-on-thes-solution-quest-a-labeling-c1a 63014 b 88
雷锋。com雷锋网。com


