图灵完备性有多大用处?神经网络是否具有图灵完备性?

66

阅读了一些关于循环神经网络图灵完备性的论文(例如:Siegelmann和Sontag撰写的“使用神经网络的图灵计算”,1991年),我有一种感觉,即给出的证明实际上并不那么实用。例如,引用的论文需要神经网络的神经元活动必须具有无限精确度(以可靠地表示任何有理数)。其他证明需要无限大小的神经网络。显然,这并不是非常实用。

但现在我开始想知道是否有意义去问图灵完备性。按照严格的定义,现在没有任何计算机系统是图灵完备的,因为它们都不能模拟无限的纸带。

有趣的是,编程语言规范通常不明确说明它们是否图灵完备。这归结为一个问题,即它们是否总能分配更多的内存,以及函数调用堆栈大小是否无限制。大多数规范并未真正指定此事项。当然,所有可用的实现在这里都是受限的,所以所有实用的编程语言实现都不是图灵完备的。

因此,您可以说所有计算机系统的强大程度只是有限状态机一样,并不比其更强大。

这就引出了一个问题:“图灵完备”这个术语有多有用呢?

回到神经网络:对于任何实际的神经网络实现(包括我们自己的大脑),它们都不能表示无限数量的状态,即按照图灵完备性的严格定义,它们不是图灵完备的。 那么,问神经网络是否图��完备是否有意义呢?

关于它们是否像有限状态机一样强大的问题早在很久以前就得到了回答(1954年由Minsky提出,当然答案是肯定的),并且似乎更容易回答。也就是说,至少从理论上讲,这已经证明了它们与任何计算机一样强大。


其他一些更关于我想知道的问题:

  • 是否有任何理论术语可以更具体地说明计算机的计算能力?(考虑其有限的内存空间)

  • 如何比较实际的神经网络实现与计算机的计算能力?(如上所述,图灵完备性没有用处。)


我投票关闭此问题,因为它不是一个编程问题。 - nbro
11个回答

60

声明一个数学模型是图灵完备的目的在于揭示该模型在拥有足够资源(即无限)的情况下能够执行任何计算,而不是显示模型的特定实现是否具有那些资源。非图灵完备模型将无法处理特定集合的计算,即使有足够的资源,这揭示了两种模型操作方式的差异,即使它们的资源有限也是如此。当然,为了证明这种属性,必须假设模型能够使用无限数量的资源,但是即使资源有限,这种模型的属性仍然是相关的。


8
+1 就像数学中所有涉及无穷大的事物一样,它可能并不可在现实中实现,但这并不使它成为一个在物理上没有用处的概念。 - BlueRaja - Danny Pflughoeft
我仍然有点好奇“在足够的资源下”确切意味着什么(从数学意义上讲),以及对于神经网络来说意味着什么(向其中添加更多的神经元并不真正可比于向计算机添加更多的内存)。 - Albert
在前馈多层神经网络中,您可以将向网络添加更多神经元视为提高网络精度。换句话说,在给定问题上,网络的精度(非线性地)与网络中的神经元和层数量相关。这与传统算法形成对比,传统算法不存在精度问题:在资源数量达到一定阈值以上时,问题可以得到解决,否则使用给定算法解决问题是不可能的。 - metaliving
我并没有想到前馈网络。这些网络显然(在每个松弛的解释下)都不是图灵完备的。你需要一个循环网络才能获得图灵计算能力。 - Albert
不要忘记,你的大脑并不是图灵完备的。所以“给你的大脑更多资源”这种说法并没有太多意义。或者说,对于大脑来说,“能力”和“资源”是无法分开的,因为能力就在于计算单元本身,所以增加计算单元会改变“计算机”本身。 - Sanjay Manohar
显示剩余4条评论

22

多年以来,让我自己来回答这个问题。

图灵完备性

  • 和图灵机一样强大。
  • 需要无限的内存。也就是说,在实践中,没有任何物理设备可以成为图灵完备。
  • 考虑一个普通的个人电脑:
    • 一个特定的物理实例不是图灵完备,因为它有有限的内存。
    • 但是,考虑将PC的概念视为可以根据需要添加内存的东西。当您添加更多内存时,所有程序仍将以相同的方式工作。对于任何给定的输入和任何给定的程序,都存在最大数量的内存,使其应该工作。(现在让我们不要在int64内存地址限制或类似事情上卖弄。这些是技术限制,可以通过大整数等解决。)因此,我们可以说 PC的概念是图灵完备的。这也被称为抽象机器。 因此,区分特定的机器或设备(PC、RNN、人脑)和编程语言或编程语言的抽象机器。编程语言通常没有使用内存的限制,因此编程语言可以是图灵完备的。请参见官方C语言标准定义,它使用抽象机器来定义语义。主要问题是,这些特定类别(PC、RNN、人脑)允许制定抽象机器变体,并且这些抽象机器变体是否图灵完备?
  • 图灵完备性实际上主要涉及内存概念。考虑任何有限状态机/自动机(FSA),以及对外部内存的某些访问。根据内存类型,您将进入不同的Chomsky层次类别:

循环神经网络(RNN)

关于神经网络的计算能力

一篇经常被引用的论文是On the computational power of neural nets, Siegelmann & Sonntag, 1992,它指出RNNs是图灵完备的。 该论文假设我们有没有限制的分子/分母有理数,即无限内存被编码为有理数或无限精度的浮点数。也可以参见here。通常我们不会以操作有理数(无限制)的方式对NN进行建模。当我们将自己限制为具有有限精度权重和激活的(R)NN时,论文中的证明就会破裂,不再适用。因此,这篇论文并不那么相关。

还有一篇较新的论文On the Practical Computational Power of Finite Precision RNNs for Language Recognition, Weiss et al, 2018,它正好解决了这个问题。

通用逼近器

众所周知,大多数标准NN都是通用逼近器。这意味着,对于任何函数(非常数、有界和连续),只要给定一些允许的阈值,就可以构建一个NN,使其在允许的阈值内逼近该函数。 这是关于有限维向量空间的。当我们谈论可计算性时,我们谈论序列,因此我们有一个无限维向量空间。因此,这个属性并不那么相关。

没有外部记忆

问题是如何定义标准RNN的概念。在上述论文中,它假设激活具有无限精度。但我认为这不是一个合理的RNN概念,因为你永远不会有这个。而且由于受到限制,因此没有其他方法可以使标准RNN具有无限记忆。
因此,明确说明: 没有外部记忆,标准RNN,以及LSTM 不是图灵完备的。 也没有直接的方法可以定义可以根据需要添加内存的RNN概念。 RNN的记忆是最近的隐藏激活。增加更多的内存意味着改变NN,即添加新的神经元,从而添加其内部工作。这就像改变程序本身。

有外部记忆

神经图灵机(NTM)和一些类似的模型,它们具有某种外部存储器。在这里,我们可以直接考虑一个NTM的概念,其中您可以按需添加内存。因此,我们可以说NTM的概念是图灵完备的
有一些细节需要适应头部使用的注意力类型。该模型的后续是可微分神经计算机(DNC),它明确解决了这个问题,并且还具有一些显式的机制来添加内存。

学习/训练

我们主要讨论了理论计算能力。一个非常不同的问题是NN是否可以学习这样的功能。即是否训练(梯度搜索)会导致NN学习到可计算的函数。

人脑

我们可以将人类大脑(或任何大脑)解释为一种复杂的神经网络。我们也可以问一个问题,即人类大脑(模型)是否是图灵完备的。参见这里。这个问题很棘手。直觉会说我们能够执行任何类型的计算,因此人类大脑是图灵完备的。然而,我们在这里概述的论点表明RNN不是图灵完备的。重要的是记忆效应。在某些输入上,人类大脑的记忆容量已经不足以操作。因此,我们需要外部记忆。因此,人类大脑加上外部存储器是图灵完备的,显然。但这可能不是有趣的问题(也假设人类大脑可以尽可能大地编码任何图灵机程序,因此没有人类大脑的上限大小,这实际上并不正确)。更有趣的是仅考虑人类大脑本身,没有任何外部存储器。或者基本上,如何定义抽象机器人类大脑的概念?这个概念是否允许无限的内存?这个定义是否很简单?
在人脑中,记忆的某个方面与标准循环神经网络不同:它可以高度概括,并且访问特定激活的寻址机制也不同。此外,它具有某种自适应权重(但仅能存储有限信息)。因此,考虑到这一点,它实际上已经比普通循环神经网络更类似于神经图灵机。人脑中有许多不同类型的记忆。有些像循环神经网络一样静态(例如当前激活),而其他类型允许进行联想记忆,就像神经图灵机一样。因此,人脑也类似于个人电脑,后者也具有有限的内存,而个人电脑的概念具有无限的内存。
因此,也许我们可以说人脑的概念也具有无限的内存,由于联想记忆,也可以足够大以编码任何程序,因此人脑的概念是图灵完备的。也许应该称之为“抽象人脑”(抽象机的一个实例)。

谢谢你的回答。从你最后一节开始,我还要补充一点,宇宙中有限的物质量禁止任何机器具备图灵完备性。为了增加内存,需要添加更多的熵,这将导致更多物质的添加,例如原子甚至基本粒子,但由于宇宙中大约只有10^80个原子,这是不可能的。 - Nikolay Frick
“也就是说,在实践中,没有任何物理设备可以是图灵完备的。”“宇宙中有限的物质阻止了任何机器的图灵完备性”- 不,这是一个没有证据的猜想。您可以在函数式语言中创建无限序列(Lambda演算等效于图灵机)。您可以拥有一个TC语言,它具有从A [1]到A [inf]的无限变量,并在您的PC上运行...在所有情况下,它们都是TC,您可以推断出任何可计算的内容,但对于某些算法,您可能会耗尽资源,例如内存或时间。 - wentbackward
@wentbackward 一种函数式语言并不是一个物理设备。 - Albert
@Albert,物理设备实际上并不需要无限的内存才能成为图灵完备,只有一些算法实现可能需要。我想要表达的观点是,λ演算在数学上等价于图灵机,但不需要无限的内存。 - wentbackward
@wentbackward 不,每个图灵完备的机器都需要无限的内存。图灵完备意味着你可以模拟一个图灵机。而图灵机本身就有无限的内存。 - Albert

15

当现代计算机被说成是Turing完备时,对于图灵所描述的无限存储设备,有一个不言而喻的例外,这在有限的物理计算设备上显然是不可能的。如果一个计算设备可以做到图灵机所能做的一切(无限存储除外),那么就可以认为它在所有实际意义上都是Turing完备的。按照这种不太严格的Turing完备定义,很多神经网络都有可能是Turing完备的。

当然,也有可能创建一个非Turing完备的神经网络。


14

普通的前馈神经网络不是图灵完备的。实际上,它们等效于一个单一复杂的数学函数,可以进行很多计算,但没有执行循环或其他控制流操作的能力。

然而,如果你通过某种方式让神经网络访问状态环境,那么它可以变成一个图灵完备的机器

最简单的例子是,你可以重新创建一个经典风格的图灵机,其中:

  • 神经网络的输入是纸带上的值和以前的状态
  • 神经网络的输出是下一个状态和动作

然后,你可以训练神经网络模仿任何所需的图灵机状态表/配置的操作(也许是通过另一个图灵机的监督式学习来实现?)

注意:使用某种形式的状态反馈重复运行前馈网络的想法本质上等同于使用循环神经网络。因此,你可以将循环神经网络和运行它的逻辑视为图灵完备的。需要额外的逻辑(超越网络本身)来确保图灵完备性,因为必须处理终止、重复和IO等问题。


我完全同意前馈网络的观点,但我更感兴趣的是循环网络。 - Albert
@Albert - 这就是我想表达的观点! 递归神经网络毕竟等同于在具有某种形式反馈的状态环境中重复运行前馈网络 :-) 不过,我会尽力让答案更清晰..... - mikera
如果你所说的“访问有状态环境”是指外部存储器,那么你最终得到的模型就像神经图灵机(NTM)或可微分神经计算机(DNC),它们实际上被认为与图灵机一样强大。 - Albert

14
递归神经网络的图灵完备性可能意味着:每个图灵机(具有有限状态头和无限纸带)的(有限)转移表都可以由一个有限递归神经网络(有限数量的神经元,有限数量的状态,特别是仅有两种状态)模拟。转移表定义了三个函数:
- next-state(current-state, current-symbol) - next-symbol(current-state, current-symbol) - direction(current-state, current-symbol)
以下是递归神经网络执行此任务的方式(只是非常简略的草图):
绿色神经元读取当前单元格中的符号(以二进制表示),灰色神经元(最初静音)确定当前状态,红色神经元将新符号写入当前单元格,黄色神经元确定向左还是向右移动。蓝色神经元是内部神经元(最初静音)。
该论断是,对于每个图灵机,都存在这样一个递归神经网络。
我想知道是否有一种系统的方法来从给定的转移表构造这样一个网络。

4
经常引用的一篇论文是《On the computational power of neural nets, 1992》(神经网络的计算能力,1992年),其中进行了递归神经网络的构建。但需要注意的是,该构建假设有理数,即将无限记忆编码为有理数或无限精度的浮点数。更多信息请参见这里。然而,在实践中这并不现实。这就是神经图灵机(NTM)或微分神经计算机(DNC)以及人脑的不同之处所在。 - Albert
在你的构造中,你假设存在一个外部无限长的纸带,它不是你的神经网络的一部分。因此,一个神经网络加上外部无限长的纸带是图灵完备的。然而,我的问题是关于仅有神经网络本身,没有任何外部元素的情况。 - Albert
但是某些东西必须是无限的:如果不是磁带,那就是神经网络。如果不是神经元的数量,那就是状态的数量。 - Hans-Peter Stricker
这就是关键所在。NN(原样)是有限的。因此,它实际上不是图灵完备的,这也是我最初的问题。如果你向其中添加一些东西,当然可以使其成为TM-complete,但这对任何事情都是正确的,对吧?我现在也在自己回答问题时写了一点关于这个的内容。 - Albert
@Albert 是的,在那个意义上,NN 不是 Turing 完备的,包括我的笔记本在内,宇宙中其他所有东西也都不是。但是,只要有无限存储空间,NN 和我的笔记本在受限制的意义下就是 Turing 完备的。请注意,即使在受限制的意义下,具有无限存储器的计算器也不是 Turing 完备的。当人们谈论物理设备的 Turing 完备性时,他们省略了“受限制”这个词,希望在上下文中可以理解。 - Prem

10

针对你的第二个问题,需要部分回答:

神经网络具有通用逼近的属性——也就是说,它们可以将任何函数逼近到任意精度。正是这种"精度"使得神经网络不需要无限大。


3
有限维向量空间上的函数的通用逼近器。当你谈论可计算性时,你谈论序列,因此你有一个无限维向量空间。因此,这个性质并不那么相关。 - Albert

7
我认为图灵完备性的概念并不是要告诉我们特定计算机能否执行特定任务。相反,它的目的在于告诉我们特定语言是否能够表达特定任务。也就是说,我认为它真正关注的是表达算法而非执行算法。
由于神经网络没有语言,所以问题在于如何用神经网络的术语来表达算法,而不是该网络的能力。因此,我不知道你问题的最后一部分的答案!

4

我认为图灵机的一个重要点是,对于任何给定的输入和程序,只要它在某个时刻停止,机器就只需要有限数量的纸带。这就是为什么我会说“图灵完备”这个术语很有用:你只需要有限的内存就可以在特定的输入上运行一个特定的图灵完备程序(如果该程序停止)。但如果你有一个非图灵完备的机器/语言/技术,无论你增加多少内存,它都无法模拟某些算法。


+1 当我正在撰写几乎完全相同的答案时,你的回复出现了。 - JeremyP

3

了解你的系统在乔姆斯基层次结构中属于哪个类别几乎总是很好的。这在更受限制的类别中尤其重要,比如正则语言/有限自动机与上下文无关语言。还有识别你正在尝试解决的问题所属的类别的技能也很重要,否则你可能会尝试使用正则表达式来解析HTML或XML等愚蠢的事情,而这是不可能的。

了解你的形式化语言或系统是图灵完备的意味着你可以用它构建任何你想要的东西。这并不意味着实用性,只是解决问题的可能性或不可能性。当考虑到图灵坑时,这一点尤为真实,但也有许多特别为利基目的而设计的图灵完备系统,绝不能梦想将其用于生产环境中的通用工作。

简而言之,对乔姆斯基层次结构的良好了解将在许多情况下帮助你,不仅仅是为了选择正确类型的解析器; regexp、推入式、CFG或更强大的,还为了选择正确类型的机器或形式化语言来表达过程。


-2
基本上,这意味着使用图灵完备的编程语言或架构,您可以执行各种算法...大多数情况下--任何类型的算法。
非图灵语言的潜力受到极大限制。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接