Compiler construction 用于编译源代码的人工神经网络
如果有一个人工神经网络,当它在数百万个源代码示例和编译结果上进行训练时,它可以将源代码编译成正确的输出,这是合理的吗?例如,一个接受过Python源代码和Python字节码培训的ANN,在给定Python程序时,可以将其正确编译为字节码。如果允许任意长的程序,则不能 如果您的NN是有限的,那么它只能生成有限数量的编译程序。但是,如果我们允许任意长的python程序,那么我们就有无限多的编译程序。因此,一个有限的神经网络不可能对所有的神经网络进行分类Compiler construction 用于编译源代码的人工神经网络,compiler-construction,artificial-intelligence,neural-network,Compiler Construction,Artificial Intelligence,Neural Network,如果有一个人工神经网络,当它在数百万个源代码示例和编译结果上进行训练时,它可以将源代码编译成正确的输出,这是合理的吗?例如,一个接受过Python源代码和Python字节码培训的ANN,在给定Python程序时,可以将其正确编译为字节码。如果允许任意长的程序,则不能 如果您的NN是有限的,那么它只能生成有限数量的编译程序。但是,如果我们允许任意长的python程序,那么我们就有无限多的编译程序。因此,一个有限的神经网络不可能对所有的神经网络进行分类 即使使用长度有限的python程序,我认为这也
即使使用长度有限的python程序,我认为这也不太可能奏效。NNs是很好的分类任务,例如“这张照片里有人吗?”。编译是一个程序问题。两个非常相似的python程序可以具有非常不同的功能(您是否曾经错误地使用python缩进?)虽然这可能是一个非常有趣的认识论问题,但从技术角度来看,我认为这并不十分有趣:如果你考虑AI编程是如何发展的,你会发现第一种方法是沿着胡理思维的纯粹逻辑规则来处理的。例如,西蒙、肖和纽厄尔在1957年写的这本书(!)试图按照一般的逻辑原则在一个非常高的抽象层次上进行操作 驱动力是相信每个问题都可以形式化为逻辑问题,并使用具有相应推理规则的知识库来解决。显然,这并不适用于模式识别或(视觉、听觉等)感知等“琐碎”的东西。只有在遇到这些问题后,人工神经网络(包括人工神经网络)的想法才得到了宣传,并指出对于某些问题,形式化方法是不合适的
长话短说:对于将一种形式的(!)语言编译成另一种语言的问题,形式的(逻辑的)方法是最合适的。换言之:虽然可以用石头打开罐头,但我宁愿用开罐器……;) 根据科尔莫戈罗夫的叠加定理,神经网络可以复制任何连续函数,而编译器可以被视为一个非常复杂的函数。但这一点都不实用。事实上,如果一次输入有限大小的代码段,您可以用有限的NN编译任意长的程序。我认为证明这一点的方法是:
- 编译程序是一个可决定的问题(例如,它可以通过图灵机解决)
- 您可以从与非门构建任何逻辑门
- 您可以使用逻辑门构建图灵完整机器
- 使用函数
f
(其中
)f(x)=1,如果x 0
作为传递函数的神经网络的一个神经元,基本上只有两个相同权重的输入,这是一个与非门
所以你可以建立一个图灵完备的NN=>有一个NN理论上可以编译任何程序,当然。这是你的问题吗?我知道这在理论上是可能的,但它是可信的吗?它需要的样本数量合理吗?我不是神经网络方面的专家,但考虑到当今的神经网络水平,我认为这在很大程度上是不合理的。你也许可以训练它检测语法上有效的python代码,但即使是这样也很重要。对于一种更简单的语言,或者作为语言之间的转换器,比如BF和Ook,怎么样?严格来说,没有编译器允许任意长的程序。这不是一个有意义的限制。一个有限的编译器可以编译无限多个不同的程序。有限神经网络不能。不管现实世界的编译器实际做什么,这都是正确的。有限编译器可以编译大量不同的程序。我不想说有无限多。所有编译器对递归深度、函数或变量的数量、源文件大小等都有限制。这些限制非常大,但不是无限的。此编译器函数的维数是多少?如何将python源代码映射到这些
n
值?(将源代码限制为n字节?)我不认为编译是一个n维连续函数。。。