Neural network 图灵完整性有多有用?神经网络图灵完备吗?

Neural network 图灵完整性有多有用?神经网络图灵完备吗?,neural-network,finite-automata,turing-complete,state-machine,Neural Network,Finite Automata,Turing Complete,State Machine,在阅读一些关于递归神经网络图灵完备性的论文时(例如:神经网络的图灵可计算性,Hava T.Siegelmann和Eduardo D.Sontag,1991年),我感到这里给出的证明实际上并不实用。例如,参考文献需要一个神经网络,其神经元活动必须具有无穷精确性(可靠地表示任何有理数)。其他证明需要一个无限大的神经网络。显然,这并不实际 但我现在开始怀疑,要求图灵完整性是否有意义。根据严格的定义,现在没有一个计算机系统是图灵完整的,因为它们都不能模拟无限大的磁带 有趣的是,如果编程语言规范是图灵完备

在阅读一些关于递归神经网络图灵完备性的论文时(例如:神经网络的图灵可计算性,Hava T.Siegelmann和Eduardo D.Sontag,1991年),我感到这里给出的证明实际上并不实用。例如,参考文献需要一个神经网络,其神经元活动必须具有无穷精确性(可靠地表示任何有理数)。其他证明需要一个无限大的神经网络。显然,这并不实际

但我现在开始怀疑,要求图灵完整性是否有意义。根据严格的定义,现在没有一个计算机系统是图灵完整的,因为它们都不能模拟无限大的磁带

有趣的是,如果编程语言规范是图灵完备的或非图灵完备的,那么它通常是开放的。这一切归结为这样一个问题:它们是否总是能够分配更多内存,函数调用堆栈大小是否是无限的。大多数规范并没有具体说明这一点。当然,这里所有可用的实现都是有限的,所以编程语言的所有实际实现都不是图灵完整的

所以,你可以说,所有的计算机系统都和有限状态机一样强大,而不是更多

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

回到神经网络:对于神经网络的任何实际实现(包括我们自己的大脑),它们将无法表示无限多的状态,也就是说,根据图灵完备性的严格定义,它们不是图灵完备性那么,神经网络是否图灵完备的问题有意义吗?

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


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

  • 有什么理论术语可以更具体地说明计算机的计算能力吗?(考虑到其有限的内存空间)

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


基本上,这意味着使用图灵完整的编程语言或体系结构
您可以执行各种各样的算法。。。大部分是——任何一种


非图灵语言的潜力非常有限。

当现代计算机被称为图灵完全时,所描述的无限存储设备图灵有一个不成文的例外,这在有限物理计算设备上显然是不可能的。如果一个计算设备可以完成图灵机器所能做的一切(不受无限存储限制),那么对于所有实际意图和目的来说,它都是图灵完备的。根据图灵完备性这个不太严格的定义,是的,许多神经网络可能是图灵完备性的


当然,也可以创建一个图灵不完整的问题。

部分解决第二个问题:


神经网络具有存在的特性,也就是说,它们可以以任意精度逼近任何函数。正是“精度”部分使神经网络不需要无限大

说明数学模型是图灵完备的,是为了揭示模型在给定足够资源量(即无限量)的情况下执行任何计算的能力,而不是为了表明模型的特定实现是否具有这些资源。即使有足够的资源,非图灵完整模型也无法处理一组特定的计算,这表明两个模型的运行方式存在差异,即使它们的资源有限。当然,为了证明这个属性,你必须假设模型能够使用无限量的资源,但是即使资源有限,模型的这个属性也是相关的。

知道你的系统是乔姆斯基层次结构中的哪个类几乎总是很好的。这在更狭窄的类中尤其重要,如正则语言/有限自动机与上下文无关语言。此外,有能力识别您试图解决的问题所在的类也很重要,否则可能会尝试做一些愚蠢的事情,例如仅使用正则表达式解析HTML或XML,这是不可能的

如果你知道你的形式主义或系统是图灵完备的,那么你就可以用它来构建任何你想要的东西。它没有说任何实用性,只是说解决问题的可能性或不可能性。这是痛苦的事实,当考虑图灵柏油坑,但也有许多图灵完整的系统是专门为利基目的,没有人会梦想在生产环境中使用的一般用途的工作


简而言之,对乔姆斯基层次结构的良好了解将在很多情况下帮助您,不仅仅是选择正确的解析器类型;regexp、pushdown、CFG或更强大的,但也用于选择正确类型的机器或形式来表示一般流程。

我认为图灵完整性的概念并不是要告诉我们特定计算机是否可以执行特定任务

相反,它的目的是判断特定语言是否能够表达特定任务。也就是说,我想说它实际上是关于表达一个算法,而不是执行它

就像神经网络一样