积极学习成为更好的模特
回到博客主页

积极学习成为更好的模特

主动学习 2022年7月04

世界目前正在经历一场机器学习热潮,这在很大程度上要归功于深度学习模型的有效性。深度学习的成功可以追溯到互联网。

互联网这就是为什么我们有这么多数据,用来训练这些模型。没有互联网,就无法获取我们需要学习和提取模式的数字信息。互联网大数据。

如果本·帕克是数据科学家,他可能会告诉彼得:

大数据带来了大问题

互联网让收集数据变得太容易了。然而,仅仅收集数据是没有用的。我们需要给它贴上标签。

黑白照片上一个穿着白大褂的男人站在一堆文件前。表情包是这样写的:“亲爱的研究生,你介意把这些都贴上标签吗?”kthxbye

标记这么多的数据是很困难的昂贵的.事实上,给所有的数据贴标签通常是没有意义的。并非所有的数据都是平等的。好的、高质量的数据可以显著改善模型,而低质量的数据甚至可能阻碍模型的学习能力。

那么,我们如何从成堆的数据中筛选出模型所需的好样本呢?

一个有效的答案是主动学习

什么是主动学习?

主动学习是人在循环中的半监督学习。与标准监督学习的主要区别在于,它不是让人类标记所有的训练数据,而是由算法或模型选择应该标记哪些数据。

一个流程图,显示了从无标记数据到标记者到标记数据到训练到建模到推理的标准监督学习的步骤。在标签和训练步骤上有循环返回箭头。
标准的监督学习流程包括对标记数据和训练代码的迭代。
描述主动学习的流程图。有一圈逆时针方向的步骤,从左侧的标记数据开始训练,以选定的数据为标记器建模。此外,从模型到推理还有一个离开圆的步骤。
主动学习流在整个管道上迭代。

这使得主动学习成为一种以数据为中心的机器学习的方法,我们保持代码静态,在数据上迭代。主动学习模型的目标是从尽可能少的数据点中获得最大化的信息。在这样做的过程中,它通常选择更难和更麻烦的数据进行学习。

我们可以把它想象成一个准备考试的学生。如果学生选择只练习最简单的例题,这可能会在考试中出现,他们就会错过理解关键概念的机会。然而,如果学生特别关注对他们来说很难的例题,他们就更有可能学到更多,在考试中取得更好的成绩。

然而,自然而然的问题是,算法如何选择它应该关注哪些数据?

数据采集

当开始主动学习时,如何对数据进行抽样的问题可能令人畏惧或困惑。然而,这里并不缺少可供选择的选项。值得庆幸的是,每一个都易于直观理解。

主动学习查询策略对比表
主动学习查询策略对比表

聚类选择多样性

如果我们可以使用一种无监督算法来聚类数据,比如k-means聚类,那么我们就可以从每个聚类中抽样训练数据。虽然这并不一定会选择困难的训练数据,但它确实有助于确保我们的数据集是多样化的。它将不太可能错过重要类别的数据。

这种方法也是一种可以让初始数据集训练我们的模型的方法,因为其余的数据采样技术要求我们已经有一个模型来确定应该采样哪些数据。

这听起来像是《盗梦空间》续集的基础

一个基于电影《盗梦空间》的三组表情包。在第一个面板中,莱昂纳多·迪卡普里奥告诉希里安·墨菲“你看,模型选择了数据”。在第二个面板中,Cillian回答道:“但是你如何训练这个模型呢?”在第三幅画中,莱昂纳多斜眼看着希里安。

在意

可能最容易实现的数据抽样技术是基于置信度的技术。由于我们经常创建机器学习模型来自动化某些东西,使我们的工作更容易,这是一个受欢迎的路线。

这是Drakeposting的梗。上图显示的是德雷克在电子游戏中选择“硬”模式时转身离开。下方的图片显示,Drake正指着同一电子游戏菜单中的“简单”模式。

三种主要的基于信心的抽样技术是:

1.最低的信心

对于这种技术,我们希望找到模型对其答案最不自信的样本。这与模型难以分类的例子相对应。甚至连识别底层数据都有困难。

图解和表格显示了选择最低置信度图像进行标记的概念。该流程将数据显示到模型到预测表。预测表有5个例子。前两名的置信度较高。最下面的三个可信度值较低,用红色突出显示。
在这里,模型的输出按每个输入的顶部标签的置信度排序。选择置信值最低的图像进行标记。

2.最小化信心δ

另一种方法是寻找样本,其中最上面的两个标签有非常相似的置信度。我们通过计算它们之间的增量,并选择差异最小的样本,如下表中突出显示的行所示。

这表明模型很难决定样本属于哪一类。因此,这些样本很可能是复杂的例子。

图解和表格显示了选择最低置信度δ图像进行标记的概念。该流程将数据显示到模型到预测表。预测表有5个例子。前两个标签之间有很高的置信度δ值。下面三个标签之间的置信差值较低,用红色突出显示。
在这里,模型的输出是根据每个输入的前两个标签之间的差进行排序的。即使顶部标签超过了某种阈值,也会选择delta值最低的图像。

3.熵

熵是对所有类别的信心的衡量。熵越大,模型对数据的整体把握就越小。这通常被写成下面的等式:

\ [H (X) = - \ sum_ {i = 1} ^ n p (x_i) \ log p (x_i) \]

这个公式的一个版本出现在许多领域,包括物理学、统计学和工程学。如果你还记得交叉熵损失函数是如何工作的细节的话,它可能看起来很熟悉。

在这里:

  • \ (\ boldsymbol {n} \)标签类别的数量是多少
  • \ (\ boldsymbol {x_i} \)\ (\ boldsymbol{我^ {th}} \)标签的类别
  • \ (\ boldsymbol {p (x_i)} \)数据属于的概率是\ (\ boldsymbol {x_i} \)类别

通过最大化熵,我们为应该被标记的模型选择最令人困惑的数据。

图解和表格显示了选择最高熵的图像进行标记的概念。该流程将数据显示到模型到预测表。预测表有5个例子。前两个的熵值在所有标签上都很低。下面三个熵值很高,用红色突出显示。
这里是与上面相同的结果,但排序是熵而不是置信度。注意顺序是如何变化的。根据我们设置的阈值,我们可能会或可能不会使用这种方法选择相同的图像。

多种模型之间的分歧

另一种对数据进行抽样的奇妙方法是使用民主.我们可以简单地拥有多个模型,并让它们投票决定哪些数据应该被标记!这也被称为Query-by-Committee

两个机器人看着哈巴狗的图像。第一个机器人问:“你认为这是什么?”第二个答道:“狗,猪,一车面包?”

有几种不同的方法,我们可以这样做:

  1. 不同的模型-在同一个初始数据集上训练两个或两个以上不同的模型,并找到它们最不一致的新数据。这些不同的模型也可能差别很大——不同的神经网络架构、决策树、支持向量机。重要的是,每个模型对目标标签的了解略有不同。如果没有意见分歧,投票是毫无意义的!
  2. 不同的随机种子-训练相同模型的多个副本,但每一个都使用不同的随机种子。
  3. 循环输出的差异-使用同一模型的连续迭代来确定哪些数据分歧最大。每次迭代都是一个完整的主动学习周期。对于这个方法,我们在单个模型上迭代。
三个模型的预测表示例,每个模型显示可能标签的不同置信度值。
这个例子显示了对对象是什么缺乏共识(剧透:它是一只狗)。因此,这个图像可能会被标记为标签。

损失的预测

另一个查询选择选项是尝试预测给定样本的损失。为此,我们可以创建一个双分支网络。

图为一只哈巴狗被喂食到双分支网络中。主分支(蓝色)显示输入的分类路径,并输入损耗函数以获得输入的实际损耗。第二个分支,用黄色表示,是一个损失预测分支,它试图猜测输入的损失是多少。
损失预测网络示意图。蓝色的主要分支,显示正常的分类网络。黄色的分支预测给定输入的损失。

主分支是我们想要的模型,第二个分支是一个回归模型,它根据输入预测损失。使用损失预测分支,我们可以选择损失值最大的样本进行标记。

显示数据流到模型流到输出表的图表。该表有5行输入,最下面的三行用红色突出显示,预测损失很大。
在这里,模型的输出按每个输入的预测损失排序。选择预测损耗最高的图像进行标记。

训练损失预测网络

你可能会想,我如何训练这个双分支网络,如果它在试图预测损失的同时改善损失呢?这是一个优秀的的问题!

的作者基于损失的双分支深度网络主动学习讨论他们的训练方法。他们使用了该网络主要分支的两个副本。一个称为目标模型另一个培训模式.目标模型对每个历元保持恒定,并用于确定输入样本的地面真值损失值。训练模型对原始目标(分类、目标检测、分割等)进行持续训练。

在每一个纪元结束时,从培训模式是否完全复制到目标模型.通过这种方法,地面真理损失值在跨时代是一致的,但模型仍然可以被训练。

主动学习的好处

主动学习并不是我们想要用来解决所有问题的锤子。

托尔拿着锤子的表情包。雷神被标记为“我”,他的锤子被标记为“主动学习”。

然而,有很多理由使用它,在很多情况下它可以非常有益。

主动学习的主要好处是它允许我们标记更少的数据。我们的数据比标准的监督机器学习要深入得多。

想象一下这样的情况:我们正在训练一个模型,以帮助领域专家更有效地工作。专家可以是观察x射线的医生,确定农作物健康状况的农学家,试图寻找系外行星的天体物理学家等等。

不过,这里有一个两难的问题。我们需要这些领域专家来标记数据,但是这些专家的时间太宝贵(也太昂贵)了,不能花在标记数据上

训练非专业人士给数据贴标签是一种选择,但这既耗时又昂贵,而且更容易出错。相反,通过使用主动学习,我们可以最小化时域专家花在标记数据上的时间。

此外,主动学习可以导致更高的精度模型。这就是短语的出处垃圾进来,垃圾出去很有道理。

两个面板的模因。最上面的面板显示一辆垃圾车正在向一堆已经很大的垃圾上倾倒垃圾。卡车被标记为“经过错误数据训练的模型”,而一堆垃圾被标记为“输出”。下面是马克·沃尔伯格一脸困惑的照片,上面写着“为什么我的模特这么烂?”

如果我们的很多数据没有帮助,或者更糟糕的是,错误的标记,这可能会降低模型的整体准确性。最近的一次麻省理工学院研究在ImageNet的验证数据集中发现错误率约为5.8% !此外,还有一群人一种检测重复、异常和错误标签的工具在数据集,发现ImageNet-21k包含120万个重复!这大约是数据集的8.5%

这些错误使得用它们训练的模型明显变差。主动学习还允许我们有效地覆盖更多的边缘情况,这提高了准确性。

最后,数据越少,质量越高,就会产生连锁效应。当我们需要训练的数据较少时,我们可以节省计算时间。通过使用主动学习,我们的数据是高质量的,这有助于模型更快地收敛。这使得模型更便宜,以后再培训也更快。

主动学习的缺点

天下没有免费的午餐。主动学习确实有缺点,需要克服。

荷马·辛普森坐在厨房的桌子边,用手掌捂着脸。这个表情包的标题是“为什么,哦,为什么?”

主动学习为我们的机器学习工作流增加了复杂性。项目的设置和工程更加复杂,因为很少有交钥匙解决方案。这意味着,代码中有更多的漏洞和错误空间。这种复杂性也意味着主动学习可能会较慢地获得初步效果。

当使用主动学习时,模型也有可能专注于异常值。任何查询策略都可能选择离群值,因此我们的专家需要认识到这一点,并将任何离群值数据标记为离群值。在模型选择要标记的例子之后包含一个数据验证步骤,将帮助我们防止异常值潜入标记的数据集。

此外,由于主动学习是从整个收集的数据集中采样数据,因此采样数据的分布不一定与整个数据集的分布相匹配。在许多方面,这是可取的。然而,我们需要明白,这有引入抽样偏差的风险。这可能很难检测和调试。

结论

唷!如果你是主动学习的新手,这可能是很多需要吸收的信息。

一个男人夸张地捋着额头说“唷”的动图。

在阅读这篇文章时,你学到:

  • 什么是主动学习
  • 与主动学习一起使用的各种数据采样(查询)策略
  • 的好处,和……
  • ...主动学习的缺点

由于本文本质上是理论性的,我们建议您找一个可以将这些新知识付诸实践的宠物项目。通过自己实现主动学习,您将巩固对本文中概念的理解。

在未来的文章中,我们将介绍这样一个项目,以防你需要更多的灵感

感谢你的阅读!如果你有任何问题,请随时联系我。

引用:

  1. 贝uch, T. Genewein, A. Nürnberger, J. M. Köhler。集成在图像分类中主动学习的能力CVPR 2018。
  2. 黄思玉,王天阳,熊浩义,桓俊,窦德敬。带时间输出差异的半监督主动学习ICCV 2021。arXiv: 2107.14153 (cs。简历)
  3. 俞东根,在素权。主动学习的学习损失.CVPR 20219。arXiv: 1905.03677 (cs。简历)
  4. 方强,唐登清。基于损失的双分支深度网络主动学习.国际先进机器人系统学报,18(5)。
  5. 柯蒂斯·g·诺卡特,阿尼什·阿塔耶,乔纳斯·穆勒。测试集中普遍存在的标签错误使机器学习基准不稳定.arXiv: 2103.14749 (stat.ML)

标签

太棒了!您已经成功订阅。
太棒了!接下来,完成签出以获得完全访问权限。
欢迎回来!您已经成功登录。
成功!您的帐户已完全激活,您现在可以访问所有内容。