ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【小样本学习】 Few-Shot Learning 基本概念

2020-12-24 12:29:59  阅读:683  来源: 互联网

标签:Shot 样本 学习 Few Learning 图片


这篇文章是博主学习 Few-Shot Learning 过程中所记录的学习笔记

文章目录

学习资料

Few-Shot Learning 背景知识

在这里插入图片描述

在这里插入图片描述

正常人分不清穿山甲和犰狳,但是只要给他看5分钟Support Set中的图片,这时问题Query里的图片是什么,那他就能给出判断。

如果人能做到这一点,那么计算机能不能做到呢?

只靠这四个样本是不可能训练出一个深度学习网络的,对这种小样本学习你不能用传统的方法来分类

Support Set指的是一个很小的数据集,比如有两类,每类只有两类。这个集合不能用来训练一个大的网络,它只能提供一些参考信息。

Few-Shot Learning的目标

在这里插入图片描述

Few-Shot Learning的目标不是让机器识别训练集里的图片并且泛化到测试集,而是让机器学会学习

Few-Shot Learning学习的目的是让模型学会区分事物的异同,给两张图片不是让模型识别出这两张图片具体是什么,而是让模型知道这两张图片是相同的东西还是不同的东西。

训练完模型后(模型学会了区分事物的异同)可以问模型,下面两张图片是不是同一个东西呢?
在这里插入图片描述

模型不知道这两张图片是什么,不会识别出松鼠(因为训练集里没有松鼠),但是模型会判断事物之间的异同,模型知道这两张图片长得很像,所以很可能是相同的动物

在这里插入图片描述

在这里插入图片描述
模型虽然没有见过穿山甲和哈士奇,但是模型觉得他们长得不像,应该不是同一个动物。

换一个说法

神经网络拿query与support set中的6张图片进行对比,找出最相似的

比如神经网络发现query的图片与水獭Otter最相似,所以认为Query应该是水獭

在这里插入图片描述
注意:Support Set里面每个类可能只有1张或者2张图片(带标签),它只能在预测的时候提供一些额外信息。

Meta Learning

在这里插入图片描述在这里插入图片描述
举个例子:
小朋友来到水族馆看到一个动物,但是他从来没有见过这个动物,他很想知道这个动物是什么?

虽然小朋友没有见过这个动物,但是他知道怎么样区分动物,他有自主学习的能力

现在,你给小朋友一堆卡片(Support Set) ,每张卡片上有动物的图片和名字,小朋友可能也没有见过卡片上的很多动物,但是他很聪明,他把卡片翻了一遍,就知道自己看到的动物是水獭了!

他作出判断的依据是“水里的动物与卡片上的水獭长得很像”

在这里插入图片描述
去动物园前小朋友就有了自主学习的能力,他知道怎么判断动物间的异同

培养小朋友学会自主学习就是Meta Learning,即教小朋友学会区分不同的动物就是Meta Learning

靠一张卡片学会识别动物,叫做One shot learning

Supervised Learning VS. Few-Shot Learning

传统监督学习

模型虽然没见过这张图片,但是训练集中有哈士奇一类,包含上百张图片,模型很容易判断出这就是哈士奇

在这里插入图片描述

小样本学习

模型不但没有见过这张图片,而且训练集中还没有这张图片的类别。

Few-Shot learning

  • Query samples are never seen before.
  • Query samples are from unknown classes

在这里插入图片描述
小样本学习比传统监督学习更难,因为训练集Training Set里面没有这个类别。

所以这时我们需要给模型提供更多的信息,即Support Set。给模型看这些小卡片,每张卡片上有图片和名字。这些小卡片就叫作Support Set
在这里插入图片描述

通过对比Query和这些小卡片的相似度,模型发现Query与下面这张图片的相似度最高,于是模型就知道Query图片里面是个兔子
在这里插入图片描述

小样本学习常用术语

  • k-way: the support set has k classes
  • n-shot: every class has n samples

上面的例子中 k=6,n=1, 即 six way one shot learning

再比如:
在这里插入图片描述

Ways or Shots与Accuracy的关系

在这里插入图片描述

3个里面选1个正确的和6个里面选1个正确的,显然前者更简单
在这里插入图片描述

在这里插入图片描述

显然每个类样本越多,作预测更容易
在这里插入图片描述

如何具体解决小样本学习

Idea: Learn a Similarity Function

最基本的想法是学一个函数来判断相似度

s i m ( x , x ′ ) sim(x, x^{'}) sim(x,x′)

在这里插入图片描述

Step1:学习一个相似度函数

Learn a similarity function from large-scale training dataset.

具体地,从一个很大的训练集中学习一个相似度函数,它可以判断两张图片的相似度有多高。比如可以拿ImageNet这种大规模数据集来训练

在这里插入图片描述

Step2:应用相似度函数来作预测

Apply the similarity function for prediction

  • Compare the Query with every sample in the Support set
  • Find the sample with the highest similarity score

在这里插入图片描述

举个例子:

现在我求出Query与每个Support Set中的卡片的相似度(用Step1训练得到的sim函数),然后找到分数最大的样本作为预测结果

在这里插入图片描述

在这里插入图片描述

Meta Learning常用数据集Datasets

如果你做元学习Meta Learning的研究,需要用一些常用的数据集来评价模型的表现。介绍两个论文中常用的数据集

数据集Omniglot

Official Website: https://github.com/brendenlake/omniglot/

Tensorflow: https://www.tensorflow.org/datasets/catalog/omniglot

Omniglot数据集大小几个MB而已

Omniglot与MNIST有点像,是个手写字体数据集

MNIST是手写数字识别,有10个类,每个类有6000个样本

Omniglot的特点在于每个类的类别很多,但每个类的样本却很少

1623个类,而每个类只有20个样本(由20个不同的人手写)

在这里插入图片描述

在这里插入图片描述在这里插入图片描述

数据集 Mini-ImageNet

100个类,每个类有600个样本,每个样本是84*84的图片

在这里插入图片描述

标签:Shot,样本,学习,Few,Learning,图片
来源: https://blog.csdn.net/qq_43827595/article/details/111592746

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有