谈谈机器学习与传统编程之间的区别

翻译:疯狂的技术宅
https://towardsdatascience.co...

clipboard.png

有些人认为 AI 和 ML 被过度夸大了,认为它们只不过是写一些 if 语句,或者仅仅是和编程有关的玩意儿,但我建议你对这些观点进行仔细的思考和分辨。在本文中,我将对它们涉及到的术语进行比较,并展现这两个领域的专家之间的区别:他们到底是作什么的?软件工程师、软件开发人员、机器学习专家、数据科学家......有些人甚至用程序员或码农称呼他们,有些人甚至能够成为大佬、大师或明星!可是他们真的同样吗?若是是这样的话,那机器学习和传统编程之间究竟有什么区别?程序员

首先,什么是机器学习?

clipboard.png

尽管提及来很容易,AI 和 ML 只不过是 if 编程,或者更深刻一点,它只是简单的统计数据。咱们还能知道些什么呢? ML 只是一个描述数学 + 算法的新词吗?尽管有时这种简化彷佛颇有趣,但很明显,ML更复杂。算法

可是让咱们来看一个更合适的解释。编程

所以,简单来讲,人工智能是一个包含其余领域的大筐,如图像处理、认知科学、神经网络等等。机器学习也是这个大筐中的一个组成部分。它的核心思想是:计算机不仅是使用了预先编写的算法,还学习如何解决问题自己。或者,换句话说,Arthur Samuel 给出了一个很好的定义(他实际上创造了ML的术语):网络

机器学习是一个研究领域,使计算机无需明确编程便可学习。

是的,ML 教一台机器来解决难以经过算法解决的各类复杂任务。那些任务是什么?好吧,你可能已经在实践中偶然发现了它们。例如它能够是你的手机上的面部识别或语音识别,驾驶汽车(Google自动驾驶汽车),按症状诊断疾病(Watson),推荐商品(如:书籍(亚马逊),电影(Netflix),音乐(Spotify) ),我的助理(Siri,Cortana)的功能......这个列表能够列的很长很长。并发

我但愿说得已经足够清楚了,接下来继续谈论关于 ML 的另外一个重要的问题。机器学习

任何有效的 ML 技术均可以有条件地归于三个级别的可访问性。这是什么意思?嗯,第一个层面是 Google 或 IBM 等这种科技巨头的特殊用例。第二个层次是,比方说,具备必定知识的学生可使用它。而最后一个也就是 ML 可访问性的第三个层次是甚至一个老奶奶可以应对它。编程语言

咱们目前的发展阶段是机器学习正处在第二级和第三级交界处。所以借助这项技术,世界的变化将会突飞猛进。分布式

关于 ML 最后还有一点点说明:大多数 ML 任务能够分为跟着老师学(监督学习)和没有老师去教(无监督学习)。若是你想象一个程序员一只手拿鞭子,另外一只手拿着糖,那就有点误会了。微服务

“老师”这个名字意味着人为干预数据处理的想法。在有老师参与培训时,这是监督学习,咱们有数据,须要在其基础上预测一些事情。另外一方面,当没有老师进行教学时,这是无监督学习时,咱们仍然有数据,但须要本身去找到它的属性。工具

好的,那么它与编程有什么不一样?

clipboard.png

在传统编程中,你须要对程序的行为进行硬编码。在机器学习中,你将大量内容留给机器去学习数据。

因此这些工做内容没法互换:数据工程师没法取代传统编程的工做,反之亦然。尽管每一个数据工程师都必须使用至少一种编程语言,但传统编程只是他所作的一小部分。另外一方面,咱们不能说软件开发人员正在用 ML 算法来启动网站。

ML 不是替代品,而是传统编程方法的补充。例如,ML 可用于为在线交易平台构建预测算法,而平台的 UI、数据可视化和其余元素仍然用主流编程语言(如Ruby或Java)编写。

因此最主要的是:ML 被用在传统编程策略没法知足的场景,并且它不足以独立彻底完成某项任务。

那么这在实施中意味着什么呢?咱们用一个汇率预测的经典 ML 问题的需求来进行解释:

传统的编程方法

对于任何解决方案,第一个任务是建立最合适的算法并编写代码。以后必须设置输入参数,若是实现的算法没问题,将会产生预期的结果。

软件开发人员如何制定解决方案

clipboard.png

可是当咱们要对某些东西进行预测时,须要用到有各类输入参数的算法。若要预测汇率,必须添加昨天的汇率的详细信息,以及发行货币的国家的外部和内部经济变化等数据。

所以,咱们须要设计一个可以接受一组参数的解决方案,并可以根据输入的数据预测新的汇率。

咱们须要添加成百上千个参数,用它们的有限集去构建一个很是基本同时不可扩展的模型。是的,任何人都很难处理如此庞大的数据阵列。

对于这个任务,咱们能够用机器学习方法,那么它是怎么作的呢?

为了用 ML 方法解决相同的问题,数据工程师使用彻底不一样的过程。他们须要收集一系列历史数据用于半自动模型的构建,而不是本身去开发算法。

在获得一组使人满意的数据以后,数据工程师将其加载到已定制的 ML 算法中。结果会获得一个模型,这个模型能够接收新数据做为输入并预测新结果。

数据工程师如何用机器学习设计解决方案

clipboard.png

ML 的一个显著的特色是不须要创建模型。这种复杂但有意义的事由 ML 算法完成。 ML 专家只会对其作一个小小的编辑。

ML 与编程的另外一个明显差别取决于模型可以处理的输入参数的数量。为了可以准确预测,你必须添加数千个参数并以高精度执行,由于每一个参数都会影响最终结果。人类很难以合理的方式使用全部这些细节去构建一种算法。

clipboard.png

可是对于 ML 没有这样的限制。只要你有足够的处理能力和内存,就能够根据须要使用尽量多的输入参数。毫无疑问,这一事实使得 ML 如今变得如此强大和普遍。

总结一下:ML专家,数据科学家,程序员和软件工程师......究竟谁是谁?

clipboard.png

根据 Wiki 上的定义, Data Science 是一个多学科领域,它使用科学方法、流程、算法和系统从结构化和非结构化数据中提取知识和看法。

看上去并非那么酷。

但接下来还有一些有趣的东西:

使用最强大的硬件,最强大的编程系统,以及解决问题的最有效算法。

后面还有更有趣的部分:

2012年,“哈佛商业评论”称其为“21世纪最性感的工做”。

所以数据科学是另外一个筐,就像计算机科学同样,数据科学旨在处理数据并从中提取有用的信息。

clipboard.png

那么编程呢?如今的数据科学家为了研究的目的而而须要掌握这种技能。他们不只是程序员,也应该具备应用统计或研究背景。有些人还从事软件工程,特别是在他们的产品中提供数据科学或机器学习技术的公司。最有趣的是,数据科学能够没必要编程,可是会被限定在 Matlab、SPSS、SAS等工具上。

机器学习工程师的职位是怎样的?

机器学习工程师的位置更具备“技术性”。换句话说,机器学习工程师与传统的软件工程有着比数据科学更多的相同点。

ML 工程师的标准任务一般和数据科学家相似,可是你还须要处理数据,尝试用不一样的机器学习算法来解决问题、建立原型和现成的解决方案。

我要强调一下关键的区别:

  • 一种或多种语言(一般是Python)的强大编程技能;
  • 不过重视在数据分析过程当中工做的能力,而是更加剧视机器学习算法;
  • 可以基于现成的库使用不一样的技术,例如,NumPy 或 SciPy;
  • 使用 Hadoop 建立分布式应用的能力等。

如今让咱们回到编程并仔细研究分配给程序员的任务。

程序员实际上就像数据分析师或业务系统开发人员。他们没必要本身构建系统,只需针对现有系统编写松散结构的代码。是的,咱们能够将数据科学称为新的编程浪潮,但编码只是其中的一小部分。因此不要误会。

但若是深刻挖掘,咱们会发现还有其余术语,如 Software EngineerSoftware Developer,二者并不相同。例如软件工程师必须设计工程。它们涉及生产应用程序、分布式系统、并发、构建系统、微服务等。而软件开发人员须要了解软件开发的全部周期,而不只仅是实现(有时甚至不须要任何编程或编码)。

那么,你如今感觉到编程和机器学习的不一样了吗?我但愿本文能够帮你避免对这些术语产生混淆。毫无疑问,这些人都有一些共同点,那就是技术,但之间的差别要大得多。所以机器学习工程师、软件工程师和软件开发人员彻底不可互换。

相关文章
相关标签/搜索