C新智元报道 作者:kootenpv 来源:Github 译者:胡祥杰 【新智元导读】大家都知道神经网络目前还不能“编程”,但现在一项新的工作“Neual Complete”,朝着这个方向迈出了第一步。程序员 Pascal van Kooten训练了一个神经网络,可以自动补全另一个神经网络的代码,相当于神经网络在“编程”。现代码已在 Github 开源。
人工智能具有解决软件开发中的一个古老问题的潜力代码编写或操纵其他代码的能力的概念已经存在了很长时间,一般称为元编程(它实际上起源于20世纪50年代末的Lisp),它解决的难题,大多数目前都还在人们的想象之中。
听起来有些拗口,下面这个动图可以清晰地看到结果:
Neural Complete(神经网络补全技术)是一种基于生成LSTM 神经网络的自动补全技术,它不仅用python代码进行训练,但也被用于改善 python 源代码。
Neural Complete 的训练基于包含了keras 输入的文件。其结果是得到一个升级网络,经过训练后,可以帮助写神经网络的代码。 这一神经网络补全的不是一个单词,而是一整行的代码。使用前面行的代码信息来提供建议。 你可以想象,未来,每个人都有一个神经网络,基于自己的神经网络来自动地完成他们的个人脚本。
第一步的model已经写好,建议把它作为一个变量(model=Sequential)。 第二步的model已经写好,建议用它来代替(model.add(……))。结果显示,它可以使用文本。
最后一行的代码包含了一些错误,但是,如果有更多的数据和更加多的文本,它会变得更精准。 Neural Complete包含了两个模型:一个基于字符的模型还有一个python表征的模型。基于字符的模型带来的好处是,它在任何时刻都能补全;而python表征的模型只有在完全表征的状态下才能起作用(它不能完成一个词的补全)。但是,基于表征的模型是基于更高级别的单元(语义)的,它必须在大多数的时候都要做到可以理解。 基于字符的模型会参考之前的80个字符,而表征模型会参考此前的20个表征。 不幸的是,Github的API 不能通过文件名进行搜索,所以我写了一个抓取的脚本来收集专门针对keras源代码训练的python数据。 您可以更改搜索查询以收集您自己的数据。不要超过它来“骚扰”github。你需要更多的合理的结果! 这些模型只需要在26个脚本的上进行训练。
后端:使用keras来训练模型
前端是一个非常薄的神经网络层,与后端形成互通,以接收自动补全的建议。用Angular2 来写。dist文件夹已被包括在内,你可以轻松地自行运行它,无需求助于任何人。 对神经网络的代码进行自动补全,里面涉及的核心原理是了让一个神经网络模型通过训练了解另一个神经网络,进而能实现自动完善代码。 迄今为止,机器学习的专家倾向于聚焦那些为特定任务开发的AI 应用,比如人脸识别、自动驾驶、语音识别甚至是搜索。但是,如果这些类似的算法能够在不需要人为帮助、解释或者干预的情况下,理解它们自身的代码结构呢?正如他们理解人类的语言和图像一样。 如果代码开始对自己进行分析、自我修正并提升,且速度比认为的更快,那么技术的突破可能会来得更快。由此带来的可能性是无止境的:医学的进步、更加自然的机器人、更智能的手机、更少bug的软件,更少的银行欺诈等等。
3月27日,新智元开源生态AI技术峰会暨新智元2017创业大赛颁奖盛典隆重召开,包括“BAT”在内的中国主流 AI 公司、600多名行业精英齐聚,共同为2017中国人工智能的发展画上了浓墨重彩的一笔。 点击阅读原文,查阅文字版大会实录 访问以下链接,回顾大会盛况:
|
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|