如何有效定义标签体系
我们有一个热门视频池,运营和产品会手动为一些视频打上标签。你可能会说,我们可以拿这部分标签做模型训练。如果我们将业务标签应用于算法会存在哪些问题呢?
一是业务的标签比较抽象,比如可能会制定像搞笑和幽默这样的一些标签。但一个视频是否算搞笑、幽默,无法仅从视觉或声音、语音等一些信息进行准确判定。
举个例子,一个 3 岁的小孩在哭,父母上传的可能会是一个搞笑的视频,如果是 20 多岁或者 50 多岁的人在哭,那就是一个悲伤的视频。
二是训练数据不均衡,上图是我们拿到的一部分业务标签对应的数据量,因为业务人员在定标签的时候不会考虑每个类别是什么样的,所以就会出现训练数据不均衡的问题,这个也会影响算法模型的训练。
另一个问题是类别区分度低。以上图为例,手指舞和自拍,从视觉角度来看没有任何区别,如果训练中强行将其分成两类,也会在训练过程中影响网络模型的学习,会引起一些噪声。
还有一个问题是标签的维度比较单一。通常一个视频,最多给四到五个维度的标签,再多的话,想全面衡量这个视频会变得非常复杂。
我们的解决方法是,以业务标签作为指引,拿我们的视频数据和文本数据(伴随视频的标题、评论相关信息)去提取视频特征、音频特征进行聚类,然后对聚类进行抽象定义,得出相应的视觉标签元素。这个标签元素就是我们用来训练的标签。最后训练标签输出的结果会反过来映射到业务标签,用这种方法定义的标签是多层级多维度的。
如下图所示,视频中是一个女生,视频中的姿态显示为全身,动作是在摇摆,检测到的音乐风格为摇滚,那么可以判断这个视频是一个美女在自拍,而且在跳舞,属于才艺展示,于是生成的标签就是“美女自拍”、“舞蹈”、“才艺”。这就完成一个算法标签到业务标签的映射。
如何提高线上算法模型的迭代更新效率
这里有三个核心问题:快速的数据标注、有效稳定的模型评估机制、算法运行的性能要有保障。
为了进行快速标注,我们也用了一个自动的算法标注,这个算法在无监督和半监督的深度学习的论文中被提到过。我们会预先拿一个通用的数据训练模型,对业务数据进行少量的标注,基于少量的标注数据再训练一个分类器。这个分类器会给其它未标注的进行标注。伴随标签输出会有一些置信度,会把高置信度的数据再拿去进行训练,低置信度的会继续下一次的迭代更新,这个过程会重复多次。这个过程也会根据任务的难度,加入人工的核验和标注。
评论