在阅读一些关于递归神经网络的图灵完整性的论文时(例如:使用神经网络进行图灵可计算性,Hava T. Siegelmann和Eduardo D. Sontag,1991),我感觉到那里给出的证据是不太实际。例如,参考文献需要神经网络,神经元活动必须具有无限精确性(可靠地表示任何有理数)。其他证明需要无限大小的神经网络。显然,这并不是那么实用。
但我开始怀疑现在是否真的有意义要求图灵的完整性。根据严格的定义,现在没有计算机系统是图灵完整的,因为它们都不能模拟无限的磁带。
有趣的是,如果编程语言规范完整或不完整,那么编程语言规范最常开放。这一切归结为问题,如果它们总是能够分配更多的内存,并且函数调用堆栈大小是无限的。大多数规范并没有真正指定这一点。当然,所有可用的实现都受到限制,因此编程语言的所有实际实现都不是图灵完成的。
所以,你可以说的是,所有的计算机系统都和有限状态机一样强大而不是更多。
这让我想到了一个问题:图灵完全有用这个术语有多大用处?
回到神经网络:对于神经网络(包括我们自己的大脑)的任何实际实现,它们将无法表示无数个状态,即通过严格定义图灵完整性,它们不是图灵完成。 如果神经网络图灵完全有意义那么问题呢?
他们是否像有限状态机一样强大的问题早已得到回答(1954年由明斯基回答,答案当然是肯定的)并且似乎也更容易回答。即,至少在理论上,这已经证明它们与任何计算机一样强大。
其他一些问题更多是关于我真正想知道的事情:
是否有任何理论术语可以说明计算机的计算能力? (鉴于其有限的记忆空间)
如何比较神经网络实际实现与计算机的计算能力? (如上所述,图灵完整性无用。)
答案 0 :(得分:47)
说明数学模型是图灵完成的要点是揭示模型执行任何计算的能力,给定足够数量的资源(即无限),而不是显示是否模型的具体实现确实具有这些资源。非图灵完整模型无法处理一组特定的计算,即使有足够的资源,也会显示出两种模式运作方式的差异,即使它们的数量有限资源即可。当然,要证明这个属性,你必须假设模型能够使用无限量的资源,但模型的这个属性即使资源是相关的有限的。强>
答案 1 :(得分:12)
复现神经网络的图灵完备性可能意味着:每个图灵机(有限状态头和无限带)的(有限)转换表可以通过有限递归神经网络(有限多个神经元)建模有限的许多州,特别是只有两个州。转换表定义了三个函数:
下一状态(当前状态,当前符号)
next-symbol(当前状态,当前符号)
方向(电流状态时,电流 - 符号)
这是一个递归神经网络可以执行这项任务的方式(只是一个非常原始的草图):
绿色神经元读取当前单元格中的符号(二进制表示),灰色神经元(初始静音)确定当前状态,红色神经元将新符号写入当前单元格,黄色神经元确定是否去左还是右。蓝色神经元是内部神经元(最初是静音)。
声称, 每个图灵机都有这样一个递归神经网络。
我想知道是否有一种系统的方法可以从给定的转换表构建这样的网络。
答案 2 :(得分:11)
当现代计算机被称为 Turing Complete 时,对于图灵所描述的无限存储设备存在一个未说出口的例外,这在有限的物理计算设备上显然是不可靠的。如果计算设备可以完成图灵机可以做的所有事情(无限存储),那么对于所有实际意图和目的,它都是图灵完整。通过这种不太严格的图灵完整性的定义,是的,许多神经网络可能是图灵完整。
当然可以创建一个不是图灵完整的。
答案 3 :(得分:10)
部分解决你的第二个问题:
神经网络具有universal approximators的属性 - 也就是说,它们可以将任何函数逼近任意精度。正是“精确度”部分使神经网络无需无限。
答案 4 :(得分:9)
常规前馈神经网络无法完成。实际上,它们相当于一个复杂的数学函数,可以进行大量的计算,但没有任何能力执行循环或其他控制流操作。
但是,如果您通过某种方式连接神经网络以访问有状态环境,那么可以将制作成图灵完整的计算机。
作为一个最简单的例子,你可以重新创建一个经典风格的图灵机:
然后你可以训练神经网络来模拟任何所需图灵机状态表/配置的动作(也许是通过监督学习另一台图灵机的动作?)
注意:使用某种形式的状态反馈重复运行前馈网络的想法基本上等同于递归神经网络。因此,你可以想到一个循环的神经网络 plus 重复运行它的逻辑,因为图灵完成了。您需要额外的逻辑(超出网络本身)以确保图灵完整性,因为有必要处理终止,重复和IO等事情。
答案 5 :(得分:7)
我认为图灵完整性的概念并不是要告诉我们某台计算机是否可以执行特定任务。
相反,它旨在判断特定语言是否能够表达特定任务。也就是说,我说它实际上是关于表达算法而不是表现它。
由于神经网络没有语言,因此需要根据神经网络而不是网络的能力来表达算法。所以我不知道你问题最后一点的答案!
答案 6 :(得分:4)
我认为关于图灵机的重要一点是,对于任何给定的输入和程序,机器只需要有限数量的磁带,假设它停止一段时间。这就是为什么我会说术语“图灵完成”很有用:你只需要有限的内存来在一些特定的输入上运行一个特定的图灵完成程序(如果程序停止)。但是如果你有一个非图灵完备的机器/语言/技术,它将无法模拟某些算法,无论你添加多少内存。
答案 7 :(得分:3)
了解您的系统在Chomsky层次结构中的哪个类几乎总是很好。这在更复杂的类中尤其重要,例如常规语言/有限自动机与无上下文语言。还有能力识别你试图解决的问题是哪个类也很重要,否则人们可能会尝试做愚蠢的事情,比如用正则表达式解析HTML或XML,这是不可能的。
让你的形式主义或系统完整的知识产生了一个声明,你可以用它来构建任何你想要的东西。它没有说实用性,只是解决问题的可能性或不可能性。考虑到图腾篷布时,这是非常真实的,但也有许多图灵完整的系统专门用于利基目的,没有人应该梦想在生产环境中用于通用工作。
简而言之,对Chomsky层次结构的深入了解将在很多情况下帮助您,而不仅仅是选择正确类型的解析器; regexp,pushdown,CFG或更强大,但也可用于选择正确类型的机器或形式化来表达流程。
答案 8 :(得分:3)
多年后,让我自己回答这个问题。
int64
内存地址限制之类的东西了。这些都是技术限制,可以通过大整数等方式解决。)因此,我们可以说 < em> PC的概念已完成图灵。经常引用的论文是On the computational power of neural nets, Siegelmann & Sonntag, 1992,该论文指出RNN的图灵完备。 本文假设我们在分母/分母中有无限制的有理数,即无限内存被编码为有理数或无限精度的浮点数。另请参见here。通常,我们不会以有理数(无限制)的方式对NN进行建模。当我们将自己限制为具有有限精度权重和激活的(R)NN时,本文中的证明就适用了,不再适用。因此,本文并不那么相关。
最近有一篇论文On the Practical Computational Power of Finite Precision RNNs for Language Recognition, Weiss et al, 2018正好解决了这个问题。
众所周知,大多数标准NN是universal approximators。这说明,给定任何函数(非恒定,有界和连续),并给定一些允许的阈值,您可以构造一个在允许的阈值内近似此函数的NN。 这是关于有限维向量空间的。当我们谈论可计算性时,我们谈论的是序列,因此我们有一个无限维向量空间。因此,此属性不太重要。
因此,要明确声明: 如果没有外部存储器,则标准RNN和LSTM都图灵不完整。 定义RNN的概念并没有直接方法,您可以在其中按需添加内存。 RNN的内存是最新的隐藏激活。添加更多的内存意味着更改NN,即添加新的神经元,从而增加其内部功能。这就像更改程序本身一样。
有Neural Turing machine (NTM)和一些类似的型号,它们具有某种外部存储器。 在这里,直接考虑一个NTM的概念,您可以根据需要添加内存。 因此,我们可以说 NTM的概念是图灵完成的。
有些细节,例如头部所用的注意力类型,需要一些调整。模型Differentiable neural computer (DNC)有一个后续版本,可以明确地解决此问题,并且还具有一些明确的机制来增加内存。
我们主要讨论了理论计算能力。 一个非常不同的问题是NN是否可以学习这种功能。即训练(梯度搜索)是否导致神经网络学习了可计算的功能。
我们可能将人脑(或任何大脑)解释为一种复杂的神经网络。我们还可以问一个问题,即人脑(模型)是否是图灵完整的。参见例如here。这个问题是一个棘手的问题。直觉表明我们能够执行任何类型的计算,因此人脑是图灵完整的。但是,我们在此处概述的论点表明RNN尚未完成图灵完善。同样重要的是记忆效应。在某些时候,人脑的记忆能力不足以对某些输入进行操作。因此,我们将需要外部存储器。因此,很明显,人脑和外部记忆是图灵完整的。
但是,人脑内存的一个方面与标准RNN有所不同:它可以高度概括,访问某些激活的寻址机制也不同。而且,它具有某种自适应权重(但是也只能存储有限的信息)。
答案 9 :(得分:-1)
基本上它意味着使用图灵完整的编程语言或架构 你可以执行各种各样的算法......主要是 - 任何一种算法。
非图灵语言的潜力更大。
答案 10 :(得分:-2)
答案很简单。如果您可以使用它模拟NOR或NAND门,那么它就是Turing Complete,假设剩下的只是将事物组合在一起的问题。