図1は、本発明を適用したデータ処理装置の一実施の形態の構成例を示すブロック図である。
図1において、データ処理装置は、学習装置10と生成装置20とから構成され、例えば、実世界のロボット等のエージェントを制御する制御ブロックの一部を構成する。
なお、図1では、学習装置10と生成装置20が、データ処理装置を構成するが、例えば、データ処理装置は、生成装置20だけで構成し、学習装置10は、他のデータ処理装置として構成することができる。
学習装置10は、モデル記憶部11、及びモデル更新部12から構成される。学習装置10は、時系列データを用いて、予測モデルの学習である、予測モデルのパラメータの更新を行う。
すなわち、モデル記憶部11は、エージェントが行動をとるためのモデルとして、時系列データを予測するための予測モデル(のパラメータであるモデルパラメータ)を記憶する。
ここで、予測モデルとしては、例えば、RNN(Recurrent Neural Network)等のNN(Neural Network),SVR(Support Vector Regression)、その他の、関数を近似する関数近似器を採用することができる。
ここでは、予測モデルとして、例えば、RNNを採用することとする。予測モデルとして、RNNを採用する場合、RNNを構成する、ニューロンに相当するノードにおいて、他のノードからの入力に付されるウエイト(重み)が、RNNのモデルパラメータである。
なお、予測モデルとしてのRNNについては、例えば、エージェントが、ある基本的な行動(例えば、直線や、円、8の字等を描くように移動する行動等)をとるためにあらかじめ用意された学習データを用いての学習が、既に終了していることとする。
モデル更新部12には、物理量をセンシングするセンサ(図示せず)によって環境をセンシングすることにより得られる、環境の状態を表すセンサデータと、エージェントを行動させるためのアクションデータとを含む時系列データが供給される。
すなわち、エージェントは、そのエージェント自身が存在する環境等の物理量をセンシングするセンサを有し、モデル更新部12には、そのセンサが出力する、環境等の状態を表すセンサデータとしての時系列データが供給される。
ここで、センサとしては、例えば、画像を撮影するカメラや、音声(音)を集音するマイク(マイクロフォン)、距離を計測するセンサ、その他の、環境中の必要な物理量をセンシングするセンサを採用することができる。
また、センサとしては、エージェントの状態、すなわち、例えば、エージェントの各部位を駆動するアクチュエータ(図示せず)の回転角度や角速度等をセンシングするセンサも採用することができ、この場合、センサデータには、エージェントのアクチュエータの回転角度や角速度等が含まれる。
モデル更新部12に供給される時系列データには、上述したように、センサデータの他、アクションデータも含まれる。
アクションデータは、後述するように、生成装置20で生成され、エージェントを構成するアクチュエータ等に供給されるが、モデル更新部12に供給される時系列データには、そのアクションデータが含まれる。
モデル更新部12は、そこに供給される時系列データを、予測モデルの学習に用いる学習データとし、その学習データを用いて、モデル記憶部11に記憶された予測モデルの学習である、予測モデルのモデルパラメータの更新を行う。
モデル更新部12によって学習がされた、モデル記憶部11に記憶された予測モデルは、生成装置20を構成する、後述する時系列データ予測部21、及び、時系列データ探索部24によって参照される。
生成装置20は、時系列データ予測部21、目標決定部22、誤差計算部23、及び、時系列データ探索部24から構成される。生成装置20は、時系列データの予測値の誤差を減少させる、予測モデルへの時系列データの入力である誤差減少データを探索し、その誤差減少データを用いて、時系列データの予測値を求めて、エージェントのアクチュエータ、及び、学習装置10のモデル更新部12に供給する。
すなわち、時系列データ予測部21には、モデル更新部12に供給されるのと同様の、センサデータ、及びアクションデータを含む時系列データが供給(入力)される。
また、時系列データ予測部21には、時系列データ探索部24から、誤差減少データとしての時系列データが供給(入力)される。
時系列データ予測部21は、モデル記憶部11に記憶された予測モデルを用い、時系列データの入力に対して、その時系列データの予測値を求め(予測し)、目標決定部22、及び、誤差計算部23や、エージェントのアクチュエータ、及び、学習装置10のモデル更新部12に供給する。
目標決定部22は、時系列データ予測部21からの時系列データの予測値に基づき、時系列データの目標値を決定し、誤差計算部23に供給する。
すなわち、目標決定部22は、時系列データ予測部21からの時系列データの予測値に含まれるセンサデータの予測値に基づき、そのセンサデータの目標値を決定し、誤差計算部23に供給する。
ここで、センサデータの予測値に基づき、その目標値を決定する方法としては、例えば、センサデータの予測値を引数とする所定の関数を演算し、その演算結果である関数値を、目標値として決定する方法がある。
誤差計算部23は、時系列データ予測部21から供給される時系列データの予測値の、目標決定部22から供給される時系列データの目標値に対する誤差を計算し、時系列データ探索部24に供給する。
すなわち、誤差計算部23は、時系列データに含まれるセンサデータの予測値の、そのセンサデータの目標値に対する誤差を計算し、時系列データ探索部24に供給する。
時系列データ探索部24は、誤差計算部23からの予測値の誤差を減少させる、予測モデルへの時系列データの入力である誤差減少データを探索し、時系列データ予測部21に供給する。
ここで、上述したように、時系列データ予測部21は、モデル記憶部11に記憶された予測モデルを用い、時系列データの入力に対して、その時系列データの予測値を求め、目標決定部22、及び、誤差計算部23や、エージェントのアクチュエータ、及び、モデル更新部12に供給する。
したがって、時系列データ予測部21において、時系列データ探索部24からの誤差減少データの入力に対して、時系列データの予測値が求められる場合には、目標決定部22、及び、誤差計算部23や、エージェントのアクチュエータ、及び、モデル更新部12には、誤差減少データを用いて予測される時系列データの予測値が供給される。
図2は、図1のモデル記憶部11に記憶される予測モデルとしてのRNNの例を示している。
図2において、RNNは、入力層、隠れ層(中間層)、及び出力層の3層により構成されている。入力層、隠れ層、及び出力層は、それぞれ任意の数の、ニューロンに相当するノードにより構成されている。
ここで、RNNは、入力層に対する時系列データの入力に対して、出力層から時系列データを出力する。以下、RNNの入力層に対する外部からの入力としての時系列データを、入力データともいい、RNNの出力層から外部に出力される時系列データを、出力データともいう。また、入力データに対して、RNNが出力する出力データを、入力データに対する出力データともいう。
RNNでは、入力層の一部のノードである入力ノードに、入力データとしての時系列データ(の時刻tのサンプル)Xtが入力(供給)される。ここで、図2では、時系列データXtとしては、2次元のアクションデータA1及びA2、並びに、4次元のセンサデータS1,S2,S3、及びS4をコンポーネントとするベクトルが採用されている。
入力層の、入力データXtが入力される入力ノード以外のノードは、コンテキストノードになっており、そのコンテキストノードには、出力層の一部のノードの出力が、内部状態を表すコンテキストとしてフィードバックされる。
ここで、時刻tの入力データXtが入力層の入力ノードに入力されるときに入力層のコンテキストノードに入力される時刻tのコンテキストを、Ctと記載する。
隠れ層のノードは、入力層に入力される入力データXt、及び、コンテキストCtを対象として、所定のウエイト(重み)を用いた重み付け加算を行い、その重み付け加算の結果を引数とする非線形関数の演算を行って、その演算結果を、出力層のノードに出力する。
出力層の一部のノードからは、次の時刻t+1のコンテキストCt+1が出力され、入力層にフィードバックされる。また、出力層の残りのノードからは、入力データXtに対する出力データとして、例えば、その入力データXtの次の時刻t+1の入力データXt+1の予測値X* t+1が出力される。
なお、入力データである時系列データXtが、例えば、上述したように、2次元のアクションデータA1及びA2、並びに、4次元のセンサデータS1,S2,S3、及びS4をコンポーネントとするベクトル(A1,A2,S1,S2,S3,S4)である場合において、時系列データXtの予測値X* tとしてのベクトルを、ベクトル(A* 1,A* 2,S* 1,S* 2,S* 3,S* 4)と表す。
ここで、上述したように、RNNでは、ノードへの入力が重み付け加算されるが、この重み付け加算に用いられるウエイトが、RNNのモデルパラメータである
図2において、RNNのモデルパラメータとしてのウエイトには、入力ノードから隠れ層のノードへのウエイトや、隠れ層のノードから出力層のノードへのウエイト等の複数のウエイトがある。この複数のウエイトをコンポーネントとするマトリクスを、ウエイトマトリクスという。
モデル更新部12(図1)は、図2のRNNの学習を、そこに供給される時系列データを学習データとして用い、例えば、BPTT(Back-Propagation Through Time)法により行う。
次に、図3を参照して、図1の目標決定部22による、目標値の決定の方法について説明する。
目標決定部22は、上述したように、時系列データ予測部21からの時系列データの予測値に含まれるセンサデータの予測値に基づき、例えば、センサデータの予測値を引数とする所定の関数を演算し、その演算結果である関数値を、時系列データに含まれるセンサデータの目標値として決定する。
図3は、時系列データの予測値に含まれるセンサデータ及びアクションデータの予測値と、センサデータの予測値に基づいて決定された(センサデータ)の目標値の時間変化を示している。
なお、図3において、横軸は時刻を表し、縦軸は振幅を表す。
ここで、例えば、いま、時系列データXtとして、図2で説明したように、ベクトル(A1,A2,S1,S2,S3,S4)が採用されていることとすると、図3のセンサデータの予測値及び目標値は、時系列データXt=(A1,A2,S1,S2,S3,S4)における4次元のセンサデータS1,S2,S3、及びS4の中のある1次元のセンサデータの予測値及び目標値である。
同様に、図3のアクションデータの予測値は、時系列データXt=(A1,A2,S1,S2,S3,S4)における2次元のアクションデータA1及びA2の中のある1次元のアクションデータの予測値である。
図3では、センサデータの予測値を1.2倍にする関数を用い、センサデータの予測値を1.2倍にした値が、センサデータの目標値に決定されている。
目標決定部22での目標値の決定に用いる関数(以下、目標決定用関数ともいう)としては、上述のように、予測値を1.2倍にする等の、予測値の大きさ(絶対値)を大にする関数を採用する他、予測値の大きさを小にする関数(例えば、0.8倍にする関数等)を採用することができる。
また、目標決定用関数としては、予測値と乗算する乗数が固定の関数の他、乗数が可変の関数を採用することができる。乗数が可変の関数を採用する場合においては、複数の乗数を用意し、その複数の乗数を順番に、予測値との乗算に用いる乗数として選択することができる。あるいは、予測値との乗算に用いる乗数は、例えば、乱数により決定することができる。
なお、図3では、時系列データXt=(A1,A2,S1,S2,S3,S4)における4次元のセンサデータS1,S2,S3、及びS4のうちの1次元のセンサデータについて、目標値を決定することとしたが、目標値は、2次元以上の次元のセンサデータについて決定することが可能である。
また、目標値は、アクションデータについて決定することや、センサデータとアクションデータの両方について決定することが可能である。
さらに、目標値を決定する方法は、関数を用いる方法に限定されるものではない。
すなわち、目標値は、予測モデルとしてのRNNが予測することができる予測値から、いわば、RNNが汎化可能な範囲にある値とすることが望ましい。
そこで、例えば、いま、D次元のセンサデータについて、目標値を決定することとすると、例えば、D次元のセンサデータの空間において、D次元のセンサデータとしてのベクトルが指す点から、そのベクトルの大きさに比例する距離(例えば、ベクトルの大きさより十分短い距離)の範囲内にある任意の点が表す値(ベクトル)を、目標値に決定することができる。
次に、図4を参照して、図1の生成装置20による誤差減少データの探索について説明する。
図4は、時刻tの時系列データXtから、3時刻後の時刻t+3の時系列データXt+3までを、予測モデルとしてのRNNを用いて予測する場合の、RNNの入出力を示している。
図4において、縦軸は時刻を表す。また、図4では、時刻に沿って(時刻ごとに)、RNNを図示してある。
いま、生成装置20の時系列データ予測部21に対して、時刻tの時系列データXt=(A1,A2,S1,S2,S3,S4)が供給されたとする。
ここで、時系列データ予測部21に供給される時刻tの時系列データXt=(A1,A2,S1,S2,S3,S4)には、エージェントが有するセンサからの時刻tのセンサデータ(S1,S2,S3,S4)と、エージェントのアクチュエータ等を駆動する時刻tのアクションデータ(A1,A2)とが含まれる。
時刻tの時系列データXtに含まれる時刻tのアクションデータ(A1,A2)は、時系列データ予測部21において、時刻tより前の時刻(例えば、時刻t-1)の時系列データの入力に対して予測された時刻tの時系列データの予測値X* tに含まれるアクションデータの予測値に等しい。
時系列データ予測部21は、モデル記憶部11に記憶されたRNNを用い、時刻tの時系列データXtの入力に対して、N時刻後の時刻t+Nまでの各時刻の時系列データXt+1ないしXt+Nの予測値X* t+1ないしX* t+Nを順次求める。
ここで、Nは、例えば、2以上の値であり、以下、探索長ともいう。
図4では、探索長Nを3として、時刻t+1ないしt+3の時系列データの予測値X* t+1ないしX* t+3が求められる。
すなわち、時系列データ予測部21は、RNNを用い、時刻tの時系列データXtを入力データとして、時刻t+1の時系列データの予測値X* t+1と、コンテキストCt+1とを求める。
なお、時刻t+1の時系列データの予測値X* t+1を求めるときの時刻tのコンテキストCtとしては、例えば、ランダムな値等を採用することができる。
その後、時系列データ予測部21は、RNNに対して、時刻t+1の時系列データの予測値X* t+1と、コンテキストCt+1とを入力することにより、時刻t+2の時系列データの予測値X* t+2と、コンテキストCt+2とを求める。
さらに、時系列データ予測部21は、RNNに対して、時刻t+2の時系列データの予測値X* t+2と、コンテキストCt+2を入力することにより、時刻t+3の時系列データの予測値X* t+3と、コンテキストCt+3とを求める。
時系列データ予測部21は、探索長Nだけ後の時刻t+Nの時系列データの予測値Xt+Nを求めると、その時刻t+Nの時系列データの予測値Xt+Nを、目標決定部22、及び、誤差計算部23に供給する。
図4では、探索長Nが3であるので、時系列データ予測部21から、目標決定部22、及び、誤差計算部23には、時刻t+3の時系列データの予測値X* t+3が供給される。
目標決定部22は、時系列データXt=(A1,A2,S1,S2,S3,S4)のうちの、例えば、2次元のセンサデータ(S3,S4)について、目標値ST=(ST3,ST4)を決定し、誤差計算部23に供給する。
誤差計算部23は、目標決定部22からの目標値STに対する、時系列データ予測部21からの予測値X* t+3に含まれる、2次元のセンサデータS3及びS4の予測値S* t+3=(S* 3,S* 4)の誤差Eを、式(1)に従って求め、時系列データ探索部24に供給する。
ここで、式(1)は、センサデータS3及びS4のそれぞれについて計算され、これにより、予測値S* 3の誤差E3と、予測値S* 4の誤差E4のそれぞれが求められる。
時系列データ探索部24は、誤差計算部23からのセンサデータの予測値S* t+3の誤差Eを減少させる、RNNへの入力データである誤差減少データを探索し、時系列データ予測部21に供給する。
すなわち、時系列データ探索部24は、誤差減少データの探索にあたり、例えば、モデル更新部12がRNNの学習に用いるBPTT法を利用する。
但し、RNNの学習では、予測値の誤差Eが減少するように、RNNのウエイトが調整(更新)されるのに対して、誤差減少データの検索では、予測値の誤差Eが減少するように、入力データが調整される。
すなわち、時系列データ探索部24は、誤差計算部23からの誤差Eを用い、式(2)に従って、RNNへの入力データとなるアクションデータA=(A1,A2)を調整する調整成分△At+nを求める(n=0,1,・・・,N-1)。
ここで、△At+nは、式(1)の誤差Eを求めるときに入力データとして用いられたアクションデータA=(A1,A2)を調整する調整成分を表す。
また、εは学習係数を、kは慣性係数を、それぞれ表し、δE/δAt+nは、誤差Eを変数としてのアクションデータAt+nで偏微分した微分値を表す。
さらに、NGは、ローカルミニマムに陥るのを防止するための白色雑音(Gaussian Noise)を表す。
また、A* t+n-At+nのうちの、At+nは、現時点の誤差減少データとしての時刻t+nのアクションデータを表し、A* t+nは、いわゆる前向き計算(予測)によって得られるアクションデータAt+nの予測値を表す。
時系列データ探索部24は、式(2)に従い、現時点の誤差減少データとしての時刻t+nのアクションデータAt+n=(At+n,1,At+n,2)を調整する調整成分△At+n=(△At+n,1,△At+n,2)を求めると、現時点の誤差減少データAt+n=(At+n,1,At+n,2)を、調整成分△At+n=(△At+n,1,△At+n,2)によって調整することで、誤差Eを減少させるアクションデータat+n=(at+n,1,at+n,2)を求める。
ここで、アクションデータat+nは、次に調整成分△At+nが求められるときの、現時点の誤差減少データとしての時刻t+nのアクションデータAt+nとなる。
時系列データ探索部24は、誤差減少データAt+nの調整を、例えば、所定の回数、又は、誤差Eが所定の閾値以下になるまで繰り返し、最終的に得られた誤差減少データat+n=(at+n,1,at+n,2)を、時系列データ予測部21に供給する。
図4では、探索長Nが3であり、時刻t,t+1,t+2(=t+N-1)のアクションデータ(の時系列)at,at+1,at+2が、誤差減少データとして、時系列データ探索部24から時系列データ予測部21に供給される。
なお、例えば、Tani, et al. ,"Model-Based Learning for Mobile Robot Navigation fromthe Dynamical Systems Perspective," IEEE Trans. System, Man and Cybernetics Part B, 26(3),421-436,1996.(以下、文献Aという)には、ナビゲーションロボットの行動をRNNにあらかじめオフラインで学習させておき、あるゴールを与えたときにそのゴールを達成する行動のシーケンスを探索する方法が記載されている。
時系列データ探索部24による誤差減少データの探索は、文献Aの方法を利用している。但し、文献Aでは、ナビゲーションロボットの行動を、0と1の2値で扱っているが、時系列データ探索部24による誤差減少データの探索では、文献Aの方法を拡張して、連続値のアクションデータ(誤差減少データ)を扱っている。
時系列データ予測部21は、時系列データ探索部24から誤差減少データが供給されると、再度、モデル記憶部11に記憶されたRNNを用い、時刻tの時系列データXtの入力に対して、N時刻後の時刻t+Nまでの各時刻の時系列データXt+1ないしXt+Nの予測値X* t+1ないしX* t+Nを順次求める。
但し、時系列データ予測部21は、時系列データ探索部24から誤差減少データが供給された場合には、時系列データXt+1ないしXt+3の予測値X* t+1ないしX* t+3を、時系列データ探索部24からの誤差減少データを用いて求める。
すなわち、時系列データ予測部21は、時系列データのうちのアクションデータA=(A1,A2)を、誤差減少データat+n=(at+n,1,at+n,2)に置き換え、その置き換え後の時系列データを、入力データとして用いて、予測値X* t+1ないしX* t+Nを求める。
つまり、時系列データ予測部21は、時刻tの時系列データXtのうちのアクションデータを、時刻tの誤差減少データatに置き換え、その置き換え後の時系列データを入力データとして用いて、時刻t+1の時系列データの予測値X* t+1を求める。
さらに、時系列データ予測部21は、直前に求めた時刻t+1の時系列データの予測値X* t+1のうちのアクションデータを、時刻t+1の誤差減少データat+1に置き換え、その置き換え後の時系列データを入力データとして用いて、時刻t+2の時系列データの予測値X* t+2を求める。
そして、時系列データ予測部21は、直前に求めた時刻t+2の時系列データの予測値X* t+2のうちのアクションデータを、時刻t+2の誤差減少データat+2に置き換え、その置き換え後の時系列データを入力データとして用いて、時刻t+3の時系列データの予測値X* t+3を求める。
ここで、時系列データ予測部21に、時刻tの時系列データXtが供給されるときには、エージェントでは、時系列データXtに含まれるアクションデータに従った時刻tの行動は既に行われているから、エージェントには、時刻tの誤差減少データatに従った行動をとらせることはできない。
そこで、時系列データ予測部21では、時刻tの時系列データXtについては、アクションデータを、時刻tの誤差減少データatに置き換えずに、そのまま(時刻tの時系列データXtに含まれるアクションデータのまま)用いて、時刻t+1の時系列データの予測値X* t+1を求めることができる。この処理は、時系列データ探索部24において、時刻tの誤差減少データatとして、時刻tの時系列データXtに含まれるアクションデータを採用し、時系列データ予測部21において、時刻tの時系列データXtのうちのアクションデータを、時刻tの誤差減少データatに置き換え、その置き換え後の時系列データを入力データとして用いて、時刻t+1の時系列データの予測値X* t+1を求めることで行うことができる。
なお、時刻tの誤差減少データatとしては、時刻tの時系列データXtに含まれるアクションデータを採用する他、例えば、乱数を採用することも可能である。
時系列データ予測部21は、探索長Nだけ後の時刻t+Nである時刻t+3の時系列データの予測値X* t+3を求めると、その時刻t+3の時系列データの予測値X* t+3を、誤差計算部23に供給する。
誤差計算部23は、時系列データ予測部21からの予測値X* t+3に含まれるセンサデータの予測値S* t+3の誤差Eを、式(1)に従って求め、時系列データ探索部24に供給する。
以下、生成装置20では、誤差Eが、例えば、所定の閾値以下等の、十分に小さな値になるまで、時系列データ探索部24による誤差減少データの探索、時系列データ予測部21による、誤差減少データを用いた予測値の算出(予測)、及び、誤差計算部23による予測値の誤差の計算が繰り返される。
そして、誤差Eが十分に小さな値になると、時系列データ予測部21は、その、誤差Eが十分に小さくなったときの誤差減少データを、エージェントのアクチュエータ、及び、学習装置10のモデル更新部12に供給する。
したがって、エージェントは、目標値に対する誤差Eを十分に小さくする誤差減少データであるアクションデータに従って行動する。すなわち、エージェントは、センサデータが目標値になるような行動をとる。
なお、上述の場合には、目標決定部22において、時系列データ予測部21に供給される時刻tの時系列データXtから、探索長Nだけ後の時刻tの時系列データXt+Nの目標値を決定し、時系列データ探索部24において、その目標値に対する予測値の誤差Eを減少させる時刻t,t+1,・・・,t+N-1のアクションデータ(誤差減少データ)at,at+1,・・・,at+N-1を求めることとしたが、目標決定部22では、時刻t+1,t+2,・・・,t+Nのそれぞれについて、目標値を決定し、時系列データ探索部24では、各時刻t'+1ごとに(t'=t,t+1,・・・,t+N-1)、その時刻t'+1の目標値に対する予測値の誤差を減少させる、1時刻前の時刻t'のアクションデータat'を求めるようにすることもできる。
すなわち、誤差減少データとしての時刻t,t+1,・・・,t+N-1のアクションデータat,at+1,・・・,at+N-1は、時刻t+Nについて、目標値を決定し、その目標値に対する予測値の誤差を減少させることで求める他、時刻t+1,t+2,・・・,t+Nのうちの任意の1以上の時刻について、目標値を決定し、その1以上の時刻の目標値に対する予測値の誤差それぞれを減少させることで求めることができる。
次に、図5は、図1のデータ処理装置が行う処理(データ処理)を説明するフローチャートである。
いま、時刻tにおいて、時系列データ予測部21が、時刻tの時系列データの予測値を出力し、その時刻tの時系列データの予測値に含まれる時刻tのアクションデータ(の予測値)が、エージェントのアクチュエータに供給されたとする。
この場合、エージェントのアクチュエータは、時刻tのアクションデータに従って駆動し、これにより、エージェントは所定の行動をとる。さらに、エージェントのセンサは、エージェントの行動後の環境をセンシングし、時刻tのセンサデータを出力する。
そして、時系列データ予測部21には、時系列データ予測部21が出力した時刻tのアクションデータと、エージェントのセンサが出力した時刻tのセンサデータとをコンポーネントとするベクトルが、時刻tの時系列データとして供給される。
時系列データ予測部21は、ステップS11において、モデル記憶部11に記憶されたRNNを用い、そこに供給された時刻tの時系列データを入力データとして、時刻t+1から探索長Nだけ後の時刻t+Nまでの時系列データの予測値を順次求める。
時系列データ予測部21は、時刻t+1ないしt+Nの時系列データの予測値を求めると、そのうちの時刻t+Nの時系列データの予測値を、目標決定部22、及び、誤差計算部23に供給して、処理は、ステップS11からステップS12に進む。
ステップS12では、目標決定部22が、時系列データ予測部21からの時刻t+Nの時系列データの予測値に基づき、時刻t+Nの(時系列データに含まれる)センサデータの目標値を決定し、誤差計算部23に供給して、処理は、ステップS13に進む。
ステップS13では、誤差計算部23が、時系列データ予測部21からの時刻t+Nの時系列データの予測値に含まれるセンサデータの予測値の、目標決定部22からのセンサデータの目標値に対する誤差(以下、センサ予測誤差ともいう)を、例えば、式(1)に従って計算し、処理は、ステップS14に進む。
ステップS14では、誤差計算部23は、センサ予測誤差が十分に小さいかどうかを判定する。
ステップS14において、センサ予測誤差が十分に小さくないと判定された場合、誤差計算部23は、センサ予測誤差を、時系列データ探索部24に供給して、処理は、ステップS15に進む。
ステップS15では、時系列データ探索部24は、誤差計算部23からのセンサ予測誤差Eを減少させる、RNNへの時刻tないしt+N-1の入力データに含まれるアクションデータを探索し、誤差減少データとして、時系列データ予測部21に供給する。
その後、処理は、ステップS15からステップS16に進み、時系列データ予測部21は、モデル記憶部11に記憶されたRNNを用い、時系列データ探索部24からの時刻tないしt+N-1の誤差減少データを入力データ(の一部)として用いて、時刻t+1ないしt+Nの各時刻の時系列データの予測値を順次求める。
すなわち、時系列データ予測部21は、RNNによって求められた、時刻t'の時系列データの予測値に含まれるアクションデータを、時系列データ探索部24からの時刻t'のアクションデータに置き換え、その置き換え後の時系列データを入力データとして用いて、1時刻だけ後の時刻t'+1の時系列データの予測値を、RNNによって求めることを、時刻tないしt+N-1の各時刻t'(=t,t+1,・・・,t+N-1)について行う。なお、時刻t'=tのときは、直前に行われたステップS11で用いられた時刻tの時系列データが、入力データとして用いられる。
そして、時系列データ予測部21は、時刻t+N-1の時系列データの予測値に含まれるアクションデータを、時系列データ探索部24からの時刻t+N-1のアクションデータに置き換え、その置き換え後の時系列データを入力データとして用いて、1時刻だけ後の時刻t+Nの時系列データの予測値を求めると、その時刻t+Nの時系列データの予測値を、誤差計算部23に供給して、処理は、ステップS16からステップS13に戻る。
ステップS13では、誤差計算部23が、時系列データ予測部21からの時刻t+Nの時系列データの予測値に含まれるセンサデータの予測値の、目標決定部22からのセンサデータの目標値に対する誤差(センサ予測誤差)を計算する。そして、処理は、ステップS13からステップS14に進み、以下、同様の処理が繰り返される。
一方、ステップS14において、センサ予測誤差が十分に小さいと判定された場合、すなわち、時刻tないしt+N-1において、エージェントが、時系列データ探索部24からの時刻tないしt+N-1の誤差減少データであるアクションデータに従って行動することにより、時刻t+Nにおいて、エージェントのセンサが出力する時刻t+Nのセンサデータが、ステップS12で決定された目標値に近い(又は一致する)値となる場合、処理は、ステップS17に進み、時系列データ予測部21は、センサ予測誤差が十分に小さいと判定されたときの時刻t+1ないしt+N-1の誤差減少データであるアクションデータを、エージェントのアクチュエータに供給する。
なお、ステップS15で誤差減少データが求められる前に、ステップS14において、センサ予測誤差が十分に小さいと判定された場合には、ステップS17では、時系列データ予測部21は、ステップS11で求めた時刻t+1ないしt+N-1の時系列データの予測値に含まれるアクションデータ(の予測値)を、誤差減少データとして、エージェントのアクチュエータに供給する。
エージェントのアクチュエータは、時系列データ予測部21からの時刻t+1ないしt+N-1の誤差減少データに従って駆動し、これにより、エージェントは、時刻t+1ないしt+N-1において、センサ予測誤差を十分に小さくする誤差減少データ(アクションデータ)に従って行動する。すなわち、エージェントは、センサデータが目標値になっていくような行動をとる。
一方、エージェントのセンサは、エージェントが行動しているときの時刻t+1ないしt+N-1の各時刻の環境をセンシングし、センサデータを出力する。
この場合、モデル更新部12には、時系列データ予測部21が出力した時刻t+1ないしt+N-1の各時刻のアクションデータと、エージェントのセンサが出力した時刻t+1ないしt+N-1の各時刻のセンサデータとをコンポーネントとするベクトルが、時刻t+1ないしt+N-1の各時刻の時系列データとして供給される。
その後、処理は、ステップS17からステップS18に進み、モデル更新部12は、そこに供給された時刻t+1ないしt+N-1の時系列データを学習データとして用い、モデル記憶部11に記憶されたRNNのモデルパラメータを更新する学習処理を行う。
そして、処理は、ステップS18から、ステップS11に戻り、以下、同様の処理が繰り返される。
すなわち、モデル更新部12に対して、時刻t+1ないしt+N-1の時系列データが供給されるとき、そのうちの最後(最新)の時刻t+N-1の時系列データが、時系列データ予測部21に供給される。
時系列データ予測部21は、ステップS11において、モデル記憶部11に記憶されたRNNを用い、そこに供給された時刻t+N-1の時系列データを入力データとして、探索長Nだけ後の時刻までの時系列データの予測値を順次求め、そのうちの最新の時刻の時系列データの予測値を、目標決定部22、及び、誤差計算部23に供給して、処理は、ステップS11からステップS12に進む。
ステップS12では、目標決定部22が、時系列データ予測部21からの最新の時刻の時系列データの予測値に基づき、その最新の時刻の(時系列データに含まれる)センサデータの目標値を決定する。この場合、目標決定部22では、前回のステップS12の場合よりも、いわば、より高い目標が決定される。
すなわち、モデル記憶部11に記憶されたRNNについては、前回行われたステップS18において、エージェントが、前回のステップS12で決定された目標(値)を達成することができるような学習が、既に行われている。そして、今回のステップS12では、そのようなRNNを用いて予測される予測値に基づき、目標(値)を決定するので、前回のステップS12の場合よりも、より高い目標が決定される。
目標決定部22は、目標値を決定すると、その目標値を、誤差計算部23に供給して、処理は、ステップS12からステップS13に進み、以下、同様の処理が繰り返される。
以上のように、生成装置20では、時系列データ予測部21が、時系列データを予測するための予測モデルとしてのRNNを用い、時系列データの入力に対して、時系列データの予測値を求める。さらに、目標決定部22が、時系列データの予測値に基づき、時系列データの目標値を決定し、誤差計算部23が、予測値の、目標値に対する誤差を計算する。そして、時系列データ探索部24が、予測値の誤差を減少させる、RNNへの時系列データの入力である誤差減少データを探索する。
したがって、エージェントが、汎化が可能な範囲で目標をたて、その目標を達成する行動を、迅速にとることができる。
すなわち、RNNを用いて求められる時系列データの予測値に基づいて、時系列データの目標値が決定されるので、外部から具体的な目標(目標値)を与えなくても、RNNによる汎化が可能な範囲で目標をたてることができる。
さらに、目標値に対する予測値の誤差を減少させる時系列データである誤差減少データが探索されるので、つまり、誤差を減少させるという指向性をもって、時系列データ(誤差減少データ)が探索されるので、エージェントが、誤差減少データに従って行動することにより、エージェントは、目標を達成する行動を迅速にとることができる。
なお、図5では、ステップS17において、時系列データ予測部21が、時刻t+1ないしt+N-1の誤差減少データを、エージェントのアクチュエータに供給するようにしたが、エージェントのアクチュエータに対しては、時刻t+1ないしt+N-1の誤差減少データのうちの、時刻t+1からの一部の時刻の誤差減少データを供給することができる。
ステップS17において、時系列データ予測部21が、時刻t+1ないしt+N-1の、N-1時刻分の誤差減少データのうちの、時刻t+1ないしt+N'(≦N-1)の、N'時刻分の誤差減少データを、エージェントのアクチュエータに供給する場合には、次に行われるステップS11では、時系列データ予測部21は、最新の時刻t+N'の時系列データを入力データとして、時系列データの予測値が求められる。
また、図5では、ステップS17において、時系列データ予測部21が、誤差減少データを、エージェントのアクチュエータに供給するごとに、ステップS18において、モデル更新部12が、モデル記憶部11に記憶されたRNNの学習処理を行うこととしたが、RNNの学習処理は、必ずしも、時系列データ予測部21が誤差減少データをエージェントのアクチュエータに供給するごとに行う必要はない。
すなわち、RNNの学習処理は、時系列データ予測部21が、N'時刻分の誤差減少データを、エージェントのアクチュエータに供給することを、複数回であるN''回行うごとに、それまでに、時系列データ予測部21がアクチュエータに供給したN''×N時刻分の誤差減少データを、アクションデータとして含む、N''×N時刻分の時系列データを学習データとして用いて行うことができる。
図6は、本発明を適用したデータ処理装置の他の一実施の形態の構成例を示すブロック図である。
図6において、データ処理装置は、複数であるK個の学習モジュール1001ないし100Kと、モデルパラメータ共有部120とから構成され、例えば、図1の場合と同様に、エージェントを制御する制御ブロックの一部を構成する。
学習モジュール100i(i=1,2,・・・,K)は、記憶部111i、学習装置112i、及び生成装置113iから構成され、学習データを用いて、予測モデルの学習、つまり、予測モデルのモデルパラメータの更新を行う。
すなわち、記憶部111iには、学習データである時系列データが供給される。記憶部111iは、そこに供給される学習データを記憶する。
学習装置112iは、図1の学習装置10と同様に構成され、したがって、予測モデルとしての、例えば、RNN(のモデルパラメータであるウエイト)を記憶している。学習装置112iは、記憶部111iに記憶された学習データを用いて、予測モデルとしてのRNNの学習、つまり、RNNのモデルパラメータの更新を行う。
生成装置113iは、図1の生成装置20と同様に構成され、誤差減少データとしてのアクションデータを探索して出力する。
ここで、生成装置113iが出力した誤差減少データは、エージェントのアクチュエータ等に供給される。
エージェントのアクチュエータは、生成装置113iからの誤差減少データに従って駆動し、これにより、エージェントは、誤差減少データに従って行動する。
また、エージェントのセンサは、エージェントが行動しているときの環境をセンシングし、センサデータを出力する。
この場合、学習モジュール100j(j≠i)の記憶部111jには、生成装置113iが出力した誤差減少データとしてのアクションデータと、エージェントのセンサが出力したセンサデータとをコンポーネントとするベクトルの時系列が、学習データとして供給される。
学習モジュール100jの記憶部111jは、以上のようにして供給される学習データを記憶し、学習装置112jは、その学習データを用いて、RNNの学習を行う。
モデルパラメータ共有部120は、K個の学習モジュール1001ないし100Kに、予測モデルのモデルパラメータを共有させる共有処理を行う。モデルパラメータ共有部120が共有処理を行うことにより、K個の学習モジュール1001ないし100Kは、モデルパラメータを共有する。
次に、図6のデータ処理装置の処理について説明する。
図6のデータ処理装置の学習モジュール1001ないし100Kそれぞれでは、図1のデータ処理装置と同様の処理、すなわち、図5のフローチャートで説明した処理が行われる。
但し、図1のデータ処理装置では、上述したように、学習装置10が、生成装置20が出力する誤差減少データとしてのアクションデータに従ってエージェントが行動することにより得られる(観測される)時系列データを学習データとして用いて、RNNの学習処理を行う。
これに対して、図6のデータ処理装置では、学習モジュール100iの生成装置113iが出力した誤差減少データに従ってエージェントが行動することにより得られる時系列データが、他の学習モジュール100jである、例えば、学習モジュール100i+1の記憶部111i+1に、学習データとして記憶される。そして、学習モジュール100i+1の学習装置112i+1が、その学習装置112i+1に記憶されているRNNのモデルパラメータとしてのウエイトの更新を、記憶部111i+1に記憶された学習データを用いて行う。
さらに、図6のデータ処理装置では、学習データを用いたウエイトの更新(学習)が行われたRNNを対象として、そのRNNのウエイトの共有が行われる。
すなわち、図7は、図6のデータ処理装置において、図5のステップS18で行われる学習処理を説明するフローチャートである。
ここで、例えば、学習モジュール1001では、記憶部1111において、エージェントが、ある基本的な行動をとることによって得られる時系列データが、学習データとして記憶されていることとする。さらに、学習装置1121に記憶されたRNNの学習は、記憶部1111に記憶された学習データを用いて、既に済んでいることとする。
図6のデータ処理装置では、K個の学習モジュール1001ないし100Kのうちの、最新の学習データが記憶部111Lに記憶された学習モジュール100L(1≦L<K)において、図5のステップS11ないしS17の処理が行われる。
そして、ステップS17において、学習モジュール100Lの生成装置113Lが出力した誤差減少データは、エージェントのアクチュエータ等に供給される。
エージェントのアクチュエータは、生成装置113Lからの誤差減少データに従って駆動し、これにより、エージェントは、誤差減少データに従って行動する。
また、エージェントのセンサは、エージェントが行動しているときの環境をセンシングし、センサデータを出力する。
そして、生成装置113Lが出力した誤差減少データとしてのアクションデータと、エージェントのセンサが出力したセンサデータとをコンポーネントとするベクトルの時系列が、学習データとして、例えば、学習モジュール100L+1に供給される。
学習モジュール100L+1に、学習データが供給されると、図6のデータ処理装置では、図5のステップS18において、図7の学習処理が行われる。
すなわち、ステップS21において、学習モジュール100L+1では、記憶部111L+1が、学習モジュール100L+1に供給された学習データを記憶して、処理は、ステップS22に進む。
ステップS22では、学習装置112L+1が、記憶部111L+1に記憶された学習データを用いて、RNNのモデルパラメータとしてのウエイトを更新する、RNNの学習を行う。
ステップS22では、さらに、学習装置1121ないし学習装置112Lも、学習装置112L+1と同様に、記憶部1111ないし111Lに記憶された学習データを用いて、RNNの学習を、それぞれ行う。
なお、RNNの学習は、例えば、BPTT法によって行われる。
また、学習装置112L+1では、RNNの学習は、例えば、ランダムな値を、ウエイトの初期値として行われる。
一方、過去にRNNの学習が行われている学習装置1121ないし112Lでは、RNNの学習は、例えば、ランダムな値、又は、現在のウエイトを、ウエイトの初期値として行われる。
ステップS22の後、処理は、ステップS23に進み、モデルパラメータ共有部120は、L+1個の学習モジュール1001ないし100L+1のすべてに、ウエイトw1ないしwL+1のすべてを共有させる共有処理を行う。
すなわち、いま、学習モジュール100iの学習装置112iが記憶しているRNNのモデルパラメータとしてのウエイトを、wiと表すこととすると、モデルパラメータ共有部120は、ウエイトwiを、例えば、式(3)に従って補正することにより、ウエイトw1ないしwL+1のすべてを共有させる。
ここで、学習モジュール100iの学習装置112iが記憶しているRNNを、RNN#iと表すこととすると、βij 'は、RNN#iのウエイトwiに、RNN#jのウエイトwjを影響させる度合いを表す係数である(i=1,2,・・・,L+1)(j=1,2,・・・,L+1)。
したがって、式(3)の右辺の第2項におけるサメーションΣβij 'wjは、係数βij 'を重みとした、RNN#1ないしRNN#L+1のウエイトw1ないしwL+1の重み付け平均値を表し、αi 'は、その重み付け平均値Σβij 'wjを、ウエイトwiに影響させる度合いを表す係数である。
係数αi '及びβij 'としては、例えば、0.0より大で1.0より小の値を採用することができる。
式(3)によれば、係数αi 'が大であるほど、共有が弱くなり(ウエイトwiが受ける重み付け平均値Σβij 'wjの影響が小さくなり)、係数αi 'が小であるほど、共有が強まる。
ステップS23の後、処理は、ステップS24に進み、図6のデータ処理装置は、学習の終了条件が満たされているかどうかを判定する。
ここで、ステップS24での学習の終了条件としては、例えば、学習の回数、つまり、ステップS22及びS23が繰り返された回数が、あらかじめ定められた所定の回数となったことや、学習データに対してRNN#1ないし#L+1が出力する予測値の予測誤差が所定値以下であること、等を採用することができる。
ステップS24において、学習の終了条件が満たされていないと判定された場合、処理は、ステップS22に戻り、以下、同様の処理、すなわち、ウエイトw1ないしwL+1の更新と、共有処理とが交互に繰り返される。
また、ステップS24において、学習の終了条件が満たされていると判定された場合、学習処理は終了する。
ここで、以上のように、モデルパラメータ共有部120が、RNN#1ないしRNN#L+1のウエイトw1ないしwL+1のそれぞれを、そのウエイトw1ないしwL+1すべてに基づいて補正することにより、ウエイトw1ないしwL+1のそれぞれは、そのウエイトw1ないしwL+1すべての影響を受ける。このように、モデルパラメータとしてのウエイトw1ないしwL+1のそれぞれが、そのウエイトw1ないしwL+1すべての影響を受けるように、ウエイトw1ないしwL+1のそれぞれを調整(補正)することが、モデルパラメータの共有である。
図6のデータ処理装置では、1つの学習モジュール100i+1において、学習モジュール100iの生成装置113iが出力した誤差減少データに従ってエージェントが行動することにより得られる1つ(1シーケンス)の時系列データを、学習データとして、RNNの学習が行われる。したがって、1つの学習モジュール100i+1では、学習装置112i+1のRNNに、学習データとしての1つの時系列データのパターンが記憶され、他の学習モジュールとの間での、RNNのパターンの記憶への干渉がないので、その記憶の安定性が高い。そして、図6のデータ処理装置は、学習モジュールを追加することにより、新たなパターンの記憶を、既にパターンを記憶した学習モジュール(RNN)の記憶を破壊せずにすることができるという規模拡張性に優れる。なお、図6のデータ処理装置を、コンピュータにプログラムを実行させることで等価的に実現するとすれば、学習モジュールの追加は、メモリに、学習モジュールとしての記憶領域を新たに確保すること(たとえば、オブジェクト指向プログラミングにおけるインスタンスの生成)によって行うことができる。
さらに、上述のように、規模拡張性に優れる図6のデータ処理装置では、複数の学習モジュール1001ないし100L+1それぞれにおいて、モデルパラメータ(ここでは、RNNのウエイト)を共有しながら、その複数の学習モジュール1001ないし100L+1それぞれのモデルパラメータを更新する学習を行うことにより、パターンの記憶の汎化が、複数の学習モジュール1001ないし100L+1のRNNのそれぞれで行われる他、複数の学習モジュール1001ないし100L+1のRNNの全体でも行われる。そして、その結果、複数の学習モジュール1001ないし100L+1に記憶されているRNNの全体は、等価的に、規模拡張性があり、同時に、汎化の能力を有する予測モデルとなり、多くのパターンを獲得(記憶)することができ、かつ、複数のパターンの共通性を獲得することができる。
次に、図1のデータ処理装置について行ったシミュレーション(以下、第1シミュレーションともいう)について説明する。
第1シミュレーションでは、エージェントとして、振り子を採用した。
図8は、エージェントとしての棒状の振り子を示している。
エージェントとしての振り子の長さLは1[m]とし、質量mは1[g]とした。ここで、振り子の長さLとは、棒状の振り子の一端を回転中心として、その回転中心と、他端(以下、振り子の先端ともいう)との距離を意味する。
また、振り子の行動(動き)は、式(4)の運動方程式に拘束される。
ここで、式(4)において、θは、図8に示すように、重力の方向から反時計回りの振り子の回転角度[radian]を表す。また、式(4)において、gは、重力加速度を表し、μは、摩擦係数を表す。第1シミュレーションでは、重力加速度gとして、9.8[m/s2]を採用し、摩擦係数μとして、0.1を採用した。
さらに、式(4)において、τは、エージェントとしての振り子に加えるトルクτを表す。また、式(4)において、θ'は、回転角度θの微分(角速度)を表し、θ''は、回転角度の微分の微分(角加速度)を表す。
第1シミュレーションでは、振り子の回転角度θと、角速度θ'とをセンサデータとするとともに、連続値をとるトルクτをアクションデータとした。
なお、回転角度θが0で、振り子が静止している状態(θ'=θ''=0)から、1時刻後に、振り子を頂点に振り上げること(回転角度|θ|がπ以上になること)ができないように、アクションデータとしてのトルクτは、-3から+3までの範囲に制限した。
ここで、学習データを用いた予測モデルの学習処理を行って、予測モデルのモデルパラメータの更新を行ってから、次に、学習処理を行うまでを、試行(1回の試行)ということとする。
第1シミュレーションでは、予測モデルの学習処理は、60ステップ(60時刻分)の時系列データを学習データとして用い、60ステップごとに行った。
また、第1シミュレーションでは、プランニングを、10ステップごとに、20ステップ先まで行った。
ここで、プランニングとは、目標をたてること、つまり、図5のステップS12で目標値を決定することを意味する。
したがって、プランニングを20ステップ先まで行うとは、現在時刻を、時刻tとすると、図5のステップS11において、探索長Nを20として、時刻tの時系列データから、時刻t+1ないしt+20の、20ステップ分の時系列データの予測値を求め、ステップS12において、時刻t+20の時系列データの目標値を決定することを意味する。
この場合、図5のステップS15では、時刻tないしt+20-1の20ステップ分の誤差減少データが求められる。
また、プランニングを10ステップごとに行うとは、今回のプランニングを行った時刻を、時刻tとすると、次のプランニングを、10ステップ(時刻)後の時刻t+10に行うことを意味する。
したがって、プランニングが、10ステップごとに、20ステップ先まで行われる場合には、今回のプランニングが、時刻tに行われたとすると、上述したように、時刻tないしt+20-1の20ステップ分の誤差減少データが求められる。
そして、時刻tないしt+20-1の誤差減少データのうちの、時刻t+1からの10ステップ分である、時刻t+1ないしt+10の誤差減少データとしてのアクションデータが、エージェントのアクチュエータに出力され、エージェントは、そのアクションデータにしたがった行動をとる。
また、エージェントが、上述のように、時刻t+1ないしt+10の誤差減少データとしてのアクションデータに従って行動することにより得られる時刻t+10の時系列データから、再度、20ステップ分の時系列データの予測値が求められる。さらに、20ステップ先の時系列データの目標値が決定され、以下、同様の処理が繰り返される。
そして、第1シミュレーションでは、予測モデルの、前回の学習処理の後、60ステップの誤差減少データが、エージェントのアクチュエータに出力されると、つまり、10ステップの誤差減少データの出力が、6回だけ行われると、その6回分の60ステップの誤差減少データが学習データとされ、予測モデルの、今回の学習処理が行われる。
また、第1シミュレーションでは、図5のステップS12において、センサデータとしての回転角度θの予測値の1.5倍の値を、そのセンサデータとしての回転角度θの目標値に決定することとした。
すなわち、エージェントとしての振り子が行動する、いわば動機を、振り子が、より高く振り上がることに設定した。なお、振り子が、最も高く振り上がった状態は、回転角度θが-π又は+πのときであるので、回転角度θの目標値は、-πから+πまでの範囲に制限した。つまり、回転角度θの予測値の1.5倍の値の絶対値がπより大の場合は、回転角度θの目標値を、絶対値がπになるように制限した。
さらに、第1シミュレーションでは、予測モデルとして、RNNを用いた。
また、第1シミュレーションでは、60ステップの時系列データである学習データについて、エージェントとしての振り子に目標を達成させることができる程度を表す評価値valを、式(5)に従って計算し、いままでに得られた学習データのうちの、評価値valが上位5位までの5シーケンスの学習データを、RNNの学習処理に用いた。
ここで、式(5)において、θtは、60ステップの時系列データである学習データの、先頭からt+1ステップ目のセンサデータとしての回転角度θを表す(t=0,1,・・・,60-1)。
式(5)の評価値valは、60ステップの時系列データである学習データのセンサデータとしての回転角度θだけ、振り子が回転した状態の、その振り子の先端の高さ(回転角度θが0であるときの先端の位置を基準とする高さ)の、60ステップ分の総和が大であるほど大になる。すなわち、評価値valは、振り子が振り上がる高さが高いほど、及び、振り子が高く振り上がる回数が多いほど、大になる。
なお、5シーケンスの学習データが得られるまで、つまり、5回未満の回数の試行では、それまでに得られている5シーケンス未満の数の学習データすべてを、RNNの学習処理に用いた。
また、RNNには、エージェントとしての振り子の、微小な回転角度θでの振り子運動の学習をさせておき、各試行でのRNNの学習処理では、ウエイトの初期値として、前回の試行でのRNNの学習処理で求められたウエイトを用いた。
図9は、第1シミュレーションで得られた評価値valの変化を示している。
ここで、図9において、横軸は、試行の回数(試行回数)を表し、縦軸は、評価値valを表す。
図9によれば、評価値valは、試行回数の増加に伴って、ほぼ単調に増加していっている。したがって、振り子を、より高く振り上げるという指向性をもって、振り子を行動させるための誤差減少データ(アクションデータ)としてのトルクτ(の時系列)の探索が行われていることを確認することができる。
図10は、第1シミュレーションで得られた誤差減少データ(アクションデータ)としてのトルクτ(の時系列)を示している。
すなわち、図10は、試行回数が、40,50,60、及び70回目のそれぞれで得られた60ステップのトルクτを示している。
図10によれば、試行回数が増加していくほど、トルクτの振幅が大になっている。したがって、試行が進むにつれ、回転角度θの目標値が、振り子を、より高く振り上げる値(-π又は+π)になっていき、その結果、振り子を、より高く振り上げるような誤差減少データとしてのトルクτの探索が行われていることを確認することができる。
図11は、振り子を高く振り上げるトルクτの探索を、ランダム探索で行った場合の評価値valの変化を示している。
ここで、図11において、横軸は、試行回数を表し、縦軸は、評価値valを表す。
また、図11には、第1シミュレーションでトルクτの探索(以下、誤差減少探索ともいう)を行った場合の評価値valも、併せて図示してある。
なお、誤差減少探索の場合の評価値valは、図9に図示した評価値valと同一である。
図11によれば、誤差減少探索では、ランダム探索に比較して、極めて少ない試行回数で、評価値valを向上させること、すなわち、振り子を高く振り上げるトルクτの探索を、迅速に行うことができることが分かる。
次に、図6のデータ処理装置について行ったシミュレーション(以下、第2シミュレーションともいう)について説明する。
第2シミュレーションでは、エージェントとして、2次元平面上を移動する移動ロボットを採用し、予測モデルとして、RNNを用いた。
図12は、第2シミュレーションで用いた移動ロボットと、その移動ロボットが移動する環境との概要を示している。
すなわち、図12Aは、移動ロボットが移動する環境(以下、移動環境ともいう)を示している。
移動環境としては、四方を壁で囲まれた長方形状の領域を用意し、その領域の中に、光を発する1個の光源を設置した。
また、図6のデータ処理装置の1つ目の学習モジュール1001の記憶部1111には、図12Aに示すように、移動環境内を、8の字を描くように移動する行動をとるための学習データを記憶させ、その学習データを用いて、RNN#1の学習をあらかじめ行った。
なお、他のRNN#2ないし#Kについては、学習をしていない。
図12Bは、移動ロボットが有するセンサを説明する図である。
移動ロボットは、光を検出し、その光を発している光源の、移動ロボットから見た相対的な位置である光源位置(x,y)を出力する光センサを有する。また、移動ロボットは、移動ロボットから見た、四方の壁それぞれまでの距離D1,D2,D3,D4を計測し、その距離D1ないしD4をコンポーネントとする距離ベクトル(D1,D2,D3,D4)を出力する距離センサを有する。
第2シミュレーションでは、光センサが出力する光源位置(x,y)と、距離センサが出力する距離ベクトル(D1,D2,D3,D4)とから求められる、例えば、式(6)によって定義されるエネルギの変化△Eを、センサデータとするとともに、移動ロボットが、1時刻(1ステップ)で移動する移動量(△x,△y)を、アクションデータとした。
ここで、式(6)において、dは、エージェントとしての移動ロボットと、光源との距離を表し、光源位置(x,y)から求められる。また、max(D)は、移動ロボットと、四方の壁それぞれとの距離D1,D2,D3,D4の中の最大値を表し、距離ベクトル(D1,D2,D3,D4)から求められる。
なお、式(6)において、d及びmax(D)としては、いずれも、0から1までの範囲の値に正規化された値が使用される。
さらに、第2シミュレーションでは、予測モデルの学習処理は、40ステップ(40時刻分)の時系列データを学習データとして用い、40ステップごとに行った。
また、第2シミュレーションでは、プランニングを、3ステップごとに、10ステップ先まで行った。
したがって、第2シミュレーションでは、現在時刻を、時刻tとすると、図5のステップS11において、探索長Nを10として、時刻tの時系列データから、時刻t+1ないしt+10の、10ステップ分の時系列データの予測値が求められ、ステップS12において、時刻t+10の時系列データの目標値が決定される。
そして、図5のステップS15において、時刻tないしt+10-1の10ステップ分の誤差減少データが求められ、そのうちの、時刻t+1からの3ステップ分である、時刻t+1ないしt+3の誤差減少データとしてのアクションデータが、エージェントのアクチュエータに出力される。
エージェントは、アクションデータにしたがった行動をとり、これにより、時刻t+3の時系列データが得られる。そして、第2シミュレーションでは、エージェントが行動することにより得られる時刻t+3の時系列データから、10ステップ分の時系列データの予測値が求められる。さらに、10ステップ先の時系列データの目標値が決定され、以下、同様の処理が繰り返される。
そして、第2シミュレーションでは、学習モジュール1001ないし100KのRNN#1ないしRNN#Kのうちの、あるRNN#iの学習の後、40ステップの誤差減少データが、エージェントのアクチュエータに出力されると、つまり、3ステップの誤差減少データの出力が、14回だけ行われると、その14回分の42(=14×3)ステップの誤差減少データのうちの最初の40ステップの誤差減少データが学習データとされ、RNN#i+1の学習が行われる。
また、第2シミュレーションでは、図5のステップS12において、センサデータとしてのエネルギの変化△Eの予測値の1.5倍の値を、そのセンサデータとしてのエネルギの変化△Eの目標値に決定することとした。
すなわち、エージェントとしての移動ロボットが行動する動機を、四方の壁のすべてになるべく近づきつつ(遠ざかりつつ)、かつ、光源に近づくことに設定した。
ここで、エネルギの変化△Eは、例えば、移動ロボットが光源に近く、かつ、四方の壁のいずれからも近い(遠い)場合に大となる。
したがって、エネルギの変化△Eの予測値の1.5倍の値を、そのエネルギの変化△Eの目標値に決定することにより、その目標値は、移動ロボットを光源に近づけ、かつ、四方の壁のいずれにも近づける(いずれからも遠ざける)ような値となる。
また、第2シミュレーションでは、エージェントとしての移動ロボットに目標を達成させることができる程度を表す評価値として、式(6)のエネルギの変化△Eの総和を採用した。
図13は、第2シミュレーションで得られた評価値の変化を示している。
ここで、図13において、横軸は、試行回数を表し、縦軸は、評価値を表す。
図13によれば、評価値は、試行回数の増加に伴って増加する傾向にあり、移動ロボットが、エネルギの変化△Eの総和を大にする行動をとっていることを確認することができる。
図14は、20回の試行それぞれで、移動ロボットが描いた移動軌跡を示している。
図14によれば、図12で説明したように、8の字を描くように移動する行動の学習しかしていなかった移動ロボットが、光源に近づく行動をとるためのアクションデータ(誤差減少データ)を探索、学習し、光源に近づくように移動することができるようになっていくことを確認することができる。
ここで、図14に示したように、移動ロボットが光源に近づく行動をとることは、光源を、移動環境中の複数の位置のいずれに設置しても観測された。
第1シミュレーション及び第2シミュレーションによれば、エージェント(の予測モデル)は、目標を達成する行動を探索しながら学習していることが分かり、したがって、あらかじめ大量の学習を行っておく必要がない。
なお、第1シミュレーションでは、センサデータとしての回転角度θの目標値は、-πから+πの範囲に制限したため、その回転角度θの最終的な目標値は、-π、又は+πとなる。
一方、第2シミュレーションでは、センサデータとしてのエネルギの変化△Eの目標値は、特に制限していないため、そのエネルギの変化△Eの最終的な目標値は、未知の値である。
このように、最終的な目標値が、既知の値、及び未知の値のいずれであっても、図1や図6のデータ処理装置では、エージェントが目標を達成する行動をとるためのアクションデータ(誤差減少データ)を探索することができる。
次に、上述した一連の処理は、ハードウェアにより行うこともできるし、ソフトウェアにより行うこともできる。一連の処理をソフトウェアによって行う場合には、そのソフトウェアを構成するプログラムが、汎用のコンピュータ等にインストールされる。
そこで、図15は、上述した一連の処理を実行するプログラムがインストールされるコンピュータの一実施の形態の構成例を示している。
プログラムは、コンピュータに内蔵されている記録媒体としてのハードディスク205やROM203に予め記録しておくことができる。
あるいはまた、プログラムは、フレキシブルディスク、CD-ROM(CompaCt Disc Read Only Memory),MO(Magneto Optical)ディスク,DVD(Digital Versatile Disc)、磁気ディスク、半導体メモリなどのリムーバブル記録媒体211に、一時的あるいは永続的に格納(記録)しておくことができる。このようなリムーバブル記録媒体211は、いわゆるパッケージソフトウエアとして提供することができる。
なお、プログラムは、上述したようなリムーバブル記録媒体211からコンピュータにインストールする他、ダウンロードサイトから、ディジタル衛星放送用の人工衛星を介して、コンピュータに無線で転送したり、LAN(Local Area Network)、インターネットといったネットワークを介して、コンピュータに有線で転送し、コンピュータでは、そのようにして転送されてくるプログラムを、通信部208で受信し、内蔵するハードディスク205にインストールすることができる。
コンピュータは、CPU(Central Processing Unit)202を内蔵している。CPU202には、バス201を介して、入出力インタフェース210が接続されており、CPU202は、入出力インタフェース210を介して、ユーザによって、キーボードや、マウス、マイク等で構成される入力部207が操作等されることにより指令が入力されると、それに従って、ROM(Read Only Memory)203に格納されているプログラムを実行する。あるいは、また、CPU202は、ハードディスク205に格納されているプログラム、衛星若しくはネットワークから転送され、通信部208で受信されてハードディスク205にインストールされたプログラム、またはドライブ209に装着されたリムーバブル記録媒体211から読み出されてハードディスク205にインストールされたプログラムを、RAM(Random Access Memory)204にロードして実行する。これにより、CPU202は、上述したフローチャートにしたがった処理、あるいは上述したブロック図の構成により行われる処理を行う。そして、CPU202は、その処理結果を、必要に応じて、例えば、入出力インタフェース210を介して、LCD(Liquid Crystal Display)やスピーカ等で構成される出力部206から出力、あるいは、通信部208から送信、さらには、ハードディスク205に記録等させる。
ここで、本明細書において、コンピュータに各種の処理を行わせるためのプログラムを記述する処理ステップは、必ずしもフローチャートとして記載された順序に沿って時系列に処理する必要はなく、並列的あるいは個別に実行される処理(例えば、並列処理あるいはオブジェクトによる処理)も含むものである。
また、プログラムは、1のコンピュータにより処理されるものであっても良いし、複数のコンピュータによって分散処理されるものであっても良い。さらに、プログラムは、遠方のコンピュータに転送されて実行されるものであっても良い。
なお、本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。
10 学習装置, 11 モデル記憶部, 12 モデル更新部, 20 生成装置, 21 時系列データ予測部, 22 目標決定部, 23 誤差計算部, 24 時系列データ探索部, 1001ないし100K 学習モジュール, 1111ないし111K 記憶部, 1121ないし112K 学習装置, 1131ないし113K 生成装置, 120 モデルパラメータ共有部, 201 バス, 202 CPU, 203 ROM, 204 RAM, 205 ハードディスク, 206 出力部, 207 入力部, 208 通信部, 209 ドライブ, 210 入出力インタフェース, 211 リムーバブル記録媒体