编辑导读:网上冲浪,我们时常会看见一些低俗色情的不良内容,这时候就需要平台介入清除。本文作者以微信的搜一搜和看一看为例,介绍低俗色情识别任务在从看一看业务迁移到搜一搜业务中遇到的一些问题、思考以及所做的一些尝试。
本文主要介绍低俗色情识别任务在从看一看业务迁移到搜一搜业务中遇到的一些问题、思考以及所做的一些尝试。本文尝试分析一下看一看与搜一搜场景的差异以及因差异导致的应用迁移困难;进而思考如何建立更好的分析机制和评价体系;最后在模型方面谈一下基于Bert的一些迁移改进与应用;本文工作主要集中在短文本领域。
01 看一看与搜一搜场景的差异分析1. 业务焦点的差异在中心业务发展过程中,低俗色情识别最先应用于看一看场景,主要包括公众号文章、视频和新闻等内容源。在基于上述内容源的推荐场景中,由于内容以PGC生产为主,因此低俗色情问题的90%以上都是轻微低俗擦边,完全色情的问题比例很小;经过我们的努力,擦边程度以上的问题被控制在较低的水平(可参考之前的看一看介绍文章)。
随着搜索业务的发展,搜索场景的环境净化也变得刻不容缓,从用户query的提示、相关搜索到搜索结果的展示,都需要低俗色情识别来进行过滤。与看一看推荐场景不同的是,推荐是平台的主动行为,所以搜索场景90%以上的注意力更关注色情内容的识别过滤,推荐分发擦边内容是不可以的。(至少在看一看的调性中如此)
2. 数据的差异在从推荐场景转移到搜索场景中,我们面对的语料也发生了一些质变,从主要PGC生产的较标准的PGC语料转为了全网开放领域(例如搜索query与搜狗网页),色情问题规模也是相较之前有了爆发式的增长。因此看一看中多个数据源的模型在迁移到开放的搜索语料时,存在很大的领域差异,严重色情问题的召回不足,导致迁移应用的效果较差。
3. 问题解决环境的差异在问题发现上,看一看中有较完备的人工轮询机制,同时用户负反馈也可以提供很好的问题发现和样本。而到了搜一搜这里,相较海量用户query及网页结果,色情case的比例很低,轮询机制的效率极低(比如推荐中轮询100个可以发现1个问题case,而搜索汇总可能需要轮询1k个);搜索也缺少像推荐那样用户对单个内容的即时负反馈。在问题分布上,由于推荐系统的机制及用户习惯,天然的会将擦边内容推到点击top的集合中;而这一效应在搜索中并不明显,依旧十分稀疏。由于搜索场景的问题稀疏,长尾问题更多(各种可能的作弊、黑话),这里不仅要跟黑产做对抗,还需要与用户的输入斗智斗勇,在效果评价上(主要是召回)也更加困难。
02 如何更好地分析样本与评价效果如上文所述,由于两个业务的差异导致原有一些模型迁移到搜索的语料上时效果较差,模型精度的提升一般相对容易,通过样本清洗、误分样本的纠正及特征权重的调整(比如使用Lime辅助分析),可以较快的对精度进行提升。而在面对开放领域的query、网页标题时,问题的稀疏性、长尾性以及问题发现机制的不健全(或者说低效)都导致了召回的提升是一个难题,同理召回的效果评价也更困难,因此这里也是主要探讨对于样本召回的分析,主要集中在query与搜狗网页标题。
在分析方法上,通过已有模型的baseline结合传统的基于关键词、embedding向量相似可以为我们提供一份较多的种子数据。在此基础上,我们结合搜索业务的场景特点以及一些可用的知识,尝试了以下一些方法并取得了更好的效果。
1. 搜索引擎结果的分析站在巨人的肩膀上,可以帮助我们快速取得提升。一些搜索引擎的搜索结果质量以及展现的特征可以辅助我们扩展语义与分析样本。通过分析网址安全中心提醒、搜索结果数、相关搜索等特征可以帮助我们快速分析筛选一些疑似样本。这个方法在色情小说等问题的运用上有较好的效果。
同时,搜索引擎的搜索结果以及相关搜索结果也可以帮助扩展query语义以及一些变种,达到举一反三的功效,在实践中得以应用。
2. Query用户改写串分析用户行为是我们做分析的一个利器,既然搜索场景没有推荐那样显示的负反馈,那就通过分析用户心理和行为为我们提供隐式的负反馈。这个idea的出发点很简单,用户的搜索行为往往是连续的,直到得到想要的结果才会停止。那么在一次用户的连续搜索行为中,我们可以利用用户query的改写串来进行批量分析,通过已有模型对改写串的打分可以高效的分析目前模型还不能解决的case。
由于个别字的改变(作弊)导致表面语义的飘逸,很容易逃过色情检测。通过这类作弊case,我们可以进一步深挖搜索黑产所进行的一些seo作弊操作,由session发现作弊进而映射到uin,可以分析一批作弊用户及其作弊query。与黑产的对抗在低质识别工作中是永恒的话题,矛与盾的不断升级,不断试探;而借助已有的能力并进一步分析黑产用户的搜索模式,可以帮助我们建立起良性的循环和有效的对抗升级。
3. Query与点击doc的联动分析在实际业务中,由于query与网页标题语料的不同,文本长度上,query偏超短文本而网页标题偏短文本;同时二者的表述等也存在领域差异,因此在业务中是训练了各自的模型。那么与query改写分析类似的思路,结合已有模型的能力与用户行为进行样本分析和补充。这里利用搜索引擎已自带的query与结果的相关性加上用户点击这一强行为特征,尤其在色情领域上使得query与结果的相关性比大盘水平高出很多。那么通过query与点击title的各自模型的预测得分,就可以较快的将不足的一方进行补全优化,实现多模型的联动升级。
4. 评价指标在效果评价上,我们一般采用精度、召回与F1值作为主要的效果评价指标,这里的难点主要在于召回评价上。因为搜一搜场景问题数据的稀疏性和长尾性,采用大盘随机评测召回需要投入很多人力来获取一个置信度较高的结果,因此我们尽量采用多个维度来体现模型的效果。通过比较迭代模型前后的diff胜出率可以实现自身的比较;通过引入其他开放领域测试集辅助验证模型的泛化通用性。除此之外,我们的业务使用方还单独分析了一批业务测试集,对算法侧保持黑盒状态,用打比赛的方式来评价成绩也是一个不错的选择。
03 基于Bert的迁移学习改进在模型方面,可以说Bert(及其各种升级版)是目前在大多数NLP任务中效果最佳的模型。在GPU资源充足的情况下,我们也优先部署Bert提高业务效果,并在Bert的基础上结合业务特点进行一些模型创新。下面将从如何使用pivot词改良Bert的预训练过程和如何利用业务中天然的多任务学习场景来提高模型最终效果这两点来展开介绍。
1. 基于可迁移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
2. 基于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中提供了教师模型退火的机制,即在迭代中逐渐减少教师预测值的权重,达到青出于蓝而胜于蓝的效果。
04 结语近一年我们集中优化了搜一搜下多个场景的低俗色情任务的效果,在query(包括suggestion、hint及意图识别)、网页、文章等多个搜索场景取得了较好的效果,整体F1值在0.8以上。在做业务的时候,我们尽量分析业务自身的特点,借助各种可用的知识以及适用业务特点的模型来快速提升效果。在如何完善问题发现机制、与黑产模式对抗、使模型更具可迁移性、效果评估更置信等问题上我们还在不断地尝试发掘出一些新的思路,感兴趣的同学欢迎一起探讨,感谢大家捧场。
作者: fredyttang,微信公众号:微信AI
来源:https://mp.weixin.qq.com/s/D_4G_OWtmLN8hrYM8PThHg
本文由 @微信AI 授权发布于人人都是产品经理,未经许可,禁止转载。
题图来自 Unsplash,基于CC0协议。