当前位置:   article > 正文

Seq2Seq中的Attention详解_seq2seq中decoder对encoder的attention叫什么

seq2seq中decoder对encoder的attention叫什么

Encoder-Decoder(Seq2Seq)

  • Encoder-Decoder结构先将输入数据编码成一个上下文向量 c c c
  • 把Encoder的最后一个隐状态赋值给 c c c,还可以对最后的隐状态做一个变换得到 c c c,也可以对所有的隐状态做变换
  • 拿到c之后,就用另一个RNN网络对其进行解码(Decoder),将c当做之前的初始状态 h 0 h_{0} h0输入到Decoder中
  • 还有一种做法是将 c c c当做每一步的输入

Attention

  • 在Encoder-Decoder结构中,Encoder把所有的输入序列都编码成一个统一的语义特征 c c c再解码,因此, c c c中必须包含原始序列中的所有信息,它的长度就成了限制模型性能的瓶颈
  • Attention机制通过在每个时间输入不同的 c c c来解决这个问题

  • 每一个 c c c会自动去选取与当前所要输出的 y y y最合适的上下文信息。具体来说,我们用 α i j \alpha_{ij} αij衡量Encoder中第 j j j阶段的 h j h_{j} hj和解码时第 i i i阶段的相关性,最终Decoder中第 i i i阶段的输入的上下文信息 c i c_{i} ci就来自于所有 h j h_{j} hj α i j \alpha_{ij} αij的加权和。
  • α i j \alpha_{ij} αij和Decoder的第 i i i阶段的隐藏状态、Encoder第 j j j个阶段的隐藏状态有关
  • 在Encoder的过程中保留每个RNN单元的隐藏状态(hidden state)得到( h 1 h_{1} h1 h N h_{N} hN),取 h j h_{j} hj,表示Encoder层的隐层第 j j j时刻的输出
  • 在Decoder的过程中根据 x i x_{i} xi h i ′ h'_{i} hi(这里和Encoder的 h i h_{i} hi区分一下)得到 h i ′ h'_{i} hi,设为 s i s_{i} si
  • 注:最开始的论文在Encoder-Decoder里面的当前Decoder的attention得分用的是 s i − 1 s_{i-1} si1 h j h_{j} hj来算,但斯坦福教材上图上确实是画的 s i s_{i} si h j h_{j} hj来算,而且后续论文大多是用的这种方式,即当前步的attention score用的当前步的隐藏状态 s i s_{i} si和前面的 h j h_{j} hj去算的
  • 通过Decoder的hidden states加上Encoder的hidden states来计算一个分数,用于计算权重
    e i j = s c o r e ( s i , h j ) e_{ij} = score(s_{i},h_{j}) eij=score(si,hj)
  • 注:这里有很多计算方式
    s c o r e ( s i , h j ) = { s i T h j s i T W a h j v a T t a n h ( W a [ s i T ; h j ] ) score(s_{i},h_{j}) = \left\{
    siThjsiTWahjvaTtanh(Wa[siT;hj])
    \right.
    score(si,hj)=siThjsiTWahjvaTtanh(Wa[siT;hj])
  • softmax权重归一化
    α i j = e x p ( e i j ) ∑ k = 1 T x e x p ( e i k ) \alpha_{ij} = \frac{exp(e_{ij})}{\sum_{k=1}^{T_{x}}exp(e_{ik})} αij=k=1Txexp(eik)exp(eij)
  • 计算 c c c
    c i = ∑ j = 1 T x α i j h j c_{i} = \sum_{j=1}^{T_{x}}\alpha_{ij}h_{j} ci=j=1Txαijhj

Experiment

1115-1120 after data smoothing
T = 10
features = 70
train = all * 0.7
test = all * 0.3
  • 1
  • 2
  • 3
  • 4
  • 5

Test RMSE: 3.955
Test nRMSE: 0.289
  • 1
  • 2
nasdaq100_padding
T = 10
features = 81
train = all * 0.7
test = all * 0.3
  • 1
  • 2
  • 3
  • 4
  • 5
Encoder: LSTM
Decoder: LSTM
  • 1
  • 2

Test RMSE: 0.579
Test nRMSE: 0.105
  • 1
  • 2
Encoder: BiLSTM
Decoder: LSTM
  • 1
  • 2

Test RMSE: 0.384
Test nRMSE: 0.069
  • 1
  • 2
Encoder: GRU
Decoder: LSTM
  • 1
  • 2

Test RMSE: 0.252
Test nRMSE: 0.046
  • 1
  • 2
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/870018
推荐阅读
相关标签
  

闽ICP备14008679号