主动学习(Active learning) Review
Active learning
Introduction
定义
主动学习针对数据标签较少或打标签代价较高场景设计,又称最优实验设计。主要是通过算法挑选信息量高未标注数据让标注员确定数据的标签,同时利用标注员标注好的数据对模型参数进行更新,如此反复循环迭代后期望数据完成大批量数据集的自动化标注,同时模型也能利用较少的标注数据获得较好的性能
- 以下图片是 logistic regression 在随机挑选数据与基于 hard mining 方式挑选数据训练得到的不同结果,明显针对性挑选在分类决策面边界的不确定度高的样本更利于模型收敛
实现流程:
- 适配任务的模型:基于数据输入能够得到预测结果,比如图片分类模型就是输出各个类别的置信度
- 在数据挑选、数据标注与模型训练几个步骤中进行反复迭代:
- 确认待标注的候选数据(hard mining)(重要步骤)
- 人工标注,获得数据的标签
- 模型更新:通过增量学习或者重新学习的方式更新模型参数
主动学习框架种类
- Stream-Based Selective Sampling(每次挑选一个样本)
- Pool-Based Sampling(每次确定一批待标注数据,主流框架)
应用场景:
- 人在回路的半自动化数据标注
- 算法量产
- 个性化的垃圾邮件、内容分类
- 异常检测:安全数据异常检测、时序异常检测
重要步骤介绍:确认待标注的候选数据(Query Stategy Frameworks)
以下方法说明均以图像分类(二分类或多分类)任务为例
1. 不确定性采样(uncertainty sampling)
挑选模型难以区分的样本,主要方式有:
置信度最低(Least Confident)
选择最大概率最小的样本
边缘采样(Margin Sampling)
选择容易被判定为两类的样本数据,及模型预测的最高置信度与第二高置信度差异小的样本
其中 y1^\hat{y_{1}}y1^ 和 y2^\hat{y_{2}}y2^ 分别代表模型预测的最高置信度类别和第二高置信度类别熵方法(Entropy)
熵越大代表不确定性越高,挑选熵大的样本
2. 基于委员会的查询(Query-By-Commitee)
类似集成学习方法,设定多个模型,通过多个模型投票的方式挑选较难区分的样本,方法有:
投票熵(Vote Entropy)
基于熵衡量样本被多个分类器预测的一致性,即如果这些分类器将样本划分为同一类,算容易区分;如果分类器把样本数据划分到不同类则算难以区分
其中 yiy_{i}yi 表示第 i 类,V(yi)V(y_{i})V(yi) 表示投票给 yiy_{i}yi 的分类器个数, CCC 表示分类器总数平均 KL 散度(Average Kullback-Leibler Divergence)
KL 散度用于衡量两个概率分布的差异,这里用 KL 散度计算不同模型估计偏差较大的数据样本
DDD 表示两个概率的 KL 散度
3. 期望模型变化(Expected Model Change)
选择使得梯度变化最大的样本数据(需要反向传播过程,速度慢)
4. 基于误差减少的查询(Expected Error Reduction)
选择那些通过增加一个样本就能使得 loss 函数减少最多的样本(这个思路类似 Pareto Multi-Task Learning )
5. 基于方差减少的查询(Variance Reduction)
选择方差降低最多的样本数据
6. 基于密度权重的查询(Density-Weighted Methods)
选择稠密的样本数据,比如某些数据点虽然不确定度高,但是可能是异常点不适合作为训练样本,优先选择稠密性更高的样本
其中 ϕA\phi_{A}ϕA 表示某个不确定性采样方法或者基于委员会的查询方法,UUU 表示类别个数,xux^{u}xu 表示第 uuu 类的代表元。加上权重表示会选择那些与代表元相似度较高的样本
Latest Research
Active learning for Image Classification
1. Variational Adversarial Active Learning
提出了一种 pool-based 半监督主动学习算法,主要是一种对抗学习的方式:通过一个 variational autoencoder (VAE) 提取图片特征,一个判别网络判断图片是标注过的还是未标注的,VAE 希望欺骗判别网络对所有样本都判断为 labeled 数据,然而判别网络希望要准确分辨出 data pool 中的未标注样本。基于该方式挑选的未标注样本给标注员进行标注
实验结果方面 VAAL 相比于传统方法有较大提升
分割任务的涨点程度也很大
2. Learning Loss for Active Learning
训练各个任务模型的同时,附带学习一个 loss prediction module
loss prediction module 结构如下
loss prediction module 训练方式
网络训练过程是同时优化 target 分支网络和 loss prediction module
其中 y^\hat{y}y^ 是 target model 的预测输出,yyy 是真实标签,l^\hat{l}l^ 是 loss prediction module 的预测,lll 是基于真实 label 计算的损失 Ltarget(y^,y)L_{target(\hat{y}, y)}Ltarget(y^,y)通常来说 LlossL_{loss}Lloss 最简单的定义方式是直接使用 MSE 损失,但是 MSE 在这里并不使用,因为随着网络的不断迭代训练 target loss 的尺度是越来越小的,MSE 损失对这种尺度变化非常敏感,最后会变成 loss prediction module 在适应尺度的变化而不是预测一个精确值。这样训练出的模型精度比之前的方法精度还低。
所以本文提出了一种 scale-invariant 的 pair-wise loss
其中 ξ\xiξ 是预设定的 positive margin,p 代表 i、j 为匹配对分类任务上的实验精度
检测任务上的实验精度
人体姿态估计任务上的实验精度
和基于 entropy 的方法的对比,可以看到本文提出的模块预测损失与真实损失相关性更高
Active learning for Object Detection
- 检测一般先对 instance (比如 anchor 输出)进行打分,通过 score aggregation 方法得到图片级别的分数,一般 aggregation 方式:max/avereage/sum
1. Active Learning for Deep Object Detection
2. Localization-Aware Active Learning for Object Detection
- 检测任务中的主动学习框架图
- localization tightness:对于两阶段目标检测网络,模型会根据 region proposal 结果 refine 到最终预测框,region proposal 和最终预测框的 IOU 越小说明这个样本的不确定度越高。因为不确定性低的样本一般来说 region proposal 的结果就已经不错了,如果是需要 refine 过程大幅度修改则代表不确定性度高
- localization stability:根据对噪声的鲁棒性判断样本的不确定度,即随着噪声增加框预测变化大的说明不确定度大
3. Consistency-based Active Learning for Object Detection
整体框架
CALD 方案,分为两个stage
1. stage1 根据单个样本挑选样本,方式是根据经过数据增广(可能是串行)后的预测一致性来判断,一致性差的样本信息量大,需要被挑选;
2. stage2 根据多个样本的互信息挑选样本,首先统计已标注数据的类别分布,在挑选样本时尽量挑选类别分布与已标注数据类别分布差异大的,分布差异采用 JS 散度度量,这样缓解了类别不均衡性
信息量的度量方式一般希望满足两个原则
- 随着标注过程不断进行,模型不断迭代更新,labeled pool 和 selected pool 中的信息量都应该降低;
- selected pool 的信息量应该要高于 labeled pool
CALD 与经典方法 (LS+C、predicted loss) 的信息量度量方式对比,可以看到 CALD 更能满足上面两个原则:
stage2 的基于互信息采样缓解样本不均衡问题
Active learning for semi-automated labeling
1. Active Learning with Amazon Mechanical Turk
结合主动学习和众包做智能标注
整体框架
- 前端是简单的网页界面,用于分发数据和标注
- 后端进行模型训练、未标注样本采样等步骤,支持多种 active learning 策略
- 并行化策略
- 为了避免标注员等待数据采样,unlabeled pool 中会根据数据的信息量防止在一个队列中,基于该队列的顺序给标注员安排待标注数据
- 众包任务分配时根据样本的 majority voting 情况判断是否需要新加标注员进行标注
实验结果
Conclusion
- 主动学习主要是通过难样本挖掘来提升深度神经网络训练的高效性,在智能标注、算法量产等领域有重要的应用
- 难样本挖掘这里目前主流的 SOTA 方案都是使用神经网络来预测样本的难易程度,挑选出难样本(信息量大)进行网络训练,能在使用较少训练样本的条件下加快模型收敛速率和收敛效果
- 智能标注这里主动学习是算法模块中重要组成部分,整个智能标注系统的搭建还依赖于工程的设计,比如底层数据库、前端标注并发等设计
Reference
[1] Active_learning_(machine_learning) wiki
[2] Settles B. Active learning literature survey[R]. University of Wisconsin-Madison Department of Computer Sciences, 2009。
[3] Active-learning tutorial (datacamp)
主动学习(Active learning) Review相关推荐
- 主动学习(Active Learning,AL)的理解以及代码流程讲解
为什么要使用主动学习(Active Learning,AL) 针对有监督的学习任务,存在标记成本较为昂贵且标记难以大量获取的问题. 在此问题背景下,主动学习(Active Learning, AL)尝 ...
- 主动学习active learning方法汇总
更新2021/12/6 到目前为止看了不少主动学习的文献,简单做一下一些目前为止了解到的主动学习方法的整理吧. 起初是精读的文献中整理的,后来发现在精读文献的方法比较里也有一些比较经典的主动学习方法, ...
- 机器学习中的主动学习(Active Learning)
最近在做主动学习相关的东西,随着深入了解和学习对于某些东西有一些模糊,先将所见所感整理如下,如有不正确之处希望大佬能够指正: 1.主动学习 1.1关键问题 对于监督学习模型,足够多的已标注样例是获得高 ...
- 主动学习(Active Learning)领域部分经典论文汇总
只简单找了一小部分 CVPR [link] Active Image Segmentation Propagation CVPR 16 segmentation [link] The Power of ...
- 主动学习 Active Learning - a survey
知识点解释 1. 分析机器学习算法的可学习性时,通常有 realizable-assumption 和 non-realizable-assumption.前者表示假设空间中存在 ERM 为零的最优模 ...
- 主动学习(Active Learning)简介综述汇总以及主流技术方案
0.引言 在机器学习(Machine learning)领域,监督学习(Supervised learning).非监督学习(Unsupervised learning)以及半监督学习(Semi-su ...
- 主动学习(Active Learning)系列介绍(三)搜索假设空间(Searching Through the Hypothesis Space)
本文介绍主动学习Active Learning中的第二种query selection framework -- 搜索假设空间Searching Through the Hypothesis Spac ...
- 主动学习(Active Learning,AL)综述
目录 1. 基本概念 2. 基于不确定性的主动学习方法 3.基于最近邻和支持向量的分类器的方法 3.1 NNClassifier 3.2 RBF network + Gradient Penalty ...
- 每日一学-- 主动学习(active learning)
1. 在机器学习中,有监督学习.半监督学习.无监督学习. 在使用监督学习时,模型在标注的数据中学习信息,而存在的问题就是有大量的数据需要标注,非常费时费力.so主动学习为我们提供了方法,通过一定的算法 ...
- 基线提升至96.45%:2022 司法杯犯罪事实实体识别+数据蒸馏+主动学习
0.法研杯 LAIC2022 司法人工智能挑战赛犯罪事实实体识别 0.1比赛简介 任务介绍 本赛道由中国司法大数据研究院承办. 犯罪事实实体识别是司法NLP应用中的一项核心基础任务,能为多种下游场景所 ...
最新文章
- 栈中函数调用原理_详解
- python腾讯语音合成
- “指向指针的指针”的作用和应用
- 启动失败代码2_菲斯曼燃气壁挂炉故障代码大全及解决方法
- IDEA 点击进入方法内部_Idea中,听说会了Debug,你就离大佬不远了!
- servlet中文乱码_Servlet入门 信息过滤
- WARNING: A newer version of conda exists.
- Hybrid App工作笔记0001---混合App开发过程中_Web是如何调用原生功能的_调用原理
- matplotlib——交互按钮中的Home键无法使用
- mysql导入 内存溢出_Solr Dataimporthandler 导入MySQL 内存溢出。
- c语言求一个数的位数不用循环_LeetCode基础算法题第181篇:将数字减少为零的步骤数...
- Spring依赖注入static静态变量相关问题
- 盛夏七月,欢迎来京城看“火烧云”
- 网站关键词-网站关键词设置方法-网站关键词排名优化软件
- vue百度地图加载离线瓦片(包含百度离线文件+瓦片下载器)
- 《IT项目经理成长手记》读后感
- 鸿蒙系统升级到第几批了,鸿蒙系统第四批升级名单有哪些 鸿蒙系统第四批升级机型介绍...
- 未点击安全退出直接拔出u盘文件丢失恢复图文教程
- 活动策划书用什么计算机软件,各行业主流设计软件有哪些?(设计人员请进)...
- android 播放器 sma,SMA测评app
热门文章
- 计算机电脑密码设置程序,电脑密码怎么设置
- 《2018年度回顾报告》
- 283.软件体系结构描述
- js图片格式转换(File、blob、二进制)
- 赵云java游戏有蓝药红药_倩女幽魂手游红蓝药自给自足方法
- 计算机专业自学美术,成人大专计算机应用专业考自学本科美术教育哪些科..._自学考试_帮考网...
- 2022年全球市场碳化硅机械密封圈总体规模、主要生产商、主要地区、产品和应用细分研究报告
- WIN7下通过命令调用“控制面板项” / RUNDLL32详解 / CPL文件详解
- [转]我最喜欢的情歌■■ 停留在心中的第二道彩虹
- Element 中的表格表头添加搜索图标和功能