Language Models 补充
BERT vs GPT
网络结构
- Masked Multi-Head-Attention。使用mask的原因是因为在预测句子的时候,当前时刻是无法获取到未来时刻的信息的。也就是Multi-Head-Attention可以看到Input的整个句子,而Masked Multi-Head-Attention只能看到当前输入之前的内容,无法看到之后的内容。
- 预训练任务。BERT:填空;GPT:预测接下来会出现的token是什么。
- fine-tuning。这就好比一个人博览群书,你问他什么类型的问题,他都可以顺手拈来。
T5
Text-to-Text Transfer Transformer
文本到文本传输转换器
模型
将翻译、分类、回归、摘要生成等任务都统一转成Text-to-Text任务,从而使得这些任务在训练(pre-train和fine-tune)时能够使用相同的目标函数,在测试时也能使用相同的解码过程。
在形式上统一了自然语言理解和自然语言生成任务的外在表现形式。
在下游任务上fine-tune模型时,为了告诉模型当前要做何种任务,我们会给每条输入样本加一个与具体任务相关的前缀。
- 翻译前缀 translate English to German:
- 分类前缀 cola sentence:
- 摘要前缀 summarize:
T5 的baseline模型直接采用标准的Transformer encoder-decoder结构,以便在生成任务和分类任务上都能取得不错的效果。
训练
无监督 & 有监督。
denoising objective:
新的尝试
模型架构
- fully-visible attention mask:输出序列的每个元素可以看见输入序列的每个元素。
- causal attention mask:输出序列的每个元素只能看对应位置及之前的输入序列的元素,无法看见未来的元素。
- causal with prefix attention mask:输入序列的一部分前缀采用fully-visible attention mask,其余部分采用 causal attention mask。
在最左侧的Encoder-Decoder结构中,Encoder部分采用fully-visible attention mask,而Decoder部分采用causal attention mask。
中间的Language model结构中,采用causal attention mask。
最右侧的Prefix LM结构中,采用causal with prefix attention mask。比如在翻译任务中,给定训练样本translate English to German: That is good. target: Das ist gut.,我们对translate English to German: That is good. target:采用fully-visible attention mask,对Das ist gut.采用causal attention mask。
结果:
随机Mask的比例
15% or ?
总表
总结
预训练策略:采用multi-task预训练方式(即无监督任务和有监督任务一起预训练),在对比迁移方法一小节中我们发现Multi-task pretraining + fine-tuning的效果和Unsupervised pre-training + fine-tuning的效果差不多,但是前者在预训练过程还能够监控下游任务的性能,因此作者最后采用Multi-task pre-training。
作者也说了,本文的目的不是提出一个新的方法,而是对NLP领域的一些技术支撑点提供一个较为全面的分析视角。
代码
https://github.com/google-research/text-to-text-transfer-transformer
mT5
mT5 → Multilingual T5 → 支持中文
代码
https://github.com/google-research/multilingual-t5
chatGPT
RLHF
Reinforcement Learning from Human Feedback
基于人类反馈的强化学习。
RLHF的训练过程可以分解为三个核心步骤:
- 预训练语言模型(LM)
- 收集数据并训练奖励模型
- 通过强化学习微调 LM
一个问题是训练这样的模型需要多少数据和人力标注?Hug给出的回答是,因为人工写回答要求质量高所以不能用众包。不过对RM模型的训练,需要的标注不多。
- 为什么不人工直接打分?因为打分是主观的需要归一化,而排序一般大家会有共同的结论:对同一个问题,A和B哪个回答更好。
- 有了一组一组的偏序(A>B, A>C, C>B)怎么得到每个回答的奖励分数?使用了Elo排名系统,来转换得到分数。