AI 生成的代码可信吗?编写的代码有 Bug 吗?
编译 | 禾木木
出品 | AI科技大本营(ID:rgznai100)
即使是帮助开发人员编写软件的工具也会产生类似的bug。
目前,大部分的软件开发人员会让 AI 帮助开发者们编写代码,但是开发人员发现 AI 会像程序员的代码一样还是存有 bug。
去年 6 月,提供托管和代码协作工具的微软子公司 GitHub 发布了一个测试版的程序,该程序使用人工智能来帮助程序员。开始输入命令、数据库查询或对 API 的请求,Copilot 的程序将猜测您的意图并编写其余部分。
注册测试 Copilot 的生物技术公司的数据科学家Alex Naka 表示,该程序非常有用,并且改变了他的工作方式。“它让我花更少的时间跳转到浏览器来查找 API 文档或 Stack Overflow 上的示例,”他说。“感觉有点像我的工作已经从代码生成器转变为代码鉴别器。”
但是 Naka 发现错误会以不同的方式渗透到他的代码中。“有时我在接受其中一项建议时会遗漏某种微妙的错误,”他说。“而且很难追踪到这一点,也许是因为它所犯的错误似乎与我所犯的错误不同。”
AI 生成的代码错误可能更高
AI 生成错误代码的风险可能高得惊人。纽约大学的研究人员最近分析了 Copilot 生成的代码,发现对于某些安全性至关重要的任务,该代码大约有 40% 的时间包含安全漏洞。
参与分析的纽约大学教授 Brendan Dolan-Gavitt 说,这个数字“比我预期的要高一点”。“但 Copilot 的训练方式实际上并不是为了编写正确的代码——它只是根据给定的提示生成那种文本。”
尽管存在这些缺陷,Copilot 和类似的人工智能工具可能预示着软件开发人员编写代码的方式将发生翻天覆地的变化。人们越来越有兴趣使用人工智能来帮助自动化更平凡的工作。但 Copilot 也强调了当今人工智能技术的一些缺陷。
AI 编码工具
在分析 Copilot 插件可用的代码时,Dolan-Gavitt 发现它包含一个受限短语列表。这些显然是为了防止系统脱口而出冒犯性信息或复制其他人编写的知名代码。
GitHub 研究副总裁兼 Copilot 开发人员之一 Oege de Moor 表示,安全性从一开始就是一个问题。他表示,纽约大学研究人员引用的有缺陷代码的百分比仅与更可能存在安全缺陷的代码子集相关。
De Moor 发明了 CodeQL,这是纽约大学研究人员使用的一种工具,可以自动识别代码中的错误。他说 GitHub 建议开发人员将 Copilot 与 CodeQL 一起使用,以确保他们的工作安全。
GitHub 程序建立在 OpenAI 开发的人工智能模型之上,OpenAI 是一家在机器学习领域从事前沿工作的著名人工智能公司。该模型称为 Codex,由一个大型人工神经网络组成,经过训练可以预测文本和计算机代码中的下一个字符。该算法提取了存储在 GitHub 上的数十亿行代码用来学习如何编写代码,但并非全部都是完美的。
OpenAI 在 Codex 之上构建了自己的 AI 编码工具,可以执行一些令人惊叹的编码技巧。它可以将类型化指令(例如“创建 1 到 100 之间的随机变量数组,然后返回其中最大的一个”)转换为多种编程语言的工作代码。
同一个 OpenAI 程序的另一个版本,称为 GPT-3,可以在给定的主题上生成连贯的文本,但它也可以从网络上学到有攻击性或有偏见的语言。
Copilot 和 Codex 已经让一些开发人员怀疑 AI 是否可以将它们自动化。事实上,正如 Naka 的经验所示,开发人员需要相当的技能才能使用该程序,因为他们经常必须审查或调整其建议。
结 语
纽约大学参与 Copilot 代码分析的博士后研究员 Hammond Pearce 表示,该程序有时会产生有问题的代码,因为它不能完全理解一段代码想要做什么。“漏洞通常是由于缺乏开发人员需要了解的上下文造成的,”他说。
一些开发人员担心人工智能已经养成了坏习惯。曾尝试使用 AI 生成代码但尚未尝试使用 Copilot 的软件开发人员 Maxim Khailo 表示“作为一个行业,我们一直在努力摆脱复制粘贴解决方案,现在 Copilot 已经创建了一个增压版本。”
Khailo 说黑客可能会干扰像 Copilot 这样的程序。“如果我是个坏人,我会做的就是在 GitHub 上创建易受攻击的代码项目,通过在黑市上购买 GitHub 明星来人为地提高它们的知名度,并希望它成为下一轮训练的语料库的一部分。”
GitHub 和 OpenAI 都表示,相反,他们的 AI 编码工具只会变得不那么容易出错。OpenAI 表示它会手动和使用自动化工具来审查项目和编码。
GitHub 的 De Moor 表示,最近对 Copilot 的更新应该降低了安全漏洞的频率。但他补充说,他的团队正在探索其他提高 Copilot 输出的方法。一种是删除底层 AI 模型从中学习的不良示例。另一种可能是使用强化学习,在游戏和其他领域产生了一些令人印象深刻的结果的人工智能技术,来自动发现不良输出,包括以前看不见的例子。“正在发生巨大的改进,”他说。“几乎无法想象一年后它会是什么样子。”
参考链接:
https://www.wired.com/story/ai-write-code-like-humans-bugs/
本文由AI科技大本营翻译,转载请注明出处。
相关文章:

嵌入式开发之信号采集同步---VSYNC和HSYNC的作用以及它们两者之间的关系
VSYNC和HSYNC的作用以及它们两者之间的关系 VSYNC和HSYNC的作用以及它们两者之间的关系 VSYNC和HSYNC是什么 VSYNC: vertical synchronization,指与显示器的帧数同步。 简单来说就是启用了VSYNC的渲染过程,帧数不会超过显示器的帧数,一个同步…

对ListenSocket 的研究(四)
对postmaster.c 中的 readmask,rmask,nsocket等进行分析,可以看到:它们之间有如下的关系(与细节无关的代码省略):复制代码/* * Initialise the masks for select() for the ports we are listenin…

MySQL下的NoSQL解决方案HandlerSocket
目前使用MySQL的网站,多半同时使用Memcache作为键值缓存。虽然这样的架构极其流行,有众多成功的案例,但过于依赖Memcache,无形中让Memcache成为故障的根源: Memcache数据一致性的问题:当MySQL数据变化后&a…

人群距离监测 DeepSOCIAL 最全汉化论文+源码导读
作者 |神经星星来源 |HyperAI超神经By 超神经内容一览:在疫情期间,公共场所中尽量避免人群聚集,可以有效控制疫情扩散。英国利兹大学的研究团队开源了 DeepSOCIAL 人群距离监测项目,通过 YOLOv4SORT 的方式快速实现了这一应用。关…

堆和栈的差别(转过无数次的文章)
一、预备知识—程序的内存分配 一个由C/C编译的程序占用的内存分为下面几个部分 1、栈区(stack)— 由编译器自己主动分配释放 ,存放函数的參数值,局部变量的值等。其 操作方式相似于数据结构中的栈。 2、堆区&…

ARM WFI和WFE指令【转】
本文转载至:http://www.wowotech.net/armv8a_arch/wfe_wfi.html 1. 前言 蜗蜗很早以前就知道有WFI和WFE这两个指令存在,但一直似懂非懂。最近准备研究CPU idle framework,由于WFI是让CPU进入idle状态的一种方法,就下决心把它们弄清…

分享几个用 Python 给图片添加水印的方法,简单实用
作者 |俊欣来源 |关于数据分析与可视化今天来分享几种可以给图片添加水印的方法,都是十分的简单实用,大家在看了之后也可以私底下去自己试试,有些方法需要的代码量就比较少,有些方法需要的代码量就稍微多一些,那我们开…

Apache服务器下使用 ab 命令进行压力测试
ab是Apache超文本传输协议(HTTP)的性能测试工具。 其设计意图是描绘当前所安装的Apache的执行性能,主要是显示你安装的Apache每秒可以处理多少个请求. #ab -v可以看出其基本信息 #ab -n1000 -c10 http://localhost:81/t.php 这是一个基本命令 -n1000表示总请求数为…

《Objective-c》Foundation框架 -(字符串:NSString和NSMutableString)
一、NSString(不可变字符串) 1.创建字符串的方式:(利用对象方法) 方式一:最快速的创建 方式二: 方式三: 方式四: 方式五:NSUTF8StringEncoding 用到中文就可以…
基于Vue, Vuex 和 ElementUI 构建轻量单页Hexo主题Lite
Hexo Theme Lite Keep Calm, Lite and Writing.light single page blog application theme, using Vue, Vuex, ElementUI and so on. 一款轻量单页博客主题,基于Vue, Vuex 和 ElementUI 构建, 工具语言 Typescript Live Demo Demo | 在线演示 Github 项目地址 Previ…

怎么关闭wordpress评论
1、要是关闭某一篇文章的评论,在发表文章的时候,在下面有个“讨论”,把"允许评论"去掉勾选就可以了。 2、要是关闭所有文章的评论,在“设置”-“讨论设置”把“默认文章设置”中的“允许访客对新文章发表评论 ”不再勾…

ACM-ICPC历届世界总冠军名单1977-2015
为什么80%的码农都做不了架构师?>>> ACM-ICPC历届世界总冠军1977-2015 更新时间2016-04-20 17:39 年份总决赛地点冠军大学国家2015年摩洛哥马拉喀什聖彼得堡國立資訊科技、機械與光學大學 (破纪录解出全部题目)俄罗斯2014…

AI 盯上了外包司机,看后视镜就被扣分,奖金拜拜!
整理 | 梦依丹 来源 | CSDN 生活在科技领先时代的我们,每天无不被算法支配着,从衣食住行到工作中的决策参考。以前在电影中见到的AIer控制人类的场景,越来越现实化。 AI算法不断优化之下,有些企业直接通过AI来给员工打绩效&…

用 Handler 轻松实现专属Android定时器
今年在项目中发现为了实现倒计时、时间段的延迟执行、时间段的轮询执行任务,都是采用Handler postDelayed(runnable,delayMillis). 等等,这有毛病?那你将实现以上功能时、代码大概如下。 Handler handler new Handler(); int cou…

查看Firefox中的缓存
在firefox浏览器中可以在地址栏使用about:cache命令查看当前缓存。 Information about the Cache Service Disk cache device Number of entries:333Maximum storage size:458708 KiBStorage in use:3685 KiBCache Directory:C:\Documents and Settings\Administrator\Local …

技术大咖齐聚爱数智慧人机交互技术论坛 | CNCC2021
CNCC2021【人机交互技术的机遇与挑战】技术论坛将于2021年10月28日13:00-16:00在深圳国际会展中心CC105B召开,本次论坛由CCF主办,爱数智慧创始人兼CEO张晴晴担任论坛主席,邀请来自产学研各界技术大咖,就人机交互、智能语音技术的应…

响应式网页的布局设计
值得收藏的14款响应式前端开发框架 作为今年大热的设计趋势,响应式已然是设计师的标配技能。今天阿里的同学从响应式设计的布局类型、布局实现两方面深入讲解,有哪些实现布局的方式,该采用何种方式,都有相当专业细致的解答&#x…

halcon算子翻译——set_framegrabber_callback
名称 set_framegrabber_callback - 为图像采集设备注册一个回调函数。 用法 set_framegrabber_callback( : : AcqHandle, CallbackType, CallbackFunction, UserContext : ) 描述 算子set_framegrabber_callback为AcqHandle指定的图像采集设备注册一个回调函数。 参数CallbackF…

设置Sysctl.conf用以提高Linux的性能(最完整的sysctl.conf优化方案)
Sysctl是一个允许您改变正在运行中的Linux系统的接口。它包含一些 TCP/IP 堆栈和虚拟内存系统的高级选项, 这可以让有经验的管理员提高引人注目的系统性能。用sysctl可以读取设置超过五百个系统变量。基于这点,sysctl(8) 提供两个功能:读取和…

AI 天气预报准确度高于气象台,一张 GPU 1秒预测未来 90 分钟天气
编译 | 禾木木 出品 | AI科技大本营(ID:rgznai100) 此次 DeepMind 聚焦天气预报这一重大挑战,与英国气象局合作将 AI 应用于预测降雨。 在天气现象中,雨尤其重要,因为它会影响我们的日常决策。 我应该带伞吗࿱…

33.搜索插件——autocomplete
搜索插件的功能是通过插件的autocomplete()方法与文本框相绑定,当文本框输入字符时,绑定后的插件将返回与字符相近的字符串提示选择,调用格式如下: $(textbox).autocomplete(urlData,[options]); 其中,textbox参数为文…

React Native开源项目如何运行(附一波开源项目)
学习任何技术,最快捷的方法就是学习完基础语法,然后模仿开源项目进行学习,React Native也不例外。React Native推出了1年多了, 开源项目太多了,我们以其中一个举例子.给大家演示下如何运行开源项目.(前提是你已经搭建好…

http header头设置反向代理不缓存
一:概念说明 Expries:网页的cache过期时间,到指定日期网页cache失效 Last-Modified:网页的最新更新时间 Cache-Control 缓存控制 no-cache:不缓存网页 no-store:不缓存网页,如果有则删除之 must-revalidate:使之前,服务器响应使用…

985大学的高材生只会写代码片段,丢人吗?
很多同学在学习编程的时候都会遇到各种各样的难题,比如:没有合适的资料、学习过于碎片化、资料的质量层次不齐、看了很多视频自己动手时却还是不会、接触不到完整项目、无法检测自己的编程水平是不是企业所认可的……最近,小郭和小解同学也遇…

xcode6 dyld_sim is not owned by root
如果运行复制过来的xcode可能会这个提示,xcode6 dyld_sim is not owned by root解决方法打开终端 输入sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer

C语言关闭日志文件时忘了将日志文件全局变量指针置为NULL
C语言写了一个write_log函数以写日志,写了一个close_log_file函数以关闭日志,声明了一个日志文件全局变量文件指针plogFile。 write_log中首先判断plogFile是否为NULL,如果不为NULL,则直接引用plogFile写日志信息; 如果…

DeepMind 的新强化学习系统是迈向通用 AI 的一步吗?
作者 | Ben Dickson来源 | 数据实战派这篇文章是我们对 AI 研究论文评论的一部分,这是一系列探索人工智能最新发现的文章。对于已经精通围棋、星际争霸 2 和其他游戏的深度强化学习模型来说,人工智能系统的主要挑战之一是它们无法将其能力泛化到训练领域…

linux中iptables入门教程--设置静态防火墙
1、iptables介绍iptables是复杂的,它集成到linux内核中。用户通过iptables,可以对进出你的计算机的数据包进行过滤。通过iptables命令设置你的规则,来把守你的计算机网络──哪些数据允许通过,哪些不能通过,哪些通过的…

{好文备份}SQL索引一步到位
SQL索引一步到位(此文章为“数据库性能优化二:数据库表优化”附属文章之一) SQL索引在数据库优化中占有一个非常大的比例, 一个好的索引的设计,可以让你的效率提高几十甚至几百倍,在这里将带你一步步揭开他…

浅谈SQL Server中统计对于查询的影响
简介SQL Server查询分析器是基于开销的。通常来讲,查询分析器会根据谓词来确定该如何选择高效的查询路线,比如该选择哪个索引。而每次查询分析器寻找路径时,并不会每一次都去统计索引中包含的行数,值的范围等,而是根据一定条件创建…