心法利器[15] | 准招分治效果调优方案
【前沿重器】
全新栏目,本栏目主要和大家一起讨论近期自己学习的心得和体会,与大家一起成长。具体介绍:仓颉专项:飞机大炮我都会,利器心法我还有。
往期回顾
其实我在很多文章里就有谈过这个概念,只不过没有展开讲过,这次就给大家展开来谈谈这个准招分治。
准招分治是什么
我们在解决很多算法问题的时候,都会要求准招都比较高,而准确率和召回率其实是两个相对矛盾的概念,召回提升一般会导致准确率下降,而准确率提升则很可能会让召回率下降,当我们要寻求准确和准确同时提升时,方法就会很受限,一个比较常用的方式,就是准招分离,与其说这是一个方法不如说是一个思路,因为这只是一个指导我们去优化的一个方向而已。
所谓准招分离,其实就是我们把准招提升的这个问题拆解为两个问题,分别是提升准确和提升召回,我们往往会分别使用特定方案来解决准确问题和召回问题,说白了,就是我用一个方案来专注解决准确问题,一个方案专注解决排序问题。
举例1:推荐系统
我对这个方案的理解就来源于推荐系统,因为推荐系统整体的架构设计就体现了这个思想。
推荐系统整体结构就是召回-排序的结构。召回阶段负责从多角度召回大量的结果,这里其实能够很大程度的保证了推荐系统的召回率,而准确率的保证则来源于后面的排序,通过用户偏好等信息对召回的大量内容进行精准的排序,从而让用户能更大程度的看到他喜欢的内容,从而保证了所谓的准确率。
但是我们仔细想,召回和排序对准确和召回的要求并非完全分离的,而只是各有侧重而已,召回阶段是为了保召回,但是并没有准确率完全漠视,因为我们有的放矢的召回,我们其实也是在过滤那些“用户一定不喜欢”的东西,从而对准确率有了共现,而排序阶段虽然有CTR预估之类的方式来保证了准确,但是排序阶段还是有打散的操作来保证用户能看到的东西具有多样性,对召回率同样有贡献的。
举例2:阿里小蜜的数据量分级机制
来自于我之前的一篇文章:前沿重器[5] | 阿里小蜜的数据量分级处理机制
这篇文章的核心在于根据对无样本、少样本、多样本进行了不同操作的处理,而这里其实也用了这个思想,这个思想的体现在于这几个无样本、少样本、多样本问题下的方案——正则规则、向量召回、分类学习。
正则规则一般具有很高的准确性,但是召回率较低;向量召回则一定程度会更注重召回率;精准的学习尤其是分类学习,相比正则规则而言还是比较难击败的,因此准确率相对较低,但是泛化能力是很大提升的,因此召回率是比较高的,但是准确率整体是高于向量召回的。
从这里看,其实这3个方案的有机结合能让准招都有比较稳定的保证。当然在搜索领域也是类似的,规则+词典用覆盖绝大多数高频场景,能有较高的准确性,召回率靠分类模型来兜,向量召回的。
该怎么实施
说了这几个例子后,大家应该有所理解了,然后就是具体的实施了。
大部分情况,其实不太建议大家一上来就整准招分离,其实这是一个效果优化的产物,从有到优地逐步搭建起来。首先,我们需要确认当前方案的现状:
目前的方案的效果如何,主要问题在哪。 准招两个目标,该方案比较容易朝哪个方向优化。
在此基础上,开始找另一个方向效果比较好的方案。
举个例子,现在我们用模型完成了一个比较简单的文本分类方案,但是受限于一些原因效果不太好,我们知道模型方案的泛化能力比较高,但随之而来的是准确率可能受限,因此我们需要有一个准确性较高的方案,那就是规则和词典了。
另外,要记得处理好两者的关系,上下游、并列merge等都是合并的方式。
于是,我们就把准招的任务给分开了,由规则和词典保证准确,然后模型来提升泛化能力,保召回,两者结合,完成一个完整的结构,加上规则高准低召回以及高性能的优点,我们可以把规则词典放在上游,召回不来的交给模型,就成了一个分级结构,就和阿里小蜜一样:。
此后,我们逐步提升规则和词典的覆盖面从而提升召回,模型层面我们也逐步完成效果的优化,此后这个文本分类方案的效果能够得到更稳定的提升。
小结
从某种程度上说,这个分治其实类似模型融合的思想,集多个方案的优势于一体完成一个完整的方案,而这个分治不代表了完全割裂,而是两者有机融合,发挥各自的优势从而完成这个项目的优势,实现效果提升,纠结于一个小模块就能完成整个效果的提升,天花板肯定会低一些了。