内容来源:2018 年 5 月 26 日,美团点评技术专家杨一帆在“饿了么技术沙龙·第25弹【搜索推荐】”进行《Why WAI: 美团点评搜索推荐机器学习平台》演讲分享。IT 大咖说(微信id:itdakashuo)作为独家视频合作方,经主办方和讲者审阅授权发布。
阅读字数:3308 | 9分钟阅读
摘要
本次分享主要介绍如何从机器学习实践过程中不断总结经验,搭建集数据处理、特征工程、模型训练、打分预测、实时监控、在线学习等步骤为一体的机器学习平台WAI,以及该平台如何赋能业务不断优化搜索推荐用户体验。
获取嘉宾演讲视频及PPT,扫一扫下方二维码即可。
What
什么是机器学习
机器学习本质上是计算机模拟人类学习行为从数据中提取发现知识结构获取新的知识和技能,并通过迭代的方式改善自身性能。机器学习有几个比较典型的类别,面临一个问题的时候可以根据该问题特性、样本属性或样本量等来决定其归属于哪类机器学习范畴以及对应模型。
美团点评的机器学习应用大部分还是围绕业务来开展,包括搜索推荐、金融、外卖、打车、广告等。
机器学习通用流程
机器学习整个流程包含几个部分。数据准备部分涉及到数据收集清洗,质量探测和特征工程;模型训练部分包括选择合适的模式和计算资源,模型上线之后进行定期更新;模型评估部分主要查看各个特征的重要度和离线指标,有条件的话还要做线上的近线评估;线上部署后自行选择打分方式,并支持平滑的模型切换以及AB实验;效果监控方面最好能做到实时监控,给出打分解释,也方便进行在线学习。这一整套流程仅有简单的5步,但内部有很多细节需要处理。
什么是WAI
WAI全称为workbench of AI,它是点评搜索团队自主研发的系统,可以一站式的托管机器学习流程,能够通过可视化拖拽配置,支持开发自定义组件,对标业界先进平台,比如阿里PAI。目前(截止到演讲时间)WAI平台上实验数近一百五,运行记录破五千,托管了包括点击率预估、文本处理、图片识别等各种训练目标的任务,公司内部推广进行中。
Why
流派对比
机器学习系统可以分为平台派和工具派。
平台派典型的代表有PAI和WAI,它们的定位是用来托管完整的机器学习流程,赋能所有业务接入AI的能力,特点在于交互性强,通过简单拖拽就能完成配置,流程清晰所见即所得。采用一站式托管,覆盖从离线训练到线上部署和监控的完整流程。
工具派定位是预先定义开发机器学习库,输入参数直接就能使用,重点关注如何优化模型训练性能,比如如何进行超大规模特征模型训练。
这两个流派能很好的结合起来,比如平台可以将工具视作底层提交的任务类型。
机器学习痛点
以下是我们在平时的机器学习实践中总结的一些痛点。
- 业务应用门槛高,普通的业务很难搭建起整套系统。
- 训练流程维护困难。一般大家都是通过脚本来维护训练流程,相互之间无法借鉴,如果相关人员离职部分工作可能会丢失。另外流程的各步骤割裂,数据获取成本高,且执行过程无法控制,试错成本也很高。
- 计算资源对接不便。比如我们公司有多个计算集群,每个集群的对接方式都不相同。也无法灵活切换计算资源,每个团队资源的分配额度相对固定。
- 复用借鉴能力弱。业务特征无法共享,数据处理和特征生成逻辑无法相互借鉴。
- 业务差异导致重复建设。
针对这些痛点我们也提出了解决方案,包括一站式托管完整流程,将整个流程可视化,做到灵活控制,屏蔽底层集群对接和资源调配细节,集中管理特征和模型,统一特征服务和模型打分逻辑。
How
系统架构
上图是我们平台的系统架构,从底层往上分别是计算层、框架层、数据算法层、服务层、应用层。计算层关注于数据平台多种计算能力集成,以及屏蔽使用细节降低对接成本。框架层封装了多种框架包,实现了按需对接。数据算法层支持完整的pipeline流程,封装了特征处理体系和一些模型优化手段。服务层拥有统一的特征服务,并且封装好了打分逻辑,有完善的监控机制。
流程实现
这张图展示的是离线层和近线层在模型训练的各个步骤中具体负责的内容。首先是数据管理,离线层会通过数据预处理生成一系列的数据集合,包括存放特征的特征池、用于训练的样本集、待预测的数据集。近线层一方面拿到离线特征池进到特征服务,另一边直接对实时流进行处理生成实时特征和实时样本。
模型训练步骤中离线层就是传统的训练过程,近线层会用实时样本和特征服务进行模型的在线学习和动态更新。
模型评估阶段离线层离线评估完后会直接进入模型仓库,方便复用。线上的模型评估一方面会使用模型仓库中的模型在真正上线生效之前进行预上线,另一边会对线上实时生效的模型进行实时评估。
部署打分方面,离线层支持直接进行批量预测。线上层通过模型加载从特征服务获取特征进行实时预测。
效果监控方面有各种监控告警,还支持结果解释。
下面会详细介绍下每一个步骤的具体情况。
数据管理
我们目前已支持几种常见的数据收集方式,包括SQL读取、文件上传、目录指定等。采样过滤方面支持随机采样、加权采样、分层采样。分布探索和缺失填充是常用的统计分析方式。
特征工程方面有一套特征的处理算子,实现了特征解析、组合、变换功能,它是基于已有特征简单配置上线新的特征,对于未支持的复杂操作我们也提供了自定义的算子开发接口。
统一特征服务这块一方面支持统一特征读取接口,方便各方调用。另一方面还支持统一入库方式,实现特征共享。一致性保障上主要基于这几点。首先特征在获取过程中落地日志,离线训练的时候可以直接取日志,保证了离线获取到的特征一定是在当时线上排序的时候模型所用到的特征。其次不同业务使用统一特征,保证数据一致。另外还支持实时特征和实时统计特征。
模型训练
模型训练上支持常规的分类、聚类、回归、深度模型,其中深度模型包括DNN、Deep&Wide、CNN、LSTM CRF等。为方便使用我们还提供了任务的拷贝修改,以及执行记录的完整保存。
配置完成后接下来就是任务运行,为了尽可能的让任务结果符合预期,平台在任务运行的时候会采取各种措施。包括屏蔽任务提交细节,清晰可见的展示任务进展,自动解析拓扑结构,最大化并发执行,还有友好的推送提示。
对于模型的执行控制我们做了如下优化:
1、支持小数据量试运行,方便快速纠错。
2、每步运行结果都可查看。
3、支持单步执行、断点重跑等复杂操作。
模型评估
离线评估的常见指标ROC/PR/AUC/GAUC/MAP/NDCG都会以图表的形式展现,包括特征的重要度。近线评估支持模型预上线和多模型并行打分,通过打分和用户的实际反馈可以预估出上线之后AUC和MAP大致的表现。
模型部署
模型的部署有几种不同方式。一种是定制加载,它自身封装了打分逻辑,只要是通过本平台训练的模型,通过这种方式都可以实现并行打分,降低整体预测性能。另外就是离线部署和服务化部署。模型更新方面可以直接配置定时替换,或近线评估达到某一阈值再进行替换,还可以在替换的时候指定流量比例进行AB测试。
效果监控
模型上线之后的打分解释我们做了两部分工作。一部分是常规的树模型,可以直观的展现得分曲线图和残差曲线图,能够获取到特征重要度和特征贡献度。另一部分是深度模型,我们会先针对某一个样本的特征值做随机扰动生成一批样本,然后根据这些样本局部拟合出一个线性模型,用线性模型每个特征的权重来解释当前深度模型的打分结果。
实时监控是通过定长滑动窗口对实时日志流不断滚动并进行计算得到线上的实时指标,之所以采用定长窗口是为了保证样本集大小固定。由此获得的指标包括Query维度和样本维度。
规划展望
最后谈一下我们对未来的规划和展望,也是从几个层面出发。
首先是计算层,我们正在和公司数据平台共同建设实现计算资源量的智能调度,自动选择合适的计算资源。框架层方面会集成更多的工具派的机器学习系统,实现一键切换不同框架的功能。数据算法层则是向深度模型结构的可视化,还有自动机器学习的方向发展。服务层也正在考虑模型打分服务化。
以上为今天的分享内容,谢谢大家!