海口市住房和城乡建设局网站,注册咨询公司,网站开发框架文档,ftp网站服务器Bert 先用无监督的语料去训练通用模型#xff0c;然后再针对小任务进行专项训练学习。 ELMoBertERNIEGroverBertPALS
Outline Pre-train Model 首先介绍预训练模型#xff0c;预训练模型的作用是将一些token表示成一个vector 比如#xff1a;
Word2vecGlove
但是对于…
Bert 先用无监督的语料去训练通用模型然后再针对小任务进行专项训练学习。 ELMoBertERNIEGroverBertPALS
Outline Pre-train Model 首先介绍预训练模型预训练模型的作用是将一些token表示成一个vector 比如
Word2vecGlove
但是对于英文有太多的英文单词这个时候应该对单个字符进行编码
FastText
对于中文可以对部首偏旁或者把中文字当做图片送人网络中得到输出 上述方法的问题不会考虑每个句子意思中相同字会有不同的意思产生相同的token contextualized word embedding 类似于sequence2sequence模型的encoder一样。 同样的token给出不一样的embedding上述句子都有苹果两字。
Bigger ModelSmaller Model 重点关注ALBERT将模型变小的技术 网络架构设计 让模型能读很长的内容不仅是一篇文章有可能是一本书。Transformer-XLReformerLongformer
self-attention的计算复杂度是 O ( n 2 ) O(n^2) O(n2)
How to fine-tune
如何进行预训练
输入 一个句子还是两个句子[sep]进行分割。 输出部分 输出一个class加入一个[cls]产生跟整个句子有关的embedding 如果没有cls就是把所有的embedding合起来送入模型得到一个输出。 第二种就是给每个token一个class相当于每个embedding一个class Extraction-based QA General Sequence 如何用在生成文本呢 上述结构encoder得不到好的使用 将预训练模型当做encoder使用每次产生一个word后送入模型继续生成直到产生eos结束符。 微调有两种方法
第一种预训练模型不动对其产生的embedding 针对具体任务进行训练只对上层模型微调第二种预训练模型和具体任务模型联合到一起训练消耗会大一些 第二种方法会比对第一种方法获得的效果要更好一点但是训练整个模型会遇到的一些问题 训练完了之后预训练模型也发生了改变相当于每个任务都会有一个不同的预训练模型每个模型都比较大这样非常的浪费。
针对上述问题解决方法
Adapter只训练少量的参数结构APT fine-tune的时候只会调APT结构的参数但是是插入到transformer结构中加深了网络
Weighted Features 综合每一层的embedding送到具体的任务中学习权重参数可以学出来。 模型的loss泛化能力。start-point到end-point两点间距离越宽凹的越浅说明泛化能力越一般两点间距离越近凹得越深说明泛化能力越好。 How to pre-train
如何进行预训练 翻译任务
Context VectorCove 把输入的句子A送入encoder然后decoder得到句子B需要大量的pair对data
Self-supervised Learning self-supervised的input和output是自己产生出来的。
Predict Next Token
给定输入预测下一个token 有了w1预测w2用w1, w2预测w3 然后用w1,w2,w3预测w4 但是不能用右边的数据用来预测左边的数据 基础架构网络使用的是LSTM
LMELMoULMFiT
后续一些算法将LSTM换成Self-attention
GPTMegatronTuring NLG
注意控制Attention的范围 可以用来生成文章 talktotransformer.com 如果只考虑左边的出现关系为什么不考虑右边文本呢
Predict Next Token-Bidrectional
左右两边产生的context二者联合起来作为最终表示
但是问题是左边只能看到左边的无法看到右边的结束右边只能看到右边的无法看到左边的开始。
Masking input 随机的盖住某个词是看到了完整的句子才来预测这个词是什么。 这种思想往前推跟以前的cbow非常像 Bert与cbow的区别就是左右两边的长度可以无限而不是有个window窗口长度。
随机mask是否够好呢有几种mask方法
wwmERNIESpanBertSBO 盖住一整个句子或者盖住好几个词。或者先把Entity找出来然后把这些词盖住 盖住的长度按照上述图的出现概率。 盖住的左右两边的embedding来预测以及输入的index来恢复中间的哪个词。 SBO的设计期待左右两边的token embedding能够包含左右两边的embeeding信息。 XLNet
结构不是使用的Transformer而是使用Transformer-XL 随机把顺序打乱用各式各样不同的信息训练一个token。
Bert的训练语料比较规整 Bert不擅长做Generative任务因为bert训练的时候给的是整个句子而generative只是给一部分然后由左得右预测下一个token
MASS/BART 要对w1,w2, w3,w4进行一些破坏不然model学不到任何东西破坏的方法
mask随机maskdelete直接删掉permutation打乱)rotation改变起始位置Text Infilling 插入一个别的误导少掉一个mask)
结果是
UniLM UniLM进行多项训练
Replace or Not
ELECTRA避开了需要训练和生成的东西判断哪个位置是否被置换训练非常简单另外每个输出都被用到。 * 置换的词不好弄如果是随便置换肯定很容易知道。所以有了下面的结果用一个小的bert预测的结果作为替换的结果小的bert效果不要太好不然预测的结果跟真实的一样得不到替换的效果因为替换的结果是一模一样的。 只需要四分之一的计算量就能达到XLNet的效果。
Sentence Level 需要整个句子的embedding。
使用skip thought如果两个句子的预测结果比较像那么两个输入句子也比较像。quick thought如果两个句子的输出是相连的让相似的句子距离越近越好。 上述方法避开做生成的任务。
原始的Bert其实还有一项任务NSP预测两个句子是否是相接的还是不相接的。两个句子中间用sep符号分割。
nsp效果表现不好Roberta效果一般sop: 正向是相接反向是不相接被用在ALBERTstructBertAlice
T5 Comparison 5个T就叫T5 4个C就叫C4
ERNIE
希望在train的时候加入knowledge Audio Bert Multi-lingual BERT
多语言BERT 使用多种语言训练一个Bert模型 104种语言进行训练可以做到Zero-shot的阅读理解。 在英文语料上进行训练但在中文的QA任务上效果还不错 中文翻译成英文然后进行英文训练发现结果并没有直接用中文训练的模型。
NERPire词性标注
NER任务和词性标注任务都符合上述规律用一种语言进行训练然后在另外一种语音上进行任务处理。
是不是可以用来处理甲骨文
Cross-lingual Alignment
中文的兔子embedding与英文的兔子embedding是比较接近的模型可能去掉了语音的特性而只考虑意思。 year排在第一名month排在第三名对应的分数是rank的倒数 资料量要非常大才能有比较好的结果从BERT200k和BERT1000k中结果可以看到。 对传统的算法GloVe和Word2Vec也进行同样的实验发现Bert效果还是要优于之前的算法。
How alinment happens 用fake-english代替真的english然后去训练跨语言的能力不需要中介语音的存在。 bert是知道语言的信息的但是不是很在意语言类型。 每串文字代表一种语言语言还是有一些差距的。 黄色是英文编码蓝色是中文编码二者融合起来通过α进行控制
在英文上进行fine-tune然后在中文上进行测试让embedding更像中文在测试阶段加上蓝色向量会提升效果。