注册 登录
明经CAD社区 返回首页

yanshengjiang的个人空间 http://www.mjtd.com/?396160 [收藏] [复制] [分享] [RSS]

日志

转发一篇《中国计算机学会》的文字:程序员会被人工智能替代吗? | CNCC专家谈

热度 1已有 1749 次阅读2023-9-25 14:36 |系统分类:资讯| AI随想

程序员会被人工智能替代吗?

作者:谢涛、楼建光

近年来,人工智能和深度学习技术飞速发展,分别在计算机视觉和自然语言处理等领域取得了惊人的进步,被证明擅长图像分类、转录音频和翻译文本等任务。特别是基于大数据的大型预训练模型GPT3的横空出世,其能够完成更复杂的任务,生成连贯的文本,甚至简单的常识推理,其惊艳的表现在学术界和工业界掀起了研究和应用大模型的热潮。2021年,OpenAI把训练自然语言模型的方法应用到程序代码上,利用GitHub上巨量的开源代码训练出一个称为Codex的预训练模型,该模型在代码自动生成任务上取得了重大突破,首次将函数级代码的自动生成做到了可以实用的程度。随后,GitHub推出了基于Codex的代码编写助手Copilot, 得到了广大程序员的追捧,其他大公司也在迅速跟进,国内也有公司比如aiXcoder、华为等发布了类似的编程助手。

那么,目前基于大模型的程序自动生成到底是怎么样一个现状?目前有些什么样的应用?还有些什么不足?将来的进一步发展是怎么样的?将对程序开发和软件工程的实践产生什么样的影响?程序员真的会被替代么?针对这些问题,我们邀请北京大学计算机学院的谢涛教授和微软亚洲研究院(MSRA)楼建光博士来谈一谈他们的看法。



什么是程序自动生成?

其传统的方法是什么?


谢涛:程序自动生成也通常被称为程序综合(Program Synthesis)一直都是软件工程领域中比较活跃的研究方向,有很长的研究历史。在给定程序规约(用以刻画所需生成程序应该满足的功能)和程序设计语言(以及可用程序操作,比如可被调用的库函数)的条件下,自动生成一个符合给定程序规约且用给定程序设计语言去写的程序。给定程序规约可以是用自然语言来描述,也可以用形式化规约语言来标识,有时也会辅以输入输出样例。程序自动生成具有非常广泛的应用空间。其传统的方法主要是通过设计某种启发式搜索算法在组合式爆炸的程序空间中查找符合要求的程序,往往只能生成一些功能相对简单的程序。不过,传统方法也已经在很多领域得到了广泛的应用,比如在Excel中的“自动填充” (Flash Fill)功能背后就是一个基于样例的程序生成技术。

基于大模型的程序自动生成是怎样的现状?

目前有些什么样的应用?


楼建光:近年来,随着AI大模型的飞速进步,基于大规模预训练模型的代码补全与生成取得了很好的效果。对于很多日常的相对简单的问题,目前大模型生成的函数级代码片段的语义准确率已经达到可以接受和实用的程度。例如,DeepMind的AlphaCode参加了2021年底Codeforces平台的10次比赛,综合排名在前54%,也就是击败了接近一半的人类选手。这是一个非常惊人的结果!其性能远远超越了之前基于深度学习的非预训练代码推荐与生成方法。


GitHub基于Codex这个技术推出的Copilot编程助手功能也得到了广泛的应用。根据GitHub在2022年2-3月份收集的Copilot使用数据显示,平均每个使用者每天接受的代码推荐片段数约为31个,接受率大概在22% 到31%之间。不同的编程语言的接受率有所不同,其中Python和JavaScript在全部用户中的接受率都大概接近30%,所有编程语言平均大概是27%。也就是说平均每4个里面代码生成建议中有一个被用户接受,这个数字是相当不错的。考虑到模型的性能将随着模型规模和根据用户反馈稳步提高,预计未来准确率将进一步提高。


预训练模型除了在代码补全与生成上有好的表现,其在代码检索、克隆检测、代码修复、代码注释、测试用例生成等等很多与代码相关的软件工程任务中都有很好的表现和前景。另外,基于预训练的代码生成也可以广泛应用在终端用户编程(End User Programming)的领域,直接帮助终端用户完成日常工作或者生活中的任务自动化。比如在微软的Excel产品中的用自然语言对话方式进行数据分析的功能就是大模型代码生成的典型应用。


大模型有些什么不足?

将来的进一步发展是怎么样的?


楼建光:虽然大模型取得如此惊人的效果,但是其缺点也是非常明显的。首先,大模型是基于神经网络训练的,在人看来是一个黑盒子,缺乏可解释性,学术界还没有非常清楚地知道其在代码生成中的具体机理,而一个工具要取得人们的信任,可理解性很重要。其次,现在的模型的输出结果对输入是比较敏感的,模型的行为往往不太可控,程序员很难知道怎么样的输入一定会得到好的结果,这在使用中造成很多困惑。另外,预训练模型是基于GitHub上大量的开源软件代码训练的,其训练数据中的代码质量参差不齐,包含很多不规范、不高效,甚至不安全的代码,导致模型生成的有些代码也存在类似问题。还有,大模型的超大计算量,训练和使用过程中的能源消耗、成本和碳排放等,这些都是现在大模型存在的不足。不过,我们认为这些问题都是发展中的烦恼,这些不足问题都可以通过进一步研究去解决。


对于这个领域的发展来看,我们主要有以下几个观点:1. 目前,大模型的性能主要取决于模型的规模和高质量数据的规模,模型的规模效应还没有遇到拐点。预计在未来几年,训练的计算效率和数据效率将进一步提高,模型的规模还会继续增大,效果也会随之变得更好。另外,随着预训练模型的规模变大,模型能力变强,模型有一种融合的趋势,即一个大模型将可以同时支持包括代码生成、文本生成、上下文对话等等很多不同任务。2. 当前大模型的应用主要还是在代码补全和代码生成上,将其应用到其它场景中的技术会在今后一段时间内不断涌现,相应的产品也会不断更新发布。3.一些基于大模型的周边技术会帮助进一步提高模型的效果,补足模型的不足。4.预训练的大模型再厉害,在预训练中学到的知识也总归是有限的,还是会碰到知识短板。如何将软件开发中或者软件需求中的知识图谱利用起来,跟大模型进行有机结合,让大模型能借助这些有形的知识来支持特定场景的软件智能化开发,这是一个非常值得深入探索的方向。

将对程序开发和软件工程的实践

产生什么样的影响?

程序员真的会被替代么?


谢涛:基于大模型的软件智能化开发水平确实会随着大模型能力的提升而提升,很多功能都将有智能化的助手来帮助,很多重复无趣的代码编写确实有可能自动完成。但是,说程序员被AI替代,有一点危言耸听了。我们不要把编程序和设计软件等价为码代码。编程序是一种创造活动,是把抽象模糊的需求具体化,进一步转化成可操作的数据结构、程序逻辑和算法,是一个规划和推理的过程,而不是简单的代码编写。目前来看,AI要具有这个能力还很远。现在看来,在可预见的未来,最有可能的是一个人工智能+人类智能(AI+HI)的场景,AI来帮助人完成繁琐的代码编写过程,而人可以有更多的精力关注设计,从而使得编程变得更加有趣,更加有创意。


最后, 为进一步推进基于大模型的软件自动化研究和应用,我们在今年的中国计算机大会(CNCC 2022)组织了《基于大模型的智能化软件工程》技术论坛,届时将邀请学术界和产业界的相关专家来分享最新的研究成果,深入探讨大模型对软件工程的影响,展望未来的发展趋势。


谢涛 CCF会士、北京大学讲席教授

楼建光 微软亚洲研究院首席研究员


路过

雷人

握手

鲜花

鸡蛋

发表评论 评论 (3 个评论)

回复 yanshengjiang 2023-9-25 14:41
我为什么要转发这篇文章?

  因为无聊,经常问AI各种问题,有时候他能给出我指引,有时候却把我带进坑里面。

  但我能感受到的是,AI越来越“聪明”了。

  以前问的问题很多都是东拉西扯的,给我一些autolisp没有的函数,最近我搜的一个功能,AI给我的答案能直接使用,可能是我问的太简单了。

  AI也需要训练,问的人多了,他自然就会学习,如果我们把它拒之门外,或许就会固步自封,这和百年前的满清政府差不多了。
回复 ferious 2024-3-5 09:39
小爱同学说,机器人不可能代替人类
回复 yanshengjiang 2024-3-17 22:48
ferious: 小爱同学说,机器人不可能代替人类
      

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-12-14 22:25 , Processed in 0.094182 second(s), 16 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部