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 addressing 1. 書き込み/読み込みキー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に近づく • fi t: 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個の読込強さ: βri t – R個の読み込みモード: πi t • 書き込み関連 – 1個の書き込みキーベクトル: kr t – 1個の書き強さ: βr t – 消去ベクトル: et – 書き込みベクトル: vt – R個のfree gates: fi t – allocation gate: ga t  これに最終的な出力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の工夫でスケールさせる方向で研究されている

[DL輪読会] Hybrid computing using a neural network with dynamic external memory

Editor's Notes

  • #17 https://www.youtube.com/watch?v=B9U8sI7TcMY