迁移学习
迁移学习(Transfer Learning,TL)
2005年,杨强提出了迁移学习的概念,⽬标是让计算机把⼤数据领域习得的知识和⽅法迁移到数据不那么多的领域,这样,计算机也可以“举⼀反三”“触类旁通”,⽽不必在每个领域都依赖⼤数据从头学起。
迁移学习,对于⼈类来说,就是掌握举⼀反三的学习能⼒。⽐如我们学会骑⾃⾏车后,学骑摩托车就很简单了;在学会打⽻⽑球之后,再学打⽹球也就没那么难了。对于计算机⽽⾔,所谓迁移学习,就是能让现有的模型算法稍加调整即可应⽤于⼀个新的领域和功能的⼀项技术。
上⾯这个图⽚就是迁移学习⼀个简单的例⼦,迁移学习的核⼼问题是,找到新问题和原问题之间的相似性,才可以顺利地实现知识的迁移。迁移学习:是指利⽤数据、任务、或模型之间的相似性,将在旧领域学习过的模型,应⽤于新领域的⼀种学习过程。
简单了解了迁移学习的概念之后,那我们为什么需要迁移学习呢?
1、我们正处在⼀个⼤数据时代,每天每时,社交⽹络、智能交通、视频监控、⾏业物流等,都产⽣着海量的图像、⽂本、语⾳等各类数据。这些数据往往是很初级的原始形态。
做法:我们可以寻找⼀些与⽬标数据相近的有标注的数据,从⽽利⽤这些数据来构建模型,增加我们⽬标数据的标注。
2、公司有着雄厚的计算能⼒去利⽤这些数据训练模型。例如, ResNet 需要很长的时间进⾏训练。Google TPU 也都是有钱⼈的才可以⽤得起的。绝⼤多数普通⽤户是不可能具有这些强计算能⼒的。这就引发了⼤数据和弱计算之间的⽭盾。
做法:将那些⼤公司在⼤数据上训练好的模型,迁移到我们的任务中。针对于我们的任务进
⾏微调,从⽽我们也可以拥有在⼤数据上训练好的模型。
3、⼈们的个性化需求五花⼋门,短期内根本⽆法⽤⼀个通⽤的模型去满⾜。
做法:进⾏⾃适应的学习。考虑到不同⽤户之间的相似性和差异性,我们对普适化模型进⾏灵活的调整,以便完成我们的任务。
4、⼀些特定的应⽤,它们⾯临着⼀些现实存在的问题。
做法:为了满⾜特定领域应⽤的需求,我们可以利⽤上述介绍过的⼿段,从数据和模型⽅法上进⾏迁移学习。
迁移学习的问题形式化,是进⾏⼀切研究的前提。在迁移学习中,有两个基本的概念:
领域 (Domain) 和任务 (Task)。它们是最基础的概念。定义如下:
领域 (Domain): 是进⾏学习的主体。领域主要由两部分构成: 数据和⽣成这些数据的概率分布。通常我们⽤花体 D 来表⽰⼀个domain,⽤⼤写斜体 P 来表⽰⼀个概率分布。
特别地,因为涉及到迁移,所以对应于两个基本的领域: 源领域 (Source Domain) 和⽬标领域 (Target Domain)。这两个概念很好理解。源领域就是有知识、有⼤量数据标注的领域,是我们要迁移的对象;⽬标领域就是我们最终要赋予知识、赋予标注的对象。知识从源领域传递到⽬标领域,就完成了迁移。
领域上的数据,我们通常⽤⼩写粗体 x 来表⽰,它也是向量的表⽰形式。例如, xi 就表⽰第 i 个样
本或特征。⽤⼤写的⿊体 X 表⽰⼀个领域的数据,这是⼀种矩阵形式。我们⽤⼤写花体 X 来表⽰数据的特征空间。
通常我们⽤⼩写下标 s 和 t 来分别指代两个领域。结合领域的表⽰⽅式,则: Ds 表⽰源领域, Dt 表⽰⽬标领域。值得注意的是,概率分布 P 通常只是⼀个逻辑上的概念,即我们认为不同领域有不同的概率分布,却⼀般不给出(也难以给出) P 的具体形式。
我们看⼀下领域适配的模型图:
解析:
其中,我们为了实现domain adaptation这个结构总共有三部分构成,绿⾊的feature extractor(特征提取器),紫⾊的class
label(标签预测器),红⾊的domain label(域分类器),当我们输⼊⼀样样本x的时候,我们把源域和⽬标域⾥的数据混合在⼀起,然后提取这两个域中的共同特征,针对这个共同特征之后,我们对源域⾥⾯的样本进⾏标签预测,然后判断这个样本是来源于源域还是⽬标域进⾏预测。
⼀开始我们源域⾥⾯的数据是有标注的,分好类的,我们希望学习到⼀个分类器,可以对⽬标域⾥⾯的数据也能进⾏分类,因为⽬标域⾥⾯的数据都是没有标注,未分类的。
梯度反转层:
作者引⼊了梯度反转层gradient reversal layer (GRL) 来实现上述优化的SGD(因为参数−λ的存在,这个式⼦不能⽤SGD直接实现)
在前向传播( forward propagation)的过程中,GRL是个恒等变换
在backpropagation阶段,GRL从后⼀层获取梯度,乘以−λ后再传给前⼀层
训练过程:
先训练使得参数能够最⼤化Domain classification loss(混淆),以保证提取的特征是 domain-invariant feature。这⾥同时也拿标
签预测器的参数 ⼀起训练的.之后训练域分类器的参数 最⼩化Domain classification loss.
损失函数:
这个模型的损失函数分为两个部分,标签预测的损失和域分类的损失,Ly即为标签预测的损失,针对
源域,n为样本数,Ld为域判别器的损
失,针对源域和⽬标域,为⼀个常数,⽤来衡量两个损失函数之间的权重。