GPT发展历程
在回答这个问题之前,首先要搞清楚ChatGPT的发展历程。
- GPT-1用的是无监督预训练+有监督微调。
- GPT-2用的是纯无监督预训练。
- GPT-3沿用了GPT-2的纯无监督预训练,但是数据大了好几个量级。
- InstructGPT在GPT-3上用强化学习做微调,内核模型为PPO-ptx,下面的论文会详细分析。
- ChatGPT沿用了InstructGPT,但是数据大了好几个量级。
ELMO用Bi-LSTM,GPT用transformer的Decoder,BERT用transformer的Encoder;
ELMO:双向,GPT:单向,BERT:双向;
ELMO:解决一词多义,GPT:特征更丰富,BERT:双向/多任务训练/能捕捉更长距离的依赖;
GPT:适合文本生成等任务(NLG任务),BERT:适合预测任务(NLU任务);
GPT-1的问题
- fine-tune只能用到特定任务中,如果fine-tune一个分类任务,不能用到句子相似度中去。我们能不能用一个模型做所有NLP的任务,能不能尽量加所有的任务。
- 目标:language model去解决任何NLP的任务,这就是后续GPT2和GPT3的改进。
针对GPT-1的问题,GPT-2作了如下改进:
-
去掉了fine-tuning层:不再针对不同任务分别进行微调建模,而是不定义这个模型应该做什么任务,模型会自动识别出来需要做什么任务。
主打zero-shot像下面这样一个机器翻译的样本转换成一个句子,一个QA的问答对也转换成一个句子,GPT2就只优化语言模型的损失。
-
其次在预训练阶段,GPT-2采用了多任务的方式,不单单只在一个任务上进行学习,而是多个,每一个任务都要保证其损失函数能收敛,不同的任务是共享主体transformer参数的,该方案是借鉴了之前微软的MT-DNN,这样能进一步的提升模型的泛化能力,因此在即使没有fine-turning的情况下依旧有非常不错的表现。
-
从模型的规模和参数量上说,GPT有1.17亿的参数量,而GPT2将Transformer堆叠的层数增加到48层,隐层的维度为1600,,参数量达到了15亿(最大的GPT-2模型);而Bert参数量也只有3亿。
-
模型结构方面,GPT2的结构类似于GPT,仍然使用单向的 Transformer 模型,只做了一些局部修改:
- 将归一化层移到Block的输入位置;
- 在最后一个自注意力块之后加了一层归一化
- 同时在residual层初始化的时候,将其乘了 1 / N 1/\sqrt{N} 1/N.这里的N是residual的层数。
GPT2对比GPT3:
- GPT-3结构和GPT-2一样,但是数据约为GPT-2的1000倍,模型参数约为GPT-2的100倍,暴力出奇迹,使得效果很惊艳。
- GPT-3不再追求极致的zero-shot学习,即不给你任何样例去学习,而是利用少量样本去学习。
主打few-shot - 由于GPT-3庞大的体量,在下游任务进行fine-tune的成本会很大。因此GPT-3作用到下游子任务时,
不进行任何的梯度更新或fine-tune。
缺点:
- 虽然效果比GPT-2好很多,但是在文本生成上还是比较弱的。假如让GPT-3生成一个很长的文本,可能给了几段之后,就会重复起来
结构和算法的局限性。GPT-3是语言模型,不能像bert那样双向看。 - 均匀地预测下一个词。不能判断哪个词重要,哪个词不重要,导致语言模型可能会花很长时间去学习一些常见的虚词,不像人类学习的划重点。
- 样本有效性不够。基本上把整个网络上的文章下载下来了。
做few-shot时,模型真的是根据你给的样本从头学习的吗?这样碰到训练样本上没有出现的任务,也能够泛化过去;还是根据这些样本,从训练记忆里找出相关的,认出了这个任务,那拼的就是训练数据的大小了。
为什么采用Decode only架构?

- 训练效率和工程实现
- Encoder的双向注意力存在低秩问题
- 参数少一半(推理成本)
- decoder-only 有较强的zero-shot表现
输入部分的注意力改为双向不会带来收益,Encoder-Decoder架构的优势很可能只是源于参数翻倍。

GPT系列从GPT-1到GPT-3及InstructGPT,不断发展预训练技术,从无监督到强化学习微调。GPT-2取消fine-tuning层,GPT-3数据量大幅增加,InstructGPT结合监督和强化学习提高模型忠实性。通过RLHF(基于人类反馈的强化学习)训练,解决模型安全性和一致性问题。
最低0.47元/天 解锁文章
4918

被折叠的 条评论
为什么被折叠?



