迁移学习(Transfer Learning)是机器学习中的一个名词,是指一种学习对另一种学习的影响,或习得的经验对完成其他活动的影响。迁移广泛存在于各种知识、技能与社会规范的学习中。[1]
迁移学习专注于存储已有问题的解决模型,并将其利用在其他不同但相关问题上。比如说,用来辨识汽车的知识(或者是模型)也可以被用来提升识别卡车的能力。计算机领域的迁移学习和心理学常常提到的学习迁移在概念上有一定关系,但是两个领域在学术上的关系非常有限。
现在的机器学习并不是真正的智能,假如一个人从来没有见过猫,那么这个人只需要最多10张照片,就能学习到什么是猫。但是现在的ML算法,却需要上万甚至上亿的照片,才能学会什么是猫。
当你拿到一张照片的时候,在认识猫之前你已经认识了太多的东西了。
即使你事先完全不认识猫,看了几张照片也能总结出,猫有毛,有爪,有嘴巴,是哺乳动物。
换句话来说,人对世界的认知是建立在大量的知识之上的。很多时候人们都低估了已有知识对人们学习中的帮助,为了检验这个,我们来做一个小小的实验。
amarillo是什么意思
当人们收到一张照片时,其实大量的已有知识在协助我们认识新的东西。例如,我们知道什么是动物,当你被提问:图片中是什么动物的时候,你在潜意识中会把图片中的内容和动物联系起来,并利用动物的相关知识去认识图片。
例如:世界上不存在任意一种动物,是分体的。(身体的两个部分不连接在一起)当然,你也知道爪子,眼睛不能叫做动物。
如果照片有背景,你还知道山啊,桥啊,自行车啊,都不是动物。另外人们问问题的时候,大部分时候不会把要问的动物藏的很好,而是表示在比较主要的部分。
有这些先验知识的帮助,其实大部分的错误项已经被你排除了99%了。
amarillo是什么颜色
你或许半点都不懂西班牙语,但是我相信你也知道了,amarillo是黄色的意思了。
但普遍的机器学习却并不是这样的。大部分时候,人们喜欢from scratch,也就是从0开始。当然,一方面是从0开始入门门槛更低。更多的时候其实是因为找不到时候的“先验知识”。
虽然从0开始效率并不是那么的理想,但是胜在简单易行。而且在很多时候其实并没有那么的糟糕。
就像是收集100w张猫咪的照片(以及100w张不是猫咪的照片),虽然听起来不是那么的容易,但在搜索引擎的帮助下还真的没那么难。
相比之下,要告诉算法什么是爪子,还真是收集200w张照片来的简单的多。但是,任何事情都有例外,这种事情当然不例外撒。
举个例子,假设你正在研发一个项目,想要通过ct成像判断是否患有肺癌。这时候,你就会迫切的希望有一种方法,能够大幅度降低机器学习所需要的样本量。
从技术上来说,迁移学习只是一种学习的方式,一种基于以前学习的基础上继续学习的方式。但现在大家讲的最多的还是基于神经网络基础之上的迁移学习。这里我们以卷积神经网络(CNN)为例,做一个简单的介绍。
在CNN中,我们反复的将一张图片的局部区域卷积,减少面积,并提升通道数。
为什么卷积神经网络可以工作?最核心的原因在于:局部一致性。一只猫爪子,你把它放在图片的左下角是一直猫爪子,你把它放在右上角也是一直猫爪子。
那么卷积神经网络的中间层里面到底有什么?
Matthew D. Zeiler和Rob Fergus发表了一篇非常著名的论文,阐述卷积神经网络到底“看”到了什么:[2]
Matthew D. Zeiler和Rob Fergus采用了一种与众不同的思路来解读卷积层的内容。
和对卷积层进行简单的成像不同,他们尝试把不同的内容输入到训练好的神经网络,并观察记录卷积核的激活值。并把造成相同卷积核较大激活的内容分组比较。上面的图片中每个九宫格为同一个卷积核对不同图片的聚类。
在上面图片中可以看出,较浅层的卷积层将较为几何抽象的内容归纳到了一起。例如第一层的卷积中,基本就是边缘检测。而第二层的卷积中,聚类了相似的几何形状,尽管这些几何形状的内容相差甚远。
随着卷积层越来越深,所聚类的内容也越来越具体。例如在第五层里,几乎每个9宫格里都是相同类型的东西。当我们了解了这些“基础知识”后,那么我们有些什么办法可以实现迁移学习?
其实有个最简单易行的方式已经摆在我们面前了:如果我们把卷积神经网络的前n层保留下来,剩下不想要的砍掉怎么样?就像是我们可以不需要ct能识别狗,识别猫,但是轮廓的对我们还是很有帮助的。
既然来了,说些什么?