写点什么

落地机器学习前,我们应该思考清楚的几个问题

  • 2017-10-04
  • 本文字数:2863 字

    阅读完需:约 9 分钟

随着大数据技术的普及和发展,机器学习技术从搜索引擎开始,伴随着互联网、移动互联和共享经济的发展,日益成为改善用户体验、提高产品质量的核心组件。机器学习技术不仅给互联网带来了源源不断的收入(互联网广告),甚至也在改善每一位用户的日常电商购物、交通出行、旅游等方方面面的体验。那如何在已有的系统或者业务中落地机器学习相关实践呢?在开始使用机器学习之前,企业应该有哪些准备?带着这些问题,InfoQ 记者采访了 PayPal 大数据研发架构师张彭善。另外,张彭善也将会在 10 月 17 日举行的 QCon 全球软件开发大会上分享相关话题,欢迎关注。

InfoQ:机器学习现在非常火热,很多企业也逐步开始考虑在业务中实践机器学习,你认为机器学习适合解决什么样的问题?

张彭善:抛开 AI 不谈,机器学习在很多领域已经证明了其具有非常巨大的价值,尤其是在互联网领域,无论是杀手级应用互联网广告、还是电商内容平台推荐、风控欺诈识别以及共享出行,机器学习已经成为互联网变现提高盈利的重要手段。从这些主流应用中可以看出目前的机器学习主要是在解决复杂的预测优化问题,所以对于企业来讲,应当思考业务环节中任何涉及优化策略的业务都可以尝试实践机器学习,比如新产品目标用户推广、销售策略优化、客户流失预警等等。

InfoQ:那在落地机器学习之前,企业应该有哪些准备?什么样的团队适合实践机器学习?

张彭善:我和很多企业聊过,这个问题和第一个问题构成目前企业应用机器学习最大的痛点。对于大部分企业来讲不会像互联网企业一样有强大的数据科学和工程团队,但是我也注意到很多传统企业也是有数据分析和业务开发团队的,这是一个很好的基础,利用这些团队可以组建或培训适应机器学习应用的数据科学团队。然后可以着手先尝试以最小成本构建起端到端的机器学习管道,这包括基础平台的构建、收集数据的渠道、特征工程和模型开发的流程以及最终模型的部署上线,有了这样的管道和平台,就可以持续不断的优化性能进而达到预期的业务目标,然后可以慢慢尝试应用到其它业务场景。

InfoQ:结合你的工作经验以及业界的一些实践,你认为企业落地机器学习的最佳路径是什么?

张彭善:始终以业务优化作为指导,无论是任何一个步骤,都需要思考是否是有利于达到最终的优化目标。最佳路径是在构建整个流程管道和平台的同时,力争快速部署模型到系统中去。当模型部署上去之后,通过反馈结果再持续的迭代和改进机器学习平台和整个管道,此过程中没有必要去追求完美的模型和完美的系统,快速响应业务和持续演进能力是关键。

InfoQ:在落地机器学习的过程中,企业应该注意避开哪些坑?

张彭善:落地机器学习的过程,确实会有很多的坑,比如:

  1. 学习目标应尽可能的简单以及可以量化,如果目标定义模棱两可,很难想像能做出很好性能的模型。
  2. 应当首先从简单线性模型开始,不要上来就盲目迷信复杂的非线性和深度模型,事实上每一个模型都有其适用场景和优缺点,从线性模型出发首先可以提供一个好的基准,其次也能帮助发现数据中存在的问题,比如说剔除一些噪音数据,解释一些复杂的特征数据等等。
  3. 确保训练数据、测试数据和线上数据的分布一致,这个说起来简单,实际上随着业务的复杂性增加,很多情况下训练数据和线上数据并不一致。有可能是业务调整导致线上预测只是之前的一小部分数据集,也有可能训练数据集只是取的业务其中有偏差的一部分数据。
  4. 始终以机器学习平台管道构建为目标,不要局限于短期的性能改善,作为一个优化系统,更多的尝试意味着更大可能的性能提高,有了平台的基础,才能持续稳定的改善机器学习模型的性能,提高业务收益。

InfoQ:在一个相对完整的机器学习平台中,你认为应该包含哪些技术栈?

张彭善:机器学习平台是一个相对复杂的系统,主要包括离线、近线、在线三个方向的技术栈。

  1. 离线系统的技术栈主要是构建在 Hadoop 系统,如日志数据存储(HDFS)、特征数据仓库(Hive,SparkSQL,…)、ETL 计算、MapReduce 特征工程、模型训练和评估,目前一些主流的基于 GPU 的深度学习也可以统一到 YARN、Kubernetes 等系统中进行统一的调度管理。
  2. 近线主要涉及到一些流式的计算,如计算各个产品维度的滚动值、历史值等,涉及到的技术栈包括消息系统如 Kafka、流失计算如 Storm、Flink、Spark Streaming 等。
  3. 在线主要涉及到在线特征管理和计算以及模型执行,在线系统对于系统的可用性有很高的要求,主要涉及的技术栈包括各种 NoSQL 数据库用来管理和快速存取特征,Rest 或微服务架构管理各种模型和所依赖的特征。除模型预测外,在线系统还可能包括策略系统:主要根据模型预测做相应的策略,此系统一般会和业务系统结合也是偏向服务化的技术栈。

除此之外,还会有监控、日志收集、调度等系统辅助整个平台的运行,这些技术栈并不是特别固定,可以根据实际需要选取和研发。

InfoQ:做应用的时候,大家都经常喜欢说架构。机器学习平台有架构之类的说法吗?

张彭善:机器学习平台并没有脱离软件工程,架构在整个平台依然扮演着非常重要的作用。

  1. 和传统应用一致,在线机器学习平台目前主要也是分层的微服务架构,通过微服务可以把数据存取及模型执行以及策略执行做很好的解耦,数据服务通过数据库存取一般是 IO 密集型的,模型和特征计算是 CPU 密集型,各服务和应用可以单独优化和部署,进而提高整个在线系统的性能和可用性。如果在线系统涉及到模型增量运算,对于在线系统还需要做好线上模型更新和隔离,这时分层和服务架构更加重要而且对层次划分也更细致。
  2. 机器学习平台还涉及到很重要的离线数据平台,底层一般是构建在 Hadoop/YARN 之上的资源管理系统,数据和特征存储在上层的 HDFS/Hive 或其它 Hadoop 数据仓库,此外构建基于内存的分布式迭代计算框架,也可以使用 Spark 或者 TensorFlow 等主流框架,再上层构建完整的机器学习特征工程和模型训练的管道。

InfoQ:你认为一个机器学习从业人员和传统的应用工程师(程序员)最大的区别是什么?他们的能力侧重点各是什么?

张彭善:从机器学习的应用来看对于传统的应用工程师也提出了新的挑战,首先机器学习应用是一个融合了离线平台和在线平台的更加复杂的应用,机器学习从业者主要包括数据科学家和机器学习工程师,他们往往是围绕数据和优化目标来设计系统,而为了很好的达到优化目标和业务预期,实际机器学习从业者需要对业务、统计和机器学习以及工程领域都要有很好的理解,而他们的相对弱势是对于系统架构如可用性和服务化等的掌握。传统的应用工程师在这方面较有优势,工程能力是一个很好的基础,也可以帮助他们扩展到面向数据和业务的机器学习应用系统。

InfoQ:在 QCon 上海全球软件开发大会上,你会重点为参会者分享哪些技术点?

张彭善:这次也是我第一次作为出品人参加 QCon,出品专题是《机器学习应用与实践》,主要是由来自携程、PayPal、美团点评以及唯品金融的机器学习专家分享他们在各自公司运用机器学习技术提升业务价值的实践和经验。我觉得这些议题具有相当的代表性,各位专家也是从另一个角度来帮助我回答上面的一些问题。从应用出发,使用机器学习去驱动业务,不是为了用而用,也是出品这个专题的初衷。

2017-10-04 03:084409
用户头像

发布了 219 篇内容, 共 139.5 次阅读, 收获喜欢 191 次。

关注

评论

发布
暂无评论
发现更多内容

2019年移动开发,我的改变之旅

android 程序员 移动开发

2020年Android面试题汇总(中高级)(1)

android 程序员 移动开发

2019-金九银十多家BAT大厂Android面试真题锦集干货整理

android 程序员 移动开发

10道阿里Android岗必问题摆这儿了,你爱刷不刷!(附参考回答解析

android 程序员 移动开发

2018届android校招面试总结:百度,大疆,乐视

android 程序员 移动开发

固定价格项目能否敏捷?

Bruce Talk

敏捷 随笔 Agile

2020作为一个资深的Android开发者需要掌握哪些技能?

android 程序员 移动开发

2019-必看-Android-高级面试题总结

android 程序员 移动开发

12月面试ing-本以为学了个好找工作的Android开发,没想到又是坑---

android 程序员 移动开发

2019寒冬之下,作为一个android码农,是如何进入腾讯的?

android 程序员 移动开发

前端开发中使用纯函数提纯非纯函数

devpoint

JavaScript 纯函数 11月日更

2020-Android-面试重难点(万字篇),字节

android 程序员 移动开发

2020吊打面试官系列!Android大厂高级面试题 灵魂 100 问,你能答对多少?

android 程序员 移动开发

2020字节跳动安卓程序员视频面试,这五点一定有助你顺利拿到offer

android 程序员 移动开发

eBPF: 让云原生运维拥有超能力

俞凡

云原生 网络 ebpf

200行代码打造超越一线互联网公司的换肤架构

android 程序员 移动开发

2019中级Android开发面试解答之线程篇

android 程序员 移动开发

15年手持4个大厂offer的我,今天面试今日头条体无完肤

android 程序员 移动开发

攻击SSRF漏洞之Redis利用

喀拉峻

redis 网络安全 安全 信息安全 漏洞

2020上半年百度Android岗(初级到高级)面试真题全收录+解析

android 程序员 移动开发

反垄断专家如何看待区块链监管的发展方向

CECBC

北鲲云超算平台如何为生命科学研究提供数据归档与存储服务?

北鲲云

2019已经很冷,2020年Android工作或更难找——进大厂面试必备基础技能

android 程序员 移动开发

2020Android高级开发面试题以及答案整理,持续更新中~

android 程序员 移动开发

解决问题:net::ERR_CONTENT_LENGTH_MISMATCH 206 (Partial Content)

liuzhen007

11月日更

设计模式【3.2】-- JDK动态代理源码分析有多香?

秦怀杂货店

源码分析 动态代理

06 K8S之kubectl命令介绍

穿过生命散发芬芳

k8s 11月日更

算法入门-选择排序

ES_her0

11月日更

2019年百度Android面试题-公共技术点之-View-绘制流程

android 程序员 移动开发

2020对标阿里P8,最强学习路线:Android小白—

android 程序员 移动开发

dart系列之:dart语言中的变量

程序那些事

flutter dart 程序那些事 11月日更

落地机器学习前,我们应该思考清楚的几个问题_大数据_小盖_InfoQ精选文章