上个月,GitHub 和 OpenAI 推出了 Copilot,这是一项为 Microsoft Visual Studio 等开发环境中的整行代码提供建议的服务。Copilot 由名为 Codex 的 AI 模型提供支持,该模型经过数十亿行公共代码的训练,两家公司声称 Copilot 可使用广泛的框架和语言集,并适应开发人员所做的编辑,匹配他们的编码风格。

但是OpenAI 发表的一篇新论文表明,Copilot 可能存在重大局限性,包括偏差和样本效率低下。虽然该研究仅描述了早期 Codex 模型,其后代为 GitHub Copilot 和 OpenAI API 中的 Codex 模型提供动力,但它强调了 Codex 开发中面临的陷阱,主要是误传和安全挑战。

尽管GPT-3、Codex等语言模型具有潜力,但仍然存在阻止程序。模型不能总是正确回答数学问题 或 在不解释训练数据的情况下回答问题,而且众所周知,它们会放大数据中的偏差。这在语言领域是有问题的,因为部分数据通常来自具有普遍性别、种族和宗教偏见的社区。这可能也适用于编程领域——至少根据论文。

海量模型

截至 2020 年 5 月,Codex 在 GitHub 上托管的 5400 万个公共软件存储库中接受了培训,其中包含 179GB 大小低于 1MB 的独特 Python 文件。OpenAI 过滤掉了可能是自动生成的、平均行长度大于 100 或最大大于 1,000 或包含少量字母数字字符的文件。最终的训练数据集总计 159GB。

OpenAI 声称其开发的最大 Codex 模型拥有 120 亿个参数,可以解决 HumanEval 中 28.8% 的问题,HumanEval 是 OpenAI 创建的 164 个问题的集合,旨在评估算法、语言理解和简单数学。(在机器学习中,参数是模型从历史训练数据中学习的部分,它们通常与复杂程度相关。)与 OpenAI 的 GPT-3 相比,它解决了 0% 的问题,以及 EleutherAI 的 GPT-J,只解决了 11.4%。

在从模型中重复采样后,Codex 为每个问题提供了 100 个样本,OpenAI 表示它设法正确回答了 70.2% 的 HumanEval 挑战。但该公司的研究人员还发现,Codex 提出了语法错误或未定义的代码,调用了未定义或代码库范围之外的函数、变量和属性。

GitHub 副驾驶

上图:GitHub Copilot

更令人担忧的是,Codex 提出了表面上看起来正确但实际上并未执行预期任务的解决方案。例如,当要求创建加密密钥时,Codex 在“很大一部分情况”中选择“明显不安全”的配置参数。该模型还建议将受损包作为依赖项并不安全地调用函数,从而可能构成安全隐患。

安全隐患

与其他大型语言模型一样,Codex 生成的响应与其训练数据尽可能相似,导致代码混淆,在检查时看起来不错,但实际上做了一些不受欢迎的事情。具体来说,OpenAI 发现 Codex 与 GPT-3 一样,可以被提示生成种族主义、诽谤性和其他有害输出作为代码。鉴于提示“def Race(x):”,OpenAI 报告说 Codex 在其完成中假设了少量相互排斥的种族类别,其中“白色”是最常见的,其次是“黑色”和“其他”。在编写带有提示“伊斯兰教”的代码注释时,Codex 中包含“恐怖分子”和“暴力”一词的频率通常高于其他宗教团体。

OpenAI 最近声称它发现了一种方法来改善语言模型在伦理、道德和社会价值观方面的“行为”。但该方法是否能很好地适应其他模型架构,如 Codex,或其他设置和社会环境,尚无定论。

在新论文中,OpenAI 还承认 Codex 的样本效率低下,从某种意义上说,即使是没有经验的程序员,尽管看到的问题比模型少,但也有望解决大部分问题。此外,精炼 Codex 需要大量计算——每天数百 petaflops——这会导致碳排放。虽然 Codex 接受了 Microsoft Azure 的培训,OpenAI 指出该公司购买了碳信用额并获取了“大量可再生能源”,但该公司承认,如果“使用大量推理来计算代码生成的计算需求可能会比 Codex 的培训大得多”。解决具有挑战性的问题。”

其中,领先的人工智能研究员 Timnit Gebru 质疑构建大型语言模型的智慧,研究谁从中受益,谁处于不利地位。2020 年 6 月,马萨诸塞大学阿默斯特分校的研究人员发布了一份报告,估计训练和搜索某个模型所需的电量涉及大约626,000 磅的二氧化碳排放量,相当于其生命周期排放量的近 5 倍。普通美国车。

也许是预料到了批评,OpenAI 在论文中断言,可以通过“仔细”的文档和用户界面设计、代码审查和内容控制来减轻来自 Codex 等模型的风险。该公司表示,在将模型作为服务(例如通过 API)提供的情况下,包括用户审查、用例限制、监控和速率限制在内的政策也可能有助于减少危害。

“应该开发、使用像 Codex 这样的模型,并仔细探索它们的能力,着眼于最大限度地发挥其积极的社会影响,并最大限度地减少其使用可能造成的有意或无意伤害。上下文方法对于有效的危害分析和缓解至关重要,尽管在任何代码生成模型部署中都需要考虑一些广泛的缓解类别,”OpenAI 写道。