论文笔记 | Semi-supervised与Unsupervised FSL合集

这一次是4篇半监督/无监督的Few-Shot learning文章合集。由于使用了无标签的数据,那么如何利用这些数据就成为了这几篇文章要解决的问题。

Learning Unsupervised Learning Rules

这篇文章提出一个模型,通过该模型来更新无监督学习时的参数。作者将这一问题看作迁移学习的问题。这里更新参数的方法是neuron-local function,意味着该方法可以用在各种网络结构上。

相比于监督学习,该方法并不是通过反向传播分类误差的方式来更新参数,而是通过另一个网络预测误差,进而更新参数的。

Model Design

Base model的参数$\phi$由optimizer更新

而meta-parameters $\theta$通过SGD更新

Base Model

Base model $f(\cdot;\phi)$为一个MLP。每一层经过激活函数前的向量称为$x^0, \dots, x^L$,经过激活函数后的向量称为$z^1,\dots, z^L$, 其中$x^0\equiv x$. $W^l$, $b^l$分别为第$l$层的参数。

Unsupervised Update

Base model中的每一层$l$的每一个结点$i$都对应一个update network,其输出为$h_i^l(\cdot;\theta)$. 所有的update network共享同样的$\theta$. Update network包含以下参数

其输出会被作为误差信号,用来更新base model。

Meta Objective

文章中使用线性回归的效果来验证模型的能力。首先用一组$\{ x_a, y_a \}$做线性回归

并测试其在另一组$\{ x_b, y_b \}$上的效果

Unsupervised Learning via Meta Learning

同样是作为unsupervised learning,这篇文章通过将unlabeled data转化为labeled data来进行学习。其目标在于从无标签的数据中构造分类任务,并学习如何快速学习这些任务。这篇文章提出了一种从unlabeled data中构造任务的方法。

Task Construction

作为无监督学习,一个关键问题就是如何从数据集$\mathcal{D} = \{ x_i \}$自动构造任务。

对于有监督的情况,标签就蕴含着数据集的一个划分,具有相同标签的数据属于同一个类。

那么无监督下,应该如何对数据集进行划分?

如果只是简单的随机划分,由于任务缺少结构化的信息,最终模型会什么都学不到。

文章中采用的是k-means聚类。由于这一划分可以看作高斯混合模型$p(x|c)p(c)$,如果这些聚类蕴含了真正的class-conditional分布$p(x|c)$,那么这样构造出来的任务就可以非常有效的用于无监督学习。

k-means的效果取决于所选取的度量。如果直接在pixel-space做k-means效果并不好。这时因为

  1. Pixel-space中的距离与语义之间的关系非常弱
  2. 实际使用中高维的原式图片难以通过这样的方式得到聚类

因此,作者首先使用一个out-of-the-box的无监督embedding算法,将$\mathcal{D}$映射到embedding space $\mathcal{Z} $ .

一次聚类就可以表示为

其中$\mu_c$为类别c的中心位置,$A$为对角阵,表示各个方向的scale.

该方法会在$\mathcal{Z}$上独立的做p次聚类,每一次都选择随机的$A$.

接下来,作者对于应该在embedding上还是在原始图像上做meta-learning 进行了讨论。作者认为,如果将embedding作为输入,那么学习过程会受到embedding function泛化能力的影响,而将原始图像作为输入,学习过程则可以学到更本质的表示。因此作者选择了使用原始图像作为输入。

Semi-Supervised Few-Shot Learning with Prototypical Networks

这篇文章基于prototypical network,将其扩展到了半监督领域。

对于监督学习,PN会计算不同类别的prototype vector,即所有该类样本的均值

其中$g$为embedding function.

新的样本的类别由以下概率决定

即该样本属于某一类别的概率由其到各个prototype的距离的负数取softmax得到。

分类误差为

而作者提出按照以下方法将PN扩展到半监督学习。

首先使用labeled data计算prototypes,然后计算unlabeled data属于各个类的概率,最后再加上unlabeled data, 重新计算prototypes

Meta-Learning for Semi-Supervised Few-Shot Classification

这篇文章的思想与上一篇类似,但是要做的更深入一些。

Common State

对于普通情况,这两篇文章使用了同样的方法来处理。Prototype由下式计算

其中$z_{i,c}=\mathbb{I}[y_i=c]$

而query的类别,以及损失函数都与上篇文章相同。

Distractor Cluster

除了普通情况,文章还考虑了unlabeled data中出现了labeled data中没有出现过的类别。

作者提出,可以使用一个额外的聚类,来包含这些没有出现的类别的数据。

此时,$p_c$被修改为

这里假定这个额外的聚类的中心位于原点。同时引入一个参数$r_c$表示每个聚类的variations in the within-cluster distances.

其中$A(r) = \frac12\log(2\pi)+\log(r)$. 文章中令$r_{1\dots N}=1$, 只需要学习$r_{N+1}$.

Masking

上面提到的这种方法太过于简化了,作者又提出一种mask的方法。基本思想是,首先计算unlabeled data到原型间的距离

其中$d_{j,c} = ||h(\tilde{x}_j)-p_c||^2_2$.

接下来将$\tilde{d}_{j,c}$相关信息输入MLP,得到soft thresholds $\beta_c$与slopes $\gamma_c$.

其中$m_{j,c} = \sigma(-\gamma_c(\tilde{d}_{j,c}-\beta_c))$.

这样实际是划定为每一个类划定一个范围,在这个范围之外的unlabeled data都认为是distractor。