在网络中,每时每刻都会产生很多无标签数据信息,比如最近很火的一些短视频APP,每天都有很多用户发布自己生产的短视频(UGC)内容,这些内容一般是部分打了标签或者标签中有很多噪音的,为了进行做推荐或者做分类、识别的训练,需要给这些短视频自动生成高质量的标签;而另外,随着人工智能的发展,许多以前积累的数据,需要自动做标注,比如很多医疗领域的核磁共振片子。这只是CV领域(许多数据集已经打标或者很容易打标),在NLP和推荐领域,这样的问题更加重要和常见。
这些给海量视频数据打标签的问题是很常见也很重要的问题,而且这些问题牵扯到机器学习中的“主动学习”(Active Learning),“多模态机器学习”(MultiModal Machine Learning),“多标签(Multi-label)分类”,“增量学习”(Incremental Learning),“在线学习”(Online Learning),“少样本学习”(Few Shot/Zero Shot Learning)等等领域。
为此,船长打算以海量短视频打标这个具体的问题写几篇(具体写几篇,要看我有多忙lan)文章专门捋一捋这方面的常用算法,这个系列的文章将是第一篇,专注于主动学习领域。
欢迎探讨,本文持续维护。
N/A
假设现在有两千万短视频池,需要给他们打上一万个标签。如果手工一个个检查一个个打标签,成本太高,肯定是不现实的。但是我们可以少量打一些标签,比如为1000个视频打标签,这个成本还是可以接收的。然后用这1000个视频和手动打的标签去训练一个自动打标签的模型alpha。用模型alpha去给视频池剩余的样本去预测标签,根据预测出的标签的信息,根据一定规则挑选出某些更有意义的样本,比如2000个,把这些挑选出来的2000个样本再找人工打标签(因为经过挑选的,所以数量可以控制少一点)。把这些打标签的数据和训练模型alpha的数据合在一起,形成一个3000个样本的更大的带标签数据集训练一个更好的模型beta,再用模型beta重复由模型alpha得到模型beta的过程,可以继续生成更更好的模型gamma,把这个过程可以迭代下去,就可以在有限的标注成本下,得到不错的自动打标模型了。
我们知道,一般而言,样本量越多,训练的模型越好。但是不是所有的样本对最终模型性能的贡献都是一样的(比如我们要描述一个正方体,并不需要穷举列出正方体内所有的点,只需要列举这个正方体的某些定点上的点就行了),如果能找出一些关键样本,这些样本对模型训练更加重要,那么自然我们可以只标准哪些关键样本来训练模型啦。
那么,很显然,关键样本的挑选规则是主动学习成功的关键,这也是主动学习领域研究比较多的一个问题,后文会有简单介绍两种比较经典的样本挑选规则。
在前面一节,已经大概介绍了主动学习的一般思路和过程,这里写一下流程吧:
主动学习中样本挑选规则是很重要的,主流有如下集中方法:
在CV中常见的提升性能的方法有难例挖掘(在线,离线),也是挑选一些少量关键样本来提升性能,这里做个简单的比较。
主动学习和难例挖掘(Hard Example Mining)很像,都是用训练了的模型去做预测,找出少量可能对模型性能改进有帮助的关键样本,然后用关键样本去帮助模型改进。
但是不同的地方也很明显,主动学习需要人工参与标注,样本挑选规则挑选出来的样本,要送到人那里去做手动标注;而难例挖掘是在所有样本都有标签的前提下,找出那些特别难的样本。
本文以为海量短视频打标签为例子,简单介绍了一下主动学习这种实用的学习方法。但是单单靠这一种方法来做海量短视频打标还是远远不够的,后续我会再介绍这个问题上用得上的其他技术点。