説明

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

【課題】より多くの時系列パターンを学習、予測できるようにする。
【解決手段】変換部12が、ロボット2から取得されたモーター81に関する8次元のデータmtと視覚センサー82に関する2次元のデータStを、グループ毎に、1峰性の確率分布のより高次元のモーター81に関する64次元のデータXi(t)と視覚センサー82に関する36次元のデータXi(t)に変換する。リカレントニューラルネットワーク11が、高次元のデータXi(t)から重み付け係数に基づいて、グループ毎に合計が1になるように、モーター81に関する64次元の予測値Yi(t)と視覚センサー82に関する36次元の予測値Yi(t)を演算する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は情報処理装置、情報処理方法、およびプログラムに関し、特に、より多くの時系列パターンを学習、予測できるようにした情報処理装置、情報処理方法、およびプログラムに関する。
【背景技術】
【0002】
従来よりリカレントニューラルネットワークによりロボットその他の対象を制御することが研究されている(例えば、非特許文献1)。
【0003】
従来のリカレントニューラルネットワークにおいては、例えば10次元の時系列データを学習し、予測値を演算する場合、10個の出力ニューロンが用意され、それぞれのニューロンが対応する次元の値を表現するというような情報記述方法が採用されていた。
【0004】
しかしながら、このような記述方法では、学習する時系列データ間に重なり合った部分や似通った部分が生じ易く、結果的にリカレントニューラルネットワーク内での表現に混乱や矛盾が生じ、結局破綻してしまうことが多かった。
【0005】
そこで、同時に複数の時系列データを学習できるように、複数のモジュールを用いたり、リカレントニューラルネットワークの外部にパターンを切り替える装置を設け、その外部装置を切り替えて学習させることにより、同時に複数の時系列データを学習できるようにする試みがなされていた。
【0006】
【非特許文献1】社団法人電子情報通信学会 信学技報PRMU2002-218(2003-02)「リカレントニューラルネットワークを用いた車両検出」p.43-48
【発明の開示】
【発明が解決しようとする課題】
【0007】
しかしながら、外部装置により切り替えるようにした場合においても、実際には3種類程度の時系列パターンしか学習することができなかった。
【0008】
本発明は、このような状況に鑑みてなされたものであり、より多くの時系列パターンを学習し、予測できるようにするものである。
【課題を解決するための手段】
【0009】
本発明の一側面は、取得されたデータを、グループ毎に、1峰性の確率分布のより高次元のデータに変換する高次元変換部と、高次元のデータから重み付け係数に基づいて、グループ毎に合計が1になるように予測値を演算するリカレントニューラルネットワークとを備える情報処理装置である。
【0010】
本発明の一側面においては、高次元変換部が、取得されたデータを、グループ毎に、1峰性の確率分布のより高次元のデータに変換し、リカレントニューラルネットワークが、高次元のデータから重み付け係数に基づいて、グループ毎に合計が1になるように予測値を演算する。
【発明の効果】
【0011】
以上のように、本発明の一側面によれば、より多くの時系列パターンを学習、予測することができる。
【発明を実施するための最良の形態】
【0012】
以下、図を参照して本発明の実施の形態について説明する。
【0013】
図1は本発明を適用した情報処理装置の一実施の形態の構成を示す。この情報処理装置1は、予測処理のため、リカレントニューラルネットワーク(以下、RNNとも記述する)11および変換部12,13を有する他、RNN11の学習のため、教示用データ取得部21、変換部22、および演算部23を有している。
【0014】
この実施の形態においては、情報処理装置1がロボット2を制御する。このロボット2はモーター81と視覚センサー82を有している。モーター81は、ロボット2の所定の部位を駆動することで、ロボット2に対して所定の動作を実行させる。モーター81はセンサリーモーターであり、駆動の結果に対応する信号をセンサリフィードバックとして外部に出力する。視覚センサー82は所定のオブジェクトを観察し、その観察結果に対応する信号をセンサリフィードバックとして出力する。
【0015】
この実施の形態の場合、モーター81の駆動の結果に対応する信号として8次元のデータmtが出力され、視覚センサー82のオブジェクトの観察結果に対応する信号として2次元のデータStが出力される。従って、ロボット2から合計10次元のデータが、センサリフィードバックとして変換部12に出力される。
【0016】
取得されたデータを、グループ毎に、1峰性の確率分布のより高次元のデータに変換する高次元変換部としての変換部12は、トポロジープリザービングマップ(topology preserving map)(以下、TPMと記述する)61,62を有する。TPM61は、ロボット2から入力されたモーター81に関する8次元のデータmtを、1峰性の確率分布の64次元のデータXi(t)に変換する。TPM62は、ロボット2から入力された視覚センサー82に関する2次元のデータStを、1峰性の確率分布の36次元のデータXi(t)に変換する。結局変換部12は、ロボット2から入力された10次元のデータを、100次元のデータXi(t)に変換する。
【0017】
高次元のデータから重み付け係数に基づいて、グループ毎に合計が1になるように予測値を演算するRNN11は、中間層を有しておらず、入力層31と出力層32の2層構造とされている。
【0018】
入力層31は、ニューロン41とニューロン42により構成されている。ニューロン41は、変換部12のTPM61からの64次元のデータXi(t)を入力する64個のニューロンと、変換部12のTPM62からの36次元のデータXi(t)を入力する36個のニューロンの合計100個のニューロンで構成される。ニューロン42は、出力層32からコンテキストループ56を介して供給される80次元のコンテキストが入力される80個のニューロンで構成される。
【0019】
ニューロン41は、変換部12のTPM61から供給される64次元のデータと、TPM62からから供給される36次元のデータの合計100次元のデータXi(t)を、出力層32のニューロン51,52に供給する。またニューロン42は、出力層32からフィードバックされた80次元のコンテキストCi(t−1)を、出力層32のニューロン51,52に供給する。
【0020】
出力層32のニューロン51は、100個のニューロンから構成され、自身の内部状態をフィードバックするセルフフィードバックループ51Aを有している。すなわち、ニューロン51の内部状態(internal state)は、入力層31のニューロン41,42からのデータを重み付け係数に基づき重み付けした値と、自身の過去の内部状態の履歴に基づき決定される。100次元のデータXi(t)に対する重み付け係数はωbxijとされ、80次元のコンテキストに対する重み付け係数はωbcijとされる。これらの重み付け係数により重み付けされ、出力された100次元のデータXui(t)は、演算部53,54に64次元と36次元に分配して供給される。
【0021】
出力層32のニューロン52は、80個のニューロンから構成され、自身の内部状態をフィードバックするセルフフィードバックループ52Aを有している。すなわち、ニューロン52の内部状態(internal state)は、入力層31のニューロン41,42からのデータを重み付け係数に基づき重み付けした値と、自身の過去の内部状態の履歴に基づき決定される。100次元のデータXi(t)に対する重み付け係数はωuxijとされ、80次元のコンテキストに対する重み付け係数はωucijとされている。これらの重み付け係数により重み付けされた80次元のデータCui(t)は、演算部55に供給される。
【0022】
このように、この実施の形態の場合、時間特性が異なる2つの時系列パターンを表現することができるようにするために、RNN11はセルフフィードバックループを有する時間連続型のRNN(continuous time RNN)(以下、CTRNNとも記述する)とされる。
【0023】
出力層32の演算部53は、ニューロン51により重み付けされた100次元のデータXui(t)のうちの、64次元のデータの予測値としてのアクティベーションをソフトマックス関数により演算する。演算された64次元の予測値Yi(t)は演算部23と、変換部13のTPM71に供給される。
【0024】
演算部54は、ニューロン51により重み付けされた100次元のデータXui(t)のうちの、残りの36次元のデータの予測値としてのアクティベーションをソフトマックス関数により演算する。演算された36次元の予測値Yi(t)は演算部23と、変換部13のTPM72に供給される。
【0025】
演算部55は、ニューロン52により重み付けされた80次元のコンテキストの内部状態Cui(t)からコンテキストアクティベーションCi(t)を演算する。演算されたCi(t)は、コンテキストとしてコンテキストループ56を介して入力層31のニューロン42にフィードバックされる。
【0026】
教示用データ取得部21は図示せぬ装置あるいは記憶部から、モーター81のセンサリフィードバックとしての出力データmtに対応する8次元の教示用データm*(t+1)と、視覚センサー82のセンサリフィードバックとしての出力データStに対応する2次元の教示用データS*(t+1)を取得する。取得された教示用データを、グループ毎に、1峰性の確率分布のより高次元のデータに変換する他の高次元変換部としての変換部22は、変換部12と同様の構成とされ、TPM101とTPM102を有している。TPM101は入力されたモーター81に関する8次元の教示用データm*(t+1)を64次元の教示用データY*i(t)に変換する。TPM102は入力された視覚センサー82に関する2次元の教示用データS*(t+1)を36次元の教示用データY*i(t)に変換する。
【0027】
演算部23は、出力層32の演算部53から供給された64次元の予測値Yi(t)および演算部54から供給された36次元の予測値Yi(t)の合計100次元の予測値Yi(t)と、変換部22のTPM101から供給された64次元の教示用データY*i(t)およびTPM102から供給された36次元の教示用データY*i(t)の合計100次元の教示用データY*i(t)との誤差を演算する。演算部23は、演算した誤差に基づいて、出力層32の重み付け係数を修正する。
【0028】
予測値を、変換部12により取得されたデータmt,Stと同じ次元に変換する低次元変換部としての変換部13はTPM71,72を有し、変換部12における場合と逆の次元の変換を行う。すなわち、TPM71は出力層32の演算部53から供給された64次元の予測値Yi(t)を8次元のデータに変換し、アクションとしてロボット2に出力する。TPM72は出力層32の演算部54から供給された36次元の予測値Yi(t)を2次元のデータに変換し、アクションとしてロボット2に出力する。
【0029】
ロボット2は、TPM71からの8次元のデータに基づき、モーター81の動作を制御するとともに、TPM72からの2次元のデータに基づき、視覚センサー82の動作を制御する。
【0030】
次に図2のフローチャートを参照して、RNN11の学習処理について説明する。
【0031】
ステップS1において演算部23は、処理回数を表す変数tを0に設定する。ステップS2において変換部12は、データを取得し、次元を変換する。学習処理の場合、ロボット2は実際には使用されず、メンタルシミュレーションが行われ、アクションがそのままセンサリフィードバックとして使用される。t=0ではない場合、後述するステップS8の処理で生成されたデータm(t),S(t)を変換部12により次元変換してX(t)が生成される。また前の時刻の演算部55の演算結果C(t−1)が取得される。
【0032】
これに対してt=0である場合、初期値Xu(init),Cu(init)が取得され、それぞれが演算部53,54によりソフトマックス関数またはシグモイド関数で演算される。演算された64次元と36次元の結果が、変換部13により、8次元のデータと2次元のデータに変換され、センサリフィードバックとされる。
【0033】
変換部12のTPM61は、センサリフィードバック(初期値)としての8次元のデータmtを取得し、これを次のソフトマックス関数の式(1)に従って、1峰性の確率分布のより高次元(この実施の形態の場合64次元)のデータXi(t)に変換する。すなわち、64次元の出力の合計が1になるように変換される。これにより、近似したものをより近くにマップし、違うものをより遠くにマップするという、ウィナーテークオール的な変換が行われる。その結果、出力の最大値が1.0に近づけられ、その他の出力が0.0に近づけられて、データ間の重なり合いが減少し、無理なく自己組織化が可能となる。
【0034】
【数1】

【0035】
上記式(1)において、δは定数である。mtは、取得されたモーター81に関する8次元のデータであり、次の式(2)で表される。
【0036】
【数2】

【0037】
j(j=1,2,・・・,64)は、次の式(3)で表されるように、参照ベクトルKの要素である。
【0038】
【数3】

【0039】
参照ベクトルKの要素kiは、図3に示されるように、8×8個のマトリックス状の各ノードの位置に対応して配置されており、次の式(4)で表されるように、8個の要素μij(j=1,2,・・・,8)により構成される。
【0040】
【数4】

【0041】
TPM62においては、参照ベクトルKの要素kiは、図4に示されるように、6×6個のマトリックス状の各ノードの位置に対応して配置されている。そして同様に、TPM62は視覚センサー82のセンサリフィードバック(初期値)としての2次元のデータをより高次元(この実施の形態の場合36次元)のデータに変換する。すなわち、36次元の出力の合計が1になるように変換される。その処理は、上述したTPM61の場合と同様であるのでその説明は省略する。
【0042】
TPM62においてもTPM61と同様に、式(1)乃至式(4)が用いられる。ただし、式(1)においては、モーター81の8次元のデータに対応するデータmtに代えて、視覚センサー82の2次元のデータに対応するデータStが用いられ、式(2)においては、視覚センサー82のデータに対応するデータStの要素は2次元とされ、式(3)においては、参照ベクトルKの要素kiの数は36個とされ、式(4)においては、参照ベクトルKの要素kiの要素μiの数は2個とされる。
【0043】
すなわち、データはモーター81に関するグループ、あるいは視覚センサー82に関するグループといったグループ毎に、その出力の合計が1になるように調整される。
【0044】
なお、TPM61,62は学習処理を行うことで実現される。その学習処理については、図5のフローチャートを参照して後述する。
【0045】
データXi(t),Cj(t−1)は入力層31により取得される。すなわち、入力層31のニューロン41がTPM61からの64次元のデータXi(t)と、TPM62からの36次元のデータXi(t)の、合計100次元のデータXi(t)を取得する。またニューロン42が、コンテキストループ56によりフィードバックされる80次元のコンテキストCj(t−1)を取得する。
【0046】
ステップS3において出力層の内部状態を更新する処理が行われる。すなわち、出力層32のニューロン51は次の式(5)に基づいて内部状態Xui(t)を更新する。式(5)の右辺の第1項は、セルフフィードバックループ51Aにより、現在の内部状態Xui(t)が、過去の内部状態Xui(t−1)により決定されることを表す。第2項は、現在の内部状態Xui(t)が、入力層31のニューロン41からの100次元のデータXj(t)に重み付け係数ωbxijにより重み付けした値と、80次元のコンテキストCj(t−1)に重み付け係数ωbcijにより重み付けした値との積和により決定されることを表す。
【0047】
【数5】

【0048】
すなわちこの演算においては、ニューロン51の1個のニューロンiの時刻tにおける内部状態Xui(t)を得るために、時刻(t−1)におけるニューロンiの内部状態に時間係数を乗じたもの(1−1/τi)Xui(t−1)が演算される。さらに、入力層31のニューロン41のすべてのニューロンjの出力Xj(t)に、ニューロン41のニューロンjからニューロン51のニューロンiへの重み付け係数ωbxijに従って重み付けされた出力と、入力層31のニューロン42のすべてのニューロンjの出力Cj(t−1)に、ニューロン42のニューロンjからニューロン51のニューロンiへの重み付け係数ωbcijに従って重み付けされた出力の合計に、時間係数1/τiを乗じたものの合計が演算される。そしてそれらの演算値がさらに加算される。
【0049】
出力層32のニューロン52は次の式(6)に基づいて内部状態Cui(t)を更新する。式(6)の右辺の第1項は、セルフフィードバックループ52Aにより、現在の内部状態Cui(t)が、過去の内部状態Cuj(t−1)により決定されることを表す。第2項は、現在の内部状態Cui(t)が、入力層31のニューロン41からの100次元のデータXj(t)に重み付け係数ωuxijにより重み付けした値と、80次元のコンテキストCj(t−1)に重み付け係数ωucijにより重み付けした値との積和により決定されることを表す。
【0050】
【数6】

【0051】
すなわちこの演算においては、ニューロン52の1個のニューロンiの時刻tにおける内部状態Cui(t)を得るために、時刻(t−1)におけるニューロンiの内部状態に時間係数を乗じたもの(1−1/τi)Cui(t−1)が演算される。さらに、入力層31のニューロン41のすべてのニューロンjの出力Xj(t)に、ニューロン41のニューロンjからニューロン52のニューロンiへの重み付け係数ωuxijに従って重み付けされた出力と、入力層31のニューロン42のすべてのニューロンjの出力Cj(t−1)に、ニューロン42のニューロンjからニューロン52のニューロンiへの重み付け係数ωucijに従って重み付けされた出力の合計に、時間係数1/τiを乗じたものの合計が演算される。そしてそれらの演算値がさらに加算される。
【0052】
式(5),式(6)から明らかなように内部状態Xui(t),Cui(t)は、時定数τiの値が大きいほど、(1−1/τi)の値が大きくなるので、過去の内部状態から大きな影響を受ける。
【0053】
連続時間型のリカレントニューラルネットワークであるRNN11は、時定数τiで表される時間特性を有するが、この実施の形態の場合、式(5)で表されるニューロン51の内部状態Xui(t)を決定する時定数τiとして、1つの値(例えばτi=2)が設定される。これに対して、式(6)で表されるニューロン52の内部状態Cui(t)を決定する時定数τiとして、2つの異なる値が設定される。例えば、80個(次元)のニューロンのうち、次元がi=1乃至60の60個のニューロンについては、時定数がτi=5(ファーストコンテキスト)とされ、次元がi=61乃至80の20個のニューロンについては、時定数がτi=70(スローコンテキスト)とさる。
【0054】
標的とされる時系列データは、短い時間スケールで変化する運動と、長い時間スケールで変化する運動の両方を含む複雑さを有していることが多い。時定数を1つに設定すると、2つの時間スケールの一方にしか対応できない。これに対して、2つの異なる時定数を設定して、時間特性の異なるニューロングループを用意することで、時間スケールの違いに応じた役割分担がRNN11自体に自己組織的に構成される。
【0055】
その結果、短い時間スケールで変化するニューロングループにより、複数の時系列パターンに出現するchunkに相当する部分が表現され、長い時間スケールで変化するニューロングループにより、より抽象化されたレベルでのシーケンス、例えばchunkの組み合わせの順序や切り替えが表現される。すなわち、時間特性が異なる2つの時系列パターンを表現することが可能になる。
【0056】
なお、実験の結果、時間特性が異なる2つの時系列パターンを表現可能にするには、大きい時定数としてのスローの時定数τが、小さい時定数としてのファーストの時定数τの5倍以上大きければよいことが判った。
【0057】
ステップS4において出力層のアクティベーションを演算する処理が行われる。すなわち、演算部53はニューロン51により更新された100次元の内部状態Xui(t)のうちのi=1乃至64のモーター81に関する64次元の部分から、次のソフトマックス関数の式(7)に基づいてアクティベーションを演算する。これにより出力される64次元の予測値Yi(t)の合計は1になるように調整される。
【0058】
【数7】

【0059】
同様に、演算部54はニューロン51により更新された100次元の内部状態Xui(t)のうちのi=65乃至100の視覚センサー82に関する36次元の部分から、ソフトマックス関数の式(7)に基づいてアクティベーションを演算する。これにより出力される36次元の予測値Yi(t)の合計は1になるように調整される。
【0060】
すなわち、出力される予測データは、モーター81に関するデータのグループ、あるいは視覚センサー82に関するデータのグループといった各グループ毎に、その予測値の合計が1になるように調整される。
【0061】
なお、出力の合計が1になるようにするには、ソフトマックス関数を用いるのに代えて、出力をその総和で除算するようにしてもよい。
【0062】
一方、演算部55はニューロン52により更新された内部状態Cui(t)から、次のシグモイド関数の式(8)に基づいてアクティベーションを演算する。すなわち式(8)の予測値Ci(t)が演算される。
【0063】
【数8】

【0064】
ステップS5において教示用データ取得部21は、あらかじめ用意されている教示用データを取得する。この教示用データは、モーター81に関する8次元のデータm*i(t+1)と、視覚センサー82に関する2次元のデータS*i(t+1)の、合計10次元のデータにより構成されている。
【0065】
ステップS6において変換部22は教示用データの次元を変換する。すなわち、変換部22のTPM101は、モーター81に関する8次元の教示用データm*i(t+1)を64次元のデータY*i(t)に変換する。同様に、TPM102は、視覚センサー82に関する2次元の教示用データS*i(t+1)を36次元のデータY*i(t)に変換する。この変換処理は、ステップS2における変換部12による変換処理と同様の処理である。
【0066】
ステップS7において演算部23は、ステップS4で出力層32より出力された100次元の予測データYi(t)と、ステップS6で次元変換された100次元の教示用データY*i(t)の誤差を演算し、記憶する。この実施の形態においては、誤差Eは,出力層32より出力された予測データYi(t)と教示用データY*i(t)の差分ではなく、次のKL−divergenceの式(9)により演算される。
【0067】
【数9】

【0068】
誤差Eを式(9)で定義すると、教示用データY*i(t)が小さければ、Y*i(t)/Yi(t)の値が大きくても誤差Eの全体に与える影響は小さくなる。すなわち、教示用データY*i(t)が大きいほど、Y*i(t)/Yi(t)の値が誤差Eに大きく影響する。
【0069】
このように、誤差Eを確率分布の距離尺度である式(9)で定義することで、誤差Eを従来のように差分で表現する場合に較べて、よりもっともらしさの高い解、すなわち最適な重み付け係数を得ることができる。また、誤差Eを確率分布の式で定義することにより、ステップS2のソフトマックス関数に従って、グループ毎に、その出力の合計が1になるように次元を増加させる処理、およびステップS4の各グループ毎に合計が1になるように予測値を演算する処理とあいまって、より多くの時系列パターンを学習、予測することが可能になる。
【0070】
ステップS8において出力層のアクティベーションの次元を変換する処理が行われる。すなわち、変換部13のTPM71は、演算部53により演算された64次元の予測値Yi(t)を、式(10)に基づいて8次元のデータmtに変換する。
【0071】
【数10】

【0072】
この変換は、変換部12における変換と逆の変換となる。なお、式(10)において、iは1乃至64の値をとり、lは、モーター81に関するデータの次元に対応し、1乃至8の値をとる。
【0073】
同様に、TPM72も、演算部54より供給される視覚センサー82に関する36次元のデータYi(t)を、2次元のデータに変換する。この場合、式(10)において、iは1乃至36の値をとり、lは、視覚センサー82に関するデータの次元に対応し、1,2の値をとる。
【0074】
このようにして生成されたデータが次のタイミングで行われるステップS2の処理で使用される。
【0075】
ステップS9において演算部23は、変数tが予め設定されている値Tと等しいかを判定する。変数tが値Tと等しくない場合、すなわち処理回数がまだT回に達していない場合、ステップS10において演算部23は、変数tを1だけインクリメントする。その後処理はステップS2に戻り、それ以降の処理が繰り返される。この繰り返しの処理では、上述したようにステップS2においては、t=0ではない場合の処理が実行される。
【0076】
ステップS9において変数tが値Tと等しいと判定された場合、すなわち処理回数がT回に達した場合、ステップS11において演算部23は、バックプロパゲーションスルータイム法で重み付け係数を更新する。この更新は、次の式(11)に従って行われる。式(11)においてαは所定の係数である。
【0077】
【数11】

【0078】
学習の目的は誤差Eを最小化する重み付け係数ωijを見つけることである。このため、重み付け係数ωijを変化させたときの誤差Eの増加量∂E/∂ωijに従って、−∂E/∂ωijの方向に重み付け係数ωijを変化させていく処理が行われる。式(14)乃至式(17)に示す増加量∂E/∂ωij(∂E/∂ωbxij,∂E/∂ωbcij,∂E/∂ωuxij,∂E/∂ωucij,)は、次の式(12)と式(13)を、時間Tから反復して計算することで求めることができる。
【0079】
【数12】

【0080】
すなわち、時系列シーケンスの始まりの時刻tを0、終わりの時刻tをTとする。式(9)から明らかなように、誤差Eは時刻t=0から時刻t=TまでのE(t)の総和である。式(14)乃至式(17)に示されているように、増加量∂E/∂ωijは、∂E/∂X(t),∂E/∂C(t)の時間についての総和から求められるが、式(12)と式(13)に示されているように、∂E/∂X(t),∂E/∂C(t)は、時刻(t+1)における∂E/∂X(t+1),∂E/∂C(t+1)から求められる漸化式の形で与えられる。
【0081】
そこで、式(12)と式(13)に従って、最後の時刻Tにおける∂E/∂X(T),∂E/∂C(T)として初期値を与えることで∂E/∂X(T−1),∂E/∂C(T−1)が演算され、以下同様に、式(12)と式(13)の演算を繰り返すことで、∂E/∂X(T−2),∂E/∂C(T−2),∂E/∂X(T−3),∂E/∂C(T−3),・・・と時刻t=0までの値が演算される。そして、式(14)乃至式(17)に従って、それらの演算値を積和することで∂E/∂ωijが求められる。
【0082】
式(13)のf(x)は、コンテキストCi(t)のアクティベーションの演算に用いられるシグモイド関数であり、δikはKronecker deltaであり、i=kのとき1、それ以外のとき0となる。
【0083】
なお、バックプロパゲーションスルータイム法による重み付け係数を更新する処理は、100次元まとめて行われる。
【0084】
ステップS12において演算部23は、学習の回数があらかじめ設定されている所定の回数に達したかを判定する。まだ所定の回数に達していない場合、処理はステップS1に戻り、それ以降の処理が繰り返される。学習処理の回数が所定の回数に達した場合、学習処理は終了する。
【0085】
なお、誤差が十分小さくなったとき、学習処理を終了させるようにすることもできる。
【0086】
次に図5のフローチャートを参照して、TPM61の学習処理について説明する。
【0087】
ステップS41において、変換部12は、次の式(18)で表されるロボット2のモーター81のデータに対応する8個のサンプルのデータmtを取得する。
【0088】
【数13】

【0089】
ステップS42において変換部12は、次の式(19)で表されるように、サンプルのデータmtとノードi(図3の8×8個のノードのうちのi番目のノード)の参照ベクトルki(式(4))の差が最小となる勝者ノードのkcを求める。
【0090】
【数14】

【0091】
ステップS43において変換部12は、勝者ノードであるc番目のノードを中心に、近傍の参照ベクトルkiを更新式に従って更新する。更新式は式(20)と式(21)に示されている。近傍関数である式(21)において、αは学習レート、δはパラメータ定数を表す。また式(21)の右辺の分子の||ri−rc||は、勝者ノードであるノードcからノードiまでの距離を表す。上記式に基づく更新により、勝者ノードに近いノードほど強く学習が行われる。
【0092】
【数15】

【0093】
ステップS44において変換部12は、学習の回数が所定の回数に達したかを判定する。学習の回数がまだ所定の回数に達していない場合、処理はステップS41に戻り、それ以降の処理が繰り返される。学習の回数が所定の回数に達した場合、学習処理は終了される。
【0094】
以上のようにしてTPM61の学習処理が行われる。
【0095】
TPM62においても式(18)乃至式(21)を用いて同様の学習処理が行われる。ただし、式(18)においては、モーター81に対応するサンプルの8次元のデータmtではなく、視覚センサー82に対応するサンプルの2次元のデータStとされ、式(19)と式(20)においては、モーター81に対応するサンプルの8次元のデータmtに代えて、視覚センサー82に対応するサンプルの2次元のデータStが用いられる。
【0096】
TPM101,102,71,72においても同様の学習処理が行われる。
【0097】
次に図6のフローチャートを参照して、情報処理装置1によるロボット2の駆動処理について説明する。
【0098】
ステップS71において変換部12は、データを取得し、次元を変換する。すなわち、TPM61は、ロボット2のモーター81に関する8次元のデータmtを取得し、これを式(1)に従って、64次元のデータXi(t)に変換する。同様に、TPM62も視覚センサー82に関する2次元のデータStを取得し、これを式(1)に従って、36次元のデータXi(t)に変換する。
【0099】
ステップS72において入力層がXi(t),Cj(t−1)を取得する。すなわち、ニューロン41が、TPM61で変換されたモーター81に関する64次元のデータXi(t)と、TPM62で変換された視覚センサー82に関する36次元のデータXi(t)の、合計100次元のデータXi(t)を取得する。またニューロン42がコンテキストループ56によりフィードバックされるコンテキストCj(t−1)を取得する。
【0100】
ステップS73において出力層の内部状態を更新する処理が行われる。すなわち、ニューロン51が式(5)に従って、内部状態Xui(t)を更新する。またニューロン52が式(6)に従って、内部状態Cui(t)を更新する。
【0101】
ステップS74において出力層のアクティベーションを演算する処理が行われる。すなわち、演算部53は、式(7)に従って、100次元の内部状態Xui(t)のうちのi=1乃至64のモーター81に関する64次元の部分から、ソフトマックス関数の式(7)に基づいてアクティベーションを演算する。演算部54は、式(7)に従って、100次元の内部状態Xui(t)のうちのi=65乃至100の視覚センサー82に関する36次元の部分から、ソフトマックス関数の式(7)に基づいてアクティベーションを演算する。
【0102】
演算部55は、シグモイド関数の式(8)に従って、アクティベーションを演算する。このアクティベーションとしての予測値Ci(t)は、コンテキストループ56により入力層31のニューロン41にフィードバックされる。
【0103】
ステップS75において変換部13は次元を変換する。この変換は、変換部12における変換と逆の変換となる。すなわち、TPM71は、式(10)に従って、演算部53より供給されるモーター81に関する64次元のデータYi(t)を、8次元のデータに変換する。なお、式(10)において、iは1乃至64の値をとり、lは、モーター81に関するデータの次元に対応し、1乃至8の値をとる。
【0104】
同様に、TPM72も、演算部54より供給される視覚センサー82に関する36次元のデータYi(t)を、2次元のデータに変換する。この場合、式(10)において、iは1乃至36の値をとり、lは、視覚センサー82に関するデータの次元に対応し、1,2の値をとる。
【0105】
変換されたデータはアクションとしてロボット2に供給される。
【0106】
ステップS76においてロボットを駆動する処理が実行される。すなわち、モーター81は、TPM71より供給される8次元のデータに基づいて駆動され、視覚センサー82は、TPM72より供給される2次元のデータに基づいて駆動される。
【0107】
ステップS77において変換部12は、終了が指示されたかを判定する。まだ終了が指示されてない場合には、処理はステップS71に戻り、それ以降の処理が繰り返される。終了が指示された場合、処理は終了される。
【0108】
RNN11の重み付け係数は適正に学習されている。従って、ロボット2の行動は適正に制御される。
【0109】
以上のように、この実施の形態においては、取得されたデータを、グループ毎に、1峰性の確率分布のより高次元のデータに変換し、高次元のデータから重み付け係数に基づいて、データのグループ毎に合計が1になるように予測値を演算するようにしたので、より多くの時系列パターンを学習、予測することができる。
【0110】
このように、より多くの時系列パターンを学習、予測することができるのは、次元数を増加することで、情報の直交性が増大するからと考えられる。すなわち、一般的に得られる教示用データの値のほとんどは、上下限ぎりぎりの値ではなく、所定の範囲のダイナミックレンジのうちの狭い一部の範囲に集中していることが多い。このことはダイナミックレンジが効率的に十分利用されていないことを意味する。
【0111】
そこで近いデータは近くに、遠いデータは遠い位置にマッピングするように次元を増加することで、すなわち1峰性の特性で演算により次元を増加することで、トポロジーを保持したまま次元を増加するようにすれば、少ない次元の空間で近接配置されていたデータ(ベクトル)を、多次元空間に分散して位置づけることができ、ベクトル相互の直交性が増加する(それまで近接していて識別が困難であったベクトルを識別することが可能になる)と考えられる。
【0112】
また、次元を増加するのにTPMを用いると、1峰性の特性を無理なく自己組織的に実現することが可能となる。
【0113】
例えば、図7に示されるように、ベクトルAとBを、2次元のxy座標上で比較すると、両者は近接しているため、その差異はわずかであり、両者の識別は困難である。しかし、z座標を増加し、ベクトルAをベクトルA’として3次元のxyz座標でベクトルBと比較すると、ベクトルA’とベクトルBとの差異は大きく表現することができ、ベクトルA’とベクトルBを識別することが容易になるのである。
【0114】
もちろんロボット2からの出力自体の次元を増加すればより適正な学習、予測が可能になる。しかしそのようにするには、センサーの数を多くする必要があり、構成が複雑となり、コスト高となる。また、配置することができるセンサーの数はハードウェアに依存し、必ずしも多くのセンサーを配置することができるとは限らない。さらに、例えば近傍に多くのセンサーを配置したとしても、ほとんど同じセンサー出力しか得られなければ、センサーの数を増加したことに対応する十分な効果は必ずしも得られない。また相互の関係が希薄なセンサーが多くなれば、その出力に基づき学習し、予測することが困難になる。
【0115】
これに対して、この実施の形態のように、少ないセンサー出力の次元を、グループ毎に、1峰性の特性で演算により増加するようにすれば、トポロジーを保持したまま次元を増加することができるので、構成を複雑にしたり、コスト高とすることなく、学習、予測が容易となる。
【0116】
図8と図9は、本発明を適用した実験の結果を表している。この実験においては、ロボット2に、ホームポジションからオブジェクトを上下に3回動かしてホームポジションに戻る動作を実行させている。
【0117】
図8は教示用データを、図9は予測値を、それぞれ表している。
【0118】
図8Aは、モーター81に関する低次元の(高次元変換する前の)教示用データm*(t)を表し、図9Aは、対応する(TPM71により低次元に変換された)予測値m(t)を表している。これらはロボット2の各部の関節角度を0乃至1の値で表している。実線は左腕回内回外、破線は左肘屈曲伸展、一点鎖線は右肩屈曲伸展、点線は右腕回内回外を、それぞれ表している。すなわち、8次元の内の4次元が示されている。
【0119】
図8Bは、視覚センサー82に関する低次元の(高次元変換する前の)教示用データS*(t)を表し、図9Bは対応する(TPM72により低次元変換された)予測値S(t)を表している。これらはロボット2が上下に動かすオブジェクトの位置を0乃至1の値で表している。実線と破線はオブジェクトのX,Y座標をそれぞれ表している。
【0120】
図8Cは、TPM101により高次元変換された、モーター81に関する64次元の教示用データY*i(t)(i=1乃至64)と、TPM102により高次元変換された、視覚センサー82に関する36次元の教示用データY*i(t)(i=65乃至100)を表している。図9Cは、図8Cに対応する、演算部53により演算された、モーター81に関する64次元の予測値Yi(t)(i=1乃至64)と、演算部54により演算された、視覚センサー82に関する36次元の予測値Yi(t)(i=65乃至100)を表している。いずれも、8×8個または6×6個のノードを縦方向に分割し、それを縦方向に配置した状態で表されている。各ノードの0乃至1のアクティビティの値がグレースケールで表されている。
【0121】
図9Dは、コンテキストアクティベーションCi(t)を表している。i=1乃至60は、式(6)のτi=5のファーストコンテキストの場合であり、i=61乃至80は、式(6)のτi=70のスローコンテキストの場合である。この場合も、各ノードの0乃至1のアクティビティの値がグレースケールで表されている。ファーストコンテキストの場合(i=1乃至60の場合)、短い時間で激しく変化し、スローコンテキストの場合(i=61乃至80の場合)、変化がゆっくりであることがわかる。
【0122】
この実験により、10次元のデータの学習と予測が適正に行われていることを確認することができた。
【0123】
なお、上記実施の形態における次元数、ニューロン数などは、例に過ぎず、本発明はそれらに限定されるものではない。
【0124】
上述した一連の処理は、ハードウェアにより実行させることもできるし、ソフトウエアにより実行させることもできる。一連の処理をソフトウエアにより実行させる場合には、そのソフトウエアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、プログラム記録媒体からインストールされる。
【0125】
コンピュータにインストールされ、コンピュータによって実行可能な状態とされるプログラムを格納するプログラム記録媒体は、磁気ディスク(フレキシブルディスクを含む)、光ディスク(CD-ROM(Compact Disc-Read Only Memory),DVD(Digital Versatile Disc)を含む)、光磁気ディスクを含む)、もしくは半導体メモリなどよりなるパッケージメディアであるリムーバブルメディア、または、プログラムが一時的もしくは永続的に格納されるROMやハードディスクなどにより構成される。プログラム記録媒体へのプログラムの格納は、必要に応じてルータ、モデムなどのインタフェースである通信部を介して、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の通信媒体を利用して行われる。
【0126】
なお、本明細書において、プログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
【0127】
また、本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。
【図面の簡単な説明】
【0128】
【図1】本発明の情報処理装置の一実施の形態の構成を示すブロック図である。
【図2】リカレントニューラルネットワークの学習処理を説明するフローチャートである。
【図3】トポロジープリザービングマップを説明する図である。
【図4】他のトポロジープリザービングマップを説明する図である。
【図5】トポロジープリザービングマップの学習処理を説明するフローチャートである。
【図6】ロボットの駆動処理を説明するフローチャートである。
【図7】ベクトルの多次元化を説明する図である。
【図8】実験に用いた教示用データを示す図である。
【図9】実験により得られた予測値を示す図である。
【符号の説明】
【0129】
1 情報処理装置, 2 ロボット, 11 リカレントニューラルネットワーク, 12,13 変換部, 21 教示用データ取得部, 22 変換部, 23 演算部, 31 入力層, 32 出力層, 41,42,51 ニューロン, 51A セルフィフィードバックループ, 52 ニューロン, 52A セルフィフィードバックループ, 53乃至55 演算部, 56 コンテキストループ, 61,62,71,72 トポロジープリザービングマップ, 81 モーター, 82 視覚センサー, 101,102 トポロジープリザービングマップ

【特許請求の範囲】
【請求項1】
取得されたデータを、グループ毎に、1峰性の確率分布のより高次元のデータに変換する高次元変換部と、
高次元の前記データから重み付け係数に基づいて、前記グループ毎に合計が1になるように予測値を演算するリカレントニューラルネットワークと
を備える情報処理装置。
【請求項2】
前記高次元変換部は、トポロジープリザービングマップにより変換を行う
請求項1に記載の情報処理装置。
【請求項3】
前記リカレントニューラルネットワークは、ソフトマックス関数を用いて合計が1になるように前記予測値を演算する
請求項2に記載の情報処理装置。
【請求項4】
取得された教示用データを、グループ毎に、1峰性の確率分布のより高次元の教示用データに変換する他の高次元変換部をさらに備え、
前記リカレントニューラルネットワークは、高次元の前記教示用データの値が大きいほど誤差の値が大きくなるように前記誤差を演算し、学習を行う
請求項3に記載の情報処理装置。
【請求項5】
前記リカレントニューラルネットワークは、KL-divergenceに基づいて前記誤差を演算する
請求項4に記載の情報処理装置。
【請求項6】
前記リカレントニューラルネットワークは、連続時間型のリカレントニューラルネットワークであり、コンテキストを演算するニューロンは、その値が大きいほど、過去の内部状態の影響を大きくする時定数として、複数の値を有する
請求項5に記載の情報処理装置。
【請求項7】
複数の前記時定数のうちの大きい時定数は、小さい時定数の5倍以上の大きさである
請求項6に記載の情報処理装置。
【請求項8】
前記予測値を、取得された前記データと同じ次元に変換する低次元変換部をさらに備える
請求項1に記載の情報処理装置。
【請求項9】
高次元変換部が、取得されたデータを、グループ毎に、1峰性の確率分布のより高次元のデータに変換し、
リカレントニューラルネットワークが、高次元の前記データから重み付け係数に基づいて、前記グループ毎に合計が1になるように予測値を演算する
ステップを含む情報処理装置の情報処理方法。
【請求項10】
取得されたデータを、グループ毎に、1峰性の確率分布のより高次元のデータに変換し、
高次元の前記データから重み付け係数に基づいて、前記グループ毎に合計が1になるように予測値を演算する
処理をコンピュータに実行させるプログラム。

【図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


【公開番号】特開2009−245236(P2009−245236A)
【公開日】平成21年10月22日(2009.10.22)
【国際特許分類】
【出願番号】特願2008−92018(P2008−92018)
【出願日】平成20年3月31日(2008.3.31)
【新規性喪失の例外の表示】特許法第30条第1項適用申請有り 平成19年11月27日 独立行政法人理化学研究所主催の「BSI Retreat」に文書をもって発表
【出願人】(503359821)独立行政法人理化学研究所 (1,056)