AI 年度盘点与2025发展趋势展望,50+案例解析亮相AICon 了解详情
写点什么

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

  • 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:084404
用户头像

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

关注

评论

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

JDK1.8新特性(五):Stream,集合操作利器,让你好用到飞起来

xcbeyond

stream 集合 新特性 JDK1.8 JDK1.8新特性

应届生求职面试真的有那么难吗

xcbeyond

面试 应届生

Apache BeanUtils和Spring BeanUtils剖析

Bruce Duan

BeanUtils 浅拷贝和深拷贝

IDEA 插件: EasyCode 一键生成所需代码

Bruce Duan

idea插件 easycode 生成代码

ARTS 05 - 使用 Ecto.Migration 来做数据库迁移

jerry.mei

学习 算法 ARTS 打卡计划 函数式编程 Elixir

架构师训练营——请简述 CAP 原理

WW

MySQL 大表优化方案

Bruce Duan

MySQL优化

分布式锁用 Redis 还是 Zookeeper?

xcbeyond

redis zookeeper 分布式锁

架构师训练营 -- 第七周学习总结

花花大脸猫

技术革新产业变革新动能

CECBC

SpringBoot 使用 jasypt 对配置项进行加密

hungxy

Java springboot jasypt

写一个 web 性能压测工具

WW

记一次西安thoughtworks的面试经历

xcbeyond

面试 thoughtworks

如何保证消息不丢失?处理重复消息?消息有序性?消息堆积处理?

Bruce Duan

消息队列 保证消息不丢失 处理重复消息 消息有序性 消息堆积处理

什么?还没有自己的域名?

北漂码农有话说

ARTS打卡 第8周

引花眠

ARTS 打卡计划

自从用完Gradle后,有点嫌弃Maven了!速度贼快!

xcbeyond

maven Gradle

MyBatis几种好用的写法

Bruce Duan

MyBatis标签

Mybatis二级缓存,你确定要用么?

xcbeyond

mybatis 二级缓存 一级缓存

LeetCode 144. Binary Tree Preorder Traversal

liu_liu

算法 LeetCode

JVM系列之:详解java object对象在heap中的结构

程序那些事

Java JVM GC JOL

两个指针缩小范围算法,CQRS 命令查询职责分离模式 John 易筋 ARTS 打卡 Week 09

John(易筋)

ARTS 打卡计划

使用HSDB 查看jvm内存

引花眠

架构师训练营作业 (第七周)

默默

LeetCode 565. Array Nesting

liu_liu

算法 LeetCode

MinIO 简介和搭建一个对象存储服务

耳东@Erdong

Minio store Object store

罪羊树——暴力也是种优雅

烫烫烫个喵啊

算法 二叉树 替罪羊 平衡二叉树

JDK1.8新特性(四):函数式接口

xcbeyond

新特性 函数式编程 JDK1.8 JDK1.8新特性

Docker容器中一定要避免的10件事

xcbeyond

Docker 避坑

week7 总结 性能测试

Geek_z9dmvw

性能测试

满山李子

极客大学架构师训练营

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