NLP 3.5 Transformer的结构,BERT&masked language model

1、Transformer

在这里插入图片描述
LSTM 和 transformer可以互相替代。

Long term dependency 是 rnn/lstm-based models 的主要问题。以及串行计算的高时间复杂度。shallow model,只在时间维度上deep,纵向的角度是浅层的。

Linear computation 是时序模型的通病。

1.2 Transformer的结构

encoder+decoder: 每个部分都是deep的

每个encoder:self-attention+feed forward

在这里插入图片描述

1.3 Encoder结构

在这里插入图片描述

1.4 Decoder 结构

在这里插入图片描述

1.5 Each encoder block

在这里插入图片描述

Self-attention:q,k,v

在这里插入图片描述
针对thinking这个单词,计算每个词对于它的依赖性的权值的过程。

在这里插入图片描述
在self-attention的计算中,把一句话的每个词当作平等的关系计算它们之间的相关性。

在这里插入图片描述
在这里插入图片描述
通过self-attention可以计算每两个词之间的相关性,颜色越深代表相关性越强。

Multi-head attention 同时定义多个q,k,v矩阵。

在这里插入图片描述

最终的输出的是每一组q,k,v拼接起来的向量:z1+z2+z3+z4+z5+Z6+Z7,再定义一个w0,使其降维成z。

在这里插入图片描述

1.6 Encoder layer 部分代码

在这里插入图片描述
流程:经过attention layer,经过feedforward net

定义multi head attention & feed forward network

在这里插入图片描述
在这里插入图片描述

2、decoder 端

self-attention+encoder/decoder attention+feedforward

2.1 DecoderLayer

在这里插入图片描述

2.2 encoder-decoder attention

在这里插入图片描述
enocer-decoder attention使用的是encoder的output+decoder的output

在这里插入图片描述

3、BERT

3.1 Pretraining embedding

  • Word2vec。问题:单词在不同场景下语义不同,embedding应该也不一样。
  • Context representation

3.2 Learn contextualized embedding

Language model/LSTM+ unsupervised data:给定当前单词,预测下一个单词

pretraining+fine tuning:预训练一个模型,拿到一个新的task,微调参数,使得模型可以在new task上得到好的结果

在这里插入图片描述

3.3 回顾language model

语言模型一般是单向的,优点是比较适合生成单词。但当目的是:想学习出最好的单词表示法(在上下文中),比如学习w2在整句话中的含义,需要观察整个句子的单词。

如何改进语言模型?

1)bidirectional LSTM:相当于训练了两个模型。

在这里插入图片描述

2)Fully bidirectional context embedding

在这里插入图片描述

为什么language model 要设计成单向?

计算的便利性。

3.4、Masked language model

把一些单词随机的去掉,去掉的单词加入特殊符号,任务变成通过一层模型,输入带特殊符号的句子,预测出那些被去掉的单词。使用交叉熵计算loss进行优化。

在这里插入图片描述
masked language model 预测的是被masked 的位置,计算loss只计算被标记的单词。

为什么要这么做?
为了让模型更加稳定:add noise(drop out 也属于add noise的方法),希望模型在加入noise后也能有很好的表现
De-noising auto-encoder:输入的向量加入一些噪声输入到encoder,通过学习使得decoder依然可以很好的复原未加入噪声的图片。

masked language model存在的问题

domain的不匹配,测试数据是不包含mask的
如何解决:
在这里插入图片描述

3.5 Masked language model in BERT

masked language model+transformer.

在这里插入图片描述

4、BERT: Masked+Transformer

4.1 Transformer 用于二分类的情感分析

在这里插入图片描述

加入一个cls,得到的c用于做classifier

4.2 Transformer 用于匹配两个sentence的关系

如果两个sentence是连续的,classifier输出1
如果sentence不是上下文关系,classifier输出0
在这里插入图片描述

4.3 Bert 的loss

classifier的loss+masked部分的loss

5、Bert的训练过程

在这里插入图片描述
classifier:判断两个sentence是否是连续的文本。

Bert 代码

在这里插入图片描述

Bert的forward:

1、对单词做embedding, 三个部分的embedding

  • token embedding 单词信息
  • position embedding 位置信息
  • segment embedding 单词出现在sentence1还是sentence2
    在这里插入图片描述
    embedding部分:
    在这里插入图片描述

2、做mask,将embedding输入进n层的layers

3、Mask LM

在这里插入图片描述
80%的概率,单词要mask掉
10的概率:单词要被替换到其他的单词

4、分别计算LM的loss和classifier的loss

猜你喜欢

转载自blog.csdn.net/weixin_51182518/article/details/113929301