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