解决问题:“机器如何看懂人类的文字,如何把文字输入电脑”
一、发展历史
1.1 of n encoding
每一个词有一个独特编码,词于词之间没有任何关联(欧氏距离一样) 
2.word class
给词分类,但太粗糙了。每个class里仍有1.中的问题(欧式距离相同) 
3.word embedding
每个词汇用一个向量表示,向量中的每一个维度表示某个特性。(用上下文完成训练) 同一个type,同一个embedding 但对于**【一词多义】(不同的token(含义),同一个type(字形))**,仍用同一个embedding,并不准确 
4.contextualized word embedding
一个token对应一个embedding(也是通过上下文) 上下文相似,就会有相似的embedding token:语义 输入句子的分词结果,注意即使同一个词出现两遍,他分完词也是2个token,有不同的embedding type:spelling
4.1ELMO(embedding from language model)
从输入预测下一个token 
  把上下文的embedding链接起来 
问题:当网络深度大于1时,各层的embedding如何处理
 elmo:我全都要
不同任务的alpha1、2不同 
4.2 bert
1.transformer的encoder
Elmo:基于rnn bert:基于self attention
2.不需要annotation
bert 不需要label资料(annotation 注解),只要一大堆句子就好了,只训练transformer的encoder就好了 transformer需要label资料(annotation 注解)
*注意:中文的训练用字比词好,因为中文的字有限,词不好穷举,所以现在中文的bert 预训练只有字
二、bert
1.training of bert
1.1 masked LM(完型填空)
随机15%的词汇被遮盖,被置换成一个特殊的token【mask】 解决的问题:完形填空,预测被遮盖住的是什么词  **方法:**抽出被mask的单词经过bert网络后输出的vector,输入到LM分类器中(线性的,弱分类器),让分类器预测是哪个词 思想:LM很弱,那么要分类正确,BERT的representation就必须很强,可以通用 形成的问题:完形填空的两个词,填在同一个地方没有违和感,那这2词embedding很像
1.2.next sentence prediction(预测下一个句子是什么)
判断两个句子是不是连在一起的
需要两个标记【SEP】【CLS】  把【CLS】的embedding,放进linear binary 分类器,输出判断,是否是下一个句子 linear binary 分类器和bert是一起被训练的 
问题:为什么把判断标志放在开头?
因为bert里是self-attention结构,不是RNN(rnn要放在开头) self attention的特点是【天涯若比邻】(不考虑位置embedding时),两个相邻的word和距离很远的word是一样的,所以前后都一样
论文中1.1masked LM和1.2NSP是一起使用的,bert同时训练这两种embedding效果最好
2.how to use bert
2.1.把bert当elmo,输出embedding,抽取相关特征,做你想做的事情
2.2分类
输入:句子 输出:分类 比如,文章分类、句子是正面还是负面信息 
2.3词的分类
输入:单句 输出:每个词的类别 比如,slot filling  每个词汇output的embedding,进入linear分类器(LC)输出每个词的分类分类 end to end,LC(从头学)和bert(fine-tune)一起训练 
2.4 推断关系
输入:2个句子 输出:分类 比如,【自然语言推论】,给前提+假设,判断假设对不对 
2.5 extraction based Question Answering
给model读一篇文章,问他一个问题,希望他能给出答案 ,答案一定在文章里(extraction based)   
  如果s>e,说明此题无答案
3.bert每层学到了什么
24层  NLP的几个任务:POS、、、relations(图左) 位置,文法,指代,词间的关系等等
一个词的24层的vector抽出来做weight descent weight(图右深蓝,哪一层的方块越长,说明那层的embedding乘上的weight越大)是根据任务训练出来的,看weight的情况,就可而已知道什么任务特别需要哪些层
图右的每一个横轴表示一个任务,某层在该任务中的值(蓝色方块)越高,说明这个任务越需要哪一层
4.multilingual bert
104种语言的资料都给同一个bert学习,他会学到不同语言之间的对应关系  有人教他了英文文章的分类,他自动就学会了中文文章的分类
三、ERNIE
专为中文设计 bert时 maskLM用盖的是字,但是对中文来说遮盖字太容易被猜出来了,应该遮盖词——ERNIE  
四、GPT—transformer的decoder
generative pre training 买点:巨大 GPT-2:1542M GPT-3:1700M
4.1解决问题:这个词的下一个是什么
输入:潮水 输出:退了 再增加输入:退了 输出:就 。。。
4.3 步骤
 退了拿下来,再加入输入中  不断重复 
4.4 用途
 可以用来写作,给文章的前半段,可以自己完成文章
|