作为一名大学计算机学院的老师,在用几年时间对很多大三的学生进行观察后,我发现了一个分化现象。

那些打算读研或保研的大三学生,会非常重视上课。他们会把书本上的公式背得滚瓜烂熟,反复做习题,以期待在期末考试中能够有好成绩。而那些不打算读研的学生,会把大部分精力放在找工作上,有些人甚至花了一年的时间反复做公司的面试题,他们对于大学课程通常抱着及格即可的态度。

图片来源:图虫创意

你肯定也看出这两种态度各自的弊端了:只看书本反复做题的,如果没能如愿读研,就业情况可能不会太乐观;一心只想找工作的,专业基础很可能未得到夯实。

如果抛开为了保研或考研而努力学习这些课程的情况,我们又应该以怎样的态度对待这些课程呢?我想,我们可以从人工智能的迁移学习中得到一些启发。

机器的迁移学习算法,是人脑本身就具有的能力

人工智能在近几十年内发展得如火如荼,涌现了包括“多任务学习”“迁移学习”“强化学习”等多种学习算法,这些学习算法让一个模型具有强大的智能。其中,迁移学习是很重要的一种模式。

我读大学时,一位教授在介绍迁移学习时举了驾驶员开车的例子:

我们知道,在中国汽车靠右行驶,而在澳大利亚等地的汽车靠左行驶。如果一个国内的人去澳大利亚自驾游,怎样避免自己逆行呢?

关键点在于找到两个国家在驾驶方面的共性。在中国,驾驶的位置在汽车左侧;而在澳大利亚,驾驶的位置在右侧。这样,我们就可以找到一条共用规则:不管在哪里行驶,驾驶员都要让自己的位置比副驾更靠近道路的中心线。当我们挖掘出这条共性时,驾驶员就可以很容易地将驾驶习惯顺利地从一个国家“迁移”到另一个国家。

这就是迁移学习,即通过自动挖掘源领域和目标领域之间的“共性”,实现知识从源领域到目标领域的迁移。

通俗来讲,迁移学习就是把在某一个领域学到的知识,用于帮助另外一个领域内的任务更好地完成。为了方便理解,迁移学习把第一个领域称为“源领域”,第二个领域称为“目标领域”。迁移学习希望能够把在“源领域”中学习到的知识运用到“目标领域”中。

人其实很会做迁移学习,如果你会骑自行车,那么你学骑摩托车、骑电动车会更容易;如果你会打羽毛球,那么你学打网球就会很轻松;如果你会蛙泳,那么你学习自由泳的速度一定会比一个不会游泳的人更快。

迁移学习的难点是克服源领域和目标领域之间存在的差异。想把源领域的知识“迁移”到目标领域,关键在于找到这两个领域之间的“共性”。

以游泳为例。如果你学会了蛙泳,那么你学习自由泳的速度一定会比一个不会游泳的人更快。这是因为“蛙泳”和“自由泳”的游泳姿态虽然不一样,但是在换气以及游泳时身体的协调感、水感等方面存在共性。你学会了蛙泳,自然掌握了这些共性,你学自由泳也就更容易。

根据“共性”的类别区分迁移学习的不同模式

共性有很多类别,我们可以按照共性的类别将迁移学习分为几类。

第一类是“基于示例的迁移学习”(instance-based transfer learning)。

虽然源领域和目标领域的数据总体看起来不一样,但是源领域中的某些数据样本很可能和目标领域中的比较相似。这时候,如果我们在源领域中找到这些数据,并在训练时重点关注这些数据,让模型尽量对这些数据进行正确的分类,那么在经过这样的校准后,从源领域上得到的模型在应用于目标领域时效果就会比较好了。

第二类是“基于特征的迁移学习”(feature-based transfer learning)。

在机器学习中,模型总是先对数据(例如图像等)进行处理,提取数据的“特征”,然后基于特征完成各种给定的任务(例如分类等)。

因此,如果我们能找到源领域数据和目标领域数据之间的一些共性特征,就更能把源领域中的知识用到目标领域。

第三类是“基于模型的迁移学习”(model-based transfer learning)。

用于图像识别的深度神经网络是有分层的。研究人员发现,神经网络中更靠近输入的一些分层,识别的主要是物体的轮廓、曲线、线条等基本特征,这些基本特征通常和任务或领域无关。而更靠近输出的分层才和具体的任务或领域相关。

比如,现在我们用大量的猫和狗的图片训练出一个可以区分猫和狗的深度神经网络,那么这个神经网络更靠近输入的几层,同样可以帮助我们很好地完成区分牛和马的任务。这样,我们可以把在源领域训练中得到的模型中更靠近输入的几层参数固定下来,目标领域的数据只用来训练剩下那些层的参数。

如何将学校知识迁移到将来的工作中?

以大三学生为例:

如果利用迁移学习中“基于示例的迁移学习”这一思想,那么一个人的学习方式应该是这样的:首先找到某些与将来的“工作技能”密切相关的“课本知识”,然后在上课学习的过程中为它们设定更高的权重。

例如,如果一个人将来打算从事人工智能算法方面的工作,他应该重点关注这些课程并更用心地学习“算法设计与分析”“智能计算导论”“线性代数”“概率统计”等课程。这样他的“课本知识”就可以更好地迁移到将来的工作中。

如果利用“基于模型的迁移学习”这一思想,那么他在上课学习的过程中,应该有意培养一些很容易扩展到将来“工作技能”中的底层能力。

例如,将来不管将来从事什么工作,都需要有表达能力。在公司,可能你所在的团队在完成了某个重要的项目之后,通常需要和领导汇报情况,让领导知道团队的工作对公司很重要,团队的人员能力很强,领导应该给团队更多的资源。要想达到上面的目的,就需要汇报人具有较强的表达能力。因此,在大学里,一个学生需要有意识地培养自己的表达能力。现在很多老师都会在课堂上和学生进行交流,这时候你就需要积极主动地表达自己的观点。很多学生会在本科阶段就进入实验室做科研,如果是这样,在每周实验室的组会上也要把自己的 PPT 做好,借此机会清晰地表达自己的工作。这些都是培养表达能力的重要手段。

如果一个学生选择使用迁移学习,通过挖掘“课本知识”和“工作技能”之间的共性,就可以让他当前学习的“课本知识”更好地为“工作技能”服务。用迁移学习训练完,“当下的他”就具有了更好地掌握“工作技能”的能力。

所以,当一个面临读研和就业选择的大学生使用迁移学习的方法,他就能既掌握好书本知识,又训练出与未来工作适配的技能。

文章由科普中国-星空计划(创作培育)出品,转载请注明来源。

作者:北京航空航天大学副教授、博士生导师 刘雪峰

审核:华中师范大学数学与统计学学院 副教授 邓清泉

来源: 星空计划

内容资源由项目单位提供