小样本学习在深度学习的效果(综述)
小样本学习在深度学习的效果(综述)
深度学习通常需要大量标注数据才能达到理想效果,但在实际应用中,数据标注往往面临困难。小样本学习(Few-Shot Learning)作为一种解决方案,通过少量样本就能实现快速建模和类别区分,这正是受人类和动物快速学习能力的启发。本文将详细介绍小样本学习的概念及其两个经典模型:Matching Networks和Prototypical Networks。
什么是小样本学习
小样本学习(Few-Shot Learning)的概念可以从人类和动物的学习能力中获得启发。例如,2岁的小孩通过少量图片就能识别大多数动物,而乌鸦则能通过观察少量实例来理解复杂的环境规律。这种通过少量样本或特征描述就能识别物体的能力,正是小样本学习所追求的目标。
小样本学习可以看作是元学习(Meta Learning)在监督学习中的应用。在训练阶段,每次迭代(episode)都会对样本进行采样,得到一个元任务(meta task)。通过在不同迭代中使用不同的样本组合,模型能够学习到不同任务的共性部分,从而在面对新的元测试任务时也能进行较好的分类。
Matching Networks for One Shot Learning
这是谷歌DeepMind团队提出的一个重要模型,被李飞飞的高徒Andrej Karpathy点赞,并成为后续研究中的重要参考。该模型的主要创新在于建模过程和训练过程:
- 建模过程:提出了基于memory和attention的matching nets,使得模型能够快速学习。
- 训练过程:遵循机器学习中的基本原则,即训练和测试要在相同条件下进行。因此,在训练时让网络只看每一类的少量样本,这与测试过程保持一致。
模型在Omniglot数据集上进行了测试,该数据集包含来自50个不同字符的1623个不同手写字符,每个字符由20个不同的人通过亚马逊Mechanical Turk在线绘制。测试过程中,将这些字符分为背景集(30个字母)和评估集(20个字母)。
原型网络Prototypical Networks
这个模型的思想简单而有效。它通过学习一个度量空间,通过计算测试样本与每个类别原型表达之间的距离来进行分类。具体来说:
- 每个类别存在一个原型表达embedding,这个embedding可以代表这个类别的表征。
- 该类的原型是support set在embedding空间中的均值。
- 分类问题转化为在embedding空间中的最近邻搜索。
算法的伪代码如下:
function PrototypicalNetworks(support_set, query_set):
# 计算每个类别的原型
prototypes = calculate_prototypes(support_set)
# 对query_set中的每个样本进行分类
predictions = []
for sample in query_set:
distances = calculate_distances(sample, prototypes)
predicted_class = argmin(distances)
predictions.append(predicted_class)
return predictions
作者在miniImageNet数据集上进行了测试,该数据集包含100个类别的图片,每类600张,共60000张图片。测试结果表明,squared Euclidean距离比cosine距离效果更好,且在训练时采用更多类别数能提升性能。
Prototypical Networks与Matching Networks的主要区别在于:
- 距离度量方式不同:Matching Networks采用cosine距离,而Prototypical Networks使用基于Bregman的欧几里得距离。
- 网络结构:Prototypical Networks将编码层和分类层合二为一,参数更少,训练更方便。
参考文献:
[1] Oriol Vinyals, Charles Blundell, Tim Lillicrap, Daan Wierstra, et al. Matching networks for one shot learning. In Advances in Neural Information Processing Systems, pages 3630–3638, 2016.
[2] Jake Snell, Kevin Swersky, and Richard S Zemel. Prototypical networks for few-shot learning. arXiv preprint arXiv:1703.05175, 2017
[3] Allen, Kelsey R, Shelhamer, Evan, Shin, Hanul, et al. Infinite Mixture Prototypes for Few-Shot Learning[J]. 2019.
[4] Li C, Wang G, Melo G D. Context-Based Few-Shot Word Representation Learning[C]// IEEE International Conference on Semantic Computing. 2018.
[5] Wang, Yaqing, Yao, Quanming, Kwok, James, et al. Generalizing from a Few Examples: A Survey on Few-Shot Learning[J]. 2019.