GPT
- pre-training:给一个序列预测序列的下一个词
- semi-supervised 半监督学习(往后也称self- supervised)
-
第一部分:pre-training
损失函数L1
k表示上下文长度【序列长度/窗口大小】,使用前k个字和模型 θ \theta θ预测第i个字是 u i u_i ui的概率;将每一个字
的预测i(从0-句子末尾)的损失相加(取e就是连乘得到联合概率) -
第二部分:下游子任务fine-tune
把预训练学到的表征迁移到子任务transfer learned representations to the target task。
损失函数L2:input tokens { x 1 x^1 x1, x 2 x^2 x2, x 3 x^3 x3,… x m x^m xm } (其中还会根据子任务类别加入start、delim、extract的独特标记,此标记不能和真实文本混淆)
label y (序列标号根据子任务类别确定)分类损失函数
-
合并目标函数
L
3
(
C
)
=
L
2
(
C
)
+
λ
L
1
(
C
)
L_3(C) = L_2(C) + \lambda L_1(C)
L3(C)=L2(C)+λL1(C)
- transformer 解码器
GPT in NLP 经典任务
- 分类:分类一段文字
- 蕴含:判断前面的话是否支持后面的假设(三分类:支持、不支持、既不支持也不反对)
- 相似:判断两端文本是否相似
- 多选:从n个答案中选出最正确的答案
- 其他任务
reading comprehension
translation
summarization
question answering
GPT2
- 下游任务时不再进行fine-tune而是使用zero-shot
zero-shot具体形式: prompt!
(translate to French, English text , French text)
(answer the question, document, question, answer)
借助prompt使得预训练模型适应下游任务 - multitask learning 多任务学习:训练模型时使用多个数据集、多损失函数 (reddit dataset…)
GPT3
使用few shot,适应子任务时和zero-shot一样也不需要计算梯度
- zero-shot: task description + prompt =>
- one-shot: task description + 1 example + prompt 【上下文学习】【模型推理】
从中间的example抓取有用的信息进行下游任务的适应 **few-shot learning**
:task description + few examples(1-100) + prompt
meta- learning、in-context learning
fine-tune:预训练模型在新的数据上进行梯度微调,学习率较小
common crawl 质量差
common crawl(负类)+ reddit (正类) logistical regression来训练出判断质量的数据模型
去重: lsh算法(判断集合和集合间的相似度)