Hybrid Computing using a Neural Network with
Dynamic External Memory
Yusuke IWASAWA
書誌情報
• Nature (Deep Mind3 本目 )• 2016/10/12 published• 引用 21• 著者 (20 人,すべて DeepMind)
Alex Graves, Greg Wayne, Malcolm Reynolds, Tim Harley, Ivo Danihelka, Agnieszka Grabska-Barwińska, Sergio Gómez Colmenarejo, Edward Grefenstette, Tiago Ramalho, John Agapiou, Adrià Puigdomènech Badia, Karl Moritz Hermann, Yori Zwols, Georg Ostrovski, Adam Cain, Helen King, Christopher Summerfield, Phil Blunsom, Koray Kavukcuoglu & Demis Hassabis
概要
• Differentiable Neural Computer (DNC) を提案– 微分可能なニューラルネットによるコンピュータ ( 的なもの )
• 外部メモリを持つニューラルネットワーク系の論文– Memory Networks (2014)– Neural Turing Machine (2014, NTM)– Pointer Networks (2015)– Dynamic Memory Networks (2015)– Etc
• 基本的に NTM の上位互換– Joint-First の Alex Graves さん , Greg Wayne さんは NTM の著者
目次
• なぜ外部メモリを使うのか• 外部メモリを使うとできること• 外部メモリの使い方
– Memory Networks– Neural Turing Machine– Differentiable Neural Computer
• 本論文の実験• 外部メモリ付き NN の課題と研究動向
背景
• ニューラルネットワークは信号処理で特にうまくいっている– 画像処理– 音声処理
• 一方,いくつかのことはできない or 苦手 – 変数を表現する– データ構造 ( リストなど ) を表現する– 長期に渡って記憶する
• 普通のノイマン型コンピュータはこれらが得意• NN とコンピュータの差分 = 外部記憶が課題では
– 普通の NN は記憶する機能がない / 弱い• 外部記憶装置を持つニューラルネットを提案
外部メモリ付きニューラルネット
NN
Input
Output
NN
Input
Output
External
Memory
普通のNN 外部メモリ付きNN
読み書き
メモリの内容
• DNN• CNN
• Memory Networks [Weston, 2015]• Neural Turing Machine [Graves, 2014]• Dynamic Neural Computer [Graves, 2016]
外部メモリと LSTM, ノイマン型コンピュータ,脳
• LSTM (Long Short Term Memory) との比較– LSTM はある種の内部メモリ– メモリの大きさと学習するパラメタ / 処理が切り離せない– + 情報の保持と情報に対する処理を同じ 1 つの NN で行うので大変
• ノイマン型コンピュータにおける位置づけ– RAM 的な位置づけ
• 脳的な位置づけ – Working Memory と対応に関する記述 (NTM 論文 )– 海馬と対応に関する記述 (DNC 論文 )– ( よくわからないので強い方教えてください )
Differentiable Neural Computer (DCN) の特徴
• 従来的なニューラルネットと比べると– 外部メモリを持つため,従来は難しかった長期記憶等が可能
• ノイマン型コンピュータと比べると– 微分可能であり,データからメモリの使い方を学習可能
• 他の外部メモリ付きニューラルネットと比べると– メモリをどう使うかが異なる ( 後述 )
目次
• なぜ外部メモリを使うのか• 外部メモリを使うとできること• 外部メモリの使い方• 本論文の実験• 外部メモリ付き NN の課題と研究動向
Logical Reasoning (bAbI)
By Facebook“Towards AI-Complete Question Answering: A Set of Prerequisite Toy Tasks” より抜粋
対話
“EVALUATING PREREQUISITE QUALITIES FOR LEARN - ING END -TO-END DIALOG SYSTEMS” より抜粋
Visual Question Answering
“Dynamic Memory Networks for Visual and Textual Question Answering” より抜粋
これ記憶しておく必要があるのかは図を見ただけだとわからなかった
アルゴリズム的な処理
入力を回繰り返す = For 文緑のあとに現れた入力を出力
“Neural Turing Machine” より抜粋
推論 ( この論文より抜粋 )
Jo が Freya の母であり, Charlotte が Jo の母であり, Lindsey が Charlotte の母であり, Fergus がLindsey の息子であることが分かれば Freya の Maternal great uncle であることがわかる
目次
• なぜ外部メモリを使うのか• 外部メモリを使うとできること• 外部メモリの使い方
– DNCの話しして最後にメモリーネットとNTMとの違いをちょろっと説明します• 本論文の実験• ICLR2017, NIPS2016 での研究動向
外部メモリ付き NN の一般的な構成要素
1. Memory: 情報を記憶しておく装置2. Input Module: 入力 x を変換する部分 3. Writer: メモリを書き換える装置4. Reader: メモリから必要な部分を読み込む装置5. Output Module: 読み込んだ内容を元に出力
※ 青部分が新しい要素※ モデル / タスクによっては一部は固定にしたりする
DNC の実現方法
• Memory: 記憶素子– 前ページ 1 に対応
• Controller: – 入力を変換 + 出力に変換– に加えて, Heads で読み込み書き込みを行うためのパラメタを出力– 前ページ 2 ~ 5 に対応
• Heads:– 読み込みヘッド : 読み込み用のパラメタを使って対象を決定– 書き込みヘッド : 書き込み用のパラメタを使って対象を決定
DNC の概念図
Controller は通常の入力に加えて,メモリからの内容を受け取って出力 そのために,通常の出力に加えて読み込み / 書き出し用のパラメタを出力
外部メモリを利用するための DNC の機能
• メモリの内容を読み込む• メモリの内容を書き込む• そのためのアドレスを決める• の 3 つ• 順に説明
読み込み方法
• 普通のコンピュータ:指定したアドレスの要素を読み込む– 1 箇所だけ明示的に指定する
• 明示的に指定すると微分不可能になる– どこかのメモリを指定するのは非線形な処理
• DNC ( というか多くの外部メモリ付き NN ) : Soft Attention– メモリの数が N 個で読み込みたいメモリの数が R 個の場合,どこの内容をどのくらい読むかの重みベクトル wr を R 個作る
概念図との対応
図だと各 head が 1 箇所を読んでるように見えるが実際は全メモリに対する重みを計算する
書き込みの方法
• 同じように soft attention を使ってどこに書き込むかを決める (wr を作る )• 消去ベクトル e と追加ベクトル v を使って内容を変更する
– e と v も controller が出力 ( 要は学習する )– e は [0, 1]
概念図との対応
図だと 1 箇所変えてるように見えるけど実際には全部変更している
次の問題 : どうやって attention するか ?
つまりどうやって重み w ( 赤枠 ) を作るのか
w をどうやって作るか?
• 読み込む際の重み wr :– Content-based addressing– + Temporal memory linkage
• 書き込む際の重み ww :– Content-based addressing– + Dynamic memory allocation
Content-based addressing1. 書き込み / 読み込みキー k を用意する (controller が出力 )2. k とメモリー M の類似度 D( 論文ではコサイン類似度 ) を測る3. 温度 β(>=1) 付きの softmax を取る
– ベータは確率分布を尖らせる意味がある
※ 要は key と似てる場所の中身を読み込む※DNC に限らず多くの外部メモリ付きニューラルネットワークはこの方法で addressing
i番目のメモリへのコンテンツによる重み
個人的疑問 : これ意味あるの?
• 確認: Keyベクトル kは controllerから出力される• いちいちメモリにマッチングしないでそのままこの k を使えば良いのでは?• 正確な値を出力するより類似した値を出力する方が簡単なはずなので意味はありそう
– パターンマッチングとして機能する– Fig. 3 とかがパターンマッチできてることを示している気がする
概念図との対応
書くヘッド ( 図だと書き込み 1 読み込み 2)ごとに key を用意する (controller が出力 )
Temporal memory linkage• Content-based だけで十分か?
=>NO!• Content-based には,書き込みの順序に関する情報が記録されていない
– 書き込まれた順番に処理するというようなアルゴリズムは難しい–例えば順番に Copy , x のあとに書き込まれた y を出力など
• DNC では書き込み順序を保存=>Temporal memory linkage
Temporal memory linkage• リンク行列 L (N×N) を記録する• L[i, j] : i のあとに j が書き込まれた場合に 1 に近く,そうでない場合に 0 に近くなるような行列• このような行列を用意できれば,
– f = Lwt-1 は時刻 t-1 で注目されていた位置の次に書き込まれた位置に注目を移動させる– b = LTwt-1 は時刻 t-1 で注目されていた位置の前に書き込まれた位置に注目を移動させる
Temporal memory linkage• どうやってそのような行列を ( 微分可能な形で ?) 用意するか?
=>ごめんなさい
In Methods, “Temporal Memory Linkage”
読み込み場所の Addressing• 以上をまとめて,次の 3 つを考慮して読み込み場所を決定
– c: メモリと読込みキー kr の類似度による重み– b: 1 つ前に注目が集まっていたアドレスの 1 つ前に書き込まれた場所への重み– f: 1 つ前に注目が集まっていたアドレスの 1 つ後に書き込まれた場所への重み
• これらを混合するパラメタ π も controller から出力– π=softmax(.) なので,実質的にはほぼ one-hot
=> 読み込みモードとして機能する
書き込み場所の Addressing• Content-Based + Dynamic memory allocation
Dynamic Memory Allocation in Computers
from wikipedia
DNC でも同様の仕組みを導入
Dynamic Memory Allocation in DNC• 必要に応じてメモリを開放して,割り当てる操作を微分可能な形で実現
– memory usage vector u を使って使われてない場所を表現• ut: memory usage vector
–時刻 t におけるメモリの使用状況– 0 に近ければ使われておらず, 1 に近ければ使われている– 書き込むたびに 1 に近づき, free gate f により 0 に近づく
• fit: free gates (controller が出力 ) – ヘッダ i が時刻 t に読み込んだ場所を開放してよいか
書き込み場所の Addressing• u を元に計算した allocation vector a と,書き込みヘッド用のキー kw を元に計算した content weight vector c にの重み和により計算
– a は memory usage vector に応じて作られるベクトル,使用度が小さい場所で 1 になるようなベクトル• c と a の混合はゲートにより調整
Controller が出力するものまとめ
• 読み込み関連– R 個の読込キーベクトル : kri
t
– R 個の読込強さ : βrit
– R 個の読み込みモード : πit
• 書き込み関連– 1 個の書き込みキーベクトル : kr
t
– 1 個の書き強さ : βrt
– 消去ベクトル : et
– 書き込みベクトル : vt
– R 個の free gates: fit
– allocation gate: gat
これに最終的な出力 y を加えたベクトルを 1 つの NN で出力 NN は LSTM で表現 ( 実際はなんでも良い )
全体構造再掲
コントローラが読み込み / 書き込み用のパラメタを出力 Content addressing + Temporal memory linkage + Dynamic memory allocationで読み込み + 書き込み
Memory Networks, Neural Turing Machine との違い
• Memory Networks vs. DNC (TNM) – Memory Networks は確実に覚えるという目的でメモリを利用
• メモリの内容を書き換える機能はない• Content based addressing だけ ( たぶん )
– NTM や DNC はどちらかというとアルゴリズムの実行のためにメモリを利用してその方法まで学習する– 学習は Memory Networks の方がだいぶし易い ( らしい )
• NTM vs. DNC– 目的レベルでは同じ– addressing の方法の工夫+ メモリ割り当て方法の導入–精度は DNC のほうが良い (bAbI タスクでの比較 )
目次
• なぜ外部メモリを使うのか• 外部メモリを使うとできること• 外部メモリの使い方• 本論文の実験• 外部メモリ付き NN の課題と研究動向
実験 1: コピータスク
• Black があったら入力されたものをコピーして出力するタスク• 読み込みと書き込みで同じ場所に注目している + なんとなくコピーできている• メモリもうまく再利用できている ( 一度読んだら開放して良いということを学習 )
実験 1: LSTM と NTM との比較参考資料 (NTM 論文より抜粋 )
NTM
LSTM
• 長くなると LSTM では難しい
実験 2: bAbI
• 既存手法より良い精度• MemN2N ( メモリーネットも比較的良い )• エンコード方法などの詳細は Method, “bAbI task description” に
実験 3: Graph task
• 詳しくは論文で ( それぞれ , 98.8% , 55.3% , 81.8% の精度であることが報告されている )• 入力タプルをどうエンコードするかは METHOD, “Graph task description” に書いてある
実験 4: Block puzzle • Winograds の SHRDLU を参考に Mini-SHRDLU を作成
– https://www.youtube.com/watch?v=BTSJ0-saaUc• 下図だと Q というゴール (事前にメモリにのってる ) を解釈して行動する
– Q は例えば 2 の下に 4 , 3 の右に 6 ,などの組み合わせ• 強化学習との組み合わせ方法は Method, “Reinforcement learning” に
目次
• なぜ外部メモリを使うのか• 外部メモリを使うとできること• 外部メモリの使い方• 本論文の実験• 外部メモリ付きNNの課題と研究動向
DNC および外部メモリ付き NN の課題
• 1. 大規模メモリへの対応– 特に, Memoryへのアクセスに softmax (soft attention) を使っていることが問題– メモリを増やすと全部見ないといけないので難しい
• 2. 実世界データでの利用–今回の論文でも疑似データでの Toy タスクがメイン– 実世界のデータへの適用 ( たぶん 1 がボトルネックになる )
NTM 以降の研究
• “Reinforcement Learning NTM”– Hard attention: REINFORCE 使って訓練
• “Scaling Memory-Augmented Neural Networks with Sparse Reads and Wrights” (NIPS2016)– なんか K << N 個しか重みを用意してないけどよくわからない
最近の研究 ICLR2017• “Hierarchical Memory Networks” (ICLR2017)
– メモリを階層的に表現することで softmax で見るメモリを減らす• “Dynamic NTM with Continuous and Discrete
Addressing Schemes” ICLR2017– REINFORCE による Hard Attention と softmax による
Soft attention を併用している– よくわからない
• “Lie Access Neural Turing Machine” ICLR2017– リー群を利用した addressing–自然にヘッドを移動できるっぽい
まとめ
• DNC は外部メモリ付きのニューラルネット• 外部メモリを持つ
=> 従来は難しかった長期記憶や変数の扱いが可能に• 全体が微分可能なように設計されている
=> アルゴリズム的なものを学習できる• いかにスケールさせるか / 実世界の問題に適用するかは課題• addressing の工夫でスケールさせる方向で研究されている
Top Related