Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Compiler construction 用于编译源代码的人工神经网络_Compiler Construction_Artificial Intelligence_Neural Network - Fatal编程技术网

Compiler construction 用于编译源代码的人工神经网络

Compiler construction 用于编译源代码的人工神经网络,compiler-construction,artificial-intelligence,neural-network,Compiler Construction,Artificial Intelligence,Neural Network,如果有一个人工神经网络,当它在数百万个源代码示例和编译结果上进行训练时,它可以将源代码编译成正确的输出,这是合理的吗?例如,一个接受过Python源代码和Python字节码培训的ANN,在给定Python程序时,可以将其正确编译为字节码。如果允许任意长的程序,则不能 如果您的NN是有限的,那么它只能生成有限数量的编译程序。但是,如果我们允许任意长的python程序,那么我们就有无限多的编译程序。因此,一个有限的神经网络不可能对所有的神经网络进行分类 即使使用长度有限的python程序,我认为这也

如果有一个人工神经网络,当它在数百万个源代码示例和编译结果上进行训练时,它可以将源代码编译成正确的输出,这是合理的吗?例如,一个接受过Python源代码和Python字节码培训的ANN,在给定Python程序时,可以将其正确编译为字节码。

如果允许任意长的程序,则不能

如果您的NN是有限的,那么它只能生成有限数量的编译程序。但是,如果我们允许任意长的python程序,那么我们就有无限多的编译程序。因此,一个有限的神经网络不可能对所有的神经网络进行分类


即使使用长度有限的python程序,我认为这也不太可能奏效。NNs是很好的分类任务,例如“这张照片里有人吗?”。编译是一个程序问题。两个非常相似的python程序可以具有非常不同的功能(您是否曾经错误地使用python缩进?)虽然这可能是一个非常有趣的认识论问题,但从技术角度来看,我认为这并不十分有趣:如果你考虑AI编程是如何发展的,你会发现第一种方法是沿着胡理思维的纯粹逻辑规则来处理的。例如,西蒙、肖和纽厄尔在1957年写的这本书(!)试图按照一般的逻辑原则在一个非常高的抽象层次上进行操作

驱动力是相信每个问题都可以形式化为逻辑问题,并使用具有相应推理规则的知识库来解决。显然,这并不适用于模式识别或(视觉、听觉等)感知等“琐碎”的东西。只有在遇到这些问题后,人工神经网络(包括人工神经网络)的想法才得到了宣传,并指出对于某些问题,形式化方法是不合适的


长话短说:对于将一种形式的(!)语言编译成另一种语言的问题,形式的(逻辑的)方法是最合适的。换言之:虽然可以用石头打开罐头,但我宁愿用开罐器……;)

根据科尔莫戈罗夫的叠加定理,神经网络可以复制任何连续函数,而编译器可以被视为一个非常复杂的函数。但这一点都不实用。

事实上,如果一次输入有限大小的代码段,您可以用有限的NN编译任意长的程序。我认为证明这一点的方法是:

  • 编译程序是一个可决定的问题(例如,它可以通过图灵机解决)
  • 您可以从与非门构建任何逻辑门
  • 您可以使用逻辑门构建图灵完整机器
  • 使用函数
    f

    (其中
    f(x)=1,如果x 0

    作为传递函数的神经网络的一个神经元,基本上只有两个相同权重的输入,这是一个与非门

所以你可以建立一个图灵完备的NN=>有一个NN理论上可以编译任何程序

,当然。这是你的问题吗?我知道这在理论上是可能的,但它是可信的吗?它需要的样本数量合理吗?我不是神经网络方面的专家,但考虑到当今的神经网络水平,我认为这在很大程度上是不合理的。你也许可以训练它检测语法上有效的python代码,但即使是这样也很重要。对于一种更简单的语言,或者作为语言之间的转换器,比如BF和Ook,怎么样?严格来说,没有编译器允许任意长的程序。这不是一个有意义的限制。一个有限的编译器可以编译无限多个不同的程序。有限神经网络不能。不管现实世界的编译器实际做什么,这都是正确的。有限编译器可以编译大量不同的程序。我不想说有无限多。所有编译器对递归深度、函数或变量的数量、源文件大小等都有限制。这些限制非常大,但不是无限的。此编译器函数的维数是多少?如何将python源代码映射到这些
n
值?(将源代码限制为n字节?)我不认为编译是一个n维连续函数。。。