资讯

一次性学习是什么?只看一个例子就学会认识新东西

2026-11-053 分钟阅读百科
TL;DR一次性学习(One-shot Learning)指每个新类别只给出一个训练样例就要求模型能识别该类的学习问题,是少样本学习的极端情形;常用孪生网络、匹配网络、原型网络等度量学习方法学习可泛化的相似度,或用元学习(如 MAML)学会快速适应,人脸验证是典型应用,Lake 等人的 Omniglot 研究和大模型的单示例上下文学习也与之相关。

一次性学习(One-shot Learning),也叫单样本学习,是指模型在每个新的类别只看到一个样例的情况下,就能学会识别这个类别的学习问题。它是少样本学习中最极端的一种情况,目标是让机器像人一样,看一眼就能认识新的东西。

人类的能力,机器的难题

人有很强的一次性学习能力:一个孩子在动物园里只看过一次长颈鹿,以后在图画书里、在电视上,就都能认出长颈鹿来;我们第一次见到一个陌生人,下次见面时往往也能认出他。但传统的深度学习模型通常需要每个类别有成百上千个甚至更多的训练样例,才能学会识别它。如果只给一个例子,模型几乎什么也学不到,很容易过拟合。人之所以能够从一个例子中学习,是因为我们已经积累了大量关于世界的知识:知道动物通常有哪些特征、哪些差异是重要的、哪些变化是无关紧要的,比如光照和角度的变化不会改变一个物体是什么。一次性学习的研究,就是希望让机器也能利用先前学到的知识,快速地学习新的类别。

主要的思路:学会比较

一次性学习最常用的思路是:不直接学习“每个类别长什么样”,而是学习“如何判断两个东西是否属于同一类”,也就是学习一种好的相似度。一旦学会了这种通用的比较能力,面对新的类别时,只需要把新样本与那唯一的样例进行比较,就能判断它是否属于这个类别。孪生网络:用两个共享参数的相同网络,分别处理两个输入,再比较它们输出的特征向量之间的距离。2015 年,Gregory Koch 等人把孪生网络用于一次性学习,在手写字符识别上取得了不错的效果。匹配网络和原型网络:在 2016 到 2017 年提出,它们在训练时就模拟一次性或少样本的任务,学习一个特征空间,让新样本能够通过与少量样例的比较被正确地分类。原型网络为每个类别计算样例特征的平均值作为“原型”,再把新样本分给最近的原型,在只有一个样例时,原型就是那个样例本身。

另一类思路是元学习,也就是“学会学习”:在大量的小任务上进行训练,让模型学会如何从极少的数据中快速地适应新的任务,比如 MAML 方法学习一个好的初始参数,从这里出发只需要几步梯度更新就能适应新的类别。还有一些方法通过生成更多的样例来扩充那唯一的样本,或者借助类别的文字描述等辅助信息。

代表性的研究

2005 年前后,李飞飞等人在一次性学习物体类别方面做了早期的研究,用贝叶斯的方法利用先前学过的类别作为先验知识。2015 年,Brenden Lake、Ruslan Salakhutdinov 和 Joshua Tenenbaum 在《科学》杂志上发表了一项有影响力的研究:他们提出了一种基于“概率程序”的方法,模仿人书写字符的笔画过程,在只看到一个样例的情况下识别和生成手写字符,表现接近人类的水平。他们为此构建的 Omniglot 数据集,包含来自 50 种文字系统的 1600 多个字符,每个字符只有 20 个由不同的人书写的样本,成为一次性和少样本学习研究的标准测试集。

应用

一次性学习最典型的应用是人脸识别和验证:一家公司要让门禁系统认识新员工,不可能为每个人收集成百上千张照片,往往只能拍一张证件照。系统使用一个在大量人脸上训练好的网络,把人脸转换为特征向量,新员工只需要登记一张照片,以后每次刷脸时,把实时拍到的人脸与登记的照片进行比较即可。此外还被用于签名验证、罕见疾病的影像识别、新商品的识别、机器人学习新的物体等。在大语言模型时代,只在提示词中给出一个示例,就能让模型理解并完成一个新的任务,这种“单示例的上下文学习”也体现了类似的能力。