ニューラルチューリングマシン入門

485 views

Published on

DeepMind社より発表されたNeural Turing Machineをまとめてみました

Published in: Technology
0 Comments
5 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
485
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
3
Comments
0
Likes
5
Embeds 0
No embeds

No notes for slide

ニューラルチューリングマシン入門

  1. 1. • 森山 直人(もりやま なおと) • もともと中国国籍 ⇒ 帰化(国籍変更)して日本人に • 趣味でpythonを始める(仕事はエンジニアではない) • 勢いでディープラーニング始める(自然言語) • 最初からディープラーニングに入ったため、 統計的手法や確率論が弱い ←のんびりPRML
  2. 2. • すべて個人の見解による内容であり、所属会社、団体の公式見解 ではありません • 概念理解を優先しているため、一部厳密の定義は割愛しています • 日本語表記と英語表記混在していますが、他意はありません (基本日本語だが、長くなるものは英語にしています)
  3. 3. 最近DeepMind社(Google)を始めとした機械学習領域の 先進企業が取り組んでいる外部メモリの概念を紹介します • ニューラルネットワークのおさらい(私の理解ベース) • Neural Turing Machineの基本概念(論文ベース) • 外部メモリの可能性(私の見解) についてお話させて頂きます ※基本概要にとどめ、理論の証明や細かい実装は割愛します
  4. 4. • 強化学習 • アテンション • ベイジアンネット(グラフィカルモデル系) • 生成モデル • 同じ外部メモリの仲間で、Facebook社が精力的に 取り組んでいる「メモリーネットワーク」
  5. 5. • ニューラルネットワークが画像分野の「パターン認識」問題で 良い成果をあげながらも、「推論」が求められる自然言語領域 ではまだまだ汎用的な手法が提案されていない • このあたりがニューラルネットワークの限界だろうと思ったが、 外部メモリの概念に触れ、突破口を感じた(個人感) • すでにDeepMind社では、外部メモリを活用した論文がいくつ か発表されており、今後トレンドになると感じた!
  6. 6. 入力層 中間層 出力層 中間層(隠れ層)をもつ有向グラフ ■強み • 単調な非線形表現を積み重なることで、 複雑な非線形表現(合成関数)を獲得 • パターン認識問題が得意 ■弱み • 現在のデータだけでなく、過去の情報が必要な問 題は苦手 ⇒云わば現在のデータのみでは答えを導 けない推論(思考)問題を解くことが難しい
  7. 7. 入力層 中間層 出力層 (過去のデータが必要な)推論問題を解くために、 過去のデータも伝搬する仕組みを作る ■理想 • 過去の入力すべてに現在の入力を加えたネッ トワークを形成 ■現実 • LSTMの実装で、内部に過去の入力の 「状態」を保存(メモリセル) • 逆伝搬のコストが過剰に増えるため、実質 数ステップ分の学習しかできない
  8. 8. • RNN(LSTM)の弱点は計算量と時間のみでなく、記憶を司る メモリセルのデータ構造にも課題がある • LSTMの学習では、メモリセルの更新は部分的でなく、 全体が更新されるため、表現力の幅は限定的 • そこで求められるのは、 ①表現力の高いメモリ処理 ー必要に応じて必要な箇所のみを更新、取り出し ②多くの情報を蓄えるメモリ構造 ー大規模なデータを蓄積できるようにする
  9. 9. • あえて堅苦しく言うと、ノイマン型のシステム構造上に、 ニューラルネットワークとチューリングマシンの「ヘッド」を 取り付けたようなもの • 構造は複雑だけどちゃんと微分可能!(学習できる) • 概要をつかむ程度であれば、チューリングマシンの理解は不要 ただ、ある程度理解があると腹落ちします!
  10. 10. • RNN(LSTM)をコントロー ラーに据えて、ヘッド、メ モリと呼ばれる部品を取り 付けた構造 • LSTMのメモリセルを拡張 し、データの“細切れ”に分 けた(詳細後述) • メモリの操作はチューリン グマシンのヘッドの動作に 近い 画像引用元:https://arxiv.org/pdf/1410.5401v2.pdf
  11. 11. 入力 出力 制御 演算 メモリ NeuralTuring Machine ノイマン型 コンピュータ 構造はノイマン型コンピュータに近い
  12. 12. この部分は通常のRNN (LSTM) ヘッドは外部メモリに対し て、計算に使う部分の選定 や書き換えを行う 中央のコントローラー はヘッドの動作をコン トロール
  13. 13. コントローラー :データの入出力を処理するインターフェース メモリ :RAMに似た働きを行うデータ格納スペース ヘッド :メモリにデータを書き込んだり、読み込んだりする機能 ・・・・・・ ヘッド メモリ コントローラー ヘッドを操作 するための各 種パラメータ を発行 ヘッドがコント ローラーの情報 をもとにメモリ 読み込み、書き 込みを行う 計算時にヘッ ドを通じて必 要なメモリを 呼び出す
  14. 14. 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 ①各メモリのサイズ M ③時刻tにお ける各メモリ の重み 𝑊𝑡 N*Mの行列
  15. 15. 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 ベクトルサイズ M重み 𝑊𝑡 • コントローラが使う情報をメモリ から算出する • 時刻tにおける重み𝑊𝑡を各メモリ 掛け合わせて、𝑟𝑡を算出 𝑟𝑡 ← 𝑖 𝑤𝑡(𝑖)𝑀𝑡(𝑖) ※ただし 𝑖 𝑤𝑡 𝑖 = 1, 0 ≤ 𝑤𝑡 𝑖 ≤ 1
  16. 16. 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 ベクトルサイズ M重み 𝑊𝑡 LSTMのように、メモリを更新する この工程は②ステップに分かれる ① 情報削除 削除ベクトル𝑒𝑡が与えられる 𝑀𝑡 𝑖 ← 𝑀𝑡−1 𝑖 1 − 𝑤𝑡 𝑖 𝑒𝑡 ② 情報追加 追加ベクトル𝑎 𝑡が与えられる 𝑀𝑡 𝑖 ← 𝑀𝑡 𝑖 + 𝑤𝑡(𝑖)𝑎 𝑡 ~ ~
  17. 17. • ヘッドによるメモリの操作はわかった • そのヘッドのパラメータ重み調整は直前のメモリ及び重みと コントローラから出力される5つのパラメータをもとに、 ④ステップで構成される (これけっこうややこしいです・・・)
  18. 18. コントローラー Memory Key : k -コントローラから与えられたベクトル Contents Addressing Parameter : β -ベクトル集中度調整 Interpolation Parameter : g -前のヘッド状態をどれくらい引き継ぐか Convolutional Shift Parameter : s -ヘッド内の数字の移動方向 Sharpening Parameter : γ -ベクトル集中度の調整
  19. 19. 画像引用元:https://arxiv.org/pdf/1410.5401v2.pdf ステップ① ステップ② ステップ③ ステップ④ 前ページの5つのパラメータと直前のメモリ、ヘッド重みを用いて ④ステップを通じて学習を行う
  20. 20. コントローラーから与えられたベクトル𝑘 𝑡とメモリ内の 各ベクトルの類似度を計算し、その類似度をもとにヘッ ドの重みを初期化して𝑤𝑡 𝑐 を作る 𝑤𝑡 𝑐 ← exp(β 𝑡 𝐾 𝑘 𝑡,𝑀𝑡 𝑖 ) 𝑗 exp(β 𝑡 𝐾 𝑘 𝑡,𝑀𝑡 𝑖 ) , K u, v = 𝑢∙𝑣 | 𝑢 |∙| 𝑣 |
  21. 21. Content Addressingで出力された𝑤𝑡 𝑐 と直前の重み𝑤𝑡−1 に対してパラメータgをかけ合わせ、𝑤𝑡 𝑔 を生成 ※LSTMでいうと入力ゲートのような働き 𝑤𝑡 𝑔 ← 𝑔𝑤𝑡 𝑐 + (1 − 𝑔)𝑤𝑡−1
  22. 22. Interpolationで出力された𝑤𝑡 𝑔 と方向パラメータ𝑠𝑡を計算 し、𝑤𝑡を生成 𝑤𝑡 ← 𝑖=0 𝑁−1 𝑤𝑡 𝑔 (𝑗)𝑠𝑡(𝑖 − 𝑗) ~ ~
  23. 23. 方向パラメータ𝑠𝑡は何をしているか ∟ヘッド内の重みベクトル 𝑤𝑡 𝑖 を左右に調整 ∟メモリ位置ごとの関係性を学習 0 0 1 2 2 左 中 右 1 0 0 𝑠𝑡は左右への移動量を示す 中は動かないことを示す 0 1 2 2 0 0 0 1 2 2 0.5 0 0.5 1 0.5 1 1.5 1 この場合は、単純に 左に1つ移動 各ベクトルが左右に 半分ずつ移動 ヘッド
  24. 24. Convolutional Shiftで出力された𝑤𝑡に対して、集中度 パラメータ𝛾𝑡をかけ整形し、最終ヘッドの重み𝑤𝑡を生成 𝑤𝑡 ← 𝑤𝑡(𝑖) 𝛾𝑡 𝑗 𝑤𝑡(𝑗) 𝛾𝑡 ~ ~ ~
  25. 25. • LSTMのような複雑な構造を持つが、各処理は異なる概念を 持つため、全体像のイメージが難しい • 一方、異なる概念の処理が多いことが、多彩な表現力を獲得 する側面もある • 逆伝搬の計算の流れはご想像におまかせします・・・
  26. 26. 画像引用元:http://awawfumin.blogspot.jp/2015/03/neural-turing-machines-implementation.html
  27. 27. • 表現力の向上でLSTMでは成し得なかった‘本質的な記憶’を実現 • メモリを細切れにし、必要に応じて必要な箇所を変更、使用 することで、(通常のニューラルネットワークより)人間の脳に 近い処理が可能に • Neural Turing Machineではまだメモリの操作が荒かったが、 直近ではより洗練された手法が開発されている (Differentiable neural computersなど) • ニューラルネットワークの可能性を広げる手法として期待できる
  28. 28. • 仮想世界の謎解き冒険ファンタジーですが、 計算とは何か、思考とは何かを題材とする • オートマトンやチューリングマシンの概念を 奇跡的にわかりやすく解説 • コンピュータサイエンス・自然言語処理に於 いて多くの気づきを与えてくれる • この本の素晴らしさを語るだけで、一つLTが できると思います

×