前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >AI向程序员老司机学习:从眼神的变化中寻找bug

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

作者头像
量子位
发布2019-04-23 10:47:20
3880
发布2019-04-23 10:47:20
举报
文章被收录于专栏:量子位
晓查 发自 凹非寺 量子位 报道 | 公众号 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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-03-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 量子位 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 晓查 发自 凹非寺 量子位 报道 | 公众号 QbitAI
相关产品与服务
NLP 服务
NLP 服务(Natural Language Process,NLP)深度整合了腾讯内部的 NLP 技术,提供多项智能文本处理和文本生成能力,包括词法分析、相似词召回、词相似度、句子相似度、文本润色、句子纠错、文本补全、句子生成等。满足各行业的文本智能需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档