天天看点

深度学习(自然语言处理)Bert学习资料整理0 前言:1、Seq2Seq学习2 注意力机制3 Transformer 与RNN 4 Bert模型

目录

0 前言:

1、Seq2Seq学习

2 注意力机制

2.1  注意力机制动手实践

2.1.1基于注意力的神经网络机器翻译

Tensorflow实现:

Pytorch实现:

2.2 Self Attention:

2.2.1 区别:

2.3 The Illustrated Transformer

3 Transformer 与RNN 

3.1 对比

3.2 Transformer优势:

4 Bert模型

4.1 [NLP自然语言处理]谷歌BERT模型深度解析

4.2 一文读懂BERT(原理篇)

4.3 梳理Bert几个可能的应用

0 前言:

这部分的学习需要一定的储备知识,不建议一开始就上手Bert。关于Encoder-Decoder原理可以看一下动手学习Seq2Seq,本章先从一般的Encoder-Decoder、Attention机制、Transformer模型、最后到Bert模型的资料学习

1、Seq2Seq学习

  • 动手学习Seq2Seq
  • AINLP :长文详解Attention、Seq2Seq与交互式匹配

2 注意力机制

  • 在解码器器的每⼀时间步对输⼊序列列中不同时间步的表征或编码信息分配不同的注意⼒⼀样
  • 在注意⼒机制中,解码器的每⼀时间步将使用可变的背景变量
  • 注意力机制能够为表征中较有价值的部分分配较多的计算资源

特别是启发了了依靠注意⼒力力机制来编码输⼊入序列列并解码出输出序列列的变换器器

(Transformer)模型的设计

Transformer抛弃了卷积神经网络和循环神经网络的架构

深度学习(自然语言处理)Bert学习资料整理0 前言:1、Seq2Seq学习2 注意力机制3 Transformer 与RNN 4 Bert模型

出自深度学习动手实践

一文看懂 Attention(本质原理+3大优点+5大类型)

2.1  注意力机制动手实践

2.1.1基于注意力的神经网络机器翻译

Tensorflow实现:

官网有提供基于注意力的神经网络翻译

https://tensorflow.google.cn/tutorials/text/nmt_with_attention

Pytorch实现:

Seq2Seq实验教程(三)这部分的话,建议如果之前看过动手学习Seq2Seq,继续看完这部分

2.2 Self Attention:

Q,K,V 分别代表查询向量矩阵、键向量矩阵、值向量矩阵,其中键向量矩阵、值向量矩阵在编码器中产生,而查询变量在解码器中产生。编码器首先处理输入序列。然后,顶部编码器的输出转换为注意力向量K和V的集合。每个解码器将在其“编码器-解码器注意”层中使用它们。

2.2.1 区别:

  • 在解码器中,仅允许自我注意层参与输出序列中的较早位置。这是通过在自注意力计算中的softmax步骤之前屏蔽将来的位置(将它们设置为-inf)来完成的。
  • “ Encoder-Decoder Attention”层的工作方式与多头自注意力类似,不同之处在于它从其下一层创建其Queries矩阵,并从编码器堆栈的输出中获取Keys和Values矩阵。

我们需要将将注意力集中在输入句子的其他部分上的程度由K,Q向量点积所得的分数决定。

2.3 The Illustrated Transformer

这一篇博文详细的介绍了Attention的实现,讲解了Attention Q,K,V所代表的含义

深度学习(自然语言处理)Bert学习资料整理0 前言:1、Seq2Seq学习2 注意力机制3 Transformer 与RNN 4 Bert模型

https://jalammar.github.io/illustrated-transformer/

注意力网络多论文出处

https://www.cnblogs.com/robert-dlut/p/8638283.html

3 Transformer 与RNN 

https://blog.csdn.net/Zhangbei_/article/details/85036948

NLP的发展,以及将RNN与Transformer进行对比,Bert简单介绍

3.1 对比

深度学习(自然语言处理)Bert学习资料整理0 前言:1、Seq2Seq学习2 注意力机制3 Transformer 与RNN 4 Bert模型

越往前的输入,随着距离的增加,信息衰减得越多

3.2 Transformer优势:

Transformer这个结构不管当前词和其他词的空间距离有多远,包含其他词的信息不取决于距离,而是取决于两者的相关性,这是Transformer的第一个优势。

第二个优势在于,对于Transformer来说,在对当前词进行计算的时候,不仅可以用到前面的词,也可以用到后面的词。而RNN只能用到前面的词,这并不是个严重的问题,因为这可以通过双向RNN来解决。

第三点,RNN是一个顺序的结构,必须要一步一步地计算,只有计算出h1,才能计算h2,再计算h3,隐向量无法同时并行计算,导致RNN的计算效率不高,这是RNN的固有结构所造成的,之前有一些工作就是在研究如何对RNN的计算并行化。

关于上面的第三点优势,可能有人会不认可,RNN的结构包含了序列的时序信息,而Transformer却完全把时序信息给丢掉了。为了解决时序的问题,Transformer的作者用了一个绝妙的办法,这就是我在前文提到的位置编码(Positional Encoding)。

深度学习(自然语言处理)Bert学习资料整理0 前言:1、Seq2Seq学习2 注意力机制3 Transformer 与RNN 4 Bert模型

位置编码是和word embedding同样维度的向量,将位置embedding和词embedding加在一起,作为输入embedding

  • Token Embedding:WordPiece tokenization subword词向量。
  • Segment Embedding:表明这个词属于哪个句子(NSP需要两个句子)。
  • Position Embedding:学习出来的embedding向量。这与Transformer不同,Transformer中是预先设定好的值。

4 Bert模型

4.1 [NLP自然语言处理]谷歌BERT模型深度解析

https://blog.csdn.net/qq_39521554/article/details/83062188

这篇博文的特点是:一篇篇论文进行讲解

第一,是这个模型非常的深,12层,并不宽(wide),中间层只有1024,而之前的Transformer模型中间层有2048。这似乎又印证了计算机图像处理的一个观点——深而窄 比 浅而宽 的模型更好。

第二,MLM(Masked Language Model),同时利用左侧和右侧的词语,这个在ELMo上已经出现了,绝对不是原创。其次,对于Mask(遮挡)在语言模型上的应用,已经被Ziang Xie提出了(我很有幸的也参与到了这篇论文中):[1703.02573] Data Noising as Smoothing in Neural Network Language Models。这也是篇巨星云集的论文:Sida Wang,Jiwei Li(香侬科技的创始人兼CEO兼史上发文最多的NLP学者),Andrew Ng,Dan Jurafsky都是Coauthor。但很可惜的是他们没有关注到这篇论文。用这篇论文的方法去做Masking,相信BRET的能力说不定还会有提升。

BERT 的五个关键词 Pre-training、Deep、Bidirectional、Transformer、Language Understanding 分别是什么意思?

4.2 一文读懂BERT(原理篇)

https://blog.csdn.net/jiaowoshouzi/article/details/89073944

关于Mask遮挡,通过这篇博文的图片更好理解

深度学习(自然语言处理)Bert学习资料整理0 前言:1、Seq2Seq学习2 注意力机制3 Transformer 与RNN 4 Bert模型

4.3 梳理Bert几个可能的应用

https://zhuanlan.zhihu.com/p/68446772

继续阅读