kaggle Jigsaw Unintended Bias in Toxicity Classification 金牌rank15分享

这个比赛是NLP中关于文本分类的一个比赛。

1

1563611152986

这也是第二次参加kaggle的比赛,第一次是数据挖掘的比赛成功瞎混了一个银牌。在做过几次数据挖掘比赛中觉得数据挖掘找特征、数据分析搞不过别人。大家都太强了。。后来就不怎么做数据挖掘比赛了。。

因为自己的方向是NLP,所以以后有可能就更关注nlp的比赛了。

虽然队伍五个人,但是其实就是和其他两个队友一起努力了一个月的成果。。也在这感谢队友一起的努力互相学习。

比赛链接

https://www.kaggle.com/c/jigsaw-unintended-bias-in-toxicity-classification

题目分析/数据分析

这个比赛是一个文本分类的比赛,这个比赛目标是在给定文本中判断是否为恶意评论即01分类。训练数据还给了其他多列特征,包括一些敏感词特征还有一些其他指标评价的得分特征。测试集没有这些额外的特征只有文本数据。具体的特征就不在这里详细介绍了。

通过比赛的评价指标可以看出来,这个比赛不仅仅是简单的01分类的比赛。这个比赛不仅关注分类正确,还关注于在预测结果中不是恶意评论中包含敏感词和是恶意评论中不包含敏感词两部分数据的得分。所以我们需要关注一下这两类的数据。可以考虑给这两类的数据赋予更高的权重,更方便模型能够准确的对这些数据预测正确。

因为最后评价指标是ROC-AUC,所以不需要转换为0 1类别。即用数值的分数作为label就可以。

但是评估方式不仅评估所有分类最后的ROC-AUC,还评估Bias AUC。所以这就需要我们不仅只用文本,还用训练数据的其他特征(敏感词)。

我觉得比赛关键两点就是

1、训练的时候将其他重要的几维特征也作为label一起训练,最后只取target的label就可以,这其实算是一个多任务学习吧。能更好的学到数据bias。

2、就是如何设计权重,即为每个样本在计算loss的时候赋予不同的权重。我们的方案在下方的开源代码中。

模型

最终方案是

0.1×mean(6lstm) +0.1×mean(3gpt2) + 0.8×mean( 1bert base uncase + 1bert large uncased)

详细请看下方链接

https://www.kaggle.com/c/jigsaw-unintended-bias-in-toxicity-classification/discussion/97443

然后我们为了训练速度快点,使用了分桶策略。NLP比赛中经常会遇到的padding之后会有很多0会影响训练速度,所以基本上都会采用分桶策略或者手动将句子长度相近的放到一个batch里。

https://www.kaggle.com/bminixhofer/speed-up-your-rnn-with-sequence-bucketing这里边对比了三种分桶代码的训练速度。讲的挺好的。

BERT

其中BERT用了两个预训练model,都是uncase model,一个base,一个large。

BERT-BASE代码如下: 具体请看代码

https://www.kaggle.com/hanyaopeng/single-bert-base-with-0-94376

只用我们的BERT单模也能在Top100内 银牌区。

RNN/GPT2

这部分是队友做的,RNN大概就是在开源的kernel上改了改。使用一层lstm+一层gru来代替两层lstm。在过完lstm+gru得到平均池化最大池化后过了两层highway。最后使用不同的seed跑了6个RNN模型取平均。

GPT2 我们用了三个model取平均,中间基本大部分和BERT设置一样。但是不如BERT效果好。

总结

在比赛截止前一星期xlnet出来了,本来使用外部数据的时间已经截止了,结果官方还允许用。吐槽一下。。。当时xlnet论文中分类问题实验对比比BERT好的还不少。当时深深担忧。。我们时间不太够最后就没用xlnet。可惜最后没能拿个奖金。差了一点。

不足

然后我们的权重设计也不是特别好有提升空间。因为我们过多关注BERT这种大型预训练模型了,所以我们RNN研究比较少,基本就是开源kernel改改,所以RNN部分效果也不是特备好,但是呢RNN在这个比赛中最后模型融合部分还是很重要的,如果RNN部分效果比较好的话最后融合分数会+很多。所以不能因为BERT、xlnet出来就完全放弃RNN。。RNN作为模型融合的一部分还是会提供很多帮助的。

四个月前立的flag要加油成为一个master。,又朝master目标前进了一步,离master只差一个银牌了。。但是最近回所要开始发论文了估计应该最近不会做比赛了。。毕竟发两篇论文才让毕业。。日常惆怅。最近在研究GNN和对抗机器学习和NLP结合的方向,希望能在这两个方向能有一点点成就吧。。

-------------The End-------------