微信 AI | 为看一看及搜一搜“去污”—低俗色情识别,AI 怎么做到的?

来源: fredyttang 微信 AI

导语: 本文主要介绍低俗色情识别任务在从看一看业务迁移到搜一搜业务中遇到的一些问题、思考以及所做的一些尝试。本文尝试分析一下看一看与搜一搜场景的差异以及因差异导致的应用迁移困难;进而思考如何建立更好的分析机制和评价体系;最后在模型方面谈一下基于 Bert 的一些迁移改进与应用;本文工作主要集中在短文本领域。

看一看与搜一搜场景的差异分析

业务焦点的差异

在中心业务发展过程中,低俗色情识别最先应用于看一看场景,主要包括公众号文章、视频和新闻等内容源。在基于上述内容源的推荐场景中,由于内容以 PGC 生产为主,因此低俗色情问题的 90% 以上都是轻微低俗擦边,完全色情的问题比例很小;经过我们的努力,擦边程度以上的问题被控制在较低的水平(可参考之前的看一看介绍文章)。

随着搜索业务的发展,搜索场景的环境净化也变得刻不容缓,从用户 query 的提示、相关搜索到搜索结果的展示,都需要低俗色情识别来进行过滤。与看一看推荐场景不同的是,推荐是平台的主动行为,所以搜索场景 90% 以上的注意力更关注色情内容的识别过滤,推荐分发擦边内容是不可以的。(至少在看一看的调性中如此)

数据的差异

在从推荐场景转移到搜索场景中,我们面对的语料也发生了一些质变,从主要 PGC 生产的较标准的 PGC 语料转为了全网开放领域(例如搜索 query 与搜狗网页),色情问题规模也是相较之前有了爆发式的增长。因此看一看中多个数据源的模型在迁移到开放的搜索语料时,存在很大的领域差异,严重色情问题的召回不足,导致迁移应用的效果较差。

问题解决环境的差异

在问题发现上,看一看中有较完备的人工轮询机制,同时用户负反馈也可以提供很好的问题发现和样本。而到了搜一搜这里,相较海量用户 query 及网页结果,色情 case 的比例很低,轮询机制的效率极低(比如推荐中轮询 100 个可以发现 1 个问题 case,而搜索汇总可能需要轮询 1k 个);搜索也缺少像推荐那样用户对单个内容的即时负反馈。在问题分布上,由于推荐系统的机制及用户习惯,天然的会将擦边内容推到点击 top 的集合中;而这一效应在搜索中并不明显,依旧十分稀疏。由于搜索场景的问题稀疏,长尾问题更多(各种可能的作弊、黑话),这里不仅要跟黑产做对抗,还需要与用户的输入斗智斗勇,在效果评价上(主要是召回)也更加困难。

如何更好地分析样本与评价效果

如上文所述,由于两个业务的差异导致原有一些模型迁移到搜索的语料上时效果较差,模型精度的提升一般相对容易,通过样本清洗、误分样本的纠正及特征权重的调整(比如使用 Lime 辅助分析),可以较快的对精度进行提升。而在面对开放领域的 query、网页标题时,问题的稀疏性、长尾性以及问题发现机制的不健全(或者说低效)都导致了召回的提升是一个难题,同理召回的效果评价也更困难,因此这里也是主要探讨对于样本召回的分析,主要集中在 query 与搜狗网页标题。

在分析方法上,通过已有模型的 baseline 结合传统的基于关键词、embedding 向量相似可以为我们提供一份较多的种子数据。在此基础上,我们结合搜索业务的场景特点以及一些可用的知识,尝试了以下一些方法并取得了更好的效果。

搜索引擎结果的分析

站在巨人的肩膀上,可以帮助我们快速取得提升。一些搜索引擎的搜索结果质量以及展现的特征可以辅助我们扩展语义与分析样本。通过分析网址安全中心提醒、搜索结果数、相关搜索等特征可以帮助我们快速分析筛选一些疑似样本。这个方法在色情小说等问题的运用上有较好的效果。

同时,搜索引擎的搜索结果以及相关搜索结果也可以帮助扩展 query 语义以及一些变种,达到举一反三的功效,在实践中得以应用。

Query 用户改写串分析

用户行为是我们做分析的一个利器,既然搜索场景没有推荐那样显示的负反馈,那就通过分析用户心理和行为为我们提供隐式的负反馈。这个 idea 的出发点很简单,用户的搜索行为往往是连续的,直到得到想要的结果才会停止。那么在一次用户的连续搜索行为中,我们可以利用用户 query 的改写串来进行批量分析,通过已有模型对改写串的打分可以高效的分析目前模型还不能解决的 case。



由于个别字的改变(作弊)导致表面语义的飘逸,很容易逃过色情检测。通过这类作弊 case,我们可以进一步深挖搜索黑产所进行的一些 seo 作弊操作,由 session 发现作弊进而映射到 uin,可以分析一批作弊用户及其作弊 query。与黑产的对抗在低质识别工作中是永恒的话题,矛与盾的不断升级,不断试探;而借助已有的能力并进一步分析黑产用户的搜索模式,可以帮助我们建立起良性的循环和有效的对抗升级。

Query 与点击 doc 的联动分析

在实际业务中,由于 query 与网页标题语料的不同,文本长度上,query 偏超短文本而网页标题偏短文本;同时二者的表述等也存在领域差异,因此在业务中是训练了各自的模型。那么与 query 改写分析类似的思路,结合已有模型的能力与用户行为进行样本分析和补充。这里利用搜索引擎已自带的 query 与结果的相关性加上用户点击这一强行为特征,尤其在色情领域上使得 query 与结果的相关性比大盘水平高出很多。那么通过 query 与点击 title 的各自模型的预测得分,就可以较快的将不足的一方进行补全优化,实现多模型的联动升级。

评价指标

在效果评价上,我们一般采用精度、召回与 F1 值作为主要的效果评价指标,这里的难点主要在于召回评价上。因为搜一搜场景问题数据的稀疏性和长尾性,采用大盘随机评测召回需要投入很多人力来获取一个置信度较高的结果,因此我们尽量采用多个维度来体现模型的效果。通过比较迭代模型前后的 diff 胜出率可以实现自身的比较;通过引入其他开放领域测试集辅助验证模型的泛化通用性。除此之外,我们的业务使用方还单独分析了一批业务测试集,对算法侧保持黑盒状态,用打比赛的方式来评价成绩也是一个不错的选择。

基于 Bert 的迁移学习改进

在模型方面,可以说 Bert(及其各种升级版)是目前在大多数 NLP 任务中效果最佳的模型。在 GPU 资源充足的情况下,我们也优先部署 Bert 提高业务效果,并在 Bert 的基础上结合业务特点进行一些模型创新。下面将从如何使用 pivot 词改良 Bert 的预训练过程和如何利用业务中天然的多任务学习场景来提高模型最终效果这两点来展开介绍。

基于可迁移 Pivot 词的 Bert 迁移学习

目前对于 Bert 的应用来说,大多情况(简单用法)都是直接在少量的标注数据上去 Finetune 最后一层即可取得较好的效果。对于精细化的升级用法,会先在特定任务的语料上去精调预训练的语言模型,这样的好处是可以让模型更加适应当前任务的语言环境。而这一点在低俗色情问题上是非常匹配且需要的,因为一般 Bert 预训练语言模型的语料都是类似维基百科这种较正常标准的内容,缺少低俗色情里的很多低俗说法、黑话、作弊等内容(比如“干”“棒棒糖”等词),这就使得预训练得到的语言模型缺少对这些一词多义的理解,即基于上下文的语义理解,而这些的一词多义正是我们这一特定任务最需要的。

对于 Bert 的优化方向之一就是引入更多辅助任务以及外部知识,对下游的知识类任务或者包含 NER 相关的任务有直接的效果提升作用。与此思路类似的是,我们引入了 pivot 词的知识,学术界有不少迁移学习的工作是基于 pivot 词来提升不同领域之间的迁移效果,这在低俗色情问题上同样十分匹配,通过学习领域不变的 pivot 特征来桥接源领域和目标领域,从而使得在源域上训练的模型可以适配目标域。

我们的 TPT(Transferable Pivot Transformer)模型分为两部分,pivot 选择网络以及 mask pivot 的预训练语言模型网络(分别对应模型示意图的右半部分和左半部分)。在 pivot 选择部分,为了优化色情领域很多新词或作弊词的问题(例如“轮轩”“好庠”等),我们采用基于字的 bi-gram 和 tri-gram,通过已有标注数据计算互信息 MI 获取到一批权重高的 pivot 词表。进一步为了使得 pivot 词更具可迁移性,我们通过训练 pivot 词的领域分类器来挑选出领域不可分(即可迁移)的最终 pivot 词表。

在预训练语言模型阶段,与传统 bert 的 mask 策略不同的是,我们加入了针对 pivot 词的 mask 策略,我们希望模型能更多的关注和学习到 pivot 词在不同上下文语境中的语义。因此在训练语言模型的过程中,我们对于 pivot 词大概率下进行 mask,小概率下保持不变;同时 bert 原有的随机 mask 策略可继续使用,最终生成的即为适用于我们这一特定任务场景的预训练语言模型。我们这一 idea 的工作已发表在 AAAI2020 上,感兴趣的同学可以细看一下。Simultaneous Learning of Pivots and Representations for Cross-Domain Sentiment Classification

基于 Bert&知识蒸馏的多任务学习

如前文所述,在搜一搜的低俗色情的任务场景中有 query、搜狗网页、公众号文章、视频等多个数据领域,多个领域间均存在不同程度的领域差距,也因此每个领域都会训练生成对应的分类模型。与此同时,多个领域之间的任务目标又十分相似,很多知识是通用的,这十分适合多任务模型的应用。在之前看一看的工作中,我们也尝试了例如基于 LSTM 的多任务模型、领域迁移对抗模型等,在 Bert 兴起后,如当年 Imagenet 的进化路径,Bert 可以作为一个优良的底层特征提取器,继续在 Bert 之上结合传统的多任务学习或者迁移学习的工作进一步提升效果。这里我们尝试了 Google 发表在 ACL2019 的工作 BAM! Born-Again Multi-Task Networks for Natural Language Understanding,其将 Bert 与多任务学习、知识蒸馏巧妙地结合在一起。 

知识蒸馏即将知识从「教师」模型迁移到「学生」模型,执行方式为训练学生模型模仿教师模型的预测。在「born-again network」(Furlanello et al., 2018) 中,教师和学生具备同样的神经网络架构和模型大小,然而学生网络的性能超越了教师网络。有研究分析其提升的原因是因为教师模型的输出不再是原来 one-hot label 的形式,而转为对 label 分布的输出,这可以提供更多的训练信息(dark knowledge)。

BAM 进一步将知识蒸馏扩展到多任务模型训练环境中,在业务应用中,首先对各个领域的数据训练 bert 的教师模型,进而结合教师模型的预测值和实际 label 作为多任务学习的 label,在 BAM 中提供了教师模型退火的机制,即在迭代中逐渐减少教师预测值的权重,达到青出于蓝而胜于蓝的效果。

结语

近一年我们集中优化了搜一搜下多个场景的低俗色情任务的效果,在 query(包括 suggestion、hint 及意图识别)、网页、文章等多个搜索场景取得了较好的效果,整体 F1 值在 0.8 以上。在做业务的时候,我们尽量分析业务自身的特点,借助各种可用的知识以及适用业务特点的模型来快速提升效果。在如何完善问题发现机制、与黑产模式对抗、使模型更具可迁移性、效果评估更置信等问题上我们还在不断地尝试发掘出一些新的思路,感兴趣的同学欢迎一起探讨,感谢大家捧场。


本文地址:https://www.6aiq.com/article/1607653030763
本文版权归作者和AIQ共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出