OpenAI做了一次豪赌:不给任何指令,让模型自己学会所有任务

张开发
2026/5/11 10:15:42 15 分钟阅读

分享文章

OpenAI做了一次豪赌:不给任何指令,让模型自己学会所有任务
2019年2月OpenAI发表了一篇论文。论文本身并不长但它做了一件之前没有人敢认真尝试的事。他们训练了一个15亿参数的语言模型给它一个输入不给任何额外的训练样本不需要更新任何模型参数只依靠输入的文本提示它居然就能做翻译、做摘要、做问答。这在当时叫zero-shot learning。模型从没见过这些任务的训练数据但它就是会做。OpenAI自己也吓了一跳。他们认为这个模型太强大了可能被用来生成假新闻所以最初只发布了小版本完整模型后来才慢慢放出。这个决定本身又给GPT-2带来了巨大的关注度。但抛开营销不谈GPT-2真正重要的贡献是什么它到底证明了什么GPT-2的核心发现随着模型规模增大zero-shot能力在翻译、问答、摘要、常识推理等多个任务上持续提升。注意看每张小图的横轴模型参数量和纵轴准确率趋势几乎都是向上的来源原论文Figure 1一、预测下一个词到底有多强大让我们先想清楚一个最基本的问题。GPT-2的训练目标只有一个给一段文本预测下一个词。就这么简单。但仔细想想要做好这件事模型需要掌握什么给它一句法国的首都是____它需要知道地理知识。给它一句11等于____它需要知道算术。给它一句他很生气因为____它需要理解情绪和因果关系。给它一段新闻的前半段让它续写它需要了解新闻的写作风格和逻辑结构。发现规律了吗预测下一个词这个看似简单的目标实际上要求模型学会世界上所有类型的知识。因为如果你不懂语法就预测不出语法正确的下一个词。如果你不懂常识就预测不出合乎常理的续写。如果你不懂逻辑就无法维持一段论述的一致性。这就是语言模型最反直觉的地方目标越简单对能力的要求反而越全面。因为正确预测下一个词是一个几乎无限难的问题——你永远可以做得更好只需要学更多的知识。二、Zero-shot不教就会GPT-2最让人惊讶的发现是zero-shot能力。举个例子给模型输入Translate English to French: The cat is on the mat “它居然能输出法语翻译Le chat est sur le tapis”。模型从来没有被专门训练过翻译。它只是在海量文本上做了预测下一个词的训练。那它怎么就会翻译了答案是训练数据中存在大量的翻译场景。网页上经常出现English: xxx / French: xxx这样的双语对照。网页上经常出现双语对照的文档或者论坛中包含提问和对应外语回答的文本。论坛上有人问这句话法语怎么说下面有人回答。GPT-2在预测下一个词的过程中把这些模式全部学到了。当你给它Translate English to French:这个提示时它识别出了这个模式然后按照学到的模式续写。这不就是任务理解吗模型不是在执行一个翻译程序而是在延续一种文本模式。但效果是一样的。这个洞察极其重要——它意味着只要你给模型的提示足够清晰地定义了任务模型就能用学到的模式来完成任务。这个发现的影响是深远的。它直接导致了后来的prompt engineering——用自然语言描述任务让模型理解并执行。到GPT-3的few-shot再到ChatGPT的指令遵循全部建立在这个发现之上。三、字节级分词消灭[UNK]这个毒瘤在GPT-2之前几乎所有的NLP模型都有一个尴尬的问题遇到不认识的词怎么办传统的做法是用一个[UNK]unknowntoken代替。但这就意味着模型完全无法处理这些词——它只知道这里有个我不认识的词除此之外一无所知。对于人名、地名、术语、缩写、网络用语这个问题尤其严重。互联网文本中充满了创造性的新词你不可能把它们全部收录进词表。GPT-2的解决方案非常优雅不用词作为基本单位用字节。字节是什么是计算机存储文本的最小单位。一个英文字符占1个字节一个中文字符通常占3个字节。不管是什么词什么语言什么奇奇怪怪的符号在计算机层面都是字节的序列。用字节级分词的好处是词表大小固定为256字节的所有可能取值永远不会遇到不认识的输入。但纯字节的粒度太细了——hello被拆成5个字节太碎片化。所以GPT-2用了Byte-level BPEByte Pair Encoding先用字节表示所有文本然后用BPE算法把经常一起出现的字节合并成更大的单元。BPE的原理非常直觉扫描整个训练语料找出最频繁出现的相邻字节对合并成一个新token。重复这个过程直到词表达到你想要的大小。比如th经常一起出现就合并成一个token。the经常出现再合并。最终常见单词是完整的token罕见单词会被拆成字节级的子串。这个设计的精妙之处在于它同时解决了一词一token词表太大和一字符一token太碎片化的两个极端问题。今天几乎所有的大模型都在用某种形式的BPE。四、LayerNorm的位置一个小调整影响了整个行业原始Transformer中Layer Normalization的位置是在残差连接之后Post-LNoutput LayerNorm(x Sublayer(x))GPT-2改成了在子层之前Pre-LNoutput x Sublayer(LayerNorm(x))看起来只是换了个位置为什么这么重要要先理解LayerNorm到底做了什么。对于输入向量x它做了四步操作1. 算均值mu mean(x)2. 算方差sigma std(x)3. 标准化x_hat (x - mu) / sigma4. 缩放平移y gamma * x_hat betagamma和beta是可学习的参数本质上就是把输入拉到均值为0、方差为1的分布上再用可学习的参数调整到合适的范围。为什么Pre-LN更稳定在Post-LN中残差连接的输出直接进入LayerNorm。如果子层的输出数值很大LayerNorm的梯度会变得很小因为除以了很大的标准差。这就导致了深层网络中梯度消失的问题——越深越严重。在Pre-LN中先对输入做标准化保证进入子层的数值始终在合理范围内。而残差连接的直通通道x完全不受LayerNorm影响梯度可以无障碍地传播。打个比方Post-LN相当于在高速公路上设了一个收费站虽然能保证通过的车辆速度合理但也降低了通行效率。Pre-LN相当于在上高速之前先检查一遍上了高速就一路畅通。后来的研究发现用Pre-LN训练深层Transformer时可以不用learning rate warmup学习率预热训练更稳定。这个小小的改动使得GPT系列能够堆叠到几十层甚至近百层。五、规模化的信仰更大就一定更好吗GPT-2有15亿参数。在当时这是一个很大的数字但跟今天的千亿参数模型相比微不足道。但GPT-2最重要的遗产不是模型本身而是一个信念只要继续增大模型和数据语言模型就会不断涌现出新的能力。这个信念不是凭空产生的。GPT-2的论文中OpenAI展示了明确的证据更大的模型在zero-shot任务上表现更好。从1.17亿参数到15亿参数翻译、摘要、问答的性能都在稳步提升。当然GPT-2本身的能力还很粗糙。它的翻译远不如专业翻译系统摘要经常跑题问答经常答非所问。但它证明了一个方向性的判断规模化是通向更强AI的一条可行路径。正是这个判断驱动OpenAI投入巨资训练GPT-31750亿参数然后是GPT-4。也驱动了整个行业走上了scaling up的不归路。回头看GPT-2的论文标题Language Models are Unsupervised Multitask Learners语言模型是无监督多任务学习者本身就是最大的洞察语言模型不是在学语言它是在通过语言学世界。当你给它足够大的模型和足够多的数据它学到的就不只是语法和词汇而是翻译、推理、知识、逻辑——所有嵌入在人类语言中的智慧。这是GPT-2留给我们最重要的遗产。论文链接https://cdn.openai.com/better-language-models/language_models_are_unsupervised_multitask_learners.pdfkk的大模型论文学习笔记 · 第4篇 · GPT-2

更多文章