Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Differentiable neural conputers

3,387 views

Published on

Neural Turing Machineの進化版に当たるDifferentiable Neural Computersとその元論文であるHybrid computing using a neural network with dynamic external memoryを解説してみました。

Published in: Technology
  • Hello! Get Your Professional Job-Winning Resume Here - Check our website! https://vk.cc/818RFv
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Differentiable neural conputers

  1. 1. • 森山 直人(もりやま なおと) • もともと中国国籍 ⇒ 帰化(国籍変更)して日本人に • 趣味でpythonを始める(仕事はエンジニアではない) • 勢いでディープラーニング始める • 機械学習は最初からディープラーニングに入ったため、 統計的手法や確率論が弱い
  2. 2. • すべて個人の見解による内容であり、所属会社、団体の公式見解 ではありません • 概念理解を優先しているため、一部厳密の定義は割愛しています • 英語翻訳が不自然な箇所がありますが、ご容赦くださいませ
  3. 3. • 昨年DeepMind社(Google)より、Differentiable Neural Computersと題する記事の本論文であるHybrid computing using a neural network with dynamic external memoryの概念を紹介します ※以降上記技術を統一してDNCと表記します • ただし、同論文はすでにニューラルネットワークに対する一定の 理解(基礎、応用、課題)を有する前提で書かれており・・・ • そこで、ニューラルネットワークの①基礎②課題を踏まえた上で、 ③DNCの概要と革新性を紹介致します
  4. 4. • ニューラルネットワークの基本と問題点 • リカレントニューラルネットワークの基本と問題点 • DNCの概念 • Neural Turing Machineとの関係 • DNCの学習の流れ • DNCまとめ • 今後の活用展望 ※本資料はあくまでDNCの概念共有であり、厳密な定義・計算 は論文を参照下さい
  5. 5. 入力層 中間層 出力層 中間層(隠れ層)をもつ全結合の有向グラフ ■強み • 単調な非線形表現を積み重なることで、 複雑な非線形表現(合成関数)を獲得 • パターン認識問題が得意 ■弱み • 現在のデータだけでなく、過去の情報が必要な 問題は苦手 • 初期に学習された情報は忘れてしまう
  6. 6. • 通常のニューラルネットワーク及びその応用(CNN等)に共通し て、変数バインディング問題が存在します • ニューラルネットワークの学習は、あくまで巨大は合成関数に含 まれるパラメータのチューニングであり、学習で用いるデータは 物理的に記録しないし、活用することもしない この性質を一部では変数バインディングしないと呼ばれる (公用語ではなく、いろんな呼び方があるようです)
  7. 7. 入力層 中間層 出力層 過去のデータが必要な問題を解くために、過去 のデータも伝搬する仕組みを作る ■理想 • 過去の入力すべてに現在の入力を加えたネッ トワークを形成 ■現実 • LSTMの実装で、内部に過去の入力の状態 (変数ではない)を保存(メモリセル) • 逆伝搬のコストが過剰に増えるため、実質 数ステップ分の学習しかできない
  8. 8. • RNN(LSTM)の弱点は計算量と時間のみでなく、記憶を司る メモリセルのデータ構造にも課題がある • LSTMの学習では、メモリセルの更新は部分的でなく、 全体が更新されるため、表現力の幅は限定的 ⇒変数バインディング問題の根本的解決とは言えない • そこで求められるのは、 ①表現力の高いメモリ処理 ー必要に応じて必要な箇所のみを更新、取り出し ②多くの情報を蓄えるメモリ構造 ー大規模なデータを蓄積できるようにする
  9. 9. • 前述の述べたニューラルネットワーク及びRNN(LSTM)の変数 バインディング問題を背景に、ニューラルネットワークに情報を 記録する機能を構築 • 同時に、ニューラルネットワークの持つ微分可能なしくみを継続 させ、学習が出来るようにさせる • これの実現により、人間の脳の海馬(CA1,CA3)の挙動に近い 情報処理を実現
  10. 10. • DNC以前に、DeepMind社より外部メモリを活用した Neural turing machineが提唱されている • DNCはNeural turing machineの構造を更に進化させた ものであり、より高度の処理を可能にした • 以降、DNCの構造が直感的に理解しにくい場合、一度 Neural turing machineを読んでおくと理解の助けに なるかもしれません
  11. 11. • ニューラルネットワークをベーズに、外部メモリとそのメモリを 処理する「ヘッド」と呼ばれる装置を取り付けた構造 • そのヘッドを訓練するために、操作履歴などの幾つかの リストと計算が含まれる • なお、DNCの中心的な処理はメモリの取扱いであり、それ以外は 通常のLSTMと大きく変わらない
  12. 12. コントローラ部分 =LSTM (他のニューラルネット ワークでも代用可) メモリ操作を行う 「ヘッド」 メモリ本体 メモリ操作の 履歴を記録す るリスト
  13. 13. メモリ 操作履歴 ①通常のLSTMと同様に データを入力し、計算 ②メモリを操作する ヘッドに、操作内容を 示すパラメータを発行 ③コントローラから 来たパラメータに 従ってメモリを操作 ④メモリ変更の 履歴を記録 ヘッド コントローラ コントローラの出 力とメモリの出力 を合算して、最終 出力とする ⑤メモリの内容 を読み込み ⑥コントローラ の出力と合算 ①〜④:メモリを記録・変更する作業 ④〜⑥:メモリ情報を使って計算する作業
  14. 14. • 以上がDNCの基礎的概念ですが、中身の計算はとても複雑 • 通常のLSTMの各種ゲートで用いるパラメータに加え、DNC機構で 更に30個近くの独自パラメータ・変数を持つ! • 微分可能な性質を保ちつつ、多種な計算を経て稼働する
  15. 15. コントローラから出力されるパラメータ 𝒌 𝑡 𝑟,𝑅 読み込みキーベクトル 読み込み時にコントローラから出力されるベクトル 𝛽𝑡 𝑅 読み込み強さ どれだけ読み込ませるか 𝒌 𝑡 𝑊 書き込みキーベクトル 書込み時にコントローラから出力されるベクトル 𝛽𝑡 𝑊 書き込む強さ どれだけ読み込ませるか 𝒆 𝑡 削除ベクトル 各メモリに対する削除度合い 𝒗 𝑡 書込みベクトル 各位置のメモリに対する書込みパラメータ 𝑓𝑡 𝑅 開放ゲート 使われない位置のメモリを開放する 𝑔𝑡 𝑎 メモリ割り当てゲート 割り当てる量を補完するパラメータ 𝑔𝑡 𝑊 書込みゲート 不必要な書込みを防ぐためのパラメータ 𝜋 𝑡 𝑅 書込みモード ヘッドの動作を制御するパラメータ
  16. 16. その他のパラメータ 𝑀𝑡 メモリ(N*W) t時点におけるメモリ状態 𝝍 𝑡 情報保持ベクトル 各メモリ位置に対する不要な開放を防ぐ 𝒖 𝑡 メモリ使用率ベクトル 各メモリ位置の使用率 𝒂 𝑡 書き込みの重みベクトル どれくらい書き込んで良いかを決める 𝝓 𝑡 使用順ベクトル(昇順) 各メモリ位置を最後に使われた順にソートしたリスト 𝒄 𝑡 𝑊 書込み一致度ベクトル 各メモリ位置に対する読み込み時のそれぞれの位置の一致度 𝒄 𝑡 𝑅 読み込み一致度ベクトル 各メモリ位置に対する書込み時のそれぞれの位置の一致度 𝐿 𝑡[𝑖, 𝑗] 連続書込み度 メモリ位置iのあとにメモリ位置jが書き込まれる度合い 𝑷 𝑡 優先順位ベクトル 各メモリ位置の最後に書き込まれた度合い。(よく使われるメ モリ位置の優先順位を決めるために使う)
  17. 17. その他のパラメータ 𝒇 𝑡 𝑖 順伝搬重みベクトル 順伝搬にの重みベクトル(開放ゲートとは異なります!) 𝒃 𝑡 𝑖 逆伝搬重みベクトル 逆伝搬時の重みベクトル 𝒘 𝑡 𝑊 書込み重みベクトル メモリ書込みに対する重み 𝒘 𝑡 𝑅 読み込み重みベクトル メモリ読み込みに対する重み 𝒓 𝑡 読み込みベクトル 様々な処理を経て、最終的にメモリから読み取られる値
  18. 18. 2 1 2 7 4 020 4 0 0 2 1 311 2 4 4 1 0 022 3 3 0 0 0 054 ・・・ 0.2 0.3 0.1 0.1 ・・・ ヘッド メモリ ②メモリ位置 N ①各メモリのサイズ W ③時刻tにお ける各メモリ の重み 𝑊𝑡 N*Wの行列 それぞれの行を今 後メモリ位置と呼 びます。
  19. 19. 2 1 2 7 4 020 4 0 0 2 1 311 2 4 4 1 0 022 3 3 0 0 0 054 ・・・ 0.2 0.3 0.1 0.3 ・・・ ヘッド メモリ 位置 N ベクトルサイズ W重み 𝑤𝑡 • コントローラが使う情報をメモリ から算出する • 時刻tにおける重み𝑤𝑡を各メモリ 掛け合わせて、𝑟𝑡を算出 𝑟𝑡 = 𝑀𝑡 ⊤ 𝑤𝑡 𝑟,𝑖 ※r, iはヘッドのIDを示す。ヘッドの数は任意で 指定できる
  20. 20. メモリに対する書込みは各位置のメ モリに対して、削除追加の2ステッ プで計算される 𝑀𝑡 = 𝑀𝑡−1 ∘ 𝐸 − 𝒘 𝑡 𝑊 𝒆 𝑡 ⊤ + 𝒘 𝑡 𝑊 𝑣 𝑡 ⊤ 2 1 2 7 4 020 4 0 0 2 1 311 2 4 4 1 0 022 3 3 0 0 0 054 ・・・ 0.2 0.3 0.1 0.3 ・・・ ヘッド メモリ 位置 N ベクトルサイズ W重み 𝑤𝑡
  21. 21. • ヘッドによるメモリの操作は前述のシンプルな流れ • 実際のDNCの計算では、コントローラから発行した情報を元に、 メモリ内の情報を修正し、最終的にメモリから情報をアウトプット する必要があります。これをMemory addressingといいます • 以降、Memory addressingの一連の計算を経て、最終的に メモリから数値が読み出されるまでの計算を記します
  22. 22. Memory addressingは3つの処理によって構成される ① Contents base addressing コントローラから受け取ったキーとメモリの内の各位置の情報を照合し、 メモリ位置の確率分布を生成 ② Dynamic memory allocation メモリ内の情報を修正しながら、ヘッドの重みを調整 ③ Temporal memory linkage メモリに対する操作履歴をすべて記憶させることで、時系列データや 複雑なデータ構造を学習可能に
  23. 23. コントローラから与えられたキーベクトルkとメモリ内の 各ベクトルのコサイン類似度を計算し、確率分布を生成する (softmaxの計算) 𝐶 𝑀, 𝑘, 𝛽 [𝑖] = exp{𝒟(𝒌,𝑀 𝑖,∙ 𝛽} 𝑗 exp{𝒟(𝒌,𝑀 𝑖,∙ 𝛽} , 𝒟 u, v = 𝑢∙𝑣 | 𝑢 |∙| 𝑣 | ※この処理は以降幾つかの場面で使われる
  24. 24. メモリ内の各位置の情報を開放したり、書き込んだりする機能 • 各メモリ位置の使用率を記録する使用率ベクトル𝒖 𝑡 • 各メモリ位置を開放するための解放ゲート𝒇 𝑡 • メモリの情報が消されないように保護する保持ベクトル𝝍 𝑡 𝝍 𝑡 = 𝑖=1 𝑅 (1 − 𝒇 𝑡 𝑖 𝒘 𝑡−1 𝑟,𝑖 ) 𝒖 𝑡 = (𝒖 𝑡−1 + 𝒘 𝑡−1 𝑊 − 𝒖 𝑡−1 ∘ 𝒘 𝑡−1 𝑊 ) ∘ 𝜓 𝑡 :解放ゲートと読み込み重みベクトルから保持ベクトルを計算 :直前の使用率ベクトルと書込みベクトルと保持ベクトルから、現在の使用率ベクトルを計算
  25. 25. • 𝒖 𝑡を昇順にソートした解放リスト𝜙 𝑡 (数字が高いほど最近使用されたことを示す) • 𝒖 𝑡と𝜙 𝑡を元に、各メモリへの書込み重み𝒂 𝑡を算出 𝒂 𝑡[𝜙 𝑡 𝑗 ] = (1 − 𝒖 𝑡 𝜙 𝑡 𝑗 ) 𝑖=1 𝑗−1 𝒖 𝑡[𝜙 𝑡 𝑖 ]
  26. 26. • 直前のメモリ𝑴 𝑡−1とコントローラのパラメータ𝒌 𝑡 𝑊 , 𝛽𝑡 𝑊 に対して、 Contents addressingを通じて書込み確率分布を計算 𝒄 𝑡 𝑊 = 𝒞(𝑀𝑡−1, 𝒌 𝑡 𝑊 , 𝛽𝑡 𝑊 ) • そこから、メモリ割り当てゲート𝑔𝑡 𝑎 、書込みゲート𝑔𝑡 𝑊 を通じて 書込み重みベクトル𝒘 𝑡 𝑊 を算出 𝒘 𝑡 𝑊 = 𝑔𝑡 𝑊 [𝑔𝑡 𝑎 𝑎 𝑡 + (1 − 𝑔𝑡 𝑎 )𝒄 𝑡 𝑊
  27. 27. • Dynamic memory allocationではメモリ割り当てを行う際、 変更を時系列を記録しないが、自然言語等では時系列データの 処理が必要 • そこで、メモリ操作の時系列𝐿 𝑡[𝑖, 𝑗]を定義する。 (メモリ位置iの直後にメモリ位置jが書き込まれる率) • また、同時に各メモリ位置が最後に書き込まれる率𝑷 𝑡を定義 𝑷 𝑡 = (1 − 𝑖 𝑾 𝑡 𝑊 [𝑖])𝒑 𝑡−1 + 𝒘 𝑡 𝑊 𝐿 𝑡[𝑖, 𝑗] = 1 − 𝒘 𝑡 𝑊 𝑖 − 𝑤𝑡 𝑊 𝑗 𝐿 𝑡−1 𝑖, 𝑗 + 𝒘 𝑡 𝑊 𝑖, 𝑗 𝑝𝑡−1[𝑗]
  28. 28. • 𝐿 𝑡はを転置することで、メモリ操作履歴の逆推移が得られる。 • この性質を利用して、順伝搬の重み𝑓𝑡 𝑖 と逆伝搬の重み𝑏𝑡 𝑖 を算出 • また、メモリの読み込み重み𝒄 𝑡 𝑊 はContents addressingを 通じて計算 𝑓𝑡 𝑖 = 𝐿 𝑡 𝒘 𝑡−1 𝑟,𝑖 𝑏𝑡 𝑖 = 𝐿 𝑡 ⊤ 𝒘 𝑡−1 𝑟,𝑖 𝒄 𝑡 𝑟,𝑖 = 𝒞(𝑀𝑡, 𝒌 𝑡 𝑟,𝑖 , 𝛽𝑡 𝑟,𝑖 )
  29. 29. • ヘッドの動作を決める𝜋 𝑡 𝑖 は3つのモードを有します 𝜋 𝑡 𝑖 [1]:ヘッドが逆向きに移動(逆伝搬の計算) 𝜋 𝑡 𝑖 [2]:読み込みキーベクトル𝑘 𝑡 𝑟,𝑖 を利用して重みを計算 𝜋 𝑡 𝑖 [3]:𝑘 𝑡 𝑟,𝑖 を使わず、メモリ内の情報を利用して計算 𝒘 𝑡 𝑟,𝑖 = 𝜋 𝑡 𝑖 1 𝑏𝑡 𝑖 + 𝜋 𝑡 𝑖 2 𝒄 𝑡 𝑟,𝑖 + 𝜋 𝑡 𝑖 3 𝑓𝑡 𝑖
  30. 30. • 以上の計算を元に、メモリから読み出される値𝑟𝑡 𝑖 は以下 𝒓 𝑡 𝑖 = 𝑀𝑡 ⊤ 𝒘 𝑡 𝑟,𝑖 • 最後に、コントローラから出力された値𝒖 𝑡とメモリの出力𝒓 𝑡 𝑖 を 計算しDNCの最終出力𝒚 𝑡は以下となる 𝑦𝑡 = 𝝂 𝑡 + 𝑊𝑟[𝒓 𝑡 𝑖 ;...; 𝒓 𝑡 𝑅 ]
  31. 31. 𝒄 𝑡 𝑊 𝒌 𝑡 𝑟,𝑅 𝛽𝑡 𝑅 𝒌 𝑡 𝑊 𝛽𝑡 𝑊 𝒆 𝑡 𝒗 𝑡 𝑓𝑡 𝑅 𝑔𝑡 𝑎 𝑔𝑡 𝑊 𝜋 𝑡 𝑅 𝑀𝑡−1 𝑀𝑡 𝒘 𝑡−1 𝑊 𝒘 𝑡−1 𝑅 𝜓 𝑡 𝒖 𝑡−1 𝝓 𝑡 𝒂 𝑡 𝒄 𝑡 𝑅 𝒇 𝑡 , 𝒃 𝑡 𝑷 𝑡−1 𝐿 𝑡−1 𝒘 𝑡 𝑊 𝐿 𝑡𝑷 𝑡 𝒖 𝑡 𝑟𝑡 ※線の交差は すべて非接続 コ ン ト ロ ー ラ が 発 行 す る 各 パ ラ メ ー タ 直前の計算で得られた各パラメータ 𝝂 𝑡𝑊𝑟 𝑦𝑡
  32. 32. • 微分可能な性質を維持しながらも、メモリ操作関連の処理は ニューラルネットワークと大きくかけ離れており、直感的な 理解がしにくい • 一方、メモリ構造により冒頭の変数バインディング問題はほぼ 解消されるので、ニューラルネットワークの能力を大きく 伸ばせると考えられる
  33. 33. • 論文内では、DNCを活用した自然言語処理、データ構造分析、 強化学習と、あらゆる領域で外部メモリが活用出来ることが紹介 されている • 今後、外部メモリ自体のデザインやその処理方法をデザインしてい くことで、更に多種なタスクをニューラルネットワークを用いて、 高精度で処理できることが期待できる

×