Transfer Learning.
- 迁移学习(Transfer Learning)是指将解决某个问题获取的知识应用在另一个不同但相关的问题中。
- Transfer learning is a research problem in machine learning that focuses on storing knowledge gained while solving one problem and applying it to a diferent but related problem.
在迁移学习中,称模型最初解决的问题领域为source domain,其中的数据集为source data;需要迁移解决的相关问题领域为target domain,其中的数据集为target data。
通常source data数量大,而target data数量较少,两者的数据分布是不同的。
迁移学习的不同分类:
- source data有标签,target data有标签:fine tuning、multitask learning
- source data有标签,target data无标签:Domain Adaptation、zero-shot learning
- source data无标签,target data有标签:self-taught learning
- source data无标签,target data无标签:self-taught clustering
本文目录:
- Fine-tuning
- Multitask Learning
- Domain Adaptation
- Zero-shot learning
⭐扩展阅读:
- Rethinking ImageNet Pre-training:(arXiv1811)对计算机视觉任务中预训练的一些讨论。
- Big Transfer (BiT): General Visual Representation Learning:(arXiv1912)BiT:用于迁移学习的预训练卷积神经网络模型。
- Movement Pruning: Adaptive Sparsity by Fine-Tuning:(arXiv2005)讨论迁移学习中的权重剪枝。
- Rethinking Pre-training and Self-training:(arXiv2006)对计算机视觉任务中预训练和自训练的一些讨论。
1. Fine-Tuning
模型微调(Fine-tuning)是指用source data训练模型,再用target data微调模型。
当target data只有几个样本时,也叫one-shot learning。
缺点:target data数量少,容易过拟合。
一些解决措施:
- 保守学习 Conservative Training:在微调网络时,限制网络参数和预训练参数足够接近;
- Layer Transfer:只微调网络的一部分层,冻结其他层的参数。对于图像任务,固定浅层网络,训练深层网络;对于语音任务,固定深层网络,训练浅层网络。
2. Multitask Learning
多任务学习(Multitask Learning)是指同时学习source domain和target domain的任务,不同的任务可以共享一部分模型结构。
模型也可采用渐进神经网络(Progressive Neural Networks)结构,每次训练一个新的模型解决新的问题,也会用到之前训练好的模型结构:
3. Domain Adaptation
Domain Adaptation是指通过构造合适的特征提取模型,使得source domain和target domain的特征在相同的特征空间中,再用这些特征解决下游任务。
本文主要讨论homogeneous的Domain Adaptation问题,即原问题和目标问题属于同一类问题(以图像分类为例)。
常用方法:
- Discrepancy-based methods
- Adversarial-based methods
- Reconstruction-based methods
(1)Discrepancy-based methods
基于差异的方法是指,通过直接训练模型使得source domain和target domain特征向量足够接近:
常用的方法包括:
- Deep Domain Confusion (MMD)
- Deep Adaptation Networks
- CORAL, CMD
Deep Domain Confusion
- paper:Deep Domain Confusion: Maximizing for Domain Invariance
通过训练,减小source data的分类误差,以及source data和target data的特征向量之间的差别:
特征向量的差距也称为Maximum Mean Discrepancy(MMD)。
Deep Adaptation Networks
- paper:Learning Transferrable Features with Deep Adaptation Networks
Deep Adaptation Networks在计算特征差别时,使用了多层特征:
CORAL, CMD
之前计算特征向量的差别使用的是一阶矩(绝对值),CORAL使用二阶矩,CMD使用高阶矩。
(2)Adversarial-based methods
基于对抗的方法是指,训练模型得到source domain和target domain的特征向量,再训练一个domain classifier区分特征属于哪个domain,采用对抗的方法训练整个模型:
常用的方法包括:
- Simultaneous Deep Transfer Across Domains and Tasks
- DANN
- PixelDA
Simultaneous Deep Transfer Across Domains and Tasks
- paper:Simultaneous Deep Transfer Across Domains and Tasks
该模型的损失函数包括:
- Classification Loss:最终的分类损失;
- Domain Confusion Loss:交替训练,一方面希望训练一个好的domain分类器,另一方面希望特征骗过domain分类器;
- Label Correlation Loss:希望target domain的特征含有更多信息,采用引入温度T的soft分类。
DANN
- paper:Domain Adversarial Training of Neural Networks
模型包括三部分:
- feature extractor:目标是最大化label分类精度,最小化domain分类精度;
- label predictor:目标是最大化label分类精度
- domain classifier:目标是最大化domain分类精度。
模型在训练时,循环进行:
- 从source data中抽样,训练label predictor和domain classifier;
- 从target data中抽样,训练domain classifier;
- 对domain classifier的梯度进行梯度反转(gradient reversal),更新feature extractor。
PixelDA
- paper:Unsupervised Pixel-Level Domain Adaptation with Generative Adversarial Networks
PixelDA的想法是先训练GAN,喂入source data生成target data,再用source data和其对应生成的target data作为同一类训练分类器。
(3)Reconstruction-based methods
基于重构的方法是指,要求训练模型得到source domain和target domain的特征向量足够接近,并且通过解码器能够恢复各自的图像:
常用的方法包括:
- Domain Separation Networks
Domain Separation Networks
模型训练两个私有的编码器和两个共享参数的编码器,Private encoder提取domain-specific特征;Shared encoder提取domain-invariant特征。
对于每个domain,将提取的两种特征结合起来通过解码器恢复图像;用domain-invariant特征解决下游任务。
4. Zero-shot Learning
下面以图像分类任务为例介绍Zero-shot Learning方法。
Attribute embedding
人为构造一系列属性attribute,将source data的每一个类别标记为一个属性向量:
属性向量生成可以用一个神经网络实现,即把数据$x_n$的类别标签$y_n$喂入网络得到属性向量$g(y_n)$。
zero loss
通过训练网络把source data转化成对应的属性向量,假设网络的预测结果为$f(x_n)$,对应的属性向量为$g(y_n)$,希望样本$x_n$经过网络得到的输出和其类别对应的属性向量为$g(y_n)$足够接近,和其余类别的属性向量相差很大,相差一个超参数$k$:
\[f(x_n)g(y_n) - \mathop{\max}_{m≠n} f(x_n)g(y_m) > k\]由此定义zero loss:
\[loss = max(0,k-f(x_n)g(y_n) + \mathop{\max}_{m≠n} f(x_n)g(y_m))\]两个网络$f$和$g$可以一起训练:
\[f^*,g^* = \mathop{\arg \min}_{f,g} \sum_{n}^{} {max(0,k-f(x_n)g(y_n) + \mathop{\max}_{m≠n} f(x_n)g(y_m))}\]训练好网络,进行迁移时,将没有标签的target data喂入网络得到其对应的属性向量,与已有类别的属性向量进行比较,按照最相近的结果进行分类。