美文网首页
机器学习与工程化

机器学习与工程化

作者: Roliy | 来源:发表于2018-02-04 17:52 被阅读0次

前言

从接触机器学习/深度学习一开始,我们看到的就是各种数学公式,算法和模型。毫无疑问,这些理论性的工作是ML的坚实基础,也是非常值得深究的领域。但是,这里,我想多说一些点关于机器学习工程化的东西。在工业界,机器学习是用来解决实际问题的,比较常见的像广告CTR预估,推荐系统等。相对算法来说,机器学习的工程化工作,同样决定了这个模型的价值,而且影响不小。

在线服务

大多数刚接触ML的同学,对ML的整个流程认识其实是不全的。缺的这一环,就是模型上线,也就是模型对外提供预测的服务。模型真正实时的对外提供服务,才意味着发挥着作用和价值。

简单来说,机器学习的在线服务就是一个server使用模型,根据实时提交来的数据,返回predict的结果。跟所有的在线服务一样,它面临着同样的问题,延迟,吞吐量和稳定性。即使有一个非常准确的模型,它的判断逻辑非常复杂,每一次predict都会带来巨大的开销,那这个模型也是无法在线上使用的。基于这个情况,简单的LR模型,是工业界比较青睐的模型,尽管它准确性比其他复杂模型稍差一点,但是在线服务的性能好,能带来更多的收益。

那么我们在这方面的工程化需要关注什么呢?第一,和其他在线服务一样,关注它的各个性能指标,如95、99延迟等等。第二,如何提前知道一个模型的性能指标。这里性能并不是指AUC,准确率这类,而是影响着predict的指标,比如特征维数,模型大小等。模型的大小(对于LR模型来说,其实也是特征维数)影响了加载时的gc,查找权重的时间开销。LR模型做预测时,相当于就是拿特征去查表,然后得到各个特征的分数,求和。主要的开销就是查表。工程化需要做的就是,在确定模型上线会对线上服务带来影响地情况下,拦截住模型更新,这需要是一种自动化的工作。

数据的管理

类似的,大多数刚接触ML的同学都是从一个干净的数据开始自己的ML之旅的。这样的坏处就是,让人忽略了一个重要的事情,数据源可能会有问题。

一个发挥着巨大作用的机器学习系统,往往它是每天不断更新的,我们称之为“自学习”。每天产生了大量的上游数据(简便起见,称之为数据源),这些数据喂到了一个旧的模型,得到一个更好的新的模型。每天的新的数据会不会出现问题呢?答案,当然会。这些数据时时是在变化的,它受用户的请求而变化,也受上游系统的逻辑而影响。对于我们(消费这些数据的人)来说,我们需要做的是,如何最快地检测上游数据出现问题,避免脏数据污染当前的模型。当然,污染之后,如何恢复也是一个工程上需要考虑的问题。我们需要了解数据源,知道它的数据规模、分布、极值等等统计指标,在消费它们之前发现是否有异常。是的,这需要工程化,自动地完成。

前面提到了,当模型被污染了,我们需要快速恢复。最基本的,我们要有快速回退模型版本的机制。其次,我们要感知和管理数据的版本,当数据恢复时,通过一整套操作,切入到一个较早的时间点,重新训练,更新。

我们可以将数据源,特征数据,模型都看成是数据,那么,我们需要做的管理工作就很多了,当然,最后能做到(功能)的也很多。

线上线下的一致性

一致性非常重要,它意味着,线下训练的模型实实在在地能在线上起作用。举个例子,假设离线训练时,拿到的某个数据和线上拿到的不一样,同一个用户,线下标记为男,线上拿到的是女,那这个模型在predict的时候,在“性别”这个特征上肯定是没用了。线上线下不一致的原因有很多,我们需要做的是,从工程上消除部分不一致,如线上线下代码复用,代码版本管理(线上线下版本同步),数据重构只存一份(备份另说)等等。另外,工程上,我们需要提供发现不一致的机制。一些不一致比较细微,宏观上并不能发现,但是实际上它却实实在在的在影响着效果,长期下来,带来的损失还是比较大的。

相关文章

  • 机器学习与工程化

    前言 从接触机器学习/深度学习一开始,我们看到的就是各种数学公式,算法和模型。毫无疑问,这些理论性的工作是ML的坚...

  • 为什么我们需要机器学习平台?

    整个机器学习的工程化落地过程,掺杂着很多与机器学习本身不很相关,却和基础设施、其他工程领域强相关且通用的事情。比如...

  • 机器学习—路线图

    机器学习数据处理步骤: 机器学习基础与实践(一)----数据清洗 机器学习基础与实践(二)----数据转换 机器学...

  • Python3 机器学习简明教程

    1 机器学习介绍    1.1 什么是机器学习    1.2 机器学习的应用    1.3 机器学习基本流程与工作...

  • 机器学习概述与算法介绍(二)

    机器学习概述 机器学习基本概念 机器学习基本流程与工作环节 机器学习中的评估指标 机器学习算法一览 3. 机器学习...

  • fir.im Weekly - 人人都需要的IT技能图谱

    AlphaGo 与李世石的人机世纪大战落下帷幕,不禁让人思考《失控》 中说道的 “机器正在生物化,而生物正在工程化...

  • 什么是深度学习

    1.1 人工智能、机器学习与深度学习 人工智能 > 机器学习 > 深度学习 即,人工智能包括机器学习,机器学习包括...

  • 人造和天生

    生物和机器正在形成一种新生物文明。机器,正在生物化;而生物,正在工程化。 在生物和机器之间,最终是生物逻辑取得...

  • 机器学习入门

    机器学习:发展与未来 人工智能 > 机器学习 > 深度学习 > 神经网络 多种机器学习技术:深度学习,强化学习,蒙...

  • 第一篇 机器学习概述

    主要内容 1 什么是机器学习 2 机器学习分类 3 机器学习的挑战 4 测试与验证 开始 1 什么是机器学习 来自...

网友评论

      本文标题:机器学习与工程化

      本文链接:https://www.haomeiwen.com/subject/dcwmzxtx.html