当前位置: 首页 > 科技观察

谈谈机器学习和传统编程的区别

时间:2023-03-22 12:10:59 科技观察

有些人认为AI和ML被夸大了,认为它们无非是写一些if语句,或者只是编程,但我建议你对这些观点认真考虑和辨别。在本文中,我将比较他们所指的术语,并展示这两个领域的专家之间的区别:他们到底是做什么的?软件工程师、软件开发人员、机器学习专家、数据科学家……有人甚至称他们为Programmer或Coders,有人甚至可以成为BigBrothers、Gurus或Star!但它们真的一样吗?如果是这样,机器学习和传统编程之间到底有什么区别?首先,什么是机器学习?说起来简单,AI和ML无非就是编程,或者更深层次的简单统计。我们还能知道什么?ML只是描述数学+算法的新词吗?虽然这种简化有时看起来很有趣,但显然ML更复杂。但是让我们看一个更合适的解释。所以,简单来说,人工智能就是一个大篮子,包括其他领域,比如图像处理、认知科学、神经网络等等。机器学习也是这个大篮子中不可或缺的一部分。它的核心思想是计算机不只是使用预先编写的算法,而是自己学习如何解决问题。或者,换句话说,ArthurSamuel给出了一个很好的定义(他实际上创造了ML一词):机器学习是使计算机无需明确编程即可学习的研究领域。是的,ML教机器解决各种难以通过算法解决的复杂任务。这些任务是什么?好吧,您可能在实践中偶然发现了它们。例如,它可以是手机上的面部识别或语音识别、驾驶汽车(谷歌自动驾驶汽车)、通过症状诊断疾病(沃森)、推荐产品(例如:书籍(亚马逊)、电影(Netflix)、音乐(Spotify))、个人助理的功能(Siri、Cortana)……这个清单不胜枚举。我希望这已经足够清楚了,可以继续讨论关于ML的另一个重要问题。任何有效的ML技术都可以有条件地归因于三个级别的可访问性。这是什么意思?好吧,第一层是像谷歌或IBM这样的科技巨头的特殊用例。第二个层次,比方说,有一定知识的同学可以使用。最后一个,ML的第三级可访问性是这样的,即使是奶奶也可以处理它。我们现在的发展阶段是机器学习处于第二和第三层次的交界处。因此,有了这项技术,世界将迅速改变。关于ML***的更多注意事项:大多数ML任务可以分为与老师一起学习(监督学习)和不被老师教(无监督学习)。如果您想象一个程序员一手拿着鞭子,另一只手拿着糖果,那您就大错特错了。“老师”这个名字暗示了人为干预数据处理的想法。当有老师参与培训时,这是监督学习,我们有数据,我们需要根据它来预测一些东西。另一方面,当没有老师教它时,即无监督学习,我们仍然有数据,但需要自己找到它的属性。好的,那么它与编程有何不同?在传统编程中,您对程序的行为进行硬编码。在机器学习中,您将很多事情留给机器从数据中学习。所以这些工作是不可互换的:数据工程师不能取代传统的编程工作,反之亦然。虽然每个数据工程师都必须至少使用一种编程语言,但传统编程只是他所做工作的一小部分。另一方面,我们不能说软件开发人员正在使用ML算法来增强网站。ML不是替代品,而是对传统编程方法的补充。例如,ML可以用来为在线交易平台构建预测算法,而平台的UI、数据可视化等元素仍然是用Ruby或Java等主流编程语言编写的。所以最主要的是:ML用在传统编程策略不能满足的场景,单靠自己不足以完全完成某项任务。那么这在实践中意味着什么呢?我们用一个经典的货币预测ML问题的要求来解释它:传统的编程方法对于任何解决方案,首要任务是创建最合适的算法并编写代码。之后必须设置输入参数,如果实现的算法没问题,就会产生预期的结果。软件开发人员如何制定解决方案但是当我们想要对某事进行预测时,我们需要具有各种输入参数的算法。要预测汇率,必须添加昨天汇率的详细信息,以及发行货币的国家的外部和内部经济变化等数据。因此,我们需要设计一个可以接受一组参数并能够根据输入数据预测新汇率的解决方案。我们需要添加成百上千个参数和有限的参数集来构建一个非常基础且不可扩展的模型。是的,这么庞大的数据阵,任何人都很难处理。对于这个任务,我们可以使用机器学习的方法,那么它是怎么做到的呢?为了使用ML方法解决相同的问题,数据工程师使用完全不同的过程。他们需要收集一系列历史数据来构建半自动模型,而不是自己开发算法。在获得一组令人满意的数据后,数据工程师将其加载到定制的ML算法中。结果是一个可以将新数据作为输入并预测新结果的模型。数据工程师如何使用机器学习设计解决方案ML的一个显着特点是它不需要构建模型。这种复杂但有意义的事情是由ML算法完成的。ML专家只会对其进行小的编辑。ML和编程之间的另一个明显区别取决于模型能够处理的输入参数的数量。为了能够准确预测,你必须添加数千个参数并以高精度进行,因为每个参数都会影响最终结果。人类很难以合理的方式使用所有这些细节来构建算法。但对于ML则没有这样的限制。只要您有足够的处理能力和内存,就可以使用任意多的输入参数。毫无疑问,正是这一事实使ML现在如此强大和广泛。总结一下:机器学习专家、数据科学家、程序员和软件工程师……到底是谁?正如Wiki上所定义的,数据科学是一个多学科领域,它使用科学方法、过程、算法和系统从结构化和非结构化数据中提取知识和见解。它看起来不那么酷。但有趣的是:使用最大的硬件、最大的编程系统和最有效的算法来解决问题。更有趣的是:2012年,哈佛商业评论称其为“21世纪最性感的工作”。所以数据科学是另一个篮子,就像计算机科学一样,数据科学是关于处理数据并从中提取有用信息的。编程呢?当今的数据科学家出于研究目的需要此技能组合。他们不仅是程序员,还应该具有应用统计或研究背景。有些人还从事软件工程,特别是在其产品中提供数据科学或机器学习技术的公司。最有趣的是,数据科学不需要编程,但会局限于Matlab、SPSS、SAS等工具。机器学习工程师的工作是什么样的?机器学习工程师职位更“技术”。换句话说,机器学习工程师与传统软件工程的共同点多于数据科学。ML工程师的标准任务通常与数据科学家的任务类似,但您还需要处理数据、尝试不同的机器学习算法来解决问题、创建原型和现成的解决方案。我会强调主要区别:一种或多种语言(通常是Python)的强大编程技能;不太重视数据分析过程中的工作能力,更重视机器学习算法;能够使用基于现成库的不同技术,例如,NumPy或SciPy;使用Hadoop等创建分布式应用程序的能力现在让我们回到编程并仔细研究分配给程序员的任务。程序员实际上就像数据分析师或业务系统开发人员。他们不必自己构建系统,他们只需针对现有系统编写结构松散的代码。是的,我们可以将数据科学称为新的编程浪潮,但编码只是其中的一小部分。所以不要误会我的意思。但是如果我们深入挖掘,我们会发现还有其他术语,例如SoftwareEngineer和SoftwareDeveloper,它们并不相同。例如,软件工程师必须设计一个项目。它们涉及生产应用程序、分布式系统、并发性、构建系统、微服务等。软件开发人员需要了解软件开发的所有周期,而不仅仅是实现(有时甚至不需要任何编程或编码)。那么,现在你感受到编程和机器学习的区别了吗?我希望本文能帮助您避免对这些术语产生混淆。毫无疑问,这些人都有一个共同点,那就是技术,但他们之间的差异要大得多。所以机器学习工程师、软件工程师和软件开发人员根本不能互换。