解锁小样本学习的3种典型方法
你好,我是王天一。
计算机处理器速度的不断提升、存储容量的不断增加和网络带宽的不断扩展使得海量数据、尤其是非结构化数据的储存与处理成为可能,这不仅催生了“大数据”这一新生学科,也成为了机器学习和深度学习爆炸式发展的推动力。
在机器学习领域有这样一句箴言:“数据和特征决定了机器学习性能的上限,而模型和算法只是不断逼近这个上限。”数据的不足会导致维度灾难的问题:简而言之就是太少的数据不足以揭示其背后的规律,从而导致过拟合的发生,这显然不是理想的结果。反过来,数据数量越大,数据中蕴藏的模式与规律就更容易被捕捉,从而为算法的优化奠定良好的基础。
但现实与理想往往存在差距。在现实生活中,某些学习任务可能只有少量数据或少量标注数据可供使用,数据本身可能由于各种各样的原因无法获取,无标签数据的标注则会因消耗大量的时间和人力而难以实现。
从另外一个角度看,人工智能要模拟的是人类的智能,可人类的学习绝不需要大量同质数据的堆砌:卷积神经网络需要大量的训练图像来习得分辨猫狗的能力,可人类幼儿只需要在电视上或者生活中看见猫狗的形象,当他再看到相似的动物时,就会马上分清什么是猫什么是狗。
受到人类学习过程的启发,研究者们逐渐开始反其道而行之,力图突破数据数量对学习性能的限制,小样本学习(Few-shot Learning)的概念应运而生。小样本学习希望解决传统机器学习方法在样本数据不充分时性能严重下降的问题,旨在利用较少的有监督样本数据去构建具有良好性能的机器学习模型。
目前,主流的小样本学习方法包括基于模型微调、基于数据增强和基于度量学习,它们在计算机视觉、图像识别、自然语言处理等领域都得到了广泛的应用。你可以看看下图的策略思路,有个整体概念后,再来看我接下来的讲解。
基于模型微调的小样本学习
基于模型微调的小样本学习是从模型的角度出发,调整已有的模型使之与新的数据适配,这也是小样本学习中的早期方法。被调模型通常来源于利用大规模源数据集预训练得到的神经网络,在目标小样本数据集上对预训练网络的全连接层或者顶端几层进行参数微调即可。这种方法在实现上比较简单,不需要另起炉灶建立全新的模型,适用于已有数据集和目标数据集的概率分布类似的情形。
在基于模型微调的小样本学习中,一个重要问题是微调策略的选择。由于可用样本的数量较小,原始的基于梯度下降的迭代优化方法很难学习到较好的特征表示,导致模型性能的下降。解决这个问题的思路,是为小样本学习找到一个好的初始条件,通过合理地设置初始参数和学习率,使得模型只经过少量的迭代就能快速适应新任务。
除了调整模型的参数外,模型的结构也可以做出改进,以适应小样本学习的任务,一种改进方式是在模型中添加额外的记忆模块来保存来自于小样本的新信息,以帮助网络进行学习。受计算复杂度的限制,记忆模块的容量较小,因而需要通过合理设计更新策略与规则,来有选择地保护模块中记忆的内容,保证模型更新结果与新样本的适配性。
基于数据增强的小样本学习
基于模型微调的方法虽然比较简单,但在真实场景下,难以保证目标数据集和已有数据集的分布具有较高的相似度,这时对模型做出微调容易产生过拟合。如果不以模型作为切入点,就要从数据的角度来提升学习效果。
既然小样本学习的核心难点在于数据数量太少导致的数据多样性的匮乏,就要想办法在不产生新数据的限制下提升数据的多样性,这就是基于数据增强的小样本学习。
理想的数据增强方法应该能够生成与已有的小样本数据独立同分布的带标签数据作为扩充,这可以通过生成式对抗网络来实现。
生成式对抗网络由生成器和判别器两个深度神经网络构成,名字中的“对抗”指的就是这两者之间的对抗。生成器的任务是模拟真实数据未知的潜在分布,以生成以假乱真的数据样本;判别器的任务则是判断输入到底是真实数据还是来自生成器的数据。两个模块之间的左右互搏可以使生成器尽可能精确估测出数据样本的隐藏分布,从而建立数据的生成模型。
利用生成式对抗网络对小样本进行扩充,可以先利用已有数据来训练对抗网络,再使用训练出的网络生成新数据,生成更大规模的数据集。
利用生成式对抗网络可以构造出新的模拟数据,相当于扩充了样本空间。除此之外,还可以通过扩展数据特征空间的方式增强数据多样性,通过构造泛化性能更强的特征提取器来获取分辨能力较强的特征。
目前,特征增强主要采用编码器-解码器的网络结构,这种结构可以对输入的数据进行重构,构造出数据的全新表示,在小样本学习场景下使用这种结构,目的在于获取到数据更加本质的特征表示。
总体而言,基于数据增强的小样本学习方法不需要调整模型,而是利用辅助数据或者辅助信息来进行数据扩充或特征增强。这种方法虽然能够解决样本数量不足的问题,但在扩充或增强的过程中也可能引入噪声,使生成的概率分布偏离真实的概率分布,导致模型偏差的增加。此外,无论是数据合成还是特征增强,其算法都比较复杂,会引入大量的额外运算。
基于度量学习的小样本学习
前文中曾提到,人类的学习范式就是小样本学习,成语中的“触类旁通”“举一反三”表述的都是这样的道理。将人类的学习方式借鉴到计算机的小样本学习中,抛开数据和模型的限制,专注于学习任务本身,就可以得到小样本学习的另一种方法:基于迁移学习的小样本学习。
具体来说,就是借助一个类别不相关但数量充足的大规模数据集,基于此数据集并结合对识别任务的理解,提取出类别无关或部分可共享的先验知识并对其进行建模,再将其迁移到新类别的小样本学习任务中去。
基于度量的学习是典型的迁移学习方法。在数学上,度量指衡量两个元素之间距离的函数,可以进一步理解为两个元素之间的相似性,所以度量学习也称为相似度学习,指通过给定的距离函数来计算两个样本之间的距离,从而度量它们的相似度。
将度量学习的思想应用到小样本学习中,可以先将样本嵌入到向量空间中,再通过未知样本和已知样本之间的距离根计算出相似度得分,进而确定未知样本的分类结果。
传统的距离度量通常通过定义距离函数直接计算,常见的定义方式包括欧式距离、马氏距离、余弦相似度等。这样虽然简单容易操作,但也限制了相似度的表达能力。用深度神经网络表征特征空间,可以让相似度具有更强的表示能力。
将深度学习与小样本学习结合起来的初步尝试是孪生网络,它通过参数共享的两个神经网络分支对成对的输入分别提取特征,计算特征对的加权范数距离的Sigmoid函数响应作为输入样本对的相似度量,训练好的孪生网络可以用来计算未知样本与每个类别已知样本的相似度,以此实现类别预测。
在孪生网络的基础上,研究者又提出了一系列新型的神经网络用于小样本学习。这里,我简单介绍三种。
匹配网络将测试样本的类别表示为训练样本标签的加权和,权重通过对计算出的测试样本特征与每个训练样本特征之间的余弦相似度进行归一化处理得到。原型网络则用测试样本的特征与每个样本的原型特征比较得到,其中原型特征是所有属于某类别的训练样本的平均值,相似性则用余弦距离作为度量。关系网络则用可学习的深度神经网络设计相似性的度量标准,避免了手工选取度量的弊端。
总结
综上所述,目前主要的小样本学习方法大体可以分为基于模型微调、基于数据增强和基于度量学习三大类。我把它们的优缺点总结在了下面,你可以对比看看。
基于模型微调的方法较为简单,只需小规模训练以重新调整参数,但过拟合的倾向严重;基于数据增强的方法不需要调整模型,但增强的数据会引入额外的噪声;基于迁移学习的方法借鉴了人类学习的原理,但其学习能力取决于未知样本和已知样本之间的相似水平,效果仍有待提升。
需要注意的是,这里只是挂一漏万地介绍了目前小样本学习中采用的一些典型方法,在迈向通用人工智能的发展道路上,小样本学习是必须攻克的一个堡垒,依然需要进一步深入研究。
如果你有新的想法,欢迎在留言区和我一起分享和交流,我们下一节见。