self-supervised learning
The models become larger and larger:
ELMO(94M)——>BERT(340M)——>GPT-2(1542M)——>Megatron(8B)——>T5(11B)——>Turing NLG(17B)——>GPT-3(175B)——>Switch Transformer(1.6T)
self-supervised learning
对于没有标注的data,想办法分成两部分,一部分作为输入,一部分作为模型标注——self-supervised learning(是一种unsupervised learning)
BERT
BERT基本架构
BERT network架构与Transformer Encoder一样
输入一段文字,对输入文字序列随机盖住(masking)
- 随机换成某种特殊token(mask)
- 随机替换成某一个字(random)
- 两种方法也是随机采用的
mask之后经过BERT得到的也是一串sequence vector,对该向量组进行线性变换(linear transfer),然后经过一个softmax,输出一个分布
如何进行训练?
训练目标是mask的token与原token越接近越好,好比如在词集中对mask token进行预测,最小化预测与真实值的交叉熵
另外一种方法/任务——Next Sentence Prediction
两个句子,经过BERT的输出,再接一个线性层,进行二元分类,去预测这两个句子是否是相接的。
但是这种方法并没有什么作用
General Language Understanding Evaluation(GLUE)
任务集:对模型进行微调并应用在多任务上,以评估模型能力
BERT的应用效果
以人类在各任务上的表现能力为基准(1.0)
how to use BERT
case1
input:seq;output:class——eg:情感分析
BERT参数通过pre-train初始化(unsupervised),并需要少量下游任务的标注资料——semi-supervised
scratch——全部随机初始化
fine-tune——pretrain(loss下降较快且loss较小)
case2
input:seq
output :相同长度的seq
eg:POS tagging
输入一个句子得到相同长度向量组,经过一个线性层再去softmax进行分类(多分类)
case3
input:2 seq
output:1 class
eg:推断关系(立场分析)
error
case 4
问答系统(答案一定出现在文章中Extraction-based)
输入问题和文章(以sep分隔)
有两个需要随机初始化的向量(其维度与BERT输出vector维度相同)
其中一个向量与文章部分输出向量做内积,再经过softmax得到概率值,概率值最高的vector作为起始的S
同理使用另一个向量找到答案结束位置E
PS:输入有一定的限制,太长的输出运算复杂,一般将文章切割再投入
training BERT is challenging
pre-training a seq2seq model
> mass输入句子,通过encoder-decoder还原
在C4上训练T5以尝试mass的各种组合
详情可见论文
why does BERT work?
将训练于文字上的BERT应用在蛋白质,DNA,音乐分类上
以DNA分类为例
将DNA对应到一些文字上再丢到pre-train的BERT里进行转化和分类
效果还不错
Multi-lingual BERT
用多种语言预训练BERT
在足够资料量时,不同语言的alignment效果更好语言信息藏在Multi-lingual BERT模型内
GPT
如果说BERT是mask训练数据做填空题,那么GPT就是使用训练数据去预测下一个出现的token
给定经过模型得到一个vector h1 经过线性变化和softmax分类得到一个distribution,并希望得到的distribution与正确答案的cross entropy越小越好
以此类推
由于有预测能力,可用于文本生成
GPT demo:
how to use GPT
self-supervised learning Beyoud Text
Image-SimCLR
Image-BYOL