图灵的完整性有多有用? neural network是否完整?
在阅读关于经常性neural network的图灵完备性的一些论文时(例如:用neural network的图灵计算能力,Hava T. Siegelmann和Eduardo D. Sontag,1991),我感觉到那里给出的证据并不是真的实际的。 例如,参考论文需要一个neural network,其神经元活动必须具有无限的精确性(以可靠地表示任何有理数)。 其他certificate需要无限大小的neural network。 显然,这不是那么实际。
但是现在我开始想知道是否完全有理由要求图灵的完整性。 严格的定义是,目前没有计算机系统是图灵完备的,因为它们都不能模拟无限大的磁带。
有趣的是,如果编程语言规范完成或者没有完成,那么编程语言规范就会将其最常开放。 这一切都归结为是否能够分配更多的内存以及函数调用堆栈大小是否无限。 大多数规范没有真正指定这个。 当然,这里所有可用的实现都是有限的,所以编程语言的所有实际实现都不是图灵完整的。
所以,你可以说,所有的计算机系统和有限状态机一样强大,而不是更多。
这就引出了一个问题: 图灵完全可以说有多有用?
回到neural network:对于neural network(包括我们自己的大脑)的任何实际实现,它们将不能表示无限数量的状态,即通过对图灵完备性的严格定义,它们不是图灵完备的。 那么问题是否neural network是图灵完全有意义呢?
问题是否像有限状态机一样强大已经早得多了(1954年由明斯基回答,当然答案是肯定的),似乎也更容易回答。 也就是说,至less在理论上,这已经certificate它们和任何一台计算机一样强大。
其他一些问题更多的是我真正想知道的:
-
有什么理论术语可以对计算机的计算能力做更具体的说明吗? (由于其有限的内存空间)
-
如何比较neural network的实际实现与计算机的计算能力? (图灵完备性如上所述是没有用的。)
说明一个math模型是Turing Complete的意义在于,在给定足够数量的资源(即无限)的情况下 ,揭示模型执行任何计算的能力,而不是显示模型的具体实现是否具有这些资源。 即使有足够的资源 ,非图灵完整模型也不能处理一组特定的计算, 即使在资源有限的情况下 ,这两种模型的运行方式也会有所不同。 当然,为了certificate这个性质,你必须假设模型能够使用无限的资源,但是即使在资源有限的情况下, 这个模型的属性也是相关的。
当现代计算机被称为图灵完成时 ,对于无限存储设备Turing所描述的是一个不言而喻的例外,这对于有限的物理计算设备来说显然是不可能的。 如果计算设备可以完成图灵机可以做的所有事情(无限存储不能承受),那么对于所有的实际意图和目的来说, 图灵是完整的。 通过对图灵完备性的这个不太严格的定义,是的,许多neural network可能是图灵完备的 。
当然可以创build一个不完整的图灵 。
recursionneural network的图灵完备性可能意味着:每个图灵机(有限状态头和无限带)的(有限的)转换表可以用有限recursionneural network来build模(有限的许多神经元有许多有限的州,特别是只有两个州)。 转换表定义了三个function:
-
下一状态(当前状态,当前符号)
-
下一个符号(当前状态,当前符号)
-
方向(电stream状态时,电stream – 符号)
这是一个经常性的neural network如何执行这个任务(只是一个非常原始的草图):
绿色神经元读取当前细胞中的符号(二进制表示),灰色神经元(初始静音)确定当前状态,红色神经元将新符号写入当前细胞,黄色神经元确定是向左还是向右。 蓝色神经元是内部神经元(最初是静音的)。
要求是,每一个图灵机都有这样一个经常性的neural network。
我想知道是否有系统的方法从给定的转换表格构build这样一个networking。
为了部分解决您的第二个问题:
neural network具有通用逼近器的特性 – 也就是说,它们可以将任意函数逼近到任意的精度。 neural network不需要无限的“精确度”部分。
普通的前馈neural network并不完整 。 实际上,它们相当于一个复杂的math函数,它可能做了很多计算,但是没有任何执行循环或其他控制stream操作的能力。
但是,如果通过某种方式连接neural network来访问有状态的环境,则可以将其制作成一个完整的图灵机 。
作为一个最微不足道的例子,您可以重新创build一个经典的图灵机:
- neural network的input是磁带上的值和以前的状态
- neural network的输出是下一个状态和动作
然后,你可以训练neural network来模拟任何期望的图灵机状态表/configuration的动作(也许通过监督学习另一个图灵机的动作?)
注意:使用某种forms的状态反馈反复运行前馈networking的想法基本上等同于recursionneural network 。 所以你可以考虑一个经常性的neural network, 再加上逻辑运算,反复运行Turing完成。 您需要额外的逻辑(超过networking本身)来确保图灵的完整性,因为有必要处理终止,重复和IO等事情。
我认为图灵完备性的概念并不是要告诉我们一台特定的计算机是否可以执行特定的任务。
相反,它的目的是告诉一个特定的语言是否能够expression一个特定的任务。 也就是说,我想说的是expression一个algorithm,而不是执行它。
由于neural network没有语言,所以这是一个用neural network表示algorithm的问题,而不是networking的能力。 所以我不知道你的问题的最后一个答案!
我认为关于图灵机的一个重要的一点是,对于任何给定的input和程序,假定停止一段时间,机器将只需要有限数量的磁带。 这就是为什么我会说“turing complete”这个词是有用的:你只需要有限的内存就可以在一些特定的input上运行一个特定的turing完整的程序(如果程序暂停)。 但是如果你有一个非图灵完整的机器/语言/技术,它将无法模拟某些algorithm,无论你添加多less内存。
几乎总是很高兴知道你的系统在乔姆斯基层次中的哪一个类。 这在更紧缩的类中是非常重要的,比如正规语言/有限自动机和上下文无关语言。 也有能力识别你的问题,你正试图解决的问题也是重要的,否则可能会尝试做愚蠢的事情,如只用正则expression式parsingHTML或XML,这是不可能的。
知道你的forms主义或制度是完全的,就可以表明你可以用它来build立你想要的东西。 它没有提到实用性,只是解决问题的可能性或不可能性。 在考虑塔式塔架的时候这是痛苦的,但是也有许多塔林式的完整系统是专门为了小众目的而制造的,没有人应该梦想在生产环境中用于一般用途的工作。
简而言之,对乔姆斯基层次结构的了解将会在很多情况下帮助你,不仅是为了select正确的parsing器types, 正则expression式,下推式,CFG或更强大的function,还可以select正确的机器types或forms来表示进程。
基本上这意味着使用图灵语言或者图灵完成的体系结构
你可以执行各种各样的algorithm…主要是 – 任何一种。
非图灵语言的潜力要大得多。
答案很简单。 如果你可以用它来模拟一个NOR或一个NAND门,那么它就是Turing Complete,假设其余的只是一个结合在一起的问题。