我有两个数据集,一个包含干净数据,另一个包含不干净数据。我在干净数据集上训练Roberta模型,然后取得不干净数据集的预测。几率大于0.9的那些预测会移至干净数据集。然后,我会使用这个新数据集(干净+不干净移至干净)重新训练Roberta模型。
对于重新训练,我使用MAE损失函数(对噪声标签更鲁棒),并且我使用权重来为从脏数据集传递到干净数据集的数据给予更小的值,如下所示:
loss = torch.mean(torch.abs(y_true - y_pred) * weights)
最初,我对传递到干净数据集中的所有脏数据使用了0.5的任意权重,但是,我想以一种更学术的方式给它们分配一个权重,而不是那么任意。
我怎么能那样做呢?
2条答案
按热度按时间fcg9iug31#
选择权重的一种方法是基于您对脏数据的置信度并相应地分配权重。例如,如果您认为90%的脏数据被正确标记,则选择0.9作为噪声数据的权重是一个合理的选择。
此外,还有一整套关于从噪声标签中学习的文献,您可以查看此调查以了解更多信息:https://arxiv.org/abs/2007.08199
hgc7kmma2#
出于好奇,为什么不直接使用cleanlab来查找数据集中的标签错误和其他数据问题呢?https://github.com/cleanlab/cleanlab
它在几行代码中处理了ML的大多数数据问题,例如:
在1行代码中查找标签问题
训练模型,就像数据集没有错误一样-- 3行代码