Top Banner
外外外外外外外外外外外外 「」 Neural Turing Machine 外外 外外 外外
29

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

Jan 06, 2017

Download

Technology

naoto moriyama
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: ニューラルチューリングマシン入門

「外部メモリ」理解のためのNeural Turing Machine 入門

森山 直人

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

自己紹介• 森山 直人(もりやま なおと)

• もともと中国国籍 ⇒ 帰化 ( 国籍変更 ) して日本人に

• 趣味で python を始める(仕事はエンジニアではない)

• 勢いでディープラーニング始める(自然言語)

• 最初からディープラーニングに入ったため、統計的手法や確率論が弱い ←のんびり PRML

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

おことわり

• すべて個人の見解による内容であり、所属会社、団体の公式見解ではありません

• 概念理解を優先しているため、一部厳密の定義は割愛しています

• 日本語表記と英語表記混在していますが、他意はありません( 基本日本語だが、長くなるものは英語にしています )

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

今日話すこと最近 DeepMind 社 (Google) を始めとした機械学習領域の先進企業が取り組んでいる外部メモリの概念を紹介します

• ニューラルネットワークのおさらい(私の理解ベース )• Neural Turing Machine の基本概念(論文ベース)• 外部メモリの可能性(私の見解)

についてお話させて頂きます

※ 基本概要にとどめ、理論の証明や細かい実装は割愛します

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

今日話さないこと• 強化学習

• アテンション

• ベイジアンネット(グラフィカルモデル系)

• 生成モデル

• 同じ外部メモリの仲間で、 Facebook 社が精力的に取り組んでいる「メモリーネットワーク」

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

モチベーション

• ニューラルネットワークが画像分野の「パターン認識」問題で良い成果をあげながらも、「推論」が求められる自然言語領域ではまだまだ汎用的な手法が提案されていない

• このあたりがニューラルネットワークの限界だろうと思ったが、外部メモリの概念に触れ、突破口を感じた(個人感)

• すでに DeepMind 社では、外部メモリを活用した論文がいくつか発表されており、今後トレンドになると感じた!

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

ニューラルネットワークおさらい

入力層

中間層

出力層

中間層(隠れ層)をもつ有向グラフ

■ 強み• 単調な非線形表現を積み重なることで、

複雑な非線形表現(合成関数)を獲得• パターン認識問題が得意

■ 弱み• 現在のデータだけでなく、過去の情報が必要な問

題は苦手 ⇒云わば現在のデータのみでは答えを導けない推論(思考)問題を解くことが難しい

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

RNN(LSTM) のおさらい

入力層

中間層

出力層

( 過去のデータが必要な ) 推論問題を解くために、過去のデータも伝搬する仕組みを作る

■ 理想• 過去の入力すべてに現在の入力を加えたネッ

トワークを形成

■ 現実• LSTM の実装で、内部に過去の入力の

「状態」を保存(メモリセル)• 逆伝搬のコストが過剰に増えるため、実質

数ステップ分の学習しかできない

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

RNN(LSTM) の限界• RNN(LSTM) の弱点は計算量と時間のみでなく、記憶を司る

メモリセルのデータ構造にも課題がある

• LSTM の学習では、メモリセルの更新は部分的でなく、全体が更新されるため、表現力の幅は限定的

• そこで求められるのは、①表現力の高いメモリ処理  ー必要に応じて必要な箇所のみを更新、取り出し

②多くの情報を蓄えるメモリ構造  ー大規模なデータを蓄積できるようにする

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

Neural Turing Machine• あえて堅苦しく言うと、ノイマン型のシステム構造上に、

ニューラルネットワークとチューリングマシンの「ヘッド」を取り付けたようなもの

• 構造は複雑だけどちゃんと微分可能!(学習できる)

• 概要をつかむ程度であれば、チューリングマシンの理解は不要ただ、ある程度理解があると腹落ちします!

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

Neural Turing Machine• RNN(LSTM) をコントロー

ラーに据えて、ヘッド、メモリと呼ばれる部品を取り付けた構造

• LSTM のメモリセルを拡張し、データの“細切れ”に分けた (詳細後述 )

• メモリの操作はチューリングマシンのヘッドの動作に近い

画像引用元: https://arxiv.org/pdf/1410.5401v2.pdf

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

Neural Turing Machine

入力 出力

制御

演算

メモリ

Neural Turing Machine

ノイマン型コンピュータ

構造はノイマン型コンピュータに近い

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

Neural Turing Machineこの部分は通常のRNN ( LSTM )

ヘッドは外部メモリに対して、計算に使う部分の選定や書き換えを行う

中央のコントローラーはヘッドの動作をコントロール

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

コントローラー?メモリ?ヘッド?コントローラー :データの入出力を処理するインターフェースメモリ : RAM に似た働きを行うデータ格納スペースヘッド :メモリにデータを書き込んだり、読み込んだりする機能

・・・・・・

ヘッド メモリコントローラー

ヘッドを操作するための各種パラメータを発行

ヘッドがコントローラーの情報をもとにメモリ読み込み、書き込みを行う

計算時にヘッドを通じて必要なメモリを呼び出す

Page 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.1

・・・

ヘッド メモリ

②メモリ位置 N

①各メモリのサイズ M

③時刻 t における各メモリの重み

N*M の行列

Page 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重み

• コントローラが使う情報をメモリから算出する

• 時刻 t における重みを各メモリ掛け合わせて、を算出

※ただし

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

ヘッドによるメモリの書き込み

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 のように、メモリを更新するこの工程は②ステップに分かれる

① 情報削除削除ベクトルが与えられる

② 情報追加追加ベクトルが与えられる

~

~

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

ヘッドの重み調整

• ヘッドによるメモリの操作はわかった

• そのヘッドのパラメータ重み調整は直前のメモリ及び重みとコントローラから出力される 5 つのパラメータをもとに、④ステップで構成される(これけっこうややこしいです・・・)

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

ヘッドの学習で使うパラメータコントローラー

Memory Key : k-コントローラから与えられたベクトル

Contents Addressing Parameter : β- ベクトル集中度調整

Interpolation Parameter : g-前のヘッド状態をどれくらい引き継ぐか

Convolutional Shift Parameter : s-ヘッド内の数字の移動方向

Sharpening Parameter : γ- ベクトル集中度の調整

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

ヘッドの学習ステップ

画像引用元: https://arxiv.org/pdf/1410.5401v2.pdf

ステップ①ステップ②

ステップ③ステップ④

前ページの5つのパラメータと直前のメモリ、ヘッド重みを用いて④ステップを通じて学習を行う

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

①Content Addressing

コントローラーから与えられたベクトルとメモリ内の各ベクトルの類似度を計算し、その類似度をもとにヘッドの重みを初期化して

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

②Interpolation

Content Addressing で出力されたと直前の重みに対してパラメータ g をかけ合わせ、を生成※ LSTM でいうと入力ゲートのような働き

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

③Convolutional Shift

Interpolation で出力されたと方向パラメータを計算し、を生成~

~

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

③Convolutional Shift方向パラメータは何をしているか ∟ヘッド内の重みベクトルを左右に調整 ∟メモリ位置ごとの関係性を学習

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 つ移動

各ベクトルが左右に半分ずつ移動

ヘッド

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

④Sharpening

Convolutional Shift で出力されたに対して、集中度パラメータをかけ整形し、最終ヘッドの重みを生成

~

~~

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

以上がヘッドの学習の流れ

• LSTM のような複雑な構造を持つが、各処理は異なる概念を持つため、全体像のイメージが難しい

• 一方、異なる概念の処理が多いことが、多彩な表現力を獲得する側面もある

• 逆伝搬の計算の流れはご想像におまかせします・・・

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

こんな計算グラフ・・・

画像引用元: http://awawfumin.blogspot.jp/2015/03/neural-turing-machines-implementation.html

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

結局何がよくなるのか?• 表現力の向上で LSTM では成し得なかった‘本質的な記憶’を実現

• メモリを細切れにし、必要に応じて必要な箇所を変更、使用することで、 (通常のニューラルネットワークより ) 人間の脳に近い処理が可能に

• Neural Turing Machine ではまだメモリの操作が荒かったが、直近ではより洗練された手法が開発されている( Differentiable neural computers など )

• ニューラルネットワークの可能性を広げる手法として期待できる

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

参考:推奨図書• 仮想世界の謎解き冒険ファンタジーですが、

計算とは何か、思考とは何かを題材とする

• オートマトンやチューリングマシンの概念を奇跡的にわかりやすく解説

• コンピュータサイエンス・自然言語処理に於いて多くの気づきを与えてくれる

• この本の素晴らしさを語るだけで、一つ LTができると思います