AI 软件长什么样,它与其他软件有什么不同?

人工智能 比较 执行
2021-10-29 20:59:44

人工智能软件是什么样的?AI软件与其他软件的主要区别是什么?

4个回答

人工智能中的代码原则上与任何其他计算机代码没有区别。毕竟,您以计算机可以处理它们的方式对算法进行编码。话虽如此,您的典型“AI代码”可能会有所不同:

  • 许多(尤其是早期的)人工智能代码更多地基于研究和探索性,因此某些编程语言受到青睐,它们不是商业应用程序的主流。例如,早期 AI 中的很多工作都是用 Lisp 编码的,而用 Fortran 或 Cobol 编码的可能不多,它们更适合工程或商业。开发了特殊的语言,以方便使用符号和逻辑进行编程(例如 Prolog)。

  • 重点更多地放在算法上,而不是聪明/复杂的编程。如果您查看ELIZA的源代码(有多种不同语言的多种实现),它确实非常简单。

  • 在神经网络和(统计)机器学习出现之前,大多数 AI 编程都是符号化的,因此对数值计算的重视程度并不高。随着概率和模糊性的使用越来越多,这种情况发生了变化,但即使使用通用语言,数值计算也会减少。

  • 自修改代码本质上是复杂的;虽然例如 Lisp 在代码和数据之间没有区别(至少与 C 或 Pascal 的方式不同),但这只会使开发复杂化而没有太多收获。也许在早期,当计算机的内存和能力非常有限并且您必须解决这些限制时,这是必要的。但是这些天来,我认为没有人会再使用这种技术了。

  • 随着现代编程语言的发展,Lisp 和 Prolog(大概在 20 到 30 年前还是主要的 AI 语言)已经慢慢被 Python 等取代。可能是因为更容易让程序员适应命令式范式而不是函数式范式。一般来说,由于开发速度的原因,解释型语言比编译型语言更受欢迎,除非性能很重要。

转向深度学习当然改变了很多。现在核心处理都是数字的,所以你会想要计算比符号处理更好的语言。解释性语言现在主要构成“胶水”代码以在已编译模块之间进行接口,并用于数据预处理。因此,当前的 AI 代码可能与当今科学计算中使用的代码并没有太大区别。

当然,研发和生产代码之间还是有区别的。您可以使用解释性语言探索一个主题,然后用编译语言重新编码您的算法以用于生产以获得更好的性能。这取决于该区域的建立程度;例如,将有现成的库可用于神经网络或遗传算法,它们是成熟的算法(性能很重要)。

结论:我不认为 AI 代码比任何其他代码都复杂。当然,在电影中描绘这并不是很令人兴奋,因此使用艺术许可使其更有趣。我想自修改代码也能让机器发展自己的良心并接管世界,这作为一个故事元素更加扣人心弦。然而,鉴于现在很多行为都在(训练/模型/配置)数据中而不是算法中,这甚至可能更直接地修改。

注意:这是一个相当简化的总结,基于我自己在 AI 领域的工作经验;其他人的观点可能会有所不同,但都不是“错误的”。

2021 年更新:我现在在一家公司工作,该公司使用 NLP 方法从大规模新闻数据中提取商业信息/事件。而且我们正在使用 Lisp……所以它仍然在人工智能中处于活跃的商业用途中。

Oliver Mason 的回答非常好,但我认为它可以扩展一点。

我认为还有一些额外的因素可以被普遍解释为使 AI 代码难以阅读(与其他代码相比):

  1. AI 代码实际上大多数编写的代码更复杂。当我们在 AI 中工作时,我们经常忽略这一点,但大多数编写过的代码都会做两件事之一:将一种标准格式的数据转换为另一种标准格式的数据;向用户展示一些东西。这两者在概念上都很容易理解。他们都不太可能需要数学知识。这与大多数用人工智能编写的代码非常不同,在人工智能中,理解编写的内容和原因需要广泛的知识,而不仅仅是阅读和编写计算机程序所需的知识。因此,阅读人工智能代码需要更多的数学知识或复杂的人工智能算法知识
  2. “由 AI 编写的程序”实际上是我们在现代语境中的模型。我们的算法“编程”模板模型,使其适用于特定应用程序。如果您从编程也用于“线性规划”、“二次规划”甚至“动态规划”的意义上考虑这一点,则尤其如此。我们的模型真的很难理解。通常,即使是它们的创建者也无法在不运行模型的情况下解释或表征模型在特定输入上的行为。原因是我们的模型不能代表人类可以轻松理解或简化的足够简单的概念
  3. 自我修改代码很少见,但确实存在于 AI 中。然而,与其他 AI 生成的模型一样,AI 生成的代码对于人类来说往往比较难以解释,因为(与大多数人类生成的代码不同),它的编写并不是为了让人类尝试阅读和阅读。明白吧实际上有一些努力来生成符合人类风格的代码,但通常生成的代码效果不佳。

这可能是一个比您正在寻找的更简单的解释,但在机器学习从零到英雄,谷歌工程师劳伦斯莫罗尼用我认为很棒的方式总结了它。从演示幻灯片中转述:

在传统编程中,您输入规则和数据,程序输出答案。在机器学习中,您输入数据和答案,程序输出规则。

这有一个类似代数的对称性。该程序甚至不知道它要制定什么规则。它只是随机演变规则,直到数据产生正确的答案。然后,您可以采用这些规则,将它们应用于不同的数据,并希望得到正确的答案。

人工智能最近被重新定义为机器学习。

除了机器学习(我们将回到这一点)之外的所有编程都体现了计算机可以遵循的人类知识。

EG 文本编辑器具有用户界面规则、用户期望以及必须遵守的与操作系统的合同。程序员将它们放在一起。这适用于文本编辑器、专家医疗系统、银行软件、会计软件(程序员需要了解会计才能对其进行编程)。

机器学习是使用数据和输出训练软件,使其能够确定它们之间的联系。没有人类知识。它也无法解释它在做什么。

当然,当人类知识将它们作为数据的一部分时,它们实际上工作得更好。当被告知事情实际应该去哪里(应付账款)时,路由传入发票等的人工智能会更好地工作。