机器学习特别是深度神经网络(Deep Neural Network, DNN)非常善于处理固定场景下从输入到输出的映射,包括图像识别,语言处理等。问题是这些模型依然欠缺一种能力去适应新的场景,那些训练过程中未接触到的场景。把学习到的知识应用到新场景的能力,正是迁移学习要解决的问题。
一、什么是迁移学习?
在经典的有监督学习(Supervised Learning)中,我们会为具体的场景培训相应的模型。如下图所示,模型A和B需要使用不同的标签数据进行训练,然后处理不同的问题。二者不能混用。但迁移学习允许我们使用现有模型处理类似的、却不同的问题。我们会保存在第一种场景下学到的知识,来处理第二种场景。
二、为什么现在看好迁移学习?
吴恩达(Andrew Ng) 斯坦福教授、百度首席科学家在2016年提到,迁移学习会是继监督学习之后,在机器学习领域即将迎来的下一波高潮。
近年来,各种成功的模型层出不穷,但它们都依赖确定的场景和大量的训练数据。一旦把这些模型应用到实际生活中,它们会遇到很多训练过程中未曾经历过的特殊情况,这会导致模型的表现大打折扣,或者跟无法使用。之前那些成功的模型只是利用了唾手可得的数据,在固定场景中取得不错的成绩,对于更长尾的场景和数据无所适从。迁移学习正好弥补了这个缺陷,它将模型学到的低层次的、相对固定不变的知识保存下来,处理新的情况和场景。
三、迁移学习的应用
某些情况下,需要使用硬件与现实世界进行交互,来获取大量经验数据来训练模型。这个过程要么非常费时费力、价格昂贵,要么非常危险。自动驾驶就是典型的例子,很多公司(例如Udacity)使用模拟器来训练模型,之后再把模型学到的知识用于路上测试,并不断迭代。
另外在训练机器人时使用仿真也是不错的选择,因为使用真实的机器进行训练,不仅缓慢而且费用不菲。把仿真中学到的知识应用到真实世界的做法,引起越来越多的关注。
四、迁移学习的实现方法
迁移学习有很长的研究历史,其中最成功的部分是图像处理领域。我们先看看迁移学习在卷积网络(convolutionalneural network, CNN)方面的应用。
卷积网络中的底层网络负责捕捉图像中的底层特征,例如边界,线条等。高层网络基于底层网络读取的特征来理解更复杂的图像特征,例如身体、面部等。下图是AlexNet中的过滤器,可以看出底层网络中的过滤器提取的是水平或者垂直的条纹,而高层网络的过滤器负责处理更加复杂的特征。
最后的全连接层负责处理模型要解决的问题。例如AlexNet的全连接层负责将图片划分到1000种待选类别的某一种。
假定你要解决的问题是,把图像分类到100种类别中,包括动物、植物、车辆和日常用品。虽然它与AlexNet的任务并不完全一致,但是足够接近。所以我们可以重用AlexNet的底层网络(锁定网络中的权重和阈值),然后自己训练高层网络和全连接层,来处理我们的问题。
然而需要指出的是,在其他方面,迁移学习还没有取得图像领域这么突出的成绩。相关的研究还在继续。但迁移学习的理念依然可以指引这些研究走向下一个胜利。
先写到这里,下次继续。
留言与评论(共有 0 条评论) |