Lie-Access Neural Turing Machineを纏める

ランニングできず 英語できず

(1)引き続き Lie-access Neural Turing Machine を読む。この論文は2つに分かれている。

 1) DeepMindのNeural Turing Machine(NTM)が以下の複雑なパターンの学習できる理由

         ・a b c d e f g  ⇔  g f e d b aと逆を教えると  x y w v z  →  z v w y zと逆出力する

          ・a b c ⇔ a b c a b c a b cと3回繰返すと  v  x  y  z→ v  x  y  z  v  x  y  z  v  x  y  zと3回出力

          ・3 4 5 6 7 ⇔ 3 5 7 4 6と奇数先とすると    a b c d e→ a c e b dと奇数順から出力

  この様な学習はLSTM単独ではできず、外部記憶で記憶できるため可能になっている。

  これは下図にある様に、外部記憶のアクセス・コントローラがニューラルネットで構成され、これが適切に移動するからであるが、この論文はこの部分がLie群多様体上の動きであるので、安定した結果が得られるとの主張である。

 

f:id:mabonki0725:20170720190220p:plain

 

  上図を式で記述すると以下の展開になっている

            {h^{(t)} := LSTM(x^{(t)}; \rho^{(t-1)},h^{(t-1)})}

            {\rho^{(t)} :=Reed(\Sigma^{(t-1)},h^{(t)})}

   {\Sigma^{(t)} :=Write(\Sigma^{(t-1)},h^{(t)})}

   ここで

         {h}はLSTMの隠れ変数 

         {\rho}は外部記憶からの読込値

         {\Sigma}は外部記憶(N×M)で{(k_i,v_i,s_i)  i=1,\cdots,N}で構成される

      {k_i}は外部記憶のキー  

      {v_i}はキー位置での値(vector)

       {s_i}はキー位置でのデータ長

        ここで外部記憶への針(Header)は{q'(h)}とすると、読込値{\rho}は以下となる

     {\rho := Read(\Sigma,h) = \sum_i w_i(q'(h),\Sigma)v_i}

              {w_i(q,\Sigma) := \frac{s_i \exp \lt q,k_i \gt}{\sum_j s_j \exp \lt q,k_j \gt}}

  上式の{w_i}は外部記憶のキー毎での重みであって、{q'(h) = k_i}ほど内積{\lt q,k_i \gt}大きくなる。

  即ち隠れ変数と似たキーが{\rho}として検索されることになる

  

2) Lie群上のNTM(LANTM)モデルでの検証

 この主張を確認するため、アクセス・コントローラをLie群上の関数で実装して、DeepMindのNTMと比較して、実現できるか確認している。得られた結果はかなりの精度の向上が示されている。

 HeadはLie群上で操作{a(h)}で移動するが、以下の2つのLie群多様体上を移動するものとする。

     Headの位置の移動{q  \to q'}

     {q' := a(h) \cdot q}

   (A) Lie群上のシフト移動

  {q' := a(h) \cdot q = (\alpha,\beta) + (x,y) = (x+\alpha,y+\beta)}

   (B) Lie群上の球面上の移動

  {q':= a(h) \cdot q = (\xi,\theta) \cdot q = qcos\theta + (\xi \times q)sin\theta + \xi \lt \xi,q \gt (1 - cos\theta)}

    読込み値{\rho}を決める重みはLie群上の距離 {d(a,b)}の近さに比例と定義する

         {w_i(q,\Sigma) := \frac{s_i dz(q,k_i)^{-2}}{\sum_j s_j d(q,k_j)^{-2}}}

 これは近い程大きな値を取るので、DeepMindのNTMが{\lt q,k_i \gt}内積と同じ考え方である。