这一次是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效果并不好。这时因为
- Pixel-space中的距离与语义之间的关系非常弱
- 实际使用中高维的原式图片难以通过这样的方式得到聚类
因此,作者首先使用一个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。