原文:
towardsdatascience.com/dont-be-afraid-to-use-machine-learning-for-simple-tasks-8488fc175253
管理者的机器学习课程
照片由Rocco Dipoppa在Unsplash提供
嗨,欢迎来到一个新的系列,在这里我将分享大多数企业在机器学习中常见的错误。我的目标是提供简单但原创的课程,这些课程基于那些已经存在多年且似乎永远不会消失的误解。
这是第 1 个课程。
哦,别忘了查看我的其他机器学习课程!👇
许多专业人士认为机器学习是一种高级技术,当其他方法失败时才部署。 在他们心中,这是一件复杂到无法用传统方法解决的问题的复杂工具。
因此,当我与企业交谈时,我经常听到这样的评论:“我们不需要为那个使用机器学习”或“在机器学习成为事物之前,我们几年前就解决了那个问题”。
有时,这些评论是有效的,使得机器学习成为错误的技术。然而,更常见的是,它们源于一种错误的信念,即他们的传统方法是一个简单直接的替代方案,这种误解导致企业坚持并维护过时的解决方案。
实际上,机器学习是创建简单问题稳健且易于维护解决方案的绝佳工具。 你通常可以用一行代码替换数千行代码,执行任务更准确、更可靠。我曾与几家公司在用机器学习算法替换他们的手动规则后,惊讶于他们的解决方案变得多么简单。
让我们一起探讨这个话题,并学习一些你可以通过真实案例应用到工作中的宝贵课程。
简单任务的示例
我们公司开发的是深度学习算法,用于检测视觉数据中的损坏和关键组件。目前,我们主要关注铁路行业,因此,我的许多例子都是围绕来自铁路行业的计算机视觉数据展开的。
然而,这些例子直接适用于其他数据集、行业和用例。 对于机器学习工程师来说,只要数据类型保持相似并且你能接触到有领域专业知识的人,切换到另一个用例或行业几乎没有区别。
在轨道图像中检测轨头
我想通过展示一个例子来解释这个课程,在这个例子中,我使用机器学习而不是传统的计算机视觉,在一小时内创建了一个可靠的解决方案。让我们先看看这些从不同日期的测量列车上拍摄的三个 2D 铁路枕木图像。
作者收集的图像
每张图像中的睡眠者都是相同的,我们希望开发一种指纹算法,为每个睡眠者创建一个 ID,以便随着时间的推移跟踪它。然而,为了使这项任务更容易管理,我首先想对图像进行对齐,以确保轨道每次都在相同的位置。
传统方法
检测和对齐轨道是一个简单的任务,大多数人会尝试使用传统方法来解决。这些方法涉及利用 y 轴上像素值的变异性或边缘检测的规则。规则容易定义,你可以快速制作出大多数情况下都能工作的东西。
**问题开始于你必须更新你的规则来处理失败的例子。**随着你添加新的巧妙方法来检测轨道,你的代码复杂性增加,你开始花费大量时间处理边缘情况。
如果你有很多质量各异的数据,这些边缘情况会迅速累积起来,如果发生这种情况,手动创建规则可能会变成一个无底洞。你制定的规则越多,它们就越难维护和更改。
使用机器学习的一个简单解决方案
为了用机器学习解决问题,我使用 PyTorch 创建了一个具有 80,000 个参数的小型 CNN。该算法接受一个图像作为输入,并为每一列返回一个概率,告诉我它是否是轨道的中心。
我取了原始图像,提取了两个足够大的区域,以确定它们包含轨道,将每个区域下采样到 128×64 像素,并标记了轨道的中心。
作者收集的图像
**为了创建一个几乎完美的解决方案,我只需要标注 20 张图像,这花了我 5 分钟。**我还制作了一个包含 50 张图像的验证集,以确保我的算法可以处理以前未见过的数据。在商业界,人们普遍认为在训练机器学习算法之前需要大量数据,这是一种最常见的误解。
由于我的算法很小,我不需要 GPU,可以直接在我的 Macbook 上训练算法。训练大约需要 10 分钟,我的电脑风扇几乎不响。
**整个解决方案只花了我一个小时来创建。**它几乎完美无缺,只是中心偏离了 2-3 像素,这对于我的预期用途来说已经足够好了。以下是我验证数据中的一些示例,其中红色线是真实情况,蓝色线是我算法的输出。
作者收集的图片
改进解决方案
我可以用传统方法在类似的时间内解决这个问题,但我的机器学习解决方案最好的部分是它很容易改进。
我要得到更好的解决方案,只需创建更多的训练数据。这太棒了,因为只需 5 分钟的标注就能得到一个可行的解决方案。如果我添加算法难以处理的示例,只需再增加 10 个数据点,我就能得到显著的改进。
应吸取的教训
主要的教训是将机器学习视为一种多才多艺的技术,你可以用它来解决简单和复杂的问题。训练和部署算法(如果不是更容易的话)与其他方法一样简单。以下是一些每个人都应该理解的关键要点。
简单问题的机器学习解决方案是…
开发速度快
一位熟练的机器学习工程师应该能够在一天之内解决一个简单问题。你只需标记几个数据点,构建一个小型神经网络(或其他算法),并专注于以有助于算法学习正确内容的方式表达任务。
更能应对边缘情况
当你训练一个机器学习算法时,你不断地对数据进行微调,比如改变亮度。这被称为数据增强,如果我们能很好地利用它,算法就可以学会处理几乎任何边缘情况。
更容易维护
许多传统方法很快就会变得复杂。维护一个简单的机器学习解决方案只需涉及标记当前算法难以处理的新的示例。如果你保持训练和测试数据的一致性,并且性能有所提高,你就可以部署新的算法,无需担心错误或性能下降。
代码复杂性更低
简单的机器学习解决方案可以用一行代码取代数千行代码。我们将复杂性移到算法内部,并信任我们的测试数据。消除复杂的规则通常是机器学习新手的意外好处。
摘要和结论
我认为机器学习不是一把锤子,每个问题不是一颗钉子,但对我来说,很明显,很少有人理解这个技术可以和应该被多么频繁地使用。对我来说,它是软件开发中我经常使用的工具。
而不是问自己是否可以用“没有机器学习”的方法解决问题,你应该将其作为与其他任何方法相同的替代方案来考虑。
对于许多简单问题,机器学习不需要任何高级硬件,你通常可以在比传统方法更短的时间内开发出更好、更可靠的解决方案。
感谢您阅读这个故事。如果您想了解更多机器学习课程,请订阅我的通讯!😄
1032

被折叠的 条评论
为什么被折叠?



