Press "Enter" to skip to content

迁移学习介绍及其在网易云音乐广告场景下的应用

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

导读: 机器学习技术发展至今,已在许多领域取得了重大成功,但也面临着诸多问题,迁移学习作为解决这些问题的方法之一,受到了广泛关注。本文以迁移学习及其应用为主题,介绍了迁移学习的概念和定义,阐述了迁移学习的主要方法,并给出若干例子进一步帮助理解迁移学习的思想。最后介绍了迁移学习在云音乐广告场景下的应用实践。

 

1

 

引子

 

首先放个图,大家看到下面这张图,会联想到接下来会发生什幺?3秒内回答!

 

 

对,没错。考虑实际情况的话,你可能会想到,这个城市马上就要迎来暴风降雨。

 

我们大家都没见过这张图,是如何判断出来“马上暴风雨到来”的这个事情呢?其实是我们曾经经历过,或者从影视作品上看到过类似的场景,而我们的大脑记住了“乌云密布-电闪雷鸣-暴风降雨”这三个之间的关联,因而能够在看到上面的图片时,给出“马上暴风雨到来”的判断。这其实就是迁移的一种思想。

 

生活中,仍然有不少这种例子。比如,如图2所示,我们学会了打乒乓球,就能更快学习网球;当我们学习过java,就能更快地学习scala;当我们学会了炒土豆丝,就能更快地学会炒胡萝卜……

 

 

(图2. 生活中迁移思想的体现)

 

回到今天的主题,怎幺去定义迁移学习呢?

 

迁移学习,是指利用数据、任务、或模型之间的相似性,将在旧领域学习过的模型,应用于新领域的一种学习过程。下面本文将对迁移学习进行介绍,分别从为什幺要迁移学习,迁移学习的基本方法,迁移学习的应用等展开。

 

2

 

为什幺要迁移学习

 

这个部分将阐述,为何要进行迁移学习[1]?或者说,什幺场景下需要进行迁移学习,如图3所示。

 

 

(图3. 为什幺要迁移学习)

 

(1)当今世界处于大数据的时代,然而却存在着“大数据与弱标注”的矛盾,很多数据往往没有对应的标签标注,这使得机器学习(监督学习)难以进行。而如果强行对数据进行标注,又会消耗大量的人力财力。此时我们可以利用迁移学习的思想,迁移已标注数据,完成任务的学习,避免高代价的数据标注工作。

 

(2)即使当我们具有相关的数据的时候,往往又会存在着“大数据与弱计算”的矛盾。很多时候,从头进行大网络的参数训练需要大量的数据和算力,而很多时候我们又负担不了这幺大的计算资源需求,从而陷入困境。此时我们可以利用别人已经训练好的网络,进行模型的迁移,完成任务。实际中,很多预训练-fitune的工作例如BERT的预训练与应用其实都是迁移学习的一种体现。

 

(3)当我们完成一个任务模型的训练,又会面临着“普适化与个性化”的矛盾,模型如果对于个性化兼顾较好,往往普适性就相对就差,反之亦然。而针对每一个个性化的任务,都从头训练一个全新的网络模型,又显得十分繁琐,耗时耗力。而此时,我们可以借用迁移学习的思想,训练一个普适性的模型,然后分别在个性化的任务上进行微调即可。

 

(4)很多特定的场景,传统的机器学习往往效果不佳,例如新的场景,数据量较少,模型的训练可能存在过拟合、冷启动较难的问题。这个时候,我们也可以使用迁移学习进行问题缓解。

 

 

(传统机器学习与迁移学习对比)

 

如上图对比所示,传统机器学习在面临这些挑战的时候,往往会出现或多或少的问题,而迁移学习则在这些方面表现较好。

 

3

 

迁移学习的定义

 

3.1 迁移学习的定义

 

迁移学习较为权威的一篇论文[2],给出了它的定义:

 

翻译成人话就是:迁移学习(Transfer Learning),给定一个源域和一个目标域,这两个领域的数据分布不同,迁移学习的目的就是要借助源域的知识,来帮助目标域知识的学习。

 

3.2 迁移学习的主要任务

 

迁移学习的主要任务,或者说做好迁移学习必须处理好的三个事情:

 

When To Transfer

 

What To Transfer

 

How To Transfer

 

其中,“When To Transfer”解决的是,什幺时候迁移,也就是能不能迁移的问题;“What To Transfer”解决的是,迁移什幺的问题;“How To Transfer”解决的是,如何迁移,也就是用什幺方法迁移的问题。

 

处理好这三个问题,才能最大限度发挥迁移学习的威力,如果处理不好这三个问题,反而会使得效果变差,也就是如图4所示的“负迁移”。

 

 

(图4. 负迁移示例)

 

因此,一个迁移学习任务,要确定以下几个关键的点:

 

确定源域;也就是从哪里迁移?

 

确定目标域;也就是迁移到哪里?要解决目标域的什幺问题?

 

确定源域和目标域有什幺联系?也就是迁移什幺的问题?

 

确定如何进行有效迁移,避免负迁移?

 

4

 

迁移学习的方法

 

迁移学习的方法有多种分类方式[3]。

 

4.1 按目标域标签类型分类

 

按照目标领域的标签类型,迁移学习可以分为以下三类:

 

监督迁移学习(Supervised Transfer Learning)

 

半监督迁移学习(Semi-Supervised Transfer Learning)

 

无监督迁移学习(Unsupervised Transfer Learning)

 

其中半监督和无监督迁移学习,是研究的热点和难点。

 

4.2 按照特征分类

 

按照源域与目标域特征属性,迁移学习可以分为:

 

同构迁移学习(Homogeneous Transfer Learning):特征维度相同分布不同

 

异构迁移学习(Heterogeneous Transfer Learning):特性维度不同或特征空间不同,如图片到文字。

 

这也是一种很直观的方式:如果特征语义和维度都相同,那幺就是同构;反之,如果特征完全不相同,那幺就是异构。举个例子来说,不同图片的迁移,就可以认为是同构;而图片到文本的迁移,则是异构的。

 

同构情况下,迁移学习能够很容易实行;而异构情况下,需要将源域和目标域的特征映射到同一空间维度内,如图5所示:

 

 

(图5. 异构迁移学习进行特征映射示意图)

 

4.3 按照学习方法分类

 

按照学习方法的不同,迁移学习可以分为以下四类:

 

基于样本的迁移学习方法(Instance based Transfer Learning)

 

基于特征的迁移学习方法(Feature based Transfer Learning)

 

基于模型的迁移学习方法(Model based Transfer Learning)

 

基于关系的迁移学习方法(Relation based Transfer Learning)

 

这是一个很直观的分类方式,按照数据、特征、模型的机器学习逻辑进行区分,再加上不属于这三者中的关系模式。

 

基于实例的迁移,简单来说就是通过权重重用,对源域和目标域的样例进行迁移。就是说直接对不同的样本赋予不同权重,比如说相似的样本,我就给它高权重,这样我就完成了迁移,非常简单非常非常直接。如图6所示。

 

 

(图6. 基于样本的迁移)

 

如图7所示,基于特征的迁移,就是更进一步对特征进行变换。意思是说,假设源域和目标域的特征原来不在一个空间,或者说它们在原来那个空间上不相似,那我们就想办法把它们变换到一个空间里面,那这些特征不就相似了?这个思路也非常直接。这个方法是用得非常多的,一直在研究,目前是感觉是研究最热的。

 

 

(图7. 基于特征的迁移)

 

基于模型的迁移,就是说构建参数共享的模型。这个主要就是在神经网络里面用的特别多,因为神经网络的结构可以直接进行迁移。比如说神经网络最经典的finetune就是模型参数迁移的很好的体现。如图8所示。

 

 

(图8. 基于模型的迁移)

 

基于关系的迁移,这个方法用的比较少,这个主要就是说挖掘和利用关系进行类比迁移。比如老师上课、学生听课就可以类比为公司开会的场景。这个就是一种关系的迁移。

 

目前最热的就是基于特征和模型的迁移,然后基于实例的迁移方法和他们结合起来使用。

 

5

 

举例理解迁移学习

 

说了这些大家可能对于迁移学习还不是很清晰,下面我们将举几个例子,对迁移学习的思想进行解释,案例虚构,如有雷同纯属巧合。

 

案例1

 

张三是一名工程师,有一天张三的主管告诉他,现在有个项目需要实现一个能实现黑底白字的手写字“5,0,4,1”识别的模型,后天就要。

 

张三查看了公司已的数据库,发现已有的样本非常少,不足以支撑一个新模型的训练。俗话说,巧妇难为无米之炊,这可怎幺办呢?

 

这个时候,张三的导师李四告诉他,有个公开数据集拥有大量的黑底白字的手写字体图片,而且是带标注的。张三喜出望外,拿到数据之后,对公开数据进行了清洗,对于任务需要的样本,加大学习时候的权重,对于任务不需要的样本,采用较小的权重或者直接丢弃。经过努力,张三终于在临近后天的时候完成了该任务。

 

如图9所示,这其实体现了基于样本的迁移/同构迁移的思想。

 

 

(图9. 案例1方案)

 

案例2

 

张三完成任务,第二天业务方又告知,现在需求变了,只想对黑底白字的“0”和“1”进行分类,明天给出结果。

 

这下子张三可为难了,上次两天时间差点没做完,这次就一天时间了。没办法,张三再次求助导师李四,李四告诉张三,把原来的“5,0,4,1”分类的网络底层网络不变,将输出层改为“0,1”二分类,底层网络共享参数,然后再用公开数据集的“0,1”数据进行微调就好了,很快就能完成。如图10所示:

 

 

(图10. 案例2方案)

 

果然,张三对模型稍加改造并且微调之后,中午在第二天完成了任务。这个任务中,体现了迁移学习的基于模型的迁移和基于样本的迁移等思想。

 

案例3

 

张三完成任务之后的第二天,业务方告诉他需求又变了,现在是对“白底黑字”的“0”和“1”进行分类,而不是“黑底白字”,第二天要给出结果,他们会提供少量的白底黑字的素材。

 

张三又犯难了,没办法只好又又向导师李四求助,李四告诉他,不要怕:其实“白底黑字”和“黑底白字”其实是一回事,因为假如把原有的模型,白的变成黑的,黑的变成白的,不就是相当于完成任务了幺?具体做法是:

 

(1)在原有的网络的输入层,增加一个“Reverse”层,该层的作用是,在图片输入的时候,将黑像素转为白像素,将白像素转为黑像素;

 

(2)下面的网络结构不变;

 

(3)使用少量的白底黑字“0”和“1”样本进行微调;

 

(4)对无关样本加权或抛弃。

 

 

(图11. 案例3方案)

 

张三按照导师的建议,又一次地按时完成了任务。这个过程中,体现了基于模型的迁移、异构迁移、基于样本的迁移、基于特征的迁移等思想,如图11所示。

 

案例4

 

完成任务之后没多久,张三又又被告知需求变了,现在需要对没有标注的彩色背景“0”,“1”手写字体进行识别(注意是没有标注的,也就是没有label),但是会提供一些素材,要求第二天给出结果。

 

张三没办法,只能又又向导师李四求助,导师告诉他,遇事不要慌,其实彩色背景和非彩色其实本质上都是手写字体,如果能够让模型忽略背景的颜色,只关注手写字体本身,那幺就能借助现有“白底黑字”的模型和无标注样本完成任务。具体的做法如下:

 

(1)保留原有的模型不变,在网络的深层增加域分类分网络,用于区分不同域的样本(也就是区分是白底的还是彩色背景的,这个是有标注的);

 

(2)黑白有标注的样本,通过网络的全部部分,完成两个任务:a,学习手写字体分类任务,b,学习域分类任务;

 

(3)彩色背景的样本,由于没有具体“0”“1”的标注,只从底层依次通过域分类任务的子网络,帮助学习域分类任务;

 

(4)在反向梯度传播的时候,借助于对抗网络的思想,与分类网络的梯度在共享层前让梯度反向。那幺对于整个网络,让其专注于学习“0,1”分类,而对于彩色和白底背景进行混淆。

 

通过上述导师的指导,张三再次完成了任务, 最终业务方表示非常满意,需求不会再变了。

 

 

(图12. 案例4方案)

 

在这个案例中,其实就体现了迁移学习中的样本迁移、特征迁移、模型迁移、异构迁移、非监督迁移等思想,如图12所示。

 

6

 

迁移学习与其他机器学习的区别

 

通过上面的介绍,想必大家对于迁移学习的思想有了大致的认识,但是迁移学习和常见的机器学习方法有哪些区别呢?

 

6.1 迁移学习与多任务学习

 

多任务学习通常是同时学习多个方向上的任务,而迁移学习往往是两阶段的。多任务学习通常旨在提升网络在多个目标上的效果,甚至有些时候,这些多目标会相会制约和牵制,多任务时候可能没有单任务的效果更好,此时多任务是为了在多个指标同时获得较好的效果的一种折衷。而迁移学习往往是利用源域来提升目标域上的效果。如图13所示。

 

当然,最近迁移学习也有关于联合训练,跨域迁移,同时提升源域和目标域的研究。

 

 

(图13. 多任务学习与迁移学习)

 

6.2 迁移学习与知识蒸馏

 

如图14所示,迁移学习一般是将一个领域的知识迁移到另外一个领域,往往这两个领域是不同的;而知识蒸馏一般是用来模型压缩的,也就是说用teacher指导student模型来逼近大模型的精度,使用的一般都是相同的数据。从这个角度来说,知识蒸馏可以堪称迁移学习的一个特例。

 

另外一方面,迁移学习往往将一个模型的权重冻结迁移到另一个项目中,或者是二者共享部分参数。而只是蒸馏与迁移学习相反,知识蒸馏不直接使用学习的权重,而是使用网络的输出作为teacher和student网络的联系。

 

 

(图14. 知识蒸馏与迁移学习)

 

6.3 迁移学习与元学习

 

如图15所示,元学习目的是在于学会学习,就是给定一个任务,通过之前学习的不相同的任务使得模型能过在新任务上表现也比较好;而迁移学习是,给定一个任务,目的是提升在相似的任务上的效果。

 

 

(图15. 元学习与迁移学习)

 

打个比方,元学习好比是学会各种运动去学一个新的运动;而迁移学习好比是学会了滑冰,让你去打冰球一样,二者之间是有关联的。再比如,元学习好比是让你做各种数学题锻炼你的思维,然后给你一个新的数学题,让你学会去解题;而迁移学习好比是让你做三角函数的题,然后再给你一个类似的题,让你去解决。从这个角度来说,迁移学习可以认为是元学习的一种特例。

 

7

 

迁移学习的应用

 

7.1 迁移学习的应用领域

 

迁移学习是机器学习领域的一个重要分支。因此,其应用并不局限于特定的领域。凡是满足迁移学习问题情景的应用,迁移学习都可以发挥作用。这些领域包括但不限于计算机视觉、文本分类、行为识别、自然语言处理、室内定位、视频监控、舆情分析、人机交互等。图16展示了迁移学习可能的应用领域[3]。

 

 

(图16. 迁移学习的应用)

 

7.2 迁移学习在云音乐广告场景下的应用

 

相比于阿里妈妈等互联网广告大户来说,云音乐的广告场景数据要更为稀疏,有许多相对较小的广告位,往往用户互动数据不足,不足以支撑独立建模的需求,这给我们广告 效果 的优化带来了挑战。

 

 

(图17. 云音乐广告示例)

 

但可以发现的是,这些广告场景下,虽然广告的形式和内容有所不同,但是广告用户群体、广告类型等是有交集的。以上两点给迁移学习的应用带来了必要性和可行性,如图18所示。

 

 

(图18. 多场景之间的联系)

 

目前云音乐广告算法团队,在迁移学习上进行了研究和尝试,主要思路如图19所示。目前离线AUC、线上点击率、ECPM都取得了很不错的线上效果。

 

 

(图19. 迁移学习)

 

后续我们将继续跟踪探究迁移学习方法及其思想在我们实际场景的应用,也欢迎大家一起交流进步。

 

8

 

总结与展望

 

迁移学习作为机器学习和人工智能领域的重要方法,在计算机视觉、自然语言处理、语音识别等领域都得到了广泛的应用。 本文介绍了迁移学习的主要概念和思想,并举例阐述了迁移学习的主要方法,说明了迁移学习和其他学习方法的区别,最后分享了迁移学习在云音乐广告场景下的应用实践。

 

目前,业内对于迁移学习在推荐/广告系统中的应用,也涌现出了众多成果,如文献[4]等,这些方法为跨域迁移的继续研究提供了思路。后续我们将持续探究迁移学习可能的方向和应用,使得技术给业务带来更大的价值。

 

参考文献

 

[1] 王晋东,陈益强《迁移学习导论》 北京:电子工业出版社,2021.6

 

[2] https://arxiv.org/pdf/1505.07818.pdf

 

[3] https://github.com/jindongwang/transferlearning-tutorial/

 

[4] https://arxiv.org/pdf/2008.02974.pdf

 

作者简介

 

Derec,中国科技大学硕士,网易云音乐广告算法工程师。

 

Be First to Comment

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注