以下、図を参照して、本発明の実施の形態について説明する。
図3は、本発明を適用した情報処理装置の構成例を示している。
図3の情報処理装置51は、例えば、ロボットなどに組み込まれるものである。情報処理装置51が組み込まれるロボットには、視認の対象となる対象物を検出するセンサと、ロボットを移動させるために駆動されるモータ(いずれも図示せず)が少なくとも具備されており、センサおよびモータからの信号であるセンサモータ信号が情報処理装置51に供給される。
情報処理装置51は、下位時系列予測生成器61、上位時系列予測生成器62、およびゲート信号変換部63により構成され、教師データとして与えられる時系列データを学習する学習処理と、その学習した結果に応じて、入力に対する時系列データを生成(再現)する生成処理を実行する。
本実施の形態では、情報処理装置51が、ヒューマノイドロボットが行う一連の動作である行動シーケンスを学習および生成する例について説明する。
以下の例では、情報処理装置51が3つの行動シーケンスA,B、およびCを学習する。
行動シーケンスAとしてのヒューマノイドロボットの動作は、初期状態としての両腕を左右に広げた状態のロボットが、目の前のテーブルに置かれた四角い物体を視認し、物体を両手で掴んで所定の高さだけ持ち上げ、再びテーブルに置く動作を複数回行い、その後、初期状態の位置(以下、ホームポジションともいう)に両腕を戻す動作である。
行動シーケンスBとしてのヒューマノイドロボットの動作は、初期状態から、目の前のテーブルに置かれた四角い物体を視認し、右手で物体に触る、ホームポジションに戻す、左手で物体に触る、ホームポジションに戻るという動作、即ち、物体を片手で交互に触る動作を複数回行う動作である。
行動シーケンスCとしてのヒューマノイドロボットの動作は、初期状態から、目の前のテーブルに置かれた四角い物体を視認し、両手で同時に物体を1回触って、ホームポジションに戻る動作である。
以上のような行動シーケンスA乃至Cそれぞれを実行するときのセンサ(例えば、視覚センサなど)やモータの信号を、情報処理装置51は学習および生成する。
下位時系列予測生成器61は、N個のリカレント型ニューラルネットワーク(Recurrent Neural Network;以下、RNNという)71−1乃至71−N、そのRNN71−1乃至71−Nの後段に配置されるゲート72−1乃至72−N、合成回路73、演算回路74、メモリ75、および制御回路76により構成される。なお、RNN71−1乃至71−Nを特に区別する必要がない場合には、単にRNN71と称する。その他のゲート72などについても同様である。
下位時系列予測生成器61には、ヒューマノイドロボットに具備されたセンサおよびモータからのセンサモータ信号が入力される。ここで、時刻tに、下位時系列予測生成器61に入力されるセンサモータ信号をsm(t)と表す。
下位時系列予測生成器61は、そこに入力される時刻tのセンサモータ信号sm(t)に対して、時刻t+1のセンサモータ信号sm(t+1)を、予め学習した結果に応じて予測して、出力する。
具体的には、RNN71−n(n=1,2,・・・,N)は、入力された時刻tのセンサモータ信号sm(t)に対して、予め学習した結果に応じて時刻t+1のセンサモータ信号sm(t+1)を生成し、ゲート72−nに出力する。
ところで、行動シーケンスは、さまざまな複数の行動部品(運動プリミティブ(primitive))の集まり(連続)で構成されると考えることができる。例えば、上述した行動シーケンスAは、物体を視認する、両腕を物体に(掴むまで)近づける、物体を持ち上げる、持ち上げた物体を下げる、ホームポジションに戻る、等の行動部品の集まりであると考えることができる。RNN71−1乃至71−Nのそれぞれは、1つの行動部品に対応するセンサモータ信号の時系列データを排他的に学習する。
従って、RNN71−1乃至71−Nそれぞれに学習されている行動部品が異なるために、RNN71−1乃至71−Nのそれぞれには、同一のセンサモータ信号sm(t)が入力されるが、RNN71−1乃至71−Nのそれぞれが出力するセンサモータ信号sm(t+1)は異なるものとなる。ここで、RNN71−nが出力するセンサモータ信号sm(t+1)をセンサモータ信号smn(t+1)と表す。
RNN71−nの後段に配置されるゲート72−nには、RNN71−nからの時刻t+1のセンサモータ信号smn(t+1)の他に、ゲート信号変換部63から、ゲート72−1乃至72−Nの開閉状態の制御信号であるゲート信号gate[N]={g1,g2,・・・,gN}が供給される。なお、後述するように、ゲート信号gate[N]を構成するゲート信号gnの総和は1(Σgn=1)となっている。
ゲート72−nは、ゲート信号gnに応じて、RNN71−nからのセンサモータ信号smn(t+1)の出力を開閉する。即ち、ゲート72−nは、時刻t+1において、gn×smn(t+1)を合成回路73に出力する。
合成回路73は、ゲート72−1乃至72−Nそれぞれからの出力を合成し、その合成の結果を、時刻t+1のセンサモータ信号sm(t+1)として出力する。即ち、合成回路73は、次式(1)で表されるセンサモータ信号sm(t+1)を出力する。
演算回路74は、センサモータ信号の時系列データの学習時、時刻tのセンサモータ信号sm(t)に対してRNN71−1乃至71−Nそれぞれが出力した時刻t+1のセンサモータ信号sm1(t+1)乃至smN(t+1)と、教師データとして下位時系列予測生成器61に与えられる時刻t+1の教師センサモータ信号sm*(t+1)との予測誤差errorLt+1[N]={errorLt+1 1,errorLt+1 2,・・・,errorLt+1 N}を計算する。なお、予測誤差errorLt+1[N]は、後述する式(16)で表されるように、時刻t+1における誤差だけではなく、時刻t+1から過去Lステップ分を考慮した誤差として計算される。
演算回路74により計算された時刻t+1におけるRNN71−nの予測誤差errorLt+1 nは、メモリ75に供給され、記憶される。
演算回路74において、予測誤差errorLt+1[N]の計算が時系列に繰り返され、メモリ75に記憶されることにより、メモリ75には、教師データに対する予測誤差の時系列データerrorL[N]が記憶される。この予測誤差の時系列データerrorL[N]は、上位時系列予測生成器62に供給される。なお、演算回路74は、教師データに対する予測誤差の時系列データerrorL[N]を、0から1の範囲の値に正規化してから出力する。
メモリ75は、上述したように、教師データに対する予測誤差の時系列データerrorL[N]を記憶する。また、メモリ75は、RNN71−1乃至71−Nの利用頻度FREQ1乃至FREQNも記憶する。RNN71−1乃至71−Nの利用頻度FREQ1乃至FREQNについては図6を参照して後述する。
制御回路76は、RNN71−1乃至71−N、演算回路74、メモリ75など、下位時系列予測生成器61の各部を制御する。
一方、上位時系列予測生成器62は、1個の連続時間型のRNN(Continuous Time RNN:以下、CTRNNという)81により構成される。
上位時系列予測生成器62のCTRNN81は、下位時系列生成器61のRNN71−1乃至71−Nが、生成時にどれくらいの予測誤差を発生させるかを推定(予測)して出力する。
即ち、CTRNN81は、RNN71−1乃至71−Nの予測誤差の時系列データerrorL[N]を教師データとして用いて学習し、その学習した結果に基づいて、RNN71−1乃至71−Nの推定予測誤差errorPredH[N]={errorPredH1,errorPredH2,・・・,errorPredHN}を生成し、出力する。ここで、時刻tにおける推定予測誤差errorPredH[N]を、errorPredHt[N]={errorPredHt 1,errorPredHt 2,・・・,errorPredHt N}とする。
また、CTRNN81には、行動シーケンスA乃至Bのいずれの推定予測誤差errorPredH[N]を出力するかを切替えるタスク切替信号としてのタスクIDが与えられる。
ゲート信号変換部63は、ソフトマックス(softmax)関数を用いて、時刻tにおける推定予測誤差errorPredHt[N]を、ゲート信号gatet[N]={gt 1,gt 2,・・・,gt N}に変換し、変換した結果をゲート72−1乃至72−Nに出力する。
時刻tにおけるゲート72−nに対するゲート信号gt nは、次式(2)で表される。
式(2)によれば、予測誤差の小さいものは大きい値に、予測誤差の大きいものは小さい値となるような非線形の変換が施される。その結果、予測誤差の小さいものほどゲートがより大きく開き、予測誤差の大きいものほどゲートがより小さく開くような制御が、下位時系列生成器61のゲート72−1乃至72−Nにおいて行われることになる。
以上のように構成される情報処理装置51では、上位時系列予測生成器62が、下位時系列生成器61のRNN71−1乃至71−Nが生成時に発生させる予測誤差の推定値である推定予測誤差errorPredH[N]を出力し、この推定予測誤差errorPredH[N]が、ゲート72−1乃至72−Nの開閉状態を制御するゲート信号gate[N]に変換される。そして、上述の(1)式で表される、開閉状態が制御されたゲート72−1乃至72−Nから出力されるRNN71−1乃至71−Nの出力信号sm1(t+1)乃至smN(t+1)の総和が、時刻t+1のセンサモータ信号sm(t+1)として、ヒューマノイドロボットのセンサおよびモータに供給される。
なお、上位時系列予測生成器62は、上位時系列予測生成器62の出力である推定予測誤差errorPredH[N]が、後段のゲート信号変換部63においてゲート信号gate[N]に変換されるから、時刻tにおいて、どのゲート72−1乃至72−Nを(大きく)開放するかを予測しているとも言える。
図4は、RNN71−nの詳細な構成例を示している。
RNN71−nは、図4に示されるように、入力層101、中間層(隠れ層)102、および出力層103により構成されており、入力層101は所定数のノード111を有し、中間層(隠れ層)102は、所定数のノード112を有し、出力層103は、所定数のノード113を有している。
入力層101のノード111には、時刻tにおけるセンサモータ信号sm(t)と、時刻tの1つ前の時刻t−1に出力層103の一部のノード113から出力され、RNN71−nの内部状態を表すコンテキストc(t)としてフィードバックされたデータが、入力される。
中間層102のノード112は、入力層101のノード111から入力されたデータと、予め学習によって求められたノード111との間の重み係数とを積和する重み付け加算処理を行い、その演算結果を出力層103のノード113に出力する。
出力層103を構成するノード113は、中間層102のノード112から入力されたデータと、予め学習によって求められたノード112との間の重み係数とを積和する重み付け加算処理の演算を行う。出力層103を構成する一部のノード113は、演算結果を、時刻t+1のセンサモータ信号smn(t+1)として出力する。また、出力層103を構成するその他の一部のノード113は、演算結果を、時刻t+1のコンテキストc(t+1)として、入力層101のノード111にフィードバックする。
以上のように、RNN71−nは、予め学習によって求められたノード間の重み係数を用いた重み付け加算処理により、入力された時刻tのセンサモータ信号sm(t)に対して、時刻t+1のセンサモータ信号smn(t+1)を予測して出力する。
なお、ノード間の重み係数を求める学習では、BPTT(Back Propagation Through Time)法が採用される。BPTT法は、コンテキストループを持つRNNの学習アルゴリズムであり、時間的な信号伝播の様子を空間的に展開することで、通常の階層型ニューラルネットワークにおけるバックプロパゲーション(BP)法を適用する手法である。次に後述するCTRNN81において重み係数を求める場合も同様である。
図5は、CTRNN81として採用されるCTRNNの詳細な構成例を示している。
図5のCTRNN141は、入力層151、中間層(隠れ層)152、出力層153、並びに演算部154および155により構成されている。
入力層151は、入力ノード160−i(i=1,・・・,I)、パラメータノード161−r(r=1,・・・,R)、およびコンテキスト入力ノード162−k(k=1,・・・,K)を有しており、中間層152は、隠れノード163−j(j=1,・・・,J)を有している。また、出力層153は、出力ノード164−i(i=1,・・・,I)と、コンテキスト出力ノード165−k(k=1,・・・,K)を有している。
なお、入力ノード160−i、パラメータノード161−r、コンテキスト入力ノード162−k、隠れノード163−j、出力ノード164−i、およびコンテキスト出力ノード165−kの各ノードを区別する必要がない場合には、単に、入力ノード160、パラメータノード161、コンテキスト入力ノード162、隠れノード163、出力ノード164、およびコンテキスト出力ノード165という。
CTRNN141では、そこに入力される時刻tの状態ベクトルxu(t)に対して、時刻t+1の状態ベクトルxu(t+1)を予測して、出力することが学習される。CTRNN141は、ネットワークの内部状態を表すコンテキストループと呼ばれる回帰ループをもち、その内部状態に基づく処理が行われることで対象となる時系列データの時間発展法則を学習することができる。
CTRNN141に供給される時刻tの状態ベクトルxu(t)は、入力ノード160に入力される。パラメータノード161には、パラメータtsdatauが入力される。パラメータtsdatauは、CTRNN141に供給される状態ベクトルxu(t)の種類(時系列データのパターン)を識別するデータであり、CTRNN81では、行動シーケンスを識別するデータとなる。パタメータtsdatauは固定値であるが、継続的に同一の値が入力されていると考えることができるので、時刻tにおいてパラメータノード161に入力されるデータ(ベクトル)をパラメータtsdatau(t)とする。
入力ノード160−iには、時刻tの状態ベクトルxu(t)を構成するi番目の要素であるデータxu i(t)が入力される。また、パラメータノード161−rには、時刻tのパラメータtsdatau(t)を構成するr番目の要素であるデータtsdatau r(t)が入力される。さらに、コンテキスト入力ノード162−kには、時刻tのCTRNN141の内部状態ベクトルcu(t)を構成するk番目の要素であるデータcu k(t)が入力される。
入力ノード160−i、パラメータノード161−r、およびコンテキスト入力ノード162−kのそれぞれにデータxu i(t)、tsdatau r(t)、およびcu k(t)が入力された場合に、入力ノード160−i、パラメータノード161−r、およびコンテキスト入力ノード162−kが出力するデータxi(t)、tsdatar(t)、およびck(t)は、それぞれ、次の式(3)、式(4)、および式(5)によって表される。
式(3)乃至式(5)における関数fは、シグモイド関数などの微分可能な連続関数であり、式(3)乃至式(5)は、入力ノード160−i、パラメータノード161−r、およびコンテキスト入力ノード162−kのそれぞれに入力されたデータxu i(t)、tsdatau r(t)、およびデータcu k(t)が、関数fにより活性化され、データxi(t)、tsdatar(t)、およびデータck(t)として入力ノード160−i、パラメータノード161−r、およびコンテキスト入力ノード162−kから出力されることを表している。なお、データxu i(t)、tsdatau r(t)、およびcu k(t)の上付きのuは、活性化される前のノードの内部状態を表す(他のノードについても同様)。
隠れノード163−jに入力されるデータhu j(t)は、入力ノード160−iと隠れノード163−jの結合の重みを表す重み係数wh ij、パラメータノード161−rと隠れノード163−jの結合の重みを表す重み係数wh jr、およびコンテキスト入力ノード162−kと隠れノード163−jの結合の重みを表す重み係数wh jkとを用いて、式(6)で表すことができ、隠れノード163−jが出力するデータhj(t)は、式(7)で表すことができる。
なお、式(6)の右辺の第1項のΣは、i=1乃至Iの全てについて加算することを表し、第2項のΣは、r=1乃至Rの全てについて加算することを表し、第3項のΣは、k=1乃至Kの全てについて加算することを表す。
同様にして、出力ノード164−iに入力されるデータyu i(t)と、出力ノード164−iが出力するデータyi(t)、および、コンテキスト出力ノード165−kに入力されるデータou k(t)と、コンテキスト出力ノード165−kが出力するデータok(t)は、次式で表すことができる。
式(8)のwy ijは、隠れノード163−jと出力ノード164−iの結合の重みを表す重み係数であり、Σは、j=1乃至Jの全てについて加算することを表す。また、式(10)のwo jkは、隠れノード163−jとコンテキスト出力ノード165−kの結合の重みを表す重み係数であり、Σは、j=1乃至Jの全てについて加算することを表す。
演算部154は、出力ノード164−iが出力するデータyi(t)から、時刻tのデータxu i(t)と時刻t+1のデータxu i(t+1)との差分△xu i(t+1)を式(12)により求め、さらに、式(13)により、時刻t+1のデータxu i(t+1)を計算して、出力する。
ここで、αおよびτは、任意の係数を表す。
したがって、CTRNN141に時刻tのデータxu i(t)が入力されると、時刻t+1のデータxu i(t+1)がCTRNN141の演算部154から出力される。また、演算部154から出力された時刻t+1のデータxu i(t+1)は、入力ノード160−iにも供給される(フィードバックされる)。
演算部155は、コンテキスト出力ノード165−kが出力するデータok(t)から、時刻tのデータcu k(t)と、時刻t+1のデータcu k(t+1)との差分△cu k(t+1)を式(14)により求め、さらに、式(15)により、時刻t+1のデータcu k(t+1)を計算して、出力する。
演算部155から出力された時刻t+1のデータcu k(t+1)は、コンテキスト入力ノード162−kにフィードバックされる。
式(15)は、ネットワークの現在の内部状態を表す内部状態ベクトルcu(t)に、コンテキスト出力ノード165−kの出力であるデータok(t)を係数αで重み付けて加算する(所定の割合で足しこむ)ことによって次の時刻t+1のネットワークの内部状態ベクトルcu(t+1)とすることを意味しており、その意味で、図5のCTRNN141は、連続時間型のRNNであると言うことができる。
以上のように、CTRNN141では、時刻tのデータxu(t)およびデータcu(t)が入力されると、時刻t+1のデータxu(t+1)およびデータcu(t+1)を生成して出力する処理を逐次的に行うので、重み係数wh ij,wh ir,wh jk,wy ij、およびwo jkが学習により求められているとすると、入力ノード160に入力する入力データxu(t)の初期値xu(t0)=X0、パラメータノード161に入力するパラメータtsdatau、コンテキスト入力ノード162に入力するコンテキスト入力データcu(t)の初期値cu(t0)=C0を与えることにより、時系列データを生成することができる。
図5に示したCRTNN141を、図3のCRTNN81として採用し、CRTNN141の入力ノード160に対してerrorL[N]が与えられ、パラメータノード161に対してタスクIDが与えられる。従って、図5の入力ノード160の個数Iは、下位時系列予測生成器61のRNN71の個数Nと一致する。なお、コンテキスト入力ノード162に入力するコンテキスト入力データcu(t)の初期値cu(t0)=C0には、例えば、ランダムな所定の値が与えられる。
次に、図6のフローチャートを参照して、下位時系列予測生成器61における、行動シーケンスに対応するセンサモータ信号の時系列データの学習処理について説明する。
初めに、ステップS1において、下位時系列予測生成器61の制御回路76は、教師データとして供給された所定の時刻の入力データを読み込む。ここでの入力データは、上述したようにセンサモータ信号であり、例えば、時刻tのセンサモータ信号sm(t)が読み込まれたものとする。読み込まれた時刻tのセンサモータ信号sm(t)は、制御回路76により、下位時系列予測生成器61を構成するN個のRNN71−1乃至71−Nそれぞれに供給される。
ステップS2において、下位時系列予測生成器61のRNN71−n(n=1,2,・・・,N)は、時刻tのセンサモータ信号sm(t)に対して、時刻t+1のセンサモータ信号smn(t+1)を算出する。
また、ステップS2において、演算回路74は、RNN71−nの予測誤差errorLt+1 nを算出する。具体的には、演算回路74は、予測誤差errorLt+1 nとして、式(16)によって表される、時刻t+1から過去L時間ステップ分のセンサモータ信号に対する予測誤差を算出する。
式(16)において、smn,i'(T)は、時刻Tのセンサモータ信号sm(T)を出力するRNN71−nの出力層103のノード113(図4)がI’個あるうちのi’番目のノード113が出力するセンサモータ信号を表し、sm* n,i'(T)は、それに対する教師データとしてのセンサモータ信号を表す。
式(16)によれば、時刻T=t+1−Lからt+1までの、RNN71−nの出力層103のi’番目のノード113のセンサモータ信号smn,i'(T)と教師データsm* n,i'(T)との誤差の総和が、時刻t+1におけるRNN71−nの予測誤差errorLt+1 nとされる。なお、過去のセンサモータ信号がL時間ステップ分ない場合には、存在する時間ステップ分のデータのみで予測誤差errorLt+1 nが求められる。
ステップS3において、演算回路74は、時刻t+1におけるRNN71−nの予測誤差errorLt+1 nをメモリ75に供給する。これにより、メモリ75には、RNN71−1乃至71−Nのn個の予測誤差errorLt+1 1乃至errorLt+1 Nが供給され、メモリ75は、予測誤差errorLt+1[N]={errorLt+1 1,errorLt+1 2,・・・,errorLt+1 N}を記憶する。また、後述するステップS7の処理NOと判定された場合、ステップS3の処理が所定時間ステップだけ繰り返されるので、メモリ75には、教師データに対する予測誤差の時系列データerrorL[N]が記憶される。
ステップS4において、制御回路76は、予測誤差errorLt+1 nに応じたRNN71−nの学習重みγnを算出する。具体的には、制御回路76は、ソフトマックス関数(softmax関数)を用いた式(17)により、学習重みγnを算出する。
ステップS5において、制御回路76は、BPTT(Back Propagation Through Time)法によりRNN71−nの重み係数wab,nを更新する。ここで、重み係数wab,nは、RNN71−nの入力層101のノード111と中間層102のノード112との重み係数、または、RNN71−nの中間層102のノード112と出力層102のノード113との重み係数を表す。
RNN71−nの重み係数wab,nの更新では、ステップS4で算出された学習重みγnに応じてRNN71−nの重み係数wab,nが算出される。具体的には、次式(18)および(19)により、BPTT法の繰り返し計算におけるs回目の重み係数wab,n(s)から、s+1回目の重み係数wab,n(s+1)を求めることができる。
式(18)において、η1は学習係数を表し、α1は慣性係数を表す。なお、式(18)において、s=1の場合の△wab,n(s)は、0とする。
ステップS6において、制御回路76は、RNN71−1乃至71−Nの利用頻度FREQ1乃至FREQNをメモリ75に供給する。メモリ75は、供給されたRNN71−1乃至71−Nの利用頻度FREQ1乃至FREQNを記憶する。上述したステップS5において学習重みγnが大きいほど、そのRNN71−nの重み係数wab,nが更新され、RNN71−nが利用されたことになる。従って、制御回路76は、例えば、学習重みγnが所定の値以上であるRNN71−nの利用頻度FREQnをカウントアップさせる。この利用頻度FREQ1乃至FREQNは、図10を参照して後述する追加学習で使用される。
ステップS7において、下位時系列予測生成器61の制御回路76は、入力データの供給が終了したかを判定する。
ステップS7で、入力データの供給が終了していないと判定された場合、即ち、ステップS1で供給された入力データの次の時刻の入力データが供給された場合、ステップS1に戻り、それ以降の処理が繰り返される。
一方、ステップS7で、入力データの供給が終了したと判定された場合、学習処理は終了する。
次に、上位時系列予測生成器62のCRTNN81における予測誤差の時系列データの学習について説明する。
情報処理装置51を搭載したヒューマノイドロボットに、複数の行動シーケンスを学習させる場合、学習の結果得られた入力層151と中間層152の各ノード間の重み係数wh ij,wh jr、およびwh jkと、中間層152と出力層153の各ノード間の重み係数wy ijおよびwo jkが、すべての行動シーケンスに対応可能な値である必要がある。
そこで、学習処理では、複数の行動シーケンスに対応する時系列データの学習が同時に実行される。即ち、学習処理では、学習させる行動シーケンスの数と同数のCTRNN141(図5)が用意され、行動シーケンスごとに重み係数wh ij,wh jr,wh jk,wy ij、およびwo jkをそれぞれ求め、それらの平均値を1つの重み係数wh ij,wh jr,wh jk,wy ij、およびwo jkとする処理を繰り返し実行することによって、生成処理で利用されるCTRNN81の重み係数wh ij,wh jr,wh jk,wy ij、およびwo jkが求められる。
図7は、Q個の行動シーケンスに対応するQ個の予測誤差の時系列データを学習する、上位時系列予測生成器62の学習処理のフローチャートである。なお、本実施の形態では、学習する行動シーケンスは、行動シーケンスA,B、およびCの3つであるので、Q=3となる。
初めに、ステップS31において、上位時系列予測生成器62は、教師データとしての、Q個の予測誤差の時系列データerrorL[N]を下位時系列予測生成器61のメモリ75から読み込む。そして、上位時系列予測生成器62は、読み込んだQ個の時系列データerrorL[N]を、Q個のCRTNN141にそれぞれ供給する。
ステップS32において、上位時系列予測生成器62は、Q個の行動シーケンスそれぞれを識別するタスクIDを読み込む。本実施の形態では、3つの行動シーケンスA,B、およびCそれぞれを識別するタスクIDを読み込む。そして、上位時系列予測生成器62は、行動シーケンスAの教師データを供給したCRT141には、行動シーケンスAを識別するタスクIDを供給し、行動シーケンスBの教師データを供給したCRT141には、行動シーケンスBを識別するタスクIDを供給し、行動シーケンスCの教師データを供給したCRT141には、行動シーケンスCを識別するタスクIDを供給する。
ステップS33において、上位時系列予測生成器62は、学習回数を表す変数sに1を代入する。
ステップS34において、上位時系列予測生成器62は、Q個の時系列データにそれぞれ対応するCTRNN141において、BPTT法を用いて、入力層151と中間層152の各ノード間の重み係数wh ij(s)、wh jr(s)、およびwh jk(s)の誤差量δwh ij、δwh jr、およびδwh jkと、中間層152と出力層153の各ノード間の重み係数wy ij(s)およびwo jk(s)の誤差量δwy ijおよびδwo jkを計算する。ここで、q(=1,・・・,Q)番目の時系列データが入力されたCTRNN141において、BPTT法を用いて得られた誤差量δwh ij,δwh jr,δwh jk,δwy ij、およびδwo jkを、それぞれ、誤差量δwh ij,q,δwh jr,q,δwh jk,q,δwy ij,q、およびδwo jk,qと表す。
なお、上位時系列予測生成器62は、ステップS34のBPTT法を用いた計算において、時刻t+1のコンテキスト入力ノード162−kのデータcu k(t+1)の誤差量δcu k(t+1)を、時刻tのコンテキスト出力ノード165−kのデータok(t)の誤差量δok(t)に逆伝播する際、任意の正の係数mで割ることにより、コンテキストデータの時定数の調整を行う。
即ち、上位時系列予測生成器62は、時刻tのコンテキスト出力ノード165−kのデータok(t)の誤差量δok(t)を、時刻t+1のコンテキスト入力ノード162−kのデータcu k(t+1)の誤差量δcu k(t+1)を用いた式(20)によって求める。
BPTT法において式(20)を採用することにより、CTRNN141の内部状態を表すコンテキストデータの1時間ステップ先の影響度を調整することができる。
ステップS35において、上位時系列予測生成器62は、入力層151と中間層152の各ノード間の重み係数wh ij、wh jr、およびwh jkと、中間層152と出力層153の各ノード間の重み係数wy ijおよびwo jkのそれぞれを、Q個の時系列データで平均化して、更新する。
即ち、上位時系列予測生成器62は、式(21)乃至式(30)により、入力層151と中間層152の各ノード間の重み係数wh ij(s+1)、wh jr(s+1)、およびwh jk(s+1)と、中間層152と出力層153の各ノード間の重み係数wy ij(s+1)およびwo jk(s+1)を求める。
ここで、η2は学習係数を表し、α2は慣性係数を表す。なお、式(21)、式(23)、式(25)、式(27)、および式(29)において、s=1の場合の△wh ij(s),△wh jr(s),△wh jk(s),△wy ij(s)、および△wo jk(s)は、0とする。
ステップS36において、上位時系列予測生成器62は、変数sが所定の学習回数以下であるか否かを判定する。ここで設定される所定の学習回数は、学習誤差が十分に小さくなると認められる学習の回数である。
ステップS36で、変数sが所定の学習回数以下であると判定された場合、即ち、学習誤差が十分に小さくなると認められるだけの回数の学習をまだ行っていない場合、ステップS37において、上位時系列予測生成器62は、変数sを1だけインクリメントして、ステップS34に処理を戻す。これにより、ステップS34乃至S36の処理が繰り返される。一方、ステップS36で、変数sが所定の学習回数より大きいと判定された場合、学習処理は終了する。
なお、ステップS36では、学習回数によって処理の終了を判定する以外に、学習誤差が所定の基準値以内となったか否かにより、処理の終了を判定してもよい。
以上のように、上位時系列予測生成器62の学習処理では、行動シーケンスごとに重み係数wh ij,wh jr,wh jk,wy ij、およびwo jkをそれぞれ求め、それらの平均値を求める処理を繰り返し実行することによって、生成処理で利用されるCTRNN81の重み係数wh ij,wh jr,wh jk,wy ij、およびwo jkが求められる。
なお、上述した学習処理では、各行動シーケンスの重み係数wh ij,wh jr,wh jk,wy ij、およびwo jkの平均値を求める処理を毎回実行するようにしたが、その処理は、所定回数ごとに実行するようにしてもよい。例えば、学習処理を終了する所定の学習回数が10000回である場合に、10回の学習回数ごとに各行動シーケンスの重み係数wh ij,wh jr,wh jk,wy ij、およびwo jkの平均値を求める処理を実行するようにしてもよい。
次に、図8のフローチャートを参照して、図6および図7を参照して説明した学習処理によって求められた重み係数が設定されたRNN71−1乃至71−NおよびCTRNN81を含む図3の情報処理装置51による、時系列データを生成する生成処理について説明する。
初めに、ステップS51において、上位時系列予測生成器62のCTRNN81は、入力データの初期値を読み込む。ここでの入力データの初期値とは、入力ノード160とコンテキスト入力ノード162に供給する初期値であり、そこには、例えば、ランダムな所定の値が供給される。
ステップS52において、上位時系列予測生成器62のCTRNN81は、行動シーケンスを識別するタスクIDを読み込む。読み込まれたタスクIDは、パラメータノード161に供給される。
ステップS53において、上位時系列予測生成器62のCTRNN81は、所定の時刻におけるRNN71−1乃至71−Nの推定予測誤差errorPredH[N]の生成処理を実行する。この生成処理の詳細は、図9を参照して後述するが、CTRNN81は、例えば、時刻t+1における推定予測誤差errorPredHt+1[N]を生成し、ゲート信号変換部63に出力する。
ステップS54において、ゲート信号変換部63は、上述した式(2)により、供給された推定予測誤差errorPredHt+1[N]をゲート信号gatet+1[N]に変換し、変換した結果をゲート72−1乃至72−Nに出力する。
ステップS55において、時刻tのセンサモータ信号sm(t)が下位時系列予測生成器61のRNN71−nに入力され、RNN71−nは、入力された時刻tのセンサモータ信号sm(t)に対して、時刻t+1のセンサモータ信号smn(t+1)を生成し、ゲート72−nに出力する。
ステップS56において、ゲート72−nは、ゲート信号変換部63から供給されたゲート信号gatet+1[N]のうちのゲート信号gt+1 nに応じたセンサモータ信号smn(t+1)の出力を行う。即ち、ゲート72−nにおいては、ゲート信号gt+1 nが大きいときにはゲートが大きく開かれ、ゲート信号gt+1 nが小さいときにはゲートを小さく開かれる。合成回路73には、ゲート72−nのゲートの開き具合に応じたセンサモータsmn(t+1)が供給される。
ステップS57において、合成回路73は、式(1)によりゲート72−1乃至72−Nそれぞれからの出力を合成し、その合成の結果を、時刻t+1のセンサモータ信号sm(t+1)として出力する。
ステップS58において、情報処理装置51は、時系列データの生成を終了するかを判定する。ステップS58で、時系列データの生成を終了しないと判定された場合、処理はステップS53に戻り、それ以降の処理が繰り返される。その結果、上位時系列予測生成器62では、前回のステップS53で処理した時刻t+1の次の時刻t+2おける推定予測誤差errorPredHt+2[N]が生成され、下位時系列予測生成器61では、時刻t+1のセンサモータ信号sm(t+1)に対するセンサモータsm(t+2)が生成される。
一方、ステップS58で、例えば、所定の時間ステップ数に到達するなどして、時系列データの生成を終了すると判定された場合、生成処理は終了する。
次に、図9のフローチャートを参照して、図8のステップS53における、推定予測誤差errorPredH[N]の生成処理について説明する。図9では、時刻t+1における推定予測誤差errorPredHt+1[N]を生成する例について説明する。
初めに、ステップS71において、入力ノード161−iは、データxi(t)を式(3)により計算し、パラメータノード161−rは、データtsdatar(t)を式(4)により計算し、コンテキスト入力ノード162−kは、データck(t)を式(5)により計算して、それぞれ出力する。
ステップS72において、隠れノード163−jは、式(6)を計算することによりデータhu j(t)を得て、データhj(t)を式(7)により計算して出力する。
ステップS73において、出力ノード164−iは、式(8)を計算することによりデータyu i(t)を得て、データyi(t)を式(9)により計算して出力する。
ステップS74において、コンテキスト出力ノード165−kは、式(10)を計算することによりデータou k(t)を得て、データok(t)を式(11)により計算して出力する。
ステップS75において、演算部154は、差分△xu i(t+1)を式(12)により求め、時刻t+1のデータxu i(t+1)を式(13)により計算し、ゲート信号変換部63に出力する。
ステップS76において、演算部155は、差分△cu k(t+1)を式(14)により求め、時刻t+1のデータcu k(t+1)を式(15)により計算する。また、演算部155は、式(15)による計算の結果得られた時刻t+1のデータcu k(t+1)を、コンテキスト入力ノード162−kにフィードバックする。
ステップS77において、演算部154は、式(13)による計算の結果得られた時刻t+1のデータxu i(t+1)を、入力ノード161−iにフィードバックする。そして、処理は図8のステップS53に戻り、ステップS54に進む。
以上のように、図8の生成処理によれば、上位時系列予測生成器62が、下位時系列生成器61のRNN71−1乃至71−Nが生成時に発生させる予測誤差の推定値である推定予測誤差errorPredH[N]を出力し、この推定予測誤差errorPredH[N]が、ゲート72−1乃至72−Nの開閉状態を制御するゲート信号gate[N]に変換される。そして、上述の(1)式で表される、開閉状態が制御されたゲート72−1乃至72−Nから出力されたRNN71−1乃至71−Nの出力信号sm1(t+1)乃至smN(t+1)の総和が、時刻t+1のセンサモータ信号sm(t+1)として、ヒューマノイドロボットのセンサおよびモータに供給され、タスクIDで指定された行動シーケンスが実行される。
次に、情報処理装置51に、これまで学習させた行動シーケンスA,B、およびC以外の行動シーケンスを追加して学習させる追加学習について説明する。以下では、ホームポジションにいるロボットが、物体を両手で掴んで所定の高さだけ持ち上げ、物体が元々置かれていたテーブルより一段高い前方のテーブルに置いて、ホームポジションに戻る動作となる行動シーケンスDを追加学習させる。
下位時系列予測生成器61のRNN71−1乃至71−Nには、上述したように、それぞれ異なる行動部品が学習されている。また、一般的には、RNN71の個数であるN個は行動部品の数よりも十分大きく用意されるため、RNN71−1乃至71−Nの中には、行動部品が学習されていないRNN71(以下、適宜、未使用のRNN71とも称する)も存在する。
これまで学習させた行動シーケンスA,B、およびCに追加して、新たな行動シーケンスDを学習させる場合、既に行動部品が学習されているRNN71は、そのままにして、未使用のRNN71に、追加の行動シーケンスDに含まれる新たな行動部品を学習させるのが効率が良い。この場合、追加の行動シーケンスDの学習によってこれまで学習させたRNN71を壊す(RNN71の重み係数を変更する)ことがなく、新たな行動シーケンスDに、これまで学習させた行動部品が含まれていた場合、その行動部品を共通に利用することもできる。
そこで、下位時系列予測生成器61は、行動シーケンスDを追加学習する際、既に行動部品が学習されているRNN71には、その重み係数を変更しにくくするような抵抗を与える。
既に行動部品が学習されているRNN71とは、即ち、図6のステップS6の処理により、メモリ75に記憶されている利用頻度FREQnが大きいRNN71−nである。
従って、下位時系列予測生成器61の制御回路76は、図10に示すような、利用頻度FREQnが少ないRNN71−nほど重み係数を更新し易く、利用頻度FREQnが大きいRNN71−nは、重み係数を更新しにくい、換言すれば、利用頻度FREQnに負の相関を有する関数h1によって学習重みμnを決定する。図10に示す関数h1が表す曲線は、利用頻度FREQnが小さいほど傾きが大きく、利用頻度FREQnが大きいほど傾きが小さくなる曲線である。なお、図10では、関数h1が非線形な曲線として示されているが、負の相関を有する関数であれば、線形な直線であっても勿論よい。
図11のフローチャートを参照して、情報処理装置51の追加学習処理について説明する。
初めに、ステップS101において、下位時系列予測生成器61の制御回路76は、メモリ75に記憶されているRNN71−1乃至71−Nの利用頻度FREQ1乃至FREQNを読み出す。
ステップS102において、下位時系列予測生成器61の制御回路76は、図10に示した関数h1を用いて、RNN71−nの利用頻度FREQnに応じた学習重みμnを決定する。決定された学習重みμnは、RNN71−nに供給される。
ステップS103において、情報処理装置51は、行動シーケンスDに対応するセンサモータ信号の時系列データを学習する、図6の下位時系列予測生成器61の学習処理、即ち、ステップS1乃至S7の処理を実行する。但し、ステップS103の処理での図6のステップS5においては、式(18)に代えて、学習重みμnが含まれる次式(31)を採用する。
ステップS103の処理後、行動シーケンスDの予測誤差の時系列データerrorL[N]がメモリ75に記憶される。
ステップS104において、情報処理装置51は、行動シーケンスA,B、およびCに、追加された行動シーケンスDの予測誤差の時系列データerrorL[N]をメモリ75から読み出し、その4個の予測誤差の時系列データについて、図7の上位時系列予測生成器62の学習処理、即ち、ステップS31乃至S37の処理を実行する。そして、追加学習処理は終了する。
以上のように、情報処理装置51の追加学習処理では、これまでの学習で利用頻度FREQnが大きいRNN71−nについて、その重み係数を変更しにくくするような学習重みμnを与えて、重み係数を学習する。これにより、追加の行動シーケンスDの学習によってこれまで学習させたRNN71の重み係数をできるだけ変更せずに、追加される行動シーケンスを効率的に学習することができる。
次に、本発明を適用した情報処理装置のその他の構成例について説明する。
図12は、情報処理装置51のその他の構成例を示している。図12において、図3の情報処理装置51と対応する部分については同一の符号を付してあり、その説明は省略する。
図12の情報処理装置51は、時間フィルタ部201と非線形フィルタ部202が新たに設けられている点を除いては、図3の情報処理装置51と同様に構成されている。
時間フィルタ部201には、下位時系列予測生成器61が出力する予測誤差の時系列データerrorL[N]が入力される。時間フィルタ部201と非線形フィルタ部202は、そこに入力される時系列データに所定のフィルタ処理を施し、処理後の時系列データを後段に出力する。非線形フィルタ部202は、処理後の時系列データを、予測誤差の時系列データerrorL’[N]として、上位時系列予測生成器62に供給する。
上位時系列予測生成器62は、予測誤差の時系列データを学習するが、ある程度長い時間ステップでのRNN71−1乃至71−Nの予測誤差の大まかな変動が分かればよく、短時間での微小な変動はあまり関係しない。
時間フィルタ部201は、下位時系列予測生成器61が出力する予測誤差の時系列データerrorL[N]に対して、時間フィルタ処理を施す。即ち、時間フィルタ部201は、下位時系列予測生成器61が出力する予測誤差の時系列データerrorL[N]に、いわゆるローパスフィルタ処理を施し、処理後の時系列データを非線形フィルタ部202に供給する。例えば、ローパスフィルタ処理としては、所定の時間ステップ数の移動平均などを用いることができる。これにより、短時間での微小な変動が抑制された、RNN71−1乃至71−Nの予測誤差の時系列データを上位時系列予測生成器62に供給することができる。
なお、ある程度長い時間ステップでのRNN71−1乃至71−Nの予測誤差の大まかな変動を上位時系列予測生成器62が学習するためには、上位時系列予測生成器62のCTRNN81が時系列データをサンプリングするときのサンプリングレートを、下位時系列予測生成器61のRNN71のサンプリングレートよりも大きくすることによっても実現可能である。例えば、上位時系列予測生成器62は、下位時系列予測生成器61のRNN71の時系列データを所定の時間間隔で間引いた時系列データを学習することで、RNN71−1乃至71−Nの予測誤差の大まかな変動を学習することができる。また、式(13)および式(15)の係数τを調整することにより、時間サンプリングを調整することができる。この場合、係数τが大きいほど、RNN71−1乃至71−Nの予測誤差の大まかな変動を学習することができる。
非線形フィルタ部202は、図13に示すような、入力される予測誤差errorLnが小さい範囲では傾きが大きく、入力される予測誤差errorLnが大きくなるほど傾きが小さくなる非線形の曲線で表される関数h2によって、入力される予測誤差errorLnを変換する。非線形フィルタ部202は、変換処理後の予測誤差errorL’[N]を上位時系列予測生成器62に供給する。
情報処理装置51の生成処理では、図8を参照して説明したように、予測誤差errorL[N]の学習によって得られる推定予測誤差errorPredHnがより小さいRNN72−nほどゲートが大きく開くように制御される。反対に、推定予測誤差errorPredHnが大きいRNN72−nが出力するセンサモータ信号smn(t+1)は、ほとんど利用されない。
従って、推定予測誤差errorPredHnがより小さいRNN72−nほど、下位時系列予測生成器61が出力するセンサモータ信号sm(t+1)への寄与率は高く、重要であると言うことができる。
例えば、RNN72−1の予測誤差errorL1とRNN72−nの予測誤差errorLnが、0乃至1の間の小さい値(例えば、0.3など)で拮抗していた場合と、0乃至1の間の大きい値(例えば、0.9など)で拮抗していた場合とを考えると、RNN72−1の予測誤差errorL1とRNN72−nの予測誤差errorLnが0乃至1の間の小さい値で拮抗していた場合、生成時に、RNN72−1またはRNN72−nが出力するセンサモータ信号sm1(t+1)またはsmn(t+1)の、下位時系列予測生成器61が出力するセンサモータ信号sm(t+1)への寄与率は高いので、RNN72−1とRNN72−nのセンサモータ信号のどちらが優位であるかは重要になってくる。
一方、RNN72−1の予測誤差errorL1とRNN72−nの予測誤差errorLnが0乃至1の間の大きい値で拮抗していた場合、RNN72−1とRNN72−n以外に、より小さい予測誤差を有するRNN72がいると考えられ、生成時に、RNN72−1またはRNN72−nが出力するセンサモータ信号sm1(t+1)またはsmn(t+1)が、下位時系列予測生成器61が出力するセンサモータ信号sm(t+1)に含まれる率は少ないので、RNN72−1とRNN72−nのセンサモータ信号のどちらが優位であるかは、さほど重要ではない。
非線形フィルタ部202は、関数h2によって、センサモータ信号sm(t+1)の生成に重要な予測誤差errorLの小さいRNN72どうしの優位差を大きくし、センサモータ信号sm(t+1)の生成に重要ではない予測誤差errorLの大きいRNN72どうしの優位差を小さくする処理を行う。これにより、上位時系列予測生成器62において、学習に重要なRNN71が出力した予測誤差errorLを効率的に学習することができる。
時間フィルタ部201と非線形フィルタ部202の動作は、図7を参照して説明したフローチャートのステップS31の、上位時系列予測生成器62が、教師データとしての、Q個の予測誤差の時系列データerrorL[N]を下位時系列予測生成器61のメモリ75から読み込む場合において、時間フィルタ部201と非線形フィルタ部202によって処理された後のQ個の予測誤差の時系列データerrorL’[N]を読み込む動作となる。
なお、時間フィルタ部201および非線形フィルタブ202は、必ずしも両方が同時に設けられる必要はなく、いずれか一方のみでもよい。
ところで、図3および図12に示した情報処理装置51では、複数のRNN71−1乃至71−nを有する下位時系列生成器61の構成として、複数のRNNの出力をゲート機構により統合して最終的な出力を決定するMixture of RNN Expertというモデルを採用したが、Mixture of RNN Expert以外の構成を採用することもできる。
Mixture of RNN Expert以外の構成としては、例えば、ベクトルパターンのカテゴリ学習に用いられる自己組織化マップ(self-organization map)(以下、SOMという)を導入し、SOMの各ノードにRNNを採用し、自己組織的に外部入力に対し適切なRNNを選択し、RNNのパラメータ学習を行うRNN-SOMなどを採用することができる。なお、SOMについては、例えば、「T.コホネン、「自己組織化マップ」、シュプリンガー・フェアラーク東京」などにその詳細が記載されている。
図3および図12に示したMixture of RNN Expertのモデルでは、ある新しい学習サンプル(即ち、時系列データ)に対して、全てのRNNが学習エラー(予測誤差)を算出し、その学習エラーの度合いに応じて各RNNが学習サンプルを学習する。
これに対して、RNN-SOMでは、ある新しい学習サンプル(即ち、時系列データ)に対して、全てのRNNが学習エラー(予測誤差)を算出し、その中で、最も学習エラーの小さいRNNが勝者に決定される。勝者のRNNが決定された後は、各RNNの学習エラーは関係なく、勝者のRNNと距離が近いRNNが、勝者との近傍度合いに応じて学習サンプルを学習するという、各RNNに対して自分以外のRNNとの距離空間の概念が導入されたものである。
図14は、下位時系列生成器61の構成としてRNN-SOMを採用した場合の、行動シーケンスに対応するセンサモータ信号の時系列データの学習処理のフローチャートである。
図14に示される処理は、ステップS124の処理が、図6のステップS4の処理と異なる以外は、図6に示した学習処理と同様である。
即ち、図14のステップS121乃至S123およびS125乃至S127は、図6のステップS1乃至S3およびS5乃至S7と、それぞれ同様である。
ステップS124では、下位時系列予測生成器61は、予測誤差errorLt+1が最小のRNN71を勝者とし、図15に示す近傍関数h3に基づいて、勝者からの距離(DISTANCEn)に応じた学習重みγnを算出する。
近傍関数h3は、図15に示されるように、勝者からの距離(DISTANCEn)が近いRNN71−nほど大きい学習重みγnが割り当てられる。
次に、図16乃至図19を参照して、上述した情報処理装置51に、ヒューマノイドロボットが行う行動シーケンスを学習および生成させた実験結果について説明する。
なお、この実験では、下位時系列予測生成器61が出力する予測誤差の時系列データerrorL[N]に対して時間フィルタと非線形フィルタを施した、図12の情報処理装置51による例を示している。また、下位時系列生成器61のRNN71の個数Nは、16(N=16)となっている。
図16は、行動シーケンスA,B、およびCを学習後、情報処理装置51が行動シーケンスAを生成した結果を示している。
図16Aは、生成処理時の、上位時系列予測生成器62のCTRNN81としてのCTRNN141のコンテキスト出力ノード165の出力データを示している。
図16Bは、上位時系列予測生成器62のCTRNN81が出力する推定予測誤差errorPredH[N]を示している。
図16Cは、図16Bに示される推定予測誤差errorPredH[N]がゲート信号変換部63によって変換されたゲート信号gate[N]を示している。
図16Dは、下位時系列予測生成器61の合成回路73から出力されたセンサモータ信号sm(t)のうちのモータ信号を、図16Eは、下位時系列予測生成器61の合成回路73から出力されたセンサモータ信号sm(t)のうちのセンサ信号を、それぞれ示している。なお、図16Dおよび図16Eでは、4つのモータ信号と2つのセンサ信号のデータが図示されているが、図を見やすくするため、実際のモータ信号およびセンサ信号よりも少ない数のデータを図示している。
図16A乃至図16Eの横軸は、時間ステップ(step)を表す。また、図16A,図16D,および図16Eの縦軸は、コンテキスト出力ノード165、モータ信号、およびセンサ信号それぞれの出力値を表し、0乃至1の範囲の値である。図16Bおよび図16Cは、下位時系列予測生成器61のRNN71の番号(1乃至16)を表している。
図16BおよびCにおいては、RNN71−nに対応するerrorPredHnまたはゲート信号gt nの値とグレイレベルとが対応しており、図16Bでは、errorPredHnの値が小さい(即ち、0に近い)ほど黒く(濃く)表されており、図16Cでは、ゲート信号gt nの値が大きい(即ち、1に近い)ほど黒く(濃く)表されている。
図17は、行動シーケンスA,B、およびCを学習後、情報処理装置51が行動シーケンスBを生成した結果を、図18は、行動シーケンスCを生成した結果を、それぞれ示している。
また、図19は、行動シーケンスA,B、およびCを学習後に行動シーケンスDを追加学習させた後、情報処理装置51が行動シーケンスDを生成した結果を示している。
図17乃至図19において、図示されたデータが、行動シーケンスB乃至Dに関するものである以外は、同様である。
行動シーケンスAに対応する時系列データの生成では、図16Cを見て分かるように、シーケンスの前半では、ゲート72−14が開かれることによりRNN71−14が有効となり、その後、シーケンスの後半部分では、ゲート72−4が開かれることによりRNN71−4が有効となっている。
但し、図16Bに示すデータから図16Cに示すデータへの変換、即ち、推定予測誤差errorPredH[N]からゲート信号gate[N]への変換は、errorPredH1乃至errorPredH16のうちの最も値の小さいものが唯一の勝者となるウィナーテイクオール(Winner-take-all)の原理ではなく、上述した式(2)のソフトマックス関数を用いて行われるため、所定の時刻(時間ステップ)から、離散的にRNN71−14からRNN71−4に有効なRNN71が切替わるのではなく、RNN71−14からRNN71−4への切替が時間の経過とともに緩やかに行われている。
従って、errorPredH1乃至errorPredH16のうちの複数の値が拮抗しているような場合であっても、勝者が頻繁に交替することはなく、拮抗している状態では、そのまま拮抗している状態として出力を行うことができ、これにより、学習された時系列データを正しく生成することができる。
行動シーケンスBの生成では、図17Cを見て分かるように、RNN71−14、RNN71−2、RNN71−13、RNN71−1、RNN71−11が、その順で有効となっている。
行動シーケンスCの生成では、図18Cを見て分かるように、RNN71−2、RNN71−12、RNN71−3が、その順で有効となっている。
行動シーケンスDの生成では、図19Cを見て分かるように、RNN71−5、RNN71−15、RNN71−3、RNN71−16が、その順で有効となっている。
行動シーケンスB乃至Dのゲート72の切替においても、図16の行動シーケンスAにおける場合と同様のことが言える。
即ち、所定の時刻に推定予測誤差errorPredHnが最も大きいRNN71−nから、所定時間後に次に推定予測誤差errorPredHn'が最も大きいRNN71−n’ (n≠n’)へゲート信号gate[N]が切替わる場合、ゲート信号gnは徐々に小さくなると同時に、ゲート信号gn'は徐々に大きくなる。即ち、ゲート72−nでは、センサモータ信号smn(t+1)の出力が徐々に抑えられ、ゲート72−n’では、センサモータ信号smn'(t+1)の出力が徐々に開放される。
従って、errorPredH1乃至errorPredH16のうちの複数の値が拮抗しているような場合であっても、勝者が頻繁に交替することはなく、拮抗している状態では、そのまま拮抗している状態として出力を行うことができ、これにより、学習された時系列データを正しく生成することができる。
また、図19に示される追加学習によって学習された行動シーケンスDの生成結果では、行動シーケンスA乃至Cでは有効となっていないRNN71−5、RNN71−15、RNN71−16が有効となっており、これまでに学習した行動シーケンスA乃至Cにない行動部品については新しいRNN71が学習していることが分かる。
上述した一連の処理は、ハードウエアにより実行させることもできるし、ソフトウエアにより実行させることもできる。一連の処理をソフトウエアにより実行させる場合には、そのソフトウエアを構成するプログラムが、専用のハードウエアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、プログラム記録媒体からインストールされる。
図20は、上述した一連の処理をプログラムにより実行するパーソナルコンピュータの構成の例を示すブロック図である。CPU(Central Processing Unit)301は、ROM(Read Only Memory)302、または記憶部308に記憶されているプログラムに従って各種の処理を実行する。RAM(Random Access Memory)303には、CPU301が実行するプログラムやデータなどが適宜記憶される。これらのCPU301、ROM302、およびRAM303は、バス304により相互に接続されている。
CPU301にはまた、バス304を介して入出力インタフェース305が接続されている。入出力インタフェース305には、キーボード、マウス、マイクロホンなどよりなる入力部306、CRT(Cathode Ray Tube)、LCD(Liquid Crystal display)などよりなるディスプレイ、スピーカなどよりなる出力部307が接続されている。CPU301は、入力部306から入力される指令に対応して各種の処理を実行する。そして、CPU301は、処理の結果を出力部307に出力する。
入出力インタフェース305に接続されている記憶部308は、例えばハードディスクからなり、CPU301が実行するプログラムや各種のデータを記憶する。通信部309は、インターネットやローカルエリアネットワークなどのネットワークを介して、または直接に接続された外部の装置と通信する。
入出力インタフェース305に接続されているドライブ310は、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリなどのリムーバブルメディア321が装着されたとき、それらを駆動し、そこに記録されているプログラムやデータなどを取得する。取得されたプログラムやデータは、必要に応じて記憶部308に転送され、記憶される。また、プログラムやデータは、通信部309を介して取得され、記憶部308に記憶されてもよい。
コンピュータにインストールされ、コンピュータによって実行可能な状態とされるプログラムを格納するプログラム記録媒体は、図20に示すように、磁気ディスク(フレキシブルディスクを含む)、光ディスク(CD-ROM(Compact Disc-Read Only Memory),DVD(Digital Versatile Disc)を含む)、光磁気ディスクを含む)、もしくは半導体メモリなどよりなるパッケージメディアであるリムーバブルメディア321、または、プログラムが一時的もしくは永続的に格納されるROM302や、記憶部308を構成するハードディスクなどにより構成される。プログラム記録媒体へのプログラムの格納は、必要に応じてルータ、モデムなどのインタフェースである通信部309を介して、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の通信媒体を利用して行われる。
上述した例では、生成時の行動シーケンスA乃至Cの切替を、CTRNN81のタスクIDを変更することによって行うようにしたが、CTRNN81には、タスクIDの入力を持たせずに、コンテキスト入力ノード162に与える初期値を変更することによって、生成時の行動シーケンスA乃至Cの切替を行うようにしてもよい。
本明細書において、フローチャートに記述されたステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
なお、本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。
51 情報処理装置, 61 下位時系列予測生成器, 62 上位時系列予測生成器, 63 ゲート信号変換部, 71−1乃至71−N RNN, 72−1乃至72−N ゲート, 73 合成回路, 74 演算回路, 75 メモリ, 76 制御回路, 81 CTRNN, 201 時間フィルタ部, 202 非線形フィルタ部, 301 CPU, 302 ROM, 303 RAM, 308 記憶部