博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
如何实现少样本学习?先让神经网络get√视觉比较能力
阅读量:6692 次
发布时间:2019-06-25

本文共 2350 字,大约阅读时间需要 7 分钟。

引出主题

近年来,深度学习之所以取得如此大的成功,主要在于目前拥有的海量数据和强大计算资源,尤其是在图像识别方面。因此,如何实现深度学习的快速学习,是深度学习研究的一大难题

对于人而言,在识别物体的时候,仅需要少量图像或不需要图像,而根据对物体的描述就能基于以往的经验知识实现对物体的识别,这是为什么呢?因为我们有先验知识,我们会利用自己的先验知识来进行学习。例如,经常使用老式诺基亚手机的人也能很快地学会如何使用智能机。

如何实现这种快速学习呢?元学习就是实现方法之一。元学习,英文名叫 Meta Learning,也叫做 Learning to Learn,即学会学习。如何让神经网络实现元学习?这里提供了元学习的相关知识 [1]

本文利用对比关系来实现元学习,作者认为人在识别图像时是通过比较图像与图像之间的特征来实现识别的,即少样本学习。

如对于刚出生没多久的小孩子来说,他们也能很快地识别出什么是“鸭”和“鹅”,即使他们并没有见过几次,因为我们的视觉细胞可以自动地提取图像的特征(如轮廓、光照等),然后对比我们以往的经验就能对图像进行识别了。这篇论文的 Relation Network(RN)就是根据这种思想设计的。

系统结构与方法

数据处理

本文将数据分为 training set、support set 和 testing set 三部分,其中 support set 作为对比学习的样例,它拥有和测试数据一样的标签,在测试过程中,可以通过与测试数据的对比来实现对测试数据的识别。

对于包含 C 个不同的类别,每个类别有 K 个样本的 support set,本文称其为 C-way,K-shot。为了实现对网络的训练,本文将 training set 分成和 support set 及 testing set,文中将其分别称为 sample set 与 query set。

模型

one-hot

本文提出的 RN 包含两部分,一部分为嵌入单元 ,用来提取图像的特征,另一部分为关联单元,用来计算两个图像的相似度,如图 1 所示。

6fcced0b7776995306b1ce9314ccdd29f050dd7c

▲ 图1

这是一个明显的 5-way,1-shot 模型。在训练时,利用 training set 来对网络进行元学习,用 sample set 中的数据与 query set 中的数据做对比。在嵌入单元分别获得两者的特征、然后对特征进行连接后送入到关联单元计算关联系数,如公式 1 所示。

f6d0ecdf8b83e8e8ac090cb15cf92f99f94511db

其中, 代表嵌入单元,C((xi),(xj)) 代表将特征连接一起, 代表连接单元。

K-shot

对于各类数据,如果仅有 K(K>1) 个样本,则将同一类的 feature_map 相加,few-shot 的网络模型下图所示。

66332ca1649d3214830aeef9ec83fc6093b69d46

▲ 图2

Zero-shot

zero-shot 和 one-shot 类似,只不过这里将 support set 中的图像换成了语义向量,嵌入单元也做了修改。zero-shot 的网络结构如图 3 所示,DNN 表示训练好的模型,如 VGG、Inception 等。

b44ef722287ee17960bb89c11e8b44d913a8f331

▲ 图3

实验结果与分析

作者分别在 Omniglot 和 miniImageNet 数据集上测试了 few-shot,在 Animals with Attributes (AwA) 和 Caltech-UCSD Birds-200-2011 (CUB) 上测试了 zero-shot。所有的程序都是基于 PyTorch 实现的。

Few-shot

Omniglot

Omniglot 包含 50 个不同的字母,共计 1623 类字符,每一类由 20 个不同的人创作。为了增加数据量,本文还对图像进行了旋转变换,分别对 5-way 1-shot、5-way 5-shot、20-way 1-shot 和 20-way 5-shot 集中情况展开了实验,实验结果如下表所示。

13fc715275aaad705213beaaf935539d1456b015

miniImageNet

miniImageNet是从 ImageNet 分割得到的,具体分割方法参照 [2]。本文在 miniImageNet 上进行了 5 way 1-shot 及 5 way 5-shot 的实验,实验结果如下表所示。

c719bbd1dcaff92c8ff2658c0966c03d41e37b65

Zero-shot

RN 在 AwA 及 CUB 上的准确率和其他方法的对比如下表所示。

0-way 1-shot 和 20-way 5-shot 集中情况展开了实验,实验结果如下表所示。

958634f5a839521a9f364a7387dec05c6d464071

RN为什么能工作

这部分为本论文最核心的内容,论文指出,之前的 few-shot 工作都是预先指定好度量方式的,如欧式距离或余弦距离,学习部分主要体现在特征嵌入方面。

但是该论文同时学习了特征的嵌入及非线性度量矩阵(相似度函数),这些都是端到端的调整。通过学习到的相似性矩阵比人为选定的矩阵更具有灵活性,更能捕获到特征之间的相似性。

为了证明 RN 的有效性,作者分别使用马哈拉诺比斯度量矩阵方法 4(c)、马哈拉诺比斯度量矩阵 + 多层感知机 4(d) 及 RN4(b) 对 query set 的匹配情况,通过和 4(a) 相对比可以看出,RN 的匹配效果最好。

b1ca6bd72ed1d52d9ec956d30effd6dce44a78f6

▲ 图4

图 5 左边是原始情况下 Omniglot 中图的关系,其中青色是和样例点(黄色)相匹配的图像,紫色是和样本点不匹配的图像。

0f0ae014f17c7fc571b2c0df5b373a6aaeda0c2c

▲ 图5

从图中可以看出,使用欧式距离或余弦距离都不能实现对样例点的正常匹配。但通过对 RN 的倒数第二层进行 PCA 降维,得到的分布图如图 5(右)所示,可以看出匹配的与无法匹配的两类样本变成线性可分的。

原文发布时间为:2018-05-2

本文作者:吴仕超

本文来自云栖社区合作伙伴“”,了解相关信息可以关注“”。

转载地址:http://wcjoo.baihongyu.com/

你可能感兴趣的文章
Python-Django 模型层-单表查询
查看>>
Windows Redis默认配置文件,Redis配置不生效解决方案
查看>>
oracle-------window安装
查看>>
I/O完成端口、异步I/O、APC和线程池(四)——线程池
查看>>
获取Java程序运行的路径 | 获取当前jar包的路径
查看>>
摆脱京城贵妇unittest的骚套路discover,自定义用例执行顺序。
查看>>
LaTeXila:Linux 的多语言 LaTeX 编辑器简介
查看>>
系统封装 ES3使用方法
查看>>
SVG.js 文本绘制整理
查看>>
哈佛结构 VS 冯*诺依曼结构
查看>>
java日志体系的思考(转)
查看>>
jQuery插件之validation插件
查看>>
C# 使用 NPOI 库读写 Excel 文件
查看>>
ncurses笔记(1)——ncurses库的介绍与安装
查看>>
Codeforces Round #409 (rated, Div. 2, based on VK Cup 2017 Round 2)(A.思维题,B.思维题)
查看>>
Vue.js动画在项目使用的两个示例
查看>>
新概念英语(1-a)句子集锦
查看>>
MyEclipse快捷键大全(绝对全)
查看>>
ASP.NET Core Web API处理HttpResponseMessage类型返回值的问题
查看>>
leetcode - Interleaving String
查看>>