8.14 few-shot learning——假想数据

Posted 炫云云

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了8.14 few-shot learning——假想数据相关的知识,希望对你有一定的参考价值。


8.7 Meta learning元学习全面理解、MAML、Reptile

本文是解决few-shot learning 问题元学习方法

本文提出一种基于数据增强的小样本学习算法,可以对Prototypical Network和Matching Network等算法进行元学习。作者的想法非常直接,对于如何产生幻觉图像对数据集进行扩充,本文的主旨是合成的图像既不追求真实,又不追求虚拟,而是尽可能满足分类器的需要。具体来讲,就是把图像幻觉器(hallucinator)与特征提取网络和分类器放到一个网络中,进行端到端的训练。利用分类的损失,引导图像合成器的训练,使其输出能够满足分类需要的图像。

1、前言

元学习方法训练学习者,学习者是一个参数化的函数,映射标注的训练集到分类器。元学习者的训练方法是,从大量带标签的样本中抽取小的训练集和测试集,将采样的训练集输入学习者,得到分类器,然后计算抽样测试集上分类器的损失。这些方法将few-shot学习直接框定为一个优化问题。

然而,一般的元学习方法把图像当作黑盒,忽略了视觉世界的结构。特别是,许多变化模式(例如相机姿势,转换,灯光变化,甚至清晰度)是跨类别共享的。作为人类,我们的知识共享模式的变化可能会让我们想象小说对象可能是什么样子在其他姿势或环境(图1)。如果机器视觉系统可以做这样的“幻觉”或“想象力”,然后时的例子可以作为额外的训练数据构建更好的分类器。

image-20210620203609601
图 1 图1 1
图1 :给一个新颖视觉概念的单一图像,比如一只蓝鹭,人们可以想象鹭鸶在其他姿势和不同环境下的样子。如果机器视觉系统能够产生这样的幻觉,那么它们或许能够从较少的数据中学习新的视觉概念。

当我们幻想出更多的例子时,我们的目标既不是多样性,也不是现实主义。相反,目标应该是产生对学习分类器有用的例子。因此,我们提出了一种新的few-shot学习方法,通过对模型中包含数据幻觉的分类目标进行端到端优化,直接学习对分类有用的幻觉示例。

2、原型匹配网络

匹配网络: 8.11 Matching Networks匹配网络

原型网络:8.13 Prototypical Networks 原型网络

匹配网络的一个问题是,注意力LSTM可能会发现更难“attend”罕见的类(它们被普通类淹没了),因此可能会引入对它们的严重偏见。原型网络没有这个问题,因为它们将每个类分解成一个单一的类均值。我们希望将匹配网络中的情境嵌入(上下文嵌入)的优点与原型网络提供的对类别失衡的弹性结合起来。

为此,在创建测试示例的上下文嵌入 f ( x ) f(x) f(x)之前,我们将每个类计算它的类均值 ν k \\nu_{k} νk。然后,最终的类概率是基于到上下文嵌入的类均值的距离,而不是单个示例:
h ( x , S train  ; w ) = p ^ ( x ) p ^ k ( x ) = e − d ( f ( x ) , ν k ) ∑ j e − d ( f ( x ) , ν j ) f ( x ) = AttLSTM ⁡ ( ϕ ( x ; w ϕ ) , { ν k } k = 1 ∣ Y ∣ ; w f ) ν k = ∑ ( x i , y i ) ∈ S train  g ( x i ) I [ y i = k ] ∑ ( x i , y i ) ∈ S train  I [ y i = k ] { g ( x i ) } i = 1 N = BiLSTM ⁡ ( { ϕ ( x i ; w ϕ ) } i = 1 N ; w g ) \\begin{gathered} h\\left(x, S_{\\text {train }} ; \\mathbf{w}\\right)=\\hat{\\mathbf{p}}(x) \\\\ \\hat{p}_{k}(x)=\\frac{e^{-d\\left(f(x), \\nu_{k}\\right)}}{\\sum_{j} e^{-d\\left(f(x), \\nu_{j}\\right)}} \\\\ f(x)=\\operatorname{AttLSTM}\\left(\\phi\\left(x ; \\mathbf{w}_{\\phi}\\right),\\left\\{\\nu_{k}\\right\\}_{k=1}^{|\\mathcal{Y}|} ; \\mathbf{w}_{f}\\right) \\\\ \\nu_{k}=\\frac{\\sum_{\\left(x_{i}, y_{i}\\right) \\in S_{\\text {train }}} g\\left(x_{i}\\right) \\mathbf{I}\\left[y_{i}=k\\right]}{\\sum_{\\left(x_{i}, y_{i}\\right) \\in S_{\\text {train }}} \\mathbf{I}\\left[y_{i}=k\\right]} \\\\ \\left\\{g\\left(x_{i}\\right)\\right\\}_{i=1}^{N}=\\operatorname{BiLSTM}\\left(\\left\\{\\phi\\left(x_{i} ; \\mathbf{w}_{\\phi}\\right)\\right\\}_{i=1}^{N} ; \\mathbf{w}_{g}\\right) \\end{gathered} h(x,Strain ;w)=p^(x)p^k(x)=jed(f(x),νj)ed(f(x),νk)f(x)=AttLSTM(ϕ(x;wϕ),{νk}k=1Y;wf)νk=(xi,yi)Strain I[yi=k](xi,yi)Strain g(xi)I[yi=k]{g(xi)}i=1N=BiLSTM({ϕ(xi;wϕ)}i=1N;wg)
ϕ ( ) \\phi() ϕ()是特征提取函数(也可以是嵌入函数)

需要学习的参数是 w ϕ , w g \\mathbf{w}_{\\phi}, \\mathbf{w}_{g} wϕwg w f \\mathbf{w}_{f} wf

3、带有幻觉的元学习

我们现在通过学习产生幻觉的其他例子来介绍我们的few-shot 学习方法。给定一个初始训练集 S train S_{\\text {train}} Strain,来采样产生额外的幻觉示例。将通过对噪声向量作为输入的确定性函数来建模这个随机过程。从直觉上来说,想让幻觉者对一个物体类别做一个简单的例子,然后以不同的姿势或不同的环境产生其他的例子。因此,我们把这个幻觉器写成一个函数 G ( x , z ; w G ) G\\left(x, z ; \\mathbf{w}_{G}\\right) G(x,z;wG) ,它将种子示例 x x x和噪声向量 z z z作为输入,并产生一个幻觉示例作为输出。这个幻觉器的参数是 w G \\mathbf{w}_{G} wG

我们首先描述这个幻觉者是如何在meta testing中使用的,然后讨论我们如何训练幻觉者。