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