時系列信号を処理するニューラルネットワーク

はじめに

近年,ディープラーニング技術の発展が著しく,さまざまな分野で人を超える能力を発揮しています.ニューラルネットワークは,ディープラーニング技術の核となる技術です.ニューラルネットワークは,生体(例えば人間)の脳における情報処理のメカニズムに着眼した情報処理システムであり,人のような柔軟な情報処理(データからの学習)を実現します.

本研究室では,特に,時系列情報の処理をニューラルネットワークに行わせる方法について検討しています.

ニューラルネットワーク

ニューラルネットワークは,神経細胞のネットワーク(脳)が複雑な情報処理をすることに着目した情報処理手法です.

生物は,多数の神経細胞(ニューロン)のネットワークにより,情報処理を行うシステムととらえることができます.神経細胞は右図のようにDendriteからいくつもの刺激を入力として受け取り,Axonを経て他の神経細胞に反応を伝えます.


これを,シンプルにモデル化してしたユニットを,ネットワーク状に接続したものがニューラルネットワークです.神経細胞のモデル化は,入力はそれぞれに重みをつけて合計した値に簡単な関数を適用するものとなっています.ここで,重み w を調整することで,さまざまな入出力の関係を作り出すことができます.

ユニットを層状に並べ多数の層・ユニットを使った複雑なネットワーク構成により,複雑な信号処理をすることができます (ディープラーニング).次の図はAlexNetと呼ばれるネットワークの図です.左から右に向かって処理が進むのですが,それぞれの四角の中にユニットがたくさん入っています(四角の下の数値がユニットの数).

ディープラーニングについては,他の方が素晴らしい解説をされているので,それらを参照してください.

ひとつ,ブラウザ上で実行できるデモンストレーションを紹介します(計算負荷がかかります,ご注意ください).

ConvNetJS: Deep Learning in browser ( https://cs.stanford.edu/people/karpathy/convnetjs/ )

このページにある「Classify MNIST digits with a Convolutional Neural Network」では,手書き数字をだんだん読めるようになってゆく様子を確認できます.「Training Stats」「Instantiate a Network and Trainer」が概要及び設定,「Network Visualization」がネットワークで画像を処理している様子(上が入力側,下に行くほど処理が進む),「Example predictions on Test set」が数字を読んだ結果(もっともらしい3つの候補,バーが長いほど確信度が高く,緑が正解・赤が不正解)です.例えば下の図は,左から順に8, 6, 2, 2 がもっともらしいと判断しています.一番左は間違えていますが,5は次点で候補に挙がっています.

この例のように,データをたくさん与え,それにもとづいてネットワークの調整(学習)を繰り返すことで,徐々に期待した動作をするようになります.

ニューラルネットワークが扱う情報

ニューラルネットワークの動作は数式で決められているので,その動作も単なる数値計算です.

ただし,世の中の多くの情報は多数の数値の組として表すことができるので,結果として画像認識・音声認識など,我々にとってなじみ深い処理を実現できます.例えば,上で紹介したMNISTのデモでは,画像をたくさんの点の集まり(28×28)と見なして,その点の明るさ情報を入力として与えて,10種類の数字に対するもっともらしさを10個の数値として出力します.(上の例では,こうして得られた10個のもっともらしさのうち,上位3個を表示しています.)

しかし,ニューラルネットワークを構成するユニットは,単純には y = f(x) という関数でモデル化されているので,同じ入力に対して同じ出力を出力します.言い換えれば,過去を記憶していないので,過去の状況を使った判断ができません.

例えば,「い」→「し」なら石,「あ」→「し」なら足と判断したい場合,「し」だけをみても無理です.

これをニューラルネットワークで解決する代表的な方法は3種類あります.

  1. 「いし」,「あし」のように,文字列全体を同時に入力する
    何文字同時に入力すれば良いのか分からないときに困る

  2. 一文字ずつ入力して,出力の一部を入力に戻す (フィードバックする)
    RNN (Recurrent Neural Network) と呼ばれ,ディープラーニングでよく用いられている方法

  3. ユニットを拡張して,ユニット内部で過去の情報を記憶するようにする

我々の研究室では,3番のアプローチについて「スパイキングニューラルネットワーク」に着目して研究しています.

スパイキングニューラルネットワーク

スパイキングニューラルネットワークは,スパイキングニューロン(ユニット)により構成されたニューラルネットワークです.

スパイキングニューロンは,ここまで紹介してきたユニットと異なり,数値ではなく,スパイク(パルス)を使って情報のやりとりをします.その内部では,受け取ったスパイクに対応する刺激を合計し,それがある値を超えたときにスパイクを出力します.

次の図はスパイキングニューロンの簡単な動作イメージです.横方向は,右に行くほど時間が進んでゆきます.青い点で示した時刻にスパイクが入力され,それぞれに対して,点線で示したような反応が発生します.これらを合計した実線のカーブがθを超えたとき(オレンジの点の時刻)に,このニューロンはスパイクを出力します.

こうすることで,ユニットそのものが過去の情報を記憶できるので,これを使ったネットワークも,過去の状況を利用した判断ができるようになります.

スパイキングニューラルネットワークでは,これまでのニューラルネットワークと異なり,数値の組ではなく,スパイク列が入力・出力となります.スパイクは時刻だけを表しておりそのときの値は表現できないので,スパイク列を使うことは不便なようですが,「何かが発生した時刻」をそのまま情報として入力できるので,そのような情報の取り扱いにたけています.

例えば右の図は,センサで計測した値がある値を超えた瞬間をスパイクとして入力し,それを処理するイメージの図です.こうすることで,センサの値の変化を逐次処理して,特定の条件が満たされた時刻を素早く知ることができます.

本研究室での研究内容

本研究室では,スパイキングニューラルネットワークによるディープラーニングの実現に向けて,さまざまな基礎的研究を行っています.