为什么机器学习项目非常难管理?

在 Azure ML 上用 .NET 跑机器学习 .NET ML 你在用了吗? 阅读详情

作者:Lukas Biewald

编译:ronghuaiyang

导读

我看到过很多公司尝试使用机器学习 —— 有些大获成功,有些惨败。一个不变的事实是,机器学习团队很难设定目标和期望。这是为什么呢?

1. 很难预先分辨出什么是难的,什么是容易的

是在国际象棋中击败卡斯帕罗夫更困难,还是捡起棋子并移动棋子更困难?计算机在二十多年前打败了国际象棋世界冠军,但是可靠地抓取和举起物体仍然是一个未解决的研究问题。人类不擅长评估什么对人工智能来说是困难的,什么是容易的。即使在一个领域中,性能也可能有很大差异。预测情绪的准确性有多高?在影评中,有大量的文本和作者很容易搞清楚他们的想法,现在能期待的准确率是90-95%。在推特上,两个人在80%的情况下对一条推文的观点是一致的。在推文中,只要是关于航空公司的,那么总是把这条推文的情绪预测成负面的,就可以达到95%以上的准确率。

度量标准也可能在项目的早期提升很多,然后突然碰壁。我曾经举办过一场Kaggle竞赛,全世界成千上万的人竞相为我的数据建模。在第一周,准确率从35%上升到65%,但在接下来的几个月里,准确率从未超过68%。68%的准确率显然是数据对于最先进的机器学习技术的限制。那些在Kaggle竞赛中竞争的人非常努力地获得了68%的正确率,我确信这是一个巨大的成就。但在大多数情况下,65%和68%是完全无法区分的。如果这是一个内部项目,我肯定会对结果感到失望。

我的朋友Pete Skomoroch最近告诉我,作为一名研究机器学习的数据科学家,在工程部门工作是多么令人沮丧。工程项目通常会向前推进,但机器学习项目可能会完全停滞。花一周时间对数据进行建模,结果可能(甚至很常见)没有任何改进。

2. 机器学习很容易以意想不到的方式失败.

机器学习通常工作得很好,只要你有大量的训练数据以及你在生产中运行的数据看起来很像你的训练数据。人类非常善于从训练数据中归纳归纳,因此我们对此有着可怕的直觉。我做了一个小机器人,带着摄像机和一个视觉模型,这个模型是根据从网上获取的成百万的ImageNet图像制作的。我对我的机器人相机上的图像进行了预处理,使其看起来像来自网络的图像,但准确性比我预期的要差得多。为什么?网络上的图片往往会针对目标物体进行构图,但是我的机器人不一定会像人类摄影师那样直视一个物体。人类甚至可能都没有注意到这种差异,但使用现代深度学习网络的时候就会非常痛苦。有很多方法可以处理这种现象,但我之所以注意到它,只是因为它的性能下降非常严重,我花了很多时间调试它。

更厉害的是,导致性能下降的细微差异很难被发现。接受《纽约时报》训练的语言模型不能很好地概括社交媒体文本。我们可以预料到。但很显然,从2017年开始接受文本训练的模型,在2018年写的文本中表现不佳。上游分布随时间以多种方式变化。当对手适应了欺诈模型所做的事情时,欺诈模型就会完全崩溃。

3.  机器学习需要大量相关的训练数据.

每个人都知道这一点,但这是一个巨大的障碍。如果你能够收集并标记大量的训练数据,计算机视觉可以做很多惊人的事情。对于某些用例,数据是某些业务流程的副产品。这就是机器学习真正发挥作用的地方。对于许多其他用例来说,收集训练数据是非常昂贵和具有挑战性的。许多医疗用例对于机器学习来说似乎是完美的 —— 使用许多微弱的信号和清晰的结果来做出关键的决策 —— 但是数据由于重要的隐私问题而被锁定,或者一开始就没有被统一的进行收集。

许多公司不知道从哪里开始投资收集训练数据。这是一项重要的工作,很难预先预测该模型将如何工作。

解决这些问题的最佳实践是什么?

1. 多注意你的训练数据.

看看这个算法对它所训练的数据进行错误分类的情况。这样的错误几乎总是标注错误或者一些边界样本。不管怎样,你都想了解他们。让每个构建模型的人都查看一下训练数据并自己标注一些训练数据。对于许多用例来说,一个模型不太可能比两个独立的人达成一致的效果更好。

2. 先做端到端的工作,然后一次改进一件事.

从可能有效的最简单的事情开始,然后部署它。你会从中学到很多。过程中任何阶段的额外复杂性都会改进研究论文中的模型,但很少会改进现实世界中的模型。每一个额外的复杂性都需要验证。

将一些东西交到最终用户手中,可以帮助你尽早了解模型可能工作得有多好,并且它可能会带来一些关键问题,比如模型正在优化的内容与最终用户想要的内容之间的分歧。它还可能使你重新评估你正在收集的训练数据的类型。最好能尽快发现这些问题。

3. 寻找优雅的方法来处理不可避免的算法失败的情况.

几乎所有的机器学习模型在相当长的时间内都会失败,如何处理这一问题绝对是至关重要的。模型通常有一个可以使用的可靠的置信度评分。使用批处理过程,你可以构建包含人在里面的循环系统,将低可信度的预测发送给操作员,使系统能够可靠地端到端工作,并收集高质量的训练数据。对于其他用例,你可以使用一种标记潜在错误的方式,或者对最终用户来说不那么恼人的方式,来呈现低可信度的预测。

下面是一个没有被妥善处理的失败例子。微软没有预料到他们的Tay机器人能多快从推特上的喷子那里学会不良行为。

英文原文:https://medium.com/@l2k/why-are-machine-learning-projects-so-hard-to-manage-8e9b9cf49641

(完)


31、机器学习项目管理:从提案到生产部署的全面指南 本文是一份全面的机器学习项目管理指南,从项目提案到生产部署的各个阶段进行了详细阐述。涵盖了项目前期准备、数据管理、模型设计与选择、测试与部署、团队协作与沟通、持续监控与优化等关键环节,并结合实际案例和行业趋势,为读者提供了一套系统的方法论和实践建议,旨在提高机器学习项目的成功率,为企业创造更大的价值。 阅读详情

相关推荐

1、机器学习项目管理:从设计到部署的全流程指南

本博客全面介绍了机器学习项目管理的全流程,从项目前期准备、需求分析,到模型开发、测试选择,再到系统部署与后期维护。通过详细的阶段划分和案例分析(如自行车店项目),为读者提供了一套系统的方法应对机器学习项目中的挑战。同时,博客还强调了数据质量、模型性能、伦理问题等关键注意事项,为从业者提供了实用的指导和启示。

pink的博客 80

如何管理和组织一个机器学习项目

本文主要分享一些组织管理机器学习项目的实践经验。 Python Python 是机器学习项目开发的主要使用语言之一。它包含了大量的库/包可以用于机器学习: numpy:适用于多维数组、数值计算。常用于数据处理。 pandas:数据分析常用库。pandas dataframes本质上是numpy数组,它用描述性字符串作为行和列标签。数据在pandas dataframes里可以很容易进行排序、过滤、分组、连接等操作,这对数据处理很有用。 PyTorch:用于构建神经网络。包括许多预训练模型和计算机视觉数据.

deephub 5467

C# ML.NET机器学习入门:5步轻松搞定,代码详解+实战演练

通过以上五个步骤,你已经成功地使用C#和ML.NET创建并使用了一个简单的机器学习模型。是不是感觉比想象中简单多了?其实,机器学习并没有那么高深莫测,只要你愿意动手实践,就能轻松上手。希望这篇教程对你有所帮助,如果你有任何问题或建议,欢迎在评论区留言交流!接下来,你可以尝试使用更多的数据集和不同的任务类型,进一步提升你的机器学习技能。加油,未来的机器学习专家!🌟✨😊✨。

java专栏 4762

管理机器学习项目

管理机器学习项目 一. 目录 传统的软件项目管理 目前的现状 机器学习项目管理 二、传统的软件项目管理 传统的软件项目管理和开发流程已经非常成熟。大致的流程如下: 由运营、产品进行最初的功能策划,进行可行性分析 由项目经理召集相关人员进行产品启动会,确定产品运营、开发、测试等相关负责人 由产品人员讲解各个功能模块的需求,进行需求评审;由各个开发、测试、数据、运维等了解和明确需求 架构师和开发...

chunyun0716的专栏 634

机器学习ML.NET

是用于 .NET 的跨平台开源机器学习 (ML) 框架。ML.NET 允许开发人员在其 .NET 应用程序中轻松构建、训练、部署和使用自定义模型,而无需开发机器学习模型的专业知识或使用 Python 或 R 等其他编程语言的经验。该框架提供从文件和数据库加载数据,支持数据转换,并包含许多 ML 算法。借助 ML.NET,您可以针对(如分类、预测和异常检测)训练模型。您还可以在 ML.NET 中使用 TensorFlow 和 ONNX 模型,这使得框架更具可扩展性,并扩展了支持的方案数量。

A_nanda的博客 5528

ML:MLOps系列讲解之《CRISP-ML (Q)ML生命周期过程—了解机器学习开发的标准过程模型—业务和数据理解→数据工程(数据准备)→ML模型工程→评估ML模型→模型部署→模型监控和维护》解读

​ ML:MLOps系列讲解之《CRISP-ML (Q)ML生命周期过程—了解机器学习开发的标准过程模型—业务和数据理解→数据工程(数据准备)→ML模型工程→评估ML模型→模型部署→模型监控和维护》解读 目录 MLOps系列讲解之《CRISP-ML (Q)ML生命周期过程—了解机器学习开发的标准过程模型》解读 6、CRISP-ML (Q)ML生命周期过程—了解机器学习开发的标准过程模型。 6.1、Business and Data Understanding业务和数据理解 6.2、Data Eng

头部AI社区如有邀博主AI主题演讲请私信—心比天高,仗剑走天涯,保持热爱,奔赴向梦想!低调,专注,谦虚,自律,反思,成长,还算比较正能量的博主,公益免费传播…内心特别想在AI界做出一些可以推进历史进程影响力的技术(兴趣使然,有点小情怀,也有点使命感呀 3026

为什么选择ml-metadata?探索机器学习元数据管理的强大功能

ml-metadata是一款专为机器学习开发者和数据科学家打造的元数据管理库,用于记录和检索与ML工作流相关的元数据。无论是训练数据的来源、模型的训练参数,还是实验的结果追踪,ml-metadata都能提供高效可靠的管理方案,帮助你轻松掌控机器学习项目的全生命周期。 ## 什么是机器学习元数据管理? 在机器学习项目中,元数据是描述数据、模型、实验和工作流的关键信息。例如: - 训练模型使用的数

gitblog_00701的博客 991

C#与机器学习:ML.NET库应用的魔法实验室

机器学习是一种人工智能技术,它允许计算机通过学习数据来提高性能,而不需要明确编程。简单来说,机器学习就像是训练你的魔法宠物,让它能够识别模式和做出预测。ML.NET是一个开源的机器学习框架,专为.NET开发者设计。它允许开发者轻松地将机器学习集成到他们的应用程序中,支持多种机器学习任务,如分类、回归、聚类等。定义你的数据模型,包括输入和输出。0set;1set;2set;

java专栏 1659

ML-Crate:机器学习项目集散地

ML-Crate:机器学习项目集散地 项目介绍 ML-Crate 是一个开源项目,旨在成为机器学习爱好者的首选资源库,提供一个集中式的平台,让热衷于机器学习的开发者和学习者可以找到并参与各种有趣的机器学习项目。这个项目库集合了各种机器学习相关的项目,涵盖了从数据预处理到模型训练再到结果可视化的全过程。 项目技术分析 ML-Crate 项目使用多种编程语言和工具,主要包括 Python 以及流行的机...

gitblog_00431的博客 1002

机器学习工程实践:可靠,高效和可持续的机器学习项目管理和工具

机器学习工程实践 可靠,高效,可持续管理机器学习项目工具介绍与实践。

华大HC32F460 TCP Client 实验

华大HC32F460 TCP Client 实验

ZhuoWuKeJi的博客 649

Unity机器学习1 ML-Agents环境搭建

第一步,创建一个新的Unity项目 我起名为MLApp 第二部,首先安装python3.7 https://www.python.org/downloads/windows/ py exit() 第三步,Unity项目中创建虚拟环境的脚本运行库模块 cd UnityProject\MLApp py -m venv venv 完成后可以看到多了一个venv目录。 通过activeate.bat激活环境脚本,不会影响到其他的python的运行环境。 我们运行他。 运行后: 安装数据流执行计算的开源图,首

thinbug的专栏 2873

一窥Memory测试算法及自我修复机制

摘要 为了满足新一代设备的需求,Memory的大小每三年就会增加4倍。深亚微米设备包含大量面积更小、访问速度更快的Memory。针对此类设计制定自动测试策略可以减少ATE(自动测试设备)的时间和成本。 内存故障的行为与经典的“Stuck-At”故障不同。因此,Memory的故障模型(由于其阵列结构)与标准逻辑的设计也是不同的。Memory测试除了进行故障检测和定位,还可以实现用冗余单元对...

路科验证 2万+

Open3D-ML 项目使用教程

Open3D-ML 是一个开源项目,它基于 Open3D 库,扩展了机器学习工具,用于处理 3D 数据。以下是项目的目录结构及简要介绍: - `docs/`:包含项目的文档。 - `examples/`:存放了一些示例代码,用于演示如何使用 Open3D-ML。 - `ml3d/`:核心代码目录,包含了模型、数据集、管道等模块。 - `requirements-xxx.txt`:不同机器学习框架...

gitblog_01069的博客 876

从零开始安装pytorch(包含GPU和CPU版本的安装)

Pytorch是。

qiaoxinyu1989的博客 8万+

Zemax光学设计——单透镜设计

(1)在镜头数据编辑器中面2那一栏中的“曲率半径”栏右侧的方格中单击,弹出“在面2上的曲率解”对话框(2)将对话框中的求解类型设为“F数”(3)将“F/#”设置为10设置完成后,其中的一些数据会发生变化在初始结构中,透镜的曲率半径和厚度未知,,这些参数需要软件自动优化得到,但可以使用透镜后表面上边缘厚度解得到近轴焦平面的位置在透镜后表面的厚度上单击鼠标右键,选择边缘光线求解类型,它表示近轴边缘光线会自动在下一个表面上聚焦并确定距离值。

yangSHU21的博客 2万+

applied-ml数据版本控制:ML项目的数据管理和追溯终极指南

在机器学习项目中,数据管理往往是最容易被忽视却至关重要的环节。applied-ml项目汇集了业界顶尖的数据科学实践,展示了如何通过数据版本控制实现高效的数据管理和追溯。本文将为您揭示数据版本控制在ML项目中的核心价值,并指导您如何快速上手。 ## 为什么数据版本控制如此重要? 在传统软件开发中,代码版本控制已是标准实践。但在机器学习领域,数据同样在不断变化和演进。**数据版本控制**让您能够:

gitblog_00128的博客 1084

PyTorch版Unet训练后别只看loss:手把手教你计算并可视化多类别语义分割的mIoU(附完整代码)

本文详细介绍了在PyTorch中使用Unet模型进行多类别语义分割后,如何计算和可视化mIoU(mean Intersection over Union)以全面评估模型性能。通过完整的代码示例和实用技巧,帮助开发者从loss优化转向更精准的区域分割评估,特别适用于医学图像分析等关键场景。

weixin_30906185的博客 435

【亲测免费】 ML Collections 项目下载及安装教程

ML Collections 是一个专为机器学习用例设计的 Python 集合库。它提供了 `ConfigDict` 和 `FrozenConfigDict` 两种数据结构,支持通过点访问嵌套元素,适用于实验和模型的配置管理。该项目由 Google 开发并开源,旨在简化机器学习实验的配置管理。 ## 2. 项目下载位置 你可以通过以下链接访问 ML Collections 项目的 GitHub

gitblog_01204的博客 1308

Linux系统安全学习手册

Linux反弹shell Linux系统应急响应 Linux服务器安全加固 Linux下的用户、组和权限 Linux中的gcc Linux中su和sudo的用法和区别 Linux系统python2与python3共存 Linux中grep工具的使用 Linux中环境变量的设置 Linux中常见的150个命令(干货) Linux中编写Shell脚本 LNMP环境搭建Wordpress博客 LAMP环境搭建一个Discuz论坛 Linux运维比较常用的一些脚本 Linux系统中安装软

谢公子的博客 7534

如何实现在Go语言中替换程序自身

总结起来,我们可以通过将新的程序二进制文件写入磁盘,并在运行时启动这个新的程序来实现在Go语言中替换程序自身。在Go语言中,有时候我们需要在程序运行时替换程序自身,例如更新程序版本或者进行热重启。本文将介绍一种正确的方式来实现在Go语言中替换程序自身的方法,并提供相应的源代码示例。此外,替换程序自身可能会导致正在运行的程序产生意外行为或终止,请谨慎使用,并确保在合适的时机进行替换操作。实现替换程序自身的关键是将新的程序二进制文件写入到磁盘,并在运行时启动这个新的程序。函数启动新的可执行文件,并在后台运行。

HoUnix的博客 289
上一篇: 分享一些面试中的经验和心得
下一篇: 多目标跟踪MOT16数据集和评价指标
Wang_AI
博客等级 码龄12年 996粉丝 162原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值