选自ICLR、VentureBeat ITxinwen/2016/0503/51350.html">机器之心编译 参与:杨旋、李泽南、吴攀 想象一下人工智能在未来的应用:家庭服务机器人、遍布每个房间的亚马逊Echo Dot、快递无人机和家庭医疗诊断助手,这都是未来的美好景象。华丽的消费产品往往会捕获人们的眼光,但计算机背后的深层领域——软件开发的方式——却鲜有人关注。 想象一下计算机学会理解自我存在后它会做什么。当然,它们很快就会的,现代科技就可以做到,而且相信我们不会再等上太久。直到现在,机器学习的专家们仍倾向于训练执行特定任务的人工智能,例如面部识别、自动驾驶汽车、语音识别、甚至搜索引擎。如果所有这些算法开始阅读自己的代码结构——不通过人类的协助、解释或干预——就像它们在识别人类语言和图像一样,又会什么样呢? 如果代码开始分析自我——纠正错误并优化性能,而且速度大大超过人类——科学技术的发展速度将极大地提升。我们将会看到更多的可能:医学进步、智能化的机器人、更智能的手机、没有bug的软件、消灭所有欺诈支付页面等等。 人工智能具有解决软件代码中旧问题——这是让开发者最头疼的东西——的天生潜力。一段代码操作其他代码的方式——被称为元编程(metaprogramming )——已经存在很久了(它在1950年代的Lisp中被创造),但目前这些代码只能解决人类想象范围之内的问题。 人工智能可以超过这个界限。 使用人工智能,计算机可以查看软件项目历史的所有代码,在每一种你可以想象的编程语言中瞬间调试和改进每一行代码。 在人工智能的帮助下,即使没有经验的程序员也可以通过应用让自己的想法实现,计算机会帮助他构建程序。这就像在几天之内完成攻克癌症的研究一样,这将是巨大的技术飞跃。 科技的发展最终会让这个场景成真,事实上,已经有人开始朝这方面努力了。谷歌TensorFlow可以让每个开发者在其应用上构建神经网络,用以在图片中识别人和物体——你不需要有计算机科学的博士学位就可以实现它,让业余人士开发人工智能程序可能是人工智能历史上最大的突破。 一些公司已经在其内部项目管理系统中引入了人工智能,比如谷歌——这家科技巨头构建了一个使用机器学习和统计分析来预测代码是否有潜在缺陷的错误分析程序。W3C主席Ilya Grigorik发起了开源工具bugspots,受到了人们的欢迎。 另一个例子是Siri创始人的新项目Viv。正如最近的一篇《连线》文章中所述,Viv不仅仅局限于自然语言处理。 它还可以基于英语单词构建复杂的自适应计算机程序——即用代码编写代码。因为编写的代码是由Viv的开发者训练和优化的,它不是广义的自动代码编写,但它在这个方向上前进了一步。 我们还能在爱好者的社区中看到一些进展。 Emil Schutte在他的网站上留下了一个挑衅的语句:“厌倦了编写代码? 我也是!把它交给Stack Overflow吧!”他随后展示的内容证明了完整的工作代码可以在Stack Overflow的大型数据库的编程知识中自动生成。 随着越来越多此类技术的上线和成熟,机器将会在很多任务的处理中超越人类:视觉处理、语音识别、打游戏,马上就会是编程了。 那什么时候计算机可以理解自己呢?很快这一天就会到来,当这一天来临时,你会看到所有需要软件的领域都会出现重大突破。 下面,机器之心摘要地介绍了提交给第 5 届国际学习表征会议(ICLR 2017,将于 2017 年 4 月 24 - 26 在法国土伦举办)的关于自动编程(automatic programming)的 12 篇论文,希望能够帮助你系统性地了解现在自动编程技术的发展状况和前沿思想。我们为每篇论文都生成了一个二维码,长按即可阅读。 1.DeepCoder:学习编程(DeepCoder: Learning to Write Programs) 摘要:我们首次提出了使用深度学习通过输入输出样本来解决编程竞赛风格的问题(programming competition-style problems)的方法。这个方法就是通过训练一个神经网络来预测一个通过输入值生成输出值的程序的属性。我们使用神经网络的预测功能来增强那些来自编程语言社区,包括枚举搜索(enumerative search)和基于 SMT 的解算器(SMT-based solver)的搜索技术。经验表明,我们的方法在强大的非增强基线(non-augmented baselines)和循环神经网络方法上也可以大幅度地提升速度,并且我们可以把编程竞赛网站上那些复杂的问题转化为简单的问题进行解决。 2. 具有连续和离散寻址方案的动态神经图灵机(Dynamic Neural Turing Machine with Continuous and Discrete Addressing Schemes) (责任编辑:本港台直播) |