人工智能的第6类算法:迁移学习

 前言: 深度学习主要强调的是特征,强化学习主要强调的是反馈,而迁移学习主要强调的是适应。

 
人工智能是对人的意识、思维的信息过程的模拟。人工智能不是人的智能,但能像人那样思考、也可能超过人的智能。
 
之前介绍过人工智能之机器学习算法有前5大类内容,具体请参见相关文章。今天我们重点探讨一下第6类--迁移学习(Transfer Learning)。 ^_^
 
传统的机器学习是种瓜得瓜,种豆得豆,而迁移学习可以举一反三,投桃报李。
 
人工智能竞争,从算法模型的研发竞争,转向数据和数据质量的竞争,这些成功的模型和算法主要是由监督学习推动的,而监督学习对数据极度饥渴,需要海量数据(大数据)支撑来达到应用的精准要求。而人工智能发展更趋向于不要求海量数据也能达到应用的精准要求,因此“小数据学习”正在成为新的热点,以迁移学习,强化学习为代表的小数据学习技术,更能体现人工智能的未来之路。有专家称,在监督学习之后,迁移学习将引领下一波机器学习技术商业化浪潮。
人工智能的第6类算法:迁移学习
迁移学习(TL)的概念自从1995年在NIPS5专题讨论会上被提出来后,受到学术界的广泛关注。迁移学习定义过于宽泛,相关研究中曾出现多种专用术语,比如learning to learn, life-long learn,multi-task learning, meta-learning, inductive transfer, knowledge transfer, context sensitive learning等。其中,迁移学习与多任务学习(multi-task learning)关系最为紧密。多任务学习同时学习多个不同的任务,从中发现隐含的共同特征,以帮助单个任务的学习。
 
什么是迁移学习?
 
迁移学习TL(Transfer Learning)是把已学训练好的模型参数迁移到新的模型来帮助新模型训练。考虑到大部分数据或任务是存在相关性的,所以通过迁移学习,可以将已经学到的模型参数通过某种方式来分享给新模型从而加快并优化模型的学习效率。
 
迁移学习的基本动机:
 
迁移学习的基本动机是试图从一个问题中获取的知识应用到另外一个不同但是相关的问题中去。比如,一个熟练应用C++语言编程的程序员能很快地学习和掌握JAVA语言。在某种程度上,机器学习中的迁移学习跟心理学上的“学习能力迁移”有一定的关联。在人类进化中,迁移学习这种能力是非常重要。比如说,人类在学会骑自行车后,再骑摩托车就很容易了,人类在学会打羽毛球后再学习打网球也会容易很多。人类能把过去的知识和经验应用到不同的新场景中,这样就有了一种适应的能力。
 
迁移学习主要类别方法:
 
1)实例加权方法:通过某种方式对来自源领域的训练样本进行权重计算,以决定每个样本在训练过程中的重要性大小。
 
2)共同特征学习方法:通过若干个共同特征在源领域和目标领域之间传递有用的知识。
迁移学习的重要性:
 
1)从数据角度:数据为王,计算是核心,但没有足够数据或收集数据很耗时,对数据打标签很难,用数据训练模型很繁琐。如何进行机器学习?迁移学习适用于小数据量场景;
 
2)从模型角度:云-端融合的模型被普遍使用,通过需要对设备、环境、用户做具体适配。个性化模型适配很复杂,需要有不同的用户隐私处理方式。迁移学习适合个性化方面。
 
3)从应用角度:机器学习应用中的冷启动问题,推荐系统没有初始用户数据,无法精准推荐。迁移学习可以解决冷启动问题。
 
迁移学习可减少对标定数据的依赖,通过和已有数据模型之间的迁移,更好地完成机器学习任务。
 
迁移学习实现方法:
 
1)样本迁移(Instance-based Transfer Learning):在数据集(源领域)中找到与目标领域相似的数据,把这个数据放大多倍,与目标领域的数据进行匹配。其特点是:需要对不同例子加权;需要用数据进行训练。一般就是对样本进行加权,给比较重要的样本较大的权重。
 
2)特征迁移(Feature-based Transfer Learning):通过观察源领域图像与目标域图像之间的共同特征,然后利用观察所得的共同特征在不同层级的特征间进行自动迁移。在特征空间进行迁移,一般需要把源领域和目标领域的特征投影到同一个特征空间里进行。
 
3)模型迁移(Model-based Transfer Learning):利用上千万的图象训练一个图象识别的系统,当遇到一个新的图象领域,就不用再去找几千万个图象来训练了,可以原来的图像识别系统迁移到新的领域,所以在新的领域只用几万张图片同样能够获取相同的效果。模型迁移的一个好处是可以区分,就是可以和深度学习结合起来,可以区分不同层次可迁移的度,相似度比较高的那些层次被迁移的可能性就大一些。
 
4)关系迁移(Relational Transfer Learning):利用源域学习逻辑关系网络,再应用于目标域上。如社会网络,社交网络之间的迁移。
 
迁移学习工具:
 
NanoNets(纳米网络)是一个简单方便的基于云端实现的迁移学习工具,内部包含了一组已经实现好的预训练模型,每个模型有数百万个训练好的参数。用户可以自己上传或通过网络搜索得到数据,NanoNets将自动根据待解问题选择最佳的预训练模型,并根据该模型建立一个NanoNets,并将之适配到用户的数据。NanoNets和预训练模型之间的关系结构如下图所示。
人工智能的第6类算法:迁移学习
迁移学习发展:
 
1)结构与内容分离:当面临一个机器学习问题,想要发现不同问题之间的共性,那么可以把问题的结构和内容剥离开。虽然这样的分离并不容易,但是一旦完成,那么系统举一反三的能力就非常强。
 
2)多层次特征学习:把问题分到不同层次,有些层次就更容易帮助进行机器学习的迁移。用了这种层次型的迁移学习,不同的层次具有不同的迁移能力,对于不同层次的迁移能力就有了一个定量的估计。当需要处理新任务时,就可以把某些区域或某些层次给固定住,把其他的区域用小数据来做训练,这样就能够达到迁移学习的效果。
 
3)多步、传递式学习:从旧领域迁移到新领域,从一个多数据的领域迁移到少数据的领域,这种称之为单步迁移。很多场景是需要分阶段进行多步传导式的迁移,可以构建一个深度网络,而这个网络中间层既能照顾目标这个问题领域,又能照顾原来的领域。如果有一些中间领域,那么其可以把原领域和目标领域一步步的衔接起来。可以定义两个目标函数,两个目标函数一同工作时,一个优化了最后的目标,另一个则选择了样本。如此迭代,原领域的数据就从多步迁移到目标领域。
人工智能的第6类算法:迁移学习