【AICon】探索RAG 技术在实际应用中遇到的挑战及应对策略!AICon精华内容已上线73%>>> 了解详情
写点什么

主动学习:如何用更少的数据做更多的事情?

  • 2020-10-15
  • 本文字数:2074 字

    阅读完需:约 7 分钟

主动学习:如何用更少的数据做更多的事情?

本文最初发表于 Towards Data Science 博客,经原作者 Logesh Kumar Umapathi 授权,InfoQ 中文站翻译并分享。


如果说机器学习项目是冰山的话,那么位于水下的部分就是项目中的标签和其他数据工作。好消息是,像迁移学习和主动学习(Active Learning)这样的技术可以帮助减少工作量。


主动学习已经成为机器学习行业从业者的工具箱的一部分,但在任何数据科学/机器学习课程中,却很少涉及。在阅读Robert Munro写的书《Human-in-the-Loop Machine Learning》(译注:目前尚无中文版)后,帮助我正式形成了一些(并帮助我学习了很多)主动学习的概念,而这些概念我一直在机器学习项目中凭直觉使用。


本文写作目的是向你介绍一种简单的主动学习方法,称为“基于熵的不确定采样”(Uncertainty sampling with entropy),并通过实例证明其有效性。在演示中,我使用了主动学习,仅利用了 23% 的实际训练数据集(ATIS 意向分类数据集)来实现与 100% 数据集训练相同的结果。


是不是迫不及待了?请直接跳到「演示」一节。想了解它是如何工作的?那就继续读下去。

什么是主动学习?

主动学习是指训练我们的模型时,优先考虑那些能给我们带来最大收益的有标签样本,而不是那些“学习信号”很少的样本。利用模型的反馈,对一个实例的学习信号进行估计。


这就好比老师问学生她不太清楚的概念,然后优先考虑讲解这些概念,而不是教授所有的课程。


因为主动学习是一个迭代的过程,你必须经历多轮训练。主动学习涉及的步骤包括:


步骤 1:识别并标记评估数据集

毋庸讳言,在任何机器学习过程中,选择评估集都是最重要的一步。当涉及到主动学习时,这一点变得更为关键,因为这将是我们在迭代标记过程中衡量模型性能改进程度的标准。此外,它还帮助我们决定何时停止迭代。


最直接的方法是随机拆分未标记的数据集,并从拆分的数据集中选择评估集。但基于复杂性或业务需要,最好拥有多个评估集。例如,如果你的业务需求要求情感分析模型能够很好地处理讽刺言论,则可以有两个独立的评估集:一个用于一般情感分析,另一个用于特定于讽刺的样本。

步骤 2:识别并标记初始训练数据集

现在选择未标记数据集的 X% 作为初始训练数据集。X 的值可以根据模型和方法的复杂程度而有所不同。选择一个足够快的值进行多次迭代,并且要足够大,可以让你的模型在初始阶段进行训练。如果你使用迁移学习方法,并且数据集的分布接近基本模型的预训练数据集,那么较低的 X 值就足以启动该过程。


这也是一个很好的做法,在初始训练数据集中可以避免出现类不平衡的现象。如果这是一个自然语言处理问题,你可以考虑使用基于关键字的搜索,从特定的类中找出样本进行标记,并维持类平衡。

步骤 3:训练迭代

现在我们已经有了初始的训练和评估数据集,我们可以继续进行第一次训练迭代。通常,人们并不能通过评估第一个模型来作出太多推断。但是这个步骤的结果可以帮助我们看到预测是如何随着迭代而改进的。使用该模型预测剩余未标记样本的标签。

步骤 4:从上一步选择要标记的样本子集

这是至关重要的一步,你可以选择标记过程中学习信号最多的样本。有几种方法可以做到这一点(如书中所述)。为简洁起见,我们将看到我认为最为直观的方法:基于熵的不确定采样。


基于熵的不确定采样:


不确定采样是一种选择模型最不确定/最困惑的样本的策略。计算不确定度有几种方法。最常用的方法是利用神经网络最后一层的分类概率(SoftMax)值。


如果没有明确的赢家(即所有概率几乎相同),这意味着模型对样本是不确定的。熵恰好给了我们一个度量标准。如果所有类别之间存在相关性,则分布的熵值将会较高,如果类别之间存在明显的赢家,则分布的熵值较低。



根据模型对未标记数据集的预测,我们应该按照熵值的递减顺序对样本进行排序,并从中选择 Y% 的顶部样本进行注释。

步骤 5:数据清洗与重复

我们需要在这次迭代的训练数据集附加新的标签样本,并重复步骤 3 中的过程,直到我们在评估集上达到预期的性能或评估性能停滞。

演示

出于实验和演示目的,我们将使用ATIS 意向分类数据集。让我们将训练数据集视为未标记的。我们从随机抽取 5% 的标记训练数据集作为第一次迭代。在每次迭代结束时,我们使用基于熵的不确定采样来选择前 10% 的样本,并使用它们的标签(模拟现实世界中的注视过程)在下一次迭代中进行训练。


为了在主动学习的每次迭代期间评估我们的模型,我们还从数据集中获取测试集,因为测试集中的数据已经被标记。


演示和代码可以在下面的 Notebook 中找到:


https://colab.research.google.com/drive/1BsTuFK8HcXS5WWlOCS1QHgvHRf2FK6aD?usp=sharing

参考文献

一种训练文本分类器的顺序算法》(A Sequential Algorithm for Training Text Classifiers.),David D. Lewis、William A. Gale,1994 年,SIGIR’94


Human in the loop machine learning》,Robert Munro

作者介绍:

Logesh Kumar Umapathi,居住在印度泰米尔纳德邦,专注于机器学习、自然语言处理的高级顾问,供职于 Saama。对自然语言处理和深度学习充满热情。


原文链接:


https://towardsdatascience.com/how-to-do-more-with-less-data-active-learning-240ffe1f7cb9


公众号推荐:

2024 年 1 月,InfoQ 研究中心重磅发布《大语言模型综合能力测评报告 2024》,揭示了 10 个大模型在语义理解、文学创作、知识问答等领域的卓越表现。ChatGPT-4、文心一言等领先模型在编程、逻辑推理等方面展现出惊人的进步,预示着大模型将在 2024 年迎来更广泛的应用和创新。关注公众号「AI 前线」,回复「大模型报告」免费获取电子版研究报告。

AI 前线公众号
2020-10-15 12:002008
用户头像
刘燕 InfoQ高级技术编辑

发布了 1112 篇内容, 共 489.9 次阅读, 收获喜欢 1966 次。

关注

评论

发布
暂无评论
发现更多内容

字节跳动面试,第三面挂了,这原因我服了,快速上手

android 程序员 移动开发

学习 View 事件分发,就像外地人上了黑车!(1),kotlin安卓开发书籍

android 程序员 移动开发

完美!腾讯技术官发布Android零基础就业宝典,不用再怀疑人生了

android 程序员 移动开发

小厂开发五年,成功入职腾讯,这是我的复盘和总结,阿里P8Android架构师谈

android 程序员 移动开发

工作出现瓶颈,学习效率下降?通学这份Android进阶知识体系

android 程序员 移动开发

年后想跳槽涨薪?你想要的面试题全在这里,activity事件分发

android 程序员 移动开发

字节跳动厂内部超高质量Flutter+Kotlin笔记!技术与实战篇

android 程序员 移动开发

学习不系统学过的Android知识全忘记了?思维导图+手写笔记

android 程序员 移动开发

实现Flutter离线验证码组件,跳槽面试大厂被拒

android 程序员 移动开发

巧用Android网络通信技术,在网络上直接传输对象(2),android开发入门基础教程

android 程序员 移动开发

干货来袭-通过这份Android-中高级架构师教学资料(全套)在公司大裁员下

android 程序员 移动开发

字节面试官:看了3000多份简历,面试1000场后,androidjni开发书籍

android 程序员 移动开发

学习 View 事件分发,就像外地人上了黑车!,真的已经讲烂了

android 程序员 移动开发

安卓指纹对称加密及登录功能的实现,阿里P8大牛从零开始教Android开源框架

android 程序员 移动开发

巧用Android网络通信技术,在网络上直接传输对象,android设计模式总结

android 程序员 移动开发

带你一起探究Android事件分发机制,-让面试提问不在畏惧!

android 程序员 移动开发

已经说过千万遍了!!面试官,一线互联网大厂中高级Android面试真题收录

android 程序员 移动开发

字节跳动技术整理:Android-Camera内存问题剖析,为什么Flutter能最好地改变移动开发

android 程序员 移动开发

字节跳动正式启动2021届秋季校招!这份字节跳动历年校招Android面试真题解析,你确定不收藏

android 程序员 移动开发

安卓指纹对称加密及登录功能的实现(1),技术实现

android 程序员 移动开发

屌丝的眼泪,因为错过的初恋,才搞清楚PNG图片压缩原理(1)

android 程序员 移动开发

屌丝的眼泪,因为错过的初恋,才搞清楚PNG图片压缩原理

android 程序员 移动开发

学会这些Android开发热门前沿知识,2020年你就不用愁了!

android 程序员 移动开发

孽缘啊,同套面试题中午我把你挂了,晚上你把我挂了,农民工看完都会了

android 程序员 移动开发

对标小程序 _ _快应用_开发入门指南,移动应用开发课程设计

android 程序员 移动开发

巧用Android网络通信技术,在网络上直接传输对象 (1),安卓面试题宝典app

android 程序员 移动开发

安卓11重磅上线,快来看看,是不是熟悉的配方,大专生面试阿里P7居然过了

android 程序员 移动开发

巧用Android网络通信技术,在网络上直接传输对象(1),讲的真详细

android 程序员 移动开发

已拿字节、腾讯、墨墨 offer,【面试总结

android 程序员 移动开发

字节跳动最新开源!超实用的UI轮子库,我只是个轮子搬运工

android 程序员 移动开发

年终总结攻略|3个步骤,让老板给你的工作汇报点赞,2021Android精选面试实战总结整理

android 程序员 移动开发

主动学习:如何用更少的数据做更多的事情?_AI&大模型_Logesh Kumar Umapathi_InfoQ精选文章