实际应用中很多任务的数据的标注成本很高,无法获得充足的训练数据,这种情况可以 使用迁移学习(transfer learning)。假设 A、B 是两个相关的任务,A 任务有很多训练数 据,就可以把从A任务中学习到的某些可以泛化知识迁移到B任务。
目前为止,我们学习了很多深度学习的模型,所以训练一个分类器比较简单,比如要训练 数字的分类器,给定训练数据,训练好一个模型,应用在测试数据就结束了。
数字识别这种简单的问题,如图1所示,在基准数据集MNIST 上能做到 99.91% 的正确率。但测试数据和训练数据的分布不一样时会导致一些问题。假设训练时数字是黑白的,但测试时数字是彩色的。常见的误区是:虽然数字的颜色不同,但对于模型,其形状 是一样的。如果模型能识别出黑白的图片中的数字,其应该也能识别出彩色图片的数字。但实际上,如果使用黑白的数字图像训练一个模型,直接用到彩色的数字上,正确率会非常低。 MNIST 数据集中的数字是黑白的,MNIST-M 数据集中的数字是彩色的,如果在MNIST 数据集上训练,在MNIST-M数据集上测试,正确率只有52.25%。一旦训练数据跟测试数据分布不同,在训练数据上训练出来的模型,在测试数据上面可能效果不好,这种问题称为领域偏移(domain shift)。
图1 数据分布不同导致的问题
领域偏移其实有很多种不同的类型,模型输入的数据分布有变化的状况是一种类型。另 外一种类型是,输出的分布也可能有变化。比如在训练数据上面,可能每一个数字出现的概率 都是一样的,但是在测试数据上面,可能每一个数字输出的概率是不一样的,有可能某一个 数字它输出的概率特别大,这也是有可能的。还有一种比较罕见状况的类型是,输入跟输出 虽然分布可能是一样的,但它们之间的关系变了。比如同一张图片在训练数据里的标签为“0”, 但是在测试数据的标签为“1”。
接下来我们专注于输入数据不同的领域偏移。如图2所示,接下来我们称测试数据来 自目标领域(target domain),训练数据来自源领域(source domain),因此源领域是训练数 据,目标领域是测试数据。
图2 源领域与目标领域
在基准数据集上学习时,很多时候无视领域偏移问题,假设训练数据跟测试数据往往有 一样的分布,在很多任务上面都有极高的正确率。但在实际应用时,当训练数据跟测试数据有 一点差异时,机器的表现可能会比较差,因此需要领域自适应来提升机器的性能。对于领域自适应,训练数据是一个领域,测试数据是另外一个领域,要把某一个领域上学到的信息用到另 外一个领域,领域自适应侧重于解决特征空间与类别空间一致,但特征分布不一致的问题。