• 海量短视频打标问题之Active-Learning


    引言

    在网络中,每时每刻都会产生很多无标签数据信息,比如最近很火的一些短视频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,把这个过程可以迭代下去,就可以在有限的标注成本下,得到不错的自动打标模型了。

    主动学习为什么有用?

    我们知道,一般而言,样本量越多,训练的模型越好。但是不是所有的样本对最终模型性能的贡献都是一样的(比如我们要描述一个正方体,并不需要穷举列出正方体内所有的点,只需要列举这个正方体的某些定点上的点就行了),如果能找出一些关键样本,这些样本对模型训练更加重要,那么自然我们可以只标准哪些关键样本来训练模型啦。

    那么,很显然,关键样本的挑选规则是主动学习成功的关键,这也是主动学习领域研究比较多的一个问题,后文会有简单介绍两种比较经典的样本挑选规则。

    主动学习实施

    算法流程

    在前面一节,已经大概介绍了主动学习的一般思路和过程,这里写一下流程吧:

    1. 将两千万短视频初始化未标注样本池P;
    2. 在样本池中随机选出1000个样本,对齐人工做标注,形成训练集合T;
    3. 用训练集合T训练模型M;
    4. 用上一步训练出来的模型M预测样本池P中不属于T的样本,得到预测信息Pred;
    5. 根据Pred用挑选规则挑选出一些样本,给人工进行标注,并把新标注的样本和原来训练集合T合并成新的训练集合T;
    6. 如果模型M满足性能要求,则终止,否则转到步骤3;

    挑选规则

    主动学习中样本挑选规则是很重要的,主流有如下集中方法:

    1. 基于不确定度缩减的方法。比如分类问题中,一般会出现一个概率向量,这个概率向量的信息熵可以认为是模型对分类的不确定度;挑选信息熵最大的那些样本送去给人工进行标注。从几何角度看,这种方法优先选择靠近分类边界的样例。
    2. 基于最大两个类别概率差距最小的方法。和上面差不多,只不过选择的标注不是概率向量的信息熵,而是选择那些top1和top2分量差距最小的概率向量所对应的未标注样本送去给人工标注。很好理解,如果模型预测出某个样本有很高的概率属于1类,也有很高的概率属于2类,那么就说明模型对这个样本不是很确定,就需要人工标注给他更多的信息去学习。
    3. 预先聚类的方法:预先运行聚类算法预处理,选择样例时优先选择最靠近分类边界的样例和最能代表聚类的样例(即聚类中心)。

    主动学习和难例挖掘的比较

    在CV中常见的提升性能的方法有难例挖掘(在线,离线),也是挑选一些少量关键样本来提升性能,这里做个简单的比较。

    相同点

    主动学习和难例挖掘(Hard Example Mining)很像,都是用训练了的模型去做预测,找出少量可能对模型性能改进有帮助的关键样本,然后用关键样本去帮助模型改进。

    不同点

    但是不同的地方也很明显,主动学习需要人工参与标注,样本挑选规则挑选出来的样本,要送到人那里去做手动标注;而难例挖掘是在所有样本都有标签的前提下,找出那些特别难的样本。

    总结

    本文以为海量短视频打标签为例子,简单介绍了一下主动学习这种实用的学习方法。但是单单靠这一种方法来做海量短视频打标还是远远不够的,后续我会再介绍这个问题上用得上的其他技术点。

    参考资料

  • 相关阅读:
    2022年湖北交安C证(交通厅安全员ABC)考试介绍
    Java经典面试题——equals和==的区别
    Spring框架系列(4) - 深入浅出Spring核心之面向切面编程(AOP)
    SmartInspect Professional .Net & Delphi Crack
    Revit如何使用幕墙功能绘制百叶窗
    云服务--漏洞修复
    shell脚本
    Resnet模型笔记总结
    新零售SaaS架构:客户管理系统架构设计(万字图文总结)
    《算法通关村——最长公共前缀问题解析》
  • 原文地址:https://blog.csdn.net/a839766550/article/details/127903912