机器学习:Bert and its family

机器学习:Bert and its family_第1张图片

Bert

机器学习:Bert and its family_第2张图片
先用无监督的语料去训练通用模型,然后再针对小任务进行专项训练学习。

机器学习:Bert and its family_第3张图片

  • ELMo
  • Bert
  • ERNIE
  • Grover
  • Bert&PALS

Outline

机器学习:Bert and its family_第4张图片

Pre-train Model

机器学习:Bert and its family_第5张图片

首先介绍预训练模型,预训练模型的作用是将一些token表示成一个vector

机器学习:Bert and its family_第6张图片
比如:

  • Word2vec
  • Glove

但是对于英文,有太多的英文单词,这个时候应该对单个字符进行编码:

  • FastText
    机器学习:Bert and its family_第7张图片

对于中文,可以对部首偏旁,或者把中文字当做图片送人网络中得到输出:
机器学习:Bert and its family_第8张图片
上述方法的问题不会考虑每个句子意思中相同字会有不同的意思,产生相同的token:
机器学习:Bert and its family_第9张图片
contextualized word embedding
机器学习:Bert and its family_第10张图片
类似于sequence2sequence模型的encoder一样。
机器学习:Bert and its family_第11张图片
机器学习:Bert and its family_第12张图片
同样的token,给出不一样的embedding,上述句子都有苹果两字。

  • Bigger Model机器学习:Bert and its family_第13张图片
  • Smaller Model
    在这里插入图片描述
    重点关注ALBERT,将模型变小的技术:
    机器学习:Bert and its family_第14张图片
    网络架构设计:
    机器学习:Bert and its family_第15张图片
    让模型能读很长的内容,不仅是一篇文章,有可能是一本书。
  • Transformer-XL
  • Reformer
  • Longformer

self-attention的计算复杂度是 O ( n 2 ) O(n^2) O(n2)

How to fine-tune

如何进行预训练
机器学习:Bert and its family_第16张图片
机器学习:Bert and its family_第17张图片

  • 输入:
    一个句子还是两个句子,[sep]进行分割。
    机器学习:Bert and its family_第18张图片
  • 输出部分:
    输出一个class,加入一个[cls],产生跟整个句子有关的embedding
    机器学习:Bert and its family_第19张图片
    如果没有cls,就是把所有的embedding合起来送入模型,得到一个输出。
    机器学习:Bert and its family_第20张图片
    第二种就是给每个token一个class,相当于每个embedding一个class
    机器学习:Bert and its family_第21张图片
    Extraction-based QA
    机器学习:Bert and its family_第22张图片
    机器学习:Bert and its family_第23张图片
    机器学习:Bert and its family_第24张图片
    General Sequence
    如何用在生成文本呢?
    机器学习:Bert and its family_第25张图片
    上述结构encoder得不到好的使用

机器学习:Bert and its family_第26张图片
将预训练模型当做encoder使用,每次产生一个word后,送入模型继续生成,直到产生eos结束符。

机器学习:Bert and its family_第27张图片
微调有两种方法:

  • 第一种:预训练模型不动,对其产生的embedding 针对具体任务进行训练,只对上层模型微调;
  • 第二种:预训练模型和具体任务模型联合到一起训练,消耗会大一些;
    第二种方法会比对第一种方法获得的效果要更好一点,但是训练整个模型会遇到的一些问题:
    机器学习:Bert and its family_第28张图片
  • 训练完了之后预训练模型也发生了改变,相当于每个任务都会有一个不同的预训练模型,每个模型都比较大,这样非常的浪费。

针对上述问题,解决方法:

  • Adapter:只训练少量的参数结构APT

机器学习:Bert and its family_第29张图片
机器学习:Bert and its family_第30张图片
fine-tune的时候只会调APT结构的参数,但是是插入到transformer结构中,加深了网络:
机器学习:Bert and its family_第31张图片

  • Weighted Features
    综合每一层的embedding,送到具体的任务中学习,权重参数可以学出来。
    机器学习:Bert and its family_第32张图片
    机器学习:Bert and its family_第33张图片
    机器学习:Bert and its family_第34张图片
    机器学习:Bert and its family_第35张图片
    模型的loss,泛化能力。start-point到end-point,两点间距离越宽,凹的越浅说明泛化能力越一般;两点间距离越近,凹得越深说明泛化能力越好。

How to pre-train

如何进行预训练:

机器学习:Bert and its family_第36张图片

翻译任务

  • Context Vector(Cove)
    机器学习:Bert and its family_第37张图片
    把输入的句子A送入encoder,然后decoder得到句子B,需要大量的pair对data

Self-supervised Learning

机器学习:Bert and its family_第38张图片
self-supervised的input和output是自己产生出来的。

Predict Next Token

给定输入,预测下一个token

机器学习:Bert and its family_第39张图片
有了w1预测w2,用w1, w2预测w3, 然后用w1,w2,w3预测w4, 但是不能用右边的数据用来预测左边的数据:
机器学习:Bert and its family_第40张图片
机器学习:Bert and its family_第41张图片
基础架构网络使用的是LSTM:

  • LM
  • ELMo
  • ULMFiT

后续一些算法将LSTM换成Self-attention
机器学习:Bert and its family_第42张图片

  • GPT
  • Megatron
  • Turing NLG

注意:控制Attention的范围

机器学习:Bert and its family_第43张图片
可以用来生成文章: talktotransformer.com

机器学习:Bert and its family_第44张图片
机器学习:Bert and its family_第45张图片
机器学习:Bert and its family_第46张图片
机器学习:Bert and its family_第47张图片

机器学习:Bert and its family_第48张图片
如果只考虑左边的出现关系,为什么不考虑右边文本呢?

Predict Next Token-Bidrectional

左右两边产生的context,二者联合起来作为最终表示:
机器学习:Bert and its family_第49张图片

但是问题是左边只能看到左边的,无法看到右边的结束,右边只能看到右边的,无法看到左边的开始。

Masking input

机器学习:Bert and its family_第50张图片

随机的盖住某个词,是看到了完整的句子才来预测这个词是什么。
这种思想往前推,跟以前的cbow非常像:
机器学习:Bert and its family_第51张图片
Bert与cbow的区别就是左右两边的长度可以无限,而不是有个window窗口长度。

随机mask是否够好呢?有几种mask方法:

  • wwm
  • ERNIE
  • SpanBert
  • SBO
    机器学习:Bert and its family_第52张图片
    盖住一整个句子或者盖住好几个词。或者先把Entity找出来,然后把这些词盖住:
    机器学习:Bert and its family_第53张图片
    机器学习:Bert and its family_第54张图片
    盖住的长度按照上述图的出现概率。
    机器学习:Bert and its family_第55张图片
    盖住的左右两边的embedding来预测,以及输入的index来恢复中间的哪个词。
    SBO的设计期待左右两边的token embedding能够包含左右两边的embeeding信息。

XLNet

结构不是使用的Transformer,而是使用Transformer-XL

机器学习:Bert and its family_第56张图片

随机把顺序打乱,用各式各样不同的信息训练一个token。

Bert的训练语料比较规整:
机器学习:Bert and its family_第57张图片
Bert不擅长做Generative任务,因为bert训练的时候给的是整个句子,而generative只是给一部分,然后由左得右预测下一个token
机器学习:Bert and its family_第58张图片

MASS/BART

机器学习:Bert and its family_第59张图片
要对w1,w2, w3,w4进行一些破坏,不然model学不到任何东西,破坏的方法:
在这里插入图片描述
机器学习:Bert and its family_第60张图片

  • mask(随机mask)
  • delete(直接删掉)
  • permutation(打乱)
  • rotation(改变起始位置)
  • Text Infilling (插入一个别的误导,少掉一个mask)

结果是:
在这里插入图片描述

UniLM

机器学习:Bert and its family_第61张图片
机器学习:Bert and its family_第62张图片
UniLM进行多项训练

Replace or Not

  • ELECTRA,避开了需要训练和生成的东西,判断哪个位置是否被置换,训练非常简单,另外每个输出都被用到。
    *机器学习:Bert and its family_第63张图片
    置换的词不好弄,如果是随便置换肯定很容易知道。所以有了下面的结果,用一个小的bert预测的结果作为替换的结果,小的bert效果不要太好,不然预测的结果跟真实的一样,得不到替换的效果,因为替换的结果是一模一样的。
    机器学习:Bert and its family_第64张图片
    机器学习:Bert and its family_第65张图片
    只需要四分之一的计算量,就能达到XLNet的效果。

Sentence Level

机器学习:Bert and its family_第66张图片
需要整个句子的embedding。
机器学习:Bert and its family_第67张图片

  • 使用skip thought,如果两个句子的预测结果比较像,那么两个输入句子也比较像。
  • quick thought,如果两个句子的输出是相连的,让相似的句子距离越近越好。
    上述方法避开做生成的任务。

原始的Bert其实还有一项任务NSP,预测两个句子是否是相接的还是不相接的。两个句子中间用sep符号分割。
机器学习:Bert and its family_第68张图片

  • nsp:效果表现不好
  • Roberta:效果一般
  • sop: 正向是相接,反向是不相接,被用在ALBERT
  • structBert:Alice,
    机器学习:Bert and its family_第69张图片

T5 Comparison

机器学习:Bert and its family_第70张图片
5个T就叫T5
4个C就叫C4

ERNIE

希望在train的时候加入knowledge

机器学习:Bert and its family_第71张图片
Audio Bert
机器学习:Bert and its family_第72张图片


Multi-lingual BERT

多语言BERT
机器学习:Bert and its family_第73张图片

机器学习:Bert and its family_第74张图片
使用多种语言训练一个Bert模型
机器学习:Bert and its family_第75张图片
104种语言进行训练,可以做到Zero-shot的阅读理解。
机器学习:Bert and its family_第76张图片
在英文语料上进行训练,但在中文的QA任务上,效果还不错

机器学习:Bert and its family_第77张图片
机器学习:Bert and its family_第78张图片
中文翻译成英文,然后进行英文训练,发现结果并没有直接用中文训练的模型。
机器学习:Bert and its family_第79张图片

  • NER
  • Pire:词性标注

NER任务和词性标注任务都符合上述规律,用一种语言进行训练,然后在另外一种语音上进行任务处理。

是不是可以用来处理甲骨文?
机器学习:Bert and its family_第80张图片

Cross-lingual Alignment

中文的兔子embedding与英文的兔子embedding是比较接近的,模型可能去掉了语音的特性,而只考虑意思。

机器学习:Bert and its family_第81张图片
机器学习:Bert and its family_第82张图片
year排在第一名,month排在第三名,对应的分数是rank的倒数

机器学习:Bert and its family_第83张图片
机器学习:Bert and its family_第84张图片
资料量要非常大才能有比较好的结果,从BERT200k和BERT1000k中结果可以看到。
对传统的算法GloVe和Word2Vec也进行同样的实验,发现Bert效果还是要优于之前的算法。
机器学习:Bert and its family_第85张图片

How alinment happens

机器学习:Bert and its family_第86张图片
机器学习:Bert and its family_第87张图片
用fake-english代替真的english,然后去训练,跨语言的能力不需要中介语音的存在。

机器学习:Bert and its family_第88张图片
bert是知道语言的信息的,但是不是很在意语言类型。

机器学习:Bert and its family_第89张图片
每串文字代表一种语言,语言还是有一些差距的。
机器学习:Bert and its family_第90张图片
机器学习:Bert and its family_第91张图片
机器学习:Bert and its family_第92张图片
黄色是英文编码,蓝色是中文编码,二者融合起来,通过α进行控制:
机器学习:Bert and its family_第93张图片

在英文上进行fine-tune,然后在中文上进行测试,让embedding更像中文,在测试阶段,加上蓝色向量会提升效果。

你可能感兴趣的:(机器学习,bert,预训练模型)