小样本学习Few-Shot Learning——孪生网络Siamese Networks、匹配网络Matching Networks、原型网络Prototypical Networks 的简单总结

1. 小样本学习 Few-Shot Learning

1.1 小样本学习要解决的问题

以图片分类这个任务举例,使用神经网络模型的传统做法是:先使用大量带标签的猫和狗的图片训练模型,然后让训练好的模型给不在训练集中的猫和狗的图片做分类,去预测输入的图片是猫还是狗。
而在很多领域的现实应用中,并没有足够的带标签的图片可供模型训练,可能每个类别只有几十个、甚至几个带标签的样本,此时我们希望模型可以根据这些少量样本就学到该类别的关键知识,以对不在训练集中的图片做分类。

1.2 小样本学习模型的训练方法

我们既然希望模型可以根据少量样本学习分类,那在训练阶段就要锻炼模型的这个能力。此处借用李宏毅老师的课程PPT截图进行说明。
小样本学习Few-Shot Learning——孪生网络Siamese Networks、匹配网络Matching Networks、原型网络Prototypical Networks 的简单总结_第1张图片
数据集可用来做训练任务(Training Tasks)和测试任务(Testing Tasks),训练任务中有很多个子任务(Task1、Task2……),每个子任务中都有两个小数据集,一个是support set(Train),用来让模型学习知识;另一个是query set(Test),用来检验模型学习知识的能力。

如上图,在训练时的Task1中,只使用一张猫的图片和一张狗的图片训练模型,然后让模型预测其他两张图片,分类出猫和狗;在训练时的Task2中,只使用一张苹果的图片和一张橙子的图片训练模型,然后让模型预测其他两张图片,分类出苹果和橙子……这样的子任务会有很多,如果模型在每次子任务中都表现的很好,就说明模型有了这样一个能力:根据support set中的少量样本学习有用的知识,然后去分类该领域的图片,如果分类效果好,就说明模型使用少量样本去学习知识的能力很强。此处体现了,小样本学习是希望模型可以自己学会如何去学习知识

与传统深度学习不同的地方是,小样本学习模型应用的领域是之前未曾接触过的领域。比如上图中,测试任务中的自行车和汽车,模型在训练过程中是从未看到的,只能根据测试任务的support set中的一张自行车图片和一张汽车图片去学习自行车和汽车的特点。而传统的深度学习,是使用大量的猫和狗的图片训练好模型后,模型只去分类猫和狗的图片。

小样本学习中有三个典型的模型:孪生网络、匹配网络、原型网络。下面做一些简单介绍。

2. 孪生网络 Siamese Networks

论文题目:Siamese Neural Networks for One-shot Image Recognition,2015
论文地址:http://www.cs.cmu.edu/~rsalakhu/papers/oneshot1.pdf

2.1 主要思想

利用相同样本对和不同样本对的之间的区别,训练出一个神经网络模型,使同类样本生成的embedding向量相近,不同样本的embedding向量远离。

2.2 模型结构

输入:两张图片: ( x 1 , 1 … x 1 , N 1 ) 、 ( x 2 , 1 … x 2 , N 1 ) (x_{1,1} \ldots x_{1,N1})、(x_{2,1} \dots x_{2,N1}) (x1,1x1,N1)(x2,1x2,N1)
输出:两张图片是同一类别的预测值。该值越大,表示输入的两张图片越有可能是同一类别。
小样本学习Few-Shot Learning——孪生网络Siamese Networks、匹配网络Matching Networks、原型网络Prototypical Networks 的简单总结_第2张图片
inference:将query image和support set中的N×K个images逐一配对输入模型,得到N×K个预测值,将query image归为预测值最大的一类。(N 是support set中的类别个数,K 是support set中每一类的样本数)

3. 匹配网络 Matching Networks

论文题目:Matching Networks for One Shot Learning,2016
论文地址:https://proceedings.neurips.cc/paper/2016/file/90e1357833654983612fb05e3ec9148c-Paper.pdf

3.1 主要思想

首先对support set和query set进行embedding,然后用query image对support set中的每个样本计算注意力:
小样本学习Few-Shot Learning——孪生网络Siamese Networks、匹配网络Matching Networks、原型网络Prototypical Networks 的简单总结_第3张图片
其中 x ^ \hat{x} x^ 是query image, x i x_i xi 是support set 中的样本,c是余弦距离。query image使用编码器 f f f 进行编码得到embedding,support set中的image使用编码器 g g g 编码得到embedding。
小样本学习Few-Shot Learning——孪生网络Siamese Networks、匹配网络Matching Networks、原型网络Prototypical Networks 的简单总结_第4张图片
最后把每个类别根据注意力得分进行线性加权:
小样本学习Few-Shot Learning——孪生网络Siamese Networks、匹配网络Matching Networks、原型网络Prototypical Networks 的简单总结_第5张图片

3.2 和孪生网络的区别

和siamese network区别:不是直接取最高的预测值,而是将同类预测值相加,取最高的一类。
当实验场景是one-shot时,除了网络结构的部分都和siamese network一样。

4. 原型网络Prototypical Networks

论文题目:Prototypical Networks for Few-shot Learning,2017
论文地址:https://proceedings.neurips.cc/paper/2017/file/cb8da6767461f2812ae4290eac7cbc42-Paper.pdf

4.1 主要思想

  • 求原型中心:将support set中的样本全部输入编码器,每个样本对应得到一个embedding向量,将同类样本的embedding向量取平均值,得到该类的原型中心c。
  • 预测query image:将query set中的每个样本query image x 输入编码器,每个x对应得到一个embedding向量,该向量离哪个原型中心c 最近,就预测x 应为哪一类。
    小样本学习Few-Shot Learning——孪生网络Siamese Networks、匹配网络Matching Networks、原型网络Prototypical Networks 的简单总结_第6张图片 小样本学习Few-Shot Learning——孪生网络Siamese Networks、匹配网络Matching Networks、原型网络Prototypical Networks 的简单总结_第7张图片

你可能感兴趣的:(机器学习,深度学习)