从RNN到BERT

一、文本特征编码

1. 标量编码

美国:1 中国:2 印度:3 … 朝鲜:197

标量编码问题:美国 + 中国 = 3 = 印度

2. One-hot编码

美国:[1,0,0,0,…,0]
中国:[0,1,0,0,…,0]
印度:[0,0,1,0,…,0]

美国 + 中国 = [1,1,0,0,…,0],代表拥有美国和中国双重国籍

3. Embedding编码

二、文本序列化表示

1、Tokenization

2、Build Dictionary

3、One-hot encoding

 

4、Align Sequences

三、RNN模型

 

整个RNN只有一个参数矩阵A。RNN 在大规模的数据集上已经过时,不如Transformer模型,但在小规模数据集上,RNN还是很有用的。

3.1 RNN模型结构

3.2 为什么用双曲正切?是否可去掉?

3.3 RNN的模型参数

参数矩阵A的行: shape(h)

参数矩阵A的列: shape(h)+shape(x)

总参数数量: shape(h)× [shape(h)+shape(x)] (未考虑偏移量bias)

输入x 的维度(词嵌入向量)应该通过交叉验证的方式选择 输出状态向量h的维度也应该通过交叉验证的方式选择。

3.4 基于RNN的分类任务

可以使用多个状态向量进行下游任务:

3.4.1 只使用最后一个状态向量

  • Training Accuracy: 89.2%
  • Validation Accuracy: 84.3%
  • Test Accuracy: 84.4%

3.4.2 使用所有状态向量

  • Training Accuracy: 96.3%
  • Validation Accuracy: 85.4%
  • Test Accuracy: 84.7%

3.5 RNN的局限

RNN 在状态向量ht中积累xt及之前的所有信息,ht可以看作整个输入序列中抽取的特征向量

RNN 记忆比较短,会遗忘很久之前的输入x 。

四、LSTM模型

4.1 RNN与LSTM网络结构比较

 

4.2 LSTM传送带

过去的信息直接流向未来。 LSTM使用“传送带”C 来获得比RNN更长的记忆。

 4.3 LSTM 门

4.4 Bi-LSTM

 

可以使用RNN或LSTM进行更为复杂的任务,例如机器翻译,下面会介绍机器翻译模型Seq2Seq。

五、Seq2Seq模型

Seq2Seq模型用来进行句子翻译,Seq2Seq包括Encoder编码器以及Decoder 解码器 两部分,最早的Seq2Seq模型由两个RNN模型组成,如下图所示。

Attention对Seq2Seq网络的提升十分明显,如下图所示(BLEU:机器翻译评价指标,“双语评估替补”)

5.1 基于Attention的Seq2Seq模型

5.2 基于Attention的Seq2Seq模型参数计算

5.3 Attention的可解释性

无论输入多长,Attention都可以获得所有输入信息,且由于计算每个输出与所有输入的状态向量的相关性,所以会对相关的输入产生较高相关性,也就具备了一定的可解释性

六、Attention模型

6.1 基于RNN的Self-Attention

Attention可以用来做句子翻译。 而Self-Attention可以用来代替RNN。 Self-Attention是Attention的特殊形式。Self-Attention模型其实就是在序列内部做Attention,寻找序列内部的联系。

例如输入一个句子,那么里面的每个词都要和该句子中的所有词进行attention计算。目的是学习句子内部的词依赖关系,捕获句子的内部结构。

Self-Attention和RNN最大的区别是不使用状态向量h,而是采用状态向量c 去更新下一个状态h。

 

6.2 基于RNN的Self-Attention参数计算

七、Transformer模型

  • Transformer完全基于Self- Attention 和Attention Transformer 是一个 Seq2Seq 模型
  • 不是 RNN
  • 仅包含Self-Attention层 、Attention层 和全连接层
  • Transformer完爆最好的RNN+Attention模型

7.1 Transformer中的Attention

Transformer中的Attention剔除了RNN,即没有循环部分。

Attention层接收两个输入序列,分别为输入序列:𝒙_𝟏 , 𝒙_𝟐 , 𝒙_𝟑 ,…, 𝒙_(𝒎,)
输出序列:𝒙’_𝟏 , 𝒙‘_𝟐 , 𝒙’_𝟑 ,…, 𝒙′_𝒕

使用参数矩阵Wq生成q1,具体计算方式如下:

C1 依赖于所有的输入x1,x2,…,xm 以及当前的输入x’_1,具体计算方式如下:

7.2 Transformer中的Self-Attention

7.3 Transformer Multi-Head

 

7.4 Transformer Encoder

利用Self-Attention Layer + Dense Layer 构造Transformer模型的Encoder模块:

 

7.5 Transformer Encoder Block

 

7.6 Transformer Decoder Block

7.7 Transformer模型

 

 

八、BERT

BERT的全称为Bidirectional Encoder Representations from Transformers 。

BERT 用来预训练Transformer模型的Encoder网络 两个基本任务: 1、预测被遮挡的单词: 随机遮挡单/多个单词,根据上下文预测被遮挡的单词。 2、预测两句话是否在原文里真实相邻。

8.1 BERT任务

8.1.1 任务一: 预测被遮挡的单词

8.1.2 任务二: 预测两句话是否在原文里真实相邻

两句子拼接 训练数据构造 50%为真实相邻的句子,label=True(1); 50%为随机选择的句子,label=False(0)

8.2 BERT如何改造下游任务

Bert具备广泛的通用性,就是说绝大部分NLP任务都可以采用类似的两阶段模式直接去提升效果。

 

8.3 BERT效果

从模型创新角度看一般,创新不算大。但效果太好了,基本刷新了很多NLP的任务的最好性能。 Bert最大的亮点在于效果好及普适性强,几乎所有NLP任务都可以套用Bert这种两阶段解决思路,而且效果应该会有明显提升。

 

 

 

我的博客即将同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=eji4i5y8xjp

 

posted @ 2020-07-29 20:49  Bo_hemian  阅读(1528)  评论(0编辑  收藏  举报