Korbin
Korbin
发布于 2019-09-07 / 0 阅读
0
0

神经图灵机

神经图灵机

Neural Turing Machines原文

  • 读记忆(Read Heads)

    把时刻$t$的记忆看作是一个$ N \times M $的矩阵$ M_t $,读的过成首先生成长度为$N$的定位权重向量$w_t$,表示$N$个记忆位置的权值大小,读出的记忆向量为$r_t$:

r_t=\sum_i^Nw_t(i)M_t(i) \ \ \ \sum_iw_t(i)=1

对$N$条记忆进行加权求和

  • 写记忆(Write Heads)

    类似LSTM:擦除向量$e_t$,增加向量$a_t$

    • 擦除操作:
    M_t'(i)=M_{t-1}(1-w_t(i)e_t(i))
    
    • 增加操作:
    M_t(i)=M_t'(i)+w_t(i)a_t(i)
    

    神经图灵机的关键是定位向量$w_t$,其它的是由控制器(LSTM,MLP)输出

  • 定位机制(Addressing Mechanism)

    结合了基于内容和基于位置的两种方法

    • 基于内容(Content-based Addressing)

      w_t^c(i)=\frac {\exp(\beta_tK[k_t,M_t(i)])}{\sum_j\exp(\beta_tK[k_t,M_t(j)])}
      

      $K[...]$是余弦相似度计算:

      K[u,v]=\frac{u \cdot v}{\Vert u\Vert \cdot \Vert v\Vert}
      

      $\beta_t$是控制器输出

    • 基于位置(Location-based Addressing)

      • 插值(Interpolation)

        w_t^g=g_tw_t^c+(1-g_t)w_{t-1}
        

        $g_t$有控制器生成

      • 偏移(shift)

        \tilde w_t(i)=\sum_{j=0}^{N-1}w_t^g(j)s_t(i-j)
        

        每一个$\tilde w_t(i)$都与相邻元素有关

      • 重塑(Sharping)

      w_t(i)=\frac{\tilde w_t(i)^{\gamma_t}}{\sum_j\tilde w_t(j)^{\gamma_t}}
      

评论