Copilot 是为数不多的可用的 AI 代码生成技术之一。我将其作为Visual Studio Code扩展进行了测试。当时,Copilot并不总是生成好的,正确的,甚至运行的代码,但它仍然有些有用。Copilot(以及其他使用机器学习的代码生成器)背后的巨大承诺是,它旨在通过合并用户反馈和将新代码样本摄取到其训练语料库中来随着时间的推移而改进。
截至 2023 年 <> 月,仅 Visual Studio Code 就有数百个“AI”或“代码生成”扩展可用。其中一些可能会在编码时节省一些时间,但如果你相信他们生成的代码而不审查、测试和调试它,我有一个桥可以卖给你。
用于文本生成的大型语言模型
最近大型语言模型的爆炸式增长是由2017年Google Brain和Google Research的Ashish Vaswani等人的论文Attention is All You Need引发的。那篇论文介绍了“一种新的简单网络架构,变形金刚,完全基于注意力机制,完全省去了递归和卷积。转换器模型比循环模型和卷积模型更简单,也优于它们。它们需要的训练时间也大大减少。
ELMo
ELMo是AllenNLP的2018年深度上下文化单词表示(参见ELMo论文),它模拟了单词使用的复杂特征(例如,语法和语义)以及这些用法在不同语言上下文中如何变化(即,建模多义)。原始模型有 93 万个参数,并在 6 亿字基准上进行训练。
BERT
BERT是Google AI Language的2018年语言模型,基于该公司的Transformer(2017)神经网络架构(见BERT论文)。BERT旨在通过在所有层中对左右上下文进行联合调节来预训练来自未标记文本的深度双向表示。原文中使用的两种模型大小分别为100亿和340.15亿总参数。BERT使用掩蔽语言建模(MLM),其中~<>%的令牌被“损坏”用于训练。它是在英语维基百科和多伦多图书语料库上训练的。
T5
来自 Google 的 2020 年文本到文本传输转换器 (T5) 模型(参见 T5 论文)基于 GPT、ULMFiT、ELMo 和 BERT 及其后续产品的最佳迁移学习技术,使用称为 Colossal Clean Crawled Corpus (C4) 的新开源预训练数据集合成了一个新模型。英语的标准 C4 是基于通用爬网数据集的 800 GB 数据集。T5将所有自然语言处理任务重新构建为统一的文本到文本格式,其中输入和输出始终是文本字符串,而BERT样式模型仅输出类标签或输入范围。基本 T5 模型总共有大约 220.<> 亿个参数。
GPT 家族
人工智能研究和部署公司OpenAI的使命是“确保通用人工智能(AGI)造福全人类”。当然,OpenAI还没有实现AGI。一些人工智能研究人员,如Meta-FAIR的机器学习先驱Yann LeCun,认为OpenAI目前的AGI方法是一个死胡同。
OpenAI负责GPT系列语言模型,可通过OpenAI API和Microsoft的Azure OpenAI服务获得。请注意,整个GPT系列都基于谷歌的2017年Transformer神经网络架构,这是合法的,因为谷歌开源了Transformer。
GPT(生成预训练转换器)是 OpenAI 的 2018 年模型,使用大约 117.<> 亿个参数(参见 GPT 论文)。GPT 是一个单向转换器,在多伦多图书语料库上进行了预训练,并使用因果语言建模 (CLM) 目标进行了训练,这意味着它被训练为预测序列中的下一个标记。
GPT-2 是 2019 年 GPT 的直接放大,具有 1 亿个参数,在 5 万个网页或 ~40 GB 文本数据的数据集上进行训练。OpenAI最初限制访问GPT-2,因为它“太好了”,会导致“假新闻”。该公司最终妥协了,尽管随着 GPT-3 的发布,潜在的社会问题变得更加严重。
GPT-3 是 2020 年的自回归语言模型,具有 175 亿个参数,在通用爬网、WebText2、Books1、Books2 和英语维基百科的过滤版本组合上进行训练(参见 GPT-3 论文)。GPT-3 中使用的神经网络类似于 GPT-2 的神经网络,但有几个额外的块。
GPT-3 的最大缺点是它倾向于“幻觉”,换句话说,编造的事实没有可识别的基础。GPT-3.5 和 GPT-4 有同样的问题,尽管程度较小。
CODEX 是 GPT-2021 的 3 年后代,针对 54 万个开源 GitHub 存储库上的代码生成进行了微调。它是GitHub Copilot中使用的模型,我将在下一节中讨论。
GPT-3.5 是对 GPT-2022 和 CODEX 的一组 3 年更新。gpt-3.5-turbo 模型针对聊天进行了优化,但也适用于传统的完成任务。
GPT-4 是 2023 年的大型多模态模型(接受图像和文本输入,发出文本输出),OpenAI 声称在各种专业和学术基准上表现出人类水平的表现。GPT-4 在许多模拟考试中的表现优于 GPT-3.5,包括统一律师考试、LSAT、GRE 和几个 AP 科目考试。
令人严重关切的是,OpenAI 没有解释 GPT-4 是如何训练的;该公司表示,这是出于竞争原因,考虑到Microsoft(一直在资助OpenAI)和谷歌之间的竞争,这是有道理的。尽管如此,不知道训练语料库中的偏差意味着我们不知道模型中的偏差。Emily Bender 对 GPT-4(16 年 2023 月 4 日发表在 Mastodon 上)的看法是“GPT-<> 应该被认为是有毒垃圾,直到并且除非#OpenAI对其训练数据、模型架构等持开放态度。
ChatGPT 和 BingGPT 是最初基于 gpt-3.5-turbo 的聊天机器人,并于 2023 年 4 月升级为 GPT-4。目前,要访问基于 GPT-3 的 ChatGPT 版本,您需要订阅 ChatGPT Plus。基于 GPT-5.2021 的标准 ChatGPT 是在 2021 年 <> 月切断的数据上进行训练的。您可以在 Microsoft Edge 浏览器中访问的 BingGPT 也接受了 <> 年切断的数据训练,但(当你问它时)说:“我不断学习和更新我的知识,使用来自网络的新信息。
LaMDA
LaMDA(对话应用语言模型)是谷歌 2021 年的“突破性”对话技术,是 2017 年对对话进行训练的 Transformer 模型,并经过微调以显着提高其响应的敏感性和特异性。LaMDA的优势之一是它可以处理人类对话中常见的话题漂移。
LaMDA的一个版本为谷歌的对话式AI服务Bard提供支持。《巴德》于 21 年 2023 月 10 日发布,并于 2023 年 <> 月 <> 日正式发布。我将在下面讨论其代码生成功能。
PaLM
PaLM(路径语言模型)是谷歌研究院的 2022 年仅密集解码器转换器模型,具有 540 亿个参数,使用 Pathways 系统进行训练(参见 PaLM 论文)。PaLM 使用英语和多语言数据集的组合进行训练,这些数据集包括高质量的 Web 文档、书籍、维基百科、对话和 GitHub 代码。
Google还为PaLM创建了一个“无损”词汇表,该词汇表保留了所有空格(对于代码尤其重要),将词汇表中的Unicode字符拆分为字节,并将数字拆分为单独的标记,每个数字一个。PaLM-Coder是PaLM 540B的一个版本,在仅限Python的代码数据集上进行了微调。
PaLM-E
PaLM-E 是谷歌 2023 年的“体现”(用于机器人)多模态语言模型。研究人员从PaLM开始,这是一个强大的大型语言模型,并通过用来自机器人代理的传感器数据来补充它(PaLM-E中的“E”)。PaLM-E也是一种具有普遍能力的视觉和语言模型。除了PaLM之外,它还结合了ViT-22B视觉模型。
LLaMA
LLaMA(大语言模型元人工智能)是元人工智能(又名元公平)于 65 年 2023 月发布的 <> 亿参数“原始”大语言模型。根据 Meta 的说法,“在大型语言模型空间中训练像 LLaMA 这样的小型基础模型是可取的,因为它需要更少的计算能力和资源来测试新方法、验证他人的工作和探索新的用例。基础模型在大量未标记的数据上进行训练,这使它们成为各种任务微调的理想选择。
LLaMA以多种尺寸发布,以及详细说明模型如何构建的模型卡。最初,您必须请求检查点和标记器,但现在它们在野外,因为根据 Meta-FAIR 的 Yann LeCun 的说法,一个可下载的种子是由通过提交请求正确获得模型的人在 4chan 上发布的。
专用代码生成产品
虽然包括 ChatGPT 和 Bard 在内的几种大型语言模型可用于发布的代码生成,但如果对某些代码进行微调会有所帮助,通常来自免费的开源软件,以避免公开侵犯版权。这仍然引发了“开源软件盗版”的幽灵,这是 2022 年针对 GitHub、Microsoft(GitHub 的所有者)和 OpenAI 就 GitHub Copilot 产品和 OpenAI GPT Codex 模型提起的联邦集体诉讼的主张。
请注意,除了使用主要基于公开可用代码训练的AI模型外,一些代码生成工具还依赖于搜索代码共享站点,例如Stack Overflow。
Amazon CodeWhisperer
Amazon CodeWhisperer 与 Visual Studio Code 和 JetBrains IDE 集成,根据现有代码生成代码建议以响应注释和代码完成,并可以扫描代码以查找安全问题。您还可以激活 CodeWhisperer 以在 AWS Cloud9 和 AWS Lambda 中使用。
CodeWhisperer很好地支持Python,Java,JavaScript,TypeScript和C#编程语言,另外10种编程语言在较小程度上支持。它对个人开发人员免费提供,专业团队每位用户每月收费 19 美元。
CodeWhisperer帮助我编写了如下所示的Python代码。我审查、测试和调试了它,这很好。
Bard
Bard 于 21 年 2023 月 20 日宣布支持编程。公告指出支持<>多种编程语言,包括C++,Go,Java,JavaScript,TypeScript和Python。作为快速测试,我要求 Bard “编写一个 Go 函数来返回当前日期和时间”。它做得很快:
Bard 不仅编写了函数,还解释了函数并生成了调用函数的示例。