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

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