自主研发、不断总结经验,美团搜索推荐机器学习平台

内容来源: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维度和样本维度。

规划展望

最后谈一下我们对未来的规划和展望,也是从几个层面出发。

首先是计算层,我们正在和公司数据平台共同建设实现计算资源量的智能调度,自动选择合适的计算资源。框架层方面会集成更多的工具派的机器学习系统,实现一键切换不同框架的功能。数据算法层则是向深度模型结构的可视化,还有自动机器学习的方向发展。服务层也正在考虑模型打分服务化。

以上为今天的分享内容,谢谢大家!

原文发布于微信公众号 - IT大咖说(itdakashuo)

原文发表时间:2018-08-17

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏机器学习算法与Python学习

5月,机器学习开源新项目Top-10

1604
来自专栏机器之心

教程 | 教Alexa看懂手语,不说话也能控制语音助手

数月前的某个夜晚,我躺在床上时,一个念头闪过我的脑海——「如果语音是计算接口的未来,那么那些听不见或看不见的人该怎么办?」我不知道究竟是什么触发了这个想法。我自...

3512
来自专栏数据派THU

怎样构建中文文本标注工具?(附工具、代码、论文等资源)

来源:Paperweekly 本文长度为2218字,建议阅读4分钟 本文为你介绍中文文本标注工具的构建方法,并提供多个开源文本标注工具。 项目地址: https...

1.2K7
来自专栏AI研习社

深度学习预测比特币价格;基于神经网络的自动化前端开发 | Github 项目推荐

对于开发者来讲,证明其编程能力最好的方式是展示他们的项目和代码。AI 研习社本周从 YouTube、知乎以及 Github 官网上搜罗了数个与 AI 相关的开源...

4137
来自专栏mwangblog

几种蚁群算法介绍

最早的蚁群算法,其在小规模TSP中性能尚可,再大规模TSP问题中性能下降,容易停滞。其解决旅行商问题(TSP)过程大致如下:

2683
来自专栏PPV课数据科学社区

构想:中文文本标注工具

项目地址 | https://github.com/crownpku/Chinese-Annotator ? 自然语言处理的大部分任务是监督学习问题。序列标注问...

52411
来自专栏量子位

Google发布tf.Transform,让数据预处理更简单

为了方便用户为机器学习进行数据预处理,Google今天发布了tf.Transform。 以下内容来自Google Research Blog,量子位编译 每当要...

4209
来自专栏企鹅号快讯

第二课:开发机器学习app前的准备工作

框架的选择 如上一节课所说,随着机器学习的发展,目前已经出现很多不错的学习框架,这里我们做个对比: TensorFlow:深度学习最流行的库之一,它不仅便携、高...

2527
来自专栏人人都是极客

第二课:开发机器学习app前的准备工作

框架的选择 如上一节课所说,随着机器学习的发展,目前已经出现很多不错的学习框架,这里我们做个对比: TensorFlow:深度学习最流行的库之一,它不仅便携、高...

31510
来自专栏深度学习之tensorflow实战篇

IBM SPSS Modeler Social Network Analysis 的介绍和日常应用

IBM SPSS Modeler Social Network Analysis,中文叫做社交网络分析,本文将一律简称 SNA。 引言 IBM Business...

31210

扫码关注云+社区

领取腾讯云代金券