【主动学习】Variational Adversarial Active Learning
本文记录了博主阅读ICCV2019一篇关于主动学习论文的笔记,第一篇博客,以后持续更新哈哈
论文题目:《Variational AdVersarial Active Learning》
原文地址:https://arxiv.org/pdf/1904.00370
开源地址:https://github.com/sinhasam/vaal
·摘要
主动学习旨在形成有效标记的算法,通过采样最有代表性的查询结果去使用标注专家标记。本文描述了一种基于池的半监督主动学习算法,以对抗的方式学习采样机制。通过使用一个变分自编码器学习一个潜码空间,然后使用对抗网络训练判别器区分数据是否被标记。VAE和判别器之间进行对抗学习:VAE的目标是让判别器预测所有的数据点都是来自于标记池的,判别器的目标是为了更好的区分是否是标记数据。对抗网络学习如何判断潜码空间的不相似性。作者在图像分类数据集(CIFAR10/100,Caltech-256,ImageNet)和分割数据集(Cityscapes,BDD100K)上进行评价。结果表明,本文对抗自编码器的方法可以学习一个有效的低维的潜码空间并提供一个计算高效的采样方法。
介绍
最近基于学习的计算机视觉方法取得的很大成功严重依赖于标注训练样本,可能需要花费很高的标注代价。为了解决这个问题,主动学习算法旨在增量的挑选注释的样本,使用尽可能少的标注样本得到更高的分类性能。主动学习需要的训练数据相对较少,可以用在图像分类和分割任务中。本文介绍了一个基于池的主动学习策略,通过使用变分自编码器从标记和未标记的数据中学习一个低维的潜码空间。
相关工作
主动学习:当前的方法主要分为基于池(查询获取)或查询合成方法。查询合成方法使用生成模型生成更具有信息的样本,然而查询获取使用不同的采样策略确定如何挑选最有信息量的样本,本文的方法就是基于查询获取的主动学习,主要介绍在这方面的相关工作。
基于池的方法分为三类:
1)基于不确定的方法:
2)基于表示的模型
3)二者相结合
变分自编码器:自编码器在特征空间和表示中广泛使用。
主动学习在语义分割方面的工作
Suggestive Annotation, Core-Sets,
方法概括
变分自编码器对抗学习的主动学习:
(XL,YL)表示标记池中的标记数据, (XU)表示未标记池中的数据。主动学习者的目标是训练最label-efficient的模型,通过迭代的查询一个固定的采样预算,从未标记池中挑选出最有代表性的b个样本,查询结束后使用oracle进行标注。
转导表示学习
本文使用β变分自编码器进行表示学习,编码器使用高斯先验可以学习一个潜在分布的低维空间,解码器可以重建输入的数据。为了捕捉有标记的数据在表示学习过程中丢失的特征,作者提出使用转导学习。这个目标函数β-VAE最小化样本边缘分布的变分下界,具体形式如下:

其中q和p分别表示编码器和解码器,p(z)是一个先验,β是优化问题的拉格朗日参数,同时为了更好的进行梯度优化使用了重新参数化技巧。
对抗表示学习
VAE的表征学习是一个关于标记数据和未标记数据潜在编码特征的混合。一个理想的主动学习方法假设有一个完美的采样策略能够将最有信息量的未标记样本发送给Oracle。大多数的采样策略依赖模型的不确定性,例如:模型对预测越不确定,未标记样本包含的信息越多。恰恰相反,本文通过训练一个对抗网络对于采样机制去学习如何区分在潜在空间的编码特征。主动学习中,对抗网络中将输入映射到潜码空间并且给一个标签,若样本来自标记数据,则为1,如果为未标记数据,则为0。本文的关键是使用对抗的方式。然而VAE匹配标记和未标记的数据到相同的具有相似概率分布的潜码空间,骗过判别器去分类所有的输入是标记的。另一方面,判别器尝试高效建立标记数据和未标记数据的分布。公式化如下:

判别器的目标函数如下:

结合等式1和等式2,得到VAE的整个目标函数:

Lamda1和lamda2是两个超参数确定各个分量学习有效变分表示的效果

如上图所示,任务模块用T表示,学习主动学习者正在学习的任务。作者在图像分类和分割任务上做了对比试验,使用带有一个无权交叉熵损失函数的VGG16和DRN膨胀残差网络结构算法的流程如下:

采样策略和带噪声的Oracles
Oracle提供的标签的准确度取决于可利用的人类资源的素质。例如,医学图像注释被人类专家,专家是更准确的比非专家人员。本文的作者考虑了两种类型的Oracle:一个理想的Oracle,总是为主动学习者提供正确的标签,还有一个带有噪声的Oracle,非对抗的提供有错误的标签对于某些特定的类别,这可能发生由于一些类之间有很强的相似性,从而造成标注者是模糊的。为了呈现Oracle实际的效果,作者应用一个有针对性的噪声在一些容易混淆的类别上。VAAL采样策略的算法如下:使用与鉴别器的预测作为收集b个样本的分数,每个batch都挑选b个最低的自信度送给Oracle D判断出来越小的,越可能是未标记池中的数据。

实验
作者进行试验使用最初10%的标记数据的训练集,每个batch的b是整个训练集的5%。未标记数据的池中包含剩下的训练集。一旦被标记他们将被添加到初始的训练集并且在新的训练集上重复训练。我们认为Oracle是理想的(标注无误)
数据集:作者评价本文的方法在两个普通的视觉任务,图像分类中,使用CIFAR10和CIFAR100,都包含6万张32*32的图像,并且Caltech-256有30607张224*224的图像,包含256个类别。为了更好的验证VAAL的可扩展性,作者也在ImageNet上进行了实验,一共拥有1000类。在语义分割任务,在BDD100K和CityScapes中进行实验,都拥有19类。BDD100K是自动驾驶视频的数据集拥有10K图像。本文中用到的数据集统计如下图所示:

性能评价:图像分类中使用准确率,图像分割中使用平均交并比。T训练用训练集所有数目的10%,15%,20%,25%,30%,35%,40%。除了ImageNet上的实验,其它所有的实验都是平均运行5次。ImageNet上的实验是使用训练集的10%,15%,20%,25%,30%重复训练两次平均的结果。
性能比较
在分类任务上的结果
Baselines:在图像分类任务上与Core-set,Monte-Carlo Dropout和Ensembles using Variation Ratios进行比较。也展示了深度贝叶斯AL的表现性能并且使用其所提出的最大熵策略测量不确定性。我们展示了结果在未标记的池中随机均匀采样。这个方法仍然是一个比较有竞争力的baseline在主动学习中,此外,使用在整个数据集上的平均准确率作为上限,不符合主动学习情境。

在分割任务上的结果
Baselines:Core-set,MC-Dropout,QBC,SA(suggest annotation)


分析VAAL:
消融实验

如上图所示表示在BDD100K上进行消融实验,验证VAAL中关键模块的贡献,包括VAE,D。消融实验主要考虑:a)消除VAE;b)固定VAE,同时使用D;c)消除D
在a)中,通过仅仅使用判别器在图像空间训练区分标记和未标记数据来探索VAE在表示学习中的效果,如图所示,结果表明判别器仅仅记住了数据,并且产生了最低的性能。同时它表明VAE不仅仅是学习一个丰富的潜码空间,而且也会与判别器进行博弈,避免过拟合。
在b)中,作者为了训练D添加一个VAE在低维空间中编码和解码。然而,不训练VAE只是作为一个自编码器。这个结果是更好的比单独的D在图像空间上训练。但是仍然是更差的比随机采样,表明判别器失败学习未标记池的样本表示。
在c)中,作者验证判别器的效果,通过仅仅使用VAE训练,使用Wasserstein距离基于标记数据集的聚类中心测量不确定度;;两个分布的Wassertein距离公式如下:

在这个实验的效果比随机采样效果好,清楚的表明了在潜码空间测量不确定性的有效性。然而,VAAL通过在判别器和VAE之间的对抗学习清楚的学习了不确定性,效果远超过这三个方案
VAAL的鲁棒性
初始标记池中有偏差的标签效果:作者为了调查在初始标记池中偏置如何影响VAAL的性能,在CIFAR100上进行了实验。直觉上,偏置可以影响训练,因为他造成了最初的标记样本是没有代表性的,不足以代表潜在数据的分布,是不充足去涵盖潜码空间的大多数区域。作者模拟了一个可能的情况:对于m个随机选择的类,标记池中不提供这样标签的数据。与在所有的类别中随机采样进行对比。作者研究了m=10和m=20是如何影响模型的效果。如下如所示。

预算大小对性能的影响
如下图所示,与大多数Baseline比较的结果在CIFAR100上。主要比较了b=5%和b=10%的效果。

有噪音的Oracle
在这个分析中作者调查了由于不准确的Oracle导致有噪声的数据存在是如何影响VAAL的结果。作者认为错误的标签是因为一些类之间不容易区分,而不是对抗攻击。作者模仿在明确的类别上噪声,等同于人类错误的标记了一些容易混淆的类别。使用CIFAR100分析,由于100个类的层次结构,100个类别被分组成了20个超类。每个图像有一个超类和一个子类。作者通过随机的改变标签的真实值对于10%,20%,30%的训练集在相同的超类下有一定的错误标签。下图展示了有噪声的标记是如何影响算法的性能的。

T中网络结构的选择
在分类的任务中,为了确保VAAL对VGG16的结构不敏感,作者也是用ResNet18进行实验。如图6所示。

采样时间的分析
主动学习者的采样策略必须以快速的时间选择样本,考虑到随机采样仍然是一个有效的Baseline,它挑选样本的时间应该与随机采样比较接近。下面的表格展示了VAAL与Baseline的对比在CFFAR10上。

总结
这篇文章主要提出了一个批处理的主动学习算法,通过VAE与判别器之间的对抗学习来学习标记数据和未标记数据的潜码表示。同时,这篇文章做了大量的实验(我认为中oral的一部分原因)来验证VAAL的性能。
【主动学习】Variational Adversarial Active Learning的更多相关文章
- [主动学习--查询策略] 01 Core-set
符号定义 主动学习每一次迭代选择的样本数量为一个 budget 训练集中初始无标签数据集记为 unlabeled data,\(\bm{u}^0\) 训练集中初始有标签数据集记为 initial la ...
- zz2019年主动学习有哪些进展?答案在这三篇论文里
2019年主动学习有哪些进展?答案在这三篇论文里 目前推广应用的机器学习方法或模型主要解决分类问题,即给定一组数据(文本.图像.视频等),判断数据类别或将同类数据归类等,训练过程依赖于已标注类别的训练 ...
- [Active Learning] 01 A Brief Introduction to Active Learning 主动学习简介
目录 什么是主动学习? 主动学习 vs. 被动学习 为什么需要主动学习? 主动学习与监督学习.弱监督学习.半监督学习.无监督学习之间的关系 主动学习的种类 主动学习的一个例子 主动学习工具包 ALiP ...
- 主动学习——active learning
阅读目录 1. 写在前面 2. 什么是active learning? 3. active learning的基本思想 4. active learning与半监督学习的不同 5. 参考文献 1. ...
- Active Learning主动学习
Active Learning主动学习 我们使用一些传统的监督学习方法做分类的时候,往往是训练样本规模越大,分类的效果就越好.但是在现实生活的很多场景中,标记样本的获取是比较困难的,这需要领域内的专家 ...
- 简要介绍Active Learning(主动学习)思想框架,以及从IF(isolation forest)衍生出来的算法:FBIF(Feedback-Guided Anomaly Discovery)
1. 引言 本文所讨论的内容为笔者对外文文献的翻译,并加入了笔者自己的理解和总结,文中涉及到的原始外文论文和相关学习链接我会放在reference里,另外,推荐读者朋友购买 Stephen Boyd的 ...
- Active Learning 主动学习
Active Learning 主动学习 2015年09月30日 14:49:29 qrlhl 阅读数 21374 文章标签: 算法机器学习 更多 分类专栏: 机器学习 版权声明:本文为博主原创文 ...
- 主动学习(Active Learning)
主动学习简介 在某些情况下,没有类标签的数据相当丰富而有类标签的数据相当稀少,并且人工对数据进行标记的成本又相当高昂.在这种情况下,我们可以让学习算法主动地提出要对哪些数据进行标注,之后我们要将这些数 ...
- Recorder︱深度学习小数据集表现、优化(Active Learning)、标注集网络获取
一.深度学习在小数据集的表现 深度学习在小数据集情况下获得好效果,可以从两个角度去解决: 1.降低偏差,图像平移等操作 2.降低方差,dropout.随机梯度下降 先来看看深度学习在小数据集上表现的具 ...
随机推荐
- 牛客多校第二场B discount 基环内向树
题意: 有n种商品,每种商品有一个价格 p[i] . 每种商品都有2种打折方式: 1. 给你优惠 d[i] 元. 2. 免费送你第 f[i] 种饮料. 现在求每种饮料至少一瓶的最小花费. dp[i][ ...
- codeforces 688 E. The Values You Can Make(01背包+思维)
题目链接:http://codeforces.com/contest/688/problem/E 题解:设dp[s1][s2]表示s1状态下出现s2是否合理.那么s1显然可以更具01背包来得到状态.首 ...
- codeforces 245 D. Restoring Table(位运算+思维)
题目链接:http://codeforces.com/contest/245/problem/D 题意:给出一个矩阵b,b[i][j]=a[i]&a[j],b[i][i]=-1.然后求a[i] ...
- Leetcode之动态规划(DP)专题-详解983. 最低票价(Minimum Cost For Tickets)
Leetcode之动态规划(DP)专题-983. 最低票价(Minimum Cost For Tickets) 在一个火车旅行很受欢迎的国度,你提前一年计划了一些火车旅行.在接下来的一年里,你要旅行的 ...
- 【Offer】[51] 【数组中的逆序对】
题目描述 思路分析 测试用例 Java代码 代码链接 题目描述 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对.输入一个数组,求出这个数组中的逆序对的总数.例如,在数组 ...
- ssh的秘钥认证
ssh秘钥认证简述 通常我们会使用x-shell.putty.MobaXterm等支持ssh连接的工具去登录服务器进行管理,而执行ssh命令.scp命令等从一台服务器登录另外一台服务器的时候,通常需要 ...
- Salesforce LWC学习(七) Navigation & Toast
上一篇我们介绍了针对LWC中常用的LDS的适配的wire service以及@salesforce模块提供的相关的service,其实LWC中还提供其他的好用的service,比如针对导航相关的lig ...
- 初始mqtt服务
MQTT入门 概念 mqtt意为消息队列遥测传输,是IBM开发的一个即时通讯协议.由于其维护一个长连接以轻量级低消耗著称,所以常用于移动端消息推送服务开发. 协议格式 mqtt协议控制报文的格式包含三 ...
- Unity3D_07_日志、文本打印
1.Debug.Log(“hello”); 2.打开控制台查看日志:ctrl+shift+c 3.输出一个位置的坐标(需要转换成字符串.ToString()) Vector3 worldPositio ...
- 解析 HTTP 请求 header 错误
1.org.apache.coyote.http11.Http11Processor.service 解析 HTTP 请求 header 错误 2.原因:在创建项目名称的时候,文件名不能带有中文,只能 ...