出自kaggle大佬@Alexander Ryzhkov,原文地址
大概意思就是给没标签的数据(unlabelled data,有的时候可以是官方给的test set)打上标签,流程如下:
用带着标签的训练集训练模型
用上述训练好的模型预测没标签的数据来造伪标签,然后把pseudo labelled的数据和训练集concat来训练
那问题来了,这真的能行吗?大神说了,按他的经验如果满足下面的条件那就是很可能有效的办法!
第一阶段用训练集训练出来的模型得有80%+的准确率,这就意味着我们在test set上打的伪标签80%以上都是正确的
第二阶段中拼接的数据集中带有label的和pseudo label的样本应当平衡(balanced),比如七三开或最多五五开,因为我们希望模型主要还是从real ground trueth中学习,而pseudo的部分我们希望起到一个微调的作用,如果pseudo的样本太多模型会把它当成real ground trueth,那就容易把一阶段中学到的错误给放大了
在第二阶段的时候最好check the training metric only by real ground truth labels
Last nut not least,一二阶段得到的模型应当是不一样的,因为第二阶段能学习到第一阶段学习不到的新东西
但大神又说了,这个办法只是也许能行,玄学,有的时候并不奏效需要辩证看待 - -。。