机器学习一日千里,处理思绪却从未变过--论如何设计机器学习系统
作者头像
  • 胡鑫瑞
  • 2019-12-04 09:11:15 6

导读

机器学习系统设计

机器学习系统设计题目,主要是考察一个人在系统设计上的能力。这是一种在国外非常流行的题型,尤其是在招聘中高级职位时,通常在算法编程测试后,会紧接着进行系统设计题目测试。

在国外,这类工程师被称为“Machine Learning Engineer”。而在国内,他们可能被称作算法工程师、数据挖掘工程师、机器学习工程师或深度学习工程师。这些职位和软件开发工程师(SDE)一样,都需要具备扎实的系统设计经验。

一位名叫Chiphuyen的海外资深人士在GitHub上整理了一份关于机器学习系统设计的资料,我在其中加入了一些个人经验和见解。这份资料主要分为三部分: - 机器学习系统的核心概念 - 系统设计案例,这些案例整理在我的GitHub和公众号“谷粒说数”上 - 27道系统设计练习题,这些题目可以在我的网站上找到

系统设计应关注的重点

系统设计题目不一定需要完美的解决方案,关键在于展示你的思考过程。以下是系统设计题目考察的主要方面: - 项目有哪些限制条件,哪些可行,哪些不可行 - 方案的优缺点,选择方案时考虑其利弊 - 主要功能及最终目标

系统设计题目通常比较复杂,原因在于: - 缺乏有效的评估方法 - 很多问题没有标准答案

理想的候选人应该具备以下能力: - 能够有效地分解问题,简化复杂问题 - 能够判断是否需要使用机器学习方案

生产环境与学术研究的不同

学术研究通常追求模型性能的提升,而不必考虑如何实际应用。而在生产环境中,模型的性能并不是唯一重要的因素,还需要考虑计算资源的限制。

作为开发者,始终要记住生产环境是最终目标。

需重点关注的四大问题

  • 数据收集与处理
  • 模型选择与评估
  • 再次实施时的改进之处

设计机器学习系统

作者将系统设计分为四个层次,我也按照这个思路进行改写。

项目准备

项目准备阶段主要从以下几个方面考虑: - 达成什么目标 - 项目限制条件 - 特殊情况处理 - 系统评价方法

数据流

机器学习更依赖于数据而非算法。数据收集、存储和处理是关键环节。

  • 数据收集:要考虑数据的可用性和质量
  • 数据存储:要考虑数据的位置、大小和存储结构
  • 数据处理:要解决数据转换、特征工程、数据归一化和缺失数据处理等问题

建模

在建模时,需要注意以下几点: - 简单模型优先 - 选择合适的基线模型 - 注意深度学习的需求和限制

模型调试

常见的调试问题包括: - 不收敛 - 过拟合 - 参数剧烈波动

调试建议: - 逐步增加复杂度 - 从小批量数据开始测试 - 使用随机种子保持结果的可重复性

服务部署

模型的最后一步是部署。这主要包括: - 用户反馈收集 - 模型效果评估 - 更新频率和个性化服务

经典案例学习

作者列举了10个经典的机器学习系统设计案例。其中,Airbnb搜索排序迭代过程和Instacart配送优化案例最为出色。

27道练习题

作者总结了27道系统设计练习题,并将其发布在一个专门的网站上,欢迎读者参与答题。

希望以上内容对你有所帮助。如果你有任何想法,欢迎在评论区留言交流。感谢你的支持!

    本文来源:图灵汇
责任编辑: : 胡鑫瑞
声明:本文系图灵汇原创稿件,版权属图灵汇所有,未经授权不得转载,已经协议授权的媒体下载使用时须注明"稿件来源:图灵汇",违者将依法追究责任。
    分享
机器一日千里学习系统思绪从未处理如何学习设计
    下一篇