返回列表

1st place solution overview

387. Jigsaw Multilingual Toxic Comment Classification | jigsaw-multilingual-toxic-comment-classification

开始: 2020-03-23 结束: 2020-06-22 内容安全 数据算法赛
第1名解决方案概述

第1名解决方案概述

作者: Chun Ming Lee, Rafi Hai
比赛: Jigsaw Multilingual Toxic Comment Classification

首先,我们要感谢 Kaggle/Jigsaw 举办了一场毫无争议的比赛,同时也要祝贺其他的奖牌获得者。

太长不看版 (TL;DR)

  1. 集成,集成,还是集成
  2. 伪标签
  3. 用多语言模型进行引导,用单语言模型进行精炼

自从我在 2018 年有毒评论分类竞赛中获胜以来,我就没有参加过 Kaggle 比赛。当时 NLP 分类的最先进技术是非上下文词嵌入(例如 FastText),我很好奇在 Transformer 的世界里我是否还能表现出色。我很惊喜能和我的队友 @rafiko1 取得如此好的成绩。

我们的公开排行榜里程碑

  • 基线 XLM-Roberta 模型(公开 LB: 0.93XX - 3月31日)
  • XLM-R 模型的平均集成(0.942X - 4月3日)
  • 与单语言 Transformer 模型融合(0.9510 - 4月23日)
  • 团队合并 - 我们个人最佳提交的加权平均(0.9529 - 4月28日)
  • 与单语言 FastText 分类器融合(0.9544 - 5月5日)
  • 后处理及其他优化(0.9556 - 6月13日)

你会注意到我们在 4 月底就登上了公开排行榜的最终第一名。换句话说,我们等了 2 个月才等到比赛结束 :)

交叉验证策略

我们最初混合使用了 k 折交叉验证和留出验证集,但随着我们改进测试预测并使用伪标签 + 验证集进行训练,验证指标变得非常嘈杂,以至于我们主要依赖公开 LB 分数。

洞察

集成以减轻 Transformer 训练的变异性

已经注意到 Transformer 模型的性能受初始化和数据顺序的影响很大(论文链接1, 论文链接2)。为了减轻这种影响,我们强调了集成和装袋我们的模型。这包括时间自集成。鉴于公开测试集,我们采用了迭代融合的方法,通过前一次最佳提交和当前模型预测的加权平均来细化测试集预测。我们从简单的平均开始,逐渐增加前一次最佳提交的权重。对于训练数据,我们主要使用每次模型运行中 2018 年有毒评论翻译的子样本。

伪标签 (PL)

当我们使用测试集预测作为训练数据时,我们观察到了性能提升——直觉是它有助于模型学习测试集分布。使用所有测试集预测作为软标签比任何其他版本的伪标签(例如,硬标签,置信度阈值 PL 等)效果更好。在比赛结束时,我们发现对 PL 进行上采样会给 LB 带来轻微但实质性的提升。

多语言 XLM-Roberta 模型

像大多数团队一样,我们从一个普通的 XLM-R 模型开始,将 2018 年数据集的 6 种测试集语言的翻译作为训练数据。我们在最后一层的 CLS 标记上使用了普通的分类头,配合 Adam 优化器和二元交叉熵损失函数,并以低学习率微调整个模型。鉴于 Transformer 模型有数亿个可训练权重用于相对简单的二元预测任务,我们不相信默认架构需要太多调整就能通过模型获得良好的信号。因此,我们没有在超参数优化、架构调整或预处理上花费太多时间。

外语单语言 Transformer 模型

@rafiko1 和我在组队前独立发现了这项技术。我们都受到了 MultiFiT 论文的启发——具体来说:

MultiFiT Paper Image

当我们使用来自 HuggingFace 的预训练外语单语言 Transformer 模型处理测试集语言时(例如,Camembert 用于法语样本,Rubert 用于俄语,BerTurk 用于土耳其语,BETO 用于西班牙语等),我们观察到显著的性能提升。

我们针对 6 种语言中的每一种微调了模型——通过将 2018 年有毒评论的翻译与该特定语言样本的伪标签(最初来自 XLM-R 多语言模型)结合起来,训练相应的单语言模型,预测相同的样本,然后将其融合回所有预测的“主分支”。这是协同增效的,因为训练模型 A -> 训

同比赛其他方案