Variational Adversarial Active Learning

iccv2019的文章


介绍

  基于池的半监督算法,总的来说vaal=GAN+VAE+AL,感觉还挺有新意的。理解难度大概是在loss上。值得注意的一点是与传统的主动学习算法不同,本文方法是任务不可知的,即它不依赖于我们试图获取标记数据的任务的性能。以往算法的算样本的不确定性其实是与模型相关的不确定性,比如dropout,就是模型抽走一层看样本的不确定性,这篇文章就是与样本有关的不确定性,与我们的模型任务是无关的。

背景

VAE:简单看成是编码解码,也就是将样本降采样到潜在空间,再上采样输出,想要得到的结果就是输出与输入相对比较接近,VAE和AE的区别其中一个就是潜在空间里样本的方差和均值是和目标是对应的,以此来调整。

Variational Adversarial Active Learning

GAN:零和博弈,没啥好说的,简单来说就是两方在企图可以赢过对方的过程中不断进行调整。

AL:没啥好说的。

模型

 Variational Adversarial Active Learning

XLYL是已标记的样本,XU是未标记样本,首先VAE的输入是label和unlabel,在经过降采样后将他们映射到潜在低维空间中,就是latent space,接下来将他们送入到GAN的鉴别去中去,由鉴别器鉴别样本是标记或未标记。这样一来VAE和GAN的D就是是一个极大极小博弈的过程了,VAE试图欺骗D样本来自已标记样本池,而D是鉴别过程中学会区分他们。最后选择最低置信度的b个送给Oracle进行标注,迭代过后模型就算训练好了。

Variational Adversarial Active Learning 

挑选策略就是这样的,GAN判断是label就输出1,unlabel就输出0,输出的label结果是靠近1的,unlabel是靠近0的,所以我们选的是最低的b个。 

loss

Variational Adversarial Active Learning

Variational Adversarial Active Learning 

 Variational Adversarial Active Learning

loss分为VAE的loss和GAN的loss,其中VAE分为训练损失和对抗损失,训练损失包括label与unlabel的损失,第一部分是重构的似然,第二部分是对近似后验分布的约束。对抗损失则是让D误以为所有数据都是来自己label中,因此要让D内label靠近1,unlabel靠近0.

Variational Adversarial Active LearningVariational Adversarial Active Learning

 

值得注意的一点是,文章这里提到了Oracle的准确性,用到了两种Oracle,一种百分百准确,一种非百分百准确,在后面的鲁棒性实验里有提及。

实验

由于前面说了,VAAL是与任务无关的,只与样本有关的策略,所以这里进行了两种实验,分类和语义分割。

Variational Adversarial Active Learning

Variational Adversarial Active Learning 

 

上一篇:C# 将多个图片合并成TIFF文件的两种方法(续集)


下一篇:tiff文件转pdf文件