作者:harryzhong,腾讯 WXG 应用研究员
在过去的几年里,质量控制作为微信看一看推荐的基石,我们在不断的迭代升级中积累了一定的技术和经验。本文主要跟大家分享一下总体框架的设计思路,以及如何通过平台通用化来解决组合爆炸的问题。文章为了尽可能的给读者描述一个完整质量控制体系的框架,这里既有技术上,架构上考虑,也会有产品上,业务上的考虑。
微信作为国内最大用户群体的应用,在人们的生活,工作,学习中提供社交功能的同时,还提供了工具,游戏,购物,支付,内容,搜索,小程序等服务。看一看作为微信的重要组成部分,在原有公众平台资讯阅读的基础上,为用户提供中心化的内容消费平台,旨在提升内容发现效率,优化内容质量,丰富内容种类。
与其他很多资讯产品上线初的野蛮生长不一样,质量控制一开始就作为看一看上线标准被提出并进行了大量的投入。质量控制的必要性是由于多方面的因素决定的。
既然质量控制作为推荐系统必不可少的一部分,那么在推荐系统中处质量控制处于什么位置,包含哪些子模块,又是从哪几方面方面进行控制?
首先,我们先看一下内容数据在推荐系统的一生。
数据的一生中,我们可以看到平台都是通过对发表内容本身进行检测来进行质量控制,这显然是不够的。一个控制框架的有效运行不能仅仅在一个地方进行监控,需要全面,多维度共同作用。我们可以抽象一下平台,生产,还有用户。我们会发现其实除了对平台自身检测能力进行提升外, 也可以对生产者和用户进行引导,评估。
除了上面说的三个部分之外,还有几个同样非常重要的质量控制辅助模块,这些模块对保证整个质量控制的正常运行至关重要。
前面介绍了质量控制的必要性,也介绍了质量控制的大体框架。那么到底数据是指哪些数据?所谓的质量又指的是哪些质量指标?这些数据跟这些质量指标带给我们什么问题与挑战呢?
看一看的数据从来源上分包括公众平台,腾讯新闻,腾讯视频,企鹅号,微视,快手等。从内容形式上分有文章,新闻,视频,图片等。样式丰富的数据在满足不同用户的内容需求的同时也加大了监管的难度。
同时,看一看以用户的体验为出发点结合具体业务需要建立了一套质量指标体系。这里指标随着业务的发展不断在增加,含义也在不断的丰富。多维度的指标可以为业务的质量过滤和推荐排序提供更多的个性化的选择。
那么,我们的问题和挑战是什么呢?我们先来看一下日常工作中经常遇到的一些对话。事情的本质往往隐藏在复杂的表面下。
丰富的数据源,多维度的质量指标,个性化的业务场景带来的其实是组合爆炸问题。如果对每一种组合都单独处理,不仅导致大量人力的浪费;同时,也无法对速度要求高的质量控制问题进行快速响应。毫无疑问从体系上进行通用化,模板化,可复用,可迁移是我们解决问题的方向。下一节,我们会从一个普通任务的迭代周期出发,分析上面对话对应的迭代过程的那一部分,并对相应的部分进行相应的通用化。
下图展示了一个迭代周期里面几个关键的过程。
1.规则制定:规则制定可以说是质量问题解决中最重要的工作,问题分析清楚了,解法也就出来了。这里简单列几个小原则,不进行展开。
2.特征提取:这里涉及如何将业务需求转化为技术需求。根据问题分析的结论,对直接特征进行提取,如标题,正文,封面图,隐藏内容,页面结构,跳转链接,锚文本,账号,统计特征等。
3.样本收集:根据需要从原始数据中收集一定量的正负样本,这些样本可以通过相似样本挖掘,也可以通过人工标注。
4. 模型训练:使用模型对提取的特征进行组合,并对收集的样本分布进行拟合。
看完上一小节的描述,不知道大家有没有把对话跟迭代周期的过程对应起来。接下来尝试对迭代周期里面的各个部分进行通用化,包括细粒度化,共享特征,样本增强,模型复用,模型迁移。
1.细粒度化:在进行规则制定阶段,要避免指定一个很大的质量问题进行优化,尽量把问题定义成“独立”,“明确”,“与业务无关”的细粒度问题。这样可以减少后面因为业务变化导致的不确定监督问题,提升模型适用性。举个例子:我们之前有个质量问题是黑四类(广告,活动,通知,招聘),标注的时候没有区分,训练的时候也是用一个模型。这样在有新的业务出现的时候突然发现我们不需要黑四类,而是黑三类。还有其他一些不建议的问题类型:"标题不规范","正文质量差","内容不优质"。
2.共享特征:虽然不同数据源的样式不一样,这样需要对不同的数据源通过页面解析进行特征抽取,统计。但是对于同一个数据源,不同的质量问题,往往会用到很多相同的特征。一个数据源抽取后的结果可以保存在结构化的数据结构中方便各个质量模型,还有其他的业务模型使用。如文本的位置,是否有链接,是否隐藏,是否模板内容等。
3.样本增强:通过相似样本挖掘和人工标注容易导致过拟合,标注效率低的问题。这里可以结合数据增强提升模型的鲁棒性,结合主动学习提升标注效率。
在处理不同的质量问题的时候,我们发现有些问题用到的特征,拟合的方法都是相似的。像越来越多平台算法库对基础模型提供支持一样,通过从具体问题中抽象问题,构建通用模型框架可以有效提高我们的工作效率。而构建通用模型框架需要结合的前面提到的共享特征在设计之初就其保证通用性,适配性,可扩展性。
4.3.1 通用模型
4.3.2 广告模型
这里介绍一下广告识别模型在构建过程中,涉及的几个通用问题模型。广告模型主要是负责识别文章里面的广告内容。从内容上,分为文字广告,图片广告,图文广告。从位置上分顶部广告,中间广告,底部广告。从篇幅上分主体广告,插播广告。那么这里可以抽象成 3 个通用的问题:
1.问题内容的定位(插播广告);2. 多类型特征的融合(图文广告);3.文章结构的序列化(顶部,中部,尾部,篇幅)。
数据源之间的数据分布一定是会存在差异的。模型迁移主要是想要解决数据分布不一致的问题。这里我们以色情低俗识别为例子,分“词向量”和“特征分布”两个方面来考虑迁移问题。
4.4.1 词向量统一
词向量在不同的场景中会表现不一样的语义,如“下面”在图文和视频标题里面就有不同的语义。多数据源数据训练的词向量因为获得了更多的信息量要好于多个数据源单独训练的向量。到后来基于更大量训练集的 bert 的出现更是极大的丰富了词向量的信息量。
4.4.2 特征空间统一
这里面的方法主要有 finetune,多任务学习,还有对抗学习。
前面所提到的多样化的问题,更多的是平台内部因为业务需求主动引入更多的数据和质量指标导致。这些问题相对来说是静态的。在业务上线之前,平台会进行摸底优化,不会有太多的意外。
接下来我们讨论数据动态变化的问题。在日常的内容生产过程中,内容生产者根据平台的环境和用户的反馈不断修改内容的样式,类目。这些变化会改变数据的分布,从而导致平台对新数据出现漏召或者误判。其中,黑产的持续不断的有意对抗最为频繁,花样最多,也是我们最为关注的。这些对抗具有形式类目多,迭代周期多的特征。
由于敌暗我明,完全杜绝几乎是不可能的。原则上是提高黑产的作弊成本,降低平台的维护成本。我们还是从前面提到质量控制体系的三部分入手。
平台:每天都有少量的标注人工对线上数据进行轮询,对有问题的数据进行屏蔽收集。
用户:对大量用户反馈有问题的数据进行限制。
生产:
样本扩散,模型迭代:
5.3.1 正常流程
那么怎么进行样本扩散,加快模型的迭代周期呢?下面是一个样本收集周期里面大概需要做些什么事情。
5.3.2 加速流程
工作周期主要的工作量是在两个部分,一是相似样本的挖掘,二是人工标注样本;相似样本挖掘的精度越高,覆盖的样式越全,人工标注的样本量就越少。而这两方面我们可以使用半监督学习跟强化学习的方法来进行优化。
5.3.3 自动化流程
更进一步我们尝试使用强化学习代替整个问题样本的挖掘过程,强化学习选择器从源数据里面选择样本,跟已有标注样本送入判别器训练,然后将判别器在测试数据和问题数据的表现当成 Reward 反馈给强化学习选择器。
前面讨论了框架内部的通用性,那么这个框架整体是否具有通用性,能否在其他平台适用呢?其实因为各类内容平台在问题类型跟数据类型本身就存在大量的共性;所以看一看的控制框架和技术,在面对如搜一搜,公众平台,朋友圈等其他场景时,依然可以提供相应的经验和能力。近半年来,搜一搜作为用户获取内容重要场景,我们在复用看一看能力的基础上也构建了类似的控制框架。
虽然我们已经掌握了各式各样的能力,能够解决很多问题,但是相比起知道的知识,我们不了解的内容更多,经常会出现让我们意想不到的状况。质量控制,乃至于机器学习的主要矛盾在于用有限的知识处理无限的未知。持续的知识获取意味着自主学习,也意味着持续的与现实交互。
一个平台的质量控制系统就像是人体的免疫组织,当病毒来临,免疫细胞产生抗体,消灭病毒。人类在漫长的进化过程中,构建了复杂的免疫系统,同时,病毒也在不断的进步。越是复杂的系统,出现问题的可能性越高,出现问题后解决问题的成本难度也越大。在构建强健的内部免疫系统的同时,我们同样需要营造良好的外部环境,让更多优质的内容生产者进来,才是解决质量问题之根本。
推荐阅读:
腾讯技术课 | 今日直播:你想了解的国产数据库秘密,都在这!