前言:GPT整体上与transformer结构相似,但只用了decoder部分。
1. GPT
- 预训练:无监督,根据前k个词预测下一个词的概率。
- 微调: 有监督,目标函数=有监督的目标函数+λ*无监督的目标函数。
- 核心结构:主要由12个transformer的decoder组成,并且只用了mask multi-head attention
2. GPT2
与GPT1相比做了以下改进:
- 在attention前做了Layer Norm,使得模型输入更稳定
- 输入序列的最大长度从 512 扩充到 1024。
- 使用预训练+zero-shot的方式,而不是预训练+有监督微调,zero-shot通过prompt实现。
3. GPT3
与GPT2相比做了以下优化:
- zero-shot变few-shot
- attention变为了sparse attention
4. 知识补充
4.1 下游任务实现方式
- fine-tuning:预训练 + 训练样本计算loss更新梯度,然后预测。会更新模型参数
- zero-shot:预训练 + task description + prompt,直接预测。不更新模型参数
- one-shot:预训练 + task description + example + prompt,预测。不更新模型参数
- few-shot:又称为in-context learning,预训练 + task description + examples + prompt,预测。不更新模型参数
4.2 sparse attention
- dense attention:token之间两两计算注意力,时间复杂度为 O ( N 2 ) {O(N^2)} O(N2)
- sparse attention:token只与其他token的一个子集计算注意力。对于某一个token,只计算和他相对距离小于k,以及距离为2k,3k…nk的token计算,时间复杂度为 O ( N ∗ l o g ( N ) ) {O(N*log(N))} O(N∗log(N))