赞
踩
Encoder-Decoder框架顾名思义就是编码-解码框架,目前大部分attention模型都是依附于Encoder-Decoder框架进行实现,在NLP中Encoder-Decoder框架主要被用来处理序列-序列问题。也就是输入一个序列,生成一个序列的问题。这两个序列可以分别是任意长度。
文本处理领域的Encoder-Decoder框架可以这样直观地去理解:可以把它看作适合处理由一个句子(或篇章)生成另外一个句子(或篇章)的通用处理模型。对于句子对<Source,Target>,我们的目标是给定输入句子Source,期待通过Encoder-Decoder框架来生成目标句子Target。Source和Target可以是同一种语言,也可以是两种不同的语言。而Source和Target分别由各自的单词序列构成:
每个 yi 都依次这么产生,那么看起来就是整个系统根据输入句子Source生成了目标句子Target。如果Source是中文句子,Target是英文句子,那么这就是解决机器翻译问题的Encoder-Decoder框架;如果Source是一篇文章,Target是概括性的几句描述语句,那么这是文本摘要的Encoder-Decoder框架;如果Source是一句问句,Target是一句回答,那么这是问答系统或者对话机器人的Encoder-Decoder框架。
——————————————————————————————————————————
Encoder:编码器,对于输入的序列<x1, x2, x3 … xn>进行编码,使其转化为一个语义编码C,C中储存了序列<x1, x2, x3 … xn>的信息
Encoder编码方式有很多种,在文本处理领域主要有RNN / LSTM / GRU / BiRNN / BiLSTM / BiGRU
以 RNN 为例,输入<x1, x2, x3, x4>,通过RNN生成隐藏层的状态值<h1, h2, h3, h4>,如何确定语义编码C呢?最简单的办法是直接用最后时刻输出的 ht 作为 C 的状态值,这里也就是可以用 h4 直接作为语义编码C的值,也可以将所有时刻隐藏层的值进行汇总,然后生成语义编码C的值,这里就是C = q (h1, h2, h3, h4 ),q是非线性激活函数。
得到了语义编码C之后,要在Decoder中对语义编码C进行解码
Decoder:解码器,根据输入的语义编码C,然后将其解码成序列数据,解码方式也可以采用RNN / LSTM / GRU / BiRNN / BiLSTM / BiGRU。Decoder和Encoder的编码解码方式可以任意组合。
——————————————————————————————————————————————————
视觉注意力机制是人类视觉所特有的大脑信号处理机制。人类视觉通过快速扫描全局图像,获得需要重点关注的目标区域,也就是一般所说的注意力焦点,而后对这一区域投入更多注意力资源,以获取更多所需要关注目标的细节信息,而抑制其他无用信息。
同一张图片,不同的人观察注意到的可能是不同的地方,这就是人的注意力机制。attention 就是模仿人的注意力机制设计的。深度学习中的注意力机制从本质上讲和人类的选择性视觉注意力机制类似,核心目标也是从众多信息中选择出对当前任务目标更关键的信息
Ci 的公式:
优点:
在一般任务的 Encoder-Decoder 框架中,输入 Source 和输出 Target 内容是不一样的,比如对于英-中机器翻译来说,Source是英文句子,Target是对应的翻译出的中文句子,Attention机制发生在Target的元素和Source中的所有元素之间。而Self Attention顾名思义,指的不是Target和Source之间的Attention机制,而是Source内部元素之间或者Target内部元素之间发生的Attention机制,也可以理解为Target=Source这种特殊情况下的注意力计算机制。其具体计算过程是一样的,只是计算对象发生了变化而已。
引入 Self Attention 后会更容易捕获句子中长距离的相互依赖的特征,因为如果是 RNN 或者 LSTM,需要依次序序列计算,对于远距离的相互依赖的特征,要经过若干时间步步骤的信息累积才能将两者联系起来,而距离越远,有效捕获的可能性越小。但是Self Attention在计算过程中会直接将句子中任意两个单词的联系通过一个计算步骤直接联系起来,所以远距离依赖特征之间的距离被极大缩短,有利于有效地利用这些特征。除此外,Self Attention对于增加计算的并行性也有直接帮助作用。正好弥补了attention机制的两个缺点。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。