Advertisement

【元学习之小样本学习】 当小样本遇上机器学习(Few-Shot Learning)

阅读量:

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

《当小样本遇上机器学习》pptx

在这里插入图片描述

Few-Shot Learning

  • 学习资料

  • Few-Shot Learning 背景知识

  • Few-Shot Learning的目标

  • Meta Learning

  • Supervised Learning VS. Few-Shot Learning

    • 传统监督学习
    • 小样本学习
  • Ways or Shots与Accuracy的关系

  • 如何具体解决小样本学习

    • Idea: Learn a Similarity Function
    • Step1:学习一个相似度函数
    • Step2:应用相似度函数来作预测
  • Meta Learning常用数据集Datasets

    • 数据集Omniglot
    • 数据集 Mini-ImageNet

学习资料

非常感谢 Shusen Wang 大神的视频课程分享。

Shusen Wang教授:Few-Shot Learning (1/3): 入门级讲解

课件:Slides/16_Meta_1.pdf

课程资源:DeepLearning课程

在这里插入图片描述

Few-Shot Learning 背景知识

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

正常人难以区分穿山甲与犰狳,然而当展示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

  • 在训练集中从未见过这些查询样本。
  • 这些查询样本属于未知类别。
在这里插入图片描述

相较于传统监督学习,小样本学习更具挑战性,其原因在于训练集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

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

sim(x, x^{'})

在这里插入图片描述

Step1:学习一个相似度函数

Learn a similarity function from large-scale training dataset.

具体来说,基于规模庞大的训练数据集训练一个相似度函数,该函数能够评估两张图片之间的相似程度有多高。例如,可以使用ImageNet这种大规模的数据集来训练。

在这里插入图片描述

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

Apply the similarity function for prediction

Examine each sample in the Support set by comparing it to the Query using the similarity measure. Determine the sample in the Support set that exhibits the most similarity score when compared to the Query.

在这里插入图片描述

举个例子:

我通过Step1训练得到的sim函数,计算Query与每个Support Set中的卡片的相似度,接着,我选择相似度分数最高的样本作为预测结果。

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

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的图片

在这里插入图片描述

全部评论 (0)

还没有任何评论哟~