预训练

10
0
0
2023-02-01

预训练

预训练(Pre-training)是机器学习中的一个重要概念,特别是在深度学习领域。它指的是在一个大型数据集上对模型进行训练,而这个数据集并不是模型最终要应用的任务数据。预训练的目的是为了让模型能够捕获数据中的通用特征和模式,这样模型就可以在之后的任务中表现得更好,即使那些任务的数据量相对较小。

举例

  1. 对于一个具有少量数据的任务 A: 这是指存在一个特定的图像识别任务(任务 A),但是这个任务只有少量的标注数据。

  2. 首先通过一个现有的大量数据搭建一个 CNN 模型 A: 在开始解决任务 A 之前,首先在一个包含大量图像的大型数据集上进行预训练,以构建一个卷积神经网络(CNN)模型,记作模型 A。这个大型数据集可以是公开的数据集,如ImageNet,它包含了数百万张标注过的图像。

  3. 由于 CNN 的浅层学到的特征通用性特别强: 在预训练过程中,CNN 的浅层(通常是网络的初始几层)会学习到一些基本的、通用的图像特征,如边缘、纹理和形状等,这些特征在不同的图像识别任务中都是有用的。

  4. 因此在搭建一个 CNN 模型 B,其中模型 B 的浅层参数使用模型 A 的浅层参数: 接下来,为了解决任务 A,会构建一个新的 CNN 模型,记作模型 B。模型 B 的浅层参数(即网络的初始几层的参数)将被设置为模型 A 的浅层参数,这样模型 B 就继承了模型 A 在大量数据上学到的通用特征。

  5. 模型 B 的高层参数随机初始化: 对于模型 B 的高层(通常是网络的最后几层),由于它们更倾向于学习任务特定的特征,因此这些参数会被随机初始化,以便在后续的训练中针对任务 A 进行调整。

  6. 然后通过冻结或微调的方式利用任务 A 的数据训练模型 B: 在使用任务 A 的少量数据进行训练时,可以选择以下两种策略之一:

    • 冻结(Freezing):保持模型 B 的浅层参数不变,只训练高层参数。

    • 微调(Fine-tuning):允许模型 B 的所有层参数都进行一定程度的调整,但通常浅层参数的学习率会设置得较低,以保持其学到的通用特征。

  7. 模型 B 就是对应任务 A 的模型: 经过上述训练过程后,模型 B 将被优化以解决任务 A,此时它已经是一个针对任务 A 定制的模型,能够利用预训练得到的通用特征以及从任务 A 数据中学到的特定特征来执行任务 A。