晓查 发自 凹非寺 
量子位 报道 | 公众号 QbitAI

用AI找bug这件事,有人尝试过,结果翻车了。美国网站Yelp的程序员们试图让AI帮自己找bug,岂料AI却删库跑路,最后只能用回滚的办法挽回损失。

当然,这只是程序员开的一个玩笑。但是让AI找bug一直是程序员们美好的愿望。

育碧和Mozilla曾开发过一个AI,能从过去代码库的错误中学习找bug,并在今后提交新代码时标出可能的bug。

然而这些在程序员老司机面前都是渣渣,大神们往往一个眼神,就能直接定位到bug所在的位置。如果让AI直接向大神学习,岂不更快?

日本奈良先端科学技术大学院大学(名字有些长,下面简称NAIST)的研究人员真的做到了,他们把眼球追踪的研究用在软件开发领域,构建了一个基于模仿学习(IL)的框架,让智能体从程序员的眼部活动中学习找bug、打补丁、写注释。

以往的AI找bug方法是从文本特征中学习。而程序员独有的注意力策略可以节省程序理解和维护的时间。大神们会将注意力集中在程序的重要信息上,仅浏览源代码中的关键字。

NAIST的AI就是在软件开发中模仿程序员的视觉注意力。结合程序员眼睛注视的数据,智能体可以获得到过去难以学习到的注意力策略。

由于程序代码是文本序列,研究人员用自然语言处理的方法来设计智能体。这个智能体包括两个深度神经网络:

第一部分是一个RNN,用来对代码片段的全局上下文进行编码。第二部分是指定任务解码器,用上一步的编码数据来预测下一步的token。

代码片段和编程环境被当做一系列token或关键字,智能体被限制专注于模仿程序员视觉注意力的特定子标记,作为输入当前状态并输出所需的操作。

这种方法还需要大量的演示数据。研究人员建议使用生成对抗网络,让AI学习编程大神们的示范操作,而不仅仅是模仿。

总的来说,这种方法利用了模仿学习,让智能体从人类示范中收集相关复杂任务的知识。智能体由行为克隆(behavioral cloning)训练的模型表示。代码片段和编程环境被认为是一系列token或关键字,智能体被限制去关注模仿程序员注意到的特定代码,作为当前状态的输入,并输出所需的操作。

仅仅依靠眼部数据还不够,NAIST团队还建议用脑电图(EEG)读数视觉注意力的补充数据。如果这个模型在生产环境中使用,可以提高AI智能体在软件开发任务中的性能。

在论文的最后,研究人员说,即使没有语言描述,婴儿也能从父母的演示中学到了很多东西。他们或许是从婴儿行为获得的启发。看来AI也逃脱不了“复读机”的命运。

论文链接:https://arxiv.org/abs/1903.06320

订阅AI内参,获取AI行业资讯

加入社群

量子位AI社群开始招募啦,量子位社群分:AI讨论群、AI+行业群、AI技术群;

欢迎对AI感兴趣的同学,在量子位公众号(QbitAI)对话界面回复关键字“微信群”,获取入群方式。(技术群与AI+行业群需经过审核,审核较严,敬请谅解)

诚挚招聘

量子位正在招募编辑/记者,工作地点在北京中关村。期待有才气、有热情的同学加入我们!相关细节,请在量子位公众号(QbitAI)对话界面,回复“招聘”两个字。

量子位 QbitAI · 头条号签约作者

վ'ᴗ' ի 追踪AI技术和产品新动态

喜欢就点这里吧 !

AI向程序员老司机学习:从眼神的变化中寻找bug相关推荐

  1. 高考已经过去了?听听程序员老司机怎么说(深度好文)

    作者 | 三级狗 整理 | 年素清 深夜了,打开笔记本,中间夹着一张草稿纸. 我回忆起那个周一的下午的第七节课,班主任让我在班上分享自己的学习方法,我站在讲台上挥洒热情的二十分钟,为了那二十分钟我不吃 ...

  2. 程序员老司机“随意开车”,恶搞代码让你分分钟玩死程序员!

    1.问题描述 在屏幕上画出奥运五环旗 整人代码: 你打开好友的聊天对话框,然后记下在你QQ里好友的昵称,把下面代码里的xx替换一下,就可以自定义发送QQ信息到好友的次数(代码里的数字10改一下即可). ...

  3. 导航编程用c语言还是c加加,C语言/C加加大神程序员老司机带你玩转C语言指针详解...

    很多初学编程的小伙伴都会选择C语言作为第一门学习的编程语言,因为C语言作为一门底层基础语言相对于其他的高层语言来说更加容易学习.可以来帮助正在学习编程的小伙伴更加快速的了解计算机原理. 但是初学C语言 ...

  4. 程序员辛酸泪——当程序员老去,程序员又何去何从

    程序员将代码注入生命去打造互联网的浪潮之巅,当有一天他们老了,会走向那里,会做些什么?表面光鲜的"程序猿"的真实生活的背面是不为人知的辛酸史,让我们一起去了解程序员这个职业吧! 当 ...

  5. 程序员的英语学习!对于像进一步提升自己的人来说,很重要哟!

    转载自:http://www.cnblogs.com/haoyifei/p/5687235.html 学习英语的重要性: 1.要是在给类或方法起名时,用拼音来学,那可真要贻笑大方了! 之前在视频中见过 ...

  6. 转:浅谈程序员的英语学习

    转自:http://www.cnblogs.com/haoyifei/p/5687235.html 浅谈程序员的英语学习 作为在中国工作的程序员,不懂得英语似乎也不妨碍找到好工作,升职加薪.但程序员这 ...

  7. 好程序员web前端学习路线分享css3中的渐进增强和降级

    好程序员web前端学习路线分享css3中的渐进增强和降级,渐进增强和降级这两个概念是在 CSS3 出现之后火起来的.由于低级浏览器不支持 CSS3,但是 CSS3 特效太优秀不忍放弃,所以在高级浏览器 ...

  8. AI对程序员带来了什么影响?

    AI对程序员行业带来了多方面的影响,主要包括以下几点: 自动化代码生成:AI可以通过学习和分析已有的代码,自动化生成新的代码.这可以提高程序员的开发效率,但也可能导致部分工作被自动化取代. 自动化测试 ...

  9. 浅谈程序员的英语学习

    作为在中国工作的程序员,不懂得英语似乎也不妨碍找到好工作,升职加薪.但程序员这个工种则稍有不同,因为程序,尤其是高级语言,基本上都是由英语 和数字表达式构成的.英语对于程序员十分重要.我的大学本科全部 ...

最新文章

  1. AgileConfig 1.5 发布 - 支持多环境配置
  2. 现代软件工程的《构建之法》
  3. C++的new、delete需要注意的一点:使用危险函数导致的越界CRT detected that the application wrote to memory after end of heap
  4. leetcode197. 上升的温度(SQL)
  5. vue 图片拖动加载 类似于地图_前端性能优化之图片懒加载(附vue自定义指令)...
  6. arch linux 时间,archlinux入门--设置时钟 - webdancer's Blog
  7. 为什么物联网产品迫切需要良好的 UI/UX 设计?
  8. Android 多媒体【转】
  9. anaconda navigator更新_Python 数据分析答疑 1:安装 Anaconda
  10. [ACM_几何] F. 3D Triangles (三维三角行相交)
  11. 网管学习日记-MPLS-手工配置LSP
  12. RocketMQ(十四)RocketMQ消息重试机制
  13. Python及IPython安装使用
  14. [转帖]变速齿轮的一种实现方法(内有中断门的创建与调用)
  15. 欧姆龙CP1H+CIF11与施耐德ATV变频器通讯程序
  16. mysql 模糊查询 查询条件为多个
  17. C# Spire.Pdf 无限制 使用教程
  18. [Error] expected primary-expression before '' token是什么意思
  19. oracle导出数据库dmp文件
  20. 9.16 内存、外存与外设

热门文章

  1. Google AI 骗过了 Google,工程师竟无计可施?
  2. 在传统企业做互联网架构是什么感受?
  3. @程序员,全面进入万物互联时代必不可缺的 12 大开发平台
  4. 微信数据有望彻底删除了!史上最严隐私法规 GDPR 正式推行
  5. 怎么让照片变年轻_做了隆鼻,至少年轻5岁
  6. Java定时任务原理
  7. Linux服务器系统管理优化,Linux服务器性能管理与优化
  8. 表达式 jsp_[JSTL表达式] -JSTL中的所有,都在这
  9. python取出满足条件的行_numpy ndarray 取出满足特定条件的某些行实例
  10. win10怎么用计算机的搜索,win10 搜索用不了的问题