475. Jigsaw Rate Severity of Toxic Comments | jigsaw-toxic-severity-rating
首先,恭喜获奖者以及所有享受这场比赛的人!虽然这是我第一次参加比赛,但我真的很喜欢 Kaggle 的这场比赛,尤其是那里充满竞争的氛围。
老实说,我从没想过能获得第2名,这在很大程度上归功于运气,但我也要对这份运气说声“谢谢!”,因为它让我坚持使用 “Bert” 方法看到了积极的成果。我不得不说,我们一直惊叹并相信 “Bert” 在 NLP 领域的性能。Roberta 帮助我取得了成功,尽管它的公开分数低于线性模型,但我发现这场比赛的关键点可能在于 “公开排行榜可能会误导我们过拟合”。
我记得很清楚,大概在1月的前十天,很多人开始疯狂提升公开排行榜排名,这让我觉得整体趋势不正常,所以我做了两个决定:
我使用了上一次有毒评论分类比赛的数据。由于本次比赛的目标是预测评论的毒性,这是一个回归任务,我对原始数据的几个特征进行了加权平均。
BERT 在预训练时使用的是原始数据,这意味着预训练的 BERT 是基于未清洗的语料库。实际上,我发现数据清洗会改变分布并丢失信息。
通常,数据清洗可以提高线性模型的性能,但可能会损害 BERT 的性能。如果权重衰减或 dropout 值过大,模型性能会下降。深入研究后我们会发现,线性模型需要清洗以减少特征规模并减少过拟合。BERT 的容量足够大,因此不是非常必要。
所以最后,我对代码做了巨大的改动,特别是简化了数据清洗过程。
对比:
应用数据清洗:私人分数:0.80826,公开分数:0.77609
删除部分数据清洗:私人分数:0.81363,公开分数:0.79416
我在本次比赛中使用了 BERT(来自 Transformer 的双向编码器表示)。BERT 是目前最先进的语言模型,它利用 Transformer 学习文本中单词(或子词)之间的上下文关系。我在本次比赛中使用的模型由两部分组成:RoBERTa base,以及在其上构建用于回归的多层感知机。这就是我选择这种方法并坚持到比赛结束的核心思想。
我随机抽样了 5 折数据,每折包含一部分数据,并在每折上训练一个单独的模型。然后将这 5 个模型的预测结果进行平均。
我使用了 Adam 优化器,因为它计算效率高,且适用于大型数据集和大型参数。此外,我还使用了学习率调度器,根据 epoch 逐渐降低学习率。这具有早期快速学习良好权重,后期进行微调的效果。
重点使用 权重衰减、Dropout 层和早停 来防止模型过拟合。所有这些都保持了模型相对良好的泛化能力。
具体来说,对于 早停,停止标准将基于每个 epoch 的验证损失。
谢谢大家,很高兴大家帮助新人,我从这次比赛中学到了很多!