spring63的个人博客分享 http://blog.sciencenet.cn/u/spring63

博文

机器学习漫谈:人工智能的新技巧 精选

已有 2566 次阅读 2021-5-6 07:28 |个人分类:机器学习漫谈|系统分类:海外观察

       在过去一年里,机器学习展示了其新技巧——通过吸收从互联网上搜集的数十亿个单词来学习,并根据各种提示生成文本,可以执行各种各样的任务——根据提示创作小说、生成图像,与历史人物聊天,还有望帮助实现自动编程。自动编程是指基于对程序代码应执行功能的简短描述,由人工智能自动生成程序代码。海外有学术网站称之为“AI's Latest Trick(AI的最新技巧)”。

文本生成

2020年5月,GPT-3诞生。GPT-3Generative Pretrained Transformer-3,生成预训练转换器)是由位于旧金山的人工智能研究实验室OpenAI创建的(参考资料[1])。GPT-3使用深度学习训练的对象是从网上搜集的大量文本,训练了大约 2000 亿个单词,能够生成类似于人类撰写的文本。

GPT-3是一个巨大的人工神经网络完整版本,可容纳1,750亿个机器学习参数,它能很好地捕捉语言的模式,就给定的主题撰写文章,简洁地总结一篇文章,或者回答有关文档内容的问题。最近OpenAI宣布,至2021年3月底,已经有“数万”名开发者,在300多个不同的应用程序中使用GPT-3,每天产生45亿字文本。这可能是OpenAI值得庆祝的一个里程碑,也是机器学习人工智能文本生成的规模、影响和商业潜力不断增长的一个标志。

GPT-3是一个语言模型,它是统计程序,预测可能的单词序列。GPT-3通过庞大的数据集(来自公共网络、维基百科等资源)训练出来的,它已经学习了数百万次的对话,可以计算出哪个单词(甚至是字符)应该排在它周围单词的后面。当你输入一组初始词语时,比如go to the store to buy...(去商店买…)”,GPT-3将根据训练获得的知识,开始预测接下来会发生什么可能是这样的:Eggs鸡蛋”、“Milk(鲜奶)”、“Bread(面包)”、“Fruit(水果”)等输出是通过统计上下文成千上万种不同的潜在方案和任务得到GPT-3的特殊之处在于它能够智能地响应最小的输入。它已经在数十亿个参数上得到了广泛的训练,现在它只需要一些提示或示例就可以执行你想要的特定任务,这就是所谓的“(few-shot learning)少镜头学习”。例如,在分析了数千首诗和诗人之后,你只需输入一位诗人的名字,GPT-3就可以创作出一首与作者风格相似的原创诗。GPT-3复制了诗人之前作品的肌理、节奏、体裁、韵律、词汇和风格,生成了一首全新的诗歌。

附录A 给出一个简单的例子——GPT-3对自己的看法用户输入:Risks of OpenAI's GPT-3OpenAIGPT-3的风险GPT-3生成回答的文本(参考资料[2]

OpenAI首次提交论文时,仅提供了很少的一些示例。2020年7月进行了Beta测试时,OpenAI允许选择部分用户访问GPT-3Beta令人惊奇的是,在短短几个月里,开发人员很快把它用于各种不同领域:GPT3展示了出色的自然语言处理的新技巧它可以根据我们的提示,完成一篇文章,可以做诗,撰写博客、记者报导、虚拟访谈改变句子的语气双关语等创意作品破解笑话写现实的商业备忘录生成烹饪配方创建网站模型自动编程、解释代码客户查询服务医学诊断还会创作音乐,甚至从文本描述生成图像

例如,在20211月的一次演示中,OpenAI的研究人员发布了DALL·E,一种经过训练的神经网络,可以利用GPT-3,通过自然语言表达的文本标题创建图像。图1表示人工智能根据文本提示:“an armchair in the shape of a avocado (鳄梨形状的扶手椅[])”,生成的图像的示例(参考资料[4])。

1 GPT-3从文本标题生成图像的示例

如同GPT-3这种人工智能,已经引起了一些软件巨头兴趣。微软2019年向OpenAI投资了10亿美元,宣布与 OpenAI 达成合作协议,微软 CTO 凯文·斯科特(Kevin Scott)在社交网络发布这一喜讯。“今天,我们激动地宣布,微软与 OpenAI 达成合作,获得了 GPT-3 的独家授权,允许我们为用户开发和交付更先进的人工智能解决方案”。

有人评论说,GPT-3的发布可能是2020年最重要的新闻事件之一。有很多关于GPT-3的炒作(相当多的来自媒体的贡献)。在一些人眼里,它无所不能,惊呼将接管世界”。但是,另一些人强调GPT-3的局限性:GPT-3虽然看起来像人类一样理解文本的上下文并产生输出,但它并不理解事物。GPT-3的输出不是逻辑推理的结果。它所做的只是查看输入到模型中的文本,并根据统计可能性给出结果。如果你给它一个普通的句子,它会表现得很好,但是当你给模型一些不寻常的东西时,它会根据统计可能性给出一个荒谬的输出。在测试中,GPT-3曾经产生过一些毫无意义的回答,或者有偏见的、错误的回答。有专家警告,人们对GPT-3这样的大规模语言模型能做什么不要存在完全不切实际的期待。图灵奖得主扬·勒村(Yann LeCun)指出,“这很有趣,作为帮助创意也许有用”,但是,尝试通过扩大语言模型来构建智能机器就像“制造高空飞机登上月球一样。可能会打破海拔记录,但登月将需要完全不同的方法。”

自动编程

自动编程曾经是早期计算机科学者的梦想。例如,当Fortran在20世纪50年代被引入时(由约翰·巴科斯[John Backus]在1954年为IBM发明,并于1957年商业发布),全名是Fortran Automatic Coding System(Fortran自动编码系统)。Fortran是作为通用的编译语言,特别适合于数值计算和科学计算,取代了以往直接利用机器代码或汇编语言编程的大部分繁琐的工作。但是,Fortran语言(以及后来诞生的编程语言,如,CC++JavaPython...)并不是自动编程系统需要由程序员编写程序架构,以及正确地填写程序代码的每一个细节难怪程序员的职业如此令人沮丧想想,智能手机的操作系统程序有1000万行代码)。人工智能研究者曾经追求许多领域工作的自动化,但在很长时间里,编程工作自动化似乎是研究的盲点。

21世纪10年代,深度学习的技术突破(见上一篇博客《机器学习漫谈:深度学习的辉煌》),重新激发了追求自动编程的梦想。例如,2019年,MIT(麻省理工学院)的CSAIL(计算机科学人工智能实验室)研究人员,开发了一个编写程序的人工智能SketchAdapt——通过结合深度学习和符号推理的灵活方法,来教计算机编写简短的计算机程序。其关键思想是,可以使用模式识别和显式推理的灵活组合,来解决这些复杂的编程问题(参考资料[5])。SketchAdapt接受了成千上万个程序示例的培训,不需要依靠专家来定义程序结构,而是通过深度学习,由人工智能自动构建高层次结构。当神经网络不确定将什么代码放在哪里时,SketchAdapt被编程为留下空白,以便搜索算法找到合适的子程序来填充细节。该系统包含两个主要组成部分(图2):草图生成器(sketch generator)和程序合成器(program synthesizer)。程序规格(Program specs)以示例的形式被输入到草图生成器中,草图生成器由循环神经网络(RNN)参数化,输出程序草图(program sketches)——完整程序的轮廓。程序草图传被递给程序合成器,程序合成器搜索满足规格的完整程序。该系统的中间表示和训练算法,允许程序合成系统在不需要直接监督的情况下学习何时依赖于模式识别以及何时执行符号搜索。目前,SketchAdapt只能编写非常简短的程序。研究人员说,其目的是补充程序员,而不是取代他们。

 

2 SketchAdapt示意图

2020年,GPT-3机器学习文本生成的技术突破,引发了人工智能可用于更有效自动生成计算机程序代码新的希望。2021426日,CACM国际计算机学会通信网站,以《Now for AI's Latest Trick: Writing Computer Code》为题,转载Wired网站的文章,报导人工智能的最新技巧:编写计算机代码(参考资料[6])。报导称:巴黎的一家创业公司SourceAI,正在对一种工具进行微调,该工具根据对代码应该做什么的简短文字描述,由人工智能编写代码。例如,告诉工具“将用户给定的两个数字相乘”,它将用Python编写大约12行代码,来完成该任务。

这个工具是指GPT-3代码生成器SourceAI报导指出,SourceAI的雄心壮志,标志着软件开发领域正在发生革命。机器学习的进步,使得自动编程成为可能——从自动完成代码段和微调算法,到搜索源代码和查找代码中错误。

SourceAI网站介绍称,GPT-3代码生成器SourceAI,是基于GPT-3的功能强大的工具,能够生成用户所要求的任何编程语言源代码。该工具开放——向所有人开放(甚至对非开发人员开放);简单易用——清晰直观的界面;快速——节省开发时间,一键生成代码,更有效地利用您的时间;人工智能驱动——由最先进的AI技术GPT-3驱动的下一代开发技术。例如,在图3中,左侧表示用户的输入,告诉该工具要求利用Python语言,calculate factorial of number given by user计算用户给定数的阶乘”,右侧表示该工具生成Python代码(参考资料[7])

 

3  SourceAI生成计算阶乘的代码

SourceAI的创始人兼首席执行官弗尔坎·贝克斯(Furkan Bektes)说:“在测试GPT-3工具时,我们意识到它可以生成代码。那时我们有了开发SourceAI的想法。”

SourceAI的目标是让用户以多种不同的语言生成更广泛的程序,从而帮助自动创建更多的软件。”开发人员将节省编码时间,而没有编码知识的人也将能够开发应用程序,”贝克斯说。他不是第一个注意到这种可能性的人。在GPT-3发布后不久,一位程序员展示了它可以通过混合输入的代码片段来创建定制的web应用程序,包括按钮、文本输入字段和颜色。另一家公司Debild计划将这项技术商业化。

SourceAI工具的实际工作情况如何,还有待观察。目前还没有这项技术的公开演示,但说,对于简单的命令,它80%90%的时间都能工作。贝克斯似乎有信心,它可以改变软件开发的某些方面。他调侃说学生们会用它来快速做作业

除了SourceAI也还有其它公司从事类似研究。Replit以前称为Repl.it,是一家位于旧金山的新兴公司。 它的名称来自缩写词REPL,代表“读取-评估-打印-循环”。 该公司Replit是一个简单但功能强大的在线IDE,编辑器,编译器,解释器和REPL。 使用50多种编程语言进行编码,编译,运行和托管。该公司的oracleReplit工具,使用GPT-3解释代码阅读代码很难用户希望只要询问代码有什么用就能够得到其功能类型等有关的描述。如下的一个用例,在其中针对一段Python程序代码,询问代码的作用,它将提供更多的上下文信息

Q: What does this code do?

A: It calculates the factorial of 5

Q: what is factorial?

A: It's a function that takes a number

Q: what is n?

A: It's a variable that contains the number passed to the function

Q: what will this code print?

A: It will print 120

译成中文大意是:

问:这段代码有什么作用?

:计算5的阶乘

问:什么是阶乘?

答:这是需要取一个数的函数

问:n是什么?

答:这是一个变量,包含传递给函数的数字

问:此代码将打印什么?

答:它将打印120

就在GPT-3开放Beta测试的同时,20207月,英特尔(Intel)、麻省理工学院(MIT)和乔治亚理工学院(Georgia Tech)联合推出了一种新的机器编程(MP)系统。机器编程(machine programmingMP)是一个新的研究领域,它使用自动化来提高软件开发效率(例如,开发人员编写代码所需的时间)和质量(例如,性能、正确性、安全性、可维护性等)。我们通常认为MP是机器学习和形式化方法的融合,它们在很大程度上依赖于编程语言和系统。

机器编程(MP)领域与软件开发自动化有关。近年来,出现了许多MP系统,部分原因在于机器学习、形式化方法、数据可用性和计算技术效率的进步。MP中的一个挑战是构造精确的代码相似性系统。代码相似性是确定两个或多个代码段是否具有某种程度的语义相似性(或等价)的问题即使存在句法分歧。在最高层次上,代码相似性系统的目标是确定两个或多个代码片段是否解决了类似的问题,即使他们使用的实现不同(例如,排序sort()的各种算法。

IntelMITGeorgia Tech推出的机器编程系统称为机器推断代码相似性(MISIM系统,是一种自动引擎,旨在通过研究代码的结构并分析具有类似行为的其他代码的句法差异来学习某个软件打算执行的操作。推断代码相似性是迈向更宏伟的编程自动化愿景的重要一步。

MISIM使用一种新颖的具有上下文感知功能的语义结构CASS参考资料[8],旨在帮助从代码语法中提升语义含义。一旦代码的结构被集成到CASS中,神经网络系统就会根据它们所要执行的任务对代码片段进行相似性评分。换言之,如果两段代码在结构上看起来非常不同,但执行相同的功能,这些神经网络会将它们评为非常相似。这使CASS能够更具体地了解代码的作用,而不是它是如何实现的。此外,MISIM可以在不使用编译器的情况下完成所有这一切——编译器是一种将人类可读的源代码转换为计算机可执行机器代码的程序。

 

4 MISIM过程示意图

结语

人工智能的新技巧——语言模型的规模和文本生成的应用潜力,正在不断增长,可以阅读文章并撰写文章摘要,还可以回答与该文章相关的问题,可以从文本中生成图片,可以用任何语言编写代码。需要指出的是,这些输出是语言模型统计可能性的结果,并不代表它如同人类一样的有意识和真正理解文本含义。

目前人工智能自动生成程序代码有时很蹩脚。不能够期望仅仅依靠类似GPT-3的大型语言模型,造出自动编程的智能机器。人工智能文本生成器与其它机器编程技术结合使用,将来有可能实现自动化编程的愿景——程序员只需要简单地写下他们想要的软件功能,然后计算机自动编写代码。这将是软件开发领域的一场革命

最后还要指出语言模型文本生成在一些领域的应用,包括使用人工智能生成和分析程序代码可能存在风险例如,一个人工智能程序经过训练,可以验证代码是否能安全运行,但如果进行一些不当的修改,比如替换某些变量,也可能创建一个有害的程序。纽约大学教授多兰·加维特(Dolan Gavitt)说,“我认为直接使用语言模型可能最终会产生错误的、甚至不安全的代码”。

附录A GPT-3对自己的看法

用户输入:Risks of OpenAI's GPT-3OpenAIGPT-3的风险

以下是GPT-3输出的回答:

There are many risks that come with the creation of GPT-3. The first and foremost of which is the risk of AI being used to create an even more advanced AI.

This is not a new riskit has always been a risk. In fact, it is the risk that gave birth to AI in the first place.

The fear that the primitive AI of the 60s, 70s, and 80s would take over the world is what led to the creation of the Asilomar AI principles, the birth of OpenAI, and all the other initiatives that exist today to stop AI from going the way of the Terminator.

Now, instead of worrying about primitive artificial intelligence, we must worry about advanced artificial intelligence.

The risk of an AI taking over the world is still there, but it has evolved.

The other worries that come with the creation of GPT-3 are the same worries that come with all AI research. The worry that it will be used for harm by malicious agents.

These worries are valid, and they should be discussed. But there is one more worry that is unique to GPT-3, and that is the worry that an AI will be created that is so advanced that it can predict the future.

...Woah. Thats quite a dystopian possibility.

翻译成中文是:

创建GPT-3有很多风险。首先也是最重要的是人工智能被用来创造更先进的人工智能的风险。

这不是一个新的风险,它一直是一个风险。事实上,正是这种风险首先催生了人工智能。

60年代、70年代和80年代的原始人工智能将接管世界的恐惧导致了阿西洛玛人工智能原则的产生,OpenAI的诞生,以及今天存在的阻止人工智能走上终结者之路的所有其他倡议。

现在,我们不必担心原始的人工智能,而必须担心先进的人工智能。

人工智能接管世界的风险仍然存在,但它已经进化了。

GPT-3的创建带来的其担忧与所有人工智能研究带来的担忧是一样的。担心它会被恶意代理用于伤害。

这些担忧是有道理的,应该加以讨论。但是还有一个担心是GPT-3所独有的,那就是担心人工智能会被创造出来,它是如此先进,以至于可以预测未来。

……哇。这可能是一种反乌托邦。

 

参考资料:

[1] Tom B. Brown, et al. Language Models are Few-Shot Learners. arXiv: 2005.14165,[v1]May 2020 17,[v2]1 Jun 2020,[v3] 5 Jun 2020 ,[v4] 22 Jul 2020

[2] Jesse Sumrak. What Is GPT-3: How It Works and Why You Should Care. 2020-11-24

https://www.twilio.com/blog/what-is-gpt-3

[3] Manuel Araoz. Interviewing Albert Einstein via GPT-3. Mar 14, 2021

https://maraoz.com/2021/03/14/einstein-gpt3/

[4] Synced.For Its Latest Trick, OpenAI’s GPT-3 Generates Images From Text Captions.2021-01-05

https://syncedreview.com/2021/01/05/this-time-openais-gpt-3-generates-images-from-text/

[5] Maxwell Nye , Luke Hewitt ,Joshua Tenenbaum,Armando Solar-Lezama . Learning to Infer Program Sketches. arXiv:1902.06349v2 [cs.AI] 4 Jun 2019

[6] Now for AI's Latest Trick: Writing Computer Code. By Wired . April 26, 2021

https://cacm.acm.org/news/252202-now-for-ais-latest-trick-writing-computer-code/fulltext

[7] SourceAI.GPT-3 Code Generator.

https://sourceai.dev/

[8]Ye, Fangke; Zhou, Shengtian;et al. MISIM: A Novel Code Similarity System.2020-6. Machine Programming. University of Pennsylvania  

https://repository.upenn.edu/cps_machine_programming/

 



http://wap.sciencenet.cn/blog-3005681-1285204.html

上一篇:机器学习漫谈:深度学习的辉煌
下一篇:机器学习漫谈:还有很长的路要走

3 李剑超 黄永义 雷蕴奇

该博文允许注册用户评论 请点击登录 评论 (3 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2021-6-15 03:34

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部