一、导语
转转作为一家二手电商公司,用户能够自由的在该平台上发布产品。风控的其间一项责任便是确保用户发布的内容是“洁净的”,所谓的“洁净”指的是不能呈现黄赌毒、违禁物品等内容。其间,违禁物品的辨认是咱们的要点。产品发布内容包括文本和图画两部分。早期咱们主要经过文本关键词去辨认违禁物品,可是文本的修正本钱很低,导致咱们往往疲于应对。因而,咱们着手从图画的维度去辨认违禁物品。违禁物品触及的类别较多,包括人民币、危险武器、香烟等数十个类别。在算法架构上,考虑到事务需要快速迭代、控制本钱、灵活添加分类的特点,咱们挑选最直接的分类模型作为基本的辨认模块,结构一个可快速迭代、新增分类的模型架构。
二、事务难点
违禁物品问题与其他内容审阅有明显区别,如涉黄这类问题有着清晰的类别区分,即涉黄、非涉黄两类,类别数量固定所以后期优化也仅仅提高算法模型的准召。可是违禁物品类别不能说彻底固定,随时面对产品同学新增分类的需求。其次,每日新增产品图片的数量巨大,这就导致线上状况较为杂乱,模型极简略误召,精度优化困难。总结下来有下面几个主要问题:
- 优化某一类准召或新增分类时要确保其他分类作用不变;
- 每次新增分类都需将历史数据从头标示一遍,面对20w左右的数据量极大的消耗人力且耗时较长;
- 线上状况极端杂乱,导致误召较高,精度优化困难;
基于这三点问题咱们提出自己的处理方案,下面将进行详细论述。
三、处理方案
3.1 全体模型架构规划
如果是简略的分类问题,咱们能够直接运用多分类模型对产品图片进行分类。咱们的早期方案也是这样做的,这样就直接面对上述的问题1和问题2,导致模型优化、新分类开发、数据标示难度递增,模型迭代周期越来越长,因而为了尽可能的处理这两个问题,咱们规划了下面的方案:
咱们会针对每个分类独自练习二分类模型,上线时将所有小模型集成合并为一个大模型,因为小模型间参数不共享,这样在优化某一分类时就能够保正其他分类不受影响,只需更新大模型中对应分类的小模型权重就能够完成更新,一起在新增分类时也无需再对历史数据进行标示。可是,这样咱们又会遇到两个新问题:
- 小模型参数量较小,是否能够达到初期多分类大模型作用;
- 随着分类数量的添加,小模型集成大模型的耗时、参数量会不断的添加;
首要,针对第一个问题咱们运用小模型与初期多分类大模型作用进行比照,小模型选用的是efficientNet-b0,项目初期选用的大模型为inceptionResnetV2。经验证小模型作用彻底可行,乃至因为小模型只需要考虑单一分类作用,优化更具针对性,作用会优于大模型作用。其次,针对第二个问题咱们进行了耗时与参数量验证:
- 试验参数设置
- batch size = 5
- input image size = 300 * 300
- 环境:线上gpu机器, 型号:TITAN V
- 成果
模型 集成数量 耗时 模型size inceptionResnetV2 1 115ms 219MB efficientnet-b0 12 132ms 198MB efficientnet-b0 20 208ms 330MB efficientnet-b0 30 302ms 494MB efficientnet-b0 40 484ms 659MB
在做试验时咱们初期多分类大模型分类数量为12个类别,能够看出当运用12个小模型时新集成的大模型与多分类大模型耗时与参数量相差不大。可是小模型数量不能无限的添加,在与工程侧交流后咱们将耗时上限定为200ms, 也便是运用上述方案咱们最多能够应对20个类别。一起,20个小模型集成的大模型消耗的机器资源也在承受范围内。因而咱们制定新的战略来处理这种状况:
经过上述战略咱们将集成模型的数量控制在20个以内,选用这种折中的方法来达到模型推断耗时的要求。到此咱们介绍完模型架构的全体规划。
3.2 数据标示战略
风控事务中一个重要的问题便是线上的状况极端杂乱,需要模型在每天海量的发布图片中发现几百张乃至几张问题样本。这就对模型的准确率有较高的要求,否则咱们的人工审阅成员无法承受模型的推审量。因而,在开发模型过程中对数据会集负样本的多样性提出了较高的要求。在违禁物品辨认项目开展初期,咱们会标示尽可能多的负样本来确保准确率,往往需要大约20w量级的负样本。这就使得咱们的标示本钱很高,并且违禁物品模型的迭代频率较高,长此以往标示本钱过高且迭代周期很长。基于此咱们尝试运用active learning(主动学习)的方法来标示数据,降低咱们的标示本钱。
首要,咱们来介绍一下什么是active learning。Active learning是机器学习(更遍及的说是人工智能)的一个子范畴,在统计学范畴也叫查询学习、最优试验规划。从定义中咱们能够看出这里也是主要运用了统计学的知识和运筹学的知识。简略得讲,active learning便是一个帮咱们标示数据的“模型”。
如上图所示,咱们从标示人来顺时针看:
- 标示人,这个标示人首要对未标示的数据进行标示;
- 传入到咱们现已标示的练习会集;
- 传入到机器学习的模型中,进行一个模型的学习;
- 导出无法标记的数据池;
- 经过一个挑选战略,挑选出一些高价值的数据(什么是高价值的数据呢?便是机器不确定的,信息熵在0.5左右的);
- 这些数据传给标示人,标示人进行标示,再重复之前的过程直到咱们的数据足够好为止;
以上是active learning基本思想,基于此咱们规划了咱们的标示方案:
- 标示少量的负样本(一般为1w+)和尽量多的正样本;
- 练习二分类模型;
- 测试模型准确率。如果满足需求完毕,否则进行下面过程;
- 运用过程2练习好的模型给未标示的图片打分,筛选分数大于0.5部分的数据进行标示,咱们认为这部分数据为高价值数据;
- 将新标示数据加入到数据会集,回来过程2,直到完毕;
经过上述方案,咱们能够快速的收集负样本中的困难样本,这样咱们大概只需要2w左右负样本就能够达到与之前运用20w负样本练习模型的作用,量级缩小了10倍,极大的节约标示人力本钱,一起因为标示时刻变短,缩短了模型开发的时刻,能够更快的响应事务需求。
四、总结与展望
本文要点介绍了咱们风控违禁物品辨认模型的全体模型架构以及数据标示战略,现在该方案使咱们能够快速、高质量的响应事务需求。因为当时方案类别过多时不太合理,后续咱们方案改进咱们的模型规划方案,在如何实现一个开集违禁物品分类模型问题上发力。
贾云龙,高级算法工程师,负责转转风控相关算法开发。