【问题标题】:How to write a program that outputs source code [closed]如何编写输出源代码的程序[关闭]
【发布时间】:2017-02-19 00:00:53
【问题描述】:

这可能不适合问这个问题,但我对人工神经网络很感兴趣,想了解更多。

您如何设计一个网络并在源代码上对其进行训练,以便它能够为例如简单的数论问题提供程序?

这个研究领域的总称是什么?

【问题讨论】:

  • 我知道你想写一个基于神经网络的程序生成器,用示例程序训练后,可以解决数论问题,对吧?如果属实,那么您的问题非常幼稚,至少有两个原因。 1) 神经网络不处理字符串,甚至不处理格式不太好的语法表达式,2) 看起来相似的程序不一定会产生相似的结果(大多数以这种方式合成的程序只会失败或永远循环)。
  • 您(可能)想要解决的领域称为自动问题解决。 (也与 Automated Theorem Proving 有关,它并不是真正的 AI 分支。)
  • 感谢您的快速回答。 1)我知道神经网络不处理字符串,但如果模型有 N 个输出节点代表基本编程块(循环、条件跳转等),并且根据触发这些节点中的哪个节点来合成代码。
  • 这类似于让一群黑猩猩随机打字,直到其中一个人写下圣经。

标签: machine-learning neural-network tensorflow artificial-intelligence


【解决方案1】:

这是一个非常有趣且非常困难的问题领域。您可能需要几个月的时间才能阅读足够多的内容,甚至了解如何解决问题。这里有几件事可能会帮助您入门,它们更多的是展示您将面临的问题,而不是提供解决方案:

http://karpathy.github.io/2015/05/21/rnn-effectiveness/

然后阅读本文和相关论文:

https://arxiv.org/pdf/1410.5401v2.pdf

接下来,您可能想阅读解析树/AST 级别的程序合成和生成方面的经典论文(我认为大部分来自 MIT,90 年代初。)

祝你好运。这不是小事。

【讨论】:

  • 上学期我了解了解析器/编译器和 AST,我从中得到了这个想法。合成可能不是困难的部分(不要陷入循环/Halte-Problem),但问题是你试图合成什么......
  • 正如我所说,甚至很难理解如何解决问题:) 你可以 a) 找到一个大代码库,假设小的更改是错误修复,并尝试预测代码块是否有错误在他们身上 - 那会很酷! b) 阅读 Eurisko,并尝试弄清楚如何使用 ANN 制作现代版本。
猜你喜欢
  • 2014-01-15
  • 1970-01-01
  • 1970-01-01
  • 2012-12-28
  • 1970-01-01
  • 2014-05-29
  • 1970-01-01
  • 1970-01-01
  • 2015-04-27
相关资源
最近更新 更多