説明

情報処理装置および方法、学習装置および方法、並びにプログラム

【課題】RNNにおいて、長いシーケンスの学習または生成を可能とする。
【解決手段】RNN(リカレント型ニューラルネットワーク)41において、入力ノード61−iへの次の入力を、その1つ前の入力ノード61−iへの入力に、出力ノード64−iの出力を所定の割合で足しこむことによって生成し、コンテキスト入力ノード62−kへの次の入力を、その1つ前のコンテキスト入力ノード62−kへの入力に、コンテキスト出力ノード65−kの出力を所定の割合で足しこむことによって生成する。本発明は、例えば、リカレント型ニューラルネットワークを用いた情報処理装置に適用できる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置および方法、学習装置および方法、並びにプログラムに関し、特に、RNNにおいて、長いシーケンスの学習または生成を可能とする情報処理装置および方法、学習装置および方法、並びにプログラムに関する。
【背景技術】
【0002】
人工ニューラルネットワークの1つであるフィードフォワードネットワーク(Feed forward Networks)は、パターン認識や未知関数の学習などに幅広く応用されている。しかし、その出力は現在の入力のみから決定され、過去の履歴が考慮されないため、時系列情報を学習し、適切に処理することができないという問題がある。
【0003】
この問題に対して、時系列パターンを空間パターンに変換することにより、時系列情報を扱うことのできるフィードフォワードネットワークのモデルも提案されているが、それらのモデルでは、考慮する履歴の大きさが固定されてしまうという問題がある。
【0004】
一方、フィードフォワードネットワークのモデルとは別に、リカレント型ニューラルネットワーク(Recurrent Neural Network;以下、RNNと称する)というモデルが提案されている。RNNは、ネットワークにコンテキストループと呼ばれる回帰ループを持たせ、そこに保持される内部状態に基づいて処理を行うことで時系列情報を扱うことを可能にしたものであり、履歴の大きさが固定されるという問題がない。
【0005】
非特許文献1では、ロボットの行動シーケンス(時系列パターン)の学習および生成にRNNを利用し、RNNの内部状態の初期値を変えることによって、ロボットの行動シーケンスを変える技術が提案されている。
【非特許文献1】Ryu Nisimoto,Jun Tani, Learning to generate combinatorial action sequences utilizing the initial sensitivity of deterministic dynamical systems, Neural Networks17,2004,p.925-933
【発明の開示】
【発明が解決しようとする課題】
【0006】
しかしながら、非特許文献1で提案されている技術では、RNNのタイムステップ数が少ない行動シーケンスについては良いが、ステップ数の多い、長いシーケンスの学習および生成が困難であるという問題があった。
【0007】
本発明は、このような状況に鑑みてなされたものであり、RNNにおいて、長いシーケンスの学習または生成を可能とするものである。
【課題を解決するための手段】
【0008】
本発明の第1の側面の情報処理装置は、データを入力する入力ノード、前記入力ノードから入力された前記データに基づいてデータを出力する出力ノード、およびネットワークの内部状態を表す値をコンテキスト出力ノードからコンテキスト入力ノードへ回帰するコンテキストループと、所定の時刻の前記ネットワークからの出力を、前記ネットワークへの次の入力とする回帰ループとを持つリカレント型ニューラルネットワークを用いた処理を行う情報処理装置において、前記ネットワークへの次の入力を、その1つ前の前記ネットワークへの入力に、前記出力ノードの出力を所定の割合で足しこむことによって生成し、前記コンテキスト入力ノードへの次の入力を、その1つ前の前記コンテキスト入力ノードへの入力に、前記コンテキスト出力ノードの出力を所定の割合で足しこむことによって生成する生成手段を備える。
【0009】
前記生成手段には、現在の時刻より1つ先の時刻の入力ノードの内部状態を、前記現在の時刻の入力ノードの内部状態に、前記出力ノードの出力を所定の割合で足しこむことによって生成させ、現在の時刻より1つ先の時刻のコンテキスト入力ノードの内部状態を、前記現在の時刻のコンテキスト入力ノードの内部状態に、前記コンテキスト出力ノードの出力を所定の割合で足しこむことによって生成させることができる。
【0010】
前記コンテキスト入力ノードに与える初期値は学習によって求められ、前記学習においては、所定の時刻における前記コンテキスト入力ノードの内部状態の誤差が、その前の時刻の前記コンテキスト出力ノードの内部状態の誤差に与える影響を調整させることができる。
【0011】
本発明の第1の側面の情報処理方法は、データを入力する入力ノード、前記入力ノードから入力された前記データに基づいてデータを出力する出力ノード、およびネットワークの内部状態を表す値をコンテキスト出力ノードからコンテキスト入力ノードへ回帰するコンテキストループと、所定の時刻の前記ネットワークからの出力を、前記ネットワークへの次の入力とする回帰ループとを持つリカレント型ニューラルネットワークを用いた処理を行う情報処理方法において、前記ネットワークへの次の入力を、その1つ前の前記ネットワークへの入力に、前記出力ノードの出力を所定の割合で足しこむことによって生成し、前記コンテキスト入力ノードへの次の入力を、その1つ前の前記コンテキスト入力ノードへの入力に、前記コンテキスト出力ノードの出力を所定の割合で足しこむことによって生成するステップを含む。
【0012】
本発明の第1の側面のプログラムは、データを入力する入力ノード、前記入力ノードから入力された前記データに基づいてデータを出力する出力ノード、およびネットワークの内部状態を表す値をコンテキスト出力ノードからコンテキスト入力ノードへ回帰するコンテキストループと、所定の時刻の前記ネットワークからの出力を、前記ネットワークへの次の入力とする回帰ループとを持つリカレント型ニューラルネットワークを用いた処理を、コンピュータに実行させるプログラムにおいて、前記ネットワークへの次の入力を、その1つ前の前記ネットワークへの入力に、前記出力ノードの出力を所定の割合で足しこむことによって生成し、前記コンテキスト入力ノードへの次の入力を、その1つ前の前記コンテキスト入力ノードへの入力に、前記コンテキスト出力ノードの出力を所定の割合で足しこむことによって生成するステップを含む。
【0013】
本発明の第1の側面においては、ネットワークへの次の入力が、その1つ前のネットワークへの入力に、出力ノードの出力を所定の割合で足しこむことによって生成され、コンテキスト入力ノードへの次の入力が、その1つ前のコンテキスト入力ノードへの入力に、コンテキスト出力ノードの出力を所定の割合で足しこむことによって生成される。
【0014】
本発明の第2の側面の学習装置は、データを入力する入力ノード、前記入力ノードから入力された前記データに基づいてデータを出力する出力ノード、およびネットワークの内部状態を表す値をコンテキスト出力ノードからコンテキスト入力ノードへ回帰するコンテキストループと、所定の時刻の前記ネットワークからの出力を、前記ネットワークへの次の入力とする回帰ループとを持つリカレント型ニューラルネットワークを用いた処理を行う情報処理装置の、前記コンテキスト入力ノードに与える初期値を学習する学習装置において、所定の時刻における前記コンテキスト入力ノードの内部状態の誤差が、その前の時刻の前記コンテキスト出力ノードの内部状態の誤差に与える影響を調整する調整手段を備える。
【0015】
前記調整手段には、所定の時刻における前記コンテキスト入力ノードの内部状態の誤差を正の係数で除算した値を、その前の時刻の前記コンテキスト出力ノードの内部状態の誤差とすることによって、所定の時刻における前記コンテキスト入力ノードの内部状態の誤差が、その前の時刻の前記コンテキスト出力ノードの内部状態の誤差に与える影響を調整させることができる。
【0016】
本発明の第2の側面の学習方法は、データを入力する入力ノード、前記入力ノードから入力された前記データに基づいてデータを出力する出力ノード、およびネットワークの内部状態を表す値をコンテキスト出力ノードからコンテキスト入力ノードへ回帰するコンテキストループと、所定の時刻の前記ネットワークからの出力を、前記ネットワークへの次の入力とする回帰ループとを持つリカレント型ニューラルネットワークを用いた処理を行う情報処理装置の、前記コンテキスト入力ノードに与える初期値を学習する学習方法において、所定の時刻における前記コンテキスト入力ノードの内部状態の誤差が、その前の時刻の前記コンテキスト出力ノードの内部状態の誤差に与える影響を調整するステップを含む。
【0017】
本発明の第2の側面のプログラムは、データを入力する入力ノード、前記入力ノードから入力された前記データに基づいてデータを出力する出力ノード、およびネットワークの内部状態を表す値をコンテキスト出力ノードからコンテキスト入力ノードへ回帰するコンテキストループと、所定の時刻の前記ネットワークからの出力を、前記ネットワークへの次の入力とする回帰ループとを持つリカレント型ニューラルネットワークを用いた処理を行う情報処理装置の、前記コンテキスト入力ノードに与える初期値を学習する処理を、コンピュータに実行させるプログラムにおいて、所定の時刻における前記コンテキスト入力ノードの内部状態の誤差が、その前の時刻の前記コンテキスト出力ノードの内部状態の誤差に与える影響を調整するステップを含む。
【0018】
本発明の第2の側面においては、所定の時刻におけるコンテキスト入力ノードの内部状態の誤差が、その前の時刻のコンテキスト出力ノードの内部状態の誤差に与える影響が調整される。
【発明の効果】
【0019】
本発明によれば、RNNにおいて、長いシーケンスの学習または生成を可能とさせることができる。
【発明を実施するための最良の形態】
【0020】
以下に本発明の実施の形態を説明するが、本発明の構成要件と、明細書又は図面に記載の実施の形態との対応関係を例示すると、次のようになる。この記載は、本発明をサポートする実施の形態が、明細書又は図面に記載されていることを確認するためのものである。従って、明細書又は図面中には記載されているが、本発明の構成要件に対応する実施の形態として、ここには記載されていない実施の形態があったとしても、そのことは、その実施の形態が、その構成要件に対応するものではないことを意味するものではない。逆に、実施の形態が構成要件に対応するものとしてここに記載されていたとしても、そのことは、その実施の形態が、その構成要件以外の構成要件には対応しないものであることを意味するものでもない。
【0021】
本発明の第1の側面の情報処理装置は、データを入力する入力ノード、前記入力ノードから入力された前記データに基づいてデータを出力する出力ノード、およびネットワークの内部状態を表す値をコンテキスト出力ノードからコンテキスト入力ノードへ回帰するコンテキストループと、所定の時刻の前記ネットワークからの出力を、前記ネットワークへの次の入力とする回帰ループとを持つリカレント型ニューラルネットワークを用いた処理を行う情報処理装置(例えば、図1の情報処理装置1)において、前記ネットワークへの次の入力を、その1つ前の前記ネットワークへの入力に、前記出力ノードの出力を所定の割合で足しこむことによって生成し、前記コンテキスト入力ノードへの次の入力を、その1つ前の前記コンテキスト入力ノードへの入力に、前記コンテキスト出力ノードの出力を所定の割合で足しこむことによって生成する生成手段(例えば、図1のRNN部12)を備える。
【0022】
本発明の第1の側面の情報処理方法は、データを入力する入力ノード、前記入力ノードから入力された前記データに基づいてデータを出力する出力ノード、およびネットワークの内部状態を表す値をコンテキスト出力ノードからコンテキスト入力ノードへ回帰するコンテキストループと、所定の時刻の前記ネットワークからの出力を、前記ネットワークへの次の入力とする回帰ループとを持つリカレント型ニューラルネットワークを用いた処理を行う情報処理方法において、前記ネットワークへの次の入力を、その1つ前の前記ネットワークへの入力に、前記出力ノードの出力を所定の割合で足しこむことによって生成し(例えば、図3のステップS16)、前記コンテキスト入力ノードへの次の入力を、その1つ前の前記コンテキスト入力ノードへの入力に、前記コンテキスト出力ノードの出力を所定の割合で足しこむことによって生成する(例えば、図3のステップS17)ステップを含む。
【0023】
本発明の第1の側面のプログラムは、データを入力する入力ノード、前記入力ノードから入力された前記データに基づいてデータを出力する出力ノード、およびネットワークの内部状態を表す値をコンテキスト出力ノードからコンテキスト入力ノードへ回帰するコンテキストループと、所定の時刻の前記ネットワークからの出力を、前記ネットワークへの次の入力とする回帰ループとを持つリカレント型ニューラルネットワークを用いた処理を、コンピュータに実行させるプログラムにおいて、前記ネットワークへの次の入力を、その1つ前の前記ネットワークへの入力に、前記出力ノードの出力を所定の割合で足しこむことによって生成し(例えば、図3のステップS16)、前記コンテキスト入力ノードへの次の入力を、その1つ前の前記コンテキスト入力ノードへの入力に、前記コンテキスト出力ノードの出力を所定の割合で足しこむことによって生成する(例えば、図3のステップS17)ステップを含むプログラム。
【0024】
本発明の第2の側面の学習装置は、データを入力する入力ノード、前記入力ノードから入力された前記データに基づいてデータを出力する出力ノード、およびネットワークの内部状態を表す値をコンテキスト出力ノードからコンテキスト入力ノードへ回帰するコンテキストループと、所定の時刻の前記ネットワークからの出力を、前記ネットワークへの次の入力とする回帰ループとを持つリカレント型ニューラルネットワークを用いた処理を行う情報処理装置の、前記コンテキスト入力ノードに与える初期値を学習する学習装置(例えば、図1の情報処理装置1)において、所定の時刻における前記コンテキスト入力ノードの内部状態の誤差が、その前の時刻の前記コンテキスト出力ノードの内部状態の誤差に与える影響を調整する調整手段(例えば、図1のRNN部12)を備える。
【0025】
本発明の第2の側面の学習方法は、データを入力する入力ノード、前記入力ノードから入力された前記データに基づいてデータを出力する出力ノード、およびネットワークの内部状態を表す値をコンテキスト出力ノードからコンテキスト入力ノードへ回帰するコンテキストループと、所定の時刻の前記ネットワークからの出力を、前記ネットワークへの次の入力とする回帰ループとを持つリカレント型ニューラルネットワークを用いた処理を行う情報処理装置の、前記コンテキスト入力ノードに与える初期値を学習する学習方法において、所定の時刻における前記コンテキスト入力ノードの内部状態の誤差が、その前の時刻の前記コンテキスト出力ノードの内部状態の誤差に与える影響を調整する(例えば、図4のステップS33)ステップを含む。
【0026】
本発明の第2の側面のプログラムは、データを入力する入力ノード、前記入力ノードから入力された前記データに基づいてデータを出力する出力ノード、およびネットワークの内部状態を表す値をコンテキスト出力ノードからコンテキスト入力ノードへ回帰するコンテキストループと、所定の時刻の前記ネットワークからの出力を、前記ネットワークへの次の入力とする回帰ループとを持つリカレント型ニューラルネットワークを用いた処理を行う情報処理装置の、前記コンテキスト入力ノードに与える初期値を学習する処理を、コンピュータに実行させるプログラムにおいて、所定の時刻における前記コンテキスト入力ノードの内部状態の誤差が、その前の時刻の前記コンテキスト出力ノードの内部状態の誤差に与える影響を調整する(例えば、図4のステップS33)ステップを含む。
【0027】
以下、図を参照して、本発明の実施の形態について説明する。
【0028】
図1は、本発明を適用した情報処理装置の一実施の形態の構成例を示すブロック図である。
【0029】
図1の情報処理装置1は、学習指令部11、RNN部12、および生成指令部13から構成され、時系列データ(時系列パターン)を学習する処理を行う。
【0030】
学習指令部11は、学習の教師となる時系列データを教師データとしてRNN部12に供給することにより、RNN部12に時系列データの学習をさせる。
【0031】
記憶部21と演算部22を有するRNN部12では、入力層と出力層との間に中間層をもつ三層型のリカレント型ニューラルネットワーク(Recurrent Neural Network;以下、RNNと称する)が構築されている。
【0032】
図2は、RNN部12で構築されるRNNの構成を模式的に表した図である。
【0033】
図2のRNN41では、そこに入力される時刻tの状態ベクトルxu(t)に対して、時刻t+1の状態ベクトルxu(t+1)を予測して、出力することが学習される。RNN41は、ネットワークの内部状態を表すコンテキストループと呼ばれる回帰ループをもち、その内部状態に基づく処理が行われることで対象となる時系列データの時間発展法則を学習することができる。RNN41の入力層51に位置するコンテキストループのノードをコンテキスト入力ノード62−k(k=1,・・・,K)といい、RNN41の出力層53に位置するコンテキストループのノードをコンテキスト出力ノード65−kという。また、コンテキスト入力ノード以外の入力層51のノードを入力ノード61−i(i=1,・・・,I)、中間層52のノードを隠れノード63−j(j=1,・・・,J)、コンテキスト出力ノード以外の出力層53のノードを出力ノード64−iとそれぞれいう。入力ノード61−iには、例えば、センサの信号やモータの信号が入力される。
【0034】
なお、入力ノード61−i、コンテキスト入力ノード62−k、隠れノード63−j、出力ノード64−i、およびコンテキスト出力ノード65−kの各ノードを区別する必要がない場合には、単に、入力ノード61、コンテキスト入力ノード62、隠れノード63、出力ノード64、およびコンテキスト出力ノード65という。
【0035】
図1に戻り、演算部22は、学習指令部11から供給される教師データに基づいて、入力層51と中間層52の各ノード間の重み係数(後述する重み係数whijおよびwhjk)、中間層52と出力層53の各ノード間の重み係数(後述する重み係数wyijおよびwojk)、および、コンテキスト入力ノード62−kに与える初期値が、それぞれ、最適な値となるように、入力ノード61、コンテキスト入力ノード62、隠れノード63、出力ノード64、コンテキスト出力ノード65、入力層51と中間層52の各ノード間の重み係数、中間層52と出力層53の各ノード間の重み係数を変数として演算を行う。この最適な重み係数およびコンテキスト入力ノード62−kの初期値を求めることが時系列データの学習であり、求められた最適な重み係数およびコンテキストノード62−kの初期値は、記憶部21に記憶される。従って、学習指令部11から教師データが供給された場合、RNN部12は、教師データに対する最適な重み係数およびコンテキスト入力ノード62−kの初期値を学習する学習装置として機能する。
【0036】
また、演算部22は、生成指令部13から、入力層51の各ノード、即ち、入力ノード61−iとコンテキスト入力ノード62−kに対して初期値が供給されると、その初期値に基づいて、時系列データを生成し、その生成された時系列データを、生成データとして生成指令部13に出力する。この時系列データの生成には、上述した学習機能により学習された重み係数およびコンテキストノード62の初期値が使用される。従って、生成指令部13から、入力層51の各ノードに対して初期値が供給された場合、RNN部12は、供給された初期値に基づいて、時系列データを生成する生成装置として機能する。
【0037】
生成指令部13は、RNN41の入力層51の各ノードに対する初期値をRNN部12に供給することにより、RNN部12に所定のタイムステップ(サンプル)(時刻)数の時系列データを生成させる。
【0038】
図2を参照して、RNN41についてさらに説明する。
【0039】
RNN41は、入力層51、中間層(隠れ層)52、出力層53、並びに演算部54および55により構成されている。
【0040】
上述したように、入力層51は、入力ノード61−i(i=1,・・・,I)と、コンテキスト入力ノード62−k(k=1,・・・,K)を有しており、中間層52は、隠れノード63−j(j=1,・・・,J)を有している。また、出力層53は、出力ノード64−iと、コンテキスト出力ノード65−kを有している。
【0041】
入力ノード61−iには、時刻tの状態ベクトルxu(t)を構成するi番目の要素であるデータxui(t)が入力される。また、コンテキスト入力ノード62−kには、時刻tのRNN41の内部状態ベクトルcu(t)を構成するk番目の要素であるデータcuk(t)が入力される。
【0042】
入力ノード61−iおよびコンテキスト入力ノード62−kのそれぞれにデータxui(t)およびcuk(t)が入力された場合に、入力ノード61−iおよびコンテキスト入力ノード62−kが出力するデータxi(t)およびck(t)は、次の式(1)および式(2)によって表される。
【0043】
【数1】

【0044】
【数2】

【0045】
式(1)および式(2)における関数fは、シグモイド関数などの微分可能な連続関数であり、式(1)および式(2)は、入力ノード61−iおよびコンテキスト入力ノード62−kのそれぞれに入力されたデータxui(t)およびデータcuk(t)が、関数fにより活性化され、データxi(t)およびデータck(t)として入力ノード61−iおよびコンテキスト入力ノード62−kから出力されることを表している。なお、データxui(t)およびcuk(t)の上付きのuは、活性化される前のノードの内部状態を表す(他のノードについても同様)。
【0046】
隠れノード63−jに入力されるデータhuj(t)は、入力ノード61−iと隠れノード63−jの結合の重みを表す重み係数whijと、コンテキスト入力ノード62−kと隠れノード63−jの結合の重みを表す重み係数whjkとを用いて、式(3)で表すことができ、隠れノード63−jが出力するデータhj(t)は、式(4)で表すことができる。
【0047】
【数3】

【0048】
【数4】

【0049】
なお、式(3)の右辺の第1項のΣは、i=1乃至Iの全てについて加算することを表し、第2項のΣは、k=1乃至Kの全てについて加算することを表す。
【0050】
同様にして、出力ノード64−iに入力されるデータyui(t)と、出力ノード64−iが出力するデータyi(t)、および、コンテキスト出力ノード65−kに入力されるデータouk(t)と、コンテキスト出力ノード65−kが出力するデータok(t)は、次式で表すことができる。
【0051】
【数5】

【0052】
【数6】

【0053】
【数7】

【0054】
【数8】

【0055】
式(5)のwyijは、隠れノード63−jと出力ノード64−iの結合の重みを表す重み係数であり、Σは、j=1乃至Jの全てについて加算することを表す。また、式(7)のwojkは、隠れノード63−jとコンテキスト出力ノード65−kの結合の重みを表す重み係数であり、Σは、j=1乃至Jの全てについて加算することを表す。
【0056】
演算部54は、出力ノード64−iが出力するデータyi(t)から、時刻tのデータxui(t)と時刻t+1のデータxui(t+1)との差分△xui(t+1)を式(9)により求め、さらに、式(10)により、時刻t+1のデータxui(t+1)を計算して、出力する。
【0057】
【数9】

【0058】
【数10】

【0059】
ここで、αおよびτは、任意の係数を表す。
【0060】
したがって、図2のRNN41に時刻tのデータxui(t)が入力されると、時刻t+1のデータxui(t+1)がRNN41の演算部54から出力される。また、演算部54から出力された時刻t+1のデータxui(t+1)は、入力ノード61−iにも供給される(フィードバックされる)。
【0061】
演算部55は、コンテキスト出力ノード65−kが出力するデータok(t)から、時刻tのデータcuk(t)と、時刻t+1のデータcuk(t+1)との差分△cuk(t+1)を式(11)により求め、さらに、式(12)により、時刻t+1のデータcuk(t+1)を計算して、出力する。
【0062】
【数11】

【0063】
【数12】

【0064】
演算部55から出力された時刻t+1のデータcuk(t+1)は、コンテキスト入力ノード62−kにフィードバックされる。
【0065】
式(12)は、ネットワークの現在の内部状態を表す内部状態ベクトルcu(t)に、コンテキスト出力ノード65−kの出力であるデータok(t)を係数αで重み付けて加算する(所定の割合で足しこむ)ことによって次の時刻のネットワークの内部状態ベクトルcu(t+1)とすることを意味しており、その意味で、図12のRNN41は、連続型のRNNであると言うことができる。
【0066】
以上のように、図2のRNN41では、時刻tのデータxu(t)およびデータcu(t)が入力されると、時刻t+1のデータxu(t+1)およびデータcu(t+1)を生成して出力する処理を逐次的に行うので、重み係数whij,whjk,wyij、およびwojkが、学習により求められているとすると、入力ノード61に入力する入力データxu(t)の初期値xu(t0)=X0とコンテキスト入力ノード62に入力するコンテキスト入力データcu(t)の初期値cu(t0)=C0を与えることにより、所定のタイムステップの時系列データを生成することができる。
【0067】
次に、図3のフローチャートを参照して、時系列データを生成する情報処理装置1の生成処理について説明する。なお、図3において、重み係数whij,whjk,wyij、およびwojkは、後述する学習処理により求められているものとする。
【0068】
初めに、ステップS11において、生成部13は、入力データの初期値X0とコンテキスト入力データの初期値C0をRNN部12に供給する。
【0069】
ステップS12において、入力ノード61−iは、データxi(t)を式(1)により計算して出力し、コンテキスト入力ノード62−kは、データck(t)を式(2)により計算して出力する。
【0070】
ステップS13において、隠れノード63−jは、式(3)を計算することによりデータhuj(t)を得て、データhj(t)を式(4)により計算して出力する。
【0071】
ステップS14において、出力ノード64−iは、式(5)を計算することによりデータyui(t)を得て、データyi(t)を式(6)により計算して出力する。
【0072】
ステップS15において、コンテキスト出力ノード65−kは、式(7)を計算することによりデータouk(t)を得て、データok(t)を式(8)により計算して出力する。
【0073】
ステップS16において、演算部54は、差分△xui(t+1)を式(9)により求め、時刻t+1のデータxui(t+1)を式(10)により計算し、生成指令部13に出力する。
【0074】
ステップS17において、演算部55は、差分△cuk(t+1)を式(11)により求め、時刻t+1のデータcuk(t+1)を式(12)により計算する。また、演算部55は、式(12)による計算の結果得られた時刻t+1のデータcuk(t+1)を、コンテキスト入力ノード62−kにフィードバックする(入力する)。
【0075】
ステップS18において、RNN部12は、時系列データの生成を終了するか否かを判定する。ステップS18で、時系列データの生成を終了しないと判定された場合、ステップS19において、演算部54は、式(10)による計算の結果得られた時刻t+1のデータxui(t+1)を、入力ノード61−iにフィードバックして、ステップS12に戻る。
【0076】
一方、ステップS18で、例えば、所定のタイムステップ数に到達するなどして、時系列データの生成を終了すると判定された場合、RNN部12は、生成処理を終了する。
【0077】
次に、RNN部12における時系列データの学習について説明する。
【0078】
例えば、情報処理装置1を搭載したヒューマノイドタイプのロボットに、複数の行動シーケンス(動作)を学習させる場合、学習の結果得られた入力層51と中間層52の各ノード間の重み係数whijおよびwhjkと、中間層52と出力層53の各ノード間の重み係数wyijおよびwojkが、すべての行動シーケンスに対応可能な値である必要がある。
【0079】
そこで、学習処理では、複数の行動シーケンスに対応する時系列データの学習が同時に実行される。即ち、学習処理では、行動シーケンスの数と同数のRNN41が用意され、各行動シーケンスごとに重み係数whij,whjk,wyij、およびwojkをそれぞれ求め、それらの平均値を最終的な1つのRNN41の重み係数whij,whjk,wyij、およびwojkとする処理を繰り返し実行することによって、生成処理で利用されるRNN41の重み係数whij,whjk,wyij、およびwojkが求められる。また、学習処理では、行動シーケンスごとのコンテキスト入力データの初期値cu(t0)=C0も同時に求められる。
【0080】
図4は、N種類の行動シーケンスに対応するN個の時系列データを学習する情報処理装置1の学習処理のフローチャートである。
【0081】
初めに、ステップS31において、生成指令部13は、教師データとしてのN個の時系列データをRNN部12に供給する。また、生成指令部13は、N個のRNN41のコンテキスト入力データの初期値cuk(t0)=C0kとしての所定の値をRNN部12に供給する。
【0082】
ステップS32において、RNN部12の演算部22は、学習回数を表す変数sに1を代入する。
【0083】
ステップS33において、演算部22は、N個の時系列データにそれぞれ対応するRNN41において、BPTT(Back Propagation Through Time)法を用いて、入力層51と中間層52の各ノード間の重み係数whij(s)およびwhjk(s)の誤差量δwhijおよびδwhjkと、中間層52と出力層53の各ノード間の重み係数wyij(s)およびwojk(s)の誤差量δwyijおよびδwojk、並びに、コンテキスト入力データの初期値C0kの誤差量δC0kを計算する。ここで、n(=1,・・・,N)番目の時系列データが入力されたRNN41において、BPTT法を用いて得られた誤差量δwhij,δwhjk,δwyij,δwojk、およびδC0kを、それぞれ、誤差量δwhij,n,δwhjk,n,δwyij,n,δwojk,n、およびδC0k,nと表す。
【0084】
BPTT法は、コンテキストループを持つRNN41の学習アルゴリズムであり、時間的な信号伝播の様子を空間的に展開することで、通常の階層型ニューラルネットワークにおけるバックプロパゲーション(BP)法を適用する手法であり、時刻tのデータxu(t)から生成される時刻t+1のデータxu(t+1)と、時刻t+1の教師データxu(t+1)*との誤差が小さくなるように重み係数whij(s),whjk(s),wyij(s)、およびwojk(s)を求める手法である。
【0085】
なお、演算部22は、ステップS33のBPTT法を用いた計算において、時刻t+1のコンテキスト入力ノード62−kのデータcuk(t+1)の誤差量δcuk(t+1)を、時刻tのコンテキスト出力ノード65−kのデータok(t)の誤差量δok(t)に逆伝播する際、任意の正の係数mで割ることにより、コンテキストデータの時定数の調整を行う。
【0086】
即ち、演算部22は、時刻tのコンテキスト出力ノード65−kのデータok(t)の誤差量δok(t)を、時刻t+1のコンテキスト入力ノード62−kのデータcuk(t+1)の誤差量δcuk(t+1)を用いた式(13)によって求める。
【0087】
【数13】

【0088】
BPTT法において式(13)を採用することにより、ネットワークの内部状態を表すコンテキストデータの1タイムステップ先の影響度を調整することができる。
【0089】
ステップS34において、演算部22は、入力層51と中間層52の各ノード間の重み係数whijおよびwhjkと、中間層52と出力層53の各ノード間の重み係数wyijおよびwojkのそれぞれを、N個の時系列データで平均化して、更新する。
【0090】
即ち、演算部22は、式(14)乃至式(21)により、入力層51と中間層52の各ノード間の重み係数whij(s+1)およびwhjk(s+1)と、中間層52と出力層53の各ノード間の重み係数wyij(s+1)およびwojk(s+1)を求める。
【0091】
【数14】

【0092】
【数15】

【0093】
【数16】

【0094】
【数17】

【0095】
【数18】

【0096】
【数19】

【0097】
【数20】

【0098】
【数21】

【0099】
ここで、ηは学習係数を表し、αは慣性係数を表す。なお、式(14)、式(16)、式(18)、および式(20)において、s=1の場合の△whij(s),△whjk(s),△wyij(s)、および△wojk(s)は、0とする。
【0100】
ステップS35において、演算部22は、コンテキスト入力データの初期値C0k,nを更新する。即ち、演算部22は、式(22)および式(23)により、コンテキスト入力データの初期値C0k,n(s+1)を求める。
【0101】
【数22】

【0102】
【数23】

【0103】
ステップS36において、演算部22は、変数sが所定の学習回数以下であるか否かを判定する。ここで設定される所定の学習回数は、学習誤差が十分に小さくなると認められる学習の回数である。
【0104】
ステップS36で、変数sが所定の学習回数以下であると判定された場合、即ち、学習誤差が十分に小さくなると認められるだけの回数の学習をまだ行っていない場合、ステップS37において、演算部22は、変数sを1だけインクリメントして、ステップS33に処理を進める。その後、ステップS33乃至S37の処理が繰り返される。一方、変数sが所定の学習回数より大きいと判定された場合、学習処理は終了する。
【0105】
なお、ステップS36では、学習回数によって処理の終了を判定する以外に、学習誤差が所定の基準値以内となったか否かにより、処理の終了を判定してもよい。
【0106】
以上のように、学習処理では、行動シーケンスごとに重み係数whij,whjk,wyij、およびwojkをそれぞれ求め、それらの平均値を最終的な1つのRNN41の重み係数whij,whjk,wyij、およびwojkとする処理を繰り返し実行することによって、生成処理で利用されるRNN41の重み係数whij,whjk,wyij、およびwojkが求められる。
【0107】
この処理は、換言すれば、複数の行動シーケンスに共通な動作の部分を、入力層51と中間層52の各ノード間の重み係数whijおよびwhjkと中間層52と出力層53の各ノード間の重み係数wyijおよびwojkとに分担させ、複数の行動シーケンスで異なる動作の部分を、コンテキストノードの初期値C0k,nに分担させる処理であると言うことができる。従って、学習処理によって求められたコンテキストノードの初期値C0k,nは、行動シーケンスごとに固有な値をとり、その結果、生成処理において、与えるコンテキストノードの初期値C0k,nによって再現させる行動シーケンスを変えることができる。
【0108】
なお、上述した学習処理では、各行動シーケンスの重み係数whij,whjk,wyij、およびwojkの平均値を求める処理を毎回実行するようにしたが、その処理は、所定回数ごとに実行するようにしてもよい。例えば、学習処理を終了する所定の学習回数が10000回である場合に、10回の学習回数ごとに各行動シーケンスの重み係数whij,whjk,wyij、およびwojkの平均値を求める処理を実行するようにしてもよい。
【0109】
次に、図5乃至図8を参照して、上述した情報処理装置1の時系列データの学習処理と生成処理を、ヒューマノイドタイプのロボットの動作で実験した実験結果について説明する。
【0110】
具体的には、図5に示すように、ロボットの初期状態(a)から中間状態(b)までの動作が同一で、中間状態(b)から最終状態(c)までの動作が、左手を上げる動作(c1),右手を上げる動作(c2)、または両手を上げる動作(c3)とそれぞれ異なる3種類の行動シーケンスD1乃至D3をロボットに学習させる実験を行った。なお、行動シーケンスD1乃至D3は、RNN41のタイムステップで69乃至79のステップ数となっている。
【0111】
教師データとしてRNN部12に与えられる時系列データは、ロボットの関節角のモータ信号であり、本実験では、RNN41の入力ノード61のノード数を8(I=8)、隠れノードのノード数を20(J=20)、コンテキスト入力ノード62のノード数を10(K=10)、出力ノード64のノード数を8(I=8)とし、学習回数を500,000回として学習処理を行った。従って、ロボットは、8軸のモータ制御を行うことにより、行動シーケンスD1乃至D3を実行する。
【0112】
本実験では、行動シーケンスD1乃至D3の時系列データそれぞれに対して、僅かに異なる5種類のノイズを加えて得られた、合計15個の行動シーケンスの時系列データを教師データとして学習させ、15個の行動シーケンスに共通なRNN41の重み係数と、15個の行動シーケンスそれぞれのコンテキスト入力データの初期値C0が求められた。
【0113】
図6は、ある1つの行動シーケンスの学習処理において、ロボットの8軸の時系列データを500,000回学習させたときの学習誤差の推移を表している。図6の横軸は、学習回数を表し、縦軸は、8軸の時系列データの学習誤差の平均値を表している。
【0114】
学習誤差は、多少の振動は見られるものの、500,000回の学習回数で十分に収束していることが見てとれる。
【0115】
図7は、学習処理で使用した教師データと、生成処理で生成された生成データとを比較した比較結果を表している。
【0116】
図7Aは、5個の行動シーケンスD1のうちのある1つの行動シーケンスについての比較結果を示し、図7Bは、5個の行動シーケンスD2のうちのある1つの行動シーケンスについての比較結果を示し、図7Cは、5個の行動シーケンスD3のうちのある1つの行動シーケンスについての比較結果を示している。
【0117】
図7A、図7B、および図7Cのそれぞれには、上下方向に3つのグラフが示されているが、それぞれの上側のグラフは、学習処理でRNN部12に供給された教師データ(モータ信号の時系列データ)を表し、真ん中のグラフは、生成処理でRNN部12で生成された生成データ(モータ信号の時系列データ)を表し、下側のグラフは、教師データと生成データの誤差を表している。図7A、図7B、および図7Cの横軸は、RNN41におけるタイムステップ数を表している。
【0118】
図7A、図7B、および図7Cに示されるいずれのグラフを見ても、真ん中の生成データは、上側の教師データとほとんど変わらず、教師データの特徴をよく表していることが分かる。即ち、ロボットの動作が忠実に再現されており、69乃至79もの長いシーケンスの学習および生成が可能であると言うことができる。
【0119】
次に、学習処理によって求められたコンテキスト入力データの初期値C0について考察する。
【0120】
図8は、上述した計15個の行動シーケンスの学習処理によって求められたコンテキスト入力データの初期値C0を主成分分析により2次元に射影した図を表している。図8の横軸は第1主成分を表し、縦軸は第2主成分を表す。
【0121】
図8では、5個の行動シーケンスD1のコンテキスト入力データの初期値C0は、四角印(□)でプロットされ、5個の行動シーケンスD2のコンテキスト入力データの初期値C0は、バツ印(×)でプロットされ、5個の行動シーケンスD3のコンテキスト入力データの初期値C0は、三角印(△)でプロットされている。なお、図8において、5個プロットされるはずの行動シーケンスD2またはD3のコンテキスト入力データの初期値C0が、3個または4個に見えるのは、プロットされている位置が重なっているためである。
【0122】
図8から、行動シーケンスD1乃至D3のコンテキスト入力データの初期値C0は、互いに十分離れており、行動シーケンスD1乃至D3のコンテキスト入力データの初期値C0は、それぞれクラスタ化されていることが分かる。
【0123】
従って、初期状態(a)が同一であるために、RNN41の入力ノード61に与える入力データの初期値X0が同一である場合であっても、RNN41に与えるコンテキスト入力データの初期値C0によって、行動シーケンスD1乃至D3を十分に切り分けることができると言うことができる。即ち、行動シーケンスD1乃至D3を切替えるコンテキスト入力データの初期値C0が、学習処理により自己組織化されている。
【0124】
以上のように、RNN部12に構築されるRNN41によれば、最初の入力ノード61に入力される入力データの初期値X0が同一で、途中から異なっていくような、いわゆる分岐構造を含むシーケンス(時系列データ)の学習を、69乃至79もの長時間のタイムステップ数にもかかわらず、安定に行うことができる。
【0125】
上述した一連の処理は、ハードウエアにより実行させることもできるし、ソフトウエアにより実行させることもできる。一連の処理をソフトウエアにより実行させる場合には、そのソフトウエアを構成するプログラムが、専用のハードウエアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、プログラム記録媒体からインストールされる。
【0126】
図9は、上述した一連の処理をプログラムにより実行するパーソナルコンピュータの構成の例を示すブロック図である。CPU(Central Processing Unit)101は、ROM(Read Only Memory)102、または記憶部108に記憶されているプログラムに従って各種の処理を実行する。RAM(Random Access Memory)103には、CPU101が実行するプログラムやデータなどが適宜記憶される。これらのCPU101、ROM102、およびRAM103は、バス104により相互に接続されている。
【0127】
CPU101にはまた、バス104を介して入出力インタフェース105が接続されている。入出力インタフェース105には、キーボード、マウス、マイクロホンなどよりなる入力部106、CRT(Cathode Ray Tube)、LCD(Liquid Crystal display)などよりなるディスプレイ、スピーカなどよりなる出力部107が接続されている。CPU101は、入力部106から入力される指令に対応して各種の処理を実行する。そして、CPU101は、処理の結果を出力部107に出力する。
【0128】
入出力インタフェース105に接続されている記憶部108は、例えばハードディスクからなり、CPU101が実行するプログラムや各種のデータを記憶する。通信部109は、インターネットやローカルエリアネットワークなどのネットワークを介して、または直接に接続された外部の装置と通信する。
【0129】
入出力インタフェース105に接続されているドライブ110は、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリなどのリムーバブルメディア121が装着されたとき、それらを駆動し、そこに記録されているプログラムやデータなどを取得する。取得されたプログラムやデータは、必要に応じて記憶部108に転送され、記憶される。また、プログラムやデータは、通信部109を介して取得され、記憶部108に記憶されてもよい。
【0130】
コンピュータにインストールされ、コンピュータによって実行可能な状態とされるプログラムを格納するプログラム記録媒体は、図9に示すように、磁気ディスク(フレキシブルディスクを含む)、光ディスク(CD-ROM(Compact Disc-Read Only Memory),DVD(Digital Versatile Disc)を含む)、光磁気ディスクを含む)、もしくは半導体メモリなどよりなるパッケージメディアであるリムーバブルメディア121、または、プログラムが一時的もしくは永続的に格納されるROM102や、記憶部108を構成するハードディスクなどにより構成される。プログラム記録媒体へのプログラムの格納は、必要に応じてルータ、モデムなどのインタフェースである通信部109を介して、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の通信媒体を利用して行われる。
【0131】
本明細書において、フローチャートに記述されたステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
【0132】
なお、本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。
【図面の簡単な説明】
【0133】
【図1】本発明を適用した情報処理装置の一実施の形態の構成例を示すブロック図である。
【図2】RNNの構成を模式的に表した図である。
【図3】情報処理装置の生成処理について説明するフローチャートである。
【図4】情報処理装置の学習処理について説明するフローチャートである。
【図5】実験に使用したヒューマノイドタイプのロボットの動作について説明する図である。
【図6】ロボットの実験における学習誤差の推移を示す図である。
【図7】ロボットの実験における教師データと生成データとの比較結果を示す図である。
【図8】ロボットの実験におけるコンテキスト入力データの初期値を主成分分析した結果を示す図である。
【図9】本発明を適用したコンピュータの一実施の形態の構成例を示すブロック図である。
【符号の説明】
【0134】
1 情報処理装置, 12 RNN部, 21 記憶部, 22 演算部

【特許請求の範囲】
【請求項1】
データを入力する入力ノード、前記入力ノードから入力された前記データに基づいてデータを出力する出力ノード、およびネットワークの内部状態を表す値をコンテキスト出力ノードからコンテキスト入力ノードへ回帰するコンテキストループと、所定の時刻の前記ネットワークからの出力を、前記ネットワークへの次の入力とする回帰ループとを持つリカレント型ニューラルネットワークを用いた処理を行う情報処理装置において、
前記ネットワークへの次の入力を、その1つ前の前記ネットワークへの入力に、前記出力ノードの出力を所定の割合で足しこむことによって生成し、前記コンテキスト入力ノードへの次の入力を、その1つ前の前記コンテキスト入力ノードへの入力に、前記コンテキスト出力ノードの出力を所定の割合で足しこむことによって生成する生成手段を備える
情報処理装置。
【請求項2】
前記生成手段は、現在の時刻より1つ先の時刻の入力ノードの内部状態を、前記現在の時刻の入力ノードの内部状態に、前記出力ノードの出力を所定の割合で足しこむことによって生成し、現在の時刻より1つ先の時刻のコンテキスト入力ノードの内部状態を、前記現在の時刻のコンテキスト入力ノードの内部状態に、前記コンテキスト出力ノードの出力を所定の割合で足しこむことによって生成する
請求項1に記載の情報処理装置。
【請求項3】
前記コンテキスト入力ノードに与える初期値は学習によって求められ、前記学習においては、所定の時刻における前記コンテキスト入力ノードの内部状態の誤差が、その前の時刻の前記コンテキスト出力ノードの内部状態の誤差に与える影響が調整される
請求項2に記載の情報処理装置。
【請求項4】
データを入力する入力ノード、前記入力ノードから入力された前記データに基づいてデータを出力する出力ノード、およびネットワークの内部状態を表す値をコンテキスト出力ノードからコンテキスト入力ノードへ回帰するコンテキストループと、所定の時刻の前記ネットワークからの出力を、前記ネットワークへの次の入力とする回帰ループとを持つリカレント型ニューラルネットワークを用いた処理を行う情報処理方法において、
前記ネットワークへの次の入力を、その1つ前の前記ネットワークへの入力に、前記出力ノードの出力を所定の割合で足しこむことによって生成し、前記コンテキスト入力ノードへの次の入力を、その1つ前の前記コンテキスト入力ノードへの入力に、前記コンテキスト出力ノードの出力を所定の割合で足しこむことによって生成するステップを含む
情報処理方法。
【請求項5】
データを入力する入力ノード、前記入力ノードから入力された前記データに基づいてデータを出力する出力ノード、およびネットワークの内部状態を表す値をコンテキスト出力ノードからコンテキスト入力ノードへ回帰するコンテキストループと、所定の時刻の前記ネットワークからの出力を、前記ネットワークへの次の入力とする回帰ループとを持つリカレント型ニューラルネットワークを用いた処理を、コンピュータに実行させるプログラムにおいて、
前記ネットワークへの次の入力を、その1つ前の前記ネットワークへの入力に、前記出力ノードの出力を所定の割合で足しこむことによって生成し、前記コンテキスト入力ノードへの次の入力を、その1つ前の前記コンテキスト入力ノードへの入力に、前記コンテキスト出力ノードの出力を所定の割合で足しこむことによって生成するステップを含む
プログラム。
【請求項6】
データを入力する入力ノード、前記入力ノードから入力された前記データに基づいてデータを出力する出力ノード、およびネットワークの内部状態を表す値をコンテキスト出力ノードからコンテキスト入力ノードへ回帰するコンテキストループと、所定の時刻の前記ネットワークからの出力を、前記ネットワークへの次の入力とする回帰ループとを持つリカレント型ニューラルネットワークを用いた処理を行う情報処理装置の、前記コンテキスト入力ノードに与える初期値を学習する学習装置において、
所定の時刻における前記コンテキスト入力ノードの内部状態の誤差が、その前の時刻の前記コンテキスト出力ノードの内部状態の誤差に与える影響を調整する調整手段を備える
学習装置。
【請求項7】
前記調整手段は、所定の時刻における前記コンテキスト入力ノードの内部状態の誤差を正の係数で除算した値を、その前の時刻の前記コンテキスト出力ノードの内部状態の誤差とすることによって、所定の時刻における前記コンテキスト入力ノードの内部状態の誤差が、その前の時刻の前記コンテキスト出力ノードの内部状態の誤差に与える影響を調整する
請求項6に記載の学習装置。
【請求項8】
データを入力する入力ノード、前記入力ノードから入力された前記データに基づいてデータを出力する出力ノード、およびネットワークの内部状態を表す値をコンテキスト出力ノードからコンテキスト入力ノードへ回帰するコンテキストループと、所定の時刻の前記ネットワークからの出力を、前記ネットワークへの次の入力とする回帰ループとを持つリカレント型ニューラルネットワークを用いた処理を行う情報処理装置の、前記コンテキスト入力ノードに与える初期値を学習する学習方法において、
所定の時刻における前記コンテキスト入力ノードの内部状態の誤差が、その前の時刻の前記コンテキスト出力ノードの内部状態の誤差に与える影響を調整するステップを含む
学習方法。
【請求項9】
データを入力する入力ノード、前記入力ノードから入力された前記データに基づいてデータを出力する出力ノード、およびネットワークの内部状態を表す値をコンテキスト出力ノードからコンテキスト入力ノードへ回帰するコンテキストループと、所定の時刻の前記ネットワークからの出力を、前記ネットワークへの次の入力とする回帰ループとを持つリカレント型ニューラルネットワークを用いた処理を行う情報処理装置の、前記コンテキスト入力ノードに与える初期値を学習する処理を、コンピュータに実行させるプログラムにおいて、
所定の時刻における前記コンテキスト入力ノードの内部状態の誤差が、その前の時刻の前記コンテキスト出力ノードの内部状態の誤差に与える影響を調整するステップを含む
プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate


【公開番号】特開2007−265345(P2007−265345A)
【公開日】平成19年10月11日(2007.10.11)
【国際特許分類】
【出願番号】特願2006−93108(P2006−93108)
【出願日】平成18年3月30日(2006.3.30)
【出願人】(000002185)ソニー株式会社 (34,172)
【出願人】(503359821)独立行政法人理化学研究所 (1,056)