返回列表

19th place solution

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

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

第19名方案

作者: Nickil Maveli | 比赛排名: 19

恭喜 @rafiko1@leecming 赢得第一名,除了长期占据公共排行榜榜首之外,还要感谢 Google Jigsaw 主办第三届毒性评论分类挑战赛。

我们决定将模型分为3个部分。每个模型旁边列出的数字表示它们属于哪个部分。

模型:

  • XLM_RoBERTa_Base,采用不同的架构/轮数/学习率/增强 (I)
  • XLM_RoBERTa_Large,采用不同的架构/轮数/学习率/增强 (I)
  • XLM_RoBERTa_Large_MLM_training (I)
  • Multilingual_BERT(区分大小写和不区分大小写的变体) (II)
  • BERT(区分大小写和不区分大小写的变体) (II)
  • RNN:在翻译后的训练集上使用 fasttext 对齐词向量嵌入的池化双向 GRU (III)
  • RNN:在翻译后的测试集上平均 fasttext + glove + paragram 嵌入的池化双向 LSTM + GRU + 注意力机制 (III)
  • 弱学习器:在翻译后的训练集以及平均的翻译测试集上的 NB-SVM (III)
  • 弱学习器:在翻译后的训练集以及平均的翻译测试集上的 SGD (III)

总体而言,大约组合了50个模型,其中属于同一类型(父类)的基础模型进行了平均。因此,所有 varieties 的 XLM_RoBERTa_Base 模型都进行了平均,依此类推。

第一层融合过程:

(I) -> (XLM_RoBERTa_Base * 0.1) + (XLM_RoBERTa_Large * 0.5) + (XLM_RoBERTa_Large_MLM_training * 0.4)

(II) -> (Multilingual_BERT * 0.2) + (BERT * 0.8)

(III) -> (RNN * 0.6) + (WeakLearner * 0.4)

最终融合过程:

toxic = (I) * 0.8 + (II) * 0.1 + (III) * 0.1

后处理:(提升 0.0005)

我认为这是我们方法的主要亮点。就在比赛结束前一天,@veryrobustperson 发现,与得分较高的提交相比,我们大多数得分较低的提交都存在过度预测的情况。基于这一假设,我们尝试通过引入概率随机噪声来引入一个小的惩罚,从而对 >0.8 以及 <0.01 的预测引入重新缩放因子。我相信这里有很多值得探索的地方,但由于提交次数不足且时间缺乏,我们无法深入研究并进一步优化。对于我们尝试的两次不同的提交,分数提高了约 0.0005,因此我们认为即使在私有排行榜测试数据上,它也能很好地泛化。幸运的是,确实如此。

无效或未能实现的方法:

  • 伪标记:将 < 0.2 设为 0,将 > 0.8 设为 1。
  • 在 1024 维 laser 嵌入上训练梯度提升算法。
  • 将测试概率硬编码为验证集中的基本事实,因为我们发现基于 laser 嵌入的余弦相似度约有 1000 个样本重叠。
  • jigsaw-unintended-bias-train.csv 中毒性概率的最佳阈值更改为 0.2 到 0.3 之间的值,因为 0.5(默认舍入)看起来极度偏向无毒。
  • 使用外部数据集,包含6种语言的仇恨言论、毒性词汇列表。
  • 标签平滑。
  • Wordbatch FM_FTRL。
  • 基础模型的幂平均。

最后,感谢我的队友 @veryrobustperson@ipythonx,感谢我们进行的精彩讨论并不时提出新想法。我们差点就进入金牌区

同比赛其他方案