129 | 数据科学家基础能力之系统
洪亮劼
该思维导图由 AI 生成,仅供参考
对于初学人工智能的工程师或者数据科学家来说,在知识积累的过程中,“系统”往往是一个很容易被忽视的环节。特别是非计算机科学专业出身的朋友,一般都没有真正地建立过“系统”的概念,在今后从事人工智能的相关工作时,很可能会遇到一些障碍。
今天我想给你分享一下,作为人工智能工程师和数据科学家,需要建立的关于“系统”的最基本认知。这些认知能够帮助你把书本的理论知识和现实的应用场景快速结合起来。
理解管道(Pipeline)
在很多人工智能初学者的认知中,机器学习的流程是这样的。有一个已经准备好的数据集,这个数据集里面已经有了各种特征以及所对应的标签或者响应变量。这个时候,你需要做的就是利用这个数据集和一些现成的机器学习工具包,来训练一些机器学习模型。模型训练好以后,就可以计算一些已知的评估指标了,比如准确度、精度等等。
这是一般教科书和课程上介绍的标准机器学习流程,也是很多机器学习论文中的实验环境。遗憾的是,这个静态的流程并不适用于工业级的数据产品。
要支持工业级的人工智能产品,一个最基本的概念就是,你需要搭建一个管道让你的环境是动态的、闭环的。在英文的语言背景里,“管道”这个词很形象地说明了这个环境的特点。我们把数据想象成“管道”里的水,这里面的一个核心思想,就是数据从一个环节到下一个环节,源源不断。我们再把最终的产品,也就是这个管道的末端,和最开始的数据采集部分,也就是这个管道的开始端,结合起来思考,这就是一个闭合的环路。
理解数据产品的核心,就要理解它是一个闭合环路。几乎关于数据产品的一切难点、问题以及解决方案都可以从这个闭合环路中产生。从一个静态的机器学习流程到一个动态的管道似的闭合环路,这是一个质变,对整个环节上的所有步骤都有全新的要求。
我这里就拿数据集来举个例子。静态的流程中,我们不需要太过关注这个数据集的来源。甚至采集数据集的代码或者脚本都可以是一次性的,可以不具备重复使用的价值。但是这种情况在管道的环境中是不可能的。
在管道中,采集数据的可靠性和可重复性是非常重要的步骤,这就对采集数据所采用的代码有不一样的要求。这部分代码需要被反复检验,每一步都需要人工智能工程师和数据科学家进行检验。如果我们把这个例子扩展到数据管道的其他部分,就可以很清楚地看到,数据管道对于构建一个机器学习流程所带来的根本变化。
管道的另外一个重要特性是自动化,一个不能自动化的管道是不能被称为管道的。这里的自动化有两层意思,一层意思是指数据本身可以被自动采集、整理、分析,然后自动流入机器学习部分,有结果后自动输出并能被线上的系统使用;另一层意思是指,每一个环节本身都不需要人工干预,或者仅需极少数的人工,自身可以高可靠地运行。由此可见,管道的自动化对每个环节的技术选择和实现都有非常高的要求。
现代互联网公司中,每个团队,甚至成立专门的团队,一般都会针对机器学习管道开发工具平台,使管道的灵活度、自动化、可靠性有足够保障。对于初学者而言,尝试从管道的角度去理解问题,从整个系统的角度来认识产品开发过程,认识机器学习流程,才有可能设计出能真正满足线上需求的技术方案。
理解线上和线下的区别
了解了一个数据系统的闭合回路以后,很自然地,就会出现下一个问题,这也是一个核心的系统级问题,在这个管道中,哪些部分是在“线上”,哪些部分又在“线下”呢?
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
数据科学家和人工智能工程师需要理解系统的基本认知,以帮助将理论知识和现实应用场景快速结合起来。在工业级的数据产品中,理解数据管道的重要性至关重要。传统的机器学习流程并不适用于工业级产品,而需要建立动态、闭环的数据管道。数据产品的核心即是理解它是一个闭合环路,几乎所有关于数据产品的难点、问题和解决方案都可以从这个闭合环路中产生。在管道中,数据采集的可靠性和可重复性变得非常重要,需要对采集数据的代码进行反复检验。此外,管道还需要具备自动化的特性,包括数据的自动采集、整理、分析,以及每个环节的高可靠性自动运行。初学者需要从管道的角度去理解问题,从整个系统的角度来认识产品开发过程和机器学习流程,以设计出能真正满足线上需求的技术方案。 理解线上和线下的区别是初学者迈向工业级应用的又一个重要的步骤。线上往往是指对于交互性很强的互联网产品,响应时间非常短暂,而线下则是相对耗时的运算。初学者需要学会把握两者之间的转换之道,对于进阶至关重要。在设计一个系统时,需要考虑哪些部分放到线上,哪些部分放到线下,这成为机器学习架构的核心区别。通过一个检测垃圾邮件系统的例子,分析了线上和线下的分割情况,以及线上结果和模型的事先计算可能带来的问题。 总的来说,本文强调了数据科学家和人工智能工程师需要掌握的关于系统基础的两个核心概念:现代数据流程是一个动态的闭环管道,以及理解线上和线下的区别至关重要。这些概念对于设计能真正满足线上需求的技术方案至关重要。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《AI 技术内参》,新⼈⾸单¥98
《AI 技术内参》,新⼈⾸单¥98
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(8)
- 最新
- 精选
- udisyue置顶我们先考虑一个商品推荐模型所需要的数据有哪些。对于商品推荐来说,它的数据来源应该有两种,一是用户的搜索记录,二是用户的购买记录。搜索记录的数据表示的是用户想买什么,而购买记录表示的是用户的购买结果。推荐商品的时候,如果用户已经购买过了商品,那么即使我们的模型非常完美预测了用户的购买意向,也并不能产生任何价值。而只有那些进行了搜索并且没有购买的用户才更值得作为数据进行采集。而用户购买了商品也并非完全没有价值,应当进入另一阶段用无监督的算法来进行学习。所以我在线上除了执行推荐的结果匹配,还要在用户执行购买后把他的订单数据更新到线下训练集。线下训练集扩充后再执行验证,矫正模型。2017-10-214
- RZ_diversity置顶线上:对于每一个用户的搜索历史记录,商品历史点击率等数据保存在线上数据库中。这些数据要定期输入到线下已经训练好的模型中来对参数进行更新。线下:推荐模型的训练,评估过程。这种思路其实和文中提到的垃圾邮件系统解决方案是类似的。 这里面存在的问题是,这种线上线下分割方法能够确保这个系统是一个pipeline吗?是否不需要太多人工干预?2017-10-195
- Momo恰好是做推荐系统的,来回答一下课后题,线上部分只有实时的召回(比如用户触发了某个关键词)和排序的预测过程(用一些简单的实时特征,再加一些提前准备好的只需要查询的离线特征),而其他部分,比如召回集合的规则、离线召回、排序模型的训练等等都是线下。顺便回应一下「小凯」的提问,这么接地气的内容,不是工业界的人根本写不出来,恐怕在书本里是找不到的。
作者回复: 非常好的回答。
2017-11-0330 - suke请问 您说的管道的最终产品 和管道的源头 是如何联系在一起形成闭环的 能再详细解说一下么
作者回复: 主要是需要依靠实验和测量不断对产品的创新进行推进。
2017-12-02 - 吴文敏最简单的方式线上从Aerospike这类数据库中读取用户的推荐结果,其余全部放到线下2017-10-192
- 小凯关于机器学习的“系统” “管道”概念,理论,应用有没有相关参考书,或者参考文献?2017-10-191
- 杯莫停能用时间解,就少引入状态,时间解不了,再考虑保存状态,状态的维护和迭代成本都很高。一些伪状态:各种模型参数,可以看作内容效果向用户体验的妥协,能小则小。2018-08-09
- 范深在线和离线特征与打分预测模块放到线上; 数据收集、清洗与模型训练和评估放到线下。2017-10-21
收起评论