rnn,encoder-decoder,attention,seft-attention概念

133 阅读2分钟

前言

  • 讲解思路:rnn-->encoder-decoder-->attention-->seft-attention

RNN循环神经网络

0012a68521014bb6aa4d6aaccd61e5bf.png

  • 首先看图👆🏻,此图为全连接神经网络。可以看出,全连接神经网络由于每一层中每一个输入都是一个单独的个体,所以缺点就是不能更好的处理序列信息。

  • 序列信息:一段连续的信息,前后信息之间是有关系的,必须将不同时刻的信息放在一起理解。

  • 举例:一句话虽然可以拆分成多个不同的词语,但是必须将这些词语连在一起才能得到一句话的意思。

RNN就由此诞生,用于解决序列信息的任务,在RNN任务中,一句话中的每个词并不是单独存在的,而是根据上下文信息,前后词有关。

encoder-decoder

image.png

  • 以上图为例,输入<x1,x2,x3>,通过RNN生成隐藏层的状态值<h1,h2,h3>,如何确定Encoder Vector呢?最简单的办法直接用最后时刻输出的ht作为Encoder Vector的状态值,这里也就是可以用h4直接作为语义编码C的值,也可以将所有时刻的隐藏层的值进行汇总,然后生成Encoder Vector的值,这里就是C=q(h1,h2,h3),q是非线性激活函数。 得到了Encoder Vector之后,接下来就是要在Decoder中对Encoder Vector进行解码了。

  • Decoder:解码器,根据输入的Encoder Vector,然后将其解码成序列数据,解码方式也可以采用RNN/LSTM/GRU/BiRNN/BiLSTM/BiGRU。Decoder和Encoder的编码解码方式可以任意组合,并不是说我Encoder使用了RNN,Decoder就一定也需要使用RNN才能解码,Decoder可以使用LSTM,BiRNN这些。

Attention

attention的概念:对于一个物体,不同的人观察到的可能是不同的地方,这就是人的注意力机制。attention就是模仿人的注意力机制诞生的。

attention的诞生:对于像encoder-decoder这种RNN的模型不能进行并行计算,速度慢。

  • attention的优点:速度快,不再依赖于RNN,解决了RNN不能并行计算的问题。在Decoder阶段可以并行计算。
  • attention的缺点:Encoder不够完美,还是要依靠RNN。

self-attention

由于attention不够完美的原因,又诞生了self-attention。此两者的计算方式是相同的。

不同的地方在于:attention是发生在encoder-decoder之间的计算,而self-attention是发生在encoder或者decoder内部的计算。

这样就解决了原先的缺点。

两者只是计算对象发生了变化而已。