- 340M 参数
BERT
自监督学习的目标跟目标越接近越好。
一个任务:预测句子中被mask的词:
BERT通过Masking Input来获得训练数据
mask有两种做法:
-
将某个字token换成一个特殊符号(代表盖住)
-
随机把某个字换成另外一个字
盖住的部分输出的向量作为Linear层的输入,然后送入softmax得到所有感兴趣词的概率分数。
盖住的字就能作为标签
另外一个任务:预测下一句 -
cls
-
sep
两个句子应不应该接到一起,这项任务太简单了。改进的方法:RoBERTa,SOP(前后句子都能互相组队)
使用BERT
- 填空题
- 预测下一句
基于上面功能可以做一些downstream任务
用Pre-train训练,fine-tune Bert模型
模型评估
九个任务上的平均分是多少表示模型的好坏。
基于Bert模型,自然语言处理能力有比较大的提升。
使用
- case1: 输入是序列,输出是类别。
bert提取特征,加线性层+softmax分类,仍然需要一些标注数据
主要是学线性层的参数,bert得到的权重比随机初始化的要好。
- case2: 输入是序列,输出也是序列,类似于输入,比如词性标注
- case3: 输入两个句子,输出一个类别,比如推理(基于输入能否推出某个论点)
- case4: 问答系统(有点限制的问答,答案一定出现在文章里面)
输入一个问题,输出两个正整数,表示第s个字到第e个字作为答案。
正确答案在文章中的起始位置和结束位置。
把文章截成一小段一小段作为训练数据。
- BERT
- ALBERT
时间:
- TPU V3 花费8天
将句子弄坏,看看后续能不能还原出来。
- T5 训练,公开数据1PB
BERT工作原理
将字转成embeeding后,相近的字特征空间里比较接近
计算特征之间的相似性:
BERT的输出,每个向量代表那个对应的输入的字。一个词汇的意思取决于上下文:
早期的cbow技术的思想与BERT的想法一样,word embedding, 两层线性层。Bert就是深度学习版本的cbow,还考虑上下问:
DNA转成对应的文字,然后再做分类:
Multi-lingual BERT
用多种语言混合的训练填空题,结果在QA时候用英文训练,能够比较好的回答中文的QA;
不同语种之间相同意思在特征空间比较
两天没有变,一周突然就变了:
资料变多,训练效果就变好。
矛盾点:英文输出英文,中文输出中文,假如BERT能够学习不同语言的embedding,假如是英文句子空着的地方,为什么不推理出来的是中文呢?说明BERT还是能够识别出语种的差距:
加上差距后就能英文输入,中文输出:
GPT
任务是预测接下来后出现的token是什么
应用的是Transformer的decoder,不会看到之后的词:
有生成文字的能力:
使用
- few shot learning
- one-shot learning
- zero-shot learning
第3代GPT在42个任务上进行测试,效果还不是很好,但是在3.5及以后,效果基本上达到人类水平。
GTP3的细节:
其他方面
语音mask版本的bert和gpt,预测接下来出现的内容。缺评测的benchmark,文本类的有GLUE,语音上有superb