3月1日Codex是去年发布的大规模深度学习语言模型GPT3的后代
深度学习模型的复杂性通常通过它们拥有的参数数量来衡量。一般来说,模型的学习能力随着参数数量的增加而增加。GPT-3 带有 1750 亿个参数,比其前身GPT-2(15 亿个参数)大两个数量级以上。GPT-3 在超过 600 GB 上进行了训练,比 GPT-2 的训练数据集大 50 多倍。
除了规模的巨大增长之外,GPT-3 的主要创新是“小样本学习”,即执行未经过训练的任务的能力。介绍 GPT-3的论文题为“Language Models are Few-Shot Learners”,并指出:“在这里,我们展示了扩展语言模型极大地提高了与任务无关的、few-shot 性能[强调我的],有时甚至达到与之前最先进的微调方法。”
基本上,前提是在大型文本语料库上训练的足够大的模型可以匹配或优于专门用于特定任务的多个模型。
但根据 OpenAI 的新论文,GPT-3 的各种版本都无法解决用于评估 Codex 的任何编码问题。公平地说,GPT-3 的训练数据集中没有编码样本,所以我们不能指望它能够编码。但 OpenAI 的科学家们也测试了 GPT-J,这是一个在The Pile上训练的 60 亿参数模型,一个 800 GB 的数据集,其中包括 95 GB 的 GitHub 和 32 GB 的 StackExchange 数据。GPT-J 解决了 11.4% 的编码问题。Codex 是 GPT-3 的 120 亿参数的一个版本,在 GitHub 的 159 GB 代码示例上进行了微调,解决了 28.8% 的问题。另一个名为 Codex-S 的 Codex 版本通过监督学习进行了微调,将性能提升到 37.7%(其他 GPT 和 Codex 模型通过无监督学习进行训练)。
Codex 证明机器学习仍然受制于“没有免费的午餐”定理(NFL),这意味着泛化是以性能为代价的。换句话说,当机器学习模型旨在解决一个特定问题时,它们会更加准确。另一方面,当他们的问题领域扩大时,他们的表现就会下降。
Codex 可以以较差的自然语言处理能力为代价,以高精度执行一项专门的任务(将功能描述和签名转换为源代码) 。另一方面,GPT-3 是一种通用语言模型,可以生成关于很多主题(包括复杂的编程概念)的体面文本,但不能编写一行代码。