本文主要看了四种网络,分别为孪生网络、匹配网络、原型网络和关系网络,对这四个网络进行简要的介绍,详细可看原文。
- Siamese Neural Networks for One-shot Image Recognition
- Matching Networks for One Shot Learning
- Prototypical Networks for Few-shot Learning
- Learning to Compare: Relation Network for Few-Shot Learning
Siamese Network
孪生网络采用两个相同的网络结构,并且在训练过程中共享参数,区别在于二者的输入不同。对两个网络的最后一个隐藏层,求相应神经元输出的距离如(h1,1和h2,1),作为distance layer的输入,最后根据distance进行加权求和得到最后的输出,即为输入对的匹配程度,即是否来自相同类。该网络用于one-shot learning,每次输入的是一对图像,因此对于one-shot任务,只需输入support样本和query样本,即可判断二者是否属于同一类。
Matching Network
对训练集使用g函数计算support集上样本的特征,而对于query视频采用f函数计算出其特征,使用点乘方法计算query样本和support集所有样本的相似度,进行softmax,求得分数,取分数最高的作为query的类别。主要是g和f的设计,采用不同的网络提取support和query特征。
prototype Network
对support集中的样本,通过映射网络求得其特征,对特征求平均得到每个类的prototype;对于query样本,求得其映射特征,将该特征和每个prototype求距离,最终距离最小的prototype和query样本属于一类。对于Few-Shot而言,原型为每个类别支持集样本特征的均值,而zero-shot中原型为该类别标签的映射产生。
Relation Network
将支持集的图像和查询集的图像分别输入嵌入式模块fφ提取得到特征信息。然后将查询集图像对应的特征信息分别于支持集中各个图像对应的特征信息级联起来(也可以采用其他的连接方式),然后进入相关性模块g计算得到相关性得分,最后输出一个独热向量(one-hot vector),表示查询集中图像属于与支持集中图像相似程度最高的那一类别。该方式相比前三种采用固定的度量方式,Relation Network采用了一个关系网络,使用可学习的参数。
总结
孪生网络输入的是一个图片对,在test时,需要多次输入进行比较;匹配网络直接将所有样本输入和query进行比较,得到匹配结果;这二者都用于one-shot learning。
原型网络和关系网络用于Few-Shot学习,可推广至zero-shot学习。原型网络将每个类中的所有样本特征抽象为一个原型,在与query样本进行匹配时,只需比较每个类的prototype与该样本特征即可;
关系网络将support样本embeddings与query映射进行级联,输入到relation descriptor中通过可学习的参数学习query样本和每个类别的相似度,从而得到匹配结果。