(57)【特許請求の範囲】
【請求項１】
モデル化対象であるロボットがおかれている環境の所定の物理量をセンサによりセンシングすることによって検出された観測信号を用いて学習を行いHMMを生成する複数の生成手段と、
前記生成手段により生成されたそれぞれのHMMの状態を表す状態ベクトルの時系列を記録する記録手段と、
前記記録手段に記録された前記状態ベクトルの時系列に基づいて、前記生成手段により生成されたHMMのうちの第１のHMMにおいて生じた第１のノードから第２のノードへの状態遷移の前における、単数または複数の第２のHMMの状態を表す第３のノードを検出する検出手段と、
前記検出手段による検出結果に基づいて、前記第１のHMMの前記第１のノードと前記第２のHMMの前記第３のノードが同時に現在状態を表すノードになり、次の時刻の前記第１のHMMの状態を表すノードが前記第２のノードに遷移した回数である第１の回数を、前記第１のHMMの前記第１のノードと前記第２のHMMの前記第３のノードが同時に現在状態を表すノードになった回数である第２の回数で割ることによって求められる条件付確率を、前記第１のHMMの前記第１のノードと同時に現在状態を表すノードになった複数の前記第２のHMMの前記第３のノードについて算出し、それぞれのHMMの状態間の因果関係を算出した前記条件付確率により表すようにして、前記ロボットの行動決定に用いられるそれぞれのHMMの状態間の因果関係を推定する推定手段と
を備える情報処理装置。
【請求項２】
前記推定手段は、時間の経過に応じて１未満の値を前記第１の回数と前記第２の回数に乗算することによって、前記第１の回数と前記第２の回数をそれぞれ所定の減衰率で減衰させる
請求項１に記載の情報処理装置。
【請求項３】
前記推定手段は、算出した前記条件付確率と、前記第２の回数と、前記条件付確率の推定誤差の初期値として与えられる確率とによって求まる前記条件付確率の誤差の分だけ確率を修正した確率を、最終的な前記条件付確率として算出する
請求項１に記載の情報処理装置。
【請求項４】
CPUを備える情報処理装置の情報処理方法において、
モデル化対象であるロボットがおかれている環境の所定の物理量をセンサによりセンシングすることによって検出された観測信号を用いて学習を行い複数のHMMを前記CPUが生成し、
生成したそれぞれのHMMの状態を表す状態ベクトルの時系列を前記CPUが記録手段に記録させ、
前記記録手段に記録された前記状態ベクトルの時系列に基づいて、生成したHMMのうちの第１のHMMにおいて生じた第１のノードから第２のノードへの状態遷移の前における、単数または複数の第２のHMMの状態を表す第３のノードを前記CPUが検出し、
検出結果に基づいて、前記第１のHMMの前記第１のノードと前記第２のHMMの前記第３のノードが同時に現在状態を表すノードになり、次の時刻の前記第１のHMMの状態を表すノードが前記第２のノードに遷移した回数である第１の回数を、前記第１のHMMの前記第１のノードと前記第２のHMMの前記第３のノードが同時に現在状態を表すノードになった回数である第２の回数で割ることによって求められる条件付確率を、前記第１のHMMの前記第１のノードと同時に現在状態を表すノードになった複数の前記第２のHMMの前記第３のノードについて算出し、それぞれのHMMの状態間の因果関係を算出した前記条件付確率により表すようにして、前記ロボットの行動決定に用いられるそれぞれのHMMの状態間の因果関係を前記CPUが推定する
ステップを含む情報処理方法。
【請求項５】
モデル化対象であるロボットがおかれている環境の所定の物理量をセンサによりセンシングすることによって検出された観測信号を用いて学習を行い複数のHMMを生成し、
生成したそれぞれのHMMの状態を表す状態ベクトルの時系列を記録手段に記録させ、
前記記録手段に記録された前記状態ベクトルの時系列に基づいて、生成したHMMのうちの第１のHMMにおいて生じた第１のノードから第２のノードへの状態遷移の前における、単数または複数の第２のHMMの状態を表す第３のノードを検出し、
検出結果に基づいて、前記第１のHMMの前記第１のノードと前記第２のHMMの前記第３のノードが同時に現在状態を表すノードになり、次の時刻の前記第１のHMMの状態を表すノードが前記第２のノードに遷移した回数である第１の回数を、前記第１のHMMの前記第１のノードと前記第２のHMMの前記第３のノードが同時に現在状態を表すノードになった回数である第２の回数で割ることによって求められる条件付確率を、前記第１のHMMの前記第１のノードと同時に現在状態を表すノードになった複数の前記第２のHMMの前記第３のノードについて算出し、それぞれのHMMの状態間の因果関係を算出した前記条件付確率により表すようにして、前記ロボットの行動決定に用いられるそれぞれのHMMの状態間の因果関係を推定する
ステップを含む処理をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法、およびプログラムに関し、特に、事象間の因果関係を、事象の集合を超えて推定することができるようにした情報処理装置、情報処理方法、およびプログラムに関する。
【背景技術】
【０００２】
因果推定に関連する研究は大きく２つに分けられる。１つ目は、連続空間内で、ある結果が変数に大きな影響を与える原因変数（次元）、あるいはその変数の範囲を特定しようとするものである。２つ目は、離散事象間の相互関係の中から因果関係を見つけ出そうとするものである。事象には、状態と、ある状態から他の状態への遷移が含まれる。
【０００３】
前者のアプローチとしては、候補変数のみによる目的変数の予測器を構成し、その予測誤差を評価尺度として最適な原因変数を特定し、原因変数による目的変数の制御器を構成するようなアプローチが多く見られる。
【０００４】
この課題として、予測誤差の最適な評価方法が必ずしも自明でない点、決定論的なアプローチとなり、確率的な事象の取り扱いが困難である点などが挙げられる。また、次元数が多い場合は探索次元が爆発してしまうという難しさもあるが、これは必ずしもこの方法に特有のものではない。
【０００５】
一方、後者のアプローチとしては、ベイジアンネットなどのグラフィカルモデルで精力的に研究されているアプローチがある。例えば、（１）関係事象の絞り込み、（２）事象間の有向グラフ構造の決定、（３）有向グラフ構造のもとでの確率分布パラメータの推定、の手順の処理が行われることが多い。各ステップの実現には、事前知識の導入やヒューリスティクスの利用を含め、数多くの手法が提案されている。現実的には、モデルの次元などの複雑さに対して、利用できるデータ数が少ない場合が多く、そのような場合、学習の安定性が課題になる。
【０００６】
因果関係の利用（Exploitation）と因果関係の探索（Exploration）の間のトレードオフについて述べる。
【０００７】
因果関係の学習に利用できるデータは、（１）事前に与えられ、変更できないもの、（２）自らが能動的にサンプリングした結果として得られるもの、の２種類に分類される。
【０００８】
例えば、未知環境で、ロボットなどのエージェントが自律的に行動する場合に得られるデータは上記（２）に相当する。このとき、得られるデータの質はエージェントの行動戦略に大きく依存する。
【０００９】
優秀な行動戦略のもとで良質なデータが得られた場合は、精度の高い因果関係を推定することができ、それを利用してさらに適切な振る舞いをすることで、より質の高いデータを得る、というポジティブスパイラルが発生する。これに対し、不適当な行動戦略のもとでは、質が低く情報量の少ないデータしか得られないため、十分な因果関係を推定することができず、いつまで経っても、不適切な行動をとってしまうことから脱却できないことある。
【００１０】
それでは、エージェントの行動戦略はどのように定めたらよいのだろうか。このときに直面するジレンマの１つが、因果関係の利用と探索の間のトレードオフと呼ばれるものである。
【００１１】
これは、ある方法（行動）ばかりに固執していると、一見、不適そうであっても実はもっとうまくいく方法であるのにそれを見逃してしまい、結果として得られたはずの利得を失ってしまうことがある一方で、あまり良くないように見える方法ばかり試すというのは明らかに準最適であり、本来得られたはずの利得を確実に失ってしまうことになるというものである。現時点で最も良いと判断される方法が本当に最適な方法かは現時点では分からないということに起因している。
【００１２】
このトレードオフを解決するための方法として、ε-greedy、softmax法など、いくつかのヒューリスティクスが提案されている。これらの方法により得られる結果は偶然性に強く影響されがちであり、またパラメータにセンシティブであるため、対象とする課題に応じたパラメータチューニングが必要になる。
【００１３】
【非特許文献１】「強化学習」Richard S.Sutton, Andrew G. Barto. 三上貞芳  皆川雅章訳  森北出版
【発明の開示】
【発明が解決しようとする課題】
【００１４】
ところで、きわめて多数の離散事象間に存在する因果関係を安定的に精度よく抽出することができれば、因果関係を用いて目的事象を達成することができ、好ましい。
【００１５】
関連する事象の数が多い場合、事象あたりの平均的なデータサンプル数が少なくなりがちなので、精度のよい因果関係を抽出するにはそのようなことに対処する必要がある。また、時間的に変動する因果関係を安定的に精度よく抽出することができれば、目的事象を達成するための適切な行動を時間に応じて決定することができ、好ましい。
【００１６】
本発明はこのような状況に鑑みてなされたものであり、事象間の因果関係を、事象の集合を超えて推定することができるようにするものである。
【課題を解決するための手段】
【００１７】
本発明の一側面の情報処理装置は、モデル化対象であるロボットがおかれている環境の所定の物理量をセンサによりセンシングすることによって検出された観測信号を用いて学習を行いHMMを生成する複数の生成手段と、前記生成手段により生成されたそれぞれのHMMの状態を表す状態ベクトルの時系列を記録する記録手段と、前記記録手段に記録された前記状態ベクトルの時系列に基づいて、前記生成手段により生成されたHMMのうちの第１のHMMにおいて生じた第１のノードから第２のノードへの状態遷移の前における、単数または複数の第２のHMMの状態を表す第３のノードを検出する検出手段と、前記検出手段による検出結果に基づいて、前記第１のHMMの前記第１のノードと前記第２のHMMの前記第３のノードが同時に現在状態を表すノードになり、次の時刻の前記第１のHMMの状態を表すノードが前記第２のノードに遷移した回数である第１の回数を、前記第１のHMMの前記第１のノードと前記第２のHMMの前記第３のノードが同時に現在状態を表すノードになった回数である第２の回数で割ることによって求められる条件付確率を、前記第１のHMMの前記第１のノードと同時に現在状態を表すノードになった複数の前記第２のHMMの前記第３のノードについて算出し、それぞれのHMMの状態間の因果関係を算出した前記条件付確率により表すようにして、前記ロボットの行動決定に用いられるそれぞれのHMMの状態間の因果関係を推定する推定手段とを備える。
【００２０】
前記推定手段には、時間の経過に応じて１未満の値を前記第１の回数と前記第２の回数に乗算することによって、前記第１の回数と前記第２の回数をそれぞれ所定の減衰率で減衰させることができる。
【００２１】
前記推定手段には、算出した前記条件付確率と、前記第２の回数と、前記条件付確率の推定誤差の初期値として与えられる確率とによって求まる前記条件付確率の誤差の分だけ確率を修正した確率を、最終的な前記条件付確率として算出させることができる。
【００２５】
本発明の一側面の情報処理方法は、CPUを備える情報処理装置の情報処理方法において、モデル化対象であるロボットがおかれている環境の所定の物理量をセンサによりセンシングすることによって検出された観測信号を用いて学習を行い複数のHMMを前記CPUが生成し、生成したそれぞれのHMMの状態を表す状態ベクトルの時系列を前記CPUが記録手段に記録させ、前記記録手段に記録された前記状態ベクトルの時系列に基づいて、生成したHMMのうちの第１のHMMにおいて生じた第１のノードから第２のノードへの状態遷移の前における、単数または複数の第２のHMMの状態を表す第３のノードを前記CPUが検出し、検出結果に基づいて、前記第１のHMMの前記第１のノードと前記第２のHMMの前記第３のノードが同時に現在状態を表すノードになり、次の時刻の前記第１のHMMの状態を表すノードが前記第２のノードに遷移した回数である第１の回数を、前記第１のHMMの前記第１のノードと前記第２のHMMの前記第３のノードが同時に現在状態を表すノードになった回数である第２の回数で割ることによって求められる条件付確率を、前記第１のHMMの前記第１のノードと同時に現在状態を表すノードになった複数の前記第２のHMMの前記第３のノードについて算出し、それぞれのHMMの状態間の因果関係を算出した前記条件付確率により表すようにして、前記ロボットの行動決定に用いられるそれぞれのHMMの状態間の因果関係を前記CPUが推定するステップを含む。
本発明の一側面のプログラムは、モデル化対象であるロボットがおかれている環境の所定の物理量をセンサによりセンシングすることによって検出された観測信号を用いて学習を行い複数のHMMを生成し、生成したそれぞれのHMMの状態を表す状態ベクトルの時系列を記録手段に記録させ、前記記録手段に記録された前記状態ベクトルの時系列に基づいて、生成したHMMのうちの第１のHMMにおいて生じた第１のノードから第２のノードへの状態遷移の前における、単数または複数の第２のHMMの状態を表す第３のノードを検出し、検出結果に基づいて、前記第１のHMMの前記第１のノードと前記第２のHMMの前記第３のノードが同時に現在状態を表すノードになり、次の時刻の前記第１のHMMの状態を表すノードが前記第２のノードに遷移した回数である第１の回数を、前記第１のHMMの前記第１のノードと前記第２のHMMの前記第３のノードが同時に現在状態を表すノードになった回数である第２の回数で割ることによって求められる条件付確率を、前記第１のHMMの前記第１のノードと同時に現在状態を表すノードになった複数の前記第２のHMMの前記第３のノードについて算出し、それぞれのHMMの状態間の因果関係を算出した前記条件付確率により表すようにして、前記ロボットの行動決定に用いられるそれぞれのHMMの状態間の因果関係を推定するステップを含む処理をコンピュータに実行させる。
【００２６】
本発明の一側面においては、モデル化対象であるロボットがおかれている環境の所定の物理量をセンサによりセンシングすることによって検出された観測信号を用いて学習が行われて複数のHMMが生成され、生成されたそれぞれのHMMの状態を表す状態ベクトルの時系列が記録手段に記録される。また、前記記録手段に記録された前記状態ベクトルの時系列に基づいて、生成されたHMMのうちの第１のHMMにおいて生じた第１のノードから第２のノードへの状態遷移の前における、単数または複数の第２のHMMの状態を表す第３のノードが検出され、検出結果に基づいて、前記第１のHMMの前記第１のノードと前記第２のHMMの前記第３のノードが同時に現在状態を表すノードになり、次の時刻の前記第１のHMMの状態を表すノードが前記第２のノードに遷移した回数である第１の回数を、前記第１のHMMの前記第１のノードと前記第２のHMMの前記第３のノードが同時に現在状態を表すノードになった回数である第２の回数で割ることによって求められる条件付確率が、前記第１のHMMの前記第１のノードと同時に現在状態を表すノードになった複数の前記第２のHMMの前記第３のノードについて算出され、それぞれのHMMの状態間の因果関係が算出された前記条件付確率により表されるようにして、前記ロボットの行動決定に用いられるそれぞれのHMMの状態間の因果関係が推定される。
【００２７】
なお、情報処理装置は、独立した装置であっても良いし、１つの装置を構成している内部ブロックであっても良い。
【発明の効果】
【００２８】
本発明の一側面によれば、事象間の因果関係を、事象の集合を超えて推定することができる。
【発明を実施するための最良の形態】
【００２９】
初めに、図１，２を参照して、本発明が適用される処理の概要を説明する。
【００３０】
本発明の目的のひとつは次の通りである。即ち、対象とするシステムまたはエージェントが、観測するセンサ信号（以下、観測信号と称する）と、自ら取ったアクション信号に基づいて、外環境のモデルを自動的に構築することが目的のひとつである。また、当該目的を実現するとともに、内部知覚されたモデル上の任意の状態を実現するための知的な行動を自在に生成することも目的のひとつである。
【００３１】
なお、「エージェント」とは、一般に、環境の状態を知覚（例えば、センシング）し、その知覚した内容に基づいて、行動を選択することができる自律的主体のことを指す。ただし、以下の動作主体としては、エージェントではなく、システムを用いて説明する。
【００３２】
また、外環境のモデル化自体は特に限定されない。ただし、本実施の形態では、外環境のモデル化として、隠れマルコフモデル(Hidden Markov Model。以下、HMMと称する)を採用することにする。
【００３３】
例えば、図１Ａに示されるように、観測信号からアクション信号を得るモデルをつくるとする。
【００３４】
この場合、図１Ｂに示されるように、先ず、システムは、観測信号だけからHMMを構築する。
【００３５】
次に、図２Ａに示されるように、システムは、構築されたHMMの各状態遷移（以下、遷移と適宜略称する）と、自身が取った行動（アクション信号）との関係を解析する。これにより、各遷移に必要なセンサ信号とアクション信号との関係がコントローラとして学習される。
【００３６】
そして、図２Ｂに示されるように、目標状態（図２Ｂの例では状態Ｆ）が与えられたときには、システムは、現状態（図２Ｂの例では状態Ａ）から目標状態までの遷移系列（図２Ｂの例では太線矢印の遷移系列）を求める。なお、かかる遷移系列を、以下、経路と適宜称する。また、このような経路を求めることを、以下、プランニングすると称する。プランニング後、システムは、経路に含まれる各遷移に必要なコントローラを呼び出すことで、任意の状態を実現することが可能になる。
【００３７】
以上、本発明が適用される処理の概要について説明した。次に、本発明の実施の形態について説明する。
【００３８】
図３は、本発明が適用される情報処理システム（以下、単に、図３のシステムと称する）の一実施の形態の機能的構成例を示す機能ブロック図である。
【００３９】
図３のシステムは、センサ部２１、モデル化部２２、生得コントローラ２３、行動制御部２４、およびアクション部２５から構成されている。
【００４０】
センサ部２１は、エージェントがおかれている環境の所定の物理量を観測し、その観測結果を観測信号としてモデル化部２２に提供する。
【００４１】
モデル化部２２は、学習部３１、HMM格納部３２、認識部３３、およびプランニング部３４から構成されている。
【００４２】
学習部３１は、センサ部２１の観測信号を利用してHMMを構築し（図１Ｂ参照）、HMM格納部３２に格納する。
【００４３】
認識部３３は、後述するアクション部２５が行動する時、HMM格納部３２に格納されたHMMと、センサ部２１の観測信号系列とを用いて、現在の状態（現状）までの各遷移を推定する。認識部３３の推定結果は、行動制御部２４に提供される。
【００４４】
プランニング部３４は、HMM格納部３２に格納されたHMMを用いて、現在の状態から目標の状態に向かっての最適な経路をプランニング（算出）し、行動制御部２４に提供する（図２Ｂ参照）。なお、目標の状態とは、行動制御部２４に目標として与えられた状態を言い、行動制御部２４からモデル化部２２に提供される。
【００４５】
生得コントローラ２３は、後述する行動制御部２４の学習部４１の学習用に、所定の生得ルールに基づいて各種コマンドを発行し、学習部４１とアクション部２５に提供する。
【００４６】
行動制御部２４は、学習部４１、コントローラテーブル格納部４２、コントローラ格納部４３、および実行管理部４４から構成されている。
【００４７】
学習部４１は、生得コントローラ２３からのコマンドに従ったアクション部２５の行動結果に基づいて認識部３３により認識された各遷移と、生得コントローラ２３からのコマンドとを用いて、遷移毎にコントローラを学習する（図２Ａ参照）。そして、学習部４１は、各コントローラをコントローラ格納部４３に格納する。また、学習部４１は、各コントローラと遷移との関係をコントローラテーブル格納部４２に格納する。なお、コントローラの詳細については、後述する。
【００４８】
実行管理部４４は、プランニング部３４から提供された経路に沿ってアクション部２５が行動するように、即ち、経路内の各遷移を実現するように、アクション部２５に対するコマンドを生成し、アクション部２５に提供する。このコマンドは、コントローラテーブル格納部４２とコントローラ格納部４３とに格納されている情報に基づいて逆生成される。なお、実行管理部４４の処理の詳細については、後述する。
【００４９】
以下、図３のシステムのさらなる詳細について、タスクとして単振子タスクが与えられた場合を例として用いて説明していく。
【００５０】
即ち、図３のシステムの目的として、例えば図４に示されるように、単振子５１の観測角度θを観測信号として取り込み、発生トルクτを制御信号（アクション信号）として単振子５１を自在に制御する、という目的を採用する。ただし、単振子５１の質量や摩擦係数など物理的なパラメータはわからないとする。このような課題設定がなされた単振子タスクは、強化学習の課題として良く採用されている。
【００５１】
なお、従来の単振子タスクにおける課題設定では、システムの状態をユニークに記述できるように、角度θに加えて、さらに角速度ωの２つの変数が観測信号として与えられる。また、目的として、単振り子５１が振り上がること、即ち角度θが180°になることが与えられる。さらにまた、その目的を達成するための目的関数、例えば、角度θが180°になったら報酬をあたえるとか、角度θが180°に近づくほど高い値を出すなどの目的関数が設計されて与えられる。
【００５２】
これに対して、図３のシステムの目的のひとつは、この単振子タスクに因らず様々なタスクを自律的に解決できるエージェントを実現することである。よって、図３のシステムに対して、状態の一部である角度θしか観測できないという制限を敢えて課しているのである。また、図３のシステムの目的のひとつは、目的関数を与えるのではなく、任意の内部状態を実現することである。よって、図３のシステムは、振り上げというタスクに依存する目的関数は必要としない。
【００５３】
図５は、図３のシステムが単振子タスクを達成するための処理（以下、単振子タスクの制御処理と適宜称する）の一例を説明するフローチャートである。
【００５４】
ステップＳ１において、図３のシステムは、HMMの学習処理を実行する。
【００５５】
ステップＳ２において、図３のシステムは、認識処理を実行する。
【００５６】
ステップＳ３において、図３のシステムは、コントローラ学習処理を実行する。
【００５７】
ステップＳ４において、図３のシステムは、プランニング処理を実行する。
【００５８】
ステップＳ５において、図３のシステムは、行動制御処理を実行する。
【００５９】
以下、これらのステップＳ１乃至Ｓ５の各処理の詳細について、その順番で個別に説明していく。
【００６０】
はじめに、ステップＳ１におけるHMMの学習処理について説明する。
【００６１】
初期状態では、アクション部２５は、ランダムに生成された制御信号τ、または、予め生得的に埋め込まれたパターンに適度な摂動が加えられた制御信号τを出力していく。なお、かかる制御信号τは、例えば生得コントローラ２３により与えられるコマンドに基づいてアクション部２５により生成される。
【００６２】
この間にセンサ部２１から出力される観測信号θの時系列（以下、時系列観測信号と称する）が、学習部３１の図示せぬメモリ上に蓄えられる。例えば図６の信号５２が、時系列観測信号の一例である。ある程度の時系列観測信号がメモリに蓄えられたタイミングで、学習部３１は、これらの観測時系列信号を学習することでHMMを構築し、HMM格納部３２に格納する。
【００６３】
以上の一連の処理がHMMの学習処理である。
【００６４】
HMMの学習処理では、一般的に、Baum-Welchアルゴリズムが用いられる。かかるアルゴルズムに適用可能なHMMの一例が、図７乃至図１０に示されている。
【００６５】
ただし、何の制約もなく、図７に示されるような全結合型のHMMを学習させると、パラメータの初期値によってはローカルミニマムに収束してしまい、HMMの学習が困難になるという問題点がある。
【００６６】
そこで、本実施の形態では、自然界の現象の殆どはスモールワールドネットワークのようなスパースな結合によって表現可能であるという仮説を採用する。即ち、本実施の形態では、スパースな結合に制約したBaum-Welchアルゴリズムを採用することにする。具体的には、本実施の形態では、スパースな結合のHMMの一例である図９と図１０のHMMのうちの何れかのHMMを採用するとする。ここで、図９Ａ，ＢのHMMとは、2次元近傍拘束HMMである。図１０ＡのHMMとは、３次元グリッド制約によるHMMである。図１０ＢのHMMとは、２次元ランダム配置制約によるHMMである。図１０ＣのHMMとは、スモールワールドネットワークによるHMMである。
【００６７】
上述した単振子タスクにおいて、484ノードの２次元近傍構造HMMを初期構造として与えて、時系列観測信を学習させた結果の表示例が図１１に示されている。
【００６８】
図１１の横軸は、観測信号である単振子５１の角度θを示している。図１１の縦軸は、単振子５１の角速度ωを示している。また、図１１において、丸印がノード（状態）を示し、２つの丸印の間の実線が２ノード間の結合（遷移）を表している。即ち、図１１の表示例では、図３のシステム（エージェント）が知覚したノードの時の環境の真実の状態(θ，ω)の平均値をもとに、(θ,ω)空間上に各ノードが丸印としてプロットされ、それらのノード間の結合のうち、遷移確率が0.01以上の結合だけが実線として表示されている。
【００６９】
図１１の表示例より、各ノードは近傍の数個のノードとしか接続していないことがわかる。このことは、図３のシステムが、(θ，ω)空間において連続的に変化していることに相当していることを意味している。そして、このような場合には、スパースな結合により、図３のシステムの挙動を記述できることを意味している。
【００７０】
なお、唯一の例外として、単振子５１が１回転した時にθ＝-πからπへの変化が不連続になっている。この不連続の変化についての学習がなされていることは、図１１の表示例において、図１１中左右の端と端のノードが結合されていることからもわかる。
【００７１】
また、図１１の表示例からは、観測信号は角度θしか観測されていないにも関わらず、同じ角度θに関しても異なるノードが割り当てられていることがわかる。このことは、角速度ωによって、同じ角度θでも図３のシステムの挙動が変わることを表現できていることを示している。
【００７２】
以上、ステップＳ１におけるHMMの学習処理について説明した。次に、ステップＳ２における認識処理について説明する。
【００７３】
認識処理とは、ステップＳ１におけるHMMの学習処理によって構築されたHMMを用いて、図３のシステムの現在の状態を推定する処理である。この認識処理は、認識部３３によって実行される。
【００７４】
認識処理の結果は、後述するステップＳ３のコントローラ学習処理に利用される。また、ステップＳ２の処理とは別個に、後述するステップＳ５の行動制御処理の一処理として、認識処理が実行される（図１４のステップＳ６１参照）。
【００７５】
この認識処理で鍵となる情報が、過去から現在までの観測信号列である。また、HMMの状態推定にはViterbi Algorithmが広く用いられている。そこで、本実施の形態では、50ステップ前の状態を不定とする。即ち各ノードの確率が等しいとする。次に、この50ステップ前の状態を初期状態とし、50ステップ分の観測結果が与えられたものとする。そして、Viterbi Algorithmにより各ステップでの状態を確定していくことで、最後の50ステップ目の状態、即ち現在の状態を推定する、といった認識処理が実行されるとする。
【００７６】
具体的には例えば本実施の形態では、図１２のフローチャートに従って、認識処理が実行されるとする。
【００７７】
なお、以下、ノードｉからノードjへの遷移確率を、aijまたはAijと記述する。初期状態確率をπiと記述する。時刻ｔの観測値（観測信号のレベル）をo(t)と記述する。ノードiでの観測値o(t)の尤度を、観測尤度と称し、また、bi(o(t))と記述する。また、現在時刻をTと記述する。
【００７８】
ステップＳ２１において、認識部３３は、時刻ｔ＝０にセットする。
【００７９】
ステップＳ２２において、認識部３３は、初期状態確率πiに観測尤度b(O(0))を掛けて各ノードに設定する。
【００８０】
ステップＳ２３において、認識部３３は、時刻ｔの状態確率に遷移確率Aijと観測尤度b(O(t+1))を掛けて、遷移先のノードｊにおいて最大となる確率をノードｊの状態確率に更新する。
【００８１】
ステップＳ２４において、認識部３３は、その時の遷移元のノードiを記憶テーブルに記憶する。なお、記憶テーブルの構築場所は特に限定されない。本実施の形態では例えば、認識部３３内部に記憶テーブルが構築されるとする。
【００８２】
ステップＳ２５において、認識部３３は、時刻t=t+1とする。
【００８３】
ステップＳ２６において、認識部３３は、時刻tが現在時刻Tとなったか否かを判定する。
【００８４】
時刻tが現在時刻Tの前の時刻である場合、ステップＳ２６においてＮＯであると判定されて、処理はステップＳ２３に戻されそれ以降の処理が繰り返される。
【００８５】
即ち、時刻t=0乃至Tのそれぞれについて、ステップＳ２３乃至Ｓ２６のループ処理が繰り返される。そして、時刻tが現在時刻Tになると、ステップＳ２６においてＹＥＳであると判定されて、処理はステップＳ２７に進む。
【００８６】
ステップＳ２７において、認識部３３は、時刻tの状態確率の中で最大のノードを選択し、時刻ｔの確定ノードとする。即ち、ステップＳ２６の処理でＹＥＳであると判定された直後のステップＳ２７の処理では、時刻t=Tであるので、現在時刻Tの確定ノードが得られることになる。
【００８７】
ステップＳ２８において、認識部３３は、ステップＳ２７の処理で選択したノードjの遷移元となったノードiを記憶テーブルから出して、時刻t-1のノードとする。
【００８８】
ステップＳ２９において、認識部３３は、時刻t=t-1とする。
【００８９】
ステップＳ３０において、認識部３３は、時刻t=0であるか否かを判定する。
【００９０】
時刻tが0よりも後の時刻である場合、ステップＳ３０においてＮＯであると判定されて、処理はステップＳ２７に戻されそれ以降の処理が繰り返される。
【００９１】
即ち、時刻t=T乃至0のそれぞれについて、ステップＳ２７乃至Ｓ３０のループ処理が繰り返される。そして、時刻tが0になると、ステップＳ３０においてＹＥＳであると判定されて、認識処理は終了となる。
【００９２】
以上、ステップＳ２における認識処理について説明した。次に、ステップＳ３におけるコントローラ学習処理について説明する。
【００９３】
ステップＳ２における認識処理が実行されると、各時刻における状態を示すノードiが決定されるとともに、そのノードｉから次時刻の状態を示すノードｊへの遷移確率Aijが決定される。なお、以下、遷移確率Aijを、遷移エッジAijと適宜称する。なお、認識処理の説明では遷移確率ａijといったように小文字のａを使用していたのに対して、ここでは遷移確率Aij（遷移エッジAij）といったように大文字のＡを使用している点留意する。この点は、後述するアクションa(t）における小文字のａとの混同を防止するためである。
【００９４】
図３のシステムは、ステップＳ１のHMMの学習処理時には、上述の如く、何らかのランダムもしくは生得行動を取っている。そこで、その生得行動の間のうちの状態iに図３のシステムが取った行動をアクションａ(t)と称する。ただし、アクションa(t)はアクションaと適宜略記する。この場合、アクションａによって遷移エッジAijが発生するという因果モデルが成立する。
【００９５】
そこで、行動制御部２４の学習部４１は、発生した各遷移エッジAijに対してその時の観測値o(t)（以下、観測値oと略記する）とアクションaとをサンプルする。この場合、時系列観測信号が長時間の信号であれば、その間、遷移エッジAijが何度も発生することになる。そこで、学習部４１は、サンプルされた観測値oとアクションaとを用いて、１つの遷移エッジAijに対して、a=Fij(o)という写像を学習する。この関数写像Fij(  )の学習手法としては、例えばニューラルネットワークのようなものを採用することができる。最もシンプルな例として、関数写像Fij(  )を、観測値oに因らずにアクションａの平均値を出力するようなものとする、といった学習手法を採用することもできる。
【００９６】
このような関数写像Fij(  )が、アクション部２５に実行させるコントローラとして、コントローラ格納部４３に格納される。
【００９７】
そして、コントローラの学習結果、即ち、各遷移エッジAij毎に、対応するコントローラ（関数写像Fij(  )）が何であるのかを示す情報がテーブル形式でコントローラテーブル格納部４２に格納される。なお、以下、かかるテーブルを、コントローラテーブルと称する。
【００９８】
ここで、本実施の形態では、各コントローラ（関数写像Fij(  )）に対して、それを一意に特定する識別子(ID)が付与されているとする。この場合、所定遷移エッジAijに対応付けられたコントローラ（関数写像Fij(  )）が何であるのかを示す情報として、そのコントローラのIDを採用することできる。そこで、本実施の形態では、各遷移エッジAij毎に、対応するコントローラ（関数写像Fij(  )）のIDがコントローラテーブル４２に格納されるとする。また、コントローラ格納部４３においては、各コントローラ（関数写像Fij(  )）が、そのIDと紐づけられて格納されているとする。なお、IDの使用方法の一例については、図１４のステップＳ７０の説明内で言及することにする。
【００９９】
以上、ステップＳ３におけるコントローラ学習処理として、状態の遷移毎に、アクションを出力するコントローラをそれぞれ割り当てるための学習を行う処理を例に説明した。ただし、本発明が適用されるコントローラ学習処理として、上述の例の他、例えば次のような処理も採用できる。即ち、遷移先状態毎に、アクションを出力するコントローラをそれぞれ割り当てるための学習を行う処理を例も採用できる。
【０１００】
次に、ステップＳ４におけるプランニング処理について説明する。
【０１０１】
ステップＳ３におけるコントローラ学習処理が終了した段階で、図３のシステムは、学習を終えて、自身がHMMにより形成した内部状態において任意の目標を設定して、その目標達成を実現するための行動を取ることができるようになる。
【０１０２】
そこで、プランニング部３４は、目標達成を実現するための計画（プランニング）を立てる。このような計画を立てる処理が、ステップＳ４におけるプランニング処理である。
【０１０３】
即ち、プランニング部３４は、外部から指定されるかもしくは内発的に得られる目標を、ゴールとして設定する。なお、図３のシステムでは、目標は、実行管理部４４から提供される。なお、以下、ゴールの状態を示すノードをゴールノードgと称する。この場合、プランニング部３４は、ゴールノードgと、現在の状態を示すノードi（以下、現在状態ノードiと称する）が分かった時点で、この２つのノードを結ぶ経路をHMM上で探索する。このような現在状態ノードiからゴールノードgまでの経路を探索する処理が、ステップＳ４におけるプランニング処理である。
【０１０４】
ここで、経路探索のアルゴリズムは様々存在し、何れのアルゴリズムも採用してもよい。ただし、本実施の形態では、図１３のフローチャートに示されるように、Viterbi Algorithmを応用したアルゴリズムが採用されているとする。即ち、図１３は、プランニング処理の一例を説明するフローチャートである。
【０１０５】
ステップＳ４１において、プランニング部３４は、現在状態ノードiの状態確率を1.0として、それ以外のノードの状態確率を0にする。また、プランニング部３４は、時刻t＝０にセットする。
【０１０６】
ステップＳ４２において、プランニング部３４は、遷移確率Aijのうち、閾値(ここでは0.01)以上のものを0.9として、その他のものを0とする。
【０１０７】
ステップＳ４３において、プランニング部３４は、時刻ｔの状態確率に遷移確率Aijを掛けて、遷移先のノードｊにおいて最大となる確率をノードｊの状態確率に更新する。
【０１０８】
ステップＳ４４において、プランニング部３４は、その時の遷移元のノードiを記憶テーブルに記憶する。なお、記憶テーブルの構築場所は特に限定されない。本実施の形態では例えば、プランニング部３４内部に記憶テーブルが構築されるとする。
【０１０９】
ステップＳ４５において、プラニング部３４は、目標となるゴールノードgの状態確率が０を超えたか否かを判定する。
【０１１０】
目標となるゴールノードgの状態確率が０の場合、目標にまだ到達していないとして、ステップＳ４５においてＮＯであると判定されて、処理はステップＳ４６に進む。
【０１１１】
ステップＳ４６において、プラニング部３４は、ステップＳ４３乃至Ｓ４７のループ処理をＮ回繰り返したか否かを判定する。
【０１１２】
Ｎ回繰り返した場合とは、Ｎ回繰り返しても目標にいまだ到達していない場合を意味する。よって、そのような場合、即ち、ステップＳ４６においてＹＥＳであると判定された場合、プランニング部３４がプランニングをあきらめたとして、プランニング処理は終了となる。
【０１１３】
これに対して、まだＮ回繰り返されていない場合、ステップＳ４６においてＮＯであると判定されて、処理はステップＳ４７に進む。ステップＳ４７において、プランニング部３４は、時刻t=t+1とする。その後、処理はステップＳ４３に戻され、それ以降の処理が繰り返される。
【０１１４】
このようにして、ステップＳ４３乃至Ｓ４７のループ処理が何回か繰り返された結果、目標となるゴールノードgの状態確率が0を超えた場合、目標に到達したとして、ステップＳ４５においてＹＥＳであると判定されて、処理はステップＳ４８に進む。
【０１１５】
プランニング部３４は、ステップＳ４８において、ゴールノードgを選択し、ステップＳ４９において、g=jとする。
【０１１６】
ステップＳ５０において、プランニング部３４は、選択したノードjの遷移元となったノードiを記憶テーブルから出して時刻t-1のノードとする。
【０１１７】
ステップＳ５１において、プランニング部３４は、時刻t=t-1とする。
【０１１８】
ステップＳ５２において、プランニング部３４は、時刻t=0であるか否かを判定する。
【０１１９】
時刻tが0よりも後の時刻である場合、ステップＳ５２においてＮＯであると判定されて、処理はステップＳ５３に進む。ステップＳ５３において、プランニング部３４は、j=iとする。その後、処理はステップＳ５０に戻されそれ以降の処理が繰り返される。
【０１２０】
即ち、時刻t=0にまるまで、ステップＳ５０乃至Ｓ５３のループ処理が繰り返される。そして、時刻tが0になると、ステップＳ５２においてＹＥＳであると判定されて、プランニング処理は終了となる。このときにできたノード列、即ち、現在状態ノードiからゴールノードgまでのノード列が経路として確定される。
【０１２１】
以上、ステップＳ４におけるプランニング処理について説明した。次に、ステップＳ５における行動制御処理について説明する。
【０１２２】
図１４は、行動制御部２４による行動制御処理の一例、即ち、ステップＳ４の処理で算出された経路（ノード列）に基づいて行動制御部２４が行動制御を行う場合の処理の一例を説明するフローチャートである。
【０１２３】
ステップＳ６１において、行動制御部２４の実行管理部４４は、HMMの認識処理を行い、全体ノードの中で最も状態確率が高いノードを、ノードi_maxに選ぶ。
【０１２４】
なお、HMMの認識処理として、本実施の形態では、上述した図１２の例のフローチャートに従った処理が実行されるとする。また、HMMの認識処理の動作主体は、ここでは説明の便宜上実行管理部４４としたが、実際には認識部３３である。即ち、正確には、認識部３３がHMMの認識処理を行い、実行管理部４４が、その処理結果に基づいてノードi_maxを選ぶ。
【０１２５】
ステップＳ６２において、実行管理部４４は、経路上のノードのうち、前回のノードi_pathmaxからゴールノードの間で最も状態確率が高いものを、今回のノードi_pathmaxに選ぶ。
【０１２６】
ステップＳ６３において、実行管理部４４は、状態確率P(i_max)とP(i_pathmax)との割合が閾値以下（例えば0.7以下）であるか否かを判定する。ここで、状態確率P(i_max)とは、ノードi_maxの状態確率を示す。また、状態確率P(i_pathmax)とは、ノードi_pathmax の状態確率を示す。
【０１２７】
状態確率P(i_max)とP(i_pathmax)との割合が閾値以下の場合、現在の図３のシステムの行動が経路から外れているとして、ステップＳ６３においてＹＥＳであると判定されて、行動制御処理は終了となる。
【０１２８】
これに対して、状態確率P(i_max)とP(i_pathmax)との割合が閾値を超えている場合、現在の図３のシステムの行動はまだ経路自体から外れていないとして、ステップＳ６３においてＮＯであると判定されて、処理はステップＳ６４に進む。
【０１２９】
ステップＳ６４において、実行管理部４４は、同じノードi_pathmaxに止まっているか否か、即ち、今回のステップＳ６２の処理で選択されたノードi_pathmaxと、前回のステップＳ６２の処理で選択されたノードi_pathmaxとが同一であるか否かを判定する。
【０１３０】
同じノードi_pathmaxに止まっていない場合、経路に沿って移動しているとみなされるので、ステップＳ６４においてＮＯであると判定されて、処理はステップＳ６８に進む。なお、ステップＳ６８以降の処理については後述する。
【０１３１】
これに対して、同じノードi_pathmaxに止まっている場合、経路に沿って移動していない可能性があるので、ステップＳ６４においてＹＥＳであると判定されて、処理はステップＳ６５に進む。
【０１３２】
ステップＳ６５において、実行管理部４４は、経路上の次のノードi_nextの状態確率が、前回の状態確率より上昇しているか否かを判定する。
【０１３３】
上昇していなければ、経路に沿って遷移していないとして、実行管理部４４は、ステップＳ６５においてＮＯであると判定し、ステップＳ６６において、ノードi_pathmaxをノードi_nextにする。その後、処理はステップＳ６８に進む。なお、ステップＳ６８以降の処理については後述する。
【０１３４】
これに対して、上昇している場合、ステップＳ６５においてＹＥＳであると判定され、処理はステップＳ６７に進む。
【０１３５】
ステップＳ６７において、実行管理部４４は、同じノードにN回（例えば，50回）以上止まっているか否かを判定する。
【０１３６】
同じノードにＮ回以上止まっていない場合、ステップＳ６７において、ＮＯであると判定されて、処理はステップＳ６８に進む。なお、ステップＳ６８以降の処理については後述する。
【０１３７】
これに対して、同じノードにＮ回以上止まっている場合、実行管理部４４は、ステップＳ６７においてＹＥＳであると判定し、ステップＳ６６において、ノードi_pathmaxをノードi_nextにする。即ち、同じノードにＮ回以上止まっている場合、強制的に経路が進んだとみなすのである。その後、処理はステップＳ６８に進む。
【０１３８】
ステップＳ６８において、実行管理部４４は、既にゴールノード上にあるか否かを判定する。
【０１３９】
既にゴールノード上にあると認識されている場合、ステップＳ６８においてＹＥＳであると判定され、目標にたどり着いたとして、行動制御処理が終了となる。
【０１４０】
これに対して、まだゴールノード上にないと認識されている場合、ステップＳ６８においてＮＯであると判定され、処理はステップＳ６９に進む。
【０１４１】
ステップＳ６９において、実行管理部４４は、経路上の次のノードへ遷移するための遷移エッジAijを定める。
【０１４２】
ステップＳ７０において、実行管理部４４は、遷移エッジAijに割り当てられたコントローラ（関数写像Fij(  )）を呼び出し、アクション部２５は、現在の観測値oをコントローラに与えることで、取るべきアクションaを求める。
【０１４３】
なお、より正確にいえば、本実施の形態では、遷移エッジAijに割り当てられたコントローラ（関数写像Fij(  )）のIDがコントローラテーブル格納部４２から読み出される。また、そのIDで特定されるコントローラ（関数写像Fij(  )）が、コントローラ格納部４３から読み出される。そして、このコントローラである関数写像Fij(  )に対して、現在の観測値oが入力された結果得られる出力が、アクションａとなる。
【０１４４】
このアクションａは、コマンドとしてアクション部２５に提供される。そこで、ステップＳ７１において、アクション部２５は、コマンドａを実行する。
【０１４５】
その後、処理はステップＳ６１に戻され、それ以降の処理が繰り返される。
【０１４６】
なお、ステップＳ６８の処理でＹＥＳであると判定されて、行動制御処理が終了した場合、実行管理部４４は、そのときのノードi_maxが本当にゴールノードであるのか否かを再度判定してもよい。この再判定の結果が、ゴールノードであるという結果の場合、図５の単振子タスクの制御処理全体を終了とする。これに対して、再判定の結果が、ゴールノードではないという結果の場合、図３のシステムは、処理をステップＳ４に戻し、同一のゴールノードで再度プランニング処理を実行して新経路を作成した後で、ステップＳ５の行動制御処理をやり直す。
【０１４７】
以上、単振子タスクを達成可能な図３のシステムについて説明した。ただし、図３のシステムでは、後述するマルチモーダルタスクを達成できない。これに対して、マルチモーダルタスクの達成が可能なシステムの機能的構成例が図１５に示されている。即ち、図１５は、本発明が適用される情報処理システム（以下、単に、図１５のシステムと称する）の一実施の形態であって、図３のシステムとは異なるの機能的構成例を示す機能ブロック図である。
【０１４８】
図１５のシステムは、センサ部６１、３種類のモデル化部６２Ａ乃至６２Ｃ、因果部６３、行動制御部６４、およびアクション部６５から構成されている。
【０１４９】
センサ部６１は、いわゆるマルチモーダルセンサとして構成されている。
【０１５０】
ここで、マルチモーダルセンサについて、簡単に説明する。
【０１５１】
従来のヒューマンインタフェースをより発展させた概念のひとつとして、マルチモーダルインタフェースという概念が存在する。マルチモーダルインタフェースの類語として、例えばマルチメディアインタフェースという言葉が存在する。マルチメディアインタフェースは、単に複数のメディア（音、映像、触覚など）を用いたインタフェースを表わすのに対し、それぞれのメディアがいろいろな形態で使われ、情報伝達を行っている場合に、マルチモーダルインタフェースと称される。
【０１５２】
例えば、マルチモーダルインタフェースの例として、発声、動作、あるいは視線といった事象をモーダルとし、これらのモーダルを協調させたり、同時に使ったり、複数種類のメッセージを組み合わせて、人間が本来伝えようとしている、あるいは自然に伝わるメッセージを理解しようというインタフェースが存在する。
【０１５３】
即ち、マルチモーダルセンサとは、このようなマルチモーダルインタフェースを実現するためのセンサであって、複数のモーダル（事象）のそれぞれについて、対応する物理量を検知可能なセンサをいう。
【０１５４】
例えば図１５の例では、センサ部６１は、３つのモーダル毎に、エージェントがおかれている環境の所定物理量、即ち、当該モーダルに対応する物理量を観測し、その観測結果を観測信号としてモデル化部６２Ａ，６２Ｂ，６２Ｃに提供する。
【０１５５】
モデル化部６２Ａ，６２Ｂ，６２Ｃの各単体は、図３のモデル化部２２と基本的に同様の機能と構成を有している。即ち、モデル化部６２Ａについていえば、学習部７１Ａ乃至プランニング部７４Ａのそれぞれは、図３の学習部３１乃至プランニング部３４のそれぞれと基本的に同様の機能と構成を有している。なお、図示はしないが、モデル化部６２Ｂには、図３の学習部３１乃至プランニング部３４のそれぞれと基本的に同様の機能と構成を有している学習部７１Ｂ乃至プランニング部７４Ｂが設けられている。また、モデル化部６２Ｃには、図３の学習部３１乃至プランニング部３４のそれぞれと基本的に同様の機能と構成を有している学習部７１Ｃ乃至プランニング部７４Ｃが設けられている。
【０１５６】
よって、センサ６１の３つのモーダル毎の観測信号をそれぞれ用いて学習された結果構築される各HMM、即ち、３つのモーダルのHMMが、HMM格納部７２Ａ乃至７２Ｃにそれぞれ格納されることになる。ここで、モデル化部６２Ａ乃至６２Ｃのそれぞれの対象とするモーダルを、モーダルＡ乃至Ｃと称することにする。この場合、HMM格納部７２Ａ乃至７２Ｃのそれぞれには、モーダルＡ乃至Ｃの各HMMが格納されることになる。
【０１５７】
なお、当然ながら、モーダルは３つに限定されず、２つ以上であればよい。ただし、その場合、モデル化部６２Ａに対応するモデル化部がモーダルの個数分だけ存在する。
【０１５８】
因果部６３は、因果学習部７５、因果テーブル格納部７６、および因果推定部７７から構成されている
【０１５９】
因果学習部７５は、モーダルＫ（ＫはＡ乃至Ｃのうちの何れか）のHMMの構造に基づいて認識部７３Ｋで認識されたノード遷移と、別モーダルＬ（Ｌは、Ｋ以外のＡ乃至Ｃのうちの何れか）のHMMの状態の関係とを学習する。その学習結果は、因果テーブル格納部７６に格納される。なお、因果学習部７５の処理の詳細は後述する。
【０１６０】
行動制御部６４は、実行管理部７８およびコントローラ部７９から構成されている。コントローラ部７９は、コントローラテーブル格納部８０とコントローラ格納部８１とから構成されている。コントローラテーブル格納部８０とコントローラ格納部８１は、図３のコントローラテーブル格納部４２とコントローラ格納部４３と基本的に同様の機能と構成を有している。
【０１６１】
実行管理部７８は、目標が与えられると、その目標に該当するモーダルＫを判断し、モデル化部６２Ｋに提供する。モデル化部６２Ｋのプランニング部７４Ｋは、この目標に従って経路をプランニングし、実行管理部７８に提供する。そこで、実行管理部７８は、この経路に沿って図１５のシステム（エージェント）が行動するように、アクション部６５を制御する。即ち、実行管理部７８は、先ず、経路を実現するために遷移の原因となっている原因ノードを因果推定部７７に問い合わせる。因果推定部７７は、その原因ノードと原因モーダルを推定して、実行管理部７８に提供する。なお、原因ノードや原因モーダルについては後述する。実行管理部７８は、原因モーダルがコントローラであれば、コントローラ部７９に問い合わせて、そのコントローラに対応するコマンドを出力する。また、実行管理部７８は、原因ノードが別のモーダルＬのHMM上のノードであれば、それを目標としてプランニング部７４Ｌに経路を問い合わせることを再帰的に行う。なお、以上の実行管理部７８の一連の処理の詳細については、後述する。
【０１６２】
アクション部６５は、行動制御部６４からのコマンドに従って、所定の行動を取る。
【０１６３】
以下、図１５のシステムについて、タスクとしてマルチモーダルタスクが与えられた場合を例として、さらに詳細な説明を行っていく。
【０１６４】
具体的には例えば、次のようなマルチモーダルタスクが与えられているとする。即ち、図１６に示されるように、丸い形状の移動型のロボット８５が、壁８６で囲まれた領域内を自由に移動することができるようにすることを目的とする。なお、点８７は、そこに光源があることを示している。
【０１６５】
本出願人は、このような図１６に示される移動ロボット８５の移動を、シミュレータによる実験として行った。即ち、図１６は、シミュレータの外観を示す図である。なお、今回採用された図１６のシミュレータの原型は、「Olivier Michel. Khepera Simulator Package version 2.0: Freeware mobile robot simulator written at the University of Nice Sophia--Antipolis by Olivier Michel. Downloadable from the World Wide Web at http://wwwi3s.unice.fr/~om/khep-sim.html」という文献に開示されている。
【０１６６】
ここで、原型と記載した理由は、今回採用されたシミュレータとは、上述の文献に開示されたシミュレータそのものではなく、それに対して、図１７に示されるような観測信号とアクションを組み込んだシミュレータであるからである。
【０１６７】
即ち、ロボット８５には、センサ部６１として、図１６や図１７に示されるように、壁８６までの距離を検知する距離センサ６１Ａ、および光の明るさを検知する光センサ６１Ｂに加えて、エネルギーセンサ６１Ｃも搭載されている。また、ロボット８５は、左右の車輪を駆動することで移動することができるとされている。
【０１６８】
なお、距離センサ６１Ａ、光センサ６１Ｂ、およびエネルギーセンサ６１Ｃの図１６における配置位置は、実施の配置位置とは必ずしも一致しない点留意すべきである。
【０１６９】
図１７に示されるように、距離センサ６１Ａは、ロボット８５の周囲の２４方向に取り付けられたものとして、２４方向毎に壁８６までの距離に応じた各値を観測信号として出力する。即ち、図１７において、１乃至２４の各番号の棒グラフが、２４方向の観測信号の信号強度（瞬間値）をそれぞれ表している。
【０１７０】
光センサ６１Ｂは、ロボット８５の周囲２４方向（距離センサ６１Ａと同一方向）に取り付けられたものとして、２４方向毎に光の明るさに応じた各値を観測信号として出力する。ただし、光は拡散するという特徴がある点を考慮して、観測信号の各値は、１つの方向の値だけではなく、周辺のセンサからの影響も及ぶような値となるようになされている。即ち、図１７において、２５乃至４８の各番号の棒グラフが、２４方向の観測信号の信号強度（瞬間値）をそれぞれ表している。
【０１７１】
エネルギーセンサ６１Ｃは、次のように定義されたエネルギーを観測し、その観測値を観測信号として出力する。即ち、エネルギーとは、移動量に比例して消費され、光を浴びた量に比例して補充されるものをいう。図１７において、４９の番号の棒グラフが、観測信号の信号強度（瞬間値）を表している。
【０１７２】
アクション（行動）としては、即ち、アクション部６５に与えるコマンドとしては、移動量のコマンドが採用されている。具体的には、図１６のシミュレータ上の横軸と縦軸に沿って移動するための（Δx, Δy）というコマンド（以下、移動コマンドと称する）が採用されている。ここで、△xとは、ｘ軸（図１６中水平方向）の移動コマンドである。また、△yとは、y軸（図１６中垂直方向）の移動コマンドである。
【０１７３】
以上の内容をまとめると、ロボット８５は、２４次元の距離センサ６１Ａ、２４次元の光センサ６１Ｂ、１次元のエネルギーセンサ６１Ｃを用いた検知機能を有しており、また、２次元の移動コマンドの入出力機能を有している。そして、ロボット８５は、図１５のシステムにより制御されるエージェントである。よって、ロボット８５は、これらの各機能を発揮することで、内部状態を自己組織化し、内部状態を任意に制御できることを目標とする。
【０１７４】
以上説明したようなマルチモーダルタスクを達成するための図１５のシステムの処理の流れの概略は、図５の単振子タスクの制御処理と類似している。そこで、以下、図５の単振子タスクの制御処理とは異なる点についてのみ説明していく。
【０１７５】
まず、図１５のシステムは、図５の単振子タスクの制御処理のステップＳ１の処理と同様に、HMMの学習処理を実行する。ただし、図１５のシステムが実行するHMMの学習処理は、図５の学習処理とは異なり、次のような処理となる。
【０１７６】
即ち、図１５のシステム（ロボット８５たるエージェント）は、ランダムもしくは単純な生得ルール（例えば、ある方向に進んで、壁８６にぶつかったら方向を変えるなどのルール）に基づいて行動を取る。なお、生得ルールに基づく行動を行う場合、図１５のシステムにも、図３の生得コントローラ２３が設けられるとする。
【０１７７】
図５の単振子タスクの制御処理では、時系列観測信号（角度θの時系列信号）が唯一の観測情報としてHMMの学習が処理行われた。
【０１７８】
これに対して、図１５のシステムにおいては、センサ部６１のモダリティーが既知である。即ち、ロボット８５は、２４次元の距離センサ６１Ａ、２４次元の光センサ６１Ｂ、１次元のエネルギーセンサ６１Ｃからなる検知機能を有している。そこで、距離センサ６１Ａの観測信号（距離）、光センサ６１Ｂの観測信号（光）、エネルギーセンサ６１Ｃの観測信号（エネルギー）という３種類の観測信号毎に、それぞれHMMの学習処理が行われる。なお、１つの観測信号についてのHMMの学習処理単体は、図５の単振子タスクの制御処理におけるHMMの学習処理と基本的に同様である。
【０１７９】
即ち、図１５の例では、モデル化部６２Ａが、距離のHMMを構築してHMM格納部７２Ａに格納する。モデル化部６２Ｂが、光のHMMを構築してHMM格納部７２Ｂに格納する。モデル化部６２Ｃが、エネルギーのHMMを構築してHMM格納部７２Ｃに格納する。
【０１８０】
モデル化部６２ＡによるHMMの学習処理結果の表示例、即ち、400ノードの２次元近傍構造HMMを初期構造として与えて、距離センサ６１Ａの観測信号（距離）の時系列を学習させた結果の表示例が図１８Ａに示されている。
【０１８１】
モデル化部６２ＢによるHMMの学習処理結果の表示例、即ち、100ノードの２次元近傍構造HMMを初期構造として与えて、距離センサ６１Ｂの観測信号（光）の時系列を学習させた結果の表示例が図１８Ｂに示されている。
【０１８２】
モデル化部６２Ｃの学習結果の表示例、即ち、100ノードの２次元近傍構造HMMを初期構造として与えて、距離センサ６１Ｃの観測信号（エネルギー）の時系列を学習させた結果の表示例が図１８Ｃに示されている。
【０１８３】
図１８Ａにおいては、各ノードが認識された時のロボット８５の存在した平均位置に、ノード（白抜き丸印）がプロットされている。ただし、横軸が水平方向ｘの距離を示し、縦軸が垂直方向yの距離を示している。
【０１８４】
図１８Ｂにおいては、各ノードが認識された時のロボット８５の存在した平均位置に、ノード（白抜き丸印）がプロットされている。ただし、横軸が水平方向ｘの距離を示し、縦軸が垂直方向yの距離を示している。また、中心位置、即ち、座標（0,0）が、光源である点８７の位置を示している。ただし、座標(0,0)とは、特定の１つの点８７の位置を意味するのではなく、図１６の３つの点８７のうちの何れかの位置という意味である。
【０１８５】
図１８Ｃについては、エネルギーの値（縦軸）と、ロボット８７の存在した平均位置に最も近い光（光源である点８７）までの距離（横軸）との空間上に、ノード（白抜き丸印）がプロットされている。
【０１８６】
図１８Ａの距離のHMMは、距離センサ６１Ａは壁８６をセンシングしていることから、迷路の構成のトポロジカルネットワークとして表現されていることが分かる。
【０１８７】
図１８Ｂの光のHMMについては、光源（各点８７）を中心に放射状にネットワークが形成されていることがわかる。
【０１８８】
図１８ＣのエネルギーのHMMについては、エネルギーが上下するだけなので、一本の鎖のようなネットワークになっていることがわかる。そして、図１８のプロットの仕方が、光までの距離（各点８７までの距離）を横軸とするプロットの仕方であることから、光に近いときはエネルギーが上昇する方向に状態遷移が形成されている一方、光から遠い時にはエネルギーが減少するほうに状態遷移の方向が決まっているようなネットワーク、即ち、いわゆるハシゴ型ネットワークのようなものが形成されていることがわかる。
【０１８９】
なお、対象となっているマルチモーダルタスクを、距離のHMMとアクション（コマンド）だけで考え、任意の状態に制御することを行うと、図１９に示されるようになる。即ち、単振子タスクと同じ考え方で行動制御処理が実現できることになる。換言すると、この場合、図１５のシステムは、図５のステップＳ２乃至Ｓ５を実行すればよい。
【０１９０】
ただし、マルチモーダルタスクの課題設定では、図１８Ａ乃至Ｃの各HMMの状態遷移とアクション（行動）との間に直接的な相関があるとは限らない。このために状態遷移を起こした時のアクション（行動）をそのまま学習するだけでは、このようなマルチモーダルタスクの課題を解くことができない。
【０１９１】
例えば、図１８ＣのエネルギーのHMMの遷移は、図１６のシミュレータ上での光源（各点８７）とロボット８５との距離関係で決まってくる。よって、図１８ＣのエネルギーのHMMの遷移は、ロボット８５がある瞬間にどの方向へ移動したのかという移動アクションとは全く関係がない。ところが、図１８Ｃの距離のHMMが表現する迷路内での位置のような内部状態は、ロボット８５の移動アクションと、遷移するノードとの間に高い関連性が存在する。
【０１９２】
そこで、図１５のシステムには、このような場合でもエージェント（ロボット８５）が自律的に内部状態と行動の関係を見出して制御できるような機能を実現すべく、因果部６３が設けられているのである。
【０１９３】
即ち、因果部６３は、このマルチモーダルタスクの目標を到達すべく、図５のステップＳ２，Ｓ３の代わりに、次のような処理を実行できる。
【０１９４】
即ち、各時間ステップにおいて、図１８Ａ乃至Ｃの各HMMにおける認識結果によって、現在認識されているノードがひとつ確定される。なお、単体のHMMにおける認識結果としては、例えば、単体のHMMについての図１２の認識処理の結果を採用できる。
【０１９５】
この確定されたノードに加えて、その時刻に取ったアクション（行動）も離散化することで、ひとつのモーダルとして取り扱うことができる。以下、かかるモーダルを、アクションモーダルと称する。また、アクションモーダルの状態を、アクション状態と称する。
【０１９６】
ここで、アクション状態を含めた時刻tのHMMの状態を、Sk,i(t)と記述する。kは、モーダル番号を示しており、k=0がアクションモーダルを示ている。また、iがモーダル内の状態を表すインデックスであるとする。
【０１９７】
また、式（１）に示されるような確率的因果モデルを仮定する。
【０１９８】
【数１】
0004687732.tif 000002
・・・（１）
【０１９９】
式（１）は、とあるモーダルの次状態は、現状態と、とある他のモーダルの状態Sm,lとに依存すること示している。
【０２００】
ここで、この「とあるモーダル」を原因モーダルと称し、原因モーダルにおける現在状態ノードを原因ノードと称するとする。すると、式（１）は、原因モーダルがアクションモーダルそのものであった場合、時刻ｔに取った行動（アクション）に応じて現在状態ノード（原因ノード）から遷移するノードが変わるという単純な行動結果モデルを示していることになる。
【０２０１】
また、以下、各モーダルのノード遷移について、原因モーダルと原因ノードを発見することを因果推定と称する。因果推定の詳細な説明は後述するため、ここでは因果推定の概略を述べるに留める。
【０２０２】
即ち、因果推定とは、とあるモードにおいて遷移が発生した時に、その時に認識されていた他のモーダルの状態をカウントし、高い頻度でその遷移と同時に生起している状態を割り出すことをいう。これにより、各遷移に対して、対応する原因モーダルと原因ノードとを発見することが可能になる。即ち、因果学習部７５は、このような因果推定を各遷移毎に行うことで、遷移毎に対応する原因モーダルと原因ノードとを発見していく。遷移毎の原因モーダルと原因ノードとは、因果テーブル格納部７６にテーブルとして格納されていく。なお、以下、かかるテーブルを因果テーブルと称する。
【０２０３】
図２０と図２１を参照して、因果推定の概略についてさらに述べる。
【０２０４】
図２０は、図１６のシミュレータにおける移動ロボット８５の移動をタスクとした場合であって、距離のみの１モーダルの場合における図１５のシステムの処理を示している。なお、説明の便宜上、図２０（後述する図２１、および図２４）においては、ロボット８５（エージェント）のアクション（行動）は、Ｅ（東）、Ｗ（西）、Ｓ（南）、およびＮ（北）の４方向への移動アクションのみが採用されているとする。
【０２０５】
この場合、図１５のシステムは、次のようなステップＳ８１Ａ乃至Ｓ８４Ａを実行する。即ち、ステップＳ８１Ａとは、距離のHMMの構造学習による内部状態の自己組織化という処理である。ステップＳ８２Ａとは、各状態遷移を起こすアクションを推定する、即ち、カウントするという処理である。ステップＳ８３Ａは、経路を生成するという処理である。ステップＳ８４Ａは、アクションの実行処理である。
【０２０６】
これに対して、図２１は、図２０と同一タスクであるが、モーダルとしては、距離に加えてエネルギーも存在する場合における図１５のシステムの処理を示している。即ち、上述したように、図１５のシステムは、ステップＳ８１Ｂにおいて、各モーダル独立にHMMを獲得する。図２１の例では、距離のHMMと、エネルギーのHMMが獲得される。次に、図１５のシステムは、ステップＳ８２Ｂにおいて、図２１に示されるような「（拡張）原因状態−結果遷移モデル」を生成する。即ち、図１５のシステムは、アクションも状態のひとつとして（アクション状態として）、各モーダルの遷移を起こす原因状態を探す（カウントする）。例えば、図２１に示されるように、距離のHMM上における特定の遷移では、いつも北（Ｎ）のアクション状態であった場合、そのアクション状態がカウントされる。また、例えば、エネルギーのHMMにおいて、エネルギーが増えるのはいつもfoodのある場所であった場合、距離のHMMにおけるfoodの状態がカウントされる。
【０２０７】
このようにして、因果テーブルが因果テーブル格納部７６に格納されると、その段階で、図１５のシステムは、学習を終えて、自身が形成した内部状態において任意の目標を設定して、その目標達成を実現するための行動を取ることができるようになる。
【０２０８】
そこで、図１５のシステムは、目標達成を実現するための計画（プランニング）を立てる。このような計画を立てる処理がプランニング処理である。ただし、ここでいうプランニング処理は、図５の単振子タスクの制御処理のステップＳ４において実行されるプランニング処理とは異なる。そこで、以下、マルチモーダルタスクで行われるプランニング処理を、特に、多段プランニング処理と称する。
【０２０９】
そして、図１５のシステムは、多段プランニング処理の結果に従って、行動制御処理を実行する。ただし、ここでいう行動制御処理は、図５の単振子タスクの制御処理のステップＳ５において実行される行動制御処理とは異なる。そこで、以下、マルチモーダルタスクで行われる行動制御処理を、特に、多段行動制御処理と称する。
【０２１０】
以下、マルチモーダルのHMMに関しても、任意の状態を目標として制御できること、即ち多段行動制御処理ができることを示す。
【０２１１】
多段プランニング処理では、モデル化部６２Ｋ（ＫはＡ乃至Ｃのうちのいずれか）のプランニング部７４Ｋが、単振子タスクの場合と同様に、外部から指定されるかもしくは内発的に得られる目標を、ゴールとして設定する。ただし、ゴールとしては、所定モーダルにおける所定状態（ノード）が設定される。即ち、ゴールモーダルと、ゴール状態が設定される。
【０２１２】
その後、モデル化部６２Ｋは、例えば図１３のフローチャートに従ったプランニング処理を実行する。これにより、モーダルＫ内の現在状態ノード（開始ノード）からゴールノードまでの経路が生成される。
【０２１３】
例えば、エネルギーのモーダルＣについてプランニング部７４Ｃがプランニング処理を実行した場合、図２２の右側の図のような経路が設定される。
【０２１４】
これにより、行動制御部６４は、次のような多段行動制御処理を実行することができるようになる。
【０２１５】
即ち、行動制御部６４の実行管理部７８は、開始ノードからゴールノードまでの経路上の各遷移に割り当てられた原因モーダルと原因ノードとを、因果部６３の因果推定部７７から取得する。即ち、因果推定部７７は、実行管理部７８から所定遷移の通知を受けると、その所定遷移に割り当てられた原因モーダルと原因ノードとを因果テーブル格納部７６から検索して抽出し、実行管理部７８に提供する。
【０２１６】
ここで、取得された原因モーダルがアクションモーダルである場合は、実行管理部７８は、原因ノードに対応するコマンドをコントローラ部７９から取得してアクション部６５に提供することができる。よって、この場合、実行管理部７８は、図１４のフローチャートに従った行動制御処理を実行すればよい。
【０２１７】
これに対して、原因モーダルがアクションモーダルでない場合、その原因モーダルの現在状態を原因ノードまで遷移させることが必要になる。例えば図２２の例では、原因モーダルは光のモーダルＢとされており、図２２の左側の図に示されるように、現在状態を現在状態ノードから原因ノードまで遷移させることが必要になる。そこで、原因モーダルがモーダルＬ（ＬはＡ乃至Ｃのうちのいずれか）の場合には、実行管理部７８は、その原因モーダルＬのモデル化部６２Ｌに対してプランニング処理を依頼する。モデル化部６２Ｌのプランニング部７４Ｌは、現在状態ノードから原因ノードまでのプランニング処理を実行し、その実行結果、即ち、経路を実行管理部７８に通知する。例えば図２２の例では、光のモーダルＢのモデル化部６２Ｂのプランニング部７４Ｂは、図２２の左側の図に示されるように、現在状態ノードから原因ノードまでのプランニング処理を実行し、その実行結果、即ち、経路を実行管理部７８に通知する。
【０２１８】
実行管理部７８は、通知された経路上の各遷移に割り当てられた原因モーダルと原因ノードとを、因果部６３の因果推定部７７から取得する。
【０２１９】
実行管理部７８は、このようにして、原因モーダルと原因ノードとを再帰的に呼び出していく。そして、実行管理部７８は、エージェントが直接出力できるアクションモーダルに辿り着いた段階で、その時刻でのアクション（コマンド）を決定して、アクション部６５に提供する。
【０２２０】
その後、実行管理部７８は、このような行動制御処理の手順を経て、原因ノードに辿り着いた段階で、もとのモーダルに戻りそのモーダルで行動制御処理を実行する。つまり、図２２の例では、図２２の左側の図の原因ノード、即ち、原因モーダルである光のモーダルＢのHMM上の原因ノードに辿り着いた段階で、点線に示されるように、図２２の右側の図のエネルギーのモーダルＣに戻り、そのHMM上の現在状態ノードの遷移が発生する。そして、最終的に最初に与えたゴールノード（図２２の例では、右側の図のエネルギーのHMM上のゴールノード）まで到達することができた段階で、目標達成となる。
【０２２１】
なお、原因モーダルや原因ノードが１つではなく、多くの実世界の問題のように複数存在するケースがある。例えば、図１６の例では、迷路上に複数の光源（３つの点８７）が存在するので、そのうちのどの光源が原因となっても構わない。また、光周辺であれば、エネルギーは十分に得られるので、その近傍のノードならどれが原因となっても構わない。このような場合、原因ノードに対してプランを立てるときに最初に辿り着く経路を選択することで、妥当な原因ノードと、その経路を選ぶことができる。具体的には、図１５のシステムは、まず原因モーダルを１つ選ぶ。次に、図１５のシステムは、その原因モーダルの中で、候補となる原因ノード全てをゴールノードとして、現在状態ノードからの経路をプランニングする。このプランニングは、基本的に図１３のプランニング処理の実行により実現される。ただし、ステップＳ４５のゴールノードの到着判定処理では、全てのゴールノードに対して判定が行われる。この手法によれば、最初に到着したゴールノードとその経路の選択が可能になる。
【０２２２】
さらに、具体的なタスク例を交えて詳しく説明する。
【０２２３】
まず、図１９に示されるように、距離のHMM上のある状態をゴールノードとして指定した場合には、このエージェント（図１５のシステム）にとっては図１６のシミュレータ上の特定の場所に行くことを意味している可能性が高い。その場合、場所の変化はエージェントのアクションを原因としている可能性がかなり高い。従って、図１９に示されるような経路のもと、各遷移が、ノードの方向に対応した移動アクションと対応づけられる。即ち、遷移の因果をアクションに帰着させることができる。
【０２２４】
次に、図２３に示されるように、光のHMM上の、とある光源（図１６の例では点８７）の近くの状態をゴールとした場合に、図１５のシステムが、経路探索（プランニング処理）を行うと、現在状態ノードが光の近くで明るさが感知されていれば、どの方向に行けば光の明るさが変わるか分かるので周囲のノードへの遷移は、距離のHMMと同様にアクションと結びついている。しかし、現在位置が光の見えない状態だとすると、エージェントであるロボット８５にとって、どの方向に移動すれば光が見えるのかは分からない。
【０２２５】
仮に、光のHMM上で経路が作成されたところ、光のＳ（南）側からアプローチして光に近づいくような経路ができたとする。図１６のシミュレータ上には３つの光源（点８７）がおいてあるために、ロボット８５にとって見えない場所から光のＳ（南）側に来れらる場所としては、３カ所の場所が可能性として存在することになる。因果推定がうまく行われていれば、光のHMM上で、ロボット８５にとって見えないノードから、光源（図１６の例では３つの点８７のうちの何れか）のＳ（南）端側のノードへの遷移は、距離のHMM上における３つの光源（図１６の例では３つの点８７）の南端のノードのそれぞれと高い相関を持っている。そこで、図１５のシステムは、上述のように原因ノードとしてこれらの各南端側のノードをそれぞれ設定して、距離のHMMについてプランニング処理を実行し、制御処理を実行することで、光のHMMにおいて遷移が発生する。なお、このようにゴールノードが複数存在する場合にプランニング処理を実行する場合、図１５のシステムは、図１３のステップＳ４５において、複数のゴールノードについて到達条件を調べるだけで、最初に到達できる経路を算出することができる。
【０２２６】
これにより、エージェントたるロボット８５は、まず距離のHMM上で光の外縁までの経路を求めて最も近くの光源（図１６の例では点８７）に向けて移動し、さらにその光源の放射内に入ったときには、光のHMM内の遷移で目標とする光との相対位置へ移動することができるようになる。
【０２２７】
次に、エネルギーのHMMの状態を任意に制御することを考える。エネルギーのHMMについては、どの遷移に関してもアクションと直接関係しない。因果推定がうまくいっているとすると、エネルギーが上昇する方向の遷移は、光のHMMの表現する光源（図１６の例では点８７）の近傍ノードと、距離のHMMにおいて表現されている光源（図１６の例では点８７）の位置の近傍のノードとの因果が高い。さらに光源は３つあるので、距離のHMM上では因果が３つに分散するのに対して、光のHMMではどの光に対しても同じ表現になっているので、光HMM上のノードに対して因果が高い。
【０２２８】
従って、例えば上述した図２１の因果推定がなされている場合、図２４に示されるような処理が実行可能である。即ち、ステップＳ８１Ｃにおいて、エネルギーを上げるような目標が与えられる。すると、図１５のシステムは、ステップＳ８２Ｃにおいて、まずエネルギーのHMMでエネルギーが順次上昇していく経路を生成する。
【０２２９】
図１５のシステムは、このエネルギーのHMM上での遷移の因果に基づいて、光のHMM上で光源（図１６の例では点８７）に近づく経路を生成する。必要であれば、図１５のシステムは、エージェントたるロボット８５にとって光源（図１６の例では点８７）の見えない所でも、距離のHMMの表現を使って最寄りの光源（図１６の例では点８７）に近づくような経路を生成する。換言すると、次のようなステップＳ８３Ｃ,Ｓ８４Ｃの処理が実行される。即ち、ステップＳ８３Ｃとは、（遷移を起こすために）原因状態を実現する処理である。ステップＳ８４Ｃとは、経路を作成するという処理でる。
【０２３０】
図１５のシステムは、この経路に基づいて、遠くから光に近づいて、エネルギーが目標の状態になるまで、そこにとどまるという行動をすることができる。換言すると、次のようなステップＳ８５Ｃ,Ｓ８６Ｃの処理が実行される。即ち、ステップＳ８５Ｃとは、原因状態を実現する処理である。ステップＳ８６Ｃとは、即実行可能という準備処理である。なお、反対に、どうようにエネルギーを下げるかという課題が設定された場合、光源（図１６の例では点８７）から離れてそこに止まるような行動を出せばよい。
【０２３１】
以上説明したように、図１５のシステムは、独立するモーダル（事象）毎の状態遷移とその経路制御という問題に落とし込み、かつモーダル間の因果関係を割り出し、再帰的に制御することができる。その結果、複雑な行動制御の問題をタスクに対する前提知識に頼らずに取り扱うことができるようになる。
【０２３２】
ところで、上述した一連の処理は、ハードウエアにより実行させることもできるが、ソフトウエアにより実行させることができる。
【０２３３】
この場合、上述したシステムの少なくとも一部として、例えば、図２５に示されるパーソナルコンピュータを用いて構成してもよい。
【０２３４】
図２５において、CPU（Central Processing Unit）９１は、ROM（Read Only Memory９２に記録されているプログラム、または記憶部９８からRAM（Random Access Memory）９３にロードされたプログラムに従って各種の処理を実行する。RAM９３にはまた、CPU９１が各種の処理を実行する上において必要なデータなども適宜記憶される。
【０２３５】
CPU９１、ROM９２、およびRAM９３は、バス９４を介して相互に接続されている。このバス９４にはまた、入出力インタフェース９５も接続されている。
【０２３６】
入出力インタフェース９５には、キーボード、マウスなどよりなる入力部９６、ディスプレイなどよりなる出力部９７、ハードディスクなどより構成される記憶部９８、および、モデム、ターミナルアダプタなどより構成される通信部９９が接続されている。通信部９９は、インターネットを含むネットワークを介して他の装置（図示せず）との間で行う通信を制御する。
【０２３７】
入出力インタフェース９５にはまた、必要に応じてドライブ１００が接続され、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリなどよりなるリムーバブルメディア１０１が適宜装着され、それらから読み出されたコンピュータプログラムが、必要に応じて記憶部９８にインストールされる。
【０２３８】
一連の処理をソフトウエアにより実行させる場合には、そのソフトウエアを構成するプログラムが、専用のハードウエアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、ネットワークや記録媒体からインストールされる。
【０２３９】
このようなプログラムを含む記録媒体は、図２５に示されるように、装置本体とは別に、ユーザにプログラムを提供するために配布される、プログラムが記録されている磁気ディスク（フロッピディスクを含む）、光ディスク（CD-ROM(Compact Disk-Read Only Memory),DVD(Digital Versatile Disk)を含む）、光磁気ディスク（ＭＤ（Mini-Disk）を含む）、もしくは半導体メモリなどよりなるリムーバブルメディア（パッケージメディア）１０１により構成されるだけでなく、装置本体に予め組み込まれた状態でユーザに提供される、プログラムが記録されているROM９２や、記憶部９８に含まれるハードディスクなどで構成される。
【０２４０】
図２６は、本発明を適用したデータ処理装置の一実施の形態の構成例の概要を説明する図である。
【０２４１】
図２６において、データ処理装置は、状態と状態遷移とを有する状態遷移モデルを記憶している。データ処理装置は、状態遷移モデルによって、モデル化対象をモデル化するための学習を行う学習装置、すなわち、モデル化対象から観測されるセンサ信号に基づき、モデル化対象の確率統計的な動特性を与える状態遷移モデルを学習する学習装置の１種であり、上述の学習部３１に適用することができる。
【０２４２】
モデル化対象からは、そのモデル化対象をセンシングすることにより得られるセンサ信号が、例えば、時系列に観測される。
【０２４３】
データ処理装置は、モデル化対象から観測されるセンサ信号を用い、状態遷移モデルの学習、すなわち、ここでは、状態遷移モデルのパラメータの推定と、構造の決定とを行う。
【０２４４】
ここで、状態遷移モデルとしては、例えば、HMMや、ベイジアンネットワーク、POMDP(Partially Observable Markov Decision Process)等を採用することができる。以下では、状態遷移モデルとして、例えば、HMMを採用することとする。
【０２４５】
図２７は、HMMの例を示している。
【０２４６】
HMMは、状態と状態間遷移とを有する状態遷移モデルである。
【０２４７】
図２７は、３状態のHMMの例を示している。
【０２４８】
図２７において（以降の図においても同様）、丸印は、状態を表し、矢印は、状態遷移を表す。
【０２４９】
また、図２７において、si（図２７では、i=1,2,3）は、状態を表し、aijは、状態siから状態sjへの状態遷移確率を表す。さらに、bj(x)は、状態sjへの状態遷移時に、観測値xが観測される出力確率密度関数を表し、πiは、状態siが初期状態である初期確率を表す。
【０２５０】
なお、出力確率密度関数bj(x)としては、例えば、混合正規確率分布等が用いられる。
【０２５１】
ここで、HMM（連続HMM）は、状態遷移確率aij、出力確率密度関数bj(x)、及び初期確率πiによって定義される。これらの状態遷移確率aij、出力確率密度関数bj(x)、及び初期確率πiを、HMMのパラメータλ={aij,bj(x),πi,i=1,2,・・・,N，j=1,2,・・・,N}という。Nは、HMMの状態数を表す。
【０２５２】
HMMのパラメータλを推定する方法としては、前述したように、Baum-Welchの再推定法が広く利用されている。Baum-Welchの再推定法は、EMアルゴリズム(EM(Expectation-Maximization) algorithm)に基づくパラメータの推定方法である。
【０２５３】
Baum-Welchの再推定法によれば、観測される時系列データx=x1,x2,・・・,xTに基づき、その時系列データが観測（生起）される確率である生起確率から求まる尤度を最大化するように、HMMのパラメータλの推定が行われる。
【０２５４】
ここで、xtは、時刻tに観測される信号（サンプル値）を表し、Tは、時系列データの長さ（サンプル数）を表す。
【０２５５】
なお、Baum-Welchの再推定法は、尤度最大化に基づくパラメータ推定方法ではあるが、最適性を保証するものではなく、HMMの構造やパラメータλの初期値によっては、局所解に収束することがある。HMMやBaum-Welchの再推定法の詳細については、例えば、Laurence Rabiner, Biing-Hwang Juang 共著、「音声認識の基礎（上・下）」、ＮＴＴアドバンステクノロジ株式会社（以下、文献Ａともいう）等に記載されている。
【０２５６】
HMMは、音声認識で広く利用されているが、音声認識で利用されるHMMでは、状態の数や状態遷移の仕方等は、一般に、あらかじめ決定される。
【０２５７】
図２８は、音声認識で利用されるHMMの例を示している。
【０２５８】
図２８のHMMは、left-to-right型と呼ばれる。
【０２５９】
図２８では、状態数は３になっており、状態遷移は、自己遷移（状態siから状態siへの状態遷移）と、左から右隣の状態への状態遷移とのみを許す構造に制約されている。
【０２６０】
図２８のHMMのように、状態遷移に制約があるHMMに対して、図２７に示した、状態遷移に制約がないHMM、すなわち、任意の状態siから任意の状態sjへの状態遷移が可能なHMMは、エルゴディック(Ergodic)HMMと呼ばれる。
【０２６１】
エルゴディックHMMは、構造としては最も自由度の高いHMMであるが、状態数が多くなると、パラメータλの推定が困難となる。
【０２６２】
例えば、エルゴディックHMMの状態数が、１０００である場合、状態遷移の数は、１００万（＝１０００×１０００）となる。
【０２６３】
したがって、この場合、パラメータλのうちの、例えば、状態遷移確率aijについては、１００万個の状態遷移確率aijを推定することが必要となる。
【０２６４】
モデル化対象によっては、必要となる状態遷移は、限られた状態遷移で十分であるかもしれないが、どのように状態遷移に対して制約をかければ良いかが事前に分からない場合には、このような膨大な数のパラメータλを適切に推定することは非常に難しい。また、適切な状態数も事前に分からず、HMMの構造を決定するための情報も事前に分からない場合には、適切なパラメータλを求めることは、さらに難しくなる。
【０２６５】
図２６のデータ処理装置は、HMMの構造、すなわち、HMMの状態の数、及び状態遷移に関して、制約を事前に与えなくても、モデル化対象に適切なHMMの構造を決定するとともに、そのHMMのパラメータλを推定する学習を行う。
【０２６６】
図２９は、図２６のデータ処理装置の構成例を示すブロック図である。
【０２６７】
図２９において、データ処理装置は、時系列データ入力部１１１、データ調整部１１２、パラメータ推定部１１３、評価部１１４、モデル記憶部１１５、初期構造設定部１１６、及び、構造調整部１１７を有する。
【０２６８】
時系列データ入力部１１１には、モデル化対象から観測されるセンサ信号が入力される。時系列データ入力部１１１は、モデル化対象から観測されるセンサ信号に基づき、モデル化対象から観測される時系列データ（以下、観測時系列データともいう）x=x1,x2,・・・,xTを、データ調整部１１２に出力する。
【０２６９】
すなわち、時系列データ入力部１１１は、例えば、モデル化対象から観測される、時系列のセンサ信号を、そのまま、観測時系列データxとして、データ調整部１１２に供給する。
【０２７０】
なお、時系列データ入力部１１１は、評価部１１４からの要求にも応じて、観測時系列データxを、データ調整部１１２に供給する。
【０２７１】
データ調整部１１２は、後述するモデル記憶部１１５に記憶されたHMMの学習の進行に応じて、HMMの学習に用いられる時系列データ、つまり、時系列データ入力部１１１から供給される観測時系列データxを調整し、調整後の時系列データ（以下、調整後時系列データともいう）x'=x1',x2',・・・,xT''を出力する。
【０２７２】
すなわち、データ調整部１１２は、時系列データ入力部１１１からの観測時系列データx=x1,x2,・・・,xTに対して、例えば、ダウンサンプリングの処理（ダウンサンプリング処理）を施し、そのダウンサンプリング処理によって得られる調整後時系列データx'=x1',x2',・・・,xT''を出力する。
【０２７３】
例えば、観測時系列データxが1000Hzでサンプリングされた時系列データである場合に、データ調整部１１２は、ダウンサンプリング処理によって、1000Hzでサンプリングされた観測時系列データxを、100Hzでサンプリングされた調整後時系列データx'に変換する。
【０２７４】
ここで、ダウンサンプリング処理によれば、観測時系列データxに含まれる高周波成分が取り除かれ、調整後時系列データx'は、観測時系列データxのマクロな特徴、つまり、観測時系列データxの低周波成分のみを含む時系列データとなる。
【０２７５】
このような、観測時系列データxのマクロな特徴のみを含む調整後時系列データx'を用いて、モデル記憶部１１５に記憶された状態遷移モデルであるHMMの学習を行うことにより、HMMでは、観測時系列データxのマクロな特徴が獲得される。
【０２７６】
データ調整部１１２において、観測時系列データxを、どのように調整するか、すなわち、いまの場合には、観測時系列データxを、どのようなサンプリング周波数の調整後時系列データx'に変換するかは、観測時系列データxの特徴を適切に獲得する学習を行う上で、重要な問題となる。
【０２７７】
上述したように、データ調整部１１２は、HMMの学習の進行に応じて、観測時系列データxを調整するが、その調整は、HMMの学習が進行するにつれて、調整後時系列データx'が、観測時系列データxのマクロな特徴のみを含む時系列データから、ミクロな特徴、つまり、観測時系列データxの高周波成分をも含む時系列データになるように行われる。
【０２７８】
例えば、データ調整部１１２は、HMMの学習が進行するにつれて、調整後時系列データx'のサンプリング周波数を、小さい値から、徐々に大に変更していく。
【０２７９】
具体的には、例えば、データ調整部１１２は、学習の初期では、調整後時系列データx'のサンプリング周波数を10Hzとし、その後、学習が進行するにつれて、調整後時系列データx'のサンプリング周波数を、50Hz, 100Hz, 500Hz, 1000Hzに、順次変更する。
【０２８０】
この場合、HMMは、学習の初期には、観測時系列データxのマクロな特徴を獲得し、その後、学習が進行するにつれて、観測時系列データxのミクロな特徴をも獲得していく。
【０２８１】
なお、データ調整部１１２に対しては、評価部１１４から、学習の進行の状況を表す進行状況情報が供給される。データ調整部１１２は、評価部１１４からの進行状況情報に基づき、学習の進行の状況を認識し、調整後時系列データx'のサンプリング周波数を変更する。
【０２８２】
また、データ調整部１１２において、学習の進行に応じて、観測時系列データxを、そのマクロな特徴を含む調整後時系列データx'から、ミクロな特徴を含む調整後時系列データx'に調整していく処理としては、ダウンサンプリング処理（観測時系列データxを、時間方向に間引く処理）の他、フィルタバンク処理を採用することができる。
【０２８３】
データ調整部１１２において、フィルタバンク処理を採用する場合においては、観測時系列データxが、所定の分割数のフィルタバンクを用いてフィルタリングされることで、その所定の分割数の周波数成分に分割される。そして、その所定の分割数の周波数成分が、調整後時系列データx'として出力される。
【０２８４】
この場合、データ調整部１１２では、学習が進行するにつれて、フィルタバンクの分割数が、徐々に大に変更される。
【０２８５】
なお、データ調整部１１２は、上述のように、観測時系列データxを調整し、調整後時系列データx'=x1',x2',・・・,xT''を出力するが、T'は、調整後時系列データx'の長さを表す。
【０２８６】
データ調整部１１２が観測時系列データxを調整して出力する調整後時系列データx'は、パラメータ推定部１１３、及び、構造調整部１１７に供給される。
【０２８７】
パラメータ推定部１１３は、データ調整部１１２からの調整後時系列データx'を用い、モデル記憶部１１５に記憶されたHMMのパラメータλを推定する。
【０２８８】
すなわち、パラメータ推定部１１３は、データ調整部１１２からの調整後時系列データx'を用い、例えば、Baum-Welchの再推定法によって、モデル記憶部１１５に記憶されたHMMのパラメータλの推定を行う。
【０２８９】
パラメータ推定部１１３は、HMMのパラメータλの推定によって得られる新たなパラメータλを、モデル記憶部１１５に供給し、上書きの形で記憶させる。
【０２９０】
なお、パラメータ推定部１１３は、HMMのパラメータλの推定にあたり、パラメータλの初期値として、モデル記憶部１１５に記憶された値を用いる。
【０２９１】
ここで、パラメータ推定部１１３において、新たなパラメータλを推定する処理を行うことを、学習回数の１回とカウントすることとする。
【０２９２】
パラメータ推定部１１３は、新たなパラメータλを推定する処理を行うたびに、学習回数を１だけインクリメントし、その学習回数を、評価部１１４に供給する。
【０２９３】
さらに、パラメータ推定部１１３は、新たなパラメータλによって定義されるHMMから、データ調整部１１２からの調整後時系列データx'が観測される尤度を求め、評価部１１４に供給する。
【０２９４】
なお、パラメータ推定部１１３が評価部１１４に供給する尤度は、調整後時系列データx'ではなく、観測時系列データxを用いて求めることもできる。
【０２９５】
評価部１１４は、パラメータ推定部１１３からの尤度、及び学習回数に基づき、学習が行われたHMM、つまり、パラメータ推定部１１３でパラメータλが推定されたHMMを評価し、そのHMMの評価の結果に基づいて、HMMの学習を終了するか否かを判定する。
【０２９６】
すなわち、評価部１１４は、例えば、パラメータ推定部１１３からの学習回数が所定の回数に到達するまでは、HMMによる観測時系列データxの特徴（時系列パターン）の獲得が不十分であると評価し、HMMの学習を続行すると判定する。
【０２９７】
そして、評価部１１４は、パラメータ推定部１１３からの学習回数が所定の回数に到達した場合には、HMMによる観測時系列データxの特徴の獲得が十分であると評価し、HMMの学習を終了すると判定する。
【０２９８】
また、評価部１１４は、例えば、パラメータ推定部１１３からの尤度が所定の値に到達するまでは、HMMによる観測時系列データxの特徴（時系列パターン）の獲得が不十分であると評価し、HMMの学習を続行すると判定する。
【０２９９】
そして、評価部１１４は、パラメータ推定部１１３からの尤度が所定の値に到達した場合には、HMMによる観測時系列データxの特徴の獲得が十分であると評価し、HMMの学習を終了すると判定する。
【０３００】
評価部１１４は、HMMの学習を続行すると判定した場合、時系列データ入力部１１１、データ調整部１１２、及び、構造調整部１１７に対して、所定の処理を行うことを要求する。
【０３０１】
すなわち、評価部１１４は、時系列データ入力部１１１に対して、観測時系列データの供給を行うことを要求する。
【０３０２】
さらに、評価部１１４は、データ調整部１１２に対して、学習回数や尤度を、学習の進行の状況を表す進行状況情報として供給することで、学習の進行に応じたダウンサンプリング処理を行うことを要求する。
【０３０３】
また、評価部１１４は、学習の進行に応じて、モデル記憶部１１５に記憶されたHMMの構造の調整を、構造調整部１１７に要求する。
【０３０４】
モデル記憶部１１５は、状態遷移モデルである、例えば、HMMを記憶する。
【０３０５】
すなわち、モデル記憶部１１５は、パラメータ推定部１１３からHMMの新たなパラメータが供給されると、その新たなパラメータによって、記憶値（記憶しているHMMのパラメータ）を更新する（上書きする）。
【０３０６】
また、モデル記憶部１１５は、HMMの学習が開始される前に、初期構造設定部１１６によって初期化されるHMMの構造（初期構造）、すなわち、HMMの状態数と状態遷移に関する制約に基づいて決定されるHMMのパラメータの初期値を記憶する。
【０３０７】
ここで、パラメータ推定部１１３によるHMMのパラメータの推定は、初期構造設定部１１６で決定される初期値から行われる。
【０３０８】
また、モデル記憶部１１５に記憶されたHMMの構造は、学習の進行に応じて、構造調整部１１７によって調整されるが、モデル記憶部１１５の記憶値の更新は、構造調整部１１７によるHMMの構造の調整によって得られるHMMのパラメータによっても行われる。
【０３０９】
初期構造設定部１１６は、HMMの学習が開始される前に、HMMの構造を初期化し、その初期化された構造（初期構造）のHMMのパラメータ（初期パラメータ）を設定する。
【０３１０】
すなわち、初期構造設定部１１６は、HMMの初期構造、つまり、HMMの状態数と状態遷移を設定する。
【０３１１】
ここで、初期構造としてのHMMの状態数と状態遷移には、所定の制約をかけることができる。
【０３１２】
例えば、初期構造設定部１１６は、所定の制約としての所定の数以下に、HMMの状態数を設定する。
【０３１３】
具体的には、例えば、初期構造設定部１１６は、HMMの状態数を、１６や１００等の、それほど多くない数に設定する。
【０３１４】
さらに、初期構造設定部１１６は、初期構造として設定した状態数の状態を、１次元以上のL次元空間に（Lは、正の整数）、適当に配置する。
【０３１５】
例えば、初期構造として設定した状態数が１６であり、その１６個の状態を、２次元空間に配置する場合には、初期構造設定部１１６は、１６個の状態を、２次元空間に、例えば、格子状に配置する。
【０３１６】
その後、初期構造設定部１１６は、２次元空間に配置した１６個の状態に対して、状態遷移、すなわち、自己遷移と、他の状態への状態遷移とを設定する。
【０３１７】
状態に対して設定する状態遷移には、例えば、スパース(Sparse)な構造であること等の所定の制約をかけることができる。
【０３１８】
ここで、スパースな構造とは、任意の状態から任意の状態への状態遷移が可能なエルゴディックHMMのような密な状態遷移ではなく、ある状態から状態遷移することができる状態が非常に限定されている構造である。
【０３１９】
なお、ここでは、スパースな構造であっても、他の状態への状態遷移は、少なくとも１つ存在し、また、自己遷移は存在することとする。
【０３２０】
初期構造設定部１１６は、例えば、上述したように、所定の制約をかけることで、HMMの構造を、スパースな構造に初期化すること等によって、初期構造を得ると、その初期構造のHMMに、初期パラメータ、つまり、状態遷移確率aij、出力確率密度関数bj(x)、及び、初期確率πiの初期値を設定する。
【０３２１】
すなわち、初期構造設定部１１６は、例えば、各状態に対して、その状態から可能な（有効な）状態遷移の状態遷移確率aijを一様な値（可能な状態遷移の数がM個であるとすると、1/M）に設定し、できない状態遷移、つまり、スパースな状態遷移として設定された状態遷移以外の状態遷移の状態遷移確率aijを0に設定する。
【０３２２】
また、出力確率密度関数bj(x)として、例えば、正規分布を利用する場合には、初期構造設定部１１６は、時系列データ入力部１１１で得られる観測時系列データx=x1,x2,・・・,xTの平均値μと分散σ2を、次式に従って求め、その平均値μと分散σ2で定義される正規分布を、各状態sjの出力確率密度関数bj(x)に設定する。
【０３２３】
μ＝(1/T)Σxt
σ2＝(1/T)Σ(xt-μ)2
【０３２４】
ここで、上述の式において、Σは、時刻tを、1から、観測時系列データxの長さTに代えてのサメーション（総和）を意味する。
【０３２５】
さらに、初期構造設定部１１６は、各状態siの初期確率πiを一様な値に設定する。すなわち、初期構造のHMMの状態数をN個とすると、初期構造設定部１１６は、そのN個の状態siそれぞれの初期確率πiを、1/Nに設定する。
【０３２６】
初期構造設定部１１６において、初期構造と初期パラメータλ={aij,bj(x),πi,i=1,2,・・・,N，j=1,2,・・・,N}が設定されたHMMは、モデル記憶部１１５に供給されて記憶される。モデル記憶部１１５に記憶されたHMMの（初期）構造と（初期）パラメータλは、学習によって更新されていく。
【０３２７】
構造調整部１１７は、評価部１１４からの要求に応じ、データ調整部１１２からの調整後時系列データx'を用いて、モデル記憶部１１５に記憶されたHMMの構造を調整する。なお、構造調整部１１７で行われるHMMの構造の調整には、その構造の調整に応じて必要となるHMMのパラメータの調整も含まれる。
【０３２８】
構造調整部１１７で行われるHMMの構造の調整の種類としては、状態の分割、状態のマージ、状態の追加、状態遷移の追加、状態の削除、及び、状態遷移の削除の６種類があり、その詳細については後述する。
【０３２９】
次に、図３０を参照して、図２９の初期構造設定部１１６の処理について、さらに説明する。
【０３３０】
初期構造設定部１１６では、HMMの初期構造として、エルゴディックな構造を設定することもできるし、所定の制約をかけることで、スパースな構造を設定することもできる。
【０３３１】
図３０は、スパースな初期構造（状態遷移）のHMMを示している。
【０３３２】
ここで、図３０では（以降の図でも同様）、丸印は、状態を表し、矢印は、状態遷移を表す。さらに、図３０（以降の図でも同様）において、２つの状態を結ぶ双方向の矢印は、その２つの状態の一方から他方への状態遷移と、他方から一方への状態遷移とを表す。また、図３０（以降の図でも同様）において、各状態は、自己遷移が可能であり、その自己遷移を表す矢印の図示は、省略されている。
【０３３３】
図３０では、１６個の状態が、２次元空間上に格子状に配置されている。すなわち、図３０では、横方向に、４個の状態が配置され、縦方向にも、４個の状態が配置されている。
【０３３４】
いま、横方向に隣接する状態どうしの距離、及び、縦方向に隣接する状態どうしの距離を、いずれも１とすると、図３０Ａは、距離が１以下の状態への状態遷移は可能とし、他の状態への状態遷移はできないという制約をかけた構造のHMMを示している。
【０３３５】
また、図３０Ｂは、距離が√２以下の状態への状態遷移は可能とし、他の状態への状態遷移はできないという制約をかけた構造のHMMを示している。
【０３３６】
なお、スパースな初期構造の設定の方法は、以上のように、L次元空間上に配置された状態に対して、状態どうしの距離に応じて、近傍に位置する状態への状態遷移（自己遷移を含む）のみを可能とする制約をかける方法に限定されるものではない。
【０３３７】
すなわち、スパースな初期構造の設定の方法としては、その他、例えば、ある状態に注目したときに、その状態について、すべての状態の中から、ランダムな数だけの状態を、ランダムに選択し、そのランダムに選択された状態への状態遷移（自己遷移を含む）だけに、状態遷移を制約する方法等を採用することが可能である。
【０３３８】
また、スパースな初期構造の設定の方法として、図１０に示されるようなHMMの構造を採用することも可能である。図１０ＡのHMMは、３次元グリッド制約によるHMMを示している。図１０ＢのHMMは、２次元ランダム配置制約によるHMMを示している。図１０ＣのHMMは、スモールワールドネットワークによるHMMを示している。
【０３３９】
次に、図３１を参照して、構造調整部１１７がHMMの構造の調整として行う状態の分割について説明する。
【０３４０】
なお、上述したように、図中、丸印は、状態を表すが、以下では、数字iが付された丸印を、状態siと記載する。
【０３４１】
図３１Ａは、状態の分割が行われる前のHMMを示している。
【０３４２】
図３１Ａでは、HMMは、６個の状態s1,s2,s3,s4,s5,s6を有し、状態s1とs2との間、状態s1とs4との間、状態s2とs3との間、状態s2とs5との間、状態s3とs6との間、状態s4とs5との間、及び、状態s5とs6との間のそれぞれの双方向の状態遷移と、自己遷移とが可能となっている。
【０３４３】
図３１Ｂは、図３１ＡのHMMを対象として、状態の分割が行われた後のHMMを示している。
【０３４４】
状態の分割は、HMMの規模を拡大するために行われる。
【０３４５】
図３１Ｂでは、図３１ＡのHMMの状態s1ないしs6のうちの、例えば、状態s5が分割されている。
【０３４６】
状態s5の分割は、分割の対象の状態s5と同一の状態遷移が可能で、かつ、状態s5との間でも双方向の状態遷移が可能な新たな状態s7を追加することによって行われる。
【０３４７】
図３１Ａでは、状態s5は、状態s2,s4,s6のそれぞれとの間の状態遷移、及び、自己遷移が可能であるから、構造調整部１１７は、新たな状態s7について、状態s5と同様に、状態s2,s4,s6のそれぞれとの間の状態遷移、及び、自己遷移を、有効な（可能な）状態遷移として設定する。
【０３４８】
さらに、構造調整部１１７は、新たな状態s7について、状態s5との間の状態遷移も、有効な状態遷移として設定する。
【０３４９】
また、構造調整部１１７は、状態の分割では、例えば、分割の対象の状態s5のパラメータを、いわば引き継ぐ形で、新たな状態s7のパラメータを設定する。
【０３５０】
すなわち、構造調整部１１７は、新たな状態s7の初期確率π7を、分割の対象の状態s5の初期確率π5に設定するとともに（π7=π5）、新たな状態s7の出力確率密度関数b7(x)を、分割の対象の状態s5の出力確率密度関数b5(x)に設定する（b7(x)=b5(x)）。
【０３５１】
さらに、構造調整部１１７は、状態si（図３１では、i=1,2,3,4,6）から新たな状態s7への状態遷移の状態遷移確率ai7を、状態siから分割の対象の状態s5への状態遷移確率ai5に設定する（ai7=ai5）。
【０３５２】
また、構造調整部１１７は、新たな状態s7から状態siへの状態遷移の状態遷移確率a7iを、分割の対象の状態s5から状態siへの状態遷移確率a5iに設定する（a7i=a5i）。
【０３５３】
そして、構造調整部１１７は、分割の対象の状態s5から新たな状態s7への状態遷移の状態遷移確率a57と、新たな状態s7から分割の対象の状態s5への状態遷移の状態遷移確率a75とを、適当な値、すなわち、例えば、a57=a75=0.5等に設定する。
【０３５４】
さらに、構造調整部１１７は、状態の分割後のHMMの必要なパラメータについて、正規化処理を施し、状態の分割の処理を終了する。
【０３５５】
すなわち、構造調整部１１７は、状態の分割後のHMMの初期確率πiと、状態遷移確率aijとに、次式を満足するような正規化処理を施す。
【０３５６】
Σπj=1
Σaij=1  (i=1,2,・・・,N)
【０３５７】
ここで、上述の式において、Σは、状態を表す変数jを、1から、状態の分割後のHMMの状態数Nに代えてのサメーションを意味する。図３１では、状態の分割後のHMMの状態数Nは、７である。
【０３５８】
なお、上述の式を満足する正規化処理の方法としては、例えば、正規化処理前の初期確率πjの総和Σπj=π1+π2+・・・+πNで、正規化処理前の初期確率πjを除算する方法がある。状態遷移確率aijの正規化処理についても、同様である。
【０３５９】
また、状態の分割において、分割の対象とする状態は、１つの状態に限定されるものではない。
【０３６０】
すなわち、分割の対象とする状態としては、状態の分割前のHMMのN個の状態s1ないしsNの中から、例えば、ランダムに、１以上N個以下の所定数nの状態を選択することができる。
【０３６１】
また、分割の対象とする状態としては、状態の分割前のHMMのN個の状態s1ないしsNの中から、例えば、出力確率密度関数bj(x)を定義する分散σ2が大きい上位n個の状態、つまり、状態から観測される観測値に、比較的大きなばらつきがある上位n個の状態を選択することができる。
【０３６２】
ここで、分割の対象とする状態の数nは、ランダムに設定することもできるし、固定値に設定することもできる。いずれにしても、状態の分割によって、HMMの構造は、状態数が、分割前の状態数から、n個だけ増加した構造に更新される。
【０３６３】
次に、図３２を参照して、構造調整部１１７がHMMの構造の調整として行う状態のマージについて説明する。
【０３６４】
図３２Ａは、状態のマージが行われる前のHMMを示しており、上述の図３１Ａの場合と同一のHMMである。
【０３６５】
図３２Ｂは、図３２ＡのHMMを対象として、状態のマージが行われた後のHMMを示している。
【０３６６】
状態のマージ(merge)は、冗長に割り当てられた状態を縮退させるために行われる。
【０３６７】
図３２Ｂでは、図３２ＡのHMMの状態s1ないしs6のうちの、例えば、状態s5を、マージ対象として、そのマージ対象の状態s5が、被マージ対象の状態s6にマージされている。
【０３６８】
状態s5の、状態s6へのマージは、マージ対象の状態s5と、被マージ対象の状態s6との間の状態遷移を削除するとともに、マージ対象の状態s5が、マージ対象の状態s5、及び、被マージ対象の状態s6を除く他の状態との間に有する状態遷移（以下、固有の状態遷移ともいう）を、被マージ対象の状態s6が、いわば引き継ぐ形で、マージ対象の状態s5を削除することによって行われる。
【０３６９】
したがって、構造調整部１１７は、マージ対象の状態s5と、被マージ対象の状態s6との間の状態遷移を削除する（無効にする）。
【０３７０】
さらに、図３２Ａでは、状態s5が有する固有の状態遷移は、状態s2,s4のそれぞれとの間の状態遷移であるから、構造調整部１１７は、被マージ対象の状態s6と、状態s2,s4のそれぞれとの間の状態遷移を、有効な状態遷移として追加（設定）する。
【０３７１】
そして、構造調整部１１７は、マージ対象の状態s5を削除する。
【０３７２】
さらに、構造調整部１１７は、状態のマージでは、例えば、被マージ対象の状態s6の状態遷移のうちの、マージ対象の状態s5から引き継いだ状態遷移については、マージ対象の状態s5の状態遷移確率ai5及びa5jを引き継ぐ形で、状態遷移確率ai6及びa6jを設定する。
【０３７３】
すなわち、図３２では、被マージ対象の状態s6がマージ対象の状態s5から引き継いだ状態遷移は、状態s2,s4のそれぞれとの間の状態遷移であるから、構造調整部１１７は、被マージ対象の状態s6から状態s2への状態遷移の状態遷移確率a62を、マージ対象の状態s5から状態s2への状態遷移の状態遷移確率a52に設定する（a62=a52）。
【０３７４】
さらに、構造調整部１１７は、状態s2から被マージ対象の状態s6への状態遷移の状態遷移確率a26を、状態s2からマージ対象の状態s5への状態遷移の状態遷移確率a25に設定する（a26=a25）。
【０３７５】
同様に、構造調整部１１７は、被マージ対象の状態s6から状態s4への状態遷移の状態遷移確率a64を、マージ対象の状態s5から状態s4への状態遷移の状態遷移確率a54に設定する（a64=a54）。
【０３７６】
さらに、構造調整部１１７は、状態s4から被マージ対象の状態s6への状態遷移の状態遷移確率a46を、状態s4からマージ対象の状態s5への状態遷移の状態遷移確率a45に設定する（a46=a45）。
【０３７７】
そして、構造調整部１１７は、状態のマージ後のHMMの必要なパラメータについて、正規化処理を施し、状態のマージの処理を終了する。
【０３７８】
すなわち、構造調整部１１７は、状態のマージ後のHMMの初期確率πi、及び、状態遷移確率aijに、状態の分割の場合と同様の正規化処理を施す。
【０３７９】
なお、状態のマージにおいて、マージ対象とする状態と、被マージ対象とする状態とのセット（以下、マージセットともいう）は、１セットに限定されるものではない。
【０３８０】
すなわち、マージセットとする状態の組（ペア）としては、状態のマージ前のHMMのN個の状態s1ないしsNにおける、双方向の状態遷移が可能な状態の組の中から、例えば、状態どうしの相関が大きい上位n(nは、１以上の値）個の状態の組を選択することができる。
【０３８１】
なお、マージセットとする状態の組の数nは、ランダムに設定することもできるし、固定値に設定することもできる。いずれにしても、状態のマージによって、HMMの構造は、状態数が、マージ前の状態数から、n個だけ減少した構造に更新される。
【０３８２】
ここで、マージセットとする状態の組を選択するときに用いられる状態どうしの相関について説明する。
【０３８３】
状態どうしの相関とは、他の状態への状態遷移（自己遷移を含む）、及び、他の状態からの状態遷移、並びに、状態から観測される観測値が似ている程度を表し、例えば、以下のようにして求められる。
【０３８４】
すなわち、図２９で説明したように、構造調整部１１７には、パラメータ推定部１１３でのHMMのパラメータの推定に用いられる調整後時系列データx'が、データ調整部１１２から供給される。
【０３８５】
構造調整部１１７は、データ調整部１１２からの調整後時系列データx'を用いて、モデル記憶部１１５に記憶されたHMMの状態どうしの相関を求める。
【０３８６】
すなわち、構造調整部１１７は、モデル記憶部１１５に記憶されたHMMに対して、フォワードバックワードアルゴリズム(Forward-Backward algorithm)を適用し、データ調整部１１２からの調整後時系列データx'=x1',x2',・・・,xT''の各時刻tに、状態siにいる確率（時刻tのときの状態が、状態siである確率）である前向き後ろ向き確率pi(t)を求める。
【０３８７】
ここで、フォワードバックワードアルゴリズムとは、各状態siに至る確率を、時間方向に前向きに伝搬することで求められる前向き確率αi(t)と、後ろ向きに伝搬することで求められる後ろ向き確率βi(t)とを統合した確率値を計算するアルゴリズムである。
【０３８８】
フォワードバックワードアルゴリズムについては、上述の文献Ａに記載されている。
【０３８９】
構造調整部１１７は、モデル記憶部１１５に記憶されたHMMについて、調整後時系列データx'のうちのデータx1',x2',・・・,xt'を観測して、時刻tに、状態siにいる前向き確率αi(t)を求める。また、構造調整部１１７は、モデル記憶部１１５に記憶されたHMMについて、時刻tに、状態siにいて、その後、調整後時系列データx'のうちのデータxt',xt+1',・・・,xT''を観測する（時刻t以降に、データxt',xt+1',・・・,xT''が観測される場合に、時刻tに、状態siにいる）後ろ向き確率βi(t)を求める。
【０３９０】
そして、構造調整部１１７は、前向き確率αi(t)と後ろ向き確率βi(t)とを用いて、時刻tに、状態siにいる前向き後ろ向き確率pi(t)を求める。
【０３９１】
構造調整部１１７は、調整後時系列データx'の時刻t=1,2,・・・,T'のそれぞれにおいて、各状態siにいる前向き後ろ向き確率pi(t)を求める。
【０３９２】
ここで、ある状態siの前向き後ろ向き確率pi(1),pi(2),・・・,pi(T')は、長さがT'の時系列データであり、この時系列データを、pi(=pi(1),pi(2),・・・,pi(T'))とも表す。
【０３９３】
いま、ある状態siと、他の状態sjの相関を、pi*pjと表すこととすると、構造調整部１１７は、ある状態siと他の状態sjとの相関pi*pjを、例えば、状態siの前向き後ろ向き確率pi=pi(1),pi(2),・・・,pi(T')と、状態sjの前向き後ろ向き確率pj=pj(1),pj(2),・・・,pj(T')とを用い、次式に従って求める。
【０３９４】
pi*pj=Σpi(t)pj(t)
【０３９５】
ここで、上述の式において、Σは、時刻tを、1から、調整後時系列データx'の長さT'に代えてのサメーションを意味する。
【０３９６】
状態siとsjとの相関pi*pjは、状態siの前向き後ろ向き確率piと、状態sjの前向き後ろ向き確率pjとの時間変化のパターンが類似している場合、つまり、状態siとsjのうちの一方の他に、他方が存在することが冗長である場合に高くなる。
【０３９７】
この場合、状態siとsjとの間に、双方向の状態遷移が存在すると、状態siとsjとの組は、マージセットとして選択される。そして、冗長な状態si及びsjのうちの一方をマージ対象とするとともに、他方を被マージ対象として、マージ対象の状態が、被マージ対象の状態にマージされる。
【０３９８】
なお、構造調整部１１７では、モデル記憶部１１５に記憶されたHMMの状態どうしの相関を、調整後時系列データx'ではなく、観測時系列データxを用いて求めることも可能である。
【０３９９】
また、マージセットとして選択される２つの状態のうちのいずれを、マージ対象、又は被マージ対象とするかは、例えば、ランダムに選択することができる。
【０４００】
次に、図３３を参照して、構造調整部１１７がHMMの構造の調整として行う状態の追加について説明する。
【０４０１】
図３３Ａは、状態の追加が行われる前のHMMを示しており、上述の図３１Ａの場合と同一のHMMである。
【０４０２】
図３３Ｂは、図３３ＡのHMMを対象として、状態の追加が行われた後のHMMを示している。
【０４０３】
状態の追加は、図３１で説明した状態の分割と同様に、HMMの規模を拡大するために行われる。
【０４０４】
図３３Ｂでは、図３３ＡのHMMの状態s1ないしs6のうちの、例えば、状態s5を、状態を追加する対象として、その状態s5に対して、新たな状態s7が追加されている。
【０４０５】
状態の追加は、自己遷移と、状態を追加する対象の状態s5との間での双方向の状態遷移とが可能な新たな状態s7を追加することによって行われる。
【０４０６】
したがって、構造調整部１１７は、新たな状態s7について、自己遷移、及び、状態s5との間の状態遷移を、有効な状態遷移として設定する。
【０４０７】
また、構造調整部１１７は、状態の追加では、例えば、状態を追加する対象の状態s5のパラメータを、いわば引き継ぐ形で、新たな状態s7のパラメータを設定する。
【０４０８】
すなわち、構造調整部１１７は、新たな状態s7の初期確率π7を、追加の対象の状態s5の初期確率π5に設定するとともに（π7=π5）、新たな状態s7の出力確率密度関数b7(x)を、追加の対象の状態s5の出力確率密度関数b5(x)に設定する（b7(x)=b5(x)）。
【０４０９】
さらに、構造調整部１１７は、状態を追加する対象の状態s5から新たな状態s7への状態遷移の状態遷移確率a57と、新たな状態s7から状態を追加する対象の状態s5への状態遷移の状態遷移確率a75とを、適当な値、すなわち、例えば、a57=a75=0.5等に設定する。
【０４１０】
さらに、構造調整部１１７は、状態の追加後のHMMの必要なパラメータについて、正規化処理を施し、状態の追加の処理を終了する。
【０４１１】
すなわち、構造調整部１１７は、状態の追加後のHMMの初期確率πi、及び、状態遷移確率aijに、状態の分割の場合と同様の正規化処理を施す。
【０４１２】
なお、状態の追加において、状態を追加する対象とする状態は、１つの状態に限定されるものではない。
【０４１３】
すなわち、状態を追加する対象とする状態としては、状態の追加前のHMMのN個の状態s1ないしsNの中から、例えば、ランダムに、１以上N個以下の任意の数nの状態を選択することができる。
【０４１４】
また、状態を追加する対象とする状態としては、状態の追加前のHMMのN個の状態s1ないしsNの中から、例えば、出力確率密度関数bj(x)を定義する分散σ2が大きい上位n個の状態、つまり、状態から観測される観測値に、比較的大きなばらつきがある上位n個の状態を選択することができる。
【０４１５】
ここで、状態を追加する対象とする状態の数nは、ランダムに設定することもできるし、固定値に設定することもできる。いずれにしても、状態の追加によって、HMMの構造は、状態数が、追加前の状態数から、n個だけ増加した構造に更新される。
【０４１６】
なお、状態の追加と、図３１で説明した状態の分割とは、HMMの状態数が増加する点で共通する。但し、状態の追加は、新たな状態が、状態を追加する対象の状態の状態遷移を引き継がない点で、新たな状態が、分割の対象の状態の状態遷移を引き継ぐ状態の分割と相違する。
【０４１７】
したがって、状態遷移については、図３１の状態の分割後のHMMでは、新たな状態は、分割の対象の状態との間の状態遷移の他、分割の対象の状態が有するその他の状態遷移による影響を、直接的に受けるが、状態の追加後のHMMでは、新たな状態は、状態を追加する対象の状態との間の状態遷移だけによる影響を、直接的に受ける。
【０４１８】
その結果、状態の追加では、新たな状態の独立性が、状態の分割の場合に比較して高くなる。
【０４１９】
次に、図３４を参照して、構造調整部１１７がHMMの構造の調整として行う状態遷移の追加について説明する。
【０４２０】
図３４Ａは、状態遷移の追加が行われる前のHMMを示しており、上述の図３１Ａの場合と同一のHMMである。
【０４２１】
図３４Ｂは、図３４ＡのHMMを対象として、状態遷移の追加が行われた後のHMMを示している。
【０４２２】
状態遷移の追加は、モデル記憶部１１５に記憶されたHMMの構造において、モデル化対象を適切に表現するのに、状態遷移が足りない問題を解消するために行われる。特に、初期構造設定部１１６において、HMMの初期構造として、スパースな状態遷移が設定される場合には、モデル化対象の適切な表現に必要な状態遷移を追加することが重要となる。
【０４２３】
図３４Ｂでは、図３４ＡのHMMの状態s1ないしs6のうちの、例えば、状態s4及びs6を、状態遷移の追加対象として、その状態遷移の追加対象である状態s4とs6との間に、双方向の状態遷移が追加されている。
【０４２４】
状態遷移の追加では、構造調整部１１７は、状態遷移の追加対象である状態s4とs6との間に、有効な状態遷移を設定する。さらに、構造調整部１１７は、状態遷移の追加対象である状態s4及びs6のうちの一方である、例えば、状態s4から、他方である、例えば、状態s6への状態遷移確率a46と、他方の状態s6から一方の状態s4への状態遷移確率a64とを、適当な値、すなわち、例えば、a46=a64=0.5等に設定する。
【０４２５】
そして、構造調整部１１７は、状態遷移の追加後のHMMの必要なパラメータについて、正規化処理を施し、状態遷移の追加の処理を終了する。
【０４２６】
すなわち、構造調整部１１７は、状態遷移の追加後のHMMの状態遷移確率aijに、状態の分割の場合と同様の正規化処理を施す。
【０４２７】
なお、状態遷移の追加において、状態遷移の追加対象とする２つの状態のセット（以下、追加対象セットともいう）は、１セットに限定されるものではない。
【０４２８】
すなわち、追加対象セットとする状態の組としては、状態遷移の追加前のHMMのN個の状態s1ないしsNにおける、双方向の状態遷移が可能でない状態の組の中から、例えば、状態どうしの相関が大きい上位n(nは、１以上の値）個の状態の組を選択することができる。
【０４２９】
以上のように、双方向の状態遷移が可能でない状態のうちの、相関が大きい状態の組を、追加対象セットとして選択する場合には、例えば、状態遷移がない（直接的な状態遷移ができない）２つの状態のうちの、一方が、他方にとって冗長な存在となったときに、その２つの状態が、状態遷移によって、有機的に接続されることになる。
【０４３０】
なお、追加対象セットとする状態の組の数nは、ランダムに設定することもできるし、固定値に設定することもできる。いずれにしても、状態遷移の追加によって、HMMの構造は、状態数は変化しないが、状態遷移がn個だけ増加した、少し複雑な構造に更新される。
【０４３１】
次に、図３５を参照して、構造調整部１１７がHMMの構造の調整として行う状態の削除について説明する。
【０４３２】
図３５Ａは、状態の削除が行われる前のHMMを示している。
【０４３３】
図３５Ａでは、HMMは、９個の状態s1,s2,s3,s4,s5,s6,s7,s8,s9を有し、状態s1とs2との間、状態s1とs4との間、状態s2とs3との間、状態s2とs5との間、状態s3とs6との間、状態s4とs5との間、状態s4とs7との間、状態s5とs6との間、状態s5とs8との間、状態s6とs9との間、状態s7とs8との間、及び、状態s8とs9との間のそれぞれの双方向の状態遷移と、自己遷移とが可能となっている。
【０４３４】
図３５Ｂは、図３５ＡのHMMを対象として、状態の削除が行われた後のHMMを示している。
【０４３５】
状態の削除は、HMMにおいて、モデル化対象を適切に表現するのに不要な状態を削除するために行われる。
【０４３６】
図３５Ｂでは、図３５ＡのHMMの状態s1ないしs9のうちの、例えば、状態s5が削除されている。
【０４３７】
状態の削除は、削除の対象の状態s5と、その状態s5から可能な状態遷移（状態s5への状態遷移を含む）とを削除することによって行われる。
【０４３８】
図３５Ａでは、状態s5は、状態s2,s4,s6,s8のそれぞれとの間の状態遷移、及び、自己遷移が可能であるから、構造調整部１１７は、削除の対象の状態s5について、その状態s5、並びに、その状態s5と、状態s2,s4,s6,s5のそれぞれとの間の状態遷移、及び、状態s5の自己遷移を削除する。
【０４３９】
さらに、構造調整部１１７は、状態の削除後のHMMの必要なパラメータについて、正規化処理を施し、状態の削除の処理を終了する。
【０４４０】
すなわち、構造調整部１１７は、状態の削除後のHMMの初期確率πiと、状態遷移確率aijとに、状態の分割の場合と同様の正規化処理を施す。
【０４４１】
なお、構造調整部１１７は、削除の対象とする状態を、例えば、次のように選択する。
【０４４２】
すなわち、図２９で説明したように、構造調整部１１７には、パラメータ推定部１１３でのHMMのパラメータの推定に用いられる調整後時系列データx'が、データ調整部１１２から供給される。
【０４４３】
構造調整部１１７は、モデル記憶部１１５に記憶されたHMMに対して、ビタビ法を適用し、データ調整部１１２からの調整後時系列データx'=x1',x2',・・・,xT''が観測される尤度を最も大にする状態遷移の過程（状態の系列）（パス）（以下、最尤パスともいう）を求める。
【０４４４】
ここで、ビタビ法とは、各状態siを始点とする状態遷移のパスの中で、時刻tに、状態siから状態sjに状態遷移する状態遷移確率aijと、その状態遷移において、調整後時系列データx'=x1',x2',・・・,xT''のうちの時刻tのサンプル値x'tが観測される確率（出力確率密度関数bj(x)から求められる出力確率）とを、調整後時系列データx'の長さT'に亘って累積した値（生起確率）を最大にするパス（最尤パス）を決定するアルゴリズムである。
【０４４５】
ビタビ法については、上述の文献Ａに記載されている。
【０４４６】
構造調整部１１７は、調整後時系列データx'について、最尤パスとしての状態の系列s1',s2',・・・,sT''を決定すると、HMMの状態の中で、最尤パスを構成しない状態（最尤パスに含まれない状態）を検出する。
【０４４７】
最尤パスを構成しない状態は、調整後時系列データx'=x1',x2',・・・,xT''の特徴（時系列パターン）を表現するのに、必ずしも必要ではない状態とみなすことができるので、構造調整部１１７は、最尤パスを構成しない状態を、削除の対象とする状態として選択する。
【０４４８】
例えば、図３５Ａの、状態s1ないしs9を有するHMMにおいて、長さT'が１６の調整後時系列データx'について、状態の系列s1,s2,s3,s6,s9,s8,s7,s4,s1,s4,s7,s8,s9,s6,s3,s2,s1が、最尤パスとして決定された場合には、構造調整部１１７は、HMMを構成する状態s1ないしs9のうちの、最尤パスを構成しない状態s5を、削除の対象とする状態として選択する。
【０４４９】
そして、上述したように、構造調整部１１７は、削除の対象として選択した状態s5の削除を行い、これにより、図３５Ａに示したHMMが図３５Ｂに示したHMMとされる構造の調整が行われる。
【０４５０】
なお、構造調整部１１７では、図３１ないし図３５で説明した状態の分割、状態のマージ、状態の追加、状態遷移の追加、及び、状態の削除の他、状態遷移の削除も、HMMの構造の調整として行われる。
【０４５１】
状態遷移の削除は、状態の削除と同様に行われる。
【０４５２】
すなわち、構造調整部１１７は、上述したように、調整後時系列データx'について、最尤パスとしての状態の系列s1',s2',・・・,sT''を決定し、最尤パスを構成しない状態遷移を、削除の対象とする状態遷移として選択する。
【０４５３】
さらに、構造調整部１１７は、削除の対象とする状態遷移として選択した状態遷移を削除し、状態遷移の削除後のHMMの状態遷移確率aijに、状態の分割の場合と同様の正規化処理を施して、状態遷移の削除の処理を終了する。
【０４５４】
次に、図３６は、図２９のデータ処理装置の処理（学習処理）を説明するフローチャートである。
【０４５５】
時系列データ入力部１１１に対して、モデル化対象からのセンサ信号が供給されると、時系列データ入力部１１１は、例えば、モデル化対象から観測されるセンサ信号を、そのまま、観測時系列データxとする。
【０４５６】
ここで、観測時系列データxは、上述したように、時系列データ入力部１１１から、データ調整部１１２に供給される他、初期構造設定部１１６にも供給され、初期構造設定部１１６において、上述したように、出力確率密度関数bj(x)の設定に用いられる。
【０４５７】
また、初期構造設定部１１６は、ステップＳ１１１において、HMMの初期化を行う。
【０４５８】
すなわち、初期構造設定部１１６は、HMMの構造を、初期構造に初期化し、その初期構造のHMMのパラメータ（初期パラメータ）を設定する。
【０４５９】
具体的には、初期構造設定部１１６は、HMMの初期構造として、HMMの状態数を設定し、その状態数のHMMに、スパースな状態遷移を設定する。
【０４６０】
さらに、初期構造設定部１１６は、初期構造のHMMに、初期パラメータとしての状態遷移確率aij、出力確率密度関数bj(x)、及び、初期確率πiの初期値を設定する。
【０４６１】
以上のように、初期構造設定部１１６において、初期構造と初期パラメータλ={aij,bj(x),πi,i=1,2,・・・,N，j=1,2,・・・,N}が設定されたHMMは、モデル記憶部１１５に供給されて記憶される。
【０４６２】
その後、処理は、ステップＳ１１１からステップＳ１１２に進み、時系列データ入力部１１１は、観測時系列データxを、データ調整部１１２に供給して、処理は、ステップＳ１１３に進む。
【０４６３】
ステップＳ１１３では、データ調整部１１２が、時系列データ入力部１１１からの観測時系列データxの調整を、図２９で説明したようにして行うことで、調整後時系列データx'を得て、パラメータ推定部１１３に供給し、処理は、ステップＳ１１４に進む。
【０４６４】
なお、調整後時系列データx'は、データ調整部１１２からパラメータ推定部１１３に供給される他、構造調整部１１７にも供給される。
【０４６５】
ステップＳ１１４では、パラメータ推定部１１３が、モデル記憶部１１５に記憶されたHMMのパラメータを初期値とし、データ調整部１１２からの調整後時系列データx'を用いて、HMMの新たなパラメータを、Baum-Welchの再推定法によって推定する。
【０４６６】
さらに、パラメータ推定部１１３は、HMMの新たなパラメータを、モデル記憶部１１５に供給し、上書きの形で記憶させる。
【０４６７】
また、パラメータ推定部１１３は、図３６の学習処理の開始時に０にリセットされる学習回数を１だけインクリメントし、その学習回数を、評価部１１４に供給する。
【０４６８】
さらに、パラメータ推定部１１３は、新たなパラメータλによって定義されるHMMから、調整後時系列データx'が観測される尤度を求め、評価部１１４に供給し、処理は、ステップＳ１１４からステップＳ１１５に進む。
【０４６９】
ステップＳ１１５では、評価部１１４は、パラメータ推定部１１３からの尤度や学習回数に基づき、学習が行われたHMM、つまり、パラメータ推定部１１３でパラメータλが推定されたHMMを評価し、そのHMMの評価の結果に基づいて、HMMの学習を終了するか否かを判定する。
【０４７０】
ステップＳ１１５において、HMMの学習を終了しないと判定された場合、評価部１１４は、所定の処理を行うことを、時系列データ入力部１１１、データ調整部１１２、及び、構造調整部１１７に要求して、処理は、ステップＳ１１６に進む。
【０４７１】
ステップＳ１１６では、構造調整部１１７が、評価部１１４からの要求に応じ、データ調整部１１２からの調整後時系列データx'を用いて、モデル記憶部１１５に記憶されたHMMの構造を調整する処理を行い、処理は、ステップＳ１１２に戻る。
【０４７２】
ステップＳ１１２では、時系列データ入力部１１１は、評価部１１４からの要求に応じ、観測時系列データxを、データ調整部１１２に供給して、処理は、ステップＳ１１３に進む。
【０４７３】
ステップＳ１１３では、データ調整部１１２が、評価部１１４からの要求に応じ、時系列データ入力部１１１からの観測時系列データxの調整を、図２９で説明したようにして行うことで、調整後時系列データx'を得て、以下、上述した処理が繰り返される。
【０４７４】
すなわち、パラメータ推定部１１３が、HMMのパラメータの推定を行い、構造調整部１１７が、その推定後のパラメータで定義されるHMMの構造の調整を行うことが繰り返される。
【０４７５】
また、データ調整部１１２では、例えば、図２９で説明したように、観測時系列データxを対象としたダウンサンプリング処理を行うことで、調整後時系列データx'を得る。そして、ダウンサンプリング処理では、HMMの学習が進行するにつれて、調整後時系列データx'のサンプリング周波数が、小さい値から、徐々に大に変更される。
【０４７６】
一方、ステップＳ１１５において、HMMの学習を終了すると判定された場合、学習処理は終了する。
【０４７７】
以上のように、図２９のデータ処理装置では、HMMの構造を、スパースな構造に初期化し、その後、学習の進行に応じて、学習に用いられる観測時系列データxを調整して、調整後時系列データx'を出力し、調整後時系列データx'を用い、HMMのパラメータを推定し、HMMの構造を調整することが繰り返される。
【０４７８】
その結果、複雑なモデル化対象であっても、そのモデル化対象を適切にモデル化するHMMを得ることができる。
【０４７９】
すなわち、複雑なモデル化対象のモデル化には、一般に、状態数、及び状態遷移の数が多いHMMが必要となるが、状態数、及び状態遷移の数が多い大規模なHMMを、最初から用いて、そのHMMのパラメータを正しく推定することは難しい。
【０４８０】
図２９のデータ処理装置では、HMMの構造を、スパースな構造に初期化すること、学習の進行に応じて、観測時系列データxを調整すること、及び、HMMの構造を調整することによって、複雑なモデル化対象を適切に表現するHMMが、大規模なHMMであっても、そのような大規模なHMMのパラメータを正しく推定する（正しいと推測されるパラメータを推定する）ことができる。
【０４８１】
さらに、図２９のデータ処理装置では、モデル化対象が未知の対象であり、HMMの初期構造や、パラメータの初期値（初期パラメータ）をあらかじめ決定（予測）することができない場合であっても、そのモデル化対象を適切に表現するHMM(適切な構造であり、かつ、適切なパラメータのHMM）を求めることができる。
【０４８２】
次に、図３７は、図３６のステップＳ１１６において、構造調整部１１７が行う処理の詳細を説明するフローチャートである。
【０４８３】
構造調整部１１７は、ステップＳ１２１において、モデル記憶部１１５に記憶されたHMMに対して、図３１で説明した状態の分割を行い、処理は、ステップＳ１２２に進む。
【０４８４】
ステップＳ１２２では、構造調整部１１７は、データ調整部１１２から供給される調整後時系列データx'を用い、状態の分割後のHMMを構成する状態どうしの相関を求めて、処理は、ステップＳ１２３に進む。
【０４８５】
ステップＳ１２３では、構造調整部１１７は、ステップＳ１２２で求めた相関に基づき、状態の分割後のHMMに対して、図３２で説明した状態のマージを行い、処理は、ステップＳ１２４に進む。
【０４８６】
ステップＳ１２４では、構造調整部１１７は、ステップＳ１２２で求めた相関に基づき、状態のマージ後のHMMに対して、図３４で説明した状態遷移の追加を行い、処理は、ステップＳ１２５に進む。
【０４８７】
ステップＳ１２５では、構造調整部１１７は、状態遷移の追加後のHMMに対して、図３３で説明した状態の追加を行い、処理は、ステップＳ１２６に進む。
【０４８８】
ステップＳ１２６では、構造調整部１１７は、状態の追加後のHMMを用い、データ調整部１１２からの調整後時系列データx'について、最尤パスを求めて、処理は、ステップＳ１２７に進む。
【０４８９】
ステップＳ１２７では、構造調整部１１７は、最尤パスを構成しない状態、及び、状態遷移を検出する。さらに、ステップＳ１２７では、構造調整部１１７は、図３５で説明したように、最尤パスを構成しない状態、及び状態遷移の削除を行う。
【０４９０】
そして、構造調整部１１７は、状態、及び状態遷移の削除後のHMMのパラメータによって、モデル記憶部１１５の記憶値を更新し、処理はリターンする。
【０４９１】
以上のように、構造調整部１１７では、モデル記憶部１１５に記憶されたHMMについて、状態の分割、状態のマージ、状態の追加、状態遷移の追加、状態の削除、及び、状態遷移の削除という６種類の構造の調整を行う。
【０４９２】
ここで、図３６及び図３７では、評価部１１４は、学習回数が１回増加するごとに、構造調整部１１７に対して、構造の調整を要求する。
【０４９３】
したがって、構造調整部１１７では、学習回数が１回増加するごとに、HMMの構造の調整が行われるが、HMMの構造の調整は、学習回数の１回の増加以外の学習の進行に応じて行うことが可能である。
【０４９４】
すなわち、評価部１１４は、学習回数や尤度を、学習の進行の状況を表す進行状況情報として、データ調整部１１２に供給するが、この進行状況情報は、構造調整部１１７にも供給することができる。
【０４９５】
この場合、構造調整部１１７は、評価部１１４からの進行状況情報に応じて、HMMの構造の調整を行う。
【０４９６】
すなわち、構造調整部１１７には、例えば、進行状況情報としての学習回数が、前回の構造の調整時の回数から、所定の複数回数だけ増加した値になったときに、構造の調整を行わせることができる。
【０４９７】
また、構造調整部１１７には、例えば、進行状況情報としての尤度が、前回の構造の調整時の値から低下したときや、尤度が増加する割合が、所定値以下になったとき等に、構造の調整を行わせることができる。
【０４９８】
なお、構造調整部１１７によるHMMの構造の調整は、HMMの構造が、モデル化対象を表現する最適な構造に収束することを保証するものではない。
【０４９９】
しかしながら、構造調整部１１７によるHMMの構造の調整によれば、モデル化対象を表現するのにあった方が適切であると推測される状態や、状態遷移が追加される一方で、モデル化対象を表現するのに必要ないと推測される状態や、状態遷移が削除されることで、複雑なモデル化対象であっても、そのモデル化対象を適切にモデル化する大規模なHMMを得ることができる。
【０５００】
なお、図３７では、状態の分割、状態のマージ、状態遷移の追加、状態の追加、状態の削除、状態遷移の削除の順番で、構造の調整を行うこととしたが、構造の調整を行う順番は、これに限定されるものではない。
【０５０１】
次に、図３８ないし図４０を参照して、図２９のデータ処理装置について行ったシミュレーションについて説明する。
【０５０２】
なお、シミュレーションでは、観測時系列データxとして、2次元空間をランダムに移動するロボットの移動軌跡の座標(x,y)のシーケンスを用いた。
【０５０３】
また、ロボットが移動可能な2次元空間の座標(x,y)の範囲は、式-100＜x＜+100、及び、式-100＜y＜+100で表される範囲のうちの、次式の範囲で示される４つのブロック#1,#2,#3、及び#4の領域を除く範囲とした。
【０５０４】
ブロック#1:-70＜x＜-20，-70＜y＜-20
ブロック#2:-70＜x＜-20，+20＜y＜+70
ブロック#3:+20＜x＜+70，-70＜y＜-20
ブロック#4:+20＜x＜+70，+20＜y＜+70
【０５０５】
ロボットは、原点(0,0)をスタートの位置とし、ランダムに微小な移動量(Δx,Δy)を逐次決定しながら、移動可能な範囲で、10000ステップ（回）だけ移動させた。
【０５０６】
図３８は、ロボットの移動軌跡を示している。
【０５０７】
すなわち、図３８Ａは、スタートの位置（原点）から、200ステップだけ移動するまでの移動軌跡を示しており、図３８Ｂは、スタートの位置から、10000ステップだけ移動するまでの移動軌跡を示している。
【０５０８】
図３８では、黒丸が、微小な移動量(Δx,Δy)だけ移動した後の座標を表している。また、図３８では、その黒丸を、時刻順に、直線で結ぶことによって、移動軌跡が示されている。
【０５０９】
図３８によれば、ロボットが、移動可能な範囲の全体を、ランダムに移動していることが分かる。
【０５１０】
シミュレーションでは、以上のような10000ステップ分の座標(x,y)のシーケンスを、観測時系列データxとして用いたが、ロボットが移動可能な範囲、及び、観測時系列データxが2次元空間の座標(x,y)であることは、未知とした。
【０５１１】
すなわち、シミュレーションでは、観測時系列データxである座標(x,y)（移動軌跡）が観測されるロボットに関する情報は、事前に与えられず、2次元の観測時系列データxが観測されることだけが、事前に分かっていることとした。
【０５１２】
また、シミュレーションでは、初期構造のHMMとして、図３０Ａに示した１６状態を有するHMMを採用し、HMMの各状態sjの出力確率密度関数bj(x)としては、正規分布を採用した。
【０５１３】
なお、シミュレーションでは、学習回数が３６回になった段階で、HMMの学習を終了した。
【０５１４】
また、シミュレーションでは、上述したように、10000ステップ分の座標(x,y)のシーケンスである観測時系列データ、つまり、10000サンプルからなる観測時系列データを、学習に用いたが、３６回の学習のうちの１回目の学習では、10000サンプルからなる観測時系列データに対して、サンプリング周波数が元の1/10になるように、ダウンサンプリング処理を行い、その結果得られる、1000サンプルからなる調整後時系列データを、HMMのパラメータの推定等に用いた。
【０５１５】
その後は、学習回数が３回だけ増加するごとに、サンプリング周波数が元の1/9，1/8，1/7，・・・，1/1となるように、調整後時系列データのサンプリング周波数を、徐々に大きくした。この場合、学習回数が２８回目以上となると、調整後時系列データは、観測時系列データそのものとなる。
【０５１６】
図３９は、学習の結果得られたHMMを示している。
【０５１７】
すなわち、図３９Ａは、学習が開始されてから間もない時点（学習初期）のHMMを示しており、図３９Ｂは、学習がある程度進行した時点（学習中期）のHMMを示している。さらに、図３９Ｃは、十分な学習回数の学習を行った後（学習終了後）のHMMを示している。
【０５１８】
なお、図３９において、黒丸は、HMMの状態sjの出力確率密度関数bj()の平均ベクトルが指す座標(x,y)を表し、状態sjに相当する。
【０５１９】
また、図３９では、状態siから状態sjへの状態遷移の状態遷移確率aijが0より大である場合（状態siから状態sjへの状態遷移が有効な状態遷移である場合）、状態siに相当する黒丸と、状態sjに相当する黒丸とを、直線（線分）で結んである。したがって、図３９において、黒丸どうしを接続する直線は、（有効な）状態遷移に相当する。
【０５２０】
なお、図３９において、状態遷移の方向を表す矢印の図示は、省略してある。
【０５２１】
図３９では、状態が、移動可能な範囲において、万遍なく配置され、さらに、いわば、単一（一定）の移動の仕方で移動可能な２つの位置（座標）に相当する状態どうしの間に、状態遷移が存在する。したがって、2次元空間の移動可能な範囲を移動する移動の仕方の特性（特徴）を適切に表現するHMMを得ることができていることが分かる。
【０５２２】
図４０は、学習の結果得られたHMMから、調整後時系列データについて求められた対数尤度（尤度の対数値）を示している。
【０５２３】
図４０によれば、学習回数が増加するにつれ、HMMから求められる対数尤度が向上していく傾向があることが分かる。
【０５２４】
すなわち、図４０によれば、学習が進むにつれて、移動軌跡の特徴を適切に表現するHMMが得られることが分かる。
【０５２５】
以上のように、図２９のデータ処理装置では、初期構造設定部１１６によって与えられるスパースな状態遷移によって構成される粗いHMMから学習を開始し、構造調整部１１７によって学習の進行に応じて徐々にHMMが詳細化される。これと平行して、データ調整部１１２によって、観測時系列データのマクロな特徴から学習を開始し、学習の進行に応じて徐々にミクロな特徴を含むような学習へと調整が行われる。
【０５２６】
以上のような、初期構造設定部１１６によるHMMのスパースな初期構造の設定、構造調整部１１７によるHMMの構造の調整、及び、データ調整部１１２による観測時系列データの調整の機能が働くことで、従来は扱うことが困難であった大規模なHMMの構造の決定とパラメータの推定を行うことが可能となる。
【０５２７】
なお、図２９のデータ処理装置は、システム（システムとは、１つの装置、又は、複数の装置が論理的に集合した物をいい、各構成の装置が同一筐体中にあるか否かは問わない）の同定、制御、人工知能などに利用される状態遷移モデルの学習に適用することができる。特に、自律ロボット等の自律エージェントその他が、環境や、自身の状態を認知（認識）し、その認知の結果に対応した行動をとる認知行動を行うための学習等に適用することができる。また、図２９のデータ処理装置は、交通、金融、情報などの社会システムや、物理現象や化学反応などを対象とした物理システム・化学システム、さらには、生物に関連する生物システムなどを対象としたネットワークの学習に適用することができる。
【０５２８】
また、上述の場合には、初期構造設定部１１６において、HMMの構造を、スパースな構造に初期化することとしたが、初期構造設定部１１６では、その他、例えば、HMMの構造を、エルゴディックな構造等に初期化すること等が可能である。
【０５２９】
さらに、上述の場合には、データ調整部１１２において、学習の進行に応じて、観測時系列データを調整することとしたが、観測時系列データの調整は、行わないようにすることができる。この場合、図２９のデータ処理装置において、データ調整部１１２は、設ける必要がない。
【０５３０】
また、構造調整部１１７による構造の調整は、例えば、尤度そのものや、尤度の変化の割り合いに応じて、行うか、又は行わないかを決定することが可能である。
【０５３１】
次に、上述した一連の処理は、ハードウェアにより行うこともできるし、ソフトウェアにより行うこともできる。一連の処理をソフトウェアによって行う場合には、そのソフトウェアを構成するプログラムが、汎用のコンピュータ等にインストールされる。
【０５３２】
そこで、図４１は、上述した一連の処理を実行するプログラムがインストールされるコンピュータの一実施の形態の構成例を示している。
【０５３３】
プログラムは、コンピュータに内蔵されている記録媒体としてのハードディスク１５５やROM１５３に予め記録しておくことができる。
【０５３４】
あるいはまた、プログラムは、フレキシブルディスク、CD-ROM(Compact Disc Read Only Memory)，MO(Magneto Optical)ディスク，DVD(Digital Versatile Disc)、磁気ディスク、半導体メモリなどのリムーバブル記録媒体１６１に、一時的あるいは永続的に格納（記録）しておくことができる。このようなリムーバブル記録媒体１６１は、いわゆるパッケージソフトウエアとして提供することができる。
【０５３５】
なお、プログラムは、上述したようなリムーバブル記録媒体１６１からコンピュータにインストールする他、ダウンロードサイトから、ディジタル衛星放送用の人工衛星を介して、コンピュータに無線で転送したり、LAN(Local Area Network)、インターネットといったネットワークを介して、コンピュータに有線で転送し、コンピュータでは、そのようにして転送されてくるプログラムを、通信部１５８で受信し、内蔵するハードディスク１５５にインストールすることができる。
【０５３６】
コンピュータは、CPU(Central Processing Unit)１５２を内蔵している。CPU１５２には、バス１５１を介して、入出力インタフェース１６０が接続されており、CPU１５２は、入出力インタフェース１６０を介して、ユーザによって、キーボードや、マウス、マイク等で構成される入力部１５７が操作等されることにより指令が入力されると、それに従って、ROM(Read Only Memory)１５３に格納されているプログラムを実行する。あるいは、また、CPU１５２は、ハードディスク１５５に格納されているプログラム、衛星若しくはネットワークから転送され、通信部１５８で受信されてハードディスク１５５にインストールされたプログラム、またはドライブ１５９に装着されたリムーバブル記録媒体１６１から読み出されてハードディスク１５５にインストールされたプログラムを、RAM(Random Access Memory)１５４にロードして実行する。これにより、CPU１５２は、上述したフローチャートにしたがった処理、あるいは上述したブロック図の構成により行われる処理を行う。そして、CPU１５２は、その処理結果を、必要に応じて、例えば、入出力インタフェース１６０を介して、LCD(Liquid Crystal Display)やスピーカ等で構成される出力部１５６から出力、あるいは、通信部１５８から送信、さらには、ハードディスク１５５に記録等させる。
【０５３７】
図４２は、情報処理装置の機能構成例を示す図である。
【０５３８】
図４２に示される情報処理装置には、因果知覚に関する構成と、因果関係に基づいてロボット（エージェント）の行動を決定する構成が含まれる。因果知覚に関する構成は図１５の因果部６３の構成に相当し、因果関係に基づいてロボットの行動を決定する構成は図１５の行動制御部６４の構成に相当する。
【０５３９】
図４２に示されるように、情報処理装置は、因果学習処理部２０１、因果推定処理部２０２、因果候補リスト記憶部２０３、因果候補リスト整理処理部２０４、および行動決定部２０５から構成される。
【０５４０】
因果学習処理部２０１は、上述したようにして生成された距離HMM、光HMM、エネルギーHMMなどの複数のモーダルのHMMを取得し、因果学習を行う。因果学習処理部２０１は、因果学習を行うことによって得られたデータを因果推定処理部２０２に出力する。
【０５４１】
HMMのノード（状態）は同一のHMM内では必ず１つだけが発火するため、その事象は互いに排反、かつ網羅的（MECE: Mutually Exclusive and Collectively Exhaustive）な事象の集合である。従って、あるHMMにおけるノード遷移を、単数または複数の別のHMMのノード発火に因果付けるということが可能になる。例えば、N種類のHMMのそれぞれの発火ノードの時間変化が記録されており、これが因果学習に用いられる。
【０５４２】
因果推定処理部２０２は、因果学習処理部２０１から供給されたデータを用いて因果推定を行う。因果推定処理部２０２は、因果推定を行うことによって得られた因果関係を表すリストを因果候補リスト記憶部２０３に記憶させる。
【０５４３】
事象間の因果関係は後述するように条件付確率によって表されるが、その条件付確率を求めるために用いられるデータを取得することを因果学習という。また、因果学習によって取得されたデータを用いて条件付確率を求め、因果関係を推定することを因果推定という。因果知覚は、因果推定によって事象間の因果関係が知覚されている状態を表す。
【０５４４】
因果候補リスト整理処理部２０４は、因果候補リスト記憶部２０３に記憶されている因果候補リストを適宜整理する。
【０５４５】
行動決定部２０５は、目標値が与えられたとき、因果候補リスト記憶部２０３に記憶されている因果候補リストを参照して行動を決定する。行動決定部２０５により決定された行動を表すコマンドに基づいてロボットの行動が制御される。
【０５４６】
なお、因果推定処理部２０２においては、基本的に、次のようにして因果推定が行われる。それぞれの内容については後に詳述する。
【０５４７】
すなわち、ある事象a1の因果推定をするにあたり、起こりうるすべての事象が、少なくともロボットの経験の範囲内で、事象a1を含む互いに排反かつ網羅的な事象a1,a2,a3,・・・よりなる集合Aと、それ以外の事象の集合である集合Bに分類される。
【０５４８】
因果関係は、これまでに事象akと同時に生起したことがあるすべての事象bに対して求められる条件付確率P（T:ak→a1|ak,b）によって表される。T:ak→a1は事象akから事象a1への遷移を表す。以下、適宜、T:ak→a1を単にTと表す。
【０５４９】
条件付確率P（T|ak,b）は下式によって表されるので、N（T,ak,b）とN（ak,b）の値から条件付確率が求められる。
P（T|ak,b）＝P（T,ak,b）/P（ak,b）≒N（T,ak,b）/N（ak,b）
【０５５０】
N（T,ak,b）は、事象akと事象bが同時に生起し、次の時刻に、事象a1が生起した回数を表す。N（ak,b）は、事象akと事象bが同時に生起した回数を表す。
【０５５１】
このようにして求められた条件付確率には誤差があり、その大きさは√N（T,ak,b）に反比例すると期待される。よって、N（T,ak,b）を適切な範囲の値に保つように、粒度を変えるなどして事象bを制御すれば誤差を小さくすることができる。
【０５５２】
具体的には、ロボットの経験数が少ない場合は、事象bの表現の仕方として例えば「明るいとき」などの大雑把な表現を用いる。また、経験数が増加するにつれて、「明るいとき」に含まれる、「照度が700から800ルクスのとき」、「明るい光が後方から差してきたとき」、「警告音とともに明るく照らし出されたとき」等の、より細かい粒度の表現を用いるようにすることで経験数に応じた誤差を小さく保ちながら、より細やかな制御や因果推定を行うことができる。
【０５５３】
因果関係が時間的に変動する場合、事象の同時生起回数N（T,ak,b）、N（ak,b）を時間減衰させることで、条件付確率を因果関係の時間的な変動に追従させることができる。
【０５５４】
例えば、過去に1000回（N（ak,b）=1000）試行して500回（N（T,ak,b）=500）成功しており、P（T|ak,b）=500/1000=0.5だったとする。また、いま10回試行して8回成功したとする。時間減衰がない場合、いま試行した10回を含めるとP（T|ak,b）=508/1010=0.503なので、過去に試行した場合に較べて10回中8回という高い確率で成功したとしてもP（T|ak,b）の値にほとんど影響がない。
【０５５５】
これに対し、時間減衰がある場合、分子・分母に減衰率がかけられて評価を受けることになるので、減衰率を0.1とすると、過去の試行によって求められたP（T|ak,b）はP（T|ak,b）=50/100=0.5の状態になる。この状態に対して最新の試行結果を反映させると、P（T|ak,b）=58/110=0.527になる。仮に、過去の試行がもっと古く、さらに減衰しているとすると例えばP（T|ak,b）=5/10=0.5の状態になり、この状態に対して最新の試行結果を反映させると、P（T|ak,b）=13/20=0.65になる。
【０５５６】
すなわち、P（T|ak,b）に対して、最近の試行結果への追従性を持たせることができる（P（T|ak,b）の値が最近の試行結果に大きな影響を受けるようにすることができる）。同時生起回数N（T,ak,b）、N（ak,b）を同じ減衰率で減衰させることにより、最近の試行結果が存在しない場合でも過去の経験に基づく確率推定値をそのまま利用可能である。また、前記推定誤差の計算に影響を与えるN(T,ak,b)の値が時間経過に伴い小さくなるため、その推定誤差は次第に大きくなり、過去の経験は最近の経験と比較して不確定であるという性質を自動的に表現することができる。
【０５５７】
ところで、条件付確率P（T|ak,b）は、モデル当てはめの観点から見れば観測T:ak→a1（事象akから事象a1への遷移T）のもとで、「（ak,b）ならT:ak→a1が生起する」というモデルの尤度を与える式である。
【０５５８】
一方、これを事後確率として、（ak,b）が同時生起した場合に遷移T:ak→a1の生起する確率と見ることもでき、これにより、遷移Tを生起させるための制御に条件付確率P（T|ak,b）を利用することができる。具体的には、すべての事象bのうちで、P（T|ak,b）が最大となる事象bを事象akとともに達成できれば遷移Tが生起する確率が一番高くなるので、遷移Tを生起させるためには、そのような事象bを探して行動決定すればよいことになる。
【０５５９】
この行動決定の方法の欠点は、経験のばらつきによる推定誤差の影響を受けやすいことである。例えば、10回中5回成功した事象と、1000回中501回成功した事象のどちらを実行すべきであるのかを考える。前者の事象は、本当は成功率が0.55なのに、たまたまこの10回の試行では5回しか成功しなかったため、成功率が0.5のように見えているだけかもしれない。あと1回試してみれば6/11=0.545になるかもしれないし、5/11=0.455になるかもしれない。このような状況下では、P（T|ak,b）が最大になるような事象bを単純に選ぶのではうまくいかず、この点に欠点があるといえる。その理由は、たまたま最初の方だけ運の悪かった選択肢が圧倒的に不利となり、二度と回復するチャンスがないからである。
【０５６０】
そこで、このような欠点を解消するため、これまでの試行数、および、現時点での条件付確率を用いて誤差の期待値を求め、その期待値の分だけ楽観的に考えて、すなわち、期待値の分だけ条件付確率を上げて行動決定に用いるようにする。これは、上述した例でいえば、前者の事象において次の1回で成功したときに得られる成功率は6/11=0.545であり、後者の事象において次の1回で成功したときに得られる成功率の502/1001=0.501より高くなるので、前者を選択するという考え方に近い。この結果、前者の試行数が増え、推定誤差も小さくなるので行動決定の精度の改善にもつながる。
【０５６１】
図４３のフローチャートを参照して、図４２の情報処理装置により行われる因果知覚に関する処理について説明する。
【０５６２】
ステップＳ２０１において、因果学習処理部２０１は、複数のモーダルのHMMを取得し、因果学習を行う。因果学習処理部２０１は、因果学習を行うことによって得られたデータを因果推定処理部２０２に出力する。
【０５６３】
ステップＳ２０２において、因果推定処理部２０２は、因果学習処理部２０１から供給されたデータを用いて因果推定を行う。因果推定処理部２０２は、因果推定を行うことによって得られた因果関係を表す因果候補リストを因果候補リスト記憶部２０３に記憶させる。
【０５６４】
ステップＳ２０３において、因果候補リスト整理処理部２０４は、因果候補リスト記憶部２０３に記憶されている因果候補リストを整理し、処理を終了させる。
【０５６５】
以下、各処理について順に説明する。
【０５６６】
以下においては、対象とするモーダルとして全部でM個のモーダルがあり、i（i=1,2,・・・,M）番目のモーダルはnm個の状態を持つものとする。また、適宜、i番目のモーダルの状態j（j=1,2,・・・,nm)をSijと表記する。例えば、S25は２番目のモーダルが状態５であることを表す。時刻tにおけるシステム全体の状態は、M次元の状態ベクトルSt=（S1j1,S2j2,・・・,SMjM）によって表される。
【０５６７】
状態ベクトル中、各次元の要素がどのモーダルの状態番号を示すのかが明らかな場合は、説明を簡単にするため、状態番号を要素とする状態ベクトルでシステムの状態を表す。例えば、モーダル1,2,3の状態がそれぞれ5,7,11である場合、モーダル1,2,3を含むシステム全体の状態ベクトルはS=（S15,S27,S311）=(5,7,11)で表される。また、例えばモーダル2と3に注目しているとき、状態ベクトルはS(2,3)=(S27,S311)=(7,11)で表される。
【０５６８】
図４４はモーダルの例を示す図である。
【０５６９】
図４４の例においては、モーダル１乃至３の３つのモーダルが示されている。Mの値は３になる。例えば、モーダル１はエネルギーHMMに、モーダル２は光HMMに、モーダル３は距離HMMにそれぞれ相当する。SijはそれぞれHMMのノードに相当する。
【０５７０】
はじめに、因果学習処理部２０１により行われる因果学習について説明する。
【０５７１】
時刻t=0において、すべてのカウンタの値として0が設定され、初期化される。因果学習においては事象生起カウンタと遷移生起カウンタの２つのカウンタが用いられる。以下においてはt≧1とする。
【０５７２】
また、すべてのカウンタの値は、所定の時間が経過する毎に、γ=0.999などのあらかじめ定められた減衰率γに従って減衰する。
【０５７３】
時刻tにおけるシステム全体の状態Stと１時刻前の時刻の状態St-1が比較され、状態の変化があったモーダルがリストアップされる。
【０５７４】
L=1,2,・・・,min(M-1,MaxCombi)のそれぞれのLの値に注目して以下の処理が行われる。MaxCombiは、考慮するモーダルの組み合わせの複雑さを規定するパラメータであり、任意の自然数を設定することが可能である。min(M-1,MaxCombi)は、M-1とMaxCombiのうちの小さい方の値を表す。
【０５７５】
M個のモーダルの中からL+1個のモーダルを選び出したときのMCL+1通りのモーダルの組み合わせのうちの任意の１つの組み合わせをcM(L+1;)で表す。また、時刻t-1における、その任意の１つの組み合わせの各モーダルの状態を表す状態ベクトルをScM(L+1;)t-1で表す。
【０５７６】
それぞれの組み合わせのcM(L+1;)について、ScM(L+1;)t-1に対応する事象生起カウンタが１だけカウントアップされる。事象生起カウンタは、対応する状態ベクトルにより表される事象が生起した回数を数えるカウンタである。
【０５７７】
状態が変化したモーダルをモーダルiとすると、それぞれのモーダルiに注目して以下の処理が行われる。
【０５７８】
モーダルi以外の、M-1個のモーダルの中からL個のモーダルを選び出したときのM-1CL通りのモーダルの組み合わせのうちの任意の１つの組み合わせをcM(L;i)で表す。また、時刻t-1における、その任意の１つの組み合わせの各モーダルの状態を表す状態ベクトルをScM(L;i)t-1で表す。
【０５７９】
それぞれの組み合わせのcM(L;i)について、ScM(L;i)t-1と、モーダルiの状態遷移Tit-1=(Sik(t-1)→Sik(t))との組である(ScM(L;i)t-1|Ti)に対応する遷移生起カウンタが１だけカウントアップされる。遷移生起カウンタは、対応する状態ベクトルにより表される事象が、因果関係を求めようとする状態遷移が生起した直前のタイミングで生起した回数を数えるカウンタである。
【０５８０】
因果学習の具体例について説明する。
【０５８１】
ここでは、図４５に示されるように、モーダル１の状態数は状態１，２（S11,S12）の２であり、モーダル２の状態数は状態１，２，３，４（S21,S22,S23,S24）の４であり、モーダル３の状態数は状態１，２，３（S31,S32,S33）の３であるものとする。
【０５８２】
また、システムの状態は、図４６に示されるようにして時間変化したものとする。
【０５８３】
図４６には、ｔ＝０乃至ｔ＝５の間に観測されたモーダル１乃至３のそれぞれの状態を表す状態ベクトルが示されている。ｔ＝０における状態を表す左端の状態ベクトルの上の１はモーダル１の状態が状態１であることを表し、中央の１はモーダル２の状態が状態１であることを表す。下の１はモーダル３の状態が状態１であることを表す。
【０５８４】
図４７Ａ乃至Ｄは、事象生起カウンタの例を示す図である。
【０５８５】
Lの値を１または２とすると、３個のモーダルの中からL+1個のモーダルを選び出したときのMCL+1通りのモーダルの組み合わせは、左側に示されるように｛１，２｝、｛１，３｝、｛２，３｝、｛１，２，３｝になる。｛１，２｝、｛１，３｝、｛２，３｝、｛１，２，３｝のそれぞれのモーダルの組み合わせが上述したcM(L+1;)に相当する。
【０５８６】
｛１，２｝のモーダルの組み合わせに注目したとき、とりうる状態ベクトルの数は、注目する組み合わせに含まれないモーダル３の要素を「−」で表すと、図４７Ａに示されるように、［１  １  −］、［１  ２  −］、［１  ３  −］、［１  ４  −］、［２  １  −］、［２  ２  −］、［２  ３  −］、［２  ４  −］の８になる。ここでは、要素を横に並べて状態ベクトルを示している。
【０５８７】
同様に、とりうる状態ベクトルの数は注目する組み合わせに含まれるモーダルの状態の数を乗算した数になるから、｛１，３｝のモーダルの組み合わせに注目したとき、とりうる状態ベクトルの数は図４７Ｂに示されるように６になる。また、｛２，３｝のモーダルの組み合わせに注目したとき、とりうる状態ベクトルの数は図４７Ｃに示されるように１２になり、｛１，２，３｝のモーダルの組み合わせに注目したとき、とりうる状態ベクトルの数は図４７Ｄに示されるように２４になる。
【０５８８】
それぞれの状態ベクトルに対応して事象生起カウンタが用意されるから、この例の場合、合計５０個の事象生起カウンタが用意されることになる。
【０５８９】
図４８Ａ乃至Ｃは、モーダル１のそれぞれの状態遷移に対応して用意される遷移生起カウンタの例を示す図である。
【０５９０】
図４８Ａ乃至Ｃに示される遷移生起カウンタが、図４９に示されるように、例えば、モーダル１の状態１と２間の双方向の状態遷移に対応して用意される。
【０５９１】
Lの値を１または２とすると、モーダル１以外のモーダルの中からL個のモーダルを選び出したときのM-1CL通りのモーダルの組み合わせのうちの任意の１つの組み合わせは、図４８Ａ乃至Ｃの左側に示されるように｛２｝、｛３｝、｛２，３｝になる。それぞれのモーダルの組み合わせが上述したcM(L;i)に相当する。
【０５９２】
｛２｝のモーダルの組み合わせに注目したとき、モーダルの組み合わせから除かれるモーダル１の要素を「＊」、注目する組み合わせに含まれていないモーダル３の要素を「−」で表すと、とりうる状態ベクトルの数は、図４８Ａに示されるように、［＊  １  −］、［＊  ２  −］、［＊  ３  −］、［＊  ４  −］の４になる。
【０５９３】
同様に、｛３｝のモーダルの組み合わせに注目したとき、とりうる状態ベクトルの数は図４８Ｂに示されるように３になる。また、｛２，３｝のモーダルの組み合わせに注目したとき、とりうる状態ベクトルの数は図４８Ｃに示されるように１２になる。
【０５９４】
この例の場合、モーダル１のそれぞれの状態遷移に対応して、合計１９個の遷移生起カウンタが用意されることになる。
【０５９５】
図５０Ａ乃至Ｃは、モーダル２のそれぞれの状態遷移に対応して用意される遷移生起カウンタの例を示す図である。
【０５９６】
図５０Ａ乃至Ｃに示される遷移生起カウンタが、図５１に示されるように、モーダル２の状態１と２間、状態２と３間、状態３と４間、状態４と１間、状態１と３間、状態２と４間の双方向の状態遷移に対応して用意される。
【０５９７】
Lの値を１または２とすると、モーダル２以外のモーダルの中からL個のモーダルを選び出したときのM-1CL通りのモーダルの組み合わせのうちの任意の１つの組み合わせは、図５０Ａ乃至Ｃの左側に示されるように｛１｝、｛３｝、｛１，３｝になる。
【０５９８】
｛１｝のモーダルの組み合わせに注目したとき、モーダルの組み合わせから除かれるモーダル２の要素を「＊」、注目する組み合わせに含まれていないモーダル３の要素を「−」で表すと、とりうる状態ベクトルの数は、図５０Ａに示されるように、［１  ＊  −］、［２  ＊  −］の２になる。
【０５９９】
同様に、｛３｝のモーダルの組み合わせに注目したとき、とりうる状態ベクトルの数は図５０Ｂに示されるように３になる。また、｛１，３｝のモーダルの組み合わせに注目したとき、とりうる状態ベクトルの数は図５０Ｃに示されるように６になる。
【０６００】
この例の場合、モーダル２のそれぞれの状態遷移に対応して、合計１１個の遷移生起カウンタが用意されることになる。
【０６０１】
図５２Ａ乃至Ｃは、モーダル３のそれぞれの状態遷移に対応して用意される遷移生起カウンタの例を示す図である。
【０６０２】
図５２Ａ乃至Ｃに示される遷移生起カウンタが、図５３に示されるように、モーダル３の状態１と２間、状態２と３間、状態３と１間の双方向の状態遷移に対応して用意される。
【０６０３】
Lの値を１または２とすると、モーダル３以外のモーダルの中からL個のモーダルを選び出したときのM-1CL通りのモーダルの組み合わせのうちの任意の１つの組み合わせは、図５２Ａ乃至Ｃの左側に示されるように｛１｝、｛２｝、｛１，２｝になる。
【０６０４】
｛１｝のモーダルの組み合わせに注目したとき、モーダルの組み合わせから除かれるモーダル３の要素を「＊」、注目する組み合わせに含まれていないモーダル２の要素を「−」で表すと、とりうる状態ベクトルの数は、図５２Ａに示されるように、［１  −  ＊］、［２  −  ＊］の２になる。
【０６０５】
同様に、｛２｝のモーダルの組み合わせに注目したとき、とりうる状態ベクトルの数は図５２Ｂに示されるように４になる。また、｛１，２｝のモーダルの組み合わせに注目したとき、とりうる状態ベクトルの数は図５２Ｃに示されるように８になる。
【０６０６】
この例の場合、モーダル３のそれぞれの状態遷移に対応して、合計１４個の遷移生起カウンタが用意されることになる。
【０６０７】
このように、遷移生起カウンタは、あるモーダルのそれぞれの状態遷移と、他のモーダルの状態の全ての組み合わせとを対応させる形で用意される。
【０６０８】
このような事象生起カウンタ、遷移生起カウンタが用意された状態で、ｔ＝１になり、システムの状態が図４６に示されるように［１  １  １］から［１  ２  １］に遷移したとき、ｔ＝１における状態と、直前の時刻であるｔ＝０における状態が比較され、状態の変化があったモーダルであるモーダル２がリストアップされる。
【０６０９】
また、事象生起カウンタのカウントアップが行われる。
【０６１０】
ここでは、MCL+1通りのモーダルの組み合わせのうちの任意の１つの組み合わせである｛１，２｝、｛１，３｝、｛２，３｝、｛１，２，３｝がそれぞれ注目され、注目する組み合わせに含まれるモーダルの１時刻前の状態を表す状態ベクトルに対応する事象生起カウンタが１だけカウントアップされる。注目する組み合わせに含まれるモーダルの１時刻前の状態を表す状態ベクトルが、上述したScM(L+1;)t-1に相当する。
【０６１１】
｛１，２｝のモーダルの組み合わせに注目したとき、１時刻前のｔ＝０におけるモーダル１，２の状態はそれぞれ１であるから、図４７Ａに示される８個の状態ベクトルのうちの［１  １  −］に対応する事象生起カウンタが１だけカウントアップされる。
【０６１２】
｛１，３｝のモーダルの組み合わせに注目したとき、１時刻前のｔ＝０におけるモーダル１，３の状態はそれぞれ１であるから、図４７Ｂに示される６個の状態ベクトルのうちの［１  −  １］に対応する事象生起カウンタが１だけカウントアップされる。
【０６１３】
｛２，３｝のモーダルの組み合わせに注目したとき、１時刻前のｔ＝０におけるモーダル２，３の状態はそれぞれ１であるから、図４７Ｃに示される１２個の状態ベクトルのうちの［−  １  １］に対応する事象生起カウンタが１だけカウントアップされる。
【０６１４】
｛１，２，３｝のモーダルの組み合わせに注目したとき、１時刻前のｔ＝０におけるモーダル１，２，３の状態はそれぞれ１であるから、図４７Ｄに示される２４個の状態ベクトルのうちの［１  １  １］に対応する事象生起カウンタが１だけカウントアップされる。
【０６１５】
このように、システムの状態が［１  １  １］から［１  ２  １］に遷移したとき、図５４Ａに示されるように、［１  １  −］、［１  −  １］、［−  １  １］、［１  １  １］に対応する事象生起カウンタが１だけカウントアップされる。
【０６１６】
さらに、遷移生起カウンタのカウントアップが行われる。
【０６１７】
まず、状態が遷移したモーダル２以外のモーダルの中からL個のモーダルを選び出したときのM-1CL通りのモーダルの組み合わせのうちの任意の１つの組み合わせである｛１｝、｛３｝、｛１，３｝のそれぞれが注目され、注目する組み合わせに含まれるモーダルの１時刻前の状態を表す状態ベクトルと、モーダル２の状態遷移（１→２）との組が求められる。
【０６１８】
求められる組は、モーダル２の状態遷移（１→２）と対応付けられている、注目する組み合わせに含まれるモーダルの１時刻前の状態を表す状態ベクトルを表す。図５０を参照して説明したように、モーダル２の各状態遷移に対しては、状態ベクトルが対応付けられている。この、注目する組み合わせに含まれるモーダルの１時刻前の状態を表す状態ベクトルが上述したScM(L;i)t-1に相当し、組が、(ScM(L;i)t-1|Ti)に相当する。
【０６１９】
また、モーダル２の状態遷移（１→２）と対応付けられている、注目する組み合わせに含まれるモーダルの１時刻前の状態を表す状態ベクトルに対応する遷移生起カウンタ（図５０Ａ乃至Ｃ）が１だけカウントアップされる。
【０６２０】
｛１｝のモーダルの組み合わせに注目したとき、１時刻前のｔ＝０におけるモーダル１の状態は１であるから、図５０Ａに示される、モーダル２の状態遷移（１→２）と対応付けられている２個の遷移生起カウンタのうち、［１  ＊  −］に対応する遷移生起カウンタが１だけカウントアップされる。
【０６２１】
｛３｝のモーダルの組み合わせに注目したとき、１時刻前のｔ＝０におけるモーダル３の状態は１であるから、図５０Ｂに示される、モーダル２の状態遷移（１→２）と対応付けられている３個の遷移生起カウンタのうち、［−  ＊  １］に対応する遷移生起カウンタが１だけカウントアップされる。
【０６２２】
｛１，３｝のモーダルの組み合わせに注目したとき、１時刻前のｔ＝０におけるモーダル１，３の状態はそれぞれ１であるから、図５０Ｃに示される、モーダル２の状態遷移（１→２）と対応付けられている６個の遷移生起カウンタのうち、［１  ＊  １］に対応する遷移生起カウンタが１だけカウントアップされる。
【０６２３】
このように、システムの状態が［１  １  １］から［１  ２  １］に遷移したとき、図５４Ｂに示されるように、モーダル２の状態遷移（１→２）と対応付けられている、［１  ＊  −］、［−  ＊  １］、［１  ＊  １］に対応する遷移生起カウンタが１だけカウントアップされる。
【０６２４】
同様に、ｔ＝２になったとき、ｔ＝２における状態と、直前の時刻であるｔ＝１における状態が比較され、状態に変化のあったモーダルがなかったものとして判断される。図４６に示されるように、ｔ＝２におけるシステムの状態はｔ＝１におけるシステムの状態と同じ［１  ２  １］である。
【０６２５】
また、事象生起カウンタのカウントアップが行われる。
【０６２６】
３個のモーダルの中からL+1個のモーダルを選び出したときのMCL+1通りのモーダルの組み合わせのうちの任意の１つの組み合わせである｛１，２｝、｛１，３｝、｛２，３｝、｛１，２，３｝のそれぞれが注目され、注目する組み合わせに含まれるモーダルの１時刻前の状態を表す状態ベクトルに対応する事象生起カウンタが１だけカウントアップされる。
【０６２７】
｛１，２｝のモーダルの組み合わせに注目したとき、１時刻前のｔ＝１におけるモーダル１の状態は１、モーダル２の状態は２であるから、図４７Ａに示される８個の状態ベクトルのうちの［１  ２  −］に対応する事象生起カウンタが１だけカウントアップされる。
【０６２８】
｛１，３｝のモーダルの組み合わせに注目したとき、１時刻前のｔ＝１におけるモーダル１，３の状態はそれぞれ１であるから、図４７Ｂに示される６個の状態ベクトルのうちの［１  −  １］に対応する事象生起カウンタが１だけカウントアップされる。
【０６２９】
｛２，３｝のモーダルの組み合わせに注目したとき、１時刻前のｔ＝１におけるモーダル２の状態は２、モーダル３の状態は１であるから、図４７Ｃに示される１２個の状態ベクトルのうちの［−  ２  １］に対応する事象生起カウンタが１だけカウントアップされる。
【０６３０】
｛１，２，３｝のモーダルの組み合わせに注目したとき、１時刻前のｔ＝１におけるモーダル１の状態は１、モーダル２の状態は２、モーダル３の状態は１であるから、図４７Ｄに示される２４個の状態ベクトルのうちの［１  ２  １］に対応する事象生起カウンタが１だけカウントアップされる。
【０６３１】
このように、システムの状態が［１  ２  １］のままであるとき、図５５に示されるように、［１  ２  −］、［１  −  １］、［−  ２  １］、［１  ２  １］の事象生起カウンタが１だけカウントアップされる。
【０６３２】
ｔ＝３になり、システムの状態が図４６に示されるように［１  ２  １］から［２  ２  １］に遷移したとき、ｔ＝３における状態と、直前の時刻であるｔ＝２における状態が比較され、状態の変化があったモーダルであるモーダル１がリストアップされる。
【０６３３】
また、事象生起カウンタのカウントアップが行われる。
【０６３４】
３個のモーダルの中からL+1個のモーダルを選び出したときのMCL+1通りのモーダルの組み合わせのうちの任意の１つの組み合わせである｛１，２｝、｛１，３｝、｛２，３｝、｛１，２，３｝のそれぞれが注目され、注目する組み合わせに含まれるモーダルの１時刻前の状態を表す状態ベクトルに対応する事象生起カウンタが１だけカウントアップされる。
【０６３５】
｛１，２｝のモーダルの組み合わせに注目したとき、１時刻前のｔ＝２におけるモーダル１の状態は１、モーダル２の状態は２であるから、図４７Ａに示される８個の状態ベクトルのうちの［１  ２  −］に対応する事象生起カウンタが１だけカウントアップされる。
【０６３６】
｛１，３｝のモーダルの組み合わせに注目したとき、１時刻前のｔ＝２におけるモーダル１，３の状態はそれぞれ１であるから、図４７Ｂに示される６個の状態ベクトルのうちの［１  −  １］に対応する事象生起カウンタが１だけカウントアップされる。
【０６３７】
｛２，３｝のモーダルの組み合わせに注目したとき、１時刻前のｔ＝２におけるモーダル２の状態は２、モーダル３の状態は１であるから、図４７Ｃに示される１２個の状態ベクトルのうちの［−  ２  １］に対応する事象生起カウンタが１だけカウントアップされる。
【０６３８】
｛１，２，３｝のモーダルの組み合わせに注目したとき、１時刻前のｔ＝２におけるモーダル１の状態は１、モーダル２の状態は２、モーダル３の状態は１であるから、図４７Ｄに示される２４個の状態ベクトルのうちの［１  ２  １］に対応する事象生起カウンタが１だけカウントアップされる。
【０６３９】
このように、システムの状態が［１  ２  １］から［２  ２  １］に遷移したとき、図５６Ａに示されるように、［１  ２  −］、［１  −  １］、［−  ２  １］、［１  ２  １］の事象生起カウンタが１だけカウントアップされる。
【０６４０】
さらに、遷移生起カウンタのカウントアップが行われる。
【０６４１】
まず、状態が遷移したモーダル１以外のモーダルの中からL個のモーダルを選び出したときのM-1CL通りのモーダルの組み合わせのうちの任意の１つの組み合わせである｛２｝、｛３｝、｛２，３｝のそれぞれが注目され、注目する組み合わせに含まれるモーダルの１時刻前の状態を表す状態ベクトルと、モーダル１の状態遷移（１→２）との組が求められる。
【０６４２】
また、モーダル１の状態遷移（１→２）と対応付けられている、注目する組み合わせに含まれるモーダルの１時刻前の状態を表す状態ベクトルに対応する遷移生起カウンタ（図４８Ａ乃至Ｃ）が１だけカウントアップされる。
【０６４３】
｛２｝のモーダルの組み合わせに注目したとき、１時刻前のｔ＝２におけるモーダル２の状態は２であるから、図４８Ａに示される、モーダル１の状態遷移（１→２）と対応付けられている４個の遷移生起カウンタのうち、［＊  ２  −］に対応する遷移生起カウンタが１だけカウントアップされる。
【０６４４】
｛３｝のモーダルの組み合わせに注目したとき、１時刻前のｔ＝２におけるモーダル３の状態は１であるから、図４８Ｂに示される、モーダル１の状態遷移（１→２）と対応付けられている３個の遷移生起カウンタのうち、［＊  −  １］に対応する遷移生起カウンタが１だけカウントアップされる。
【０６４５】
｛２，３｝のモーダルの組み合わせに注目したとき、１時刻前のｔ＝２におけるモーダル２の状態は２、モーダル３の状態は１であるから、図４８Ｃに示される、モーダル１の状態遷移（１→２）と対応付けられている１２個の遷移生起カウンタのうち、［＊  ２  １］に対応する遷移生起カウンタが１だけカウントアップされる。
【０６４６】
このように、システムの状態が［１  ２  １］から［２  ２  １］に遷移したとき、図５６Ｂに示されるように、モーダル１の状態遷移（１→２）と対応付けられている、［＊  ２  −］、［＊  −  １］、［＊  ２  １］に対応する遷移生起カウンタが１だけカウントアップされる。
【０６４７】
ｔ＝４になり、システムの状態が図４６に示されるように［２  ２  １］から［２  ４  ３］に遷移したとき、ｔ＝４における状態と、直前の時刻であるｔ＝３における状態が比較され、状態の変化があったモーダルであるモーダル２とモーダル３がリストアップされる。
【０６４８】
また、事象生起カウンタのカウントアップが行われる。
【０６４９】
３個のモーダルの中からL+1個のモーダルを選び出したときのMCL+1通りのモーダルの組み合わせのうちの任意の１つの組み合わせである｛１，２｝、｛１，３｝、｛２，３｝、｛１，２，３｝のそれぞれが注目され、注目する組み合わせに含まれるモーダルの１時刻前の状態を表す状態ベクトルに対応する事象生起カウンタが１だけカウントアップされる。
【０６５０】
｛１，２｝のモーダルの組み合わせに注目したとき、１時刻前のｔ＝３におけるモーダル１，２の状態はそれぞれ２であるから、図４７Ａに示される８個の状態ベクトルのうちの［２  ２  −］に対応する事象生起カウンタが１だけカウントアップされる。
【０６５１】
｛１，３｝のモーダルの組み合わせに注目したとき、１時刻前のｔ＝３におけるモーダル１の状態は２、モーダル３の状態は１であるから、図４７Ｂに示される６個の状態ベクトルのうちの［２  −  １］に対応する事象生起カウンタが１だけカウントアップされる。
【０６５２】
｛２，３｝のモーダルの組み合わせに注目したとき、１時刻前のｔ＝３におけるモーダル２の状態は２、モーダル３の状態は１であるから、図４７Ｃに示される１２個の状態ベクトルのうちの［−  ２  １］に対応する事象生起カウンタが１だけカウントアップされる。
【０６５３】
｛１，２，３｝のモーダルの組み合わせに注目したとき、１時刻前のｔ＝３におけるモーダル１の状態は２、モーダル２の状態は２、モーダル３の状態は１であるから、図４７Ｄに示される２４個の状態ベクトルのうちの［２  ２  １］に対応する事象生起カウンタが１だけカウントアップされる。
【０６５４】
このように、システムの状態が［２  ２  １］から［２  ４  ３］に遷移したとき、図５７Ａに示されるように、［２  ２  −］、［２  −  １］、［−  ２  １］、［２  ２  １］に対応する事象生起カウンタが１だけカウントアップされる。
【０６５５】
さらに、遷移生起カウンタのカウントアップが行われる。２つのモーダルがリストアップされている場合、それぞれのモーダルを対象として同じ処理が繰り返される。
【０６５６】
まず、状態が遷移したモーダル２以外のモーダルの中からL個のモーダルを選び出したときのM-1CL通りのモーダルの組み合わせのうちの任意の１つの組み合わせである｛１｝、｛３｝、｛１，３｝のそれぞれが注目され、注目する組み合わせに含まれるモーダルの１時刻前の状態を表す状態ベクトルと、モーダル２の状態遷移（２→４）との組が求められる。
【０６５７】
また、モーダル２の状態遷移（２→４）と対応付けられている、注目する組み合わせに含まれるモーダルの１時刻前の状態を表す状態ベクトルに対応する遷移生起カウンタ（図５０Ａ乃至Ｃ）が１だけカウントアップされる。
【０６５８】
｛１｝のモーダルの組み合わせに注目したとき、１時刻前のｔ＝３におけるモーダル１の状態は２であるから、図５０Ａに示される、モーダル２の状態遷移（２→４）と対応付けられている２個の遷移生起カウンタのうち、［２  ＊  −］に対応する遷移生起カウンタが１だけカウントアップされる。
【０６５９】
｛３｝のモーダルの組み合わせに注目したとき、１時刻前のｔ＝３におけるモーダル３の状態は１であるから、図５０Ｂに示される、モーダル２の状態遷移（２→４）と対応付けられている３個の遷移生起カウンタのうち、［−  ＊  １］に対応する遷移生起カウンタが１だけカウントアップされる。
【０６６０】
｛１，３｝のモーダルの組み合わせに注目したとき、１時刻前のｔ＝３におけるモーダル１の状態は２、モーダル３の状態は１であるから、図５０Ｃに示される、モーダル２の状態遷移（２→４）と対応付けられている６個の遷移生起カウンタのうち、［２  ＊  １］に対応する遷移生起カウンタが１だけカウントアップされる。
【０６６１】
次に、状態が遷移したモーダル３以外のモーダルの中からL個のモーダルを選び出したときのM-1CL通りのモーダルの組み合わせのうちの任意の１つの組み合わせである｛１｝、｛２｝、｛１，２｝のそれぞれが注目され、注目する組み合わせに含まれるモーダルの１時刻前の状態を表す状態ベクトルと、モーダル３の状態遷移（１→３）との組が求められる。
【０６６２】
また、モーダル３の状態遷移（１→３）と対応付けられている、注目する組み合わせに含まれるモーダルの１時刻前の状態を表す状態ベクトルに対応する遷移生起カウンタ（図５２Ａ乃至Ｃ）が１だけカウントアップされる。
【０６６３】
｛１｝のモーダルの組み合わせに注目したとき、１時刻前のｔ＝３におけるモーダル１の状態は２であるから、図５２Ａに示される、モーダル３の状態遷移（１→３）と対応付けられている２個の遷移生起カウンタのうち、［２  ＊  −］に対応する遷移生起カウンタが１だけカウントアップされる。
【０６６４】
｛２｝のモーダルの組み合わせに注目したとき、１時刻前のｔ＝３におけるモーダル２の状態は２であるから、図５２Ｂに示される、モーダル３の状態遷移（１→３）と対応付けられている４個の遷移生起カウンタのうち、［＊  ２  −］に対応する遷移生起カウンタが１だけカウントアップされる。
【０６６５】
｛１，２｝のモーダルの組み合わせに注目したとき、１時刻前のｔ＝３におけるモーダル１，２の状態はそれぞれ２であるから、図５２Ｃに示される、モーダル３の状態遷移（１→３）と対応付けられている８個の遷移生起カウンタのうち、［２  ２  −］に対応する遷移生起カウンタが１だけカウントアップされる。
【０６６６】
このように、システムの状態が［２  ２  １］から［２  ４  ３］に遷移したとき、図５７Ｂの左側に示されるように、モーダル２の状態遷移（２→４）については、モーダル２の状態遷移（２→４）と対応付けられている、［２  ＊  −］、［−  ＊  １］、［２  ＊  １］に対応する遷移生起カウンタが１だけカウントアップされる。また、図５７Ｂの右側に示されるように、モーダル３の状態遷移（１→３）については、モーダル３の状態遷移（１→３）と対応付けられている、［２  −  ＊］、［−  ２  ＊］、［２  ２  −］に対応する遷移生起カウンタが１だけカウントアップされる。
【０６６７】
ｔ＝５になり、システムの状態が図４６に示されるように［２  ４  ３］から［３  ４  ３］に遷移したとき、ｔ＝５における状態と、直前の時刻であるｔ＝４における状態が比較され、状態の変化があったモーダルであるモーダル１がリストアップされる。
【０６６８】
また、事象生起カウンタのカウントアップが行われる。
【０６６９】
３個のモーダルの中からL+1個のモーダルを選び出したときのMCL+1通りのモーダルの組み合わせのうちの任意の１つの組み合わせである｛１，２｝、｛１，３｝、｛２，３｝、｛１，２，３｝のそれぞれが注目され、注目する組み合わせに含まれるモーダルの１時刻前の状態を表す状態ベクトルに対応する事象生起カウンタが１だけカウントアップされる。
【０６７０】
｛１，２｝のモーダルの組み合わせに注目したとき、１時刻前のｔ＝４におけるモーダル１の状態は２、モーダル２の状態は４であるから、図４７Ａに示される８個の状態ベクトルのうちの［２  ４  −］に対応する事象生起カウンタが１だけカウントアップされる。
【０６７１】
｛１，３｝のモーダルの組み合わせに注目したとき、１時刻前のｔ＝４におけるモーダル１の状態は２、モーダル３の状態は３であるから、図４７Ｂに示される６個の状態ベクトルのうちの［２  −  ３］に対応する事象生起カウンタが１だけカウントアップされる。
【０６７２】
｛２，３｝のモーダルの組み合わせに注目したとき、１時刻前のｔ＝４におけるモーダル２の状態は４、モーダル３の状態は３であるから、図４７Ｃに示される１２個の状態ベクトルのうちの［−  ４  ３］に対応する事象生起カウンタが１だけカウントアップされる。
【０６７３】
｛１，２，３｝のモーダルの組み合わせに注目したとき、１時刻前のｔ＝４におけるモーダル１の状態は２、モーダル２の状態は４、モーダル３の状態は３であるから、図４７Ｄに示される２４個の状態ベクトルのうちの［２  ４  ３］に対応する事象生起カウンタが１だけカウントアップされる。
【０６７４】
このように、システムの状態が［２  ４  ３］から［３  ４  ３］に遷移したとき、図５８Ａに示されるように、［２  ４  −］、［２  −  ３］、［−  ４  ３］、［２  ４  ３］に対応する事象生起カウンタが１だけカウントアップされる。
【０６７５】
さらに、遷移生起カウンタのカウントアップが行われる。
【０６７６】
まず、状態が遷移したモーダル１以外のモーダルの中からL個のモーダルを選び出したときのM-1CL通りのモーダルの組み合わせのうちの任意の１つの組み合わせである｛２｝、｛３｝、｛２，３｝のそれぞれが注目され、注目する組み合わせに含まれるモーダルの１時刻前の状態を表す状態ベクトルと、モーダル１の状態遷移（２→３）との組が求められる。
【０６７７】
また、モーダル１の状態遷移（２→３）と対応付けられている、注目する組み合わせに含まれるモーダルの１時刻前の状態を表す状態ベクトルに対応する遷移生起カウンタ（図４８Ａ乃至Ｃ）が１だけカウントアップされる。
【０６７８】
｛２｝のモーダルの組み合わせに注目したとき、１時刻前のｔ＝４におけるモーダル２の状態は４であるから、図４８Ａに示される、モーダル１の状態遷移（２→３）と対応付けられている４個の遷移生起カウンタのうち、［＊  ４  −］に対応する遷移生起カウンタが１だけカウントアップされる。
【０６７９】
｛３｝のモーダルの組み合わせに注目したとき、１時刻前のｔ＝４におけるモーダル３の状態は３であるから、図４８Ｂに示される、モーダル１の状態遷移（２→３）と対応付けられている３個の遷移生起カウンタのうち、［＊  −  ３］に対応する遷移生起カウンタが１だけカウントアップされる。
【０６８０】
｛２，３｝のモーダルの組み合わせに注目したとき、１時刻前のｔ＝４におけるモーダル２の状態は４、モーダル３の状態は３であるから、図４８Ｃに示される、モーダル１の状態遷移（２→３）と対応付けられている１２個の遷移生起カウンタのうち、［＊  ４  ３］に対応する遷移生起カウンタが１だけカウントアップされる。
【０６８１】
このように、システムの状態が［２  ４  ３］から［３  ４  ３］に遷移したとき、図５８Ｂに示されるように、モーダル１の状態遷移（２→３）と対応付けられている、［＊  ４  −］、［＊  −  ３］、［＊  ４  ３］に対応する遷移生起カウンタが１だけカウントアップされる。
【０６８２】
因果学習は以上の処理が繰り返されることによって進められる。因果学習によって得られた事象生起カウンタの値と、遷移生起カウンタの値を表す情報は因果学習処理部２０１から因果推定処理部２０２に供給され、因果推定に用いられる。
【０６８３】
次に、因果推定処理部２０２により行われる因果推定について説明する。
【０６８４】
モーダルiにおける状態遷移Ti=(Sik→Sik′)の因果関係を推定する場合、L=1,2,・・・,min(M-1,MaxCombi)のそれぞれのLの値に注目して以下の処理が行われる。
【０６８５】
モーダルi以外の、M-1個のモーダルの中からL個のモーダルを選び出したときのM-1CL通りのモーダルの組み合わせのうちの任意の１つの組み合わせをcM(L;i)で表す。また、cM(L;i)に対応する状態ベクトルパターンをScM(L;i)で表す。
【０６８６】
状態ベクトルパターンScM(L;i)のうちのそれぞれの状態ベクトルをScM(L;i)jで表すとすると、それぞれの状態ベクトルScM(L;i)jに対して、状態遷移Tiの条件付確率P(Ti|ScM(L;i)j)が求められる。
【０６８７】
具体的には、状態ベクトルScM(L;i)jの要素としてモーダルiの遷移元の状態であるSikが補われることによって状態ベクトル(Sik,ScM(L;i)j)が生成され、生成された状態ベクトル(Sik,ScM(L;i)j)に対応する事象生起カウンタの値NSが取得される。
【０６８８】
状態ベクトル(Sik,ScM(L;i)j)に対応する事象生起カウンタの値NSが０である場合、状態ベクトルScM(L;i)jに対する状態遷移Tiの条件付確率P(Ti|ScM(L;i)j)はσ0として設定される。σ0は最低確率を与える、0以上1以下の固定値である。
【０６８９】
一方、状態ベクトル(Sik,ScM(L;i)j)に対応する事象生起カウンタの値NSが1以上である場合、(Ti,ScM(L;i)j)に対応する遷移生起カウンタの値NTが取得される。(Ti,ScM(L;i)j)は、状態遷移Tiに対応付けられている状態ベクトルScM(L;i)jを表す。
【０６９０】
遷移生起カウンタの値NTを事象生起カウンタの値NSで割ることによって、暫定確率値p0=NT/NSが求められる。
【０６９１】
暫定確率値p0と事象生起カウンタの値NSを用いて値σが下式（２）で表されるとすると、状態ベクトルScM(L;i)jに対する状態遷移Tiの条件付確率P(Ti|ScM(L;i)j)は下式（３）によって表される。式（３）において、minは、１とp0＋σのうちの小さい方の値を条件付確率Pとすることを表す。
【数２】
0004687732.tif 000003
【数３】
0004687732.tif 000004
【０６９２】
値σを暫定確率値p0に加算することは、経験に基づく確率の推定誤差を楽観的に考えて得られた値を最終的な条件付確率Pにすることを表す。
【０６９３】
なお、これ以外にも、下式（４）に従って、条件付確率Pを0.5に向けて修正することも可能である。また、p+ασを条件付確率Pとするような修正も可能である。
【数４】
0004687732.tif 000005
【０６９４】
いま対象にしている状態遷移という事象は、生起するかしないかの２値を持つ事象であるので、生起確率pのベルヌーイ試行によってモデル化することができる。例えばN（X）回のサンプルから得られた生起確率p=N（X,T）/N（X）は、期待値√p（1-p）/N（X）の推定誤差をもつと考えられるため、これと同様にして求められる値σの分だけ確率を上げたものが、最終的な条件付確率Pとして求められる。ただし、P=0またはP=1においては推定誤差が0になるので、実用上、ある適当なパラメータσ0を用いて推定誤差としての値σの計算が行われる。
【０６９５】
閾値以上の条件付確率P(Ti|ScM(L;i)j)が求められた場合、対象になっている状態ベクトルScM(L;i)jが、条件付確率P(Ti|ScM(L;i)j)とともに因果候補リストに登録される。因果候補リストは、状態遷移Tiと因果関係のある状態ベクトルScM(L;i)jのリストであり、状態遷移Ti毎に、条件付確率P(Ti|ScM(L;i)j)の高い順に状態ベクトルScM(L;i)jが対応付けられる。状態ベクトルScM(L;i)jにより表される状態が、状態遷移Tiの因果候補になる。
【０６９６】
因果推定の具体例について説明する。
【０６９７】
ここでは、モーダル２の状態遷移（１→２）と因果関係のある状態ベクトルを推定する場合について説明する。
【０６９８】
モーダル２の状態遷移（１→２）と因果関係のある状態ベクトルは、モーダル１とモーダル３の両方の状態を表す状態ベクトルか、モーダル１とモーダル３のうちの一方の状態を表す状態ベクトルである。従って、Lの値を１または２とし、モーダル２以外のモーダルの中からL個のモーダルを選び出したときのM-1CL通りのモーダルの組み合わせのうちの任意の１つの組み合わせを考えると、その組み合わせは｛１｝、｛３｝、｛１，３｝になる。それぞれのモーダルの組み合わせが上述したcM(L;i)に相当する。
【０６９９】
また、図５９Ａ乃至Ｃに示されるように、｛１｝に対応する２個の状態ベクトルのパターン、｛３｝に対応する３個の状態ベクトルのパターン、｛１，３｝に対応する６個の状態ベクトルのパターンが、それぞれ、cM(L;i)に対応する上述した状態ベクトルパターンScM(L;i)に相当する。図５９Ａ乃至Ｃに示される状態ベクトルは、図５０Ａ乃至Ｃに示されるものと同じである。
【０７００】
例えば、｛１｝に対応する［１  ＊  −］と［２  ＊  −］の２個の状態ベクトルのパターンのうち、［１  ＊  −］または［２  ＊  −］が、上述した状態ベクトルScM(L;i)jに相当する。図５９Ａ乃至Ｃに示される１１個のそれぞれの状態ベクトルScM(L;i)jを対象として以降の処理が行われ、モーダル２の状態遷移（１→２）との因果関係を表す条件付確率が求められる。
【０７０１】
例えば、図５９Ａ乃至Ｃに示される１１個の状態ベクトルのうち、図６０Ａに示される［１  ＊  −］と［１  ＊  １］のそれぞれの状態ベクトルに対するモーダル２の状態遷移（１→２）の条件付確率を求める場合について説明する。
【０７０２】
［１  ＊  −］に注目すると、図６０Ｂの左側に示されるように、［１  ＊  −］の要素として、モーダル２の遷移元の状態である１が補われることによって［１  １  −］が生成される。［１  １  −］が上述した(Sik,ScM(L;i)j)に相当する。
【０７０３】
［１  １  −］に対応する事象生起カウンタの値NS（図４７）が取得される。値NSは、モーダル１の状態１とモーダル２の状態１が同時に生起した回数を表し、因果学習によって取得されている。
【０７０４】
［１  １  −］に対応する事象生起カウンタの値NSが取得された後、モーダル２の状態遷移（１→２）と対応付けて用意されている、［１  ＊  −］に対応する遷移生起カウンタの値NT（図６０Ｃの左側、図５０Ａ）が取得される。遷移生起カウンタの値NTは、モーダル２の状態遷移（１→２）が生起する１時刻前に、モーダル１の状態１とモーダル２の状態１が同時に生起した回数を表し、因果学習によって取得されている。
【０７０５】
事象生起カウンタの値NSと遷移生起カウンタの値NTに基づいて、［１  ＊  −］に対する、モーダル２の状態遷移（１→２）の条件付確率が求められる。すなわち、事象生起カウンタの値NSが０であるときには条件付確率としてσ0が求められ、事象生起カウンタの値NSが１以上であるときには上式（３）に従って条件付確率が求められる。
【０７０６】
同様に、［１  ＊  １］に注目すると、図６０Ｂの右側に示されるように、［１  ＊  １］の要素として、モーダル２の遷移元の状態である１が補われることによって［１  １  １］が生成される。
【０７０７】
［１  １  １］に対応する事象生起カウンタの値NSと、モーダル２の状態遷移（１→２）と対応付けて用意されている、［１  ＊  １］（図６０Ｃの右側、図５０Ｃ）に対応する遷移生起カウンタの値NTが取得される。
【０７０８】
事象生起カウンタの値NSと遷移生起カウンタの値NTに基づいて、［１  ＊  １］に対する、モーダル２の状態遷移（１→２）の条件付確率が求められる。
【０７０９】
以上のようにして求められた条件付確率が、適宜、状態ベクトルと対応付けて因果候補リストに登録され、因果候補リスト記憶部２０３に記憶される。
【０７１０】
次に、因果候補リスト整理処理部２０４により行われる因果候補リストの整理について説明する。
【０７１１】
因果候補リストの整理は、因果候補リストに登録された状態ベクトルをマージすることであり、上述した、N（T,ak,b）を適切な範囲の値に保つように、粒度を変えるなどして事象bを制御することに相当する。因果候補リストの整理は所定のタイミングで行われる。
【０７１２】
L個のモーダルにおける、ある特定の状態の組として定義される状態ベクトルScM(L;)kを考える。
【０７１３】
マージの可否は、状態ベクトルScM(L;)kと、上記L個のモーダルに含まれないある１つのモーダルであるモーダルiの特定の状態Sijを状態ベクトルScM(L;)kに対して追加した状態ベクトル(ScM(L;)k,Sij)との間で判断される。この状態ベクトルScM(L;)kと状態ベクトル(ScM(L;)k,Sij)は、それぞれ、同じ状態遷移の条件付確率と対応付けて因果候補リストに登録されている状態ベクトルである。
【０７１４】
状態ベクトル(ScM(L;)k,Sij)は状態ベクトルScM(L;)kにSijを追加したものであるから、概念的には、状態ベクトルScM(L;)kの方が状態ベクトル(ScM(L;)k,Sij)より上位の状態ベクトルといえる。マージの可否の判断は、下位の状態ベクトルを上位の状態ベクトルに含めて同じものとして考えるどうかの判断になる。
【０７１５】
状態ベクトルScM(L;)kに対する目標の状態遷移の条件付確率Pを下式（５）で表し、状態ベクトル(ScM(L;)k,Sij)に対する同じ状態遷移の条件付確率P'を下式（６）で表す。
【数５】
0004687732.tif 000006
【数６】
0004687732.tif 000007
【０７１６】
この場合、両者のマージの可否の判断は下式（７）に従って行われる。αは適当なマージ係数である。
【数７】
0004687732.tif 000008
【０７１７】
このようなマージの可否の判断が、状態ベクトルScM(L;)kと、特定の状態であるSijを追加した、モーダルiのni個の全ての状態ベクトル(ScM(L;)k,Sij)との間で行われる。
【０７１８】
ni個の状態ベクトル(ScM(L;)k,Sij)のうちのどれか１つでもマージ不可と判断できるものがあれば、因果候補リストから状態ベクトルScM(L;)kが削除される。概念的に下位の状態ベクトルが因果候補リストに残ることになる。
【０７１９】
一方、マージ不可と判断できる状態ベクトルがni個の状態ベクトル(ScM(L;)k,Sij)の中になかった場合、ni個の状態ベクトル(ScM(L;)k,Sij)、および、それを一部に含む状態ベクトル(より高次の状態ベクトル)がすべて削除される。概念的に上位の状態ベクトルによって、下位の状態ベクトルがまとめて扱われることになる。
【０７２０】
因果候補リストの整理の具体的な例について説明する。
【０７２１】
図６１Ａに示される状態ベクトルである［１  ＊  −］について考える。［１  ＊  −］は、モーダル２のある状態遷移の因果候補の状態を表すものとして因果候補リストに登録されている状態ベクトルであり、上述したScM(L;)kに相当する。
【０７２２】
この場合、マージ可否の判断は、［１  ＊  −］と、図６１Ｂに示される、モーダル２に含まれない１つのモーダルであるモーダル３の状態を追加した状態ベクトルである［１  ＊  １］、［１  ＊  ２］、［１  ＊  ３］との間で判断される。［１  ＊  １］、［１  ＊  ２］、［１  ＊  ３］が、上述した(ScM(L;)k,Sij)に相当する。
【０７２３】
［１  ＊  −］に対するモーダル２のある状態遷移の条件付確率が上式（５）に従って算出され、［１  ＊  １］、［１  ＊  ２］、［１  ＊  ３］のそれぞれに対する、モーダル２の同じ状態遷移の条件付確率が上式（６）に従って算出される。
【０７２４】
また、上式（７）に従って、［１  ＊  −］と、［１  ＊  １］、［１  ＊  ２］、［１  ＊  ３］をマージすることができるか否かが判断される。
【０７２５】
［１  ＊  １］、［１  ＊  ２］、［１  ＊  ３］を全て［１  ＊  −］にマージすることができると判断された場合、［１  ＊  １］、［１  ＊  ２］、［１  ＊  ３］が因果関係リストから削除され、［１  ＊  −］だけが残される。
【０７２６】
一方、［１  ＊  １］、［１  ＊  ２］、［１  ＊  ３］の中に１つでもマージすることができない状態ベクトルがあると判断された場合、［１  ＊  −］が因果関係リストから削除され、［１  ＊  １］、［１  ＊  ２］、［１  ＊  ３］が残される。
【０７２７】
ここで、シンプソンのパラドックスを例にとり、因果候補リストの整理の考え方について説明する。
【０７２８】
シンプソンのパラドックスとは以下のようなものである。
【０７２９】
ある病気の患者が80人いた。そのうちの半数の40人にある治療を施したところ、20人が治癒した。一方、何もしなかったところ、16人が治癒した。治療を施した場合の治癒率50%は、何もしない場合の自然治癒率40%よりも高いので、この治療には効果があると考えられる。
【０７３０】
患者は男女それぞれ40人であったが、治療への参加人数に違いがあったので男女別に結果を分析する。
【０７３１】
男性は30人が治療を受け、そのうちの18人が治癒した。治療を受けなかったのは残りの10人であり、自然治癒した人はそのうちの7人であった。つまり、男性に限ると、治療を施した場合の治癒率60%は、何もしない場合の自然治癒率70%よりも低く、治療を行なわない方がよいのではないかと考えられる。
【０７３２】
女性は10人しか治療に参加せず、そのうちの2人のみが治癒した。残りの30人のうち9人は自然治癒した。つまり、女性の場合、治療を施した場合の治癒率20%は、何もしない場合の自然治癒率30%よりも低く、この場合もやはり、治療を行なわない方がよいのではないかと考えられる。
【０７３３】
さて、この治療には効果があるのか、ないのか。むしろ副作用があるのか。
【０７３４】
治癒=(病気→健康)という遷移に関して考慮すべきモーダルとしては「治療」および「男女」の2つである。これらの関係をまとめると以下のようになる。
P(治癒|治療する)=0.5      σ=0.079
P(治癒|治療せず)=0.4      σ=0.078
P(治癒|治療する,男性)=0.6  σ=0.089
P(治癒|治療する,女性)=0.2  σ=0.13
P(治癒|治療せず,男性)=0.7  σ=0.14
P(治癒|治療せず,女性)=0.3  σ=0.084
P(治癒|男性)=0.63          σ=0.077
P(治癒|女性)=0.28          σ=0.071
【０７３５】
問題は、これらのうちで真に考慮すべき因果関係はどこにあるのか、ということである。ここで、前述した因果関係の整理手法（因果候補リストの状態ベクトルの整理）を適用する。以下、マージ係数α=1とする。
【０７３６】
P(治癒|治療する)に関する因果関係を整理してみると次のようになるので、P(治癒|治療する,男性)とP(治癒|治療する,女性)はマージできずにP(治癒|治療する)を消去することになる。
|P(治癒|治療する)-P(治癒|治療する,男性)|=0.1<(0.079+0.089)=0.17
|P(治癒|治療する)-P(治癒|治療する,女性)|=0.3>(0.079+0.13)=0.21
【０７３７】
同様に、P(治癒|治療せず)に関しても次のようになるので、P(治癒|治療せず,男性)とP(治癒|治療せず,女性)はマージできずにP(治癒|治療せず)を消去することになる。
|P(治癒|治療せず)-P(治癒|治療せず,男性)|=0.3>(0.078+0.14)=0.22
|P(治癒|治療せず)-P(治癒|治療せず,女性)|=0.1<(0.078+0.084)=0.16
【０７３８】
一方、P(治癒|男性)について調べてみると、P(治癒|治療する,男性)とP(治癒|治療せず,男性)はいずれもマージ可能なので、P(治癒|治療する,男性)とP(治癒|治療せず,男性)が共に消去されてP(治癒|男性)のみが残る。
|P(治癒|男性)-P(治癒|治療する,男性)|=0.03<(0.077+0.089)=0.17
|P(治癒|男性)-P(治癒|治療せず,男性)|=0.07<(0.077+0.14)=0.22
【０７３９】
同様に、P(治癒|女性)について調べてみると、P(治癒|治療する,女性)とP(治癒|治療せず,女性)はやはりマージ可能なので、P(治癒|治療する,女性)とP(治癒|治療せず,女性)が消去されてP(治癒|女性)のみが残る。
|P(治癒|女性)-P(治癒|治療する,女性)|=0.08<(0.071+0.13)=0.20
|P(治癒|女性)-P(治癒|治療せず,女性)|=0.02<(0.071+0.084)=0.15
【０７４０】
以上より、現時点で有効な因果関係は「男女差→治癒の有無」のみであり、治療に関しては有効とも副作用があるとも断定できない。言い換えれば、「男女別」と「治療の有無」の両方を同時に考慮したL=2の因果分析は不要であり、L=1の範囲内で考えれば十分であると考えられる。
【０７４１】
その後、実験を繰り返し、被験者の数を100倍に増やしたが、次のように、パラドキシカルな状況は依然として変わらなかったものとする。
【０７４２】
ある病気の患者が8000人いた。そのうちの半数4000人にある治療を施したところ、2000人が治癒した。一方、何もしなかったところ、1600人が治癒した。
【０７４３】
患者は男女それぞれ4000人であったが、治療への参加人数に違いがあった。
【０７４４】
男性は3000人が治療を受け、そのうちの1800人が治癒した。治療を受けなかったのは残りの1000人であり、自然治癒した人はそのうちの700人であった。
【０７４５】
女性は1000人しか治療に参加せず、そのうちの200人のみが治癒した。残りの3000人のうち900人は自然治癒した。
【０７４６】
このような状況を考え、今度はここから何が言えるのかを考えてみる。
【０７４７】
このような状況では、確率そのものは上述したものと同一で、サンプル数Nが100倍となっているため、誤差の大きさの期待値σだけが1/10になっている。
【０７４８】
これまでと同様の計算により、P(治癒|治療する)に関する因果候補を整理してみると次のようになるので、P(治癒|治療する,男性)とP(治癒|治療する,女性)はマージできずにP(治癒|治療する)を消去することになる。
|P(治癒|治療する)-P(治癒|治療する,男性)|=0.1>(0.0079+0.0089)=0.017
|P(治癒|治療する)-P(治癒|治療する,女性)|=0.3>(0.0079+0.013)=0.021
【０７４９】
同様に、P(治癒|治療せず)に関しても次のようになるので、P(治癒|治療せず,男性)とP(治癒|治療せず,女性)はマージできずにP(治癒|治療せず)を消去することになる。
|P(治癒|治療せず)-P(治癒|治療せず,男性)|=0.3>(0.0078+0.014)=0.022
|P(治癒|治療せず)-P(治癒|治療せず,女性)|=0.1>(0.0078+0.0084)=0.016
【０７５０】
次に、P(治癒|男性)について調べてみると、P(治癒|治療する,男性)とP(治癒|治療せず,男性)は、今度はマージ不可なので、P(治癒|男性)が消去されることになる。
|P(治癒|男性)-P(治癒|治療する,男性)|=0.03>(0.0077+0.0089)=0.017
|P(治癒|男性)-P(治癒|治療せず,男性)|=0.07>(0.0077+0.014)=0.022
【０７５１】
同様に、P(治癒|女性)についても、P(治癒|治療する,女性)とP(治癒|治療せず,女性)はやはりマージ不可なので、P(治癒|女性)の方が消去される。
|P(治癒|女性)-P(治癒|治療する,女性)|=0.08>(0.0071+0.013)=0.020
|P(治癒|女性)-P(治癒|治療せず,女性)|=0.02>(0.0071+0.0084)=0.015
【０７５２】
以上より、このケースでは「男女差」および「治療の有無」を同時に考慮したL=2の因果分析が妥当である。つまり、考慮すべき因果関係は次のものにまとめられることになる。
P(治癒|治療する,男性)=0.6      σ=0.0089
P(治癒|治療する,女性)=0.2      σ=0.013
P(治癒|治療せず,男性)=0.7      σ=0.014
P(治癒|治療せず,女性)=0.3      σ=0.0084
【０７５３】
「男女差」と「治療の有無」のうちのどちらか一方の要因のみに着目すると判断を誤る。そして、上記より明らかなように、この場合、男女を問わず、治療しないほうが、治癒成績が良くなると結論できる。すなわち、この治療は副作用の方が大きい。
【０７５４】
治療の有無のみに注目したL=1の因果推定ではなく、L=2の因果推定が必要になる理由は、治癒成績の具体的数値に関する男女差が明らかに有意であり、治療の有無に加えて男女差を考慮に入れる必要があることに対応している。実際、この層別の必要性こそがパラドックスの解決になっている。
【０７５５】
因果候補リスト整理処理部２０４により状態ベクトルのマージが必要に応じて行われることにより、ある状態遷移との因果関係を表すという点で必要性のある状態ベクトルを残すことができる。
【０７５６】
次に、図６２のフローチャートを参照して、以上のようにして適宜整理され、因果候補リスト記憶部２０３に記憶されている因果候補リストを用いて行われる行動決定部２０５の行動決定処理について説明する。
【０７５７】
ステップＳ２１１において、行動決定部２０５は目標値を取得する。目標値は、例えば、目標とするあるモーダルの１つの状態を表す値である。
【０７５８】
ステップＳ２１２において、行動決定部２０５は、因果候補リスト記憶部２０３に記憶されている因果候補リストを読み出し、目標値により表される状態にそのモーダルの状態を遷移させるための行動を決定する。例えば、行動決定部２０５は、そのモーダルの現在の状態から目標値の状態までの遷移を決定し、それぞれの遷移の因果候補を、条件付確率の高い順に因果候補リストに登録されているものの中から所定の数だけ取得する。行動決定部２０５は、取得した因果候補の中から選択した、条件付確率が最も、あるいは一定以上高い１つの因果候補である状態ベクトルにより表される状態に他のモーダルの状態を遷移させるような行動を行わせる。
【０７５９】
因果推定が適切に行われている場合、図６３に示されるように、ロボットのエネルギーの状態を現在の状態である状態S1から状態S2に遷移させ、エネルギーを上昇させるといったことを、光センサの状態、距離センサの状態をそれぞれ所定の状態に遷移させることで実現することが可能になる。図６３の例においては、光センサの状態を光の周囲にロボットがいるときの状態にすることでエネルギーを上昇させることができることが理解されている。図６３のエネルギーのグラフにおいて横軸がエネルギーである。
【０７６０】
また、図６４に示されるように、ロボットのエネルギーの状態を現在の状態である状態S11から状態S12に遷移させ、エネルギーを下降させるといったことを、光センサの状態、距離センサの状態をそれぞれ所定の状態に遷移させることで実現することが可能になる。図６４の例においては、光センサの状態を光が届かない位置にロボットがいるときの状態にすることでエネルギーを下降させることができることが理解されている。
【０７６１】
なお、因果推定が行動決定のときに行われるようにすることも可能である。
【０７６２】
以上のように、「ある事象bの生起」が他のモーダルaiの「事象akから事象a1への状態遷移を生起させる（ただし事象a1とakは相互排反とする）」という形で因果関係を定式化することで、因果関係のある事象の候補を絞ることができるとともに、学習の安定性を図ることが可能になる。事象a1とakは相互に排反する事象であるため、状態遷移ak→a1の原因となる事象はモーダルai内にはないことになり、因果推定の候補としてこのモーダルai内の事象を除外することができる。
【０７６３】
事象a1が生起するメカニズムは複数存在しうるが、状態遷移ak→a1の因果推定問題とすることで、問題の複雑性を緩和することができる。
【０７６４】
また、因果学習において、カウンタにより数えた事象の同時生起回数を緩やかに時間減衰させることで、時間変動がある因果に対して、それを表す状態遷移確率を動的に追従させることができる。さらに、時間変動があることの可能性を考慮して、因果関係の利用と探索のバランスをとることが可能になる。
【０７６５】
また、状態遷移T:ak→a1と事象bの因果関係を条件付確率P（T|ak,b）の形で定式化し、それらの事象の同時生起回数と、条件付確率から見積もられる推定誤差の期待値σを考慮して行動決定が行われるようにすることにより、因果関係の利用と探索のトレードオフを解決することができる。すなわち、データサンプルが多い場合でも少ない場合でも適切な行動を実現することが可能になる。
【０７６６】
図６５は、因果関係の利用と探索のトレードオフを解決するための方法として、期待値σ分だけ確率を上げた条件付確率を用いる上述した方法と、従来の方法であるランダム法、ε-greedy法、Soft-max法を採用してロボットの行動の最適度を求めた結果を示す図である。
【０７６７】
図６５の横軸は経験数を表し、縦軸は行動の最適度を表す。曲線Ｌ1は上述した方法を用いた場合の結果を表し、曲線Ｌ2はSoft-max法を用いた場合の結果を表す。曲線Ｌ3はパラメータεを時間経過に伴い減少させていくε-greedy法を用いた場合の結果を表し、曲線Ｌ4はε-greedy法の亜種を用いた場合の結果を表す。曲線Ｌ5はランダム法を用いた場合の結果を表す。図６５に示されるように、上述した方法によれば、他の方法よりよい結果を得ることができる。
【０７６８】
他の従来の方法はパラメータチューニングが必要であるのに対して、期待値σ分だけ確率を上げた条件付確率を用いる上述した方法はその必要がないため、その点でも実用的であるといえる。
【０７６９】
上述した一連の処理は、ハードウエアにより実行することもできるし、ソフトウエアにより実行することもできる。一連の処理をソフトウエアにより実行する場合には、そのソフトウエアを構成するプログラムが、専用のハードウエアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な汎用のパーソナルコンピュータなどに、プログラム記録媒体からインストールされる。
【０７７０】
図６６は、上述した一連の処理をプログラムにより実行するコンピュータのハードウエアの構成例を示すブロック図である。
【０７７１】
CPU（Central Processing Unit）２１１、ROM（Read Only Memory）２１２、RAM（Random Access Memory）２１３は、バス２１４により相互に接続されている。
【０７７２】
バス２１４には、さらに、入出力インタフェース２１５が接続されている。入出力インタフェース２１５には、キーボード、マウス、マイクロホンなどよりなる入力部２１６、ディスプレイ、スピーカなどよりなる出力部２１７、ハードディスクや不揮発性のメモリなどよりなる記憶部２１８、ネットワークインタフェースなどよりなる通信部２１９、光ディスクや半導体メモリなどのリムーバブルメディア２２１を駆動するドライブ２２０が接続されている。
【０７７３】
以上のように構成されるコンピュータでは、CPU２１１が、例えば、記憶部２１８に記憶されているプログラムを入出力インタフェース２１５及びバス２１４を介してRAM２１３にロードして実行することにより、上述した一連の処理が行われる。
【０７７４】
CPU２１１が実行するプログラムは、例えばリムーバブルメディア２２１に記録して、あるいは、ローカルエリアネットワーク、インターネット、デジタル放送といった、有線または無線の伝送媒体を介して提供され、記憶部２１８にインストールされる。
【０７７５】
なお、コンピュータが実行するプログラムは、本明細書で説明する順序に沿って時系列に処理が行われるプログラムであっても良いし、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで処理が行われるプログラムであっても良い。
【０７７６】
本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。
【図面の簡単な説明】
【０７７７】
【図１】本発明が適用される処理の概要を説明する図である。
【図２】本発明が適用される処理の概要を説明する。
【図３】本発明が適用される情報処理システムの一実施の形態の機能ブロック図である。
【図４】単振子タスクを説明する図である。
【図５】単振子タスクの制御処理の一例を説明するフローチャートである。
【図６】時系列観測信号の一例を示す図である。
【図７】HMMの一例を示す図である。
【図８】HMMの一例を示す図である。
【図９】HMMの一例を示す図である。
【図１０】HMMの一例を示す図である。
【図１１】単振子タスクにおけるHMMの学習結果の一例を示している。
【図１２】図５の認識処理の詳細例を説明するフローチャートである。
【図１３】図５の認識処理の詳細例を説明するフローチャートである。
【図１４】図５の認識処理の詳細例を説明するフローチャートである。
【図１５】本発明が適用される情報処理システムの一実施の形態の機能ブロック図である。
【図１６】マルチモーダルタスクに適用可能なシミュレータの一表示例を示す図である。
【図１７】マルチモーダルセンサの観測信号の一例を示している図である。
【図１８】マルチモーダルタスクにおける各モーダルのHMMの学習結果の一例を示している。
【図１９】距離のHMMの経路と制御の一例を説明する図である。
【図２０】因果推定の概略を説明する図である、
【図２１】因果推定の概略を説明する図である、
【図２２】マルチモーダルタスクにおける多段行動制御の一例を説明する図である。
【図２３】光のHMMの経路と制御の一例を説明する図である。
【図２４】マルチモーダルタスクにおける因果の多段行動制御の一例を説明する図である。
【図２５】本発明が適用される情報処理装置としてのパーソナルコンピュータの構成例を示すブロック図である。
【図２６】データ処理装置の一実施の形態の構成例の概要を説明する図である。
【図２７】エルゴディックHMMの例を示す図である。
【図２８】left-to-right型のHMMの例を示す図である。
【図２９】データ処理装置の詳細な構成例を示すブロック図である。
【図３０】初期構造設定部１１６が設定するHMMの初期構造の例を示す図である。
【図３１】状態の分割を説明する図である。
【図３２】状態のマージを説明する図である。
【図３３】状態の追加を説明する図である。
【図３４】状態遷移の追加を説明する図である。
【図３５】状態の削除を説明する図である。
【図３６】データ処理装置の学習処理を説明するフローチャートである。
【図３７】構造調整部１１７の処理を説明するフローチャートである。
【図３８】シミュレーションで用いた移動軌跡を示す図である。
【図３９】学習の結果得られたHMMを示す図である。
【図４０】学習の結果得られたHMMから求められた対数尤度を示す図である。
【図４１】本発明を適用したコンピュータの一実施の形態の構成例を示すブロック図である。
【図４２】情報処理装置の機能構成例を示す図である。
【図４３】情報処理装置の因果知覚に関する処理について説明するフローチャートである。
【図４４】モーダルの例を示す図である。
【図４５】モーダルの具体例を示す図である。
【図４６】システムの状態の時間変化の例を示す図である。
【図４７】事象生起カウンタの例を示す図である。
【図４８】モーダル１のそれぞれの状態遷移に対応して用意される遷移生起カウンタの例を示す図である。
【図４９】モーダル１の状態遷移の例を示す図である。
【図５０】モーダル２のそれぞれの状態遷移に対応して用意される遷移生起カウンタの例を示す図である。
【図５１】モーダル２の状態遷移の例を示す図である。
【図５２】モーダル３のそれぞれの状態遷移に対応して用意される遷移生起カウンタの例を示す図である。
【図５３】モーダル３の状態遷移の例を示す図である。
【図５４】カウントアップする事象生起カウンタと遷移生起カウンタの例を示す図である。
【図５５】カウントアップする事象生起カウンタの例を示す図である。
【図５６】カウントアップする事象生起カウンタと遷移生起カウンタの他の例を示す図である。
【図５７】カウントアップする事象生起カウンタと遷移生起カウンタのさらに他の例を示す図である。
【図５８】カウントアップする事象生起カウンタと遷移生起カウンタの例を示す図である。
【図５９】状態ベクトルパターンの例を示す図である。
【図６０】状態ベクトルの例を示す図である。
【図６１】状態ベクトルの他の例を示す図である。
【図６２】情報処理装置の行動決定処理について説明するフローチャートである。
【図６３】因果関係に基づく行動の例を示す図である。
【図６４】因果関係に基づく行動の他の例を示す図である。
【図６５】測定結果の例を示す図である。
【図６６】コンピュータの構成例を示す図である。
【符号の説明】
【０７７８】
２１  センサ部，  ２２  モデル化部，  ２３  生得コントローラ，  ２４  行動制御部，  ２５  アクション部，  ３１  学習部，  ３２  HMM格納部，  ３３  認識部，  ３４  プランニング部，  ４１  学習部，  ４２  コントローラテーブル格納部，  ４３  コントローラ格納部，  ４４  実行管理部，  ６１  センサ部，  ６２Ａ乃至６２Ｃ  モデル化部，  ６３  因果部，  ６４  行動制御部，  ６５  アクション部，  ７１Ａ  学習部，  ７２Ａ  HMM格納部，  ７３Ａ  認識部，  ７４Ａ  プランニング部，  ７５  因果学習部，  ７６  因果テーブル格納部，  ７７  因果推定部，  ７８  実行管理部，  ７９  コントローラ，  ８０  コントローラテーブル格納部，  ８１  コントローラ格納部，９１  ＣＰＵ，  ９８  記憶部,  １００  ドライブ，  １０１  リムーバブルメディア，  １１１  時系列データ入力部，  １１２  データ調整部，  １１３  パラメータ推定部，  １１４  評価部，  １１５  モデル記憶部，  １１６  初期構造設定部，  １１７  構造調整部，  １５１  バス，  １５２  CPU，  １５３  ROM，  １５４  RAM，  １５５  ハードディスク，  １５６  出力部，  １５７  入力部，  １５８  通信部，  １５９  ドライブ，  １６０  入出力インタフェース，  １６１  リムーバブル記録媒体，  ２０１  因果学習処理部，  ２０２  因果推定処理部，  ２０３  因果候補リスト記憶部，  ２０４  因果候補リスト整理処理部，  ２０５  行動決定部
【図１】
0004687732.tif 000009
【図２】
0004687732.tif 000010
【図３】
0004687732.tif 000011
【図４】
0004687732.tif 000012
【図５】
0004687732.tif 000013
【図６】
0004687732.tif 000014
【図７】
0004687732.tif 000015
【図８】
0004687732.tif 000016
【図９】
0004687732.tif 000017
【図１０】
0004687732.tif 000018
【図１１】
0004687732.tif 000019
【図１２】
0004687732.tif 000020
【図１３】
0004687732.tif 000021
【図１４】
0004687732.tif 000022
【図１５】
0004687732.tif 000023
【図１６】
0004687732.tif 000024
【図１７】
0004687732.tif 000025
【図１８】
0004687732.tif 000026
【図１９】
0004687732.tif 000027
【図２０】
0004687732.tif 000028
【図２１】
0004687732.tif 000029
【図２２】
0004687732.tif 000030
【図２３】
0004687732.tif 000031
【図２４】
0004687732.tif 000032
【図２５】
0004687732.tif 000033
【図２６】
0004687732.tif 000034
【図２７】
0004687732.tif 000035
【図２８】
0004687732.tif 000036
【図２９】
0004687732.tif 000037
【図３０】
0004687732.tif 000038
【図３１】
0004687732.tif 000039
【図３２】
0004687732.tif 000040
【図３３】
0004687732.tif 000041
【図３４】
0004687732.tif 000042
【図３５】
0004687732.tif 000043
【図３６】
0004687732.tif 000044
【図３７】
0004687732.tif 000045
【図３８】
0004687732.tif 000046
【図３９】
0004687732.tif 000047
【図４０】
0004687732.tif 000048
【図４１】
0004687732.tif 000049
【図４２】
0004687732.tif 000050
【図４３】
0004687732.tif 000051
【図４４】
0004687732.tif 000052
【図４５】
0004687732.tif 000053
【図４６】
0004687732.tif 000054
【図４７】
0004687732.tif 000055
【図４８】
0004687732.tif 000056
【図４９】
0004687732.tif 000057
【図５０】
0004687732.tif 000058
【図５１】
0004687732.tif 000059
【図５２】
0004687732.tif 000060
【図５３】
0004687732.tif 000061
【図５４】
0004687732.tif 000062
【図５５】
0004687732.tif 000063
【図５６】
0004687732.tif 000064
【図５７】
0004687732.tif 000065
【図５８】
0004687732.tif 000066
【図５９】
0004687732.tif 000067
【図６０】
0004687732.tif 000068
【図６１】
0004687732.tif 000069
【図６２】
0004687732.tif 000070
【図６３】
0004687732.tif 000071
【図６４】
0004687732.tif 000072
【図６５】
0004687732.tif 000073
【図６６】
0004687732.tif 000074