说到预训练模型,不得不提迁移学习了,由于很多数据不是标签数据,人工标注非常耗时,神经网络在很多场景下受到了限制。但是迁移学习和自学习的出现,在一定程度上缓解甚至解决了这个问题。我们可以在标签丰富的场景下进行有监督的训练,或者在无标签的场景下,进行神经网络无监督的自学习,然后把训练出来的模型进行迁移学习,到标签很少的场景下,利用这种方式来解决领域标签数据少的问题。
视觉任务往往具有一定的通用性,例如在某个分类任务数据集上训练的模型,在迁移到别的分类任务上时,只需要重新训练分类层以及对其他层权重进行微调便能获得不错的结果。所以在面对当前任务时,采用经过别的任务训练后的模型叫做预训练技术。预训练方法通常分为监督、半监督、无监督法。
最常用的监督预训练技术是:首先在带有标注的大型数据集上训练模型,之后将该模型当作预训练模型执行当前任务。例如在目标检测任务上通常会采用在Imagenet数据集上经过训练的模型当作特征提取网络。
半监督方法的代表是自训练,其使用少量的标记数据和大量的未标记数据对模型进行联合训练。自训练可以分为5个步骤:
- 使用少量带有标签的数据训练模型
- 使用步骤1中得到的模型对未标记数据进行预测,预测结果作为伪标签
- 将标记数据和未标记数据结合标签和伪标签一起训练模型
- 在测试集上评估模型
- 重复1-4步,对模型迭代
无监督方法在无标签的数据集上训练,通过对比损失、互信息最大化等方法获得对数据的通用表示。
在当前任务中,绝大多数采用经过预训练方法的骨干网络通常会使结果得到提升。例如在目标检测任务中,通过监督法得到的预训练模型因为其稳定、简单、容易获取而成为多数目标检测的骨干网络模型。但谷歌最新的研究表明,在数据量足够的情况下,至少在目标检测任务上,采用自训练得到的预训练模型对检测结果的提升要显著优于监督预训练与无监督预训练模型。
说白了,预训练模型就是提前训练好模型参数。有了预训练模型,我们就不需要再从0开始训练所有参数了,但是针对我们当前的这个任务,有些参数可能不合适,我们只需要在当前参数的基础上稍加修改(微调)就可以得到比较好的效果,这样学习时间必然会大大减小。
参考文章安全验证 - 知乎