随着机器学习(ML)成为每个行业的重要组成部分,对机器学习工程师(MLE)的需求急剧增长。MLE需要将机器学习技能与软件工程专业知识相结合,为特定应用程序找到高性能的模型,并应对出现的实施挑战——从构建训练基础架构到准备部署模型。在新的机器学习团队中,遇到最常见的障碍之一是工程师习惯传统软件工程的开发过程,而开发新ML模型的过程从一开始就是非常不确定的,需要不断的尝试才能找到一个比较合适的模型。
许多类型的专业人员都面临着类似的情况:软件和商业开发人员,寻求产品市场契合的初创公司等,这些职业中的每一个都采用了一个共同的框架,以帮助团队高效地工作:软件开发中的agile/scrum,初创公司和美国空军的OODA环。MLE同样可以遵循类似的框架来应对不确定性并快速开发出优质的产品。
ML工程环在本文中,我们将描述ML的“OODA环”的概念:ML工程循环,其中ML工程师迭代地
- 1.分析
- 2.选择一种方法
- 3.实现
- 4.测量
快速有效地发现最佳模型并适应未知的环境。此外,我们将为每个阶段,以及优化过程给出具体的提示。
MLE环
ML团队的成功通常意味着在给定的约束条件下提供高性能模型。例如,实现高预测准确性的模型,同时还受到内存使用、预测时间等约束。性能由与最终产品成功最相关的指标定义,无论是准确性、运行速度、输出多样性等。简单起见,本文选择将“错误率”最小化作为性能指标。
当刚开始确定新项目的范围时,就应该准确定义成功的标准,然后将其转换为模型指标。在产品方面,服务需要达到什么样的性能水平?例如,如果在新闻平台上向个人用户推荐5篇文章,我们需要多少相关内容,以及如何定义相关性?鉴于此性能标准和拥有的数据,可以构建的最简单的模型是什么?
ML工程环的目的是围绕开发过程设置一个死记硬背的框架,简化决策过程,专注于其中最重要的步骤。当不确定性增加时,即使是最有经验的工程师,这个框架仍然是非常有价值,例如,当模型意外地无法满足要求时、团队的目标突然改变等情况。
入门要引导下面描述的循环,您应该从一个涉及非常少的不确定性的最小实现开始。通常我们希望尽快建立足够的系统,以便我们可以评估其性能并开始迭代开发。这通常意味着: 设置训练、开发和测试数据集,以及构建好一个简单的模型。
例如,如果要构建一个树木探测器来测量一个地区的树木种群,可能会使用类似的Kaggle 竞赛中的现成训练集,以及来自目标区域的手工收集的一组照片用于开发和测试集。然后可以对原始像素进行逻辑回归,或者在训练图像上运行预训练网络(如ResNet)。此时的目标不是一次性地完成项目,而是开始迭代周期。以下是一些有所帮助的提示:
提示关于测试集:
- 由于团队的目标是在测试集上表现良好,所以测试集应该反映产品或业务的需求。例如,如果正在构建一个应用程序来检测自拍的皮肤状况,请随意对任何一组图像进行训练,但要确保测试集中包含光线不足且质量差的图片。
- 更改测试集会改变团队的目标,因此尽早修复测试集并对其进行修改以反映项目、产品或业务目标的变化会很有帮助。
- 测试集合训练集大小都设置足够大,以使获得的性能指标足够准确,以便在模型之间做出良好区分。
- 尽可能地为开发集和测试集创建对的标签或注释。错误标记的测试集等同于错误指定的产品要求。
- 了解人类在测试集上的表现如何,或者现有/竞争系统的表现如何,这将为你提供最佳的错误率,即目前可以实现的最佳性能。
- 最终目标是使测试性能尽可能接近我们的猜测,以获得最佳性能。 关于开发和训练集:
- 开发集是团队的测试性能代理,可用于超参数的调整。因此,它应该与测试集有相同的分布。一个好方法是首先收集一大堆样本,然后将它们随机分成开发集和测试集。
- 如果认为生产数据会产生噪音,请确保通过使用数据增强或降级来解决训练集中的噪音问题。
一旦获得初始原型后,应检查其在训练、开发和测试集上的性能,评估测试性能与产品所需性能之间的差距。开始迭代开发模型了!
分析阶段就像医疗诊断一样:配备了一套可以执行的诊断程序,目标是针对限制模型性能的因素提出最可能的诊断。在实践中,可能会有许多不同的重叠问题导致当前的结果。不要试图全面了解每一个缺点,而是要了解最重要的因素,因为许多小问题会随着模型改进而改变甚至消失。
下面,我们列出了一组常用的诊断流程。
每次分析的一个良好起点是查看训练、开发和测试性能。建议在每次实验结束时使用代码执行此操作,以使自己习惯于每次查看这些数字。一般而言,训练集错误
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?