ITPub博客

首页 > > > 8.1 Attention(注意力机制)和Transformer

8.1 Attention(注意力机制)和Transformer

作者:RayChou 时间:2019-12-30 11:04:42 0 删除 编辑

前言

  同学们好,这一节我们来介绍一下近年来NLP方面的一些新技术。Google这两年相继发表了《Attention Is All You Need》和《BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding》等一系列在学术方面高质量的论文,可以说还是值得关注的。前者介绍的模型叫做Transformer,后者介绍的模型就叫BERT。这两种模型都是基于一类叫做“Attention”的技术演变而来,而且在NLP领域表现格外得好。本节我们先介绍一下Attenion和Transformer模型。

1、Attention(注意力机制)

首先我们来讲讲什么是Attention?Attention不是一个模型而是一种处理思想,而且这种处理思想也并非NLP独创,在CV、ASR、TTS领域都可以应用它。

比如使用传统的RNN技术来做翻译,这个时候就是一个很典型的Sequence-to-Sequence(简写为Seq-to-Seq)的模型,输入一个中文序列输出一个英文序列。那么在时序上展开就像是上面这个样子。这个时候通过Encoder部分要把输入的汉字序列编成一段code,然后把code输入到解码器的部分再解开,解的时候每一个时间序列都输出一个词汇,最多参考前面的一个或者数个词汇。这就是以前使用LSTM或者GRU层作为翻译工具的模式。这个模式的问题是对于输入的内容一股脑生成一段code,实际对于哪个单词生成code中的哪个部分起了多大作用是无法有效区分的。进而带来的问题就是模型的训练难度大,预测准确度低。这就好比一个老师讲课,永远用一种语速、一种语调来照本宣科,从来不划重点,想让学生提高学习效率想来也是很难。

Attention机制的改变就是希望能够通过某种方式,让这个编解码过程中每个不同字符或者词汇对编解码过程的重要程度做以区分。我们就用这个图来做一个示意好了,编码部分变化不大,解码部分做一些增强。让编码部分做这样一个计算:

就是让左侧编码过程中的每一个输出通过跟一个矩阵相乘,得到一个有关注意力的编码c,让这个c参与解码。在训练的过程中让这个矩阵学会一种量化的注意能力,对不同位置不同词汇的采纳程度不同。Attention机制现在越来越多地出现在各个领域的模型中,虽然目的相近但是形式不一。在实践中发现,不论是NLP领域还是CV或其它领域的模型在使用了Attention机制中能力都有了比较明显的提升。


2、Transformer模型

在一篇由Google发布的名为《Attention Is All You Need》的论文中,将Attention思想发挥到极致。这篇论文中提出了一个名为Transformer的全新模型,抛弃了以往深度学习任务里面使用到的 CNN 和 RNN。这个模型广泛应用于NLP领域,例如机器翻译,问答系统,文本摘要和语音识别等等方向。

首先将这个模型看成是一个黑箱操作。在机器翻译中,就是输入一种语言,输出另一种语言。

下面我们来通过解剖黑箱子,来看看这其中的原理。这个黑箱子是由编码组件、解码组件和它们之间的连接组成。

编码组件是由一堆的编码器(encoder)组成。解码组件部分也是由相同数量(与编码器对应)的解码器(decoder)组成的。如下图所示,

我们先来看看编码器,所有的编码器在结构上都是完全相同的,不同的是他们没有进行参数共享,也就是说每一个编码器都是独立的。而每个编码器又可以分解成两个子层。

从编码器输入的句子首先会经过一个自注意力(self-attention)层,这层帮助编码器在对每个单词编码时关注输入句子的其他单词。自注意力层的输出会传递到前馈(feed-forward)神经网络中。每个位置的单词对应的前馈神经网络都完全一样。

我们再来看看解码器,其实解码器的结构和编码器的结构几乎相同,都有自注意力(self-attention)层和前馈(feed-forward)层。除此之外,这两个层之间多了一个注意力层,用来关注输入句子的相关部分。

我们仍然以机器翻译的任务举例,假设现在需要将“我是学生”这个话翻译成“I am Student”时,transformer是如何工作的呢?首先,会将句子拆成“我”,“是”,“学生”三个词,然后再转化成词向量。(关于词向量的转化之前的文章以前详细地说过了)然后将3分词分别输入到编码器中编码。

在完成编码阶段后,则开始解码阶段。解码阶段的每个步骤都会输出一个输出序列(在这个例子里,是英语翻译的句子)的元素。接下来的步骤重复了这个过程,直到到达一个特殊的终止符号,它表示transformer的解码器已经完成了它的输出。每个步骤的输出在下一个时间步被提供给底端解码器,并且就像编码器之前做的那样,这些解码器会输出它们的解码结果 。


小结

  本节介绍了现时NLP领域的一些新技术。相对于传统的RNN、LSTM和GRU等序列模型,Transformer模型在工程上能够更好地实现并行化训练,大大节省了训练时间。此外,新加入的注意力机制可以更好地捕捉句子中的长依赖问题,可谓完胜了RNN等序列模型。本节讲解到此结束,如你对本节有疑问,欢迎在讨论区与我讨论。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69954080/viewspace-3123000/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 6.1 循环神经网络
下一篇: 7 知识图谱
请登录后发表评论 登录
全部评论
现任金山办公软件人工智能组高级AI研发工程师。多年从事机器学习,特别是NLP自然语言处理算法的研究及开发工作。拥有丰富的软件开发经验,以及丰富的人工智能算法训练平台开发经验。

注册时间:2019-11-14

  • 博文量
    71
  • 访问量
    60577