无论是小学还是大学,在教学中都会强调的一个问题就是“举一反三”,将学到的规律灵活地运用到其他相似的场景下。而要想让人工智能学会举一反三,用到的就是迁移学习技术。
迁移学习(transfer learning)是运用已学习的知识来求解不同但相关领域问题的新的机器学习方法,目的是让机器“学会学习”。当训练数据和测试数据来自不同的特征空间或遵循不同的概率分布时,如果能够将从训练数据上习得的知识迁移到测试数据上,就可以回避掉复杂的数据标签工作,进而提升学习性能。迁移学习就是解决这个问题的学习框架,它能够对仅有少量甚至没有标签样本进行学习,从而解决目标问题。
许多机器学习和数据挖掘算法都建立在两个主要假设之上:第一,训练样本和测试数据必须处于相同的特征空间并具有相同的分布;第二,有足够的高质量训练样本作为学习资源。
遗憾的是,这两个假设在大多数实际应用中难以成立。一方面,训练数据和测试数据在时间上的差异可能导致分布规律的变化;另一方面,对大量数据进行标注不仅费时费力,还容易受到知识产权问题的影响。一旦没有数据,再好的深度学习方法都是无源之水,无本之木,难以发挥作用。
迁移学习的出现给解决这些问题带来了一丝曙光。其实说到底,迁移学习可以看作是提升学习算法泛化性能的一种思路。现实世界并非标准化和结构化的数据集,而是杂乱无章的万花筒,包含着大量从未在训练集中出现过的全新场景,这足以让许多在训练集上无往不胜的人工智能变成真实世界中的“人工智障”。迁移学习有助于算法处理全新场景下的问题,利用一般化的规律去应对富于变化的环境。
在迁移学习中,已有的知识(包括样本数据集及其分布)叫做源域,要学习的新知识叫做目标域。同样,待解决的任务也可以分为源任务和目标任务。根据源域 / 目标域和源任务 / 目标任务的关系,迁移学习问题可以划分为以下三类: