大型语言模型和人工智能代码生成器的兴起

译者 | 李睿
本文作者Martin Heller是一名Web和windows编程顾问 , 也是行业媒体InfoWorld的特约编辑和评论员 。Heller表示 , 他在2021年11月撰写关于Github Copilot的文章时 , Copilot是当时发布的为数不多的人工智能代码生成技术之一 。他将GitHub Copilot作为Visual Studio代码扩展进行了测试 。当时 , Copilot并不总是能生成良好的、正确的、甚至是可运行的代码 , 但它仍然有一些用处 。Copilot(以及其他使用机器学习的代码生成器)背后的巨大承诺是 , 它的设计是通过将用户反馈和将新代码样本摄取到其训练语料库中 , 并且随着时间的推移而改进 。
截至2023年5月 , 仅Visual Studio code就有数百个“人工智能”或“代码生成”扩展可用 。其中一些可能会在编码时为用户节省一些时间 , 但是用户不能在没有检查、测试和调试的情况下就相信它们生成的代码 。

大型语言模型和人工智能代码生成器的兴起

文章插图
图1
市场上有数以百计的Visual Studio Code承诺“代码生成”或“人工智能”扩展可用 , 但实际上只有一小部分基于机器学习生成代码
在这一领域一个很有前途的发展是一些工具可以自动生成单元测试 。生成单元测试是一个比生成通用代码更容易处理的问题——事实上 , 它可以使用简单的模式来完成 , 但是用户仍然需要检查和运行生成的测试 , 以确定它们是否有意义 。
本文将简要介绍语言模型的历史 , 然后考察最先进的大型语言模型(LLM) , 例如AI target=_blank class=infotextkey>OpenAI公司的GPT家族和谷歌公司的LaMDA和PaLM , 它们目前用于文本生成和代码生成 。最后 , 将简单介绍10个代码生成工具 , 其中包括Amazon CodeWhisperer、google Bard和GitHub Copilot X等 。
人工智能文本生成模型发展简史语言模型可以追溯到安德烈·马尔科夫在1913年提出的马尔可夫链 , 这是马尔可夫模型的一个特例 。马尔科夫指出 , 在俄语中 , 特别是在普希金的韵文小说《尤金·奥涅金》中 , 一个字母出现的概率取决于前一个字母 , 而且一般来说 , 辅音和元音往往交替出现 。此后 , 马尔可夫方法被推广到词汇、其他语言和其他语言应用中 。
1948年 , 克劳德·香农(Claude Shannon)在通信理论方面扩展了马尔可夫的理论 , 1985年 , IBM公司的Fred Jelinek和Robert Mercer再次扩展了马尔科夫的理论 , 产生了一个基于交叉验证(他们称之为删除估计)的语言模型 , 并将其应用于实时、大词汇量的语音识别 。从本质上讲 , 统计语言模型为单词序列分配概率 。
要想快速查看语言模型的运行情况 , 可以在谷歌搜索或智能手机上的短信应用程序中输入几个单词 , 并允许它提供自动完成选项 。
2000年 , Yoshua Bengio等人发表了一篇关于神经概率语言模型的论文 , 其中神经网络取代了统计语言模型中的概率 , 绕过了维度的诅咒 , 并将单词预测(基于以前的单词)提高了20%~35% , 而不是平滑的三元模型(当时是最新技术) 。语言的前馈、自回归、神经网络模型的思想至今仍在使用 , 尽管这些模型现在有数十亿个参数 , 并且是在广泛的语料库上训练的 , 因此有了“大型语言模型”这个术语 。
正如人们将看到的 , 随着时间的推移 , 语言模型的规模不断变得更大 , 以使它们表现得更好 。然而 , 这样做是有代价的 。2021年发表的论文《随机鹦鹉的危险:语言模型是否太大?》的作者Emily Bender、Timnit Gebru质疑人们是否在这一趋势上走得太远 。他们建议 , 除了其他事项之外 , 人们应该首先权衡环境和财务成本 , 并将资源投入到整理和仔细记录数据集上 , 而不是从网络上摄取一切 。
Gebru和Bender后来都因为指责谷歌公司在人工智能的道德应用问题而辞职 。Bender现在入职华盛顿大学 , 而Gebru创立了分布式人工智能研究所 。
用于文本生成的大型语言模型最近大型语言模型的爆发是由Google Brain项目和Google Research项目的Ashish Vaswani等人在2017年发表的论文《注意力就是你所需要的一切》引发的 。该论文介绍了“Transformer这种新的简单网络架构 , 它完全基于注意力机制 , 完全省去了递归和卷积 。”Transformer模型比递归和卷积模型更简单 , 也更优越 。它们训练所需的时间也显著减少 。


推荐阅读