この記事は日経Robotics 有料購読者向けの記事ですが
日経Robotics デジタル版(電子版)』のサービス開始を記念して、特別に誰でも閲覧できるようにしています。
本記事はロボットとAI技術の専門誌『日経Robotics』のデジタル版です

 2014年の機械学習界隈で話題となったのが米グーグルの DeepMindが発表した「Neural Turing Machine(NTM)」1)である。NTMは、人間が問題に合わせてプログラムを逐一記述しなくとも、例示からの学習によって小規模なアルゴリズムを自己獲得する技術だ。ニューラルネットワークの技術を基にしている。連載の第1回では、なぜNTMが注目されたのかについて背景を説明する。

 NTMは現時点では入力のデータ量が小さく、人が書けるようなアルゴリズムで解ける問題しか扱えていない。しかし今後は、人にすら書くことが不可能な複雑なアルゴリズムを学習できる可能性がある。例えば、ロボットや自動運転システムで複数のセンサを用いて複数のアクチュエータを制御するアルゴリズムを学習ベースで実現できる可能性がある。

記憶の仕組みが欠けていた
ニューラルネット

著者の岡野原大輔氏
著者の岡野原大輔氏

 人間がプログラムで記述するような複雑なアルゴリズムの実現には、途中の計算結果を保存するメモリーが不可欠である。しかし、従来、ニューラルネットワークなどコンピュータによる学習には記憶の仕組みが欠けていた。

 例えば、ある部屋に置いてある3つの箱を隣の部屋に運ぶタスクを学習することを考えてみる。この場合、タスクの目標を部分的な目標(ドアを開ける、箱を持ち上げる、箱を移動する、箱を置く)に分解し、現在の状態と最終目標を比較しながら、次に行うアクションを決めていく必要がある。さらに箱の数が3個ではなく50個であったり、目的地が隣の部屋ではなく3つ隣の部屋に変わったりした場合でも解けるよう、入力に合わせて動作も変わることが期待される。

 複雑なアルゴリズムの実現には、与えられた入力や途中の計算結果を記憶し、それを適切なタイミングで思い出す必要がある。記憶の仕組みを学習で実現することが求められる。

 状態(途中結果)を持つ問題を扱うためには従来、RNN(recurrent neural network)が利用されてきた。時間方向に展開したRNNは閉路が無いフィードフォワードのニューラルネットワークとみなすことができる。そのため、誤差逆伝播法(back propagation)を適用し、各パラメータについての勾配を効率良く求め、学習できる。さらには「LSTM(Long Short Term Memory)」のようなゲートを備えたニューロンを利用したり、活性化関数のReLU(rectified linear unit)と単位行列を組み合わせた「IRNN」を利用することで、ある時刻の状態を通常のRNNより長い時間、保存できる。

 このようなRNNによる記憶は短期記憶やワーキングメモリのようなものであり、常に思い出したり、書き込めたりできるが、その容量はニューロン数で制限される。分散表現を使うことで非常に効率的に記憶できるとはいえ、そのニューロン数を超えて記憶することはできない。

 NTMはチューリングマシンにおけるテープのように、ニューラルネットワークの外側にある外部記憶を利用する。これにより、ニューロン数に制約されない記憶を実現した。

 NTMの外部記憶は、ニューロン数に比べてはるかに大きい(理論上は無限の)記憶領域を持つ。NTMは、コントローラと外部記憶で構成される。コントローラはニューラルネットワークで構成し、外部記憶へアクセスを行う「読み込みヘッダ」と「書き込みヘッダ」の状態を決める。

 コントローラにRNNを利用することもできる。この場合、コンピュータでいえばRNNの内部状態がレジスタに相当し、外部記憶がメモリに相当する。NTMではヘッダを含む全ての構成要素が微分可能となっているため、逆誤差伝播法を用いて学習できる。

 外部記憶にどのようにアクセスするかを読み込みを例に説明する。時刻tのコントローラの状態をn次元の実数ベクトルC(t)とし、メモリーにはk個のn次元の実数ベクトルからなるM1(t) M2(t) …Mk(t) があるとする。読み込みヘッダはk個のセルから読み込むk次元の重みベクトルWであり、

のように確率分布である制約を満たす。この重みを利用し、読み込みは各メモリセルから重み付けをして読み込む。

この式(1)は単なる線形重み和なので、重みWkおよびメモリセルMk(t)について微分可能である。重みWkを決めるには、内容に基づくアドレッシング、現在の位置に基づくアドレッシングの2つを組み合わせる。そして、これらも全て微分可能な計算フローから構成される。逆誤差伝播法でエラーが伝播することで全てのパラメータが調整され、教師データとして与えられた正解に近づくよう学習が進む。

 メモリからの読み込みにおいて、重みがどのように変わっていくのか見てみる。例えば、Mk(t)=−1、Mk+1(t)=1であり、C(t+1)のエラーの勾配が3であったとする。これはC(t+1)を1増やしたら最終的なエラーが3増えるという意味だ。このとき、Wkは増やし、Wk+1は減らすように、つまり、この時はMkから読み込んで、Mk+1からは読み込まないように学習する。実際、Wk、Wk+1を生成しているのはヘッドの部分なので、ヘッドの対応するパラメータが更新される。

入力長20のソート問題を学習でほぼ解決

 NTMが解いたタスク例として、ソート問題を考えてみる。これは次のようなキーと値のペアからなる入力が与えられた時、キーの大きい順に並び替えて出力する問題である。

 入力:10:C 3:E 7:A 8:D 5:B(キー:値)
 途中結果:10:C 8:D 7:A 5:B 3:E(キーでソート)
 出力:C D A B E (値のみ)

 NTMにこのようなソート問題の入力と出力のペアをたくさん与え、入力と出力の関係を学習させた後、新しい未知の入力に対し、正しくソートされた結果を出力できるかを考える。このタスクではテープ(外部記憶)への読み書きそれぞれに8つのヘッドを利用し、同時に最大8カ所に読み書きできるようになっている。グーグルが行った実験では、入力長が20に対し、上位から16個の値を返すタスクを行っている。完璧ではないが、ほぼソートできることが示されている。

 このNTMは、記憶を含めた「信用割り当て問題」を自然に解決している。信用割り当て問題とは、複数のコンポーネントから成るシステムの最終的な出力が間違っている場合に、どのコンポーネントに責任があり、どこを修正すればよいのかを求める問題である。ヘッドのアクセスを学習できるということは、「この記憶を保存しておけばよかった」「この記憶を読み出しておけばよかった」という情報を基に記憶へのアクセス方法を修正できるということである。

NTMはアテンションの一般化

 学習においては、「アテンション(注意)」と呼ばれる仕組みが重要になる。アテンションとは、どの情報を利用するかを絞り込むことである。例えば、アテンションの仕組みなしに全ての情報を用いて学習していた場合、それが間違っている場合には全ての情報に責任があり、全部のパラメータが同じように修正されてしまう。これではどれだけ学習しても、同じような結果にしかならない。アテンションの仕組みがあれば、どの情報を利用するかを絞り込み、修正する時にもその情報に関して修正できるようになる。

 NTMはアテンションの一般化になっている。毎回、外部記憶の全ての位置に書き込み、全ての位置から読み込む場合、エラー情報は拡散され、学習はうまくいかない。NTMでは、ヘッドが生成する重みWkにより、情報の読み込みおよび書き込みがともに外部記憶の一部分に集中するようになっている。このため、学習の際にそれを修正することができる。

1) A. Graves., et. al. 2014, http://arxiv.org/abs/1410.5401
岡野原 大輔(おかのはら・だいすけ)
Preferred Networks 取締役副社長
岡野原 大輔2006年にPreferred Infrastructureを共同創業。2010年、東京大学大学院博士課程修了。博士(情報理工学)。未踏ソフト創造事業スーパークリエータ認定。東京大学総長賞。