大多数机器学习模型都是独立训练的,然而,通过某种方式实现模型之间的交互也许能带来很大的性能提升。
1#)迁移学习
迁移学习最佳应用场景:
● 目标任务的数据较少。
● 但一个相关任务的数据非常丰富。
具体步骤如下:
● 在相关任务上训练一个神经网络模型(基础模型)。
● 替换基础模型的最后几层。
● 在目标任务上训练模型,但在反向传播时不更新未替换层的权重。
通过先在相关任务上训练模型,我们可以捕捉到目标任务的核心模式。之后,我们可以调整最后几层,以捕捉特定任务的行为。
另一个与此类似的概念是知识蒸馏,它涉及“知识的传递”。
2#)微调
微调包括更新预训练模型部分或全部层的权重,使其适应新任务。
这个概念可能看起来类似于迁移学习,但在微调中,我们通常不会替换预训练模型的最后几层。相反,我们直接调整预训练模型,使其适应新的任务。
3#)多任务学习
顾名思义,一个模型被训练用于同时执行多个相关任务。
该模型在任务之间共享知识,旨在提高每个任务的泛化能力和性能。
通过共享知识还可以在训练过程中节省计算资源。
如何构建多任务学习模型?
在多任务学习(MTL)中,网络有一些共享层和任务特定的部分。在反向传播过程中,梯度来自所有分支并被累积。
让我们通过一个简单的例子来理解其实现。
假设我们希望模型接收一个实数值(x)作为输入,并生成两个输出: