主动学习教程分享!
现在我们面临来自互联网或其他来源如学术界或商业世界的大量无标签数据。由于未贴标签的数据相对容易获取且标签价格昂贵,因此公司通常雇佣专家或若干员工来标注数据。
想想以下情况,一家数据驱动的医疗公司进行了大量的MRI扫描,他们需要聘请专家来帮助解读这些扫描结果。该公司资源有限,他们不能解释或标注所有数据,这是他们决定使用主动学习(AL)的关键。
AL的承诺是,通过迭代增加我们精心挑选的标记数据的大小,可以实现类似性能,以使用完全监督的数据集,其成本或时间的一小部分需要标记所有的数据。 AL被认为是半监督方法,在无监督和完全监督之间。就标记数据量而言,即对于无监督数据,我们使用0%标记样本,并且对于完全监督,我们使用100%标记样本。因此,决定使用多少数据或者需要从模型中获得多少性能取决于资源管理决策,换句话说,它可能是一个业务决策。
AL有三种情况:
1.成员资格查询综合,即生成的样本被发送给oracle进行标记。
2.基于流的选择性抽样,即每个样本分别考虑。在通常情况下用于标签查询或拒绝。与在线学习类似,数据不会被保存,数据分布也没有任何假设,因此它是适应变化的。
3.基于池的采样,即采样是从未标记的数据池中选择用于标记。
在本教程中,我们使用第三种情况。
下面的伪算法表示用于基于池的采样的学习过程,如代码中所写:
1.将数据分为“池”和测试集
2.从池中选择'k'个样本作为初始训练集并标记它们,其余数据将作为验证集
3.标准化所有组
4.使用训练集训练模型,平衡权重。
5.使用带验证集的训练模型,获得每个样本的概率。
6.使用带有测试装置的训练模型,获得性能测量。
7.根据每个样本概率选择'k'个最有信息的样本,即那些模型关于其标签最不确定的样本。
8.将这些'k'样本从验证集移到列车集并查询它们的标签。
9.对所有数据集进行逆规范化
10.按照停止标准停止,否则转到3。
在推进之前有几件事要注意:
1.选定算法的完全监督性能通常是上限,因此建议尝试几种算法。
2.在我们从验证集中移除样本后,所有集合的归一化必须被反演并再次归一化,因为我们的样本分布在新验证和新列车集中都发生了变化。
3.样本选择功能依赖于从训练模型导出的测试样本概率,因此我们只能使用提供样本概率访问的算法。
4.'k'是一个超参数
我们在AL方法中最重要的工具是样本选择功能,这是我们影响学习过程的唯一要点,也是使用正确方法的关键。这个领域是一个热门的研究课题,也有很多研究提出了竞争选择功能。
在本教程中,我提出了四个已知的选择函数:
1.随机选择 - 我们从验证集中选择'k'个随机样本。
2.熵选择 - 我们选择具有最高熵的'k'个样本。
3.保证金选择 - 我们选择两个最高类别概率之间差异最小的'k'样本,即对于其模型对于单个类别非常确定的样本将给出更高的数字,并且对于其类别概率非常低的样本将给出更高的数字类似。
此处提供的代码在选择各种学习算法和选择函数方面采用模块化架构,并可用作其他模型函数比较的基础。
我们比较了几种学习算法,如带线性核的支持向量机(SVM)、随机森林(RF)和逻辑回归(LOG)。使用全部’k'= [10,25,50,125,250]的所有选择函数执行每个算法,累计总共80次实验。由于某些算法和选择函数的随机性,建议在代码中运行重复实验以计算统计显著性结果。但是,运行时间很长,并且已经选择对(模型、函数、k)的每个组合运行实验一次。
以下是对代码及其类架构的解释。
根据已知的MNIST定义的60K / 10K分割,首先下载我们的数据并将其分割以进行训练和测试。稍后,训练集将被分割以训练和验证。
我们创建一个模块化的类表示,’BaseModel’是类架构的基础模型,您可以实现新模型并交换使用它们,或者除了所有其他模型之外还可以使用它们。我们目前的实施包括支持向量机、逻辑回归、随机森林和梯度提升。
我们的'TrainModel'类接受之前定义的学习算法之一,使用训练集进行训练并从测试集中获得性能测试结果。
我们创建了一个模块化选择函数类的表示形式,’BaseSelectionFunction’是各种示例选择方法的基类。出于实验目的,使用这种体系结构,您可以实现新的选择方法并使用它们或者替代以前的方法。我们目前的实现包括随机选择、熵选择、边缘采样选择和最小标准偏差选择。
我们有一个用于在[0,1]范围内使用MinMax Scaler进行标准化的类。
最初,我们想从未标记的数据池中随机抽取样本,这是使用random.choice完成的,不需要替换。
简而言之,我们选择'k'个随机样本,训练一个模型,选择最丰富的样本,从验证集中移除,查询它们的标签并使用这些样本重新训练,直到达到停止标准。
在脚本的主要部分,我们下载数据,分割进行训练验证和测试,我们所有的选择函数X所有可能的k都在[10,25,50,125,250]的范围内。准确性结果保存在字典中,只要模型结束训练,就会保存到一个独特的文件中。这对于使用Google Colaboratory非常重要,因为它往往会不时断开连接。我们还将我们的训练限制为最多500个查询样本。
独立地,我们使用60K-10K的训练测试分割训练了几个模型,结果表明RF、SVM和LOG的上限分别为97、94和92.47。
以下图表显示的是随机森林分类器与边距选择方法配对,k = 10是最佳配置。
对于前面提到的停止条件和超参数,最佳执行模型是随机森林算法!
我们进一步看到,最好的采样功能是边缘采样!
最后,k = 10是最好的选择参数。
我们已经看到,通过使用主动学习方法,与完全监督的方法相比,我们可以使用标记数据的一小部分,并达到非常接近的精确度。实际上,如果您选择使用1000个样本,则准确度会进一步上升至95%。另外,作为样本选择方法,边缘采样启发式优于熵是非常有趣的。
最后,希望本教程对您有所帮助,并且您可能会考虑在您的下一次研究中使用此方法。