本文概述
- 动机
- 主动学习:定义和概念
- 放在一起
- 主动学习的应用与现代研究
能够正确利用主动学习将为你提供一个非常强大的工具, 可以在缺少标签数据的情况下使用。主动学习可被视为类似于转移学习的一种” 设计方法论” , 也可用于利用少量标记数据。
在下一篇文章中, 你将了解有关如何将主动学习与转移学习结合使用以最佳地利用现有(和新)数据的更多信息。
动机 我认为, 与其首先给出一个关于主动学习的正式定义, 不如从一个简单的示例开始, 更好地了解主动学习的作用。
文章图片
查看上面最左边的图片(此调查得出), 你有两个聚类, 分别为绿色和红色。精明的读者会知道这是一个分类任务, 你想创建一个将绿色和红色形状分开的” 决策边界” (在这种情况下, 只是一条线)。但是, 可以假设你不知道数据点的标签(红色或绿色), 但是尝试为每个数据点查找标签将非常昂贵。结果, 你希望对一小部分点进行采样并找到这些标签, 然后将这些标记的数据点用作分类器的训练数据。
在中间图片中, 通过首先随机采样一小部分点并对其进行标记, 将逻辑回归用于对形状进行分类。但是, 你看到使用逻辑回归(蓝线)创建的决策边界不是最佳的。这条线明显偏离红色数据点并进入绿色形状区域。这意味着将有许多绿色数据点被错误地标记为红色。这种偏斜是由于用于标记的数据点选择不当所致。在最右边的图片中, 再次使用逻辑回归, 但是这次, 你使用主动学习查询方法选择了一小部分点。这个新的决策边界要好得多, 因为它可以更好地分离两种颜色。这种改进来自选择优越的数据点, 因此分类器能够创建一个很好的决策边界。
【主动学习(好奇的AI算法)】主动学习查询方法如何能够选择这样的优点是主动学习中的主要研究领域之一。稍后, 你将看到一些最受欢迎的查询数据点的方法。
主动学习:定义和概念 主动学习的主要假设是, 如果学习算法可以选择要从中学习的数据, 则与传统方法相比, 其性能要好得多, 而训练数据却要少得多。
但是这些传统方法到底是什么?
这些任务涉及收集从基础分布中随机采样的大量数据, 并使用此大型数据集来训练可以执行某种预测的模型。你将把这种典型的方法称为被动学习。
被动学习中比较耗时的任务之一是收集标记的数据。在许多情况下, 可能会有限制因素妨碍收集大量标记数据。
让我们以研究胰腺癌为例。你可能想预测患者是否会患上胰腺癌, 但是, 你可能只有机会为少数患者提供进一步检查以收集特征, 等等。在这种情况下, 我们可以选择随机选择患者, 而不是随机选择患者根据某些标准。一个标准的例子可能是患者喝酒且年龄超过40岁。该标准不必是静态的, 但可以根据先前患者的结果进行更改。例如, 如果你意识到自己的模型可以很好地预测50岁以上人群的胰腺癌, 但是很难为40-50岁之间的人群做出准确的预测, 那么这可能就是你的新标准。
根据我们到目前为止收集的数据选择这些患者(或更一般地说是实例)的过程称为主动学习。
情境
在主动学习中, 学习者通常会在三种场景或设置中查询实例标签。文献中已考虑的三种主要情况是:
- 成员资格查询综合:这是一个很大的术语, 仅表示学习者(从某种潜在的自然分布中)生成/构造一个实例。例如, 如果数据是数字的图片, 则学习者将创建与数字相似的图像(可能会旋转或排除数字的一部分), 并将此创建的图像发送到oracle进行标记。
文章图片
- 基于流的选择性采样:在此设置中, 你假设获取未标记的实例是免费的。基于此假设, 你可以一次选择一个未标记的实例, 并允许学习者根据其信息性来确定是要查询实例的标签还是拒绝该实例的标签。要确定实例的信息量, 请使用查询策略(请参阅下一节)。在上面的示例之后, 你将从未标记的图像集中选择一个图像, 确定是否需要标记或丢弃该图像, 然后重复下一个想象。
文章图片
- 基于池的采样:与基于流的选择性采样一样, 此设置假定存在大量未标记数据。然后根据一些信息量度从池中提取实例。此度量将应用于池中的所有实例(如果池很大, 则应用于某些子集), 然后选择信息量最大的实例。这是主动学习社区中最常见的情况。继续上述两种情况下的示例, 将对所有未标记的数字图像进行排名, 然后选择最佳(信息量最大)实例并请求其标记。
文章图片
查询策略
主动学习者和被动学习者之间的主要或核心区别在于, 能够基于过去的查询以及这些查询的响应(标签)来查询实例。如你之前所读, 所有主动学习方案都需要对未标记实例进行某种程度的信息量度。在本节中, 我将解释三种常见的查询不确定性抽样的常见方法, 这些方法由于使用概率而被称为不确定性抽样(对于一般的主动学习, 更多的查询策略和更深入的信息, 我建议本问卷调查)。
我将使用下表解释查询策略。该表显示了两个数据点(实例)以及每个实例具有每个标签的概率。带有标签A, B和C的概率d1分别为0.9、0.09和0.01, 而d2的概率为0.2、0.5和0.3。
实例 | 标签A | 标签B | 标签C |
---|---|---|---|
d1 | 0.9 | 0.09 | 0.01 |
d2 | 0.2 | 0.5 | 0.3 |
- 最低可信度(LC):在此策略中, 学习者选择对其最可能的标签具有最低可信度的实例。从表中可以看出, 精益者对d1的标签非常有信心, 因为它认为应该将其标记为A的概率为0.9, 但是, 对于d2的标签却不太确定, 因为它的概率分布更大, 并且认为标记为B的概率仅为0.5。因此, 使用最小置信度, 学习者将选择d2来查询其实际标签。
- 保证金抽样:LC策略的缺点在于, 它仅考虑最可能的标签, 而忽略了其他标签的概率。余量采样策略试图通过选择在第一和第二最可能标签之间具有最小差异的实例来克服此缺点。从d1看, 其第一个和第二个最可能的标签之间的差为0.81(0.9-0.09), 而对于d2则为0.2(0.5-0.3)。因此, 学习者将再次选择d2。
- 熵采样:为了利用所有可能的标签概率, 你使用了一种流行的测度, 称为熵。将熵公式应用于每个实例, 并查询具有最大值的实例。在我们的示例中, d1的值为0.155, 而d2的值为0.447, 因此学习者将再次选择d2。
步骤0:收集资料
此步骤看似微不足道, 但是, 重要的是要确保收集到的数据集能够代表数据的真实分布。换句话说, 请尝试避免大量的数据偏斜。实际上, 由于法律, 时间或可用性等限制, 不可能有一个完全具有代表性的样本。
在此示例中, 你将拥有以下5个数据点。特征A和特征B代表数据点可能具有的某些特征。重要的是要注意, 我们收集的数据是未标记的。
实例 | 功能A | 特征B |
---|---|---|
d1 | 10 | 0 |
d2 | 4 | 9 |
d3 | 8 | 5 |
d4 | 3 | 3 |
d5 | 5 | 5 |
接下来, 你需要将我们的数据拆分为一个非常小的数据集(我们将为其标记)和一个较大的未标记的数据集。在主动学习术语中, 我们称这个小的标签数据集为种子。没有通常使用的未标记数据的设置数量或百分比。一旦预留了将用于种子的数据, 就应该标记它们。
请注意, 在大多数文献中, 研究人员并未使用Oracle或专家来标记这些实例。通常, 他们获得一个完全标记的数据集, 并为种子使用少量数据(因为他们已经有了标签), 而其余的则好像未标记一样。每当学习者选择一个实例来查询orcale时, 他们只需查找该实例的标签。
继续该示例, 为种子选择两个实例d1和d3。在这种情况下, 可能的标签为” Y” 和” N” 。
种子/标签数据集
实例 | 功能A | 特征B | 标签 |
---|---|---|---|
d1 | 10 | 0 | 和 |
d3 | 8 | 5 | ? |
实例 | 功能A | 特征B |
---|---|---|
d2 | 4 | 9 |
d4 | 3 | 3 |
d5 | 5 | 5 |
拆分数据后, 你可以像正常的机器学习项目一样使用种子来训练我们的学习者(使用交叉验证等)。另外, 所使用的学习器的类型将基于你对域的了解, 通常, 当你将这些概率用于查询策略时, 你将使用对实例是否具有特定标签做出概率响应的学习器。
在示例中, 你可以使用所需的任何分类器, 并且将在两个带标签的实例上进行训练。
步骤3:选择未标记的实例
培训好学习者之后, 你就可以选择一个或多个实例进行查询了。你将必须确定要使用的方案类型(即, 成员资格查询综合, 基于流的选择性采样或基于池的采样)和查询策略。
你将使用批次大小为2的基于池的采样。这意味着在每次迭代中, 你将从未标记的数据集中选择两个实例, 然后将这些实例添加到标记的数据集中。你使用最小的置信度来选择实例。精简者选择查询标签分别为” Y” 和” N” 的d2和d4。
标记数据集
实例 | 功能A | 特征B | 标签 |
---|---|---|---|
d1 | 10 | 0 | 和 |
d3 | 8 | 5 | ? |
d2 | 4 | 9 | 和 |
d4 | 3 | 3 | ? |
实例 | 功能A | 特征B |
---|---|---|
d5 | 5 | 5 |
现在, 你可以重复步骤2和3, 直到达到某些停止条件为止。这意味着, 当你拥有我们的新标签数据集时, 你将重新训练精益人员, 然后选择其他未标签数据进行查询。一个停止条件可能是查询的实例数, 另一个可能是步骤2和3的迭代数, 也可以在性能没有明显提高到一定阈值以上之后停止。
在你的示例中, 你将停止一次迭代, 因此你将完成主动学习算法。你还可以拥有一个单独的测试数据集, 用于评估学习者并记录其表现。这样, 你可以看到添加了标签的数据后, 你在测试仪上的性能如何得到改善或停滞。
主动学习的应用与现代研究 主动学习中最受欢迎的领域之一是自然语言处理(NLP)。这是因为NLP中的许多应用程序都需要大量标记数据(例如, 词性标记, 命名实体识别), 并且标记此数据的成本非常高。
实际上, 在NLP中只有极少数的数据集可免费获得并针对这些应用程序进行了完全标记。因此, 使用主动学习可以显着减少所需的标记数据量以及准确标记数据所需的专家数量。相同的推理可以应用于许多语音识别任务, 甚至信息检索等任务。
主动学习仍在大量研究中。许多人已经开始研究使用CNN和LSTMS等不同的深度学习算法作为学习者, 以及在使用主动学习框架时如何提高效率(Kronrod和Anandkumar, 2017年; Sener和Savarese, 2017年)。关于在主动学习框架中实现生成对抗网络(GAN)的研究也正在进行中(Zhu and Bento, 2017)。随着人们对深度强化学习的兴趣日益浓厚, 研究人员正试图将主动学习重构为强化学习问题(Fang等人, 2017)。此外, 还有一些论文试图通过元学习环境来学习主动学习策略(Fang et al。, 2017)。
推荐阅读
- R的Coursera课程(按人气排名的完整列表)
- Apache Spark教程(带有PySpark的ML)
- Python开发(Asyncio简介)
- Python中的Apache Spark(新手指南)
- 15种解决R中数据帧问题的简便方法
- Python中的词干和词法化
- R包(权威入门指南)
- 用Python分析扑克手经典案例
- 多客服助手绑定微信账号的办法_微信