Answers:
背景
我们首先必须回顾计算理论中的一些概念。的算法是用于计算一个函数的过程。给定输入,算法必须在有限的步骤中产生正确的输出,然后终止。说一个函数是可计算的意味着存在一种计算它的算法。在所有函数的无穷集合中,大多数不是可计算的。图灵机是一种数学模型,可以将计算概念形式化。还存在其他等效模型,但图灵机是标准的“参考模型”。根据教会图灵的论点,图灵机可以实现任何算法,从而可以计算所有可计算函数。图灵机的任何特定实例仅计算特定功能。但是,存在一类特殊的图灵机,称为通用图灵机,它可以为任何输入模拟任何其他图灵机。他们通过将要模拟的机器(及其输入)描述作为自己输入的一部分来进行此操作。因此,通用图灵机的任何特定实例都可以计算任何可计算的函数(即可以实现任何算法)。具有此功能的任何系统都称为图灵完成。证明系统是图灵完整的一种方法是证明它可以模拟通用图灵机。许多系统已经证明是图灵完整的(例如,大多数编程语言,某些细胞自动机和量子力学)。
递归神经网络
下列论文表明,对于任何可计算函数,都存在一个可以对其进行计算的有限递归神经网络(RNN)。此外,存在有限的图灵完备的RNN,因此可以实现任何算法。
Siegelmann和Sontag(1992)。关于神经网络的计算能力
他们使用包含有限数量的循环连接单元的网络,这些单元在每个时间点都接收外部输入。每个单元的状态由其输入的加权总和(加上偏置)给出,并通过非线性激活函数运行。激活函数是饱和线性函数,它是S型曲线的分段线性近似。权重和偏差是固定的,因此不会发生学习。
网络执行从二进制输入序列到二进制输出序列的映射。网络有两个外部输入,它们输入到所有单元:“数据线”和“验证线”。数据线包含零和一的输入序列,输入序列完成后为零。验证行使网络知道何时发生输入序列。在输入序列的持续时间内,它包含一个,然后在输入序列结束后包含零。一个单元被认为是“输出单元”。它输出零以产生任意延迟,然后输出零和一的输出序列,在输出序列完成后输出零。另一个单位被视为“验证单位”,让我们知道何时发生输出序列。
尽管这些RNN将二进制输入序列映射到二进制输出序列,但我们可能对在各种其他数学对象(其他类型的数字,向量,图像,图形等)上定义的函数感兴趣。但是,对于任何可计算的功能,这些其他类型的对象都可以编码为二进制序列(例如,有关使用自然数编码其他对象的描述,请参见此处,而自然数又可以二进制表示)。
结果
他们表明,对于每个可计算的函数,都有一个可以计算它的有限RNN(具有上述形式)。他们通过显示可以使用RNN显式模拟具有两个堆栈的下推自动机来实现此目的。这是另一个在计算上等效于图灵机的模型。图灵机可以计算任何可计算的函数。任何图灵机都可以通过具有两个堆栈的下推自动机进行模拟。具有两个堆栈的任何下推自动机都可以通过RNN进行模拟。因此,RNN可以计算任何可计算函数。此外,由于某些图灵机是通用的,因此模拟它们的RNN是图灵完整的,因此可以实现任何算法。特别是,它们表明存在1058个或更少单元的图灵完整RNN。
其他后果
模拟结果的有趣结果是,关于RNN行为的某些问题尚不确定。这意味着没有算法可以对任意RNN进行回答(尽管在特定 RNN 的情况下它们可能是可以回答的)。例如,给定单位是否取值为0的问题尚不确定。如果人们通常能够回答这个问题,就有可能解决图灵机的停机问题,这是不确定的。
计算能力
在以上论文中,所有网络参数和状态均为有理数。这很重要,因为它限制了RNN的功能,并使生成的网络更加真实。原因是有理数是可计算的数,这意味着存在一种用于以任意精度计算它们的算法。大多数实数是不可计算的,因此无法访问-即使是功能最强大的图灵机也无法表示它们,许多人怀疑它们甚至可以在物理世界中表示出来。当我们在数字计算机上处理“实数”时,我们正在访问甚至更小的子集(例如64位浮点数)。表示任意实数将需要无限的信息。
该论文说,使网络能够访问实数将进一步提高计算能力,这是图灵机所不能提供的。西格尔曼(Siegelmann)发表了许多其他论文,探讨了这种“超级图灵”功能。但是,重要的是要注意这些是数学模型,其结果并不意味着这样的机器实际上可以存在于物理世界中。有充分的理由认为它不能,尽管这是一个开放的问题。
我认为这就是您要寻找的。这个家伙证明,只要网络具有足够的隐藏单元,多层甚至单层前馈网络都可以近似任何功能。
Hornik,K。(1991)。多层前馈网络的逼近能力。神经网络,4(2),251-257。