如果人工神经网络在接受数百万源代码示例和编译结果的培训后,可以将源代码编译成正确的输出,那么它是否合理?例如,一个受过Python源代码和生成的Python字节码训练的ANN,在给定Python程序时,可以将其正确编译为字节码。
答案 0 :(得分:2)
如果您允许任意长的程序,则不会。
如果您的NN是有限的,那么它只能生成有限数量的编译程序。但是,如果我们允许任意长的python程序,那么我们有无限数量的编译程序。因此,有限的NN不可能对所有这些进行分类。
即使有一个有限长度的python程序,我认为这不太可行。 NN是好的和分类任务,例如,“这张照片中是否有人?”。编译是一个程序问题。两个非常相似的python程序可以有非常不同的功能(你有没有让你的Python缩进错误?)。
答案 1 :(得分:2)
虽然这可能是一个非常有趣的认识论问题 - 在我看来 - 从技术角度来看并不是很有趣:如果考虑如何开发AI编程,你会发现第一种方法是在处理纯粹的<人类在思考时操作的em>逻辑规则。例如,Simon,Shaw和Newell在1957年写的General Problem Solver(!)试图按照一般的逻辑原则在非常高的抽象层次上运作。
驱动力是相信每个问题都可以形式化为逻辑问题,并通过使用具有相应推理规则的知识库来解决。显然,这并不适用于作为模式识别或(视觉,听觉等)感知的“微不足道”的东西。只有在遇到此类问题后,Soft Computing(包括人工神经网络)的想法才能获得宣传,并指出对于某些问题,正式方法并非适当。
简而言之:对于将正式(!)语言编译成另一种语言的问题,正式(逻辑)方法是最合适的。换句话说:虽然可能甚至可以用石头打开罐头,但我宁愿使用开罐器......;)
答案 2 :(得分:0)
通过Kolmogorov的叠加定理,神经网络可以重现任何连续函数,编译器可以被视为一个非常复杂的函数。但它根本不可行。
答案 3 :(得分:0)
实际上,如果一次输入有限大小的代码段,则可以使用有限的NN编译任意长的程序。我认为有一种方法可以证明这一点:
f
f(x) = 1 if x <= 0, f(x) = 0 if x > 0
)因此您可以构建图灵完整的NN =>有一个可以编译任何程序的NN