1 基本介绍
- 监督学习问题中,存在标记成本昂贵且难以大量获取的问题。
- 针对一些特定任务,只有行业专家才能为样本做上准确标记。
- 在此问题背景下,主动学习(Active Learning, AL)尝试通过选择性地标记较少数据而训练出表现较好的模型。
- 主动学习最重要的假设是不同样本对于特定任务的重要程度不同,所以带来的表现提升也不全相同。
- 选取较为重要的样本可以使当前模型以较少的标记样本数得到较好的表现
- 在这一过程中,主动学习的本质是对样本的重要性(/信息度/期望带来的表现等)等进行评估
- 主动学习最重要的假设是不同样本对于特定任务的重要程度不同,所以带来的表现提升也不全相同。
- 比如上图(a),是一个由400个实例组成的数据集,从两类高斯分布均匀采用。实例表示为二维特征空间中的点
- (b)表示 从问题域中随机抽取30个标记实例,训练一个逻辑回归模型。这条蓝线代表了分类器的决策边界。按照这样分类,只有70%的准确率
- (c) 表示使用不确定性抽样对30个主动查询实例进行训练的逻辑回归模型。按照这样分类,有90%的准确率
- 模型会从数据集中主动选择一些不带标签的数据,交互式地向专家(oracle)请求标注,这个过程叫做query。
- 在每一次标注之后,模型重新或者增量地在带标签的数据上训练,然后再主动地选择不带标签数据进行标注,重复这个过程。
1.1 从不同角度理解主动学习
从问题的角度 | 通过以某种主动策略构建较小训练集来减少标记成本的机器学习方式 |
从策略的角度 | 以某种方式对未标记样本重要性的评估 |
从训练的角度 | 一种交互式的标记、训练、评估流程 |
2 主动学习基本的问题场景
Pool-based scenario |
|
Stream-based scenario |
|
Query synthesis scenario |
|
3 主动学习对样本的评估方法
基于 Pool-based Scenario + Classification
选取的样本进行manual label
- 查询策略的设计并不是简单和一成不变的,需要根据具体环境、问题和需要进行设定。
- 比如,在猫狗二分类问题中,一张长得像猫的狗的照片,对分类模型的训练往往是有价值,因为它难以分辨。但是,同样是这张照片,出现在动植物二分类问题中,就变得不那么重要了,因为模型想分辨它并不难
Informativeness |
|
Representativeness-impart |
|
Expected Improvements |
|
Learn to score |
|
4 实际应用中主动学习可能存在的问题
4.1 性能不稳定(最大的问题)
- 主动学习是根据自己指定的选择策略从样本中挑选,那么这个过程中策略和数据样本就是影响性能的两个很重要的因素。
- 对于非常冗余的数据集,主动学习往往会比随机采样效果要好,但是对于样本数据非常多样,冗余性较低的数据集,主动学习有的时候会存在比随机采样还差的效果。
- 数据样本的分布还影响不同主动学习的方法,比如基于不确定性的方法和基于多样性的方法,在不同数据集上的效果并不一致
- ——>这种性能的不稳定是制约人们应用主动学习的一个重要因素
4.2 脏数据的挑战
- 现在几乎所有的论文都在公开的数据集、现成的数据集上进行测试和研究。
- 而这些数据集其实已经被选择和筛选过了,去除了极端的离群值,甚至会考虑到样本平衡,人为的给少样本的类别多标注一些,多样本的类别少标注一些。
- 而实际应用中,数据的状况和这种理想数据集相差甚远。
- 主动学习常用不确定性的选择策略,不难想象,噪声较大的样本甚至离群值总会被选择并标注
- ——>这种样本可能不仅不会提升模型的性能,甚至还会使性能变差
4.3 OOD(out of distribution)的问题
例如想训练一个猫狗分类器,直接从网络中按关键字搜索猫狗收集大量图片,里边可能存在一些老虎、狮子、狼等不在猫狗类别的无关样本,但是他们的不确定性是非常高的,被选中的话,并不会提升模型的性能
4.4 难以迁移
- 主动学习是一种数据选择策略,那么实际应用中必然需求更通用、泛化性更好的主动学习策略。’
- 而目前的主动学习策略难以在不同域、不同任务之间进行迁移
- 比如设计了一个猫狗分类任务的主动学习策略,基于不确定性或多样性,达到了较好的性能
- 现在需要做一个新的鸡鸭分类的任务,那么是否还需要重新设计一个策略?
- 由于不同任务的数据分布特点可能不一样,不同任务的难易不一样,无法保证主动学习的策略能够在不同数据不同任务中通用,往往需要针对固定的任务设计一个主动学习策略
4.5 流程不便
- 在流程上,现在主动学习普遍是选择出一批待标注的样本后,交给人们去标注,而期望人们能尽快标注交给模型,模型继续训练后再次选择
- 人们标注的时候,模型既不能训练,主动学习也不进行其他操作,是个串行的过程,需求等待人工标注结束后,才能进行接下来的训练
参考内容: