返回列表

Customed loss(10th solution)

475. Jigsaw Rate Severity of Toxic Comments | jigsaw-toxic-severity-rating

开始: 2021-11-08 结束: 2022-02-07 内容安全 数据算法赛
自定义损失函数(第10名方案)

自定义损失函数(第10名方案)

作者:Lupin
比赛排名:第10名

在得出最终方案之前,我尝试了许多无效的方法,这些无效的方法加上有效的方法足以构建一个极不平衡的数据集😄。我始终坚信简单至上。每一步都应有理有据,否则就不该迈出那一步。

建模

最终,我集成了7个不同的模型变体:

  • 3个预训练编码器:roberta-base, roberta tweet sentiment, roberta tweet offensive
  • 3个模型头:带LayerNorm的Bi-LSTM, RobertaForClassification, RobertaForClassification+sigmoid
  • 4个数据集:jigsaw toxic, ruddit, davidson, olid
  • 2种损失函数:自定义损失函数和BCE损失
  • 随机种子:当数据集不变时,改变种子;当模型不变时,改变种子;当损失函数不变时,不改变种子。

分数通过简单相加得出。
有一个不包含olid数据集的提交得分排在第5名。所以olid数据集的效果并不好。

自定义损失函数

这个损失函数类似于边际排名损失,只是将其调整为批处理模式。

将批次样本按标签分数升序排列。将输出按相同顺序排列。然后计算相邻样本之间的排名损失。当批次大小为N个样本时,会有N-1对样本进行求和并取平均。

对于自定义损失函数而言,较大的批次大小更有利。我使用8核TPU进行训练,批次大小为48*8=384。我倾向于认为最好的训练过程不需要奇怪的学习率调度器,使用恒定的1e-4即可。

信任交叉验证

一旦我意识到公共排行榜具有误导性,我就不再关注它了。我同时使用了验证数据及其1折投票版本。并且移除了toxic数据中存在泄露的评论。

同比赛其他方案