(57)【要約】【課題】モデル化対象に対して適切な規模の学習モデルを得る。【解決手段】HMMを、最小の構成要素であるモジュールとして有する学習モデルであるACHMMを構成する各モジュールについて、そのモジュールにおいて、外部から供給される観測値の時系列である入力データが観測される尤度を求め、ACHMMの各モジュールの尤度に基づいて、ACHMMの１つのモジュール、又は、新規のモジュールを、HMMパラメータを更新する対象のモジュールである対象モジュールに決定し、入力データを用いて、対象モジュールのHMMパラメータを更新するモジュール学習を行うACHMM処理部１２２を有するACHMMユニット１１１ｄが生成され、階層構造に接続される。本発明は、例えば、時系列のデータの学習等に適用できる。【選択図】図４１
2011059817.tif 000002
【特許請求の範囲】
【請求項１】
外部から供給される観測値を記憶し、HMM(Hidden Markov Model)を、最小の構成要素であるモジュールとして有する学習モデルに与える入力データとして、前記観測値の時系列を出力する入力制御を行う入力制御手段と、
前記学習モデルを構成する各モジュールについて、前記モジュールにおいて、前記入力データが観測される尤度を求め、
前記尤度に基づいて、前記学習モデルの１つのモジュール、又は、新規のモジュールを、HMMパラメータを更新する対象のモジュールである対象モジュールに決定し、
前記入力データを用いて、前記対象モジュールのHMMパラメータを更新する
モジュール学習処理を行うモジュール学習手段と、
前記学習モデルを用いて、前記入力データを認識し、前記入力データの認識結果を表す認識結果情報を出力する認識手段と
を含み、前記学習モデルを用いた処理を行うモデル処理手段と、
前記認識結果情報を記憶し、外部に出力する出力データとして、前記認識結果情報を出力する出力制御を行う出力制御手段と
を有するユニットを生成し、前記ユニットを、階層構造に接続する階層処理手段を備え、
下位層のユニットである下位ユニットの前記出力制御手段は、前記出力データを、前記下位ユニットに接続された上位層のユニットである上位ユニットに出力し、
前記上位ユニットの前記入力制御手段は、前記下位ユニットからの前記出力データを記憶し、前記出力データの時系列を、前記入力データとして出力する
情報処理装置。
【請求項２】
前記出力制御手段は、所定の出力条件が満たされるときに、前記認識結果情報を、前記出力データとして出力し、
前記階層処理手段は、前記上位ユニットと接続されていないユニットである未接続ユニットの前記出力制御手段が、前記出力データを出力するとき、新規のユニットを生成し、前記新規のユニットを、前記未接続ユニットの上位ユニットとして、前記未接続ユニットと接続する
請求項１に記載の情報処理装置。
【請求項３】
最下位層のユニットである最下位層ユニットの前記入力制御手段は、モデル化の対象であるモデル化対象から観測される観測値を、前記外部から供給される観測値として記憶し、前記観測値の時系列を、前記入力データとして出力し、
前記最下位層ユニットの前記学習モデルを構成する前記モジュールとしてのHMMは、前記モデル化対象から観測される観測値が、連続値である場合には、連続HMMであり、前記モデル化対象から観測される観測値が、離散値である場合には、離散HMMであり、
前記認識手段は、前記入力データの認識結果を表す認識結果情報として、前記学習モデルを構成するモジュールのうちの、前記入力データが観測される尤度が最大のモジュールである最大尤度モジュールを表すシンボル、又は、前記最大尤度モジュールを表すシンボルと、前記最大尤度モジュールにおいて、前記入力データが観測される尤度が最大の状態遷移が生じる、前記HMMの状態の系列である最尤状態系列の最後の状態を表すシンボルとの２つのシンボルを出力し、
前記出力制御手段は、前記認識結果情報である前記シンボルを記憶し、前記出力データとして出力し、
前記最下位層ユニット以外のユニットの前記入力制御手段は、前記下位ユニットからの前記出力データである前記シンボルを、前記外部から供給される観測値として記憶し、前記観測値の時系列を、前記入力データとして出力し、
前記最下位層ユニット以外のユニットの前記学習モデルを構成する前記モジュールとしてのHMMは、離散HMMである
請求項１に記載の情報処理装置。
【請求項４】
前記モデル処理手段は、前記学習モデルを構成する前記モジュールとしてのHMMが、離散HMMである場合において、前記入力データに、いままでに観測されたことがない観測値である未観測値が含まれるとき、前記HMMのHMMパラメータのうちの、観測値が観測される観測確率の観測確率行列を、前記未観測値の観測確率を含むように拡張する拡張処理として、
前記未観測値の観測確率を、ランダムな微小値に初期化し、
前記HMMの各状態において、各観測値が観測される観測確率の総和が1になるように、観測確率を確率化する
処理を行う
請求項３に記載の情報処理装置。
【請求項５】
前記ユニットは、
前記認識結果情報に基づいて、前記学習モデルにおける各状態遷移の頻度の情報である遷移情報を生成する遷移情報管理手段と、
前記学習モデルの複数のモジュールを、その複数のモジュールのHMMパラメータ、及び、前記遷移情報を用いて結合した１個のHMMである結合HMMを構成するHMM構成手段と、
前記結合HMMの任意の状態を、目標状態の候補である目標状態候補として、状態確率が最大の状態である現在状態から、前記目標状態候補までの状態遷移の尤度が最大の、前記結合HMMの状態の系列である最尤状態系列を、前記現在状態から、前記目標状態候補に辿り着くプランとして求めるプランニング手段と
を、さらに有し、
前記ユニットの前記プランニング手段は、
上位層のユニットから供給される、そのユニットで求められた前記プランにおける前記現在状態の次の状態において観測される観測値のうちの、観測確率が閾値以上の１個以上の観測値である前記シンボルそれぞれに対応する状態を、前記目標状態候補として、１個以上の前記目標状態候補それぞれについて、前記最尤状態系列を求め、
１個以上の前記目標状態候補それぞれについての前記最尤状態系列のうちの、状態の数が最小の前記最尤状態系列を、前記プランとして選択し、
下位層のユニットが存在する場合には、前記プランにおける前記現在状態の次の状態において観測される観測値のうちの、観測確率が閾値以上の１個以上の観測値を、下位層のユニットに供給する
請求項３に記載の情報処理装置。
【請求項６】
前記出力制御手段は、あらかじめ設定されたタイミングの前記認識結果情報を、前記出力データとして出力する
請求項１に記載の情報処理装置。
【請求項７】
前記出力制御手段は、あらかじめ設定された間隔ごとの前記認識結果情報を、前記出力データとして出力する
請求項１に記載の情報処理装置。
【請求項８】
前記出力制御手段は、最新の前記認識結果情報が、前回の前記認識結果情報と一致しない場合に、最新の前記認識結果情報を、前記出力データとして出力する
請求項１に記載の情報処理装置。
【請求項９】
前記上位ユニットの前記入力制御手段は、前記下位ユニットからの最新の前記出力データを記憶したときに、固定長の最新の前記出力データの時系列を、前記入力データとして出力する
請求項１に記載の情報処理装置。
【請求項１０】
前記上位ユニットの前記入力制御手段は、前記下位ユニットからの最新の前記出力データを記憶したときに、最新の前記出力データから、異なる値の前記出力データが所定数だけ現れるまで、過去に遡った時点の前記出力データから最新の前記出力データまでを、前記入力データとして出力する
請求項１に記載の情報処理装置。
【請求項１１】
前記認識手段は、前記入力データの認識結果を表す認識結果情報として、前記学習モデルを構成するモジュールのうちの、前記入力データが観測される尤度が最大のモジュールである最大尤度モジュールを表すシンボルを出力する
請求項１に記載の情報処理装置。
【請求項１２】
前記認識手段は、前記入力データの認識結果を表す認識結果情報として、前記学習モデルを構成するモジュールのうちの、前記入力データが観測される尤度が最大のモジュールである最大尤度モジュールを表すシンボルと、前記最大尤度モジュールにおいて、前記入力データが観測される尤度が最大の状態遷移が生じる、前記HMMの状態の系列である最尤状態系列の最後の状態を表すシンボルとの２つのシンボルを出力する
請求項１に記載の情報処理装置。
【請求項１３】
情報処理装置が、
外部から供給される観測値を記憶し、HMM(Hidden Markov Model)を、最小の構成要素であるモジュールとして有する学習モデルに与える入力データとして、前記観測値の時系列を出力する入力制御を行う入力制御手段と、
前記学習モデルを構成する各モジュールについて、前記モジュールにおいて、前記入力データが観測される尤度を求め、
前記尤度に基づいて、前記学習モデルの１つのモジュール、又は、新規のモジュールを、HMMパラメータを更新する対象のモジュールである対象モジュールに決定し、
前記入力データを用いて、前記対象モジュールのHMMパラメータを更新する
モジュール学習処理を行うモジュール学習手段と、
前記学習モデルを用いて、前記入力データを認識し、前記入力データの認識結果を表す認識結果情報を出力する認識手段と
を含み、前記学習モデルを用いた処理を行うモデル処理手段と、
前記認識結果情報を記憶し、外部に出力する出力データとして、前記認識結果情報を出力する出力制御を行う出力制御手段と
を有するユニットを生成し、前記ユニットを、階層構造に接続するステップを含み、
下位層のユニットである下位ユニットの前記出力制御手段は、前記出力データを、前記下位ユニットに接続された上位層のユニットである上位ユニットに出力し、
前記上位ユニットの前記入力制御手段は、前記下位ユニットからの前記出力データを記憶し、前記出力データの時系列を、前記入力データとして出力する
情報処理方法。
【請求項１４】
外部から供給される観測値を記憶し、HMM(Hidden Markov Model)を、最小の構成要素であるモジュールとして有する学習モデルに与える入力データとして、前記観測値の時系列を出力する入力制御を行う入力制御手段と、
前記学習モデルを構成する各モジュールについて、前記モジュールにおいて、前記入力データが観測される尤度を求め、
前記尤度に基づいて、前記学習モデルの１つのモジュール、又は、新規のモジュールを、HMMパラメータを更新する対象のモジュールである対象モジュールに決定し、
前記入力データを用いて、前記対象モジュールのHMMパラメータを更新する
モジュール学習処理を行うモジュール学習手段と、
前記学習モデルを用いて、前記入力データを認識し、前記入力データの認識結果を表す認識結果情報を出力する認識手段と
を含み、前記学習モデルを用いた処理を行うモデル処理手段と、
前記認識結果情報を記憶し、外部に出力する出力データとして、前記認識結果情報を出力する出力制御を行う出力制御手段と
を有するユニットを生成し、前記ユニットを、階層構造に接続する階層処理手段
として、コンピュータを機能させるためのプログラムであり、
下位層のユニットである下位ユニットの前記出力制御手段は、前記出力データを、前記下位ユニットに接続された上位層のユニットである上位ユニットに出力し、
前記上位ユニットの前記入力制御手段は、前記下位ユニットからの前記出力データを記憶し、前記出力データの時系列を、前記入力データとして出力する
プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法、及び、プログラムに関し、特に、モデル化対象に対して適切な規模の学習モデルを得ることができるようにする情報処理装置、情報処理方法、及び、プログラムに関する。
【背景技術】
【０００２】
モデル化の対象であるモデル化対象を、センサでセンシングし、そのセンサが出力するセンサ信号を、観測値として用いて、モデル化（学習モデルの学習）を行う方法としては、センサ信号（観測値）をクラスタリングするk-平均法(k-means clustering method)や、SOM(Self-Organization Map)等がある。
【０００３】
例えば、モデル化対象の、ある状態（内部状態）が、クラスタに対応すると考えると、k-平均法やSOMでは、状態は、センサ信号の信号空間（観測値の観測空間）内に、代表的なベクトルとして配置される。
【０００４】
すなわち、K-平均法の学習では、信号空間内に、適当に、初期値としての代表ベクトル（セントロイドベクトル）が配置される。さらに、各時刻のセンサ信号としてのベクトルを入力データとして、入力データ（ベクトル）が、その入力データとの距離が最も近い代表ベクトルに割り当てられる。そして、各代表ベクトルに割り当てられた入力データの平均ベクトルによって代表ベクトルを更新することが繰り返される。
【０００５】
SOMの学習では、SOMを構成するノードに、適当に、初期値としての代表ベクトルが与えられる。さらに、センサ信号としてのベクトルを入力データとして、入力データとの距離が最も近い代表ベクトルを有するノードが、勝者ノード(winner)に決定される。そして、勝者ノードを含む近傍のノードの代表ベクトルが、勝者ノードに近いノードの代表ベクトルほど、入力データの影響を受けるように更新される競合近傍学習が行われる（非特許文献１）。
【０００６】
SOMと関連する研究は非常に多く、状態（代表ベクトル）を逐次的に増やしながら学習するGrowing Gridと呼ばれる学習方法なども提案されている（非特許文献２）。
【０００７】
上述のk-平均法やSOM等の学習では、センサ信号の信号空間内に、状態（代表ベクトル）が配置されるだけで、状態の遷移の情報（どのように状態が遷移するかの情報）は、獲得されない。
【０００８】
さらに、状態の遷移の情報を獲得しないために、パーセプチャルエイリアシング(perceptual aliasing)と呼ばれる問題、すなわち、モデル化対象の状態が異なるにもかかわらず、モデル化対象から観測されるセンサ信号が同じ場合に、これを区別することができないという問題を扱うことが困難である。
【０００９】
具体的には、例えば、カメラを備えた移動型ロボットが、カメラを通して風景画像をセンサ信号として観測する場合に、同じ風景画像が観測される場所が環境中に複数個所あると、それらを区別することはできないという問題が発生する。
【００１０】
一方、モデル化対象から観測されるセンサ信号を時系列データとして扱い、その時系列データを用いて、モデル化対象を、状態および状態遷移を合わせ持つ確率モデルとして学習する方法として、HMM(Hidden Markov Model)の利用が提案されている。
【００１１】
HMMは、音声認識に広く利用されるモデルの一つであり、状態が遷移する確率を表す状態遷移確率や、各状態において、状態が遷移するときに、ある観測値が観測される観測確率となる確率密度を表す出力確率密度関数等で定義される状態遷移モデルである（非特許文献３）。
【００１２】
HMMのパラメータ、すなわち、状態遷移確率や出力密度関数等は、尤度を最大化するように推定される。HMMのパラメータ（モデルパラメータ）の推定方法としては、Baum-Welchの再推定法(Baum-Welch algorithm）が広く利用されている。
【００１３】
HMMは、各状態から状態遷移確率を介して別の状態へ遷移することができる状態遷移モデルであり、HMMによれば、モデル化対象（から観測されるセンサ信号）が、状態が遷移する過程として、モデル化される。
【００１４】
但し、HMMでは、通常、観測されるセンサ信号がどの状態に対応するのかについては、確率的にしか決定されない。そこで、観測されるセンサ信号に基づいて、最も尤度が高くなる状態遷移過程、つまり、尤度を最大化する状態の系列（最尤状態系列）（以下、最尤パスともいう）を決定する方法として、ビタビ法(Viterbi Algorithm)が広く利用されている。
【００１５】
ビタビ法によれば、各時刻のセンサ信号に応じた状態を、最尤パスに沿って、一意に確定することが可能である。
【００１６】
HMMによれば、モデル化対象から観測されるセンサ信号が、異なる状況（状態）で同じになったとしても、そのときの時刻の前後におけるセンサ信号の時間変化の過程の違いに応じて、同じセンサ信号を、異なる状態遷移過程として扱うことができる。
【００１７】
なお、HMMでは、パーセプチャルエイリアシングの問題を完全に解決することができるわけではないが、同じセンサ信号に対して異なる状態を割り当てることが可能であり、SOMなどに比べると、モデル化対象を、より詳細にモデル化することが可能である。
【００１８】
ところで、HMMの学習では、状態の数、及び状態遷移の数が多くなると、パラメータを、適切に（正しく）推定することが困難となる。
【００１９】
特に、Baum-Welchの再推定法は、最適なパラメータを決定することを、必ずしも保証する方法ではないため、パラメータの数が多くなると、適切なパラメータを推定するのが極めて困難となる。
【００２０】
また、モデル化対象が、未知の対象である場合、HMMの構造やパラメータの初期値を適切に設定することは難しく、これも、適切なパラメータの推定を困難にする原因となる。
【００２１】
音声認識においてHMMが有効に利用されているのは、扱うセンサ信号が音声信号に限定されていること、音声に関する数多くの知見が利用可能であること、音声を適切にモデル化するHMMの構造に関しては、left-to-right型の構造が有効であること、等が長年に渡る膨大な研究成果の結果として得られていること等が大きな要因である。
【００２２】
したがって、モデル化対象が、未知の対象であり、HMMの構造や初期値をあらかじめ決定するための情報が与えられない場合に、大規模なHMMを、実用的なモデルとして機能させることは非常に難しい問題である。
【００２３】
なお、HMMの構造をあらかじめ与えるのではなく、HMMの構造そのものを決定する方法が提案されている（非特許文献４）。
【００２４】
非特許文献４に記載の方法では、HMMの状態の数や、状態遷移の数を１つずつ増やしていき、そのつどパラメータの推定を行い、赤池情報量基準（AICと呼ばれる）と呼ばれる評価基準を用いて、HMMを評価するということを繰り返しながら、HMMの構造が決定される。
【００２５】
非特許文献４に記載の方法は、音素モデルのような小規模なHMMに応用されている。
【００２６】
しかしながら、非特許文献４に記載の方法は、大規模なHMMのパラメータの推定を行うことを考慮した方法ではないため、複雑なモデル化対象を適切にモデル化することは困難である。
【００２７】
すなわち、一般に、HMMの構造に関して、１つずつ状態と状態遷移を追加する修正を行うだけでは、評価基準が単調に改善されることは、必ずしも保証されない。
【００２８】
したがって、大規模なHMMで表現される複雑なモデル化対象について、非特許文献４に記載の方法を用いても、適切なHMMの構造が決定されるとは限らない。
【００２９】
複雑なモデル化対象については、小規模なHMMを、最小の構成要素であるモジュールとして、モジュールの集合体（モジュールネットワーク）の全体最適化学習を行う学習方法が提案されている（特許文献１、並びに、非特許文献５及び６）。
【００３０】
特許文献１、及び、非特許文献５に記載の方法では、各ノードに小規模なHMMを割り当てたSOMを、学習モデルとして用い、競合近傍学習が行われる。
【００３１】
特許文献１、及び、非特許文献５に記載の学習モデルは、SOMのクラスタリングの能力と、HMMの時系列データの構造化の特徴とを備えたモデルであるが、SOMのノード数（モジュール数）を、あらかじめ設定する必要があり、モデル化対象の規模が事前に知りえない場合には、適用が難しい。
【００３２】
また、非特許文献６に記載の方法では、HMMを、モジュールとして、複数のモジュールの競合学習が行われる。すなわち、非特許文献６に記載の方法では、既定数のHMMのモジュールを用意しておき、入力データに対して、各モジュールの尤度が算出される。そして、最大の尤度が得られるモジュール（勝者）のHMMに対して、入力データを与えて学習が行われる。
【００３３】
非特許文献６に記載の方法も、特許文献１、及び、非特許文献５に記載の方法と同様に、モジュール数をあらかじめ設定する必要があり、モデル化対象の規模が事前に知りえない場合には、適用が難しい。
【先行技術文献】
【特許文献】
【００３４】
【特許文献１】特開2008-276290号公報
【非特許文献】
【００３５】
【非特許文献１】T.コホネン、「自己組織化マップ」（シュプリンガー・フェアラーク東京）
【非特許文献２】B. Fritzke, "Growing Grid - a self-organizing network with constant neighborhood range and adaptation strength", Neural Processing Letters (1995), Vol.2, No. 5, page 9-13
【非特許文献３】L. Rabiner, B. Juang, “An introduction to hidden Markov models”, ASSP Magazine, IEEE, Jan 1986,Volume: 3, Issue: 1, Part 1, pp. 4- 16
【非特許文献４】池田 思朗、「HMMの構造探索による音素モデルの生成」、電子情報通信学会論文誌D-II, Vol.J78-D-II, No.1, pp.10-18, January 1995
【非特許文献５】Panu Somervuo, "Competing Hidden Markov Models on the Self-Organizing Map," ijcnn,pp.3169, IEEE-INNS-ENNS International Joint Conference on Neural Networks (IJCNN'00)-Volume 3, 2000
【非特許文献６】R. B. Chinnam, P. Baruah, “Autonomous Diagnostics and Prognostics Through Competitive Learning Driven HMM-Based Clustering”, Proceedings of the International Joint Conference on  Neural Networks, 20-24 July 2003, On page(s): 2466- 2471 vol.4
【発明の概要】
【発明が解決しようとする課題】
【００３６】
従来の学習方法では、モデル化対象の規模が事前に知りえない場合に、特に、例えば、大規模なモデル化対象に対して適切な規模の学習モデルを得ることが困難であった。
【００３７】
本発明は、このような状況に鑑みてなされたものであり、モデル化対象の規模が事前に知りえない場合であっても、モデル化対象に対して適切な規模の学習モデルを得ることができるようにするものである。
【課題を解決するための手段】
【００３８】
本発明の一側面の情報処理装置、又は、プログラムは、外部から供給される観測値を記憶し、HMM(Hidden Markov Model)を、最小の構成要素であるモジュールとして有する学習モデルに与える入力データとして、前記観測値の時系列を出力する入力制御を行う入力制御手段と、前記学習モデルを構成する各モジュールについて、前記モジュールにおいて、前記入力データが観測される尤度を求め、前記尤度に基づいて、前記学習モデルの１つのモジュール、又は、新規のモジュールを、HMMパラメータを更新する対象のモジュールである対象モジュールに決定し、前記入力データを用いて、前記対象モジュールのHMMパラメータを更新するモジュール学習処理を行うモジュール学習手段と、前記学習モデルを用いて、前記入力データを認識し、前記入力データの認識結果を表す認識結果情報を出力する認識手段とを含み、前記学習モデルを用いた処理を行うモデル処理手段と、前記認識結果情報を記憶し、外部に出力する出力データとして、前記認識結果情報を出力する出力制御を行う出力制御手段とを有するユニットを生成し、前記ユニットを、階層構造に接続する階層処理手段を備え、下位層のユニットである下位ユニットの前記出力制御手段は、前記出力データを、前記下位ユニットに接続された上位層のユニットである上位ユニットに出力し、前記上位ユニットの前記入力制御手段は、前記下位ユニットからの前記出力データを記憶し、前記出力データの時系列を、前記入力データとして出力する情報処理装置、又は、情報処理装置として、コンピュータを機能させるためのプログラムである。
【００３９】
本発明の一側面の情報処理方法は、情報処理装置が、外部から供給される観測値を記憶し、HMM(Hidden Markov Model)を、最小の構成要素であるモジュールとして有する学習モデルに与える入力データとして、前記観測値の時系列を出力する入力制御を行う入力制御手段と、前記学習モデルを構成する各モジュールについて、前記モジュールにおいて、前記入力データが観測される尤度を求め、前記尤度に基づいて、前記学習モデルの１つのモジュール、又は、新規のモジュールを、HMMパラメータを更新する対象のモジュールである対象モジュールに決定し、前記入力データを用いて、前記対象モジュールのHMMパラメータを更新するモジュール学習処理を行うモジュール学習手段と、前記学習モデルを用いて、前記入力データを認識し、前記入力データの認識結果を表す認識結果情報を出力する認識手段とを含み、前記学習モデルを用いた処理を行うモデル処理手段と、前記認識結果情報を記憶し、外部に出力する出力データとして、前記認識結果情報を出力する出力制御を行う出力制御手段とを有するユニットを生成し、前記ユニットを、階層構造に接続するステップを含み、下位層のユニットである下位ユニットの前記出力制御手段は、前記出力データを、前記下位ユニットに接続された上位層のユニットである上位ユニットに出力し、前記上位ユニットの前記入力制御手段は、前記下位ユニットからの前記出力データを記憶し、前記出力データの時系列を、前記入力データとして出力する情報処理方法である。
【００４０】
以上のような一側面においては、外部から供給される観測値を記憶し、HMM(Hidden Markov Model)を、最小の構成要素であるモジュールとして有する学習モデルに与える入力データとして、前記観測値の時系列を出力する入力制御を行う入力制御手段と、前記学習モデルを用いた処理を行うモデル処理手段と、前記認識結果情報を記憶し、外部に出力する出力データとして、前記認識結果情報を出力する出力制御を行う出力制御手段とを有するユニットが生成され、前記ユニットが、階層構造に接続される。そして、下位層のユニットである下位ユニットの前記出力制御手段では、前記出力データが、前記下位ユニットに接続された上位層のユニットである上位ユニットに出力され、前記上位ユニットの前記入力制御手段では、前記下位ユニットからの前記出力データが記憶され、前記出力データの時系列が、前記入力データとして出力される。
【００４１】
なお、情報処理装置は、独立した装置であっても良いし、１つの装置を構成している内部ブロックであっても良い。
【００４２】
また、プログラムは、伝送媒体を介して伝送することにより、又は、記録媒体に記録して、提供することができる。
【発明の効果】
【００４３】
本発明の一側面によれば、モデル化対象に対して適切な規模の学習モデルを得ることができる。特に、例えば、大規模なモデル化対象に対して、適切な学習モデルを、容易に得ることができる。
【図面の簡単な説明】
【００４４】
【図１】本発明の情報処理装置を適用した学習装置の第１実施の形態の構成例を示すブロック図である。
【図２】観測時系列バッファ１２からモジュール学習部１３に供給される観測値の時系列を説明する図である。
【図３】HMMの例を示す図である。
【図４】音声認識で利用されるHMMの例を示す図である。
【図５】スモールワールドネットワークの例を示す図である。
【図６】ACHMMの例を示す図である。
【図７】ACHMMの学習（モジュール学習）の概要を説明する図である。
【図８】モジュール学習部１３の構成例を示すブロック図である。
【図９】モジュール学習処理を説明するフローチャートである。
【図１０】対象モジュールの決定の処理を説明するフローチャートである。
【図１１】既存モジュール学習処理を説明するフローチャートである。
【図１２】新規モジュール学習処理を説明するフローチャートである。
【図１３】ガウス分布G1ないしG3のそれぞれに従う観測値の例を示す図である。
【図１４】ガウス分布G1ないしG3をアクティベートするタイミングの例を示す図である。
【図１５】シミュレーションの結果得られる、係数coef_th_new、及び、平均ベクトル間距離Hと、学習後のACHMMを構成するモジュール数との関係を示す図である。
【図１６】学習後のACHMMのモジュール数が、3ないし5個になる場合の、係数coef_th_new、及び、平均ベクトル間距離Hを示す図である。
【図１７】モジュール学習処理を説明するフローチャートである。
【図１８】既存モジュール学習処理を説明するフローチャートである。
【図１９】新規モジュール学習処理を説明するフローチャートである。
【図２０】認識部１４の構成例を示すブロック図である。
【図２１】認識処理を説明するフローチャートである。
【図２２】遷移情報管理部１５の構成例を示すブロック図である。
【図２３】遷移情報管理部１５が遷移情報を生成する遷移情報生成処理を説明する図である。
【図２４】遷移情報生成処理を説明するフローチャートである。
【図２５】HMM構成部１７の構成例を示すブロック図である。
【図２６】HMM構成部１７による結合HMMの構成の方法を説明する図である。
【図２７】HMM構成部１７による、結合HMMのHMMパラメータを求める方法の具体例を説明する図である。
【図２８】学習装置を適用したエージェントの第１実施の形態の構成例を示すブロック図である。
【図２９】アクションコントローラ８２が、アクション関数を求める学習の処理を説明するフローチャートである。
【図３０】アクション制御処理を説明するフローチャートである。
【図３１】プランニング処理を説明するフローチャートである。
【図３２】エージェントによるACHMMの学習の概要を説明する図である。
【図３３】エージェントによる結合HMMの再構成の概要を説明する図である。
【図３４】エージェントによるプランニングの概要を説明する図である。
【図３５】移動環境内を移動するエージェントによるACHMMの学習と、結合HMMの再構成との例を示す図である。
【図３６】移動環境内を移動するエージェントによるACHMMの学習と、結合HMMの再構成との他の例を示す図である。
【図３７】移動環境内を、エージェントが移動した場合に、ACHMMを用いた認識によって得られる、最大尤度モジュールのインデクスの時系列を示す図である。
【図３８】下位ACHMMと上位ACHMMとを階層構造に接続した、２階層の階層構造のACHMMを説明する図である。
【図３９】エージェントの移動環境の例を示す図である。
【図４０】本発明の情報処理装置を適用した学習装置の第２実施の形態の構成例を示すブロック図である。
【図４１】ACHMM階層処理部１０１の構成例を示すブロック図である。
【図４２】ACHMMユニット１１１ｈのACHMM処理部１２２の構成例を示すブロック図である。
【図４３】出力制御部１２３による出力データの出力制御の第１の出力制御方法を説明する図である。
【図４４】出力制御部１２３による出力データの出力制御の第２の出力制御方法を説明する図である。
【図４５】下位ユニット１１１ｈが、タイプ１、及び２のそれぞれの認識結果情報を、出力データとして出力する場合の、上位ユニット１１１ｈ＋１のHMMの状態の粒度を説明する図である。
【図４６】入力制御部１２１による入力データの入力制御の第１の入力制御方法を説明する図である。
【図４７】入力制御部１２１による入力データの入力制御の第２の入力制御方法を説明する図である。
【図４８】ACHMMのモジュールであるHMMの観測確率の拡張を説明する図である。
【図４９】ユニット生成処理を説明するフローチャートである。
【図５０】ユニット学習処理を説明するフローチャートである。
【図５１】学習装置を適用したエージェントの第２実施の形態の構成例を示すブロック図である。
【図５２】最下位層以外の第h階層のACHMMユニット２００ｈの構成例を示すブロック図である。
【図５３】最下位層のACHMMユニット２００１の構成例を示すブロック図である。
【図５４】目標状態指定ユニット２００ｈのプランニング部２２１ｈが行うアクション制御処理を説明するフローチャートである。
【図５５】中間層ユニット２００ｈのプランニング部２２１ｈが行うアクション制御処理を説明するフローチャートである。
【図５６】最下位層ユニット２００１のプランニング部２２１１が行うアクション制御処理を説明するフローチャートである。
【図５７】階層ACHMMが、３階層のACHMMユニット#1，#2、及び、#3で構成される場合の、各階層のACHMMを模式的に示す図である。
【図５８】モジュール学習部１３が行うモジュール学習処理の他の例を説明するフローチャートである。
【図５９】サンプル保存処理を説明するフローチャートである。
【図６０】対象モジュールの決定の処理を説明するフローチャートである。
【図６１】仮学習処理を説明するフローチャートである。
【図６２】ACHMMのエントロピーの算出処理を説明するフローチャートである。
【図６３】事後確率に基づく対象モジュールの決定の処理を説明するフローチャートである。
【図６４】本発明の情報処理装置を適用した学習装置の第３実施の形態の構成例を示すブロック図である。
【図６５】モジュール追加アーキテクチャ型学習モデルのモジュールとなる時系列パターン記憶モデルとしてのRNNの例を示す図である。
【図６６】モジュール学習部３１０が行うモジュール追加アーキテクチャ型学習モデルθの学習の処理（モジュール学習処理）を説明するフローチャートである。
【図６７】本発明を適用したコンピュータの一実施の形態の構成例を示すブロック図である。
【発明を実施するための形態】
【００４５】
＜第１実施の形態＞
【００４６】
［学習装置の構成例］
【００４７】
図１は、本発明の情報処理装置を適用した学習装置の第１実施の形態の構成例を示すブロック図である。
【００４８】
図１において、学習装置は、モデル化対象から観測される観測値に基づき、モデル化対象の確率統計的な動特性を与える学習モデルを学習する（モデル化を行う）。
【００４９】
なお、ここでは、学習装置は、モデル化対象に対する事前知識を持っていないこととするが、事前知識を持っていても良い。
【００５０】
学習装置は、センサ１１、観測時系列バッファ１２、モジュール学習部１３、認識部１４、遷移情報管理部１５、ACHMM記憶部１６、及び、HMM構成部１７を含む。
【００５１】
センサ１１は、各時刻に、モデル化対象をセンシングし、モデル化対象から観測されるセンサ信号である観測値を、時系列に出力する。
【００５２】
観測時系列バッファ１２は、センサ１１が出力する観測値の時系列を一時記憶する。観測時系列バッファ１２に記憶された観測値の時系列は、モジュール学習部１３、及び、認識部１４に、逐次供給される。
【００５３】
なお、観測時系列バッファ１２は、少なくとも、後述するウインドウ長Wの観測値を記憶するだけの記憶容量を有し、その記憶容量分の観測値を記憶した後は、最も古い観測値を消去して、新たな観測値を記憶する。
【００５４】
モジュール学習部１３は、観測時系列バッファ１２から逐次供給される観測値の時系列を用いて、ACHMM記憶部１６に記憶された、HMM(Hidden Markov Model)を、最小の構成要素であるモジュールとして有する学習モデルである、後述するACHMM(Additive Competitive Hidden Markov Model)の学習（モジュール学習）を行う。
【００５５】
認識部１４は、ACHMM記憶部１６に記憶されたACHMMを用い、観測時系列バッファ１２から逐次供給される観測値の時系列を認識（識別）し、その認識結果を表す認識結果情報を出力する。
【００５６】
認識部１４が出力する認識結果情報は、遷移情報管理部１５に供給される。なお、認識結果情報は、（学習装置の）外部に出力することもできる。
【００５７】
遷移情報管理部１５は、認識部１４からの認識結果情報に基づいて、ACHMM記憶部１６に記憶されたACHMMにおける各状態遷移の頻度の情報である遷移情報を生成し、ACHMM記憶部１６に供給する。
【００５８】
ACHMM記憶部１６は、HMMを、最小の構成要素であるモジュールとして有する学習モデルであるACHMM（のモデルパラメータ）を記憶する。
【００５９】
ACHMM記憶部１６に記憶されたACHMMは、モジュール学習部１３、認識部１４、及び、遷移情報管理部１５によって、必要に応じて参照される。
【００６０】
なお、ACHMMのモデルパラメータには、ACHMMを構成するモジュールであるHMMのモデルパラメータ（HMMパラメータ）と、遷移情報管理部１５が生成する遷移情報とが含まれる。
【００６１】
HMM構成部１７は、ACHMM記憶部１６に記憶されたACHMMから、（ACHMMを構成するモジュールであるHMMより）大規模なHMM（以下、結合HMMともいう）を構成（再構成）する。
【００６２】
すなわち、HMM構成部１７は、ACHMM記憶部１６に記憶されたACHMMを構成する複数のモジュールを、その複数のモジュールであるHMMのHMMパラメータ、及び、ACHMM記憶部１６に記憶された遷移情報を用いて結合し、これにより、１個のHMMである結合HMMを構成する。
【００６３】
［観測値］
【００６４】
図２は、図１の観測時系列バッファ１２からモジュール学習部１３（及び、認識部１４）に供給される観測値の時系列を説明する図である。
【００６５】
上述したように、センサ１１（図１）は、モデル化対象（環境、システム、事象等）から観測されるセンサ信号である観測値を、時系列に出力し、その観測値の時系列が、観測時系列バッファ１２からモジュール学習部１３に供給される。
【００６６】
いま、センサ１１が、時刻tの観測値otを出力したとすると、観測時系列バッファ１２からモジュール学習部１３には、固定長Wの、時刻tにおいて最新の観測値の時系列、すなわち、時刻tから過去W時刻分の観測値の時系列である時系列データOt={ot-W+1,・・・,ot}が供給される。
【００６７】
ここで、モジュール学習部１３に供給される時系列データOtの長さW（以下、ウインドウ長Wともいう）は、モデル化対象の動特性を、どれくらいの時間粒度で確率統計的な状態遷移モデル（ここでは、HMM）として状態分割するかの指標であり、あらかじめ設定される。
【００６８】
図２では、ウインドウ長Wは、5になっている。ウインドウ長Wは、ACHMMのモジュールであるHMMの状態の数の1.5ないし2倍程度の値に設定するのが適切であると思われ、例えば、HMMの状態の数が、9である場合、ウインドウ長Wとしては、15等を採用することができる。
【００６９】
なお、センサ１１が出力する観測値は、連続値をとるベクトル（１次元のベクトル(スカラ値）を含む）であっても良いし、離散値をとるシンボルであっても良い。
【００７０】
観測値が、ベクトル（観測ベクトル）である場合、ACHMMのモジュールとしてのHMMとしては、観測値が観測される確率密度を、パラメータ（HMMパラメータ）として有する連続HMMが採用される。また、観測値が、シンボルである場合、ACHMMのモジュールとしてのHMMとしては、観測値が観測される確率を、HMMパラメータとして有する離散HMMが採用される。
【００７１】
［ACHMM］
【００７２】
次に、ACHMMについて説明するが、その前に、ACHMMのモジュールであるHMMについて、簡単に説明する。
【００７３】
図３は、HMMの例を示す図である。
【００７４】
HMMは、状態と状態遷移とで構成される状態遷移モデルである。
【００７５】
図３のHMMは、３つの状態s1,s2,s3を有するHMMであり、図３において、丸印は、状態を表し、矢印は、状態遷移を表す。
【００７６】
HMMは、状態遷移確率aij、各状態sjにおける観測確率bi(x)、及び、各状態siの初期（状態）確率πiによって定義される。
【００７７】
状態遷移確率aijは、状態siから状態sjへの状態遷移が生じる確率を表し、初期確率πiは、最初に、状態siにいる確率を表す。
【００７８】
観測確率bj(x)は、状態sjにおいて、観測値xが観測される確率を表す。観測確率bi(o)としては、観測値xが離散値（シンボル）である場合（HMMが離散HMMである場合）には、確率となる値が用いられるが、観測値xが連続値（ベクトル）である場合（HMMが連続HMMである場合）には、確率密度関数が用いられる。
【００７９】
観測確率bj(x)となる確率密度関数（以下、出力確率密度関数ともいう）としては、例えば、混合正規確率分布が用いられる。出力確率密度関数（観測確率）bj(x)として、例えば、ガウス分布の混合分布を採用することとすると、出力確率密度関数bj(x)は、式（１）で表される。
【００８０】
【数１】
2011059817.tif 000003
・・・（１）
【００８１】
ここで、式（１）において、N[x,μjk,Σjk]は、観測値xが、D次元のベクトルであるとすると、平均ベクトルが、D次元のベクトルμjkで表され、共分散行列が、D行×D列の行列Σjkで表されるガウス分布を表す。
【００８２】
また、Vは、混合するガウス分布の総数（混合数）を表し、cjkは、V個のガウス分布を混合するときの、k番目のガウス分布N[x,μjk,Σjk]の重み係数（混合重み係数）を表す。
【００８３】
HMMを定義する状態遷移確率aij、出力確率密度関数（観測確率）bi(x)、及び、初期確率πiが、HMMのパラメータ（HMMパラメータ）であり、以下、HMMパラメータを、λ={aij，bi(x)，πi，i=1,2,・・・,N，j=1,2,・・・,N}と表す。なお、Nは、HMMの状態の数（状態数）を表す。
【００８４】
HMMパラメータの推定、すなわち、HMMの学習は、一般に、前述の非特許文献３等に記載されているBaum-Welch algorithm（Baum-Welchの再推定法）に従って行われる。
【００８５】
Baum-Welch algorithmは、EM algorithmに基づくパラメータ推定方法であり、時系列データx=x1,x2,・・・,xTに基づき、その時系列データxがHMMから観測（生起）される生起確率から求まる対数尤度を最大化するように、HMMパラメータλが推定される。
【００８６】
ここで、時系列データx=x1,x2,・・・,xTにおけるxtは、時刻tの観測値を表し、Tは、時系列データの長さ（時系列データを構成する観測値xtの数）を表す。
【００８７】
なお、Baum-Welch algorithmは、対数尤度を最大化するパラメータの推定方法ではあるが、最適性を保証するものではなく、HMMの構造（HMMの状態数や、可能な状態遷移）や、HMMパラメータの初期値によっては、HMMパラメータが、局所解に収束してしまう問題が発生する。
【００８８】
HMMは、音声認識で広く利用されているが、音声認識で利用されるHMMは、状態数や状態遷移等が、あらかじめ調整される場合が多い。
【００８９】
図４は、音声認識で利用されるHMMの例を示す図である。
【００９０】
図４のHMMは、状態遷移として、自己遷移と、いまの状態よりも右側の状態への状態遷移だけが許されるleft-to-right型と呼ばれるHMMである。
【００９１】
図４のHMMは、図３のHMMと同様に、３個の状態s1ないしs3を有するが、状態遷移としては、自己遷移と、いまの状態の右隣の状態への状態遷移のみを許す構造に制約されている。
【００９２】
ここで、上述の図３のHMMでは、状態遷移に制約がなく、任意の状態への状態遷移が可能であるが、このような、任意の状態への状態遷移が可能なHMMは、エルゴディックHMM（エルゴディック型のHMM）と呼ばれる。
【００９３】
モデル化対象によっては、HMMの状態遷移を、一部の状態遷移だけに制約しても、（適切な）モデル化を行うことができるかもしれないが、ここでは、モデル化対象の規模等の事前知識、すなわち、モデル化対象にとって適切な状態数や、状態遷移の制約のかけ方等のHMMの構造を決定するための情報が分からないことがあることを考慮して、そのような情報は、一切、与えられないこととする。
【００９４】
この場合、モデル化対象のモデル化には、構造の自由度が最も高いエルゴディック型のHMMを採用することが望ましい。
【００９５】
しかしながら、エルゴディック型のHMMは、状態数が多くなると、HMMパラメータの推定が困難となる。
【００９６】
例えば、状態数が1000個である場合、状態遷移の数は100万通りとなり、状態遷移確率として、100万個の確率を推定することが必要となる。
【００９７】
したがって、モデル化対象を適切に（精度良く）モデル化するのに必要なHMMの状態数が多い場合には、HMMパラメータの推定に、膨大な計算コストを要し、その結果、HMMの学習が困難となる。
【００９８】
そこで、図１の学習装置では、モデル化対象のモデル化に用いる学習モデルとして、HMMそのものではなく、HMMを、モジュールとして有するACHMMを採用する。
【００９９】
ACHMMは、「自然界の現象の殆どは、スモールワールドネットワークによって表現可能である」という仮説に基づく学習モデルである。
【０１００】
図５は、スモールワールドネットワークの例を示す図である。
【０１０１】
スモールワールドネットワークは、繰り返し利用可能な局所的に構造化されたネットワーク（スモールワールド）と、そのスモールワード（局所構造）間を繋ぐ疎なネットワークとで構成される。
【０１０２】
ACHMMでは、モデル化対象の確率統計的な動特性を与える状態遷移モデルのモデルパラメータの推定を、大規模なエルゴディックHMMで行うのではなく、スモールワールドネットワークの局所構造に相当するモジュール（モジュラ状態遷移モデル）である小規模な（状態数の少ない）HMMで行う。
【０１０３】
さらに、ACHMMでは、スモールワールドネットワークの局所構造間を繋ぐネットワークに相当する、局所構造間に亘る遷移（状態遷移）に関するモデルパラメータとして、モジュール間の状態の遷移の頻度等が求められる。
【０１０４】
図６は、ACHMMの例を示す図である。
【０１０５】
ACHMMは、HMMを、最小の構成要素であるモジュールとして有する。
【０１０６】
ACHMMでは、モジュールとしてのHMMを構成する状態どうしの間の状態遷移（状態間遷移）（HMMの状態遷移）の他に、あるモジュールの状態と、そのモジュールを含む任意のモジュールの状態との間の状態遷移（モジュール状態間遷移）、及び、あるモジュール（の任意の状態）と、そのモジュールを含む任意のモジュール（の任意の状態）との間の状態遷移（モジュール間遷移）の、合計で、３種類の状態遷移が考えられる。
【０１０７】
なお、あるモジュールのHMMの状態遷移は、あるモジュールの状態と、そのモジュールの状態との間の状態遷移であるので、以下では、必要に応じて、モジュール状態間遷移に含めることとする。
【０１０８】
モジュールとなるHMMとしては、小規模なHMMが採用される。
【０１０９】
大規模なHMM、つまり、状態数、及び、状態遷移の数が大のHMMでは、HMMパラメータの推定に、膨大な計算コストを要し、また、モデル化対象を適切に表現する精度の良いHMMパラメータの推定が困難となる。
【０１１０】
モジュールとなるHMMとして、小規模なHMMを採用し、そのようなモジュールの集合であるACHMMを、モデル化対象をモデル化する学習モデルに採用することで、大規模なHMMを学習モデルに採用する場合に比較して、計算コストを低減し、かつ、精度の良いHMMパラメータを推定することができる。
【０１１１】
図７は、ACHMMの学習（モジュール学習）の概要を説明する図である。
【０１１２】
ACHMMの学習（モジュール学習）では、各時刻tの、例えば、ウインドウ長Wの時系列データOtを、学習に用いる学習データとして、学習データOtに対して、競合学習メカニズムにより、最適な１つのモジュールが、ACHMMを構成するモジュールの中から選択される。
【０１１３】
そして、ACHMMを構成するモジュールの中から選択された１つのモジュール、又は、新規のモジュールが、HMMパラメータを更新する対象のモジュールである対象モジュールに決定され、その対象モジュールの追加学習が、逐次行われる。
【０１１４】
したがって、ACHMMの学習では、ACHMMを構成する１つのモジュールの追加学習が行われる場合もあるし、新規のモジュール（新規モジュール）が生成され、その新規モジュールの追加学習が行われる場合もある。
【０１１５】
なお、ACHMMの学習時には、遷移情報管理部１５において、後述する遷移情報生成処理が行われ、図６で説明したモジュール状態間遷移の情報（モジュール状態間遷移情報）や、モジュール間遷移の情報（モジュール間遷移情報）といった、ACHMMにおける各状態遷移の頻度の情報である遷移情報も獲得される。
【０１１６】
ACHMMを構成するモジュール(HMM)としては、小規模なHMM（状態数の少ないHMM）が採用される。本実施の形態では、例えば、状態数が９のエルゴディックHMMを採用することとする。
【０１１７】
さらに、本実施の形態では、モジュールとしてのHMMの出力確率密度関数bj(x)として、混合数が１（つまり単一確率密度）のガウス分布を採用し、各状態sjの出力確率密度関数bj(x)としてのガウス分布の共分散行列Σjが、式（２）に示すように、対角成分以外が、すべて０の行列であるとする。
【０１１８】
【数２】
2011059817.tif 000004
・・・（２）
【０１１９】
また、共分散行列Σjの対角成分σ2j1,σ2j2,・・・,σ2jDをコンポーネントとするベクトルを、分散（ベクトル）σ2jというとともに、出力確率密度関数bj(x)としてのガウス分布の平均ベクトルを、ベクトルμjで表すこととすると、HMMパラメータλは、出力確率密度関数bj(x)に代えて、平均ベクトルμi、及び、分散σ2jを用いて、λ={aij，μi，σ2i，πi，i=1,2,・・・,N，j=1,2,・・・,N}で表される。
【０１２０】
ACHMMの学習（モジュール学習）では、このHMMパラメータλ={aij，μi，σ2i，πi，i=1,2,・・・,N，j=1,2,・・・,N}が推定される。
【０１２１】
［モジュール学習部１３の構成例］
【０１２２】
図８は、図１のモジュール学習部１３の構成例を示すブロック図である。
【０１２３】
モジュール学習部１３は、小規模のHMM（モジュラー状態遷移モデル）をモジュールとして有する学習モデルであるACHMMの学習（モジュール学習）を行う。
【０１２４】
モジュール学習部１３によるモジュール学習では、各時刻tの学習データOtに対する、ACHMMを構成する各モジュールの尤度が求められ、尤度が最大のモジュール（以下、最大尤度モジュールともいう）のHMMパラメータを更新する競合学習型の学習（競合学習）、又は、新規モジュールのHMMパラメータを更新するモジュール追加型の学習が、逐次行われるモジュールアーキテクチャが採用される。
【０１２５】
このように、モジュール学習では、競合学習型の学習が行われる場合と、モジュール追加型の学習が行われる場合とが混在するので、本実施の形態では、そのようなモジュール学習の対象となる、HMMをモジュールとして有する学習モデルを、Additive Competitive HMM(ACHMM)と呼んでいる。
【０１２６】
上述のようなモジュールアーキテクチャを採用することにより、大規模な（ゆえにパラメータの推定が困難となる）HMMを用いなければ表現不可能なモデル化対象を、小規模な（ゆえにパラメータの推定が容易な）HMMの集合体であるACHMMで表現することが可能となる。
【０１２７】
また、モジュール学習では、競合学習型の学習の他に、モジュール追加型の学習が行われるので、モデル化対象から観測される観測値の観測空間（センサ１１（図１）が出力するセンサ信号の信号空間）において、実際に観測することができる観測値の範囲が、あらかじめ分かっておらず、ACHMMの学習が進行するにつれて、実際に観測される観測値の範囲が広がっていく場合には、人が経験を積み重ねるように、学習を行うことができる。
【０１２８】
図８において、モジュール学習部１３は、尤度算出部２１、対象モジュール決定部２２、及び、更新部２３を含む。
【０１２９】
尤度計算部２１には、観測時系列バッファ１２に記憶された観測値の時系列が、逐次供給される。
【０１３０】
尤度計算部２１は、観測時系列バッファ１２から逐次供給される観測値の時系列を、学習に用いる学習データとし、ACHMM記憶部１６に記憶されたACHMMを構成する各モジュールについて、モジュールにおいて、学習データが観測される尤度を求め、対象モジュール決定部２２に供給する。
【０１３１】
ここで、時系列データの、先頭からτ番目のサンプルを、oτと表すこととすると、ある長さLの時系列データOは、O={oτ=1，・・・，oτ=L}と表すことができる。
【０１３２】
尤度計算部２１において、HMMであるモジュールλ（HMMパラメータλで定義されるHMM）の、時系列データOに対する尤度P(O|λ)は、いわゆるフォワードアルゴリズム（前向き処理）に従って求められる。
【０１３３】
対象モジュール決定部２２は、尤度計算部２１から供給されるACHMMを構成する各モジュールの尤度に基づいて、ACHMMの１つのモジュール、又は、新規モジュールを、HMMパラメータを更新する対象のモジュールである対象モジュールに決定し、その対象モジュールを表す（特定する）モジュールインデクスを、更新部２３に供給する。
【０１３４】
更新部２３には、学習データ、すなわち、観測時系列バッファ１２から尤度計算部２１に供給されるのと同一の観測値の時系列が、観測時系列バッファ１２から供給される。
【０１３５】
更新部２３は、観測時系列バッファ１２からの学習データを用いて、対象モジュール、すなわち、対象モジュール決定部２２から供給されるモジュールインデクスが表すモジュールのHMMパラメータを更新する学習を行い、更新後のHMMパラメータによって、ACHMM記憶部１６の記憶内容を更新する。
【０１３６】
ここで、更新部２３では、HMMパラメータを更新する学習として、いわゆる追加学習（HMMが既に獲得している（時系列）パターンに、新たな時系列データ（学習データ）を作用させる学習）が行われる。
【０１３７】
更新部２３での追加学習は、一般に、バッチ処理で行われるBaum-Welchアルゴリズムに従ったHMMパラメータの推定の処理を、逐次的に行う処理（オンライン処理）に拡張した処理（以下、逐次学習型Baum-Welchアルゴリズム処理ともいう）によって行われる。
【０１３８】
逐次学習型Baum-Welchアルゴリズム処理では、Baum-Welchアルゴリズム（Baum-Welchの再推定法）において、HMMパラメータλの推定に用いられる内部パラメータであって、学習データから計算される前向き確率αi(τ)、及び、後ろ向き確率βi(τ)を用いて求められる内部パラメータである学習データ内部パラメータρi，νj，ξj，χij、及び、φiと、HMMパラメータの前回の推定に用いられた内部パラメータである前回内部パラメータρiold，νjold，ξjold，χijold、及び、φioldとの重み付け加算によって、HMMパラメータの今回の推定に用いられる新たな内部パラメータρinew，νjnew，ξjnew，χijnew、及び、φinewが求められ、その新たな内部パラメータρinew，νjnew，ξjnew，χijnew、及び、φinewを用いて、対象モジュールのHMMパラメータλが（再）推定される。
【０１３９】
すなわち、更新部２３は、前回内部パラメータρiold，νjold，ξjold，χijold、及び、φiold、つまり、更新前のHMMパラメータλoldの推定に用いた内部パラメータρiold，νjold，ξjold，χijold、及び、φioldを、その推定時に、例えば、ACHMM記憶部１６に記憶させておく。
【０１４０】
さらに、更新部２３は、学習データである時系列データO={oτ=1，・・・，oτ=L}と、更新前のHMMパラメータλoldのHMM(λold)とから、前向き確率αi(τ)、及び、後ろ向き確率βi(τ)を求める。
【０１４１】
ここで、前向き確率αi(τ)は、HMM(λold)において、時系列データo1,o2,・・・,oτが観測され、時刻τに、状態siにいる確率である。
【０１４２】
また、後ろ向き確率βi(τ)は、HMM(λold)において、時刻τに、状態siにいて、その後、時系列データoτ+1，oτ+2，・・・，oLが観測される確率である。
【０１４３】
更新部２３は、前向き確率αi(τ)、及び、後ろ向き確率βi(τ)を求めると、その前向き確率αi(τ)、及び、後ろ向き確率βi(τ)を用いて、式（３）、式（４）、式（５）、式（６）、及び、式（７）にそれぞれ従い、学習データ内部パラメータρi，νj，ξj，χij、及び、φiを求める。
【０１４４】
【数３】
2011059817.tif 000005
・・・（３）
【０１４５】
【数４】
2011059817.tif 000006
・・・（４）
【０１４６】
【数５】
2011059817.tif 000007
・・・（５）
【０１４７】
【数６】
2011059817.tif 000008
・・・（６）
【０１４８】
【数７】
2011059817.tif 000009
・・・（７）
【０１４９】
ここで、式（３）ないし式（７）に従って求められる学習データ内部パラメータρi，νj，ξj，χij、及び、φiは、バッチ処理で行われるBaum-Welchアルゴリズムに従って、HMMパラメータを推定する場合に求められる内部パラメータに一致する。
【０１５０】
その後、更新部２３は、式（８）、式（９）、式（１０）、式（１１）、及び、式（１２）に従った重み付け加算、すなわち、学習データ内部パラメータρi，νj，ξj，χij、及び、φiと、HMMパラメータの前回の推定に用いられ、ACHMM記憶部１６に記憶されている前回内部パラメータρiold，νjold，ξjold，χijold、及び、φioldとの重み付け加算によって、HMMパラメータの今回の推定に用いられる新たな内部パラメータρinew，νjnew，ξjnew，χijnew、及び、φinewを求める。
【０１５１】
【数８】
2011059817.tif 000010
・・・（８）
【０１５２】
【数９】
2011059817.tif 000011
・・・（９）
【０１５３】
【数１０】
2011059817.tif 000012
・・・（１０）
【０１５４】
【数１１】
2011059817.tif 000013
・・・（１１）
【０１５５】
【数１２】
2011059817.tif 000014
・・・（１２）
【０１５６】
ここで、式（８）ないし式（１２）のγは、重み付け加算に用いる重みであり、0以上1以下の値をとる。重みγとしては、HMMが既に獲得している（時系列）パターンに、新たな時系列データ（学習データ）Oを作用させる程度を表す学習率を採用することができる。学習率γの求め方については、後述する。
【０１５７】
更新部２３は、新たな内部パラメータρinew，νjnew，ξjnew，χijnew、及び、φinewを求めた後、その新たな内部パラメータρinew，νjnew，ξjnew，χijnew、及び、φinewを用いて、式（１３）、式（１４）、式（１５）、及び、式（１６）に従い、HMMパラメータλnew={aijnew，μinew，σ2inew，πinew，i=1,2,・・・,N，j=1,2,・・・,N}を求め、HMMパラメータλoldを、HMMパラメータλnewに更新する。
【０１５８】
【数１３】
2011059817.tif 000015
・・・（１３）
【０１５９】
【数１４】
2011059817.tif 000016
・・・（１４）
【０１６０】
【数１５】
2011059817.tif 000017
・・・（１５）
【０１６１】
【数１６】
2011059817.tif 000018
・・・（１６）
【０１６２】
［モジュール学習処理］
【０１６３】
図９は、図８のモジュール学習部１３が行うモジュール学習の処理（モジュール学習処理）を説明するフローチャートである。
【０１６４】
ステップＳ１１において、更新部２３は、初期化処理を行う。
【０１６５】
ここで、更新部２３は、初期化処理において、ACHMMを構成する１個目のモジュール#1として、あらかじめ設定された状態数N（例えば、N=9等）のエルゴディックHMMを生成する。
【０１６６】
すなわち、更新部２３は、モジュール#1であるHMM（エルゴディックHMM）のHMMパラメータλ={aij，μi，σ2i，πi，i=1,2,・・・,N，j=1,2,・・・,N}について、N×N個の状態遷移確率aijに、初期値としての、例えば1/Nをセットするとともに、N個の初期確率πiに、初期値としての、例えば、1/Nをセットする。
【０１６７】
さらに、更新部２３は、N個の平均ベクトルμiに、観測空間中の適当な点の座標（例えば、ランダムな座標）をセットし、N個の分散σ2i（式（２）のσ2j1,σ2j2,・・・,σ2jDをコンポーネントとするD次元のベクトル）に、初期値としての、適当な値（例えば、ランダムな値）をセットする。
【０１６８】
なお、センサ１１が、観測値otを正規化して出力することができる場合、すなわち、センサ１１（図１）が出力する観測値otであるD次元のベクトルのD個のコンポーネントそれぞれが、例えば、0以上1以下の範囲の値に正規化されている場合には、平均ベクトルμiの初期値としては、各コンポーネントが、例えば、0.5等のD次元のベクトルを採用することができる。また、分散σ2iの初期値としては、各コンポーネントが、例えば、0.01等のD次元のベクトルを採用することができる。
【０１６９】
ここで、ACHMMを構成するm個目のモジュールを、モジュール#mともいい、モジュール#mであるHMMのHMMパラメータλを、λmとも記載する。また、本実施の形態では、モジュール#mのモジュールインデクスとして、mを使用することとする。
【０１７０】
更新部２３は、モジュール#1を生成すると、ACHMMを構成するモジュールの総数を表す変数であるモジュール総数Mに、1をセットしするとともに、モジュール#1の学習を行った回数（又は量）を表す（配列）変数である学習回数（又は学習量）Nlearn[m=1]に、初期値としての0をセットする。
【０１７１】
その後、センサ１１から、観測値otが出力され、観測時系列バッファ１２に記憶されると、処理は、ステップＳ１１からステップＳ１２に進み、モジュール学習部１３は、時刻tを、t=1にセットし、処理は、ステップＳ１３に進む。
【０１７２】
ステップＳ１３では、モジュール学習部１３は、時刻tが、ウインドウ長Wに等しいかどうかを判定する。
【０１７３】
ステップＳ１３において、時刻tがウインドウ長Wに等しくないと判定された場合、すなわち、時刻tが、ウインドウ長W未満である場合、センサ１１から、次の観測値otが出力され、観測時系列バッファ１２に記憶されるのを待って、処理は、ステップＳ１４に進む。
【０１７４】
ステップＳ１４では、モジュール学習部１３は、時刻tを1だけインクリメントして、処理は、ステップＳ１３に戻り、以下、同様の処理が繰り返される。
【０１７５】
また、ステップＳ１３において、時刻tがウインドウ長Wに等しいと判定された場合、すなわち、観測時系列バッファ１２に、ウインドウ長W分の観測値の時系列である時系列データOt=W={o1，・・・，oW}が記憶された場合、対象モジュール決定部２２は、1個だけのモジュール#1で構成されるACHMMの、そのモジュール#1を、対象モジュールに決定する。
【０１７６】
そして、対象モジュール決定部２２は、対象モジュールであるモジュール#1を表すモジュールインデクスm=1を、更新部２３に供給し、処理は、ステップＳ１３からステップＳ１５に進む。
【０１７７】
ステップＳ１５では、更新部２３は、対象モジュール決定部２２からのモジュールインデクスm=1が表す対象モジュールであるモジュール#1の学習回数Nlearn[m=1]を、例えば、1だけインクリメントする。
【０１７８】
さらに、ステップＳ１５では、更新部２３は、対象モジュールであるモジュール#1の学習率γを、式γ＝1/(Nlearn[m=1]+1)に従って求める。
【０１７９】
そして、更新部２３は、観測時系列バッファ１２に記憶されたウインドウ長Wの時系列データOt=W={o1，・・・，oW}を、学習データとして、その学習データOt=Wを用い、学習率γ＝1/(Nlearn[m=1]+1)で、対象モジュールであるモジュール#1の追加学習を行う。
【０１８０】
すなわち、更新部２３は、上述した式（３）ないし式（１６）に従って、ACHMM記憶部１６に記憶された、対象モジュールであるモジュール#1のHMMパラメータλm=1を更新する。
【０１８１】
その後、センサ１１から、次の観測値otが出力され、観測時系列バッファ１２に記憶されるのを待って、処理は、ステップＳ１５からステップＳ１６に進む。ステップＳ１６では、モジュール学習部１３は、時刻tを1だけインクリメントして、処理は、ステップＳ１７に進む。
【０１８２】
ステップＳ１７では、尤度算出部２１は、観測時系列バッファ１２に記憶されたウインドウ長Wの最新の時系列データOt={ot-W+1，・・・，ot}を、学習データとし、ACHMM記憶部１６に記憶されたACHMMを構成するすべてのモジュール#1ないし#Mのそれぞれについて、モジュール#mにおいて、学習データOtが観測される尤度（以下、モジュール尤度ともいう）P(Ot|λm)を求める。
【０１８３】
さらに、ステップＳ１７では、尤度算出部２１は、モジュール#1ないし#Mのそれぞれのモジュール尤度P(Ot|λ1)，P(Ot|λ2)，・・・，P(Ot|λM)を、対象モジュール決定部２２に供給して、処理は、ステップＳ１８に進む。
【０１８４】
ステップＳ１８では、対象モジュール決定部２２は、ACHMMを構成するモジュール#1ないし#Mのうちの、尤度算出部２１からのモジュール尤度P(Ot|λm)が最大のモジュールである最大尤度モジュール#m*＝argmaxm[P(Ot|λm)]を求める。
【０１８５】
ここで、argmaxm[]は、インデクス（モジュールインデクス）mに対して変化するかっこ[]内の値を最大にするインデクスm=m*を表す。
【０１８６】
対象モジュール決定部２２は、さらに、尤度算出部２１からのモジュール尤度P(Ot|λm)の最大値である最大尤度（最大対数尤度）（尤度の対数の最大値）maxLP=maxm[log(P(Ot|λm))]を求める。
【０１８７】
ここで、maxm[]は、インデクスmに対して変化するかっこ[]内の値の最大値を表す。
【０１８８】
最大尤度モジュールが、モジュール#m*である場合には、最大対数尤度maxLPは、モジュール#m*のモジュール尤度P(Ot|λm*)の対数となる。
【０１８９】
対象モジュール決定部２２が、最大尤度モジュール#m*、及び、最大対数尤度maxLPを求めると、処理は、ステップＳ１８からステップＳ１９に進み、対象モジュール決定部２２は、最大対数尤度maxLPに基づいて、最大尤度モジュール#m*、又は、新規に生成するHMMである新規モジュールを、HMMパラメータを更新する対象モジュールに決定する、後述する対象モジュールの決定の処理を行う。
【０１９０】
そして、対象モジュール決定部２２は、対象モジュールのモジュールインデクスを、更新部２３に供給し、処理は、ステップＳ１９からステップＳ２０に進む。
【０１９１】
ステップＳ２０では、更新部２３は、対象モジュール決定部２２からのモジュールインデクスが表す対象モジュールが、最大尤度モジュール#m*、又は、新規モジュールのうちのいずれであるかを判定する。
【０１９２】
ステップＳ２０において、対象モジュールが、最大尤度モジュール#m*であると判定された場合、処理は、ステップＳ２１に進み、更新部２３は、最大尤度モジュール#m*のHMMパラメータλm*を更新する既存モジュール学習処理を行う。
【０１９３】
また、ステップＳ２０において、対象モジュールが、新規モジュールであると判定された場合、処理は、ステップＳ２２に進み、更新部２３は、新規モジュールのHMMパラメータを更新する新規モジュール学習処理を行う。
【０１９４】
ステップＳ２１の既存モジュール学習処理、及び、ステップＳ２２の新規モジュール学習処理の後は、いずれも、センサ１１から、次の観測値otが出力され、観測時系列バッファ１２に記憶されるのを待って、処理は、ステップＳ１６に戻り、以下、同様の処理が繰り返される。
【０１９５】
図１０は、図９のステップＳ１９で行われる、対象モジュールの決定の処理を説明するフローチャートである。
【０１９６】
対象モジュールの決定の処理では、ステップＳ３１において、対象モジュール決定部２２（図８）は、最大尤度モジュール#m*の尤度の対数である最大対数尤度maxLPが、例えば、あらかじめ設定された閾値である尤度閾値TH以上であるかどうかを判定する。
【０１９７】
ステップＳ３１において、最大対数尤度maxLPが、尤度閾値TH以上であると判定された場合、すなわち、最大尤度モジュール#m*の尤度の対数である最大対数尤度maxLPが、ある程度大きな値である場合、処理は、ステップＳ３２に進み、対象モジュール決定部２２は、最大尤度モジュール#m*を、対象モジュールに決定し、処理は、リターンする。
【０１９８】
また、ステップＳ３１において、最大対数尤度maxLPが、尤度閾値TH以上でないと判定された場合、すなわち、最大尤度モジュール#m*の尤度の対数である最大対数尤度maxLPが、小さな値である場合、処理は、ステップＳ３３に進み、対象モジュール決定部２２は、新規モジュールを、対象モジュールに決定し、処理は、リターンする。
【０１９９】
図１１は、図９のステップＳ２１で行われる既存モジュール学習処理を説明するフローチャートである。
【０２００】
既存モジュール学習処理では、ステップＳ４１において、更新部２３（図８）は、対象モジュールである最大尤度モジュール#m*の学習回数Nlearn[m*]を、例えば、１だけインクリメントして、処理は、ステップＳ４２に進む。
【０２０１】
ステップＳ４２では、更新部２３は、対象モジュールである最大尤度モジュール#m*の学習率γを、式γ＝1/(Nlearn[m*]+1)に従って求める。
【０２０２】
そして、更新部２３は、観測時系列バッファ１２に記憶されたウインドウ長Wの最新の時系列データOtを、学習データとして、その学習データOtを用い、学習率γ＝1/(Nlearn[m*]+1)で、対象モジュールである最大尤度モジュール#m*の追加学習を行い、処理は、リターンする。
【０２０３】
すなわち、更新部２３は、上述した式（３）ないし式（１６）に従って、ACHMM記憶部１６に記憶された、対象モジュールである最大尤度モジュール#m*のHMMパラメータλm*を更新する。
【０２０４】
図１２は、図９のステップＳ２２で行われる新規モジュール学習処理を説明するフローチャートである。
【０２０５】
新規モジュール学習処理では、ステップＳ５１において、更新部２３（図８）は、ACHMMを構成するM+1個目のモジュール#M+1となる新規モジュールであるHMMを、図９のステップＳ１１の場合と同様にして生成し、その新規モジュール#m=M+1（のHMMパラメータλM+1）を、ACHMMを構成するモジュールとして、ACHMM記憶部１６に記憶させて、処理は、ステップＳ５２に進む。
【０２０６】
ステップＳ５２では、更新部２３は、新規モジュール#m=M+1の学習回数Nlearn[m=M+1]に、初期値としての1をセットし、処理は、ステップＳ５３に進む。
【０２０７】
ステップＳ５３では、更新部２３は、対象モジュールである新規モジュール#m=M+1の学習率γを、式γ＝1/(Nlearn[m=M+1]+1)に従って求める。
【０２０８】
そして、更新部２３は、観測時系列バッファ１２に記憶されたウインドウ長Wの最新の時系列データOtを、学習データとして、その学習データOtを用い、学習率γ＝1/(Nlearn[m=M+1]+1)で、対象モジュールである新規モジュール#m=M+1の追加学習を行う。
【０２０９】
すなわち、更新部２３は、上述した式（３）ないし式（１６）に従って、ACHMM記憶部１６に記憶された、対象モジュールである新規モジュール#m=M+1のHMMパラメータλM+1を更新する。
【０２１０】
その後、処理は、ステップＳ５３からステップＳ５４に進み、更新部２３は、ACHMMを構成するモジュールとして、新規モジュールが生成されたことに伴い、モジュール総数Mを、1だけインクリメントして、処理は、リターンする。
【０２１１】
以上のように、モジュール学習部１３では、逐次供給される観測値の時系列を、学習に用いる学習データとし、HMMを、最小の構成要素であるモジュールとして有するACHMMを構成する各モジュールについて、モジュールにおいて、学習データが観測される尤度を求め、その尤度に基づいて、ACHMMの１つのモジュールとしての最大尤度モジュール、又は、新規モジュールを、HMMパラメータを更新する対象のモジュールである対象モジュールに決定し、学習データを用いて、対象モジュールのHMMパラメータを更新する学習を行うので、モデル化対象の規模等が事前に知りえない場合であっても、モデル化対象に対して適切な規模のACHMMを得ることができる。
【０２１２】
特に、モデル化に、大規模なHMMが必要となるモデル化対象について、その局所構造を、モジュールであるHMMで獲得した、適切な規模（モジュール数）のACHMMを得ることができる。
【０２１３】
［閾値尤度THの設定］
【０２１４】
図１０の対象モジュールの決定の処理では、対象モジュール決定部２２は、最大対数尤度maxLPと、閾値尤度THとの大小関係によって、最大尤度モジュールm*、又は、新規モジュールを、対象モジュールに決定する。
【０２１５】
一般に、閾値による処理の分岐は、閾値をどのような値に設定するかかによって、処理の性能に大きく影響を与える。
【０２１６】
対象モジュールの決定の処理において、閾値尤度THは、新規モジュールを生成するかどうかの判断基準であり、この閾値尤度THが、適切な値でない場合には、ACHMMを構成するモジュールが、過剰に生成され、又は、過度に少なく生成され、モデル化対象に対して適切な規模のACHMMを得ることができないおそれがある。
【０２１７】
すなわち、閾値尤度THが大きすぎる場合には、各状態において観測される観測値の分散が過度に小さいHMMが、過剰に生成されることがある。
【０２１８】
一方、閾値尤度THが小さすぎる場合には、各状態において観測される観測値の分散が過度に大きいHMMが、過度に少なく生成されること、つまり、新規モジュールが、モデル化対象のモデル化に十分な数だけ生成されず、その結果、ACHMMを構成するモジュールの数が、過度に少なくなり、ACHMMを構成するモジュールであるHMMが、各状態において観測される観測値の分散が過度に大きいHMMになることがある。
【０２１９】
そこで、ACHMMの閾値尤度THは、例えば、以下のようにして設定することができる。
【０２２０】
すなわち、ACHMMの閾値尤度THについては、観測空間において、観測値をクラスタリングする粒度（クラスタリング粒度）を、ある所望の粒度にするのに適切な閾値尤度TH（の分布）を、実験経験上求めることができる。
【０２２１】
具体的には、観測値otとしてのベクトルが、コンポーネントどうしの間で独立であり、かつ、学習データとして用いられる観測値の時系列が、異なる時刻の間で独立であると仮定する。
【０２２２】
閾値尤度THは、最大対数尤度maxLPと比較されるから、尤度（確率）の対数（対数尤度）であり、観測値の時系列に対する対数尤度は、上述の独立性を仮定すると、観測値としてのベクトルの次元数D、及び、観測値の時系列の長さ（時系列長）であるウインドウ長Wに対して、線形に変化する。
【０２２３】
したがって、閾値尤度THは、比例定数である所定の係数coef_th_newを用いた、次元数D、及び、ウインドウ長に比例する式TH=coef_th_new×D×Wで表すことができ、係数coef_th_newを決めることによって、閾値尤度THが決まることになる。
【０２２４】
ACHMMにおいて、新規モジュールが、適切に生成されるようにするには、係数coef_th_newを、適切な値に決める必要があり、そのためには、係数coef_th_newと、ACHMMにおいて、新規モジュールが生成される場合との関係が問題となる。
【０２２５】
係数coef_th_newと、ACHMMにおいて、新規モジュールが生成される場合との関係は、以下のようなシミュレーションによって獲得することができる。
【０２２６】
すなわち、シミュレーションでは、例えば、観測空間としての２次元空間内に、分散が1で、互いの平均ベクトルどうしの距離（平均ベクトル間距離）Hが所定の値の、3個のガウス分布G1,G2,G3を想定する。
【０２２７】
観測空間が、２次元空間であるので、観測値の次元数Dは2である。
【０２２８】
図１３は、ガウス分布G1ないしG3のそれぞれに従う観測値の例を示す図である。
【０２２９】
図１３では、平均ベクトル間距離Hが、2,4,6,8,10それぞれのガウス分布G1ないしG3のそれぞれに従う観測値を示してある。
【０２３０】
なお、図１３において、丸（○）印が、ガウス分布G1を、三角（△）印が、ガウス分布G2を、バツ（×）印が、ガウス分布G3を、それぞれ表す。
【０２３１】
ガウス分布G1ないしG3のそれぞれ（に従う観測値）は、平均ベクトル間距離Hが大であるほど、互いに離れた位置に分布する。
【０２３２】
シミュレーションでは、各時刻tに、ガウス分布G1ないしG3のうちの1個のガウス分布だけをアクティベートし、そのアクティベートされたガウス分布に従う観測値を生成する。
【０２３３】
図１４は、ガウス分布G1ないしG3をアクティベートするタイミングの例を示す図である。
【０２３４】
図１４において、横軸は、時刻を表し、縦軸は、アクティベートされるガウス分布を表す。
【０２３５】
図１４によれば、ガウス分布G1ないしG3は、100時刻ごとに、G1,G2,G3,G1,・・・の順で、繰り返しアクティベートされる。
【０２３６】
シミュレーションでは、ガウス分布G1ないしG3を、例えば、図１４に示したようにアクティベートし、例えば、5000時刻分の観測値としての２次元ベクトルの時系列を生成する。
【０２３７】
さらに、シミュレーションでは、ACHMMのモジュールとして、状態数Nが、例えば、1のHMMを採用し、ウインドウ長Wを、例えば、5として、ガウス分布G1ないしG3から生成される5000時刻分の観測値の時系列から、ウインドウ長W=5の時系列データを、学習データとして、１時刻ずつ時刻tをずらしながら逐次抽出し、ACHMMの学習を行う。
【０２３８】
なお、ACHMMの学習は、係数coef_th_newと、平均ベクトル間距離Hとのそれぞれを、適宜変化させて行う。
【０２３９】
図１５は、以上のシミュレーションの結果得られる、係数coef_th_new、及び、平均ベクトル間距離Hと、学習後のACHMMを構成するモジュールの数（モジュール数）(modules)との関係を示す図である。
【０２４０】
なお、図１５には、学習後のACHMMの幾つかについて、各モジュール(HMM)の1個の状態において、観測値が観測される出力確率密度関数としてのガウス分布も、図示してある。
【０２４１】
ここで、シミュレーションでは、1個の状態のHMMを、モジュールとして採用しているので、図１５において、1個のガウス分布は、1個のモジュールに相当する。
【０２４２】
図１５から、係数coef_th_newによって、モジュールの生成のされ方が異なることを確認することができる。
【０２４３】
シミュレーションで用いた学習データは、3個のガウス分布G1ないしG3から生成された時系列データであるから、学習後のACHMMは、その3個のガウス分布G1ないしG3それぞれに相当する3個のモジュールで構成されることが望ましいが、ここでは、多少のマージンを考慮して、学習後のACHMMのモジュール数として、3ないし5個が望ましいと考える。
【０２４４】
図１６は、学習後のACHMMのモジュール数が、3ないし5個になる場合の、係数coef_th_new、及び、平均ベクトル間距離Hを示す図である。
【０２４５】
図１６によれば、学習後のACHMMのモジュール数が、望ましい数である3ないし5個になる場合の係数coef_th_new、及び、平均ベクトル間距離Hには、（最小自乗法等によって、）式coef_th_new=-0.4375H-5.625で表される関係があることを、実験期待値的に確認することができる。
【０２４６】
すなわち、観測値のクラスタリング粒度に対応する平均ベクトル間距離Hと、閾値尤度THが比例する比例定数である係数coef_th_newとは、線形式coef_th_new=-0.4375H-5.625によって関係付けることができる。
【０２４７】
なお、シミュレーションでは、ウインドウ長Wを、5以外の、例えば、15等にした場合も、係数coef_th_new、及び、平均ベクトル間距離Hに、式coef_th_new=-0.4375H-5.625で表される関係があることを確認している。
【０２４８】
以上から、平均ベクトル間距離Hが、例えば、4.0程度となるクラスタリング粒度を、所望の粒度とすると、係数coef_th_newは、-7.5ないし-7.0程度に決まり、この係数coef_th_newを用い、式TH=coef_th_new×D×Wに従って求められる閾値尤度TH（係数coef_th_newに比例する閾値尤度TH）が、クラスタリング粒度を所望の粒度とするのに適切な値となる。
【０２４９】
閾値尤度THとしては、以上のようにして求められる値を設定することができる。
【０２５０】
［可変長の学習データを用いたモジュール学習処理］
【０２５１】
図１７は、モジュール学習処理の他の例を説明するフローチャートである。
【０２５２】
ここで、図９のモジュール学習処理では、固定長であるウインドウ長Wの最新の観測値の時系列を、学習データとして、各時刻tのACHMMの学習を、逐次行う。
【０２５３】
この場合、時刻tの学習データと、時刻t-1の学習データとは、時刻t-W+1ないし時刻t-1の、W-1個の観測値が重複しているため、時刻t-1において、最大尤度モジュール#m*となったモジュールが、時刻tにおいても、最大尤度モジュール#m*となりやすい。
【０２５４】
このため、ある時刻に最大尤度モジュール#m*となったモジュールは、その後も、最大尤度モジュール#m*、ひいては、対象モジュールになり続け、そのモジュールのHMMパラメータだけが、ウインドウ長Wの最新の観測値の時系列に対して、尤度を最大化（エラーを最小化）するように、少しずつ更新される、1個のモジュールの最新の観測値の時系列に対する過学習が行われる。
【０２５５】
そして、過学習が行われるモジュールでは、過去の学習で獲得した時系列パターンに対応する観測値の時系列が、ウインドウ長Wの学習データに含まれなくなると、その時系列パターンが急速に忘却される。
【０２５６】
ACHMMにおいて、過去の記憶（過去に獲得した時系列パターンの記憶）を維持しつつ、新たな時系列パターンの記憶を追加するためには、新規モジュールを、適宜生成し、異なる時系列パターンを、別々のモジュールに記憶させる必要がある。
【０２５７】
なお、1時刻ごとに、逐次、ウインドウ長Wの最新の観測値の時系列を、学習データとするのではなく、例えば、ウインドウ長Wと同一の長さのW時刻ごとの時刻のウインドウ長Wの最新の観測値の時系列を、学習データとすることで、過学習が行われることを回避することができる。
【０２５８】
しかしながら、ウインドウ長Wと同一の長さのW時刻ごとの時刻のウインドウ長Wの最新の観測値の時系列を、学習データとする場合、すなわち、観測値の時系列を、ウインドウ長Wの単位に分節（区分）して、学習データとする場合、観測値の時系列を、ウインドウ長Wの単位に分節する分節点と、観測値の時系列に含まれる時系列パターンに対応する時系列の分節点とが一致せず、その結果、観測値の時系列に含まれる時系列パターンを適切に分節して、モジュールに記憶させることが困難となる。
【０２５９】
そこで、モジュール学習処理では、固定長であるウインドウ長Wの最新の観測値の時系列に代えて、可変長の最新の観測値の時系列を、学習データとして用いて、ACHMMの学習を行うことができる。
【０２６０】
ここで、可変長の最新の観測値の時系列を、学習データとして用いるACHMMの学習、つまり、可変長の学習データを用いたモジュール学習を、可変ウインドウ学習ともいう。さらに、固定長であるウインドウ長Wの最新の観測値の時系列を、学習データとして用いるACHMMのモジュール学習を、固定ウインドウ学習ともいう。
【０２６１】
図１７は、可変ウインドウ学習によるモジュール学習処理を説明するフローチャートである。
【０２６２】
可変ウインドウ学習によるモジュール学習処理では、ステップＳ６１ないしＳ６４において、図９のステップＳ１１ないしＳ１４と、それぞれ（ほぼ）同様の処理が行われる。
【０２６３】
すなわち、ステップＳ６１では、更新部２３（図８）は、初期化処理として、ACHMMを構成する１個目のモジュール#1となるエルゴディックHMMの生成、及び、モジュール総数Mへの、初期値としての1のセットを行う。
【０２６４】
その後、センサ１１から、観測値otが出力され、観測時系列バッファ１２に記憶されるのを待って、処理は、ステップＳ６１からステップＳ６２に進み、モジュール学習部１３（図８）は、時刻tを、t=1にセットし、処理は、ステップＳ６３に進む。
【０２６５】
ステップＳ６３では、モジュール学習部１３は、時刻tが、ウインドウ長Wに等しいかどうかを判定する。
【０２６６】
ステップＳ６３において、時刻tがウインドウ長Wに等しくないと判定された場合、センサ１１から、次の観測値otが出力され、観測時系列バッファ１２に記憶されるのを待って、処理は、ステップＳ６４に進む。
【０２６７】
ステップＳ６４では、モジュール学習部１３は、時刻tを1だけインクリメントして、処理は、ステップＳ６３に戻り、以下、同様の処理が繰り返される。
【０２６８】
また、ステップＳ６３において、時刻tがウインドウ長Wに等しいと判定された場合、すなわち、観測時系列バッファ１２に、ウインドウ長W分の観測値の時系列である時系列データOt=W={o1，・・・，oW}が記憶された場合、対象モジュール決定部２２は、1個だけのモジュール#1で構成されるACHMMの、そのモジュール#1を、対象モジュールに決定する。
【０２６９】
そして、対象モジュール決定部２２は、対象モジュールであるモジュール#1を表すモジュールインデクスm=1を、更新部２３に供給し、処理は、ステップＳ６３からステップＳ６５に進む。
【０２７０】
ステップＳ６５では、更新部２３は、対象モジュール決定部２２からのモジュールインデクスm=1が表す対象モジュールであるモジュール#1の学習を行った回数（又は量）を表す（配列）変数Qlearn[m=1]に、初期値としての1.0をセットする。
【０２７１】
ここで、上述の図９で説明したモジュール#mの学習回数Nlearn[m]は、固定長であるウインドウ長Wの学習データを用いたモジュール#mの学習に対して、1だけ増加することとしている。
【０２７２】
そして、図９では、モジュール#mの学習に用いられる学習データは、必ず、固定長であるウインドウ長Wの時系列データであるため、学習回数Nlearn[m]は、1ずつしか増加しないので、整数値となる。
【０２７３】
これに対して、図１７では、モジュール#mの学習が、可変長の最新の観測値の時系列を、学習データとして用いて行われる。
【０２７４】
固定長であるウインドウ長Wの学習データを用いたモジュール#mの学習に対して、1だけ増加することを基準とすると、任意の長さW'の観測値の時系列を学習データとして用いて行ったモジュール#mの学習に対しては、モジュール#mの学習を行った回数を表す変数Qlearn[m]は、W'/Wだけ増加する必要がある。
【０２７５】
したがって、変数Qlearn[m]は、実数値となる。
【０２７６】
なお、ウインドウ長Wの学習データを用いたモジュール#mの学習を、1回の学習としてカウントすることとすると、任意の長さW'の学習データを用いたモジュール#mの学習には、W'/W回の学習の実効があるので、変数Qlearn[m]を、実効学習回数ともいう。
【０２７７】
ステップＳ６５では、更新部２３は、さらに、対象モジュールであるモジュール#1の学習率γを、式γ＝1/(Qlearn[m=1]+1.0)に従って求める。
【０２７８】
そして、更新部２３は、観測時系列バッファ１２に記憶されたウインドウ長Wの時系列データOt=W={o1，・・・，oW}を、学習データとして、その学習データOt=Wを用い、学習率γ＝1/(Qlearn[m=1]+1.0)で、対象モジュールであるモジュール#1の追加学習を行う。
【０２７９】
すなわち、更新部２３は、上述した式（３）ないし式（１６）に従って、ACHMM記憶部１６に記憶された、対象モジュールであるモジュール#1のHMMパラメータλm=1を更新する。
【０２８０】
さらに、更新部２３は、その内蔵するメモリ（図示せず）に確保される、観測値をバッファリングする変数であるバッファbuffer_winner_sampleに、学習データOt=Wをバッファリングする。
【０２８１】
また、更新部２３は、その内蔵するメモリに確保される、1時刻前に最大尤度モジュールであったモジュールが、最大尤度モジュールになっている期間を表す変数である勝者期間情報cnt_since_winに、初期値としての1をセットする。
【０２８２】
さらに、更新部２３は、その内蔵するメモリに確保される、1時刻前の最大尤度モジュール（であったモジュール）を表す変数である前回勝者情報past_winに、初期値としての、モジュール#1のモジュールインデクスである1をセットする。
【０２８３】
その後、センサ１１から、次の観測値otが出力され、観測時系列バッファ１２に記憶されるのを待って、処理は、ステップＳ６５からステップＳ６６に進み、以下、ステップＳ６６ないしＳ７０において、図９のステップＳ１６ないしＳ２０と、それぞれ同様の処理が行われる。
【０２８４】
すなわち、ステップＳ６６では、モジュール学習部１３が、時刻tを1だけインクリメントして、処理は、ステップＳ６７に進む。
【０２８５】
ステップＳ６７では、尤度算出部２１は、観測時系列バッファ１２に記憶されたウインドウ長Wの最新の時系列データOt={ot-W+1，・・・，ot}を、学習データとし、ACHMM記憶部１６に記憶されたACHMMを構成するすべてのモジュール#1ないし#Mのそれぞれについて、モジュール尤度P(Ot|λm)を求めて、対象モジュール決定部２２に供給する。
【０２８６】
そして、処理は、ステップＳ６７からステップＳ６８に進み、対象モジュール決定部２２は、ACHMMを構成するモジュール#1ないし#Mのうちの、尤度算出部２１からのモジュール尤度P(Ot|λm)が最大のモジュールである最大尤度モジュール#m*＝argmaxm[P(Ot|λm)]を求める。
【０２８７】
さらに、対象モジュール決定部２２は、尤度算出部２１からのモジュール尤度P(Ot|λm)から、最大対数尤度maxLP=maxm[log(P(Ot|λm))]（最大尤度モジュール#m*のモジュール尤度P(Ot|λm*)の対数）を求め、処理は、ステップＳ６８からステップＳ６９に進む。
【０２８８】
ステップＳ６９では、対象モジュール決定部２２は、最大対数尤度maxLPに基づいて、最大尤度モジュール#m*、又は、新規に生成するHMMである新規モジュールを、HMMパラメータを更新する対象モジュールに決定する対象モジュールの決定の処理を行う。
【０２８９】
そして、対象モジュール決定部２２は、対象モジュールのモジュールインデクスを、更新部２３に供給し、処理は、ステップＳ６９からステップＳ７０に進む。
【０２９０】
ステップＳ７０では、更新部２３は、対象モジュール決定部２２からのモジュールインデクスが表す対象モジュールが、最大尤度モジュール#m*、又は、新規モジュールのうちのいずれであるかを判定する。
【０２９１】
ステップＳ７０において、対象モジュールが、最大尤度モジュール#m*であると判定された場合、処理は、ステップＳ７１に進み、更新部２３は、最大尤度モジュール#m*のHMMパラメータλm*を更新する既存モジュール学習処理を行う。
【０２９２】
また、ステップＳ７０において、対象モジュールが、新規モジュールであると判定された場合、処理は、ステップＳ７２に進み、更新部２３は、新規モジュールのHMMパラメータを更新する新規モジュール学習処理を行う。
【０２９３】
ステップＳ７１の既存モジュール学習処理、及び、ステップＳ７２の新規モジュール学習処理の後は、いずれも、センサ１１から、次の観測値otが出力され、観測時系列バッファ１２に記憶されるのを待って、処理は、ステップＳ６６に戻り、以下、同様の処理が繰り返される。
【０２９４】
図１８は、図１７のステップＳ７１で行われる既存モジュール学習処理を説明するフローチャートである。
【０２９５】
既存モジュール学習処理では、ステップＳ９１において、更新部２３（図８）は、前回勝者情報past_winと、対象モジュールとなった最大尤度モジュール#m*のモジュールインデクスとが一致するかどうかを判定する。
【０２９６】
ステップＳ９１において、前回勝者情報past_winと、対象モジュールとなった最大尤度モジュール#m*のモジュールインデクスとが一致すると判定された場合、すなわち、現在時刻tの1時刻前の時刻t-1に、最大尤度モジュールであったモジュールが、現在時刻tでも、最大尤度モジュールとなり、ひいては、対象モジュールとなった場合、処理は、ステップＳ９２に進み、更新部２３は、式mod(cnt_since_win,W)=0が満たされるかどうかを判定する。
【０２９７】
ここで、mod(A,B)は、AをBで除算したときの剰余を表す。
【０２９８】
ステップＳ９２において、式mod(cnt_since_win,W)=0が満たされないと判定された場合、処理は、ステップＳ９３及びＳ９４をスキップして、ステップＳ９５に進む。
【０２９９】
また、ステップＳ９２において、式mod(cnt_since_win,W)=0が満たされると判定された場合、すなわち、勝者期間情報cnt_since_winが、ウインドウ長Wで割り切れ、したがって、現在時刻tに、最大尤度モジュールになっているモジュール#m*が、ウインドウ長Wの整数倍の期間の間、連続して最大尤度モジュールになっている場合、ステップＳ９３に進み、更新部２３は、対象モジュールである現在時刻tの最大尤度モジュール#m*の実効学習回数Qlearn[m*]を、例えば、1.0だけインクリメントして、処理は、ステップＳ９４に進む。
【０３００】
ステップＳ９４では、更新部２３は、対象モジュールである最大尤度モジュール#m*の学習率γを、式γ＝1/(Qlearn[m*]+1.0)に従って求める。
【０３０１】
そして、更新部２３は、観測時系列バッファ１２に記憶されたウインドウ長Wの最新の時系列データOtを、学習データとして、その学習データOtを用い、学習率γ＝1/(Qlearn[m*]+1.0)で、対象モジュールである最大尤度モジュール#m*の追加学習を行う。
【０３０２】
すなわち、更新部２３は、上述した式（３）ないし式（１６）に従って、ACHMM記憶部１６に記憶された、対象モジュールである最大尤度モジュール#m*のHMMパラメータλm*を更新する。
【０３０３】
その後、処理は、ステップＳ９４からステップＳ９５に進み、更新部２３は、観測時系列バッファ１２に記憶された現在時刻tの観測値otを、バッファbuffer_winner_sampleに、追加する形でバッファリングして、処理は、ステップＳ９６に進む。
【０３０４】
ステップＳ９６では、更新部２３は、勝者期間情報cnt_since_winを、1だけインクリメントして、処理は、ステップＳ１０８に進む。
【０３０５】
一方、ステップＳ９１において、前回勝者情報past_winと、対象モジュールとなった最大尤度モジュール#m*のモジュールインデクスとが一致しないと判定された場合、すなわち、現在時刻tの最大尤度モジュール#m*が、現在時刻tの1時刻前の時刻t-1の最大尤度モジュールと異なる場合、処理は、ステップＳ１０１に進み、以下、時刻t-1まで最大尤度モジュールであったモジュールと、現在時刻tの最大尤度モジュール#m*との学習が行われる。
【０３０６】
すなわち、ステップＳ１０１では、更新部２３は、時刻t-1まで最大尤度モジュールであったモジュール、つまり、前回勝者情報past_winをモジュールインデクスとするモジュール（以下、前回勝者モジュールともいう）#past_winの実効学習回数Qlearn[past_win]を、例えば、LEN[buffer_winner_sample]/Wだけインクリメントして、処理は、ステップＳ１０２に進む。
【０３０７】
ここで、LEN[buffer_winner_sample]は、バッファbuffer_winner_sampleにバッファリングされている観測値の長さ（数）を表す。
【０３０８】
ステップＳ１０２では、更新部２３は、前回勝者モジュール#past_winの学習率γを、式γ＝1/(Qlearn[past_win]+1.0)に従って求める。
【０３０９】
そして、更新部２３は、バッファbuffer_winner_sampleにバッファリングされている観測値の時系列を、学習データとして、その学習データを用い、学習率γ＝1/(Qlearn[past_win]+1.0)で、前回勝者モジュール#past_winの追加学習を行う。
【０３１０】
すなわち、更新部２３は、上述した式（３）ないし式（１６）に従って、ACHMM記憶部１６に記憶された、前回勝者モジュール#past_winのHMMパラメータλpast_winを更新する。
【０３１１】
その後、処理は、ステップＳ１０２からステップＳ１０３に進み、更新部２３は、対象モジュールである現在時刻tの最大尤度モジュール#m*の実効学習回数Qlearn[m*]を、例えば、1.0だけインクリメントして、処理は、ステップＳ１０４に進む。
【０３１２】
ステップＳ１０４では、更新部２３は、対象モジュールである最大尤度モジュール#m*の学習率γを、式γ＝1/(Qlearn[m*]+1.0)に従って求める。
【０３１３】
そして、更新部２３は、観測時系列バッファ１２に記憶されたウインドウ長Wの最新の時系列データOtを、学習データとして、その学習データOtを用い、学習率γ＝1/(Qlearn[m*]+1.0)で、対象モジュールである最大尤度モジュール#m*の追加学習を行う。
【０３１４】
すなわち、更新部２３は、上述した式（３）ないし式（１６）に従って、ACHMM記憶部１６に記憶された、対象モジュールである最大尤度モジュール#m*のHMMパラメータλm*を更新する。
【０３１５】
その後、処理は、ステップＳ１０４からステップＳ１０５に進み、更新部２３は、バッファbuffer_winner_sampleをクリアして、処理は、ステップＳ１０６に進む。
【０３１６】
ステップＳ１０６では、更新部２３は、ウインドウ長Wの最新の学習データOtを、バッファbuffer_winner_sampleにバッファリングして、処理は、ステップＳ１０７に進む。
【０３１７】
ステップＳ１０７では、更新部２３は、勝者期間情報cnt_since_winに、初期値としての1をセットして、処理は、ステップＳ１０８に進む。
【０３１８】
ステップＳ１０８では、更新部２３は、前回勝者情報past_winに、現在時刻tの最大尤度モジュール#m*のモジュールインデクスm*をセットし、処理は、リターンする。
【０３１９】
図１９は、図１７のステップＳ７２で行われる新規モジュール学習処理を説明するフローチャートである。
【０３２０】
新規モジュール学習処理では、新規モジュールを生成し、その新規モジュールを、対象モジュールとして、学習が行われるが、新規モジュールの学習に先立って、それまで（時刻t-1まで）最大尤度モジュールであったモジュールの学習が行われる。
【０３２１】
すなわち、ステップＳ１１１において、更新部２３は、時刻t-1まで最大尤度モジュールであったモジュール、つまり、前回勝者情報past_winをモジュールインデクスとするモジュールである前回勝者モジュール#past_winの実効学習回数Qlearn[past_win]を、例えば、LEN[buffer_winner_sample]/Wだけインクリメントして、処理は、ステップＳ１１２に進む。
【０３２２】
ステップＳ１１２では、更新部２３は、前回勝者モジュール#past_winの学習率γを、式γ＝1/(Qlearn[past_win]+1.0)に従って求める。
【０３２３】
そして、更新部２３は、バッファbuffer_winner_sampleにバッファリングされている観測値の時系列を、学習データとして、その学習データを用い、学習率γ＝1/(Qlearn[past_win]+1.0)で、前回勝者モジュール#past_winの追加学習を行う。
【０３２４】
すなわち、更新部２３は、上述した式（３）ないし式（１６）に従って、ACHMM記憶部１６に記憶された、前回勝者モジュール#past_winのHMMパラメータλpast_winを更新する。
【０３２５】
その後、処理は、ステップＳ１１２からステップＳ１１３に進み、更新部２３（図８）は、ACHMMを構成するM+1個目のモジュール#M+1となる新規モジュールであるHMMを、図９のステップＳ１１の場合と同様にして生成する。さらに、更新部２３は、新規モジュール#m=M+1（のHMMパラメータλM+1）を、ACHMMを構成するモジュールとして、ACHMM記憶部１６に記憶させて、処理は、ステップＳ１１３からステップＳ１１４に進む。
【０３２６】
ステップＳ１１４では、更新部２３は、新規モジュール#m=M+1の実効学習回数Qlearn[m=M+1]に、初期値としての1.0をセットし、処理は、ステップＳ１１５に進む。
【０３２７】
ステップＳ１１５では、更新部２３は、対象モジュールである新規モジュール#m=M+1の学習率γを、式γ＝1/(Qlearn[m=M+1]+1.0)に従って求める。
【０３２８】
そして、更新部２３は、観測時系列バッファ１２に記憶されたウインドウ長Wの最新の時系列データOtを、学習データとして、その学習データOtを用い、学習率γ＝1/(Qlearn[m=M+1]+1.0)で、対象モジュールである新規モジュール#m=M+1の追加学習を行う。
【０３２９】
すなわち、更新部２３は、上述した式（３）ないし式（１６）に従って、ACHMM記憶部１６に記憶された、対象モジュールである新規モジュール#m=M+1のHMMパラメータλM+1を更新する。
【０３３０】
その後、処理は、ステップＳ１１５からステップＳ１１６に進み、更新部２３は、バッファbuffer_winner_sampleをクリアして、処理は、ステップＳ１１７に進む。
【０３３１】
ステップＳ１１７では、更新部２３は、ウインドウ長Wの最新の学習データOtを、バッファbuffer_winner_sampleにバッファリングして、処理は、ステップＳ１１８に進む。
【０３３２】
ステップＳ１１８では、更新部２３は、勝者期間情報cnt_since_winに、初期値としての1をセットして、処理は、ステップＳ１１９に進む。
【０３３３】
ステップＳ１１９では、更新部２３は、前回勝者情報past_winに、新規モジュール#M+1のモジュールインデクスM+1をセットし、処理は、ステップＳ１２０に進む。
【０３３４】
ステップＳ１２０では、更新部２３は、ACHMMを構成するモジュールとして、新規モジュールが生成されたことに伴い、モジュール総数Mを、1だけインクリメントし、処理は、リターンする。
【０３３５】
以上のように、可変ウインドウ学習によるモジュール学習処理（図１７ないし図１９）では、対象モジュールとなった最大尤度モジュール#m*と、１時刻前の学習データに対する尤度が最大のモジュールである前回勝者モジュール#past_winとが一致する間は、固定長の時間であるウインドウ長Wごとに、ウインドウ長Wの最新の観測値の時系列を、学習データとして、対象モジュールとなった最大尤度モジュール#m*の学習が行われ（図１８のステップＳ９４）、最新の観測値otが、バッファbuffer_winner_sampleにバッファリングされる。
【０３３６】
そして、対象モジュールと、前回勝者モジュール#past_winとが一致しなくなったときに、つまり、対象モジュールが、新規モジュール、又は、ACHMMを構成するモジュールのうちの、前回勝者モジュール#past_win以外のモジュールになったときに、バッファbuffer_winner_sampleにバッファリングされている観測値の時系列を、学習データとして、前回勝者モジュール#past_winの学習が行われ（図１８のステップＳ１０２、及び、図１９のステップＳ１１２）、ウインドウ長Wの最新の観測値の時系列を、学習データとして、対象モジュールの学習が行われる（図１８のステップＳ１０４、及び、図１９のステップＳ１１５）。
【０３３７】
すなわち、対象モジュールとなったモジュールについては、（連続して）対象モジュールになっている限り、最初に対象モジュールになってから、ウインドウ長Wごとに、ウインドウ長Wの観測値の時系列を、学習データとして、学習が行われ、その間の観測値は、バッファbuffer_winner_sampleにバッファリングされる。
【０３３８】
そして、対象モジュールが、それまで対象モジュールであったモジュールから、他のモジュールになったときに、それまで対象モジュールであったモジュールの学習が、バッファbuffer_winner_sampleにバッファリングされた観測値の時系列を、学習データとして行われる。
【０３３９】
その結果、可変ウインドウ学習によるモジュール学習処理によれば、固定長であるウインドウ長Wの最新の観測値の時系列を、学習データとして、各時刻tのACHMMの学習を、逐次行う場合に生じる弊害と、観測値の時系列を、ウインドウ長Wの単位に分節して、学習データとする場合に生じる弊害とを改善することができる。
【０３４０】
なお、図９のモジュール学習処理では、固定長であるウインドウ長Wの学習データを用いた学習に対して、モジュール#mの学習回数Nlearn[m]を、1だけインクリメント（増加）することとしている。
【０３４１】
一方、図１７のモジュール学習処理では、対象モジュールが、前回勝者モジュール#past_win以外のモジュールになったときに、前回勝者モジュール#past_winの学習が、バッファbuffer_winner_sampleにバッファリングされている観測値の時系列、すなわち、可変長の時系列データを、学習データとして行われるため、実効学習回数Qlearn[m]を、バッファbuffer_winner_sampleにバッファリングされている観測値の長さLEN[buffer_winner_sample]を、ウインドウ長Wで除算した除算値だけ増加する適応制御（バッファbuffer_winner_sampleにバッファリングされている観測値の長さLEN[buffer_winner_sample]に従った適応制御）が行われる（図１８のステップＳ１０１、及び、図１９のステップＳ１１１）。
【０３４２】
例えば、ウインドウ長Wが5であり、前回勝者モジュール#past_winの学習に用いられる、バッファbuffer_winner_sampleにバッファリングされている観測値の長さLEN[buffer_winner_sample]が10である場合、前回勝者モジュール#past_winの実効学習回数Qlearn[past_win]は、2.0(=LEN[buffer_winner_sample]/W)だけインクリメントされる。
【０３４３】
［認識部１４の構成例］
【０３４４】
図２０は、図１の認識部１４の構成例を示すブロック図である。
【０３４５】
認識部１４は、ACHMM記憶部１６に記憶されたACHMMを用い、観測時系列バッファ１２から逐次供給される観測値の時系列、つまり、モジュール学習部１３が学習に用いる学習データOt={ot-W+1,・・・,ot}である時系列データを認識（識別）（分類）し、その認識結果を表す認識結果情報を出力する認識処理を行う。
【０３４６】
すなわち、認識部１４は、尤度算出部３１、及び、最尤推定部３２を含み、モジュール学習部１３が学習に用いる学習データOt={ot-W+1,・・・,ot}である時系列データを認識し、その認識結果を表す認識結果情報として、ACHMMを構成するモジュールのうちの、時系列データ（学習データ）Otが観測される尤度が最大のモジュールである最大尤度モジュール#m*（のモジュールインデクスm*）と、最大尤度モジュール#m*において、時系列データOtが観測される尤度が最大の状態遷移が生じる、HMMの状態の系列である最尤状態系列Sm*tとを求める
【０３４７】
ここで、認識部１４では、モジュール学習部１３が学習を行うことにより逐次更新されるACHMMを用いて、モジュール学習部１３が学習に用いる学習データOtの認識（状態推定）を行う他、モジュール学習部１３によるACHMMの学習が十分進行して、ACHMMの更新が行われなくなった後に、そのACHMMを用いて、観測時系列バッファ１２に記憶された任意の長さの時系列データ（観測値の時系列）の認識（状態認識）を行うことができる。
【０３４８】
尤度計算部３１には、観測時系列バッファ１２から、モジュール学習部１３の尤度計算部２１（図８）に学習データとして供給されるのと同一の観測値の時系列（ウインドウ長Wの時系列データ）Ot={ot-W+1,・・・,ot}が、逐次供給される。
【０３４９】
尤度計算部３１は、観測時系列バッファ１２から逐次供給される時系列データ（ここでは、学習データでもある）Otを用い、ACHMM記憶部１６に記憶されたACHMMを構成する各モジュール#1ないし#Mについて、モジュール#mにおいて、時系列データOtが観測される尤度（モジュール尤度）P(Ot|λm)を、図８の尤度計算部２１と同様にして求め、最尤推定部３２に供給する。
【０３５０】
ここで、尤度計算部３１と、図８のモジュール学習部１３の尤度計算部２１とは、１つの尤度計算部で兼用することができる。
【０３５１】
最尤推定部３２には、尤度計算部３１から、ACHMMを構成するモジュール#1ないし#Mのモジュール尤度P(Ot|λ1)ないしP(Ot|λM)が供給される他、観測時系列バッファ１２から、ウインドウ長Wの時系列データ（学習データ）Ot={ot-W+1,・・・,ot}が供給される。
【０３５２】
最尤推定部３２は、ACHMMを構成するモジュール#1ないし#Mのうちの、尤度算出部３１からのモジュール尤度P(Ot|λm)が最大のモジュールである最大尤度モジュール#m*＝argmaxm[P(Ot|λm)]を求める。
【０３５３】
ここで、モジュール#m*が、最大尤度モジュールであるということは、観測空間を、自己組織的に、モジュールに相当する部分空間に分割した場合の、その部分空間のうちの、モジュール#m*に対応する部分空間に、時刻tの時系列データOtが認識（分類）されたことに相当する。
【０３５４】
最尤推定部３２は、最大尤度モジュール#m*を求めた後、その最大尤度モジュール#m*において、時系列データOtが観測される尤度が最大の状態遷移が生じる、HMMの状態の系列である最尤状態系列Sm*tを、ビタビ法(Viterbi Algorithm)に従って求める。
【０３５５】
ここで、最大尤度モジュール#m*であるHMMの、時系列データOt={ot-W+1,・・・,ot}に対する最尤状態系列を、Sm*t={sm*t-W+1(ot-W+1),・・・,sm*t(ot)}、若しくは、簡略化して、Sm*t={sm*t-W+1,・・・,sm*t}、又は、最大尤度モジュール#m*が明らかである場合には、St={st-W+1,・・・,st}と表す。
【０３５６】
最尤推定部３２は、時刻tの時系列データOt={ot-W+1,・・・,ot}の認識結果情報として、最大尤度モジュール#m*（のモジュールインデクスm*）と、最尤状態系列Sm*t={sm*t-W+1,・・・,sm*t}（を構成する状態を表すインデクス）とのセット［m*，Sm*t={sm*t-W+1,・・・,sm*t}］を出力する。
【０３５７】
なお、最尤推定部３２は、時刻tの観測値otの認識結果情報として、最大尤度モジュール#m*と、最尤状態系列Sm*t={sm*t-W+1,・・・,sm*t}の最後の状態sm*tとのセット［m*，sm*t］を出力することができる。
【０３５８】
また、認識結果情報を入力とする後段のブロックが存在する場合において、その後段のブロックが、1次元のシンボルを入力として要求するときには、インデクスm*、及び、sm*tとして、数字を用い、2次元のシンボルである認識結果情報［m*，sm*t］を、値N×(m*-1)+sm*t等の、ACHMMを構成するすべてのモジュールについて重複しない1次元のシンボル値に変換して出力することができる。
【０３５９】
［認識処理］
【０３６０】
図２１は、図２０の認識部１４が行う認識処理を説明するフローチャートである。
【０３６１】
認識処理は、時刻tが、時刻Wになってから開始される。
【０３６２】
ステップＳ１４１において、尤度算出部３１は、観測時系列バッファ１２に記憶されたウインドウ長Wの最新（時刻t）の時系列データOt={ot-W+1,・・・,ot}を用い、ACHMM記憶部１６に記憶されたACHMMを構成する各モジュール#mのモジュール尤度P(Ot|λm)を求め、最尤推定部３２に供給する。
【０３６３】
そして、処理は、ステップＳ１４１からステップＳ１４２に進み、最尤推定部３２は、ACHMMを構成するモジュール#1ないし#Mのうちの、尤度算出部３１からのモジュール尤度P(Ot|λm)が最大の最大尤度モジュール#m*＝argmaxm[P(Ot|λm)]を求め、処理は、ステップＳ１４３に進む。
【０３６４】
ステップＳ１４３では、最尤推定部３２は、最大尤度モジュール#m*において、時系列データOtが観測される尤度が最大の状態遷移が生じる最尤状態系列Sm*t={sm*t-W+1,・・・,sm*t}を求め、処理は、ステップＳ１４４に進む。
【０３６５】
ステップＳ１４４では、最尤推定部３２は、時刻tの時系列データOt={ot-W+1,・・・,ot}の認識結果情報として、最大尤度モジュール#m*と、最尤状態系列Sm*t={sm*t-W+1,・・・,sm*t}とのセットであるW+1次元のシンボル［m*，Sm*t={sm*t-W+1,・・・,sm*t}］、又は、時刻tの観測値otの認識結果情報として、最大尤度モジュール#m*と、最尤状態系列Sm*t={sm*t-W+1,・・・,sm*t}の最後の状態sm*tとのセットである２次元のシンボル［m*，sm*t］を出力する。
【０３６６】
そして、観測時系列バッファ１２に、最新の観測値が記憶されるのを待って、ステップＳ１４１に戻り、以下、同様の処理が繰り返される。
【０３６７】
［遷移情報管理部１５の構成例］
【０３６８】
図２２は、図１の遷移情報管理部１５の構成例を示すブロック図である。
【０３６９】
遷移情報管理部１５は、認識部１４からの認識結果情報に基づいて、ACHMM記憶部１６に記憶されたACHMMにおける各状態遷移の頻度の情報である遷移情報を生成し、ACHMM記憶部１６に供給して、ACHMM記憶部１６に記憶された遷移情報を更新する。
【０３７０】
すなわち、遷移情報管理部１５は、情報時系列バッファ４１、及び、情報更新部４２を含む。
【０３７１】
情報時系列バッファ４１は、認識部１４が出力する認識結果情報［m*，Sm*t={sm*t-W+1,・・・,sm*t}］を一時記憶する。
【０３７２】
なお、情報時系列バッファ４１は、少なくとも、ウインドウ長Wに等しい数の、後述するフェーズについて、2時刻分の認識結果情報を記憶するだけの記憶容量を有する。
【０３７３】
また、認識部１４から遷移情報管理部１５の情報時系列バッファ４１には、ある1時刻の観測値ではなく、ウインドウ長Wの時系列データOt={ot-W+1,・・・,ot}の認識結果情報［m*，Sm*t={sm*t-W+1,・・・,sm*t}］が供給される。
【０３７４】
情報更新部４２は、情報時系列バッファ４１に記憶された認識結果情報と、ACHMM記憶部１６に記憶された遷移情報とから、新たな遷移情報を生成し、その新たな遷移情報によって、ACHMM記憶部１６に記憶された遷移情報が登録された、後述するモジュール状態間遷移頻度テーブルを更新する。
【０３７５】
図２３は、図２２の遷移情報管理部１５が遷移情報を生成する遷移情報生成処理を説明する図である。
【０３７６】
モジュール学習部１３（図１）でのモジュール学習によれば、モデル化対象から観測される観測値の観測空間は、モジュールに相当する局所構造（スモールワールド）（部分空間）に分割され、局所構造内では、HMMによって、ある時系列パターンが獲得される。
【０３７７】
モデル化対象を、スモールワールドネットワークで表現するためには、局所構造間の（状態）遷移、すなわち、モジュール間の遷移のモデル（遷移モデル）を、学習によって獲得する必要がある。
【０３７８】
一方、認識部１４が出力する認識結果情報によれば、任意の時刻tの観測値otが観測される（HMMの）状態を特定することができるから、モジュール内の状態の遷移は勿論、モジュール間の状態の遷移も獲得することができる。
【０３７９】
そこで、遷移情報管理部１５は、認識部１４が出力する認識結果情報を用いて、遷移モデル（のパラメータ）としての遷移情報を獲得する。
【０３８０】
すなわち、遷移情報管理部１５は、認識部１４が出力する認識結果情報から、ある連続する時刻t-1、及び、時刻tのそれぞれにいるモジュールと（HMMの）状態とを特定し、時間的に先行する時刻t-1にいるモジュールと状態を、遷移元モジュール、及び、遷移元状態とするとともに、時間的に後行する時刻tにいるモジュールと状態を、遷移先モジュール、及び、遷移先状態とする。
【０３８１】
さらに、遷移情報管理部１５は、遷移元モジュール、遷移元状態、遷移先モジュール、及び、遷移先状態（を表すインデクス）と、遷移元モジュールの遷移元状態から、遷移先モジュールの遷移先状態への状態遷移の（出現）頻度としての1を、遷移情報の１つであるモジュール状態間遷移情報として生成し、そのモジュール状態間遷移情報を、モジュール状態間遷移頻度テーブルの1レコード（1エントリ）（1行）として登録する。
【０３８２】
そして、遷移情報管理部１５は、モジュール状態間遷移頻度テーブルに既に登録されたモジュール状態間遷移情報と同一の遷移元モジュール、遷移元状態、遷移先モジュール、及び、遷移先状態が出現した場合には、そのモジュール状態間遷移情報の頻度を1だけインクリメントしたモジュール状態間遷移情報を生成し、そのモジュール状態間遷移情報によって、モジュール状態間遷移頻度テーブルを更新する。
【０３８３】
具体的には、遷移情報管理部１５（図２２）では、時刻tをウインドウ長Wで除算した場合の剰余fによって、時刻tを、フェーズに分類することとして、情報時系列バッファ４１（図２２）に、フェーズの数（ウインドウ長Wに等しい）だけの記憶領域が確保される。
【０３８４】
フェース#f（f=0,1,・・・,W-1）の記憶領域は、少なくとも、2時刻分の認識結果情報を記憶するだけの記憶容量を有し、そのフェーズ#fの最新の2時刻分の認識結果情報、すなわち、フェーズ#fの最新の時刻tを、時刻t=τとすると、時刻τの認識結果情報と、時刻τ-Wの認識結果情報とを記憶する。
【０３８５】
ここで、図２３には、ウインドウ長Wが5であり、したがって、認識結果情報を、5個のフェーズ#0,#1,#2,#3,#4に分けて記憶する場合の情報時系列バッファ４１の記憶内容を示してある。
【０３８６】
なお、図２３において、数字を2段に分けて、内部に記載してある長方形は、1時刻の認識結果情報を表す。また、１時刻の認識結果情報としての長方形の内部の2段の数字のうちの、上段の1個の数字は、最大尤度モジュールとなったモジュール（のモジュールインデクス）を表し、下段の5個の数字は、右端を最新時刻の状態とする最尤状態系列（を構成する状態のインデクス）を表す。
【０３８７】
現在時刻（最新の時刻）tが、例えば、フェーズ#1に分類される時刻である場合には、認識部１４から情報時系列バッファ４１には、現在時刻tの認識結果情報が供給され、情報時系列バッファ４１のフェーズ#1の記憶領域に、追加する形で記憶される。
【０３８８】
その結果、情報時系列バッファ４１のフェーズ#1の記憶領域には、少なくとも、現在時刻tの認識結果情報と、時刻t-Wの認識結果情報とが記憶される。
【０３８９】
ここで、認識部１４から情報時系列バッファ４１に出力される時刻tの認識結果情報は、上述したことから、時刻tの観測値otではなく、時刻tの時系列データOt={ot-W+1,・・・,ot}の認識結果情報［m*，Sm*t={sm*t-W+1,・・・,sm*t}］であり、時刻t-W+1ないし時刻tの各時刻にいるモジュール及び状態（の情報）が含まれる。
【０３９０】
この、時刻tの時系列データOt={ot-W+1,・・・,ot}の認識結果情報［m*，Sm*t={sm*t-W+1,・・・,sm*t}］に含まれる、ある時刻にいるモジュール及び状態（の情報）を、その時刻の認識値ともいう。
【０３９１】
フェーズ#1の記憶領域に、現在時刻tの認識結果情報と、時刻t-Wの認識結果情報とが記憶されると、情報更新部４２（図２２）は、図２３において点線の矢印で示すように、現在時刻tの認識結果情報と、時刻t-Wの認識結果情報とを、時刻順に連結する。
【０３９２】
さらに、情報更新部４２は、連結後の認識結果情報、すなわち、時刻t-2W+1ないし時刻tの各時刻の認識値の時系列順の並び（以下、連結情報ともいう）のうちの、時刻t-Wないし時刻tのW+1個の認識値の、隣接する認識値どうしのW個のセット（以下、認識値セットともいう）について、その認識値セットを、遷移元モジュール、及び、遷移元状態と、遷移先モジュール、及び、遷移先状態とのセットとするモジュール状態間遷移情報が、ACHMM記憶部１６に記憶されたモジュール状態間遷移情報頻度テーブルに登録されているかどうかを調査する。
【０３９３】
認識値セットを、遷移元モジュール、及び、遷移元状態と、遷移先モジュール、及び、遷移先状態とのセットとするモジュール状態間遷移情報が、ACHMM記憶部１６に記憶されたモジュール状態間遷移情報頻度テーブルに登録されていない場合、情報更新部４２は、認識値セットのうちの、時間的に先行するモジュール及び状態と、時間的に後行するモジュール及び状態とを、それぞれ、遷移元モジュール、及び、遷移元状態と、遷移先モジュール、及び、遷移先状態ととし、かつ、頻度を初期値としての1とするモジュール状態間遷移情報を新規に生成する。
【０３９４】
そして、情報更新部４２は、新規に生成したモジュール状態間遷移情報を、ACHMM記憶部１６に記憶されたモジュール状態間遷移頻度テーブルの、新たな1レコードとして登録する。
【０３９５】
なお、ACHMM記憶部１６には、モジュール学習部１３（図１）でのモジュール学習処理が開始されるときに、レコードがないモジュール状態間遷移頻度テーブルが記憶されることとする。
【０３９６】
また、情報更新部４２は、遷移元モジュール、及び、遷移元状態と、遷移先モジュール、及び、遷移先状態とが、同一となる場合、つまり、いわゆる自己遷移の場合であっても、上述したように、モジュール状態間遷移情報を新規に生成して、モジュール状態間遷移頻度テーブルに登録する。
【０３９７】
一方、認識値セットを、遷移元モジュール、及び、遷移元状態と、遷移先モジュール、及び、遷移先状態とのセットとするモジュール状態間遷移情報が、ACHMM記憶部１６に記憶されたモジュール状態間遷移情報頻度テーブルに登録されている場合、情報更新部４２は、そのモジュール状態間遷移情報の頻度を1だけインクリメントしたモジュール状態間遷移情報を生成し、そのモジュール状態間遷移情報によって、ACHMM記憶部１６に記憶されたモジュール状態間遷移頻度テーブルを更新する。
【０３９８】
ここで、現在時刻tの認識結果情報と、時刻t-Wの認識結果情報とを連結して得られる連結情報のうちの、時刻t-2W+1ないし時刻t-WのW個の認識値の、隣接する認識値どうしのW-1個の認識値セットは、遷移情報管理部１５が行う遷移情報生成処理において、頻度のカウント（インクリメント）に用いられない。
【０３９９】
これは、時刻t-2W+1ないし時刻t-WのW個の認識値の、隣接する認識値どうしのW-1個の認識値セットは、時刻t-Wの認識結果情報と、時刻t-2Wの認識結果情報とを連結して得られる連結情報を用いた遷移情報生成処理において、頻度のカウントに、既に用いられているので、頻度のカウントが、重複して行われることを防止するためである。
【０４００】
なお、情報更新部４２では、モジュール状態間遷移頻度テーブルの更新後に、その更新後のモジュール状態間遷移頻度テーブルのモジュール状態間遷移情報を、状態（の情報）について、図２３に示すように周辺化することで、あるモジュール（の任意の状態）と、そのモジュールを含む任意のモジュール（の任意の状態）との間の状態遷移（モジュール間遷移）の遷移情報であるモジュール間遷移情報を登録したモジュール間遷移頻度テーブルを生成し、ACHMM記憶部１６に記憶させることができる。
【０４０１】
ここで、モジュール間遷移情報は、遷移元モジュール、及び、遷移先モジュール（を表すインデクス）と、遷移元モジュールから、遷移先モジュールへの状態遷移の頻度とからなる。
【０４０２】
［遷移情報生成処理］
【０４０３】
図２４は、図２２の遷移情報管理部１５が行う遷移情報生成処理を説明するフローチャートである。
【０４０４】
遷移情報管理部１５は、現在時刻である時刻tの認識結果情報［m*，Sm*t={sm*t-W+1,・・・,sm*t}］が、認識部１４から出力されるのを待って、ステップＳ１５１において受信し、処理は、ステップＳ１５２に進む。
【０４０５】
ステップＳ１５２では、遷移情報管理部１５は、時刻tのフェーズ#f=mod(t,W)を求め、処理は、ステップＳ１５３に進む。
【０４０６】
ステップＳ１５３では、遷移情報管理部１５は、情報時系列バッファ４１（図２２）のフェーズ#fの記憶領域に、認識部１４からの時刻tの認識結果情報［m*，Sm*t］を記憶させ、処理は、ステップＳ１５４に進む。
【０４０７】
ステップＳ１５４では、遷移情報管理部１５の情報更新部４２は、情報時系列バッファ４１のフェーズ#fの記憶領域に記憶された時刻tの認識結果情報と、時刻t-Wの認識結果情報とを用いて、時刻t-Wから時刻tまでの各状態遷移を表すW個の認識値セットを検出する。
【０４０８】
すなわち、情報更新部４２は、図２３で説明したように、時刻tの認識結果情報と、時刻t-Wの認識結果情報とを、時刻順に連結して、時刻t-2W+1ないし時刻tの各時刻の認識値の時系列順の並びである連結情報を生成する。
【０４０９】
さらに、情報更新部４２は、連結情報としての認識値の並びにおいて、時刻t-Wないし時刻tのW+1個の認識値の、隣接する認識値どうしのW個のセットを、時刻t-Wから時刻tまでの各状態遷移を表すW個の認識値セットとして検出する。
【０４１０】
その後、処理は、ステップＳ１５４からステップＳ１５５に進み、情報更新部４２は、時刻t-Wから時刻tまでの各状態遷移を表すW個の認識値セットを用いて、モジュール状態間遷移情報を生成し、そのモジュール状態間遷移情報によって、ACHMM記憶部１６に記憶されたモジュール状態間遷移情報頻度テーブル（図２３）を更新する。
【０４１１】
すなわち、情報更新部４２は、W個の認識値セットのうちの、ある認識値セットを、注目認識値セットとして注目し、注目認識値セットのうちの、時間的に先行する認識値を、遷移元モジュール、及び、遷移元状態とするとともに、時間的に後行する認識値を、遷移先モジュール、及び、遷移先状態とするモジュール状態間遷移情報（以下、注目認識値セットに対応するモジュール状態間遷移情報ともいう）が、ACHMM記憶部１６に記憶されたモジュール状態間遷移情報頻度テーブルに登録されているかどうかを調査する。
【０４１２】
そして、情報更新部４２は、注目認識値セットに対応するモジュール状態間遷移情報が、モジュール状態間遷移情報頻度テーブルに登録されていない場合には、注目認識値セットのうちの、時間的に先行するモジュール及び状態と、時間的に後行するモジュール及び状態とを、それぞれ、遷移元モジュール、及び、遷移元状態と、遷移先モジュール、及び、遷移先状態ととし、かつ、頻度を初期値としての1とするモジュール状態間遷移情報を新規に生成する。
【０４１３】
さらに、情報更新部４２は、新規に生成したモジュール状態間遷移情報を、ACHMM記憶部１６に記憶されたモジュール状態間遷移頻度テーブルの、新たな1レコードとして登録する。
【０４１４】
また、情報更新部４２は、注目認識値セットに対応するモジュール状態間遷移情報が、モジュール状態間遷移情報頻度テーブルに登録されている場合には、注目認識値セットに対応するモジュール状態間遷移情報の頻度を1だけインクリメントしたモジュール状態間遷移情報を生成し、そのモジュール状態間遷移情報によって、ACHMM記憶部１６に記憶されたモジュール状態間遷移頻度テーブルを更新する。
【０４１５】
モジュール状態間遷移頻度テーブルの更新後、処理は、ステップＳ１５５からステップＳ１５６に進み、情報更新部４２は、更新後のモジュール状態間遷移頻度テーブルのモジュール状態間遷移情報を、状態について周辺化し、あるモジュール（の任意の状態）と、そのモジュールを含む任意のモジュール（の任意の状態）との間の状態遷移（モジュール間遷移）の遷移情報であるモジュール間遷移情報を生成する。
【０４１６】
そして、情報更新部４２は、更新後のモジュール状態間遷移頻度テーブルを用いて生成したモジュール間遷移情報を登録したモジュール間遷移情報テーブル（図２３）を生成し、そのモジュール間遷移情報テーブルを、ACHMM記憶部１６に記憶させる（古いモジュール間遷移情報テーブルが記憶されている場合には、上書きする）。
【０４１７】
その後、認識部１４から遷移情報管理部１５に対して、次の時刻の認識結果情報が出力されるのを待って、処理は、ステップＳ１５６からステップＳ１５１に戻り、以下、同様の処理が繰り返される。
【０４１８】
なお、図２４の遷移情報生成処理において、ステップＳ１５６は、スキップすることができる。
【０４１９】
［HMM構成部１７の構成例］
【０４２０】
図２５は、図１のHMM構成部１７の構成例を示すブロック図である。
【０４２１】
ここで、局所構造（スモールワールド）として、小規模なHMMを採用するACHMMの学習では、競合学習型の学習（競合学習）、又は、新規モジュールのHMMパラメータを更新するモジュール追加型の学習が、適応的に行われるので、モデル化対象が、モデル化に、大規模なHMMが必要な対象であっても、ACHMMの学習の収束性は、大規模なHMMの学習に比較して極めて良い（高い）。
【０４２２】
また、ACHMMは、モデル化対象から観測される観測値の観測空間を、モジュールに相当する部分空間に分割し、さらに、部分空間を、その部分空間に相当するモジュールであるHMMの状態に相当する単位に、より細かく分割（状態分割）する。
【０４２３】
したがって、ACHMMによれば、観測値について、粗密２層構造の認識（状態認識）、すなわち、モジュールの単位で、いわば粗い認識をすることと、HMMの状態の単位で、いわば細かい（密な）認識をすることができる。
【０４２４】
一方、ACHMMのモデルパラメータとしての、局所構造を学習するモジュールであるHMMのHMMパラメータと、ACHMMにおける各状態遷移の頻度の情報である遷移情報とは、それぞれ、モジュール学習処理（図９、図１７）と、遷移情報生成処理（図２４）という、性質の異なる学習で獲得されるが、これらのHMMパラメータと遷移情報とを統合して、ACHMM全体を、確率的状態遷移モデルとして再表現した方が、図１の学習装置の後段で処理を行うブロックにとって、都合が良い場合がある。
【０４２５】
そのような都合の良い場合としては、例えば、図１の学習装置を、後述するような、自律的に行動する（アクションを行う）エージェントに適用する場合がある。
【０４２６】
そこで、HMM構成部１７は、ACHMMのモジュールどうしを結合することで、1個のモジュールのHMMより大規模な1個のHMMである結合HMMを構成（再構成）する。
【０４２７】
すなわち、HMM構成部１７は、連結部５１、正規化部５２、頻度行列生成部５３、頻度化部５４、平均化部５５、及び、正規化部５６を含む。
【０４２８】
ここで、結合HMMのモデルパラメータλUを、λU={aUij，μUi，(σ2)Ui，πUi，i=1,2,・・・,N×M，j=1,2,・・・,N×M}と表すこととする。aUij，μUi，(σ2)Ui，πUiは、それぞれ、結合HMMの状態遷移確率、平均ベクトル、分散、初期確率を表す。
【０４２９】
連結部５１には、ACHMM記憶部１６に記憶されているACHMMのモジュールであるHMMのHMMパラメータλmのうちの、平均ベクトルμmi、分散(σ2)mj、及び、初期確率πmiが供給される。
【０４３０】
連結部５１は、ACHMM記憶部１６からの、ACHMMのすべてのモジュールの平均ベクトルμmiを連結することにより、結合HMMの平均ベクトルμUiを求めて出力する。
【０４３１】
また、連結部５１は、ACHMM記憶部１６からの、ACHMMのすべてのモジュールの分散(σ2)miを連結することにより、結合HMMの分散(σ2)Uiを求めて出力する。
【０４３２】
さらに、連結部５１は、ACHMM記憶部１６からの、ACHMMのすべてのモジュールの初期確率πmiを連結し、その連結結果を、正規化部５２に供給する。
【０４３３】
正規化部５２は、連結部５１からの、ACHMMのすべてのモジュールの初期確率πmiの連結結果を、総和が1.0になるように正規化することにより、結合HMMの初期確率πUiを求めて出力する。
【０４３４】
頻度行列生成部５３には、ACHMM記憶部１６に記憶されているACHMMのモデルパラメータのうちの、遷移情報（モジュール状態間遷移情報）が登録されたモジュール状態間遷移頻度テーブル（図２３）が供給される。
【０４３５】
頻度行列生成部５３は、ACHMM記憶部１６からのモジュール状態間遷移頻度テーブルを参照し、ACHMMの（各モジュールの）任意の状態どうしの間の状態遷移の頻度（回数）をコンポーネントとする行列である頻度行列を生成し、頻度化部５４、及び、平均化部５５に供給する。
【０４３６】
頻度化部５４には、頻度行列生成部５３から、頻度行列が供給される他、ACHMM記憶部１６に記憶されているACHMMのモジュールであるHMMのHMMパラメータλmのうちの、状態遷移確率amijが供給される。
【０４３７】
頻度化部５４は、頻度行列生成部５３からの頻度行列に基づき、ACHMM記憶部１６からの状態遷移確率amijを、対応する状態遷移の頻度に換算し、その頻度をコンポーネントとする行列である頻度化遷移行列を平均化部５５に供給する。
【０４３８】
平均化部５５は、頻度行列生成部５３からの頻度行列と、頻度化部５４からの頻度化遷移行列とを平均化し、その結果得られる行列である平均化頻度行列を、正規化部５６に供給する。
【０４３９】
正規化部５６は、平均化部５５からの平均化頻度行列のコンポーネントとしての頻度のうちの、ACHMMの1つの状態から、ACHMMのすべての状態それぞれへの状態遷移の頻度の総和が1.0となるように、平均化頻度行列のコンポーネントとしての頻度を正規化することにより、頻度を確率化することで、結合HMMの状態遷移確率aUijを求めて出力する。
【０４４０】
図２６は、図２５のHMM構成部１７による結合HMMの構成の方法、すなわち、結合HMMのHMMパラメータである状態遷移確率aUij、平均ベクトルμUi、分散(σ2)Ui、及び、初期確率πUiを求める方法を説明する図である。
【０４４１】
なお、図２６では、ACHMMが、３つのモジュール#1,#2,#3で構成されることとしてある。
【０４４２】
まず、結合HMMの観測確率を規定する平均ベクトルμUi、及び、分散(σ2)Uiの求め方を説明する。
【０４４３】
観測値がD次元のベクトルである場合、1個のモジュール#mの観測確率を規定する平均ベクトルμmi、及び、分散(σ2)miは、それぞれ第d行のコンポーネントを、ベクトルμmi、及び、分散(σ2)miの第d次元のコンポーネントとするD次元の列ベクトルで表すことができる。
【０４４４】
さらに、1個のモジュール#mのHMMの状態数がNである場合、1個のモジュール#mの（すべての状態siについての）平均ベクトルμmiの集合は、第i列のコンポーネントを、D次元の列ベクトルである平均ベクトルμmiとする、D行N列の行列で表すことができる。
【０４４５】
同様に、1個のモジュール#mの（すべての状態siについての）分散(σ2)miの集合は、第i列のコンポーネントを、D次元の列ベクトルである分散(σ2)miとする、D行N列の行列で表すことができる。
【０４４６】
連結部５１（図２５）は、ACHMMのすべてのモジュール#1ないし#3それぞれの平均ベクトルμ1iないしμ3iのD行N列の行列を、図２６に示すように、モジュールインデクスmの昇順に、列方向（横方向）に並べて連結することにより、結合HMMの平均ベクトルμUiの行列を求める。
【０４４７】
同様に、連結部５１は、ACHMMのすべてのモジュール#1ないし#3それぞれの分散(σ2)1iないし(σ2)3iのD行N列の行列を、図２６に示すように、モジュールインデクスmの昇順に、列方向に並べて連結することにより、結合HMMの分散(σ2)Uiの行列を求める。
【０４４８】
ここで、結合HMMの平均ベクトルμUiの行列、及び、結合HMMの分散(σ2)Uiの行列は、いずれも、D行3×N列の行列となる。
【０４４９】
次に、結合HMMの初期確率πUiの求め方を説明する。
【０４５０】
上述したように、1個のモジュール#mのHMMの状態数がNである場合、1個のモジュール#mの初期確率πmiの集合は、状態siの初期確率πmiを、第i行のコンポーネントとするN次元の列ベクトルで表すことができる。
【０４５１】
連結部５１（図２５）は、ACHMMのすべてのモジュール#1ないし#3それぞれの初期確率π1iないしπ3iであるN次元の列ベクトルを、図２６に示すように、モジュールインデクスmの昇順に、行方向（縦方向）に並べて連結し、その連結結果である3×N次元の列ベクトルを、正規化部５２に供給する。
【０４５２】
正規化部５２（図２５）は、連結部５１からの連結結果である3×N次元の列ベクトルのコンポーネントを、そのコンポーネントの総和が1.0になるように正規化することにより、結合HMMの初期確率πUiの集合である3×N次元の列ベクトルを求める。
【０４５３】
次に、結合HMMの状態遷移確率aUijの求め方を説明する。
【０４５４】
上述したように、1個のモジュール#mのHMMの状態数がNである場合、3個のモジュール#1ないし#3から構成されるACHMMの状態の総数は、3×N個であり、したがって、3×N個の状態から、3×N個の状態への状態遷移が存在する。
【０４５５】
頻度行列生成部５３（図２５）は、モジュール状態間遷移頻度テーブルを参照し、3×N個の状態それぞれを遷移元の状態として、その遷移元の状態から、3×N個の状態それぞれを遷移先の状態とする状態遷移の頻度をコンポーネントとする行列である頻度行列を生成する。
【０４５６】
頻度行列は、3×N個の状態のうちのi番目の状態から、j番目の状態への状態遷移の頻度を、第i行第j列のコンポーネントとする3×N行3×N列の行列となる。
【０４５７】
なお、3×N個の状態の順番は、3個のモジュール#1ないし#3の状態を、モジュールインデクスmの昇順に並べてカウントすることとする。
【０４５８】
この場合、3×N行3×N列の頻度行列において、第1行ないし第N行のコンポーネントは、モジュール#1の状態を遷移元の状態とする状態遷移の頻度を表す。同様に、第N+1行ないし第2×N行のコンポーネントは、モジュール#2の状態を遷移元の状態とする状態遷移の頻度を表し、第2×N+1行ないし第3×N行のコンポーネントは、モジュール#3の状態を遷移元の状態とする状態遷移の頻度を表す。
【０４５９】
一方、頻度化部５４は、頻度行列生成部５３で生成された頻度行列に基づき、ACHMMを構成する3個のモジュール#1ないし#3それぞれの状態遷移確率a1ijないしa3ijを、対応する状態遷移の頻度に換算し、その頻度をコンポーネントとする行列である頻度化遷移行列を生成する。
【０４６０】
平均化部５５は、頻度行列生成部５３で生成された頻度行列と、頻度化部５４で生成された頻度化遷移行列とを平均化することで、3×N行3×N列の平均化頻度行列を生成する。
【０４６１】
正規化部５６は、平均化部５５で生成された平均化頻度行列のコンポーネントである頻度を確率化することで、結合HMMの状態遷移確率aUijを、第i行第j列のコンポーネントとする3×N行3×N列の行列を求める。
【０４６２】
図２７は、図２５のHMM構成部１７による、結合HMMのHMMパラメータである状態遷移確率aUij、平均ベクトルμUi、分散(σ2)Ui、及び、初期確率πUiを求める方法の具体例を説明する図である。
【０４６３】
なお、図２７では、図２６と同様に、ACHMMが、３つのモジュール#1,#2,#3で構成されることとしてある。
【０４６４】
さらに、図２７では、観測値の次元数Dが、2次元であるとし、1個のモジュール#mのHMMの状態数Nが3であるとしてある。
【０４６５】
また、図２７において、上付のTは、転置を表す。
【０４６６】
まず、結合HMMの観測確率を規定する平均ベクトルμUi、及び、分散(σ2)Uiの求め方を説明する。
【０４６７】
観測値の次元数Dが、2次元であるとし、1個のモジュール#mのHMMの状態数Nが3である場合、図２６で説明したことから、1個のモジュール#mの平均ベクトルμmiは、第d行のコンポーネントを、平均ベクトルμmiの第d次元のコンポーネントとする2次元の列ベクトルで表され、1個のモジュール#mの（すべての状態siについての）平均ベクトルμmiの集合は、第i列のコンポーネントを、2次元の列ベクトルである平均ベクトルμmiとする、2行3列の行列で表される。
【０４６８】
同様に、1個のモジュール#mの分散(σ2)miは、第d行のコンポーネントを、分散(σ2)miの第d次元のコンポーネントとする2次元の列ベクトルで表され、1個のモジュール#mの（すべての状態siについての）分散(σ2)miの集合は、第i列のコンポーネントを、2次元の列ベクトルである分散(σ2)miとする、2行3列の行列で表される。
【０４６９】
なお、図２７では、平均ベクトルμmiの集合としての行列、及び、分散(σ2)miの集合としての行列は、いずれも、転置されており、3行2列の行列で表されている。
【０４７０】
連結部５１（図２５）は、ACHMMのすべてのモジュール#1ないし#3それぞれの平均ベクトルμ1iないしμ3iの2行3列の行列を、モジュールインデクスmの昇順に、列方向（横方向）に並べて連結することにより、結合HMMの平均ベクトルμUiの行列である2行9(=3×3)列の行列を求める。
【０４７１】
同様に、連結部５１は、ACHMMのすべてのモジュール#1ないし#3それぞれの分散(σ2)1iないし(σ2)3iの2行3列の行列を、モジュールインデクスmの昇順に、列方向に並べて連結することにより、結合HMMの分散(σ2)Uiの行列である2行9列の行列を求める。
【０４７２】
なお、図２７では、平均ベクトルμmiの集合としての行列、及び、分散(σ2)miの集合としての行列は、いずれも、転置されているため、連結は、行方向（縦方向）に行われている。さらに、その結果、結合HMMの平均ベクトルμUiの行列、及び、分散(σ2)Uiの行列は、2行9列の行列を転置した9行2列の行列になっている。
【０４７３】
次に、結合HMMの初期確率πUiの求め方を説明する。
【０４７４】
1個のモジュール#mのHMMの状態数Nが3である場合、図２６で説明したことから、1個のモジュール#mの初期確率πmiの集合は、状態siの初期確率πmiを、第i行のコンポーネントとする3次元の列ベクトルで表される。
【０４７５】
連結部５１（図２５）は、ACHMMのすべてのモジュール#1ないし#3それぞれの初期確率π1iないしπ3iである3次元の列ベクトルを、モジュールインデクスmの昇順に、行方向（縦方向）に並べて連結し、その連結結果である9(=3×3)次元の列ベクトルを、正規化部５２に供給する。
【０４７６】
正規化部５２（図２５）は、連結部５１からの連結結果である9次元の列ベクトルのコンポーネントを、そのコンポーネントの総和が1.0になるように正規化することにより、結合HMMの初期確率πUiの集合である9次元の列ベクトルを求める。
【０４７７】
次に、結合HMMの状態遷移確率aUijの求め方を説明する。
【０４７８】
1個のモジュール#mのHMMの状態数Nが3である場合、3個のモジュール#1ないし#3から構成されるACHMMの状態の総数は、9(=3×3)個であり、したがって、9個の状態から、9個の状態への状態遷移が存在する。
【０４７９】
頻度行列生成部５３（図２５）は、モジュール状態間遷移頻度テーブルを参照し、9個の状態それぞれを遷移元の状態として、その遷移元の状態から、9個の状態それぞれを遷移先の状態とする状態遷移の頻度をコンポーネントとする行列である頻度行列を生成する。
【０４８０】
頻度行列は、9個の状態のうちのi番目の状態から、j番目の状態への状態遷移の頻度を、第i行第j列のコンポーネントとする9行9列の行列となる。
【０４８１】
ここで、ACHMMを構成する1個のモジュール#mの、i番目の状態からj番目の状態への状態遷移確率amijを、第i行第j列のコンポーネントとするN行N列の行列を、遷移行列ということとする。
【０４８２】
モジュール#mのHMMの状態数Nが3である場合、モジュール#mの遷移行列は3行3列の行列となる。
【０４８３】
図２６で説明したように、3個のモジュール#1ないし#3の状態を、モジュールインデクスmの昇順に並べて、ACHMMの9個の状態の順番をカウントすることとすると、9行9列の頻度行列において、第1行ないし第3行と、第1列ないし第3列との重複部分の3行3列の行列（以下、部分行列ともいう）は、モジュール#1の遷移行列に対応する。
【０４８４】
同様に、9行9列の頻度行列において、第4行ないし第6行と、第4列ないし第6列との重複部分の3行3列の部分行列は、モジュール#2の遷移行列に対応し、第7行ないし第9行と、第7列ないし第9列との重複部分の3行3列の部分行列は、モジュール#3遷移行列に対応する。
【０４８５】
頻度化部５４は、頻度行列において、モジュール#1の遷移行列に対応する3行3列の部分行列（以下、モジュール#1の対応部分行列ともいう）に基づき、モジュール#1の遷移行列のコンポーネントである状態遷移確率a1ijを、モジュール#1の対応部分行列のコンポーネントである頻度に相当する頻度に換算し、その頻度をコンポーネントとする3行3列のモジュール#1の頻度化遷移行列を生成する。
【０４８６】
すなわち、頻度化部５４は、モジュール#1の対応部分行列の第i行のコンポーネントである頻度の総和を求め、その総和を、モジュール#1の遷移行列の第i行のコンポーネントである状態遷移確率a1ijに乗算することで、モジュール#1の遷移行列の第i行のコンポーネントである状態遷移確率a1ijを頻度に変換（換算）する。
【０４８７】
したがって、例えば、図２７に示すように、頻度行列の、第1行ないし第3行と、第1列ないし第3列との重複部分の、モジュール#1の対応部分行列の第1行のコンポーネントである頻度が、29,8,5であり、モジュール#1の遷移行列の第1行のコンポーネントである状態遷移確率a1ijが、0.7,0.2,0.1である場合には、モジュール#1の対応部分行列の第1行の頻度の総和は、42=(29+8+5)であるから、モジュール#1の遷移行列の第1行の状態遷移確率a1ijである0.7,0.2,0.1は、それぞれ、頻度29.4(=0.7×42)，8.4(=0.2×42)，4.2(=0.1×42)に変換される。
【０４８８】
頻度化部５４は、モジュール#1の頻度化遷移行列と同様にして、ACHMMを構成する他のモジュールであるモジュール#2及び#3それぞれの頻度化遷移行列も生成する。
【０４８９】
そして、平均化部５５は、頻度行列生成部５３で生成された9行9列の頻度行列と、頻度化部５４で生成されたモジュール#1ないし#3それぞれの頻度化遷移行列とを平均化することで、9行9列の平均化頻度行列を生成する。
【０４９０】
すなわち、平均化部５５は、9行9列の頻度行列において、モジュール#1の対応部分行列の各コンポーネントを、そのコンポーネントと、そのコンポーネントに対応する、モジュール#1の頻度化遷移行列のコンポーネントとの平均値によって更新（上書き）する。
【０４９１】
同様に、平均化部５５は、9行9列の頻度行列において、モジュール#2の対応部分行列の各コンポーネントを、そのコンポーネントと、そのコンポーネントに対応する、モジュール#2の頻度化遷移行列のコンポーネントとの平均値によって更新するとともに、モジュール#3の対応部分行列の各コンポーネントを、そのコンポーネントと、そのコンポーネントに対応する、モジュール#3の頻度化遷移行列のコンポーネントとの平均値によって更新する。
【０４９２】
正規化部５６は、平均化部５５において、上述したように、平均値で更新された頻度行列である9行9列の平均化頻度行列のコンポーネントである頻度を確率化することで、結合HMMの状態遷移確率aUijを、第i行第j列のコンポーネントとする9行9列の行列を求める。
【０４９３】
すなわち、正規化部５６は、9行9列の平均化頻度行列の各行のコンポーネントを、その行のコンポーネントの総和が1.0になるように正規化することで、結合HMMの状態遷移確率aUijを、第i行第j列のコンポーネントとする9行9列の行列（この行列も、遷移行列という）を求める。
【０４９４】
なお、図２６及び図２７では、モジュール状態間遷移頻度テーブルと、モジュールのHMMの状態遷移確率とを用いて、結合HMMの状態遷移確率aUijを求めることとしたが、結合HMMの状態遷移確率aUijは、モジュール状態間遷移頻度テーブルだけを用いて生成することが可能である。
【０４９５】
すなわち、図２６及び図２７では、モジュール状態間遷移頻度テーブルから生成された頻度行列と、モジュール#1ないし#3の遷移行列から生成された頻度化遷移行列とを平均化し、その結果得られる平均化頻度行列を確率化することで、結合HMMの状態遷移確率aUijを求めることとしたが、結合HMMの状態遷移確率aUijは、モジュール状態間遷移頻度テーブルから生成された頻度行列そのものを確率化することだけで求めることが可能である。
【０４９６】
以上のように、ACHMMから結合HMMを再構成することができるので、大規模な（表現能力の高い）HMMでなければ表現することが困難なモデル化対象を、まず、ACHMMで効率良く学習しておき、このACHMMから結合HMMを再構成することで、効率良く、適切な規模の、適切なネットワーク構造（状態遷移）をもつHMMの形で、モデル化対象の統計的(確率的）状態遷移モデルを獲得することが可能となる。
【０４９７】
なお、場合によっては、結合HMMを再構成した後、その結合HMM（のHMMパラメータ）を、初期値として、Baum-Welchの再推定法等に従った一般のHMMの学習を行うことで、モデル化対象をより適切に表現する、より精度の高いHMMを獲得することができる。
【０４９８】
また、結合HMMは、1個のモジュールのHMMより大規模なHMMであり、大規模なHMMの追加学習は、大規模なゆえに、効率良く行うことが困難である。そこで、追加学習の必要が生じた場合には、追加学習は、ACHMMで行い、後述するプランニング処理等のように、ACHMMの状態すべてを対象とした状態遷移を考慮して、状態系列（最尤状態系列）を、高精度に推定する必要がある場合には、そのような状態系列の推定は、（追加学習後の）ACHMMから再構成される結合HMMで行うことができる。
【０４９９】
ここで、上述の場合には、HMM構成部１７において、ACHMMを構成するモジュールのすべてを結合した結合HMMを構成することとしたが、HMM構成部１７では、ACHMMを構成するモジュールの一部である複数のモジュールを結合した結合HMMを構成することが可能である。
【０５００】
［学習装置を適用したエージェントの構成例］
【０５０１】
図２８は、図１の学習装置を適用したエージェントの一実施の形態（第１実施の形態）の構成例を示すブロック図である。
【０５０２】
図２８のエージェントは、例えば、移動可能な環境（移動環境）から観測される観測値を知覚（センシング）し、その知覚した観測値に基づいて、移動等のアクションを行う（行動をとる）移動型ロボット等の、自律的にアクションを行うことができるエージェントであり、移動環境から観測した観測値と、エージェントがアクションを行うのに、モータ等のアクチュエータに与えるべきアクション信号とに基づいて、移動環境のモデルを構築し、そのモデル上での任意の内部知覚状態を実現するためのアクション（行動）を行う。
【０５０３】
そして、図２８のエージェントは、移動環境のモデルの構築を、ACHMMを用いて行う。
【０５０４】
移動環境のモデルの構築を、ACHMMを用いて行う場合には、エージェントは、エージェント自身がおかれた移動環境の規模や構造の事前知識を必要としない。エージェントは、移動環境内を移動し、経験を積んでいく過程として、ACHMMの学習（モジュール学習）を行い、移動環境の規模に適した数のモジュールで構成される、移動環境の状態遷移モデルとしてのACHMMを構築する。
【０５０５】
すなわち、エージェントは、移動環境を移動しながら、移動環境から観測される観測値を、ACHMMにより逐次学習する。ACHMMの学習によって、様々な観測値の時系列が観測されたときにいる状態（内部状態）を特定するための情報が、モジュールのHMMパラメータ、及び、遷移情報として獲得される。
【０５０６】
また、エージェントは、ACHMMの学習と同時に、各状態遷移（又は、各状態）について、その状態遷移が生じるときに観測された観測値と、行われたアクションのアクション信号（あるアクションを行うのに、アクチュエータに与えるべき信号）との関係を学習する。
【０５０７】
そして、エージェントは、ACHMMの状態のうちの１つの状態が、目標となる目標状態として与えられると、ACHMMから再構成される結合HMMを用いて、移動環境内のエージェントの現在地に対応する状態（現在状態）から、目標状態までの、ある状態系列を、現在状態から目標状態に辿り着くプランとして求めるプランニングを行う。
【０５０８】
さらに、エージェントは、学習で獲得した、各状態遷移についての、観測値とアクション信号との関係に基づいて、プランとしての状態系列の状態遷移が生じるアクションを行うことで、現在地から、目標状態に対応する移動環境内の位置まで移動する。
【０５０９】
図２８のエージェントは、以上のような移動環境のACHMMによる学習、各状態遷移についての観測値とアクション信号との関係の学習、プランニング、及び、プランに従ったアクションを行うために、センサ７１、観測時系列バッファ７２、モジュール学習部７３、認識部７４、遷移情報管理部７５、ACHMM記憶部７６、HMM構成部７７、プランニング部８１、アクションコントローラ８２、駆動部８３、及び、アクチュエータ８４を含む。
【０５１０】
センサ７１ないしHMM構成部７７は、図１の学習装置のセンサ１１ないしHMM構成部１７とそれぞれ同様に構成される。
【０５１１】
なお、センサ７１としては、エージェントから、前、後ろ、左、及び、右の4方向を含む複数の方向の、移動環境内の間近の壁までの距離を測定する距離センサを採用することができる。この場合、センサ７１は、複数の方向の距離をコンポーネントとするベクトルを、観測値として出力する。
【０５１２】
プランニング部８１には、図示せぬブロックから目標状態（を表すインデクス）が供給されるとともに、認識部７４が出力する、現在時刻tの観測値otの認識結果情報［m*，sm*t］が供給される。
【０５１３】
さらに、プランニング部８１には、HMM構成部７７から、結合HMMが供給される。
【０５１４】
ここで、目標状態は、例えば、ユーザの操作等に応じて、外部から指定することや、エージェントに、ACHMMの状態のうちの、複数の観測値の観測確率が高い状態等を目標状態とする動機等に従って、目標状態を設定する動機システムを内蔵させ、その動機システムで、目標状態を設定すること等によって、プランニング部８１に供給される。
【０５１５】
また、ACHMMを用いた認識（状態認識）では、ACHMMの状態の中で、現在状態となっている状態は、認識結果情報［m*，sm*t］を構成する最大尤度モジュール#m*のモジュールインデクスと、その最大尤度モジュール#m*であるHMMの状態のうちのいずれかの状態sm*tのインデクスとによって特定されるが、以下では、ACHMMの状態すべての中の現在状態（となっている状態）を、認識結果情報［m*，sm*t］のsm*tだけを用いて、状態sm*tとも表す。
【０５１６】
プランニング部８１は、結合HMMにおいて、認識部７４からの現在状態sm*tから、目標状態までの状態遷移の尤度が最大の状態の系列である最尤状態系列を、現在状態sm*tから目標状態に辿り着くプランとして求めるプランニングを行う。
【０５１７】
プランニング部８１は、プランニングによって求めたプランを、アクションコントローラ８２に供給する。
【０５１８】
なお、ここでは、プランニングに用いる現在状態として、ACHMMを用いた現在時刻tの観測値otの認識の結果得られる、最大尤度モジュール#m*において、状態確率が最大の状態sm*tを採用するが、プランニングに用いる現在状態としては、結合HMMを用いた現在時刻tの観測値otの認識の結果得られる、結合HMMにおいて、状態確率が最大の状態を採用することが可能である。
【０５１９】
結合HMMにおいて、状態確率が最大の状態は、結合HMMにおいて、現在時刻tの時系列データOtが観測される尤度が最大の状態遷移が生じる状態系列（最尤状態系列）を、ビタビ法に従って求めたときの、その最尤状態系列の最後の状態となる。
【０５２０】
アクションコントローラ８２には、プランニング部８１から、プランが供給される他、観測時系列バッファ７２から、現在時刻tの観測値otが、認識部７４から、現在時刻tの観測値otの認識結果情報［m*，sm*t］が、駆動部８３から、現在時刻tの観測値otが観測されたときに（直後に）アクチュエータ８４に与えられたアクション信号Atが、それぞれ供給される。
【０５２１】
アクションコントローラ８２は、例えば、ACHMMの学習時等に、各状態遷移について、その状態遷移が生じるときに観測された観測値と、行われたアクションのアクション信号との関係を学習する。
【０５２２】
すなわち、アクションコントローラ８２は、認識部７４からの認識結果情報［m*，sm*t］を用いて、1時刻前の時刻t-1から現在時刻tにかけて生じた状態遷移（1時刻前の時刻t-1の現在状態sm*t-1から、現在時刻tの現在状態sm*tへの状態遷移）（以下、時刻t-1の状態遷移ともいう）を認識する。
【０５２３】
さらに、アクションコントローラ８２は、時刻t-1の状態遷移と対応付けて、観測時系列バッファ７２からの時刻t-1の観測値ot-1と、駆動部８３からの時刻t-1のアクション信号At-1とのセット、つまり、時刻t-1の状態遷移が生じるときに観測された観測値ot-1と、行われたアクションのアクション信号At-1とのセットを記憶する。
【０５２４】
そして、アクションコントローラ８２は、ACHMMの学習の進行とともに、各状態遷移について、その状態遷移が生じるときに観測された観測値と、行われたアクションのアクション信号とのセットを多数収集すると、各状態遷移について、その状態遷移に対応付けられている観測値とアクション信号とのセットを用いて、観測値を入力として、アクション信号を出力する関数であるアクション関数を求める。
【０５２５】
すなわち、アクションコントローラ８２は、例えば、ある観測値oが、1つのアクション信号Aとのみセットになっている場合は、観測値oに対して、アクション信号Aを出力するアクション関数を求める。
【０５２６】
また、アクションコントローラ８２は、例えば、ある観測値oが、あるアクション信号Aとセットになっていることや、他のアクション信号A'とセットになっていることがある場合には、観測値oとアクション信号Aとのセットの数cと、観測値oと他のアクション信号A'とのセットの数c'とをカウントし、観測値oに対して、c/(c+c')の割合で、アクション信号Aを出力するとともに、c'/(c+c')の割合で、他のアクション信号A'を出力するアクション関数を求める。
【０５２７】
アクションコントローラ８２は、各状態遷移ついて、アクション関数を求めた後は、プランニング部８１から供給されるプランである最尤状態系列の状態遷移を生じさせるために、その状態遷移についてのアクション関数に、観測時系列バッファ７２からの観測値otを入力として与えることで、アクション関数が出力するアクション信号を、エージェントが次に行うべきアクションのアクション信号として求める。
【０５２８】
そして、アクションコントローラ８２は、そのアクション信号を、駆動部８３に供給する。
【０５２９】
駆動部８３は、アクションコントローラ８２からアクション信号が供給されない場合、すなわち、アクションコントローラ８２において、アクション関数が、まだ求められていない場合には、例えば、あらかじめ定められたルールに従ったアクション信号を、アクチュエータ８４に供給することで、アクチュエータ８４を駆動する。
【０５３０】
すなわち、あらかじめ定められたルールには、例えば、各値の観測値が観測されたときに、エージェントを移動させる方向が規定されており、駆動部８３は、ルールに規定されている方向の移動のアクションを行うためのアクション信号を、アクチュエータ８４に供給する。
【０５３１】
なお、駆動部８３は、あらかじめ定められたルールに従ったアクション信号を、アクチュエータ８４の他、アクションコントローラ８２にも供給する。
【０５３２】
また、駆動部８３は、アクションコントローラ８２からアクション信号が供給される場合には、そのアクション信号を、アクチュエータ８４に供給することで、アクチュエータ８４を駆動する。
【０５３３】
アクチュエータ８４は、例えば、エージェントを移動させる車輪や足を駆動するモータ等であり、駆動部８３からのアクション信号に従って駆動する。
【０５３４】
［アクション関数を求める学習の処理］
【０５３５】
図２９は、図２８のアクションコントローラ８２が、アクション関数を求める学習の処理を説明するフローチャートである。
【０５３６】
ステップＳ１６１において、アクションコントローラ８２は、観測時系列バッファ７２から、現在時刻tの（最新の）観測値otが供給されるのを待って、その観測値otを受信し、処理は、ステップＳ１６２に進む。
【０５３７】
ステップＳ１６２では、アクションコントローラ８２は、認識部７４が、観測値otに対して、その観測値otの認識結果情報［m*，sm*t］を出力するのを待って、その認識結果情報［m*，sm*t］を受信し、処理は、ステップＳ１６３に進む。
【０５３８】
ステップＳ１６３では、アクションコントローラ８２は、1時刻前のステップＳ１６１で観測時系列バッファ７２から受信した観測値（以下、前回の観測値ともいう）ot-1と、1時刻前の後述するステップＳ１６４で駆動部８３から受信したアクション信号（以下、前回のアクション信号ともいうAt-1とのセットを、1時刻前のステップＳ１６２で認識部７４から受信した認識結果情報［m*，sm*t-1］から特定される1時刻前の現在状態（以下、前回の状態ともいう）sm*t-1から、直前のステップＳ１６２で認識部７４から受信した認識結果情報［m*，sm*t］から特定される現在状態sm*tへの状態遷移（時刻t-1の状態遷移）と対応付け、アクション関数の学習用のデータ（以下、アクション学習データともいう）として、一時記憶する。
【０５３９】
その後、駆動部８３から、アクションコントローラ８２に対して、現在時刻tのアクション信号Atが供給されるのを待って、処理は、ステップ１６３からステップＳ１６４に進み、アクションコントローラ８２は、駆動部８３があらかじめ定められたルールに従って出力する現在時刻tのアクション信号Atを受信して、処理は、ステップＳ１６５に進む。
【０５４０】
ステップＳ１６５では、アクションコントローラ８２は、アクション関数を求めるのに十分な数（例えば、あらかじめ定められた数）のアクション学習データが得られたかどうかを判定する。
【０５４１】
ステップＳ１６５において、また、十分な数のアクション学習データが得られていないと判定された場合、処理は、ステップＳ１６１に戻り、以下、同様の処理が繰り返される。
【０５４２】
また、ステップＳ１６５において、十分な数のアクション学習データが得られたと判定された場合、処理は、ステップＳ１６６に進み、アクションコントローラ８２は、各状態遷移について、その状態遷移と対応付けられて、アクション学習データにおいてセットになっている観測値とアクション信号とを用いて、観測値を入力として、アクション信号を出力するアクション関数を求め、処理は、終了する。
【０５４３】
［アクション制御処理］
【０５４４】
図３０は、図２８のプランニング部８１、アクションコントローラ８２、駆動部８３、及び、アクチュエータ８４が行う、エージェントのアクションを制御するアクション制御処理を説明するフローチャートである。
【０５４５】
ステップＳ１７１において、プランニング部８１は、HMM構成部７７から供給される結合HMMの状態のうちの１つの状態が、目標状態#g（インデクスがgの状態）として与えられるのを待って、その目標状態#gを受信し、処理は、ステップＳ１７２に進む。
【０５４６】
ステップＳ１７２では、プランニング部８１は、観測時系列バッファ７２から現在時刻tの観測値otが供給されるのを待って、その観測値otを受信し、処理は、ステップＳ１７３に進む。
【０５４７】
ステップＳ１７３では、プランニング部８１、及び、アクションコントローラ８２は、認識部７４が、観測値otに対する認識結果情報［m*，sm*t］を出力するのを待って、その認識結果情報［m*，sm*t］を受信し、現在状態sm*tを特定する。
【０５４８】
そして、処理は、ステップＳ１７３からステップＳ１７４に進み、プランニング部８１は、現在状態sm*tが、目標状態#gに一致するかどうかを判定する。
【０５４９】
ステップＳ１７４において、現在状態sm*tが、目標状態#gに一致しないと判定された場合、処理は、ステップＳ１７５に進み、プランニング部８１は、HMM構成部７７から供給される結合HMMにおいて、現在状態sm*tから、目標状態#gまでの状態遷移の尤度が最大の状態系列（最尤状態系列）を、現在状態sm*tから目標状態#gに辿り着くプランとして求めるプランニングの処理（プランニング処理）を、例えば、ビタビ法に従って行う。
【０５５０】
プランニング部８１は、プランニング処理によって求めたプランを、アクションコントローラ８２に供給し、処理は、ステップＳ１７５からステップＳ１７６に進む。
【０５５１】
なお、プランニング処理では、プランが得られない場合があり得る。プランが得られない場合、プランニング部８１は、その旨を、アクションコントローラ８２に供給する。
【０５５２】
ステップＳ１７６では、アクションコントローラ８２は、プランニング処理によって、プランが得られたかどうかを判定する。
【０５５３】
ステップＳ１７６において、プランが得られなかったと判定された場合、すなわち、プランニング部８１からアクションコントローラ８２に対して、プランが供給されなかった場合、処理は、終了する。
【０５５４】
また、ステップＳ１７６において、プランが得られたと判定された場合、すなわち、プランニング部８１からアクションコントローラ８２に対して、プランが供給された場合、処理は、ステップＳ１７７に進み、アクションコントローラ８２は、プランの最初の状態遷移、すなわち、プランにおける、現在状態sm*tから、その次の状態への情勢遷移についてのアクション関数に対して、観測時系列バッファ７２からの観測値otを入力として与えることで、アクション関数が出力するアクション信号を、エージェントが次に行うべきアクションのアクション信号として求める。
【０５５５】
そして、アクションコントローラ８２は、そのアクション信号を、駆動部８３に供給し、処理は、ステップＳ１７７からステップＳ１７８に進む。
【０５５６】
ステップＳ１７８では、駆動部８３は、アクションコントローラ８２からアクション信号を、アクチュエータ８４に供給することで、アクチュエータ８４を駆動し、処理は、ステップＳ１７２に戻る。
【０５５７】
以上のように、アクチュエータ８４が駆動されることで、エージェントは、移動環境内を、目標状態#gに対応する位置に向って移動するアクションを行う。
【０５５８】
一方、ステップＳ１７４において、現在状態sm*tが、目標状態#gに一致すると判定された場合、すなわち、例えば、エージェントが、移動環境内を移動し、目標状態#gに対応する位置に辿り着いた場合、処理は、終了する。
【０５５９】
なお、図３０のアクション制御処理では、最新の観測値otが得られるごとに（ステップＳ１７２）、つまり、時刻tごとに、現在状態sm*tが、目標状態#gに一致するかどうかを判定し（ステップＳ１７４）、現在状態sm*tが、目標状態#gに一致しない場合には、プランニング処理を行って、プランを得るようにしたが（ステップＳ１７５）、プランニング処理は、時刻tごとではなく、目標状態#gが与えられたときの１回だけ行い、その後は、アクションコントローラ８２において、１回のプランニング処理によって得られるプランの最初の状態から最後の状態までの状態遷移を生じさせるアクション信号を出力するようにすることが可能である。
【０５６０】
図３１は、図３０のステップＳ１７５のプランニング処理を説明するフローチャートである。
【０５６１】
なお、図３１のプランニング処理では、現在状態sm*tから目標状態#gまでの最尤状態系列を、ビタビ法（を応用したアルゴリズム）に従って求めるが、最尤状態系列を求める方法は、ビタビ法に限定されるものではない。
【０５６２】
ステップＳ１８１において、プランニング部８１（図２８）は、HMM構成部７７からの結合HMMの状態のうちの、認識部７４からの認識結果情報［m*，sm*t］から特定される現在状態sm*tの状態確率に、初期値としての1.0をセットする。
【０５６３】
さらに、プランニング部８１は、結合HMMの状態のうちの、現在状態sm*t以外の状態の状態確率に、初期値としての0.0をセットし、最尤状態系列の時刻を表す変数τに、初期値としての0をセットして、処理は、ステップＳ１８１からステップＳ１８２に進む。
【０５６４】
ステップＳ１８２では、プランニング部８１は、結合HMMの状態遷移確率aUijのうちの、所定の閾値（例えば、0.01等）以上の状態遷移確率aUijに、高い確率としての、例えば、0.9をセットするとともに、他の状態遷移確率aUijに、低い確率としての、例えば、0.0をセットする。
【０５６５】
ステップＳ１８２の後、処理は、ステップＳ１８３に進み、プランニング部８１は、結合HMMの各状態#j（インデクスがjの状態）について、時刻τの各状態#iの状態確率と、状態遷移確率aUijとを乗算し、その結果得られる乗算値の最大値を、時刻τ+1の状態#jの状態確率にセットする。
【０５６６】
すなわち、プランニング部８１は、状態#jについて、時刻τの各状態#iを遷移元の状態として、状態#jに状態遷移したときに、状態#jの状態確率を最大にする状態遷移を検出し、その状態遷移の遷移元の状態#iの状態確率と、その状態遷移の状態遷移確率aUijとの乗算値を、時刻τ+1の状態#jの状態確率とする。
【０５６７】
その後、処理は、ステップＳ１８３からステップＳ１８４に進み、プランニング部８１は、時刻τ+1の各状態#jについて、遷移元の状態#iを、内蔵するメモリである状態系列バッファ（図示せず）に記憶し、処理は、ステップＳ１８５に進む。
【０５６８】
ステップＳ１８５では、プランニング部８１は、（時刻τ+1の）目標状態#gの状態確率が、0.0を超える値になったかどうかを判定する。
【０５６９】
ステップＳ１８５において、目標状態#gの状態確率が、0.0を超える値になっていないと判定された場合、処理は、ステップＳ１８６に進み、プランニング部８１は、プランとして求める最尤状態系列の長さの閾値として、あらかじめ設定された値に相当する所定の回数だけ、遷移元の状態#iを、状態系列バッファに記憶したかどうかを判定する。
【０５７０】
ステップＳ１８６において、遷移元の状態#iを、所定の回数だけ、状態系列バッファに、まだ記憶していないと判定された場合、処理は、ステップＳ１８７に進み、プランニング部８１は、時刻τを1だけインクリメントする。そして、処理は、ステップＳ１８７からステップＳ１８３に戻り、以下、同様の処理が繰り返される。
【０５７１】
また、ステップＳ１８６において、遷移元の状態#iを、所定の回数だけ、状態系列バッファに記憶したと判定された場合、すなわち、現在状態sm*tから目標状態#gまでの最尤状態系列の長さが、閾値以上となる場合、処理は、リターンする。
【０５７２】
なお、この場合、プランニング部８１は、プランが得られない旨を、アクションコントローラ８２に供給する。
【０５７３】
一方、ステップＳ１８５において、目標状態#gの状態確率が、0.0を超える値になっていると判定された場合、処理は、ステップＳ１８８に進み、プランニング部８１は、目標状態#gを、現在状態sm*tから目標状態#gまでの最尤状態系列の時刻τの状態に選択して、処理は、ステップＳ１８９に進む。
【０５７４】
ステップＳ１８９では、プランニング部８１は、最尤状態系列の状態遷移の遷移先の状態#j（時刻τの状態#j）として、目標状態#gをセットし、処理は、ステップＳ１９０に進む。
【０５７５】
ステップＳ１９０では、プランニング部８１は、時刻τの状態#jへの状態遷移の遷移元の状態#iを、状態系列バッファから検出し、最尤状態系列の時刻τ-1の状態に選択して、処理は、ステップＳ１９１に進む。
【０５７６】
ステップＳ１９１では、プランニング部８１は、時刻τを1だけデクリメントして、処理は、ステップＳ１９２に進む。
【０５７７】
ステップＳ１９２では、プランニング部８１は、時刻τが0であるかどうかを判定する。
【０５７８】
ステップＳ１９２において、時刻τが0でないと判定された場合、処理は、ステップＳ１９３に進み、プランニング部８１は、最尤状態系列の状態遷移の遷移先の状態#j（時刻τの状態#j）として、直前のステップＳ１９０で最尤状態系列の状態に選択された状態#iをセットし、処理は、ステップＳ１９０に戻る。
【０５７９】
また、ステップＳ１９２において、時刻τが0であると判定された場合、すなわち、現在状態sm*tから目標状態#gまでの最尤状態系列が得られた場合、プランニング部８１は、その最尤状態系列を、プランとして、アクションコントローラ８２（図２８）に供給して、処理は、リターンする。
【０５８０】
図３２は、図２８のエージェントによるACHMMの学習の概要を説明する図である。
【０５８１】
エージェントは、移動環境内を適宜移動し、そのときに、センサ７１を通じて得られる、移動環境から観測される観測値を用いて、ACHMMの学習を行うことにより、移動環境の地図を、ACHMMによって獲得する。
【０５８２】
ここで、移動環境の地図を獲得したACHMMを用いた認識（状態認識）によって得られる現在状態sm*tは、移動環境内のエージェントの現在地に対応する。
【０５８３】
図３３は、図２８のエージェントによる結合HMMの再構成の概要を説明する図である。
【０５８４】
エージェントは、例えば、ACHMMの学習がある程度進行した後に、目標状態が与えられると、ACHMMから結合HMMを再構成する。そして、エージェントは、結合HMMを用いて、現在状態sm*tから目標状態#gまでの最尤状態系列であるプランを求める。
【０５８５】
なお、ACHMMからの結合HMMの再構成は、目標状態が与えられた場合の他、例えば、周期的なタイミングや、ACHMMのモデルパラメータが更新される等のイベントが生じたタイミング等の任意のタイミングで行うことができる。
【０５８６】
図３４は、図２８のエージェントによるプランニングの概要を説明する図である。
【０５８７】
エージェントは、上述したように、結合HMMを用いて、現在状態sm*tから目標状態#gまでの最尤状態系列であるプランを求める。
【０５８８】
エージェントは、プランに従い、そのプランの状態遷移を生じさせるアクション信号を、各状態遷移について求めておいたアクション関数に従って出力する。
【０５８９】
これにより、結合HMMでは、プランとしての最尤状態系列が得られる状態遷移が生じ、エージェントは、移動環境内の、現在状態sm*tに対応する現在地から、目標状態#gに対応する位置まで移動する。
【０５９０】
以上のようなACHMMによれば、HMMの構造や初期値をあらかじめ決定することができない未知のモデル化対象の構造学習問題に対して、HMMを利用することが可能となる。特に、大規模なHMMの構造を、適切に決定し、かつ、HMMパラメータを推定することが可能となる。さらに、HMMパラメータの再推定の計算や、状態認識の計算を効率化することが可能となる。
【０５９１】
また、ACHMMを、自律発達するエージェントに搭載することにより、エージェントは、エージェントがおかれた移動環境内を動き、経験を積んでいく過程で、適宜、ACHMMが既に有する既存のモジュールの学習や、必要な新規モジュールの追加を繰り返し、その結果、移動環境の規模や構造についての事前知識なしで、移動環境の規模に適したモジュール数で構成される、移動環境の状態遷移モデルとしてのACHMMが構築される。
【０５９２】
なお、ACHMMは、移動型ロボット等の、自律的にアクションを行うことができるエージェントの他、システムの同定、制御、人工知能等におけるモデル学習に広く応用することができる。
【０５９３】
＜第２実施の形態＞
【０５９４】
上述したように、ACHMMを、自律的にアクションを行うエージェントに適用し、エージェントにおいて、移動環境から観測される観測値の時系列を用いて、ACHMMの学習をすることにより、移動環境の地図を、ACHMMによって獲得することができる。
【０５９５】
さらに、エージェントにおいて、ACHMMから結合HMMを再構成し、その結合HMMを用いて、現在状態sm*tから目標状態#gまでの最尤状態系列であるプランを求め、そのプランに従ったアクションを行うことにより、エージェントは、移動環境内の、現在状態sm*tに対応する位置から、目標状態#gに対応する位置まで移動することができる。
【０５９６】
ところで、ACHMMから再構成された結合HMMにおいては、実際にはありえない状態遷移が、あたかも確率的に可能なように表現されることがある。
【０５９７】
すなわち、図３５は、移動環境内を移動するエージェントによるACHMMの学習と、結合HMMの再構成との例を示す図である。
【０５９８】
エージェントは、移動環境から観測される観測値の時系列を用いて、ACHMMの学習をすることにより、移動環境の構造（地図）を、状態ネットワーク（モジュールであるHMM）と、モジュール（の状態）の間の状態遷移を表す遷移情報として獲得することができる。
【０５９９】
図３５では、ACHMMは、8個のモジュールA,B,C,D,E,F,G,Hから構成されている。さらに、モジュールAは、移動環境の位置PAを中心とする局所的な領域の構造を獲得しており、モジュールBは、移動環境の位置PBを中心とする局所的な領域の構造を獲得している。
【０６００】
同様に、モジュールC,D,E,F,G,Hは、移動環境の位置PC,PD,PE,PF,PG,PHを中心とする局所的な領域の構造を、それぞれ獲得している。
【０６０１】
エージェントは、以上のようなACHMMから結合HMMを再構成し、その結合HMMを用いて、プランを求めることができる。
【０６０２】
図３６は、移動環境内を移動するエージェントによるACHMMの学習と、結合HMMの再構成との他の例を示す図である。
【０６０３】
図３６では、ACHMMは、5個のモジュールAないしEから構成されている。
【０６０４】
さらに、図３６では、モジュールAは、移動環境の位置PAを中心とする局所的な領域の構造と、位置PA'を中心とする局所的な領域の構造とを獲得している。
【０６０５】
また、モジュールBは、移動環境の位置PBを中心とする局所的な領域の構造と、移動環境の位置PB'を中心とする局所的な領域の構造とを獲得している。
【０６０６】
さらに、モジュールC,D,Eは、移動環境の位置PC,PD,PEを中心とする局所的な領域の構造を、それぞれ獲得している。
【０６０７】
すなわち、図３６の移動環境を、ある程度の粒度で巨視的に見ると、位置PAを中心とする局所的な領域（部屋）と、位置PA'を中心とする局所的な領域とは、構造が一致（又は類似）している。
【０６０８】
さらに、位置PBを中心とする局所的な領域と、移動環境の位置PB'を中心とする局所的な領域の構造とも、構造が一致している。
【０６０９】
図３６の移動環境を対象としたACHMMの学習では、ACHMMの利点が生かされ、構造が一致する、位置PAを中心とする局所的な領域と、位置PA'を中心とする局所的な領域とについては、構造が、１つのモジュールAで獲得されている。
【０６１０】
さらに、構造が一致する、位置PBを中心とする局所的な領域と、位置PB'を中心とする局所的な領域とについても、構造が、１つのモジュールBで獲得されている。
【０６１１】
以上のように、ACHMMでは、位置が異なる領域であっても、構造が一致する、複数の局所的な領域については、構造（局所構造）が、１つのモジュールで獲得される。
【０６１２】
すなわち、ACHMMの学習では、ACHMMのあるモジュールが既に獲得している構造と同一の局所構造が、将来的に（その後に）観測された場合には、その局所構造については、新規モジュールで学習（獲得）するのではなく、その局所構造と同一の構造を獲得しているモジュールを、いわば使い回して、追加的に学習が行われる。
【０６１３】
以上のように、ACHMMの学習では、モジュールの使い回しが行われるため、ACHMMから再構成される結合HMMにおいて、実際にはありえない状態遷移が、あたかも確率的に可能なように表現されることがある。
【０６１４】
すなわち、図３６において、ACHMMから再構成される結合HMMでは、モジュールBの（状態であった）状態については、モジュールCの状態との間の状態遷移(状態遷移確率が0.0（0.0とみなすことができる0.0に近い値を含む)でない状態遷移）も、モジュールEの状態との間の状態遷移も、いずれの状態遷移も生じうる。
【０６１５】
しかしながら、図３６では、位置PBを中心とする局所的な領域（以下、位置PBの局所領域ともいう）から、位置PCの局所領域（部屋）へは、直接的に移動することができるが、位置PEの局所領域へは、直接的に移動することができず、位置PCの局所領域を通らなければ、移動することができない。
【０６１６】
また、位置PB'の局所領域から、位置PEの局所領域へは、直接的に移動することができるが、位置PCの局所領域へは、直接的に移動することができず、位置PEの局所領域を通らなければ、移動することができない。
【０６１７】
一方、図３６では、エージェントが、位置PBの局所領域、及び、位置PB'の局所領域のうちのいずれにいても、現在状態は、モジュールBの状態となる。
【０６１８】
そして、エージェントが、位置PBの局所領域にいる場合には、位置PCの局所領域に、直接的に移動することができるので、位置PBの局所領域の構造を獲得したモジュールBの状態から、位置PCの局所領域の構造を獲得したモジュールCの状態への状態遷移は、生じうる。
【０６１９】
しかしながら、エージェントが、位置PBの局所領域にいる場合には、位置PEの局所領域に、直接的に移動することができないので、位置PBの局所領域の構造を獲得したモジュールBの状態から、位置PEの局所領域の構造を獲得したモジュールEの状態への状態遷移は、生じえない（生じるべきではない）。
【０６２０】
一方、エージェントが、位置PB'の局所領域にいる場合には、位置PEの局所領域に、直接的に移動することができるので、位置PB'の局所領域の構造を獲得したモジュールBの状態から、位置PEの局所領域の構造を獲得したモジュールEの状態への状態遷移は、生じうる。
【０６２１】
しかしながら、エージェントが、位置PB'の局所領域にいる場合には、位置PCの局所領域に、直接的に移動することができないので、位置PB'の局所領域の構造を獲得したモジュールBの状態から、位置PCの局所領域の構造を獲得したモジュールCの状態への状態遷移は、生じえない。
【０６２２】
また、上述のように、異なる位置の局所領域であるが、構造が同一の複数の局所領域の構造が、１つのモジュールで獲得されるACHMMを用いた（状態）認識の結果得られる状態（現在状態）や、その状態を有するモジュール（最大尤度モジュール）のインデクスを、（外部から観測することができる）観測値として出力する場合には、異なる複数の局所領域に対して、同一の観測値が出力されるので、パーセプチャルエイリアシング(perceptual aliasing)の問題が生じる。
【０６２３】
すなわち、図３７は、図３６と同一の移動環境内を、エージェントが、位置PAの局所領域から、位置PB，PC，PD，PE、及び、PB'それぞれの局所領域を経由して、位置PA'の局所領域に移動した場合に、ACHMMを用いた認識によって得られる、最大尤度モジュールのインデクスの時系列を示す図である。
【０６２４】
エージェントが、位置PAの局所領域にいる場合と、位置PA'の局所領域にいる場合とでは、いずれも、モジュールAが、最大尤度モジュールとなるため、エージェントが、位置PAの局所領域にいるのか、又は、位置PA'の局所領域にいるのかを、特定することができない。
【０６２５】
同様に、エージェントが、位置PBの局所領域にいる場合と、位置PB'の局所領域にいる場合とでは、いずれも、モジュールBが、最大尤度モジュールとなるため、エージェントが、位置PBの局所領域にいるのか、又は、位置PB'の局所領域にいるのかを、特定することができない。
【０６２６】
以上のような、ありえない状態遷移が生じることを防止するとともに、パーセプチャルエイリアシングの問題を解消する方法としては、移動環境から観測される観測値を学習するACHMMの他に、別のACHMMを用意し、移動環境から観測される観測値を学習するACHMMを、下位層のACHMM（以下、下位ACHMMともいう）とするとともに、別のACHMMを、上位層のACHMM（以下、上位ACHMMともいう）として、下位ACHMMと上位ACHMMとを階層構造に接続する方法がある。
【０６２７】
図３８は、下位ACHMMと上位ACHMMとを階層構造に接続した、２階層の階層構造のACHMMを説明する図である。
【０６２８】
図３８において、下位ACHMMでは、移動環境から観測される観測値を学習する。さらに、下位ACHMMでは、移動環境から観測される観測値が認識され、その認識結果としての、下位ACHMMのモジュールのうちの、最大尤度モジュールのモジュールインデクスが、時系列に出力される。
【０６２９】
上位ACHMMでは、下位ACHMMが出力するモジュールインデクスを、観測値として、下位ACHMMと同様の学習が行われる。
【０６３０】
ここで、図３８では、上位ACHMMは、1個のモジュールから構成され、その1個のモジュールであるHMMは、7個の状態#1,2,3,4,5,6,7を有する。
【０６３１】
上位ACHMMのモジュールであるHMMでは、下位ACHMMが出力するモジュールインデクスの時間的な前後関係によって、エージェントが、位置PAの局所領域にいる場合と、位置PA'の局所領域にいる場合とを、異なる状態として獲得することができる。
【０６３２】
その結果、上位ACHMMでの認識により、エージェントが、位置PAの局所領域にいるのか、又は、位置PA'の局所領域にいるのかを特定することができる。
【０６３３】
ところで、上位ACHMMにおいて、その上位ACHMMでの認識の結果を、（外部から観測することができる）観測値として出力する場合、やはり、パーセプチャルエイリアシングの問題が生じうる。
【０６３４】
すなわち、階層構造のACHMMの階層数を、幾つに設定しても、その階層数が、モデル化対象としての移動環境の規模や構造に適切な数に至っていない場合には、パーセプチャルエイリアシングの問題が生じうる。
【０６３５】
図３９は、エージェントの移動環境の例を示す図である。
【０６３６】
図３９の移動環境においては、局所領域R11，R12，R13，R14、及び、R15は、その局所領域R11ないしR15の粒度で見た場合には、同一の構造を有しており、したがって、局所領域R11ないしR15の構造は、1個のモジュールに、効率的に獲得させることができる。
【０６３７】
しかしながら、局所領域R11ないしR15は、その局所領域R11ないしR15の粒度よりも、一段巨視的な、局所領域R21，R22、及びR23の粒度で見た場合には、パーセプチャルエイリアシングの問題が生じないように、異なる局所領域に特定することができることが望ましい。
【０６３８】
さらに、局所領域R21，R22、及びR23は、その局所領域R21ないしR23の粒度で見た場合には、同一の構造を有しており、したがって、局所領域R21ないしR23の構造は、1個のモジュールに、効率的に獲得させることができる。
【０６３９】
しかしながら、局所領域R21ないしR23は、その局所領域R21ないしR23の粒度よりも、一段巨視的な、局所領域R31及びR32の粒度で見た場合には、パーセプチャルエイリアシングの問題が生じないように、異なる局所領域に特定することができることが望ましい。
【０６４０】
また、局所領域R31及びR32は、その局所領域R31及びR32の粒度で見た場合には、同一の構造を有しており、したがって、局所領域R31及びR32の構造は、1個のモジュールに、効率的に獲得させることができる。
【０６４１】
このように局所表現が階層的に複数の場所で観測されるような場合（実世界の事象はこのような場合に当てはまることが多い）には、単層のACHMMの学習だけでは、適切に、環境構造を獲得することが難しいため、ACHMMを、時空間粒度の細かい階層から徐々に粒度を粗く階層的に積み上げていくような階層アーキテクチャに拡張することが望ましい。さらに、このような階層アーキテクチャでは、より上位層のACHMMが、必要に応じて自動で新規に生成されることが望ましい。
【０６４２】
なお、HMMを階層的に構成する方法として、例えば、 S. Fine, Y. Singer, N. Tishby, “The Hierarchical Hidden Markov Model: Analysis and Applications”, Machine Learning, vol.32, no.1, pp.41-62 (1998).に記載されている階層HMM(hierarchical HMM)がある。
【０６４３】
階層HMMは、各階層のHMMの各状態が、出力確率（観測確率）ではなく、下位層のHMMを持つことができるようになっている。
【０６４４】
階層HMMは、各階層でのモジュール数があらかじめ固定であること、及び、階層数があらかじめ固定であることを前提とし、さらに、階層HMM全体でモデルパラメータの最適化を行う学習則を採用するため、（階層を展開すると、一般の疎結合をもつHMMとなり、）階層数や、モジュール数が増加することにより、モデルの自由度が増加すると、モデルパラメータの学習収束性が悪くなるおそれがある。
【０６４５】
さらに、階層HMMは、階層数やモジュール数をあらかじめ決定することが困難な未知のモデル化対象のモデル化に適切なモデルではない。
【０６４６】
また、例えば、N. Oliver, A. Garg, E. Horvitz, ”Layered representations for learning and inferring office activity from multiple sensory channels”, Computer Vision and Image Understanding, vol.96, no.2, pp.163-180 (2004).では、layered HMMというHMMの階層アーキテクチャが提案されている。
【０６４７】
layered HMMでは、下位の固定数HMM組の尤度を、上位のHMMへの入力とする。そして、下位HMMは、それぞれ異なるモーダルを用いたイベント認識器を構成し、上位HMMが、それらマルチモダリティを統合した行動認識器を実現している。
【０６４８】
layered HMMは、事前に下位HMMの構造が決められることを前提としており、下位HMMが、新規に増加する状況には、対応することが困難である。したがって、layered HMMは、階層HMMと同様に、階層数やモジュール数をあらかじめ決定することが困難な未知のモデル化対象のモデル化に適切なモデルではない。
【０６４９】
［学習装置の構成例］
【０６５０】
そこで、図４０は、本発明の情報処理装置を適用した学習装置の第２実施の形態の構成例を示すブロック図である。
【０６５１】
なお、図中、図１の場合と対応する部分については、同一の符号を付してあり、以下では、その説明は、適宜省略する。
【０６５２】
図４０の学習装置では、モデル化対象のモデル化に用いる学習モデルとして、ACHMMを基本構成要素とするユニットを階層的に連結（接続）する階層アーキテクチャである階層ACHMMを採用する。
【０６５３】
階層ACHMMの採用により、階層を下層から上層へあがるにつれ、状態遷移モデル(HMM)の時空間粒度が粗くなる特徴を持つため、実世界事象のように階層的かつ共通局所構造を多数内在する系に対して、記憶効率、学習効率ともに優れた学習が可能となる。
【０６５４】
すなわち、階層ACHMMによれば、モデル化対象から繰り返し観測される（異なる位置等の）同一の局所構造は、各階層のACHMMにより同一モジュールで学習が行われるため、記憶効率、学習効率が優れた学習が可能となる。
【０６５５】
なお、同一の局所構造の異なる位置は、一段巨視的に見た時に、状態を分けて表現されるべきであるが、階層ACHMMでは、一段上位の階層のACHMMにより状態分割される。
【０６５６】
図４０において、学習装置は、センサ１１、観測時系列バッファ１２、及び、ACHMM階層処理部１０１を含む。
【０６５７】
ACHMM階層処理部１０１は、ACHMMを含む、後述するACHMMユニットを生成し、さらに、ACHMMユニットを、階層構造に接続して、階層ACHMMを構成する。
【０６５８】
そして、階層ACHMMでは、観測時系列バッファ１２から供給される観測値の時系列（時系列データOtを用いた学習が行われる。
【０６５９】
図４１は、図４０のACHMM階層処理部１０１の構成例を示すブロック図である。
【０６６０】
ACHMM階層処理部１０１は、上述したように、ACHMMユニットを生成し、ACHMMユニットを、階層構造に接続して、階層ACHMMを構成する。
【０６６１】
図４１では、3個のACHMMユニット１１１１，１１１２、及び、１１１３が生成され、ACHMMユニット１１１１，１１１２、及び、１１１３を、それぞれ、最下位層、最下位層から2番目の階層、及び、最上位層（ここでは、最下位層から3番目の階層）のACHMMユニットとして、階層ACHMMが構成されている。
【０６６２】
ACHMMユニット１１１ｈは、第h階層（最下位層から最上位層に向かって、h番目の階層）のACHMMユニットであり、入力バッファ制御部１２１、ACHMM処理部１２２、及び、出力バッファ制御部１２３を含む。
【０６６３】
入力バッファ制御部１２１には、観測時系列バッファ１２（図４０）から観測値が、又は、ACHMMユニット１１１ｈの1階層だけ下位の階層のACHMMユニット１１１ｈ−１（ACHMMユニット１１１ｈに接続されたACHMMユニット１１１ｈ−１）からACHMMの認識結果情報が、外部から供給される観測値として供給される。
【０６６４】
入力バッファ制御部１２１は、入力バッファ１２１Ａを内蔵する。入力バッファ制御部１２１は、外部から供給される観測値を、入力バッファ１２１Ａに一時記憶し、その入力バッファ１２１Ａに記憶された観測値の時系列を、ACHMMに与える入力データとして、ACHMM処理部１２２に出力する入力制御を行う。
【０６６５】
ACHMM処理部１２２は、入力バッファ制御部１２１からの入力データを用いたACHMMの学習（モジュール学習）、及び、ACHMMを用いた入力データの認識等の、ACHMMを用いた処理（以下、ACHMM処理ともいう）を行う。
【０６６６】
また、ACHMM処理部１２２は、ACHMMを用いた入力データの認識の結果得られる認識結果情報を、出力制御部１２３に供給する。
【０６６７】
出力制御部１２３は、出力バッファ１２３Ａを内蔵する。出力制御部１２３は、ACHMM処理部１２２から供給される認識結果情報を、出力バッファ１２３Ａに一時記憶し、その出力バッファ１２３Ａに記憶された認識結果情報を、（ACHMMユニット１１１ｈの）外部に出力する出力データとして出力する出力制御を行う。
【０６６８】
出力制御部１２３が出力データとして出力する認識結果情報は、ACHMMユニット１１１ｈの1階層だけ上位のACHMMユニット１１１ｈ＋１（ACHMMユニット１１１ｈに接続されたACHMMユニット１１１ｈ＋１）に供給される。
【０６６９】
図４２は、図４１のACHMMユニット１１１ｈのACHMM処理部１２２の構成例を示すブロック図である。
【０６７０】
ACHMM処理部１２２は、モジュール学習部１３１、認識部１３２、遷移情報管理部１３３、ACHMM記憶部１３４、及び、HMM構成部１３５を含む。
【０６７１】
モジュール学習部１３１ないしHMM構成部１３５は、図１の学習装置のモジュール学習部１３ないしHMM構成部１７とそれぞれ同様に構成される。
【０６７２】
したがって、ACHMM処理部１２２では、図１のモジュール学習部１３ないしHMM構成部１７で行われる処理と同様の処理が行われる。
【０６７３】
但し、ACHMM処理部１２２には、モジュール学習部１３１によるACHMMの学習、及び、認識部１３２によるACHMMを用いた認識のために、ACHMMに与える時系列データである入力データが、入力データ制御部１２１（の入力バッファ１２１Ａ）から供給される。
【０６７４】
すなわち、ACHMMユニット１１１ｈが、最下位層のACHMMユニット１１１１である場合、入力バッファ制御部１２１には、観測時系列バッファ１２（図４０）から観測値が、外部から供給される観測値として供給される。
【０６７５】
入力バッファ制御部１２１は、外部から供給される観測値としての、観測時系列バッファ１２（図４０）からの観測値を、入力バッファ１２１Ａに一時記憶する。
【０６７６】
そして、入力バッファ制御部１２１は、入力バッファ１２１Ａに、最新の観測値である時刻tの観測値otを記憶すると、時刻tから、ウインドウ長Wである過去W時刻分の観測値の時系列である時刻tの時系列データOt={ot-W+1,・・・,ot}を、入力データとして、入力バッファ１２１Ａから読み出し、ACHMM処理部１２２のモジュール学習部１３１、及び、認識部１３２に供給する。
【０６７７】
また、ACHMMユニット１１１ｈが、最下位層のACHMMユニット１１１１以外のACHMMユニットである場合、入力バッファ制御部１２１には、ACHMMユニット１１１ｈの1階層だけ下位の階層のACHMMユニット（以下、下位ユニットともいう）１１１ｈ−１から認識結果情報が、外部から供給される観測値として供給される。
【０６７８】
入力バッファ制御部１２１は、外部から供給される観測値としての、下位ユニット１１１ｈ−１からの観測値を、入力バッファ１２１Ａに一時記憶する。
【０６７９】
そして、入力バッファ制御部１２１は、入力バッファ１２１Ａに、最新の観測値が記憶されると、その最新の観測値を含む過去Lサンプル（時刻）分のL個の観測値の時系列である時系列データO={o1,・・・,oL}を、入力データとして、入力バッファ１２１Ａから読み出し、ACHMM処理部１２２のモジュール学習部１３１、及び、認識部１３２に供給する。
【０６８０】
なお、１個のACHMMユニット１１１ｈにだけ注目し、時系列データO={o1,・・・,oL}において、最新の観測値oLを、時刻tの観測値otと考えると、時系列データO={o1,・・・,oL}は、時刻tから、過去L時刻分の観測値の時系列である時刻tの時系列データOt={ot-L+1,・・・,ot}であるということができる。
【０６８１】
ここで、最下位層以外の階層のACHMMユニット１１１ｈでは、入力データである時系列データOt={ot-L+1,・・・,ot}の長さLは、可変長である。
【０６８２】
ACHMM処理部１２２のACHMM記憶部１３４には、図１のACHMM記憶部１６と同様に、HMMをモジュールとするACHMMが記憶される。
【０６８３】
但し、最下位層のACHMMユニット１１１１では、モジュールであるHMMとしては、入力データとなる観測値、すなわち、センサ１１が出力する観測値が、連続値、又は、離散値であることに応じて、それぞれ、連続HMM、又は、離散HMMが採用される。
【０６８４】
一方、最下位層以外の階層のACHMMユニット１１１ｈでは、入力データとなる観測値が、下位ユニット１１１ｈ−１からの認識結果情報であり、離散値であるため、ACHMMのモジュールであるHMMとしては、離散HMMが採用される。
【０６８５】
また、ACHMM処理部１２２では、認識部１３２による、ACHMMを用いた入力データの認識の結果得られる認識結果情報が、遷移情報管理部１３３の他、出力制御部１２３（の出力バッファ１２３Ａ）にも供給される。
【０６８６】
但し、認識部１３２は、時刻tの入力データである観測値の時系列のうちの、最新の観測値、つまり、時刻tの観測値の認識結果情報を、出力制御部１２３に供給する。
【０６８７】
すなわち、認識部１３２は、ACHMM記憶部１３４に記憶されたACHMMを構成するモジュールのうちの、時刻tの入力データOt={ot-L+1,・・・,ot}である観測値の時系列に対して、尤度が最大になる最大尤度モジュール#m*（のモジュールインデクスm*）と、その最大尤度モジュール#m*であるHMMの、時刻tの入力データである観測値の時系列が観測される尤度が最大の最尤状態系列Sm*t={sm*t-L+1,・・・,sm*t}の最後の状態sm*t（のインデクス）とのセット［m*，sm*t］を、認識結果情報として、出力制御部１２３に供給する。
【０６８８】
なお、入力データOを、O={o1,・・・,oL}と表す場合、その入力データに対する最尤状態系列を、Sm*={sm*1,・・・,sm*L}と表し、最新の観測値oLの認識結果情報を、［m*，sm*L］と表す。
【０６８９】
認識部１３２では、最大尤度モジュール#m*と、その最大尤度モジュール#m*における最尤状態系列Sm*={sm*1,・・・,sm*L}の最後の状態sm*Lとのインデクスのセット［m*，sm*L］を、認識結果情報として、出力制御部１２３に供給する他、最大尤度モジュール#m*のインデクス（モジュールインデクス）［m*］だけを、認識結果情報として、出力制御部１２３に供給することができる。
【０６９０】
ここで、最大尤度モジュール#m*と、状態sm*Lとのインデクスのセット［m*，sm*L］である２次元のシンボルの認識結果情報を、タイプ１の認識結果情報ともいい、最大尤度モジュール#m*のモジュールインデクス［m*］だけの１次元のシンボルの認識結果情報を、タイプ２の認識結果情報ともいう。
【０６９１】
上述したように、出力制御部１２３は、ACHMM処理部１２２（の認識部１３２）から供給される認識結果情報を、出力バッファ１２３Ａに一時記憶する。そして、出力制御部１２３は、所定の出力条件が満たされるときに、出力バッファ１２３Ａに記憶された認識結果情報を、（ACHMMユニット１１１ｈの）外部に出力する出力データとして出力する。
【０６９２】
出力制御部１２３が出力データとして出力する認識結果情報は、ACHMMユニット１１１ｈの1階層だけ上位のACHMMユニット（以下、上位ユニットともいう）１１１ｈ＋１に供給される。
【０６９３】
上位ユニット１１１ｈ＋１の入力制御部１２１では、ACHMMユニット１１１ｈの場合と同様に、下位ユニット１１１ｈからの出力データとしての認識結果情報が、外部から供給される観測値として、入力バッファ１２１Ａに記憶される。
【０６９４】
そして、上位ユニット１１１ｈ＋１では、その上位ユニット１１１ｈ＋１の入力制御部１２１の入力バッファ１２１Ａに記憶された観測値の時系列を、入力データとして、ACHMM処理（ACHMMの学習（モジュール学習）、及び、ACHMMを用いた入力データの認識等の、ACHMMを用いた処理）が行われる。
【０６９５】
［出力データの出力制御］
【０６９６】
図４３は、図４２の出力制御部１２３による出力データの出力制御の第１の方法（第１の出力制御方法）を説明する図である。
【０６９７】
第１の出力制御方法では、出力制御部１２３は、ACHMM処理部１２２（の認識部１３２）から供給される認識結果情報を、出力バッファ１２３Ａに一時記憶し、あらかじめ設定されたタイミングの認識結果情報を、出力データとして出力する。
【０６９８】
すなわち、第１の出力制御方法では、あらかじめ設定されたタイミングの認識結果情報であることを、出力データの出力条件として、そのあらかじめ設定されたタイミングとしての、例えば、あらかじめ設定されたサンプリング間隔ごとのタイミングの認識結果情報が、出力データとして出力される。
【０６９９】
図４３は、サンプリング間隔Tとして、T=5を採用した場合の第１の出力制御方法を示している。
【０７００】
この場合、出力制御部１２３は、ACHMM処理部１２２から供給される認識結果情報を、出力バッファ１２３Ａに一時記憶し、直前に出力データとして出力した認識結果情報から、5個だけ後の認識結果情報を、出力データとして出力することを繰り返す。
【０７０１】
第１の出力制御方法によれば、以上のようなT=5個おきの認識結果情報である出力データが、上位ユニットに供給される。
【０７０２】
なお、図４３では（後述する図４４、図４６、及び、図４７でも同様）、図が煩雑になるのを避けるため、認識結果情報として、１次元のシンボルを採用している。
【０７０３】
図４４は、図４２の出力制御部１２３による出力データの出力制御の第２の方法（第２の出力制御方法）を説明する図である。
【０７０４】
第２の出力制御方法では、出力制御部１２３は、ACHMM処理部１２２（の認識部１３２）から供給される認識結果情報を、出力バッファ１２３Ａに一時記憶し、最新の認識結果情報が、前回の認識結果情報と一致しないことを、出力データの出力条件として、最新の認識結果情報が、前回の認識結果情報と一致しない場合に、最新の認識結果情報を、出力データとして出力する。
【０７０５】
したがって、第２の出力制御方法では、ある時刻に出力データとして出力した認識結果情報と同一の認識結果情報が連続する場合には、その同一の認識結果情報が連続する限りは、出力データは出力されない。
【０７０６】
また、第２の出力制御方法では、各時刻の認識結果情報が、直前の時刻の認識結果情報と異なる場合には、各時刻の認識結果情報が、出力データとして出力される。
【０７０７】
第２の出力制御方法によれば、以上のようにして、同一の認識結果情報が連続しない出力データが、上位ユニットに供給される。
【０７０８】
なお、出力制御部１２３が、第２の出力制御方法により、出力データを出力する場合に、その出力データの供給を受けて、上位ユニットが行うACHMMの学習は、例えば、図４０の学習装置を適用したエージェントが、アクションを行うことによって、センサ１１が出力するセンサ信号である観測値が変化することに起因して生じるACHMMの状態遷移を、イベントとして捉え、イベントの切り替わりを単位時間として、時系列構造学習を行うことに相当し、実世界の事象を効率良く構造化するのに適している。
【０７０９】
第１及び第２の出力制御方法のいずれによっても、ACHMM処理部１２２で得られた認識結果情報は、その幾つかを間引いて（時間的な粒度を粗くして）、出力データとして、上位ユニットに供給される。
【０７１０】
そして、上位ユニットでは、出力データとして供給される認識結果情報を、入力データとして用いて、ACHMM処理を行う。
【０７１１】
ところで、上述したタイプ１の認識結果情報は、最大尤度モジュール#m*における、最尤状態系列の最後の状態sm*Lが異なれば、異なる情報となるが、タイプ２の認識結果情報は、最大尤度モジュール#m*の最尤状態系列の最後の状態sm*Lが異なっていても、タイプ１の認識結果情報のように、異なる情報にはならず、最大尤度モジュール#m*の状態の違いには不感の情報である。
【０７１２】
このため、下位ユニット１１１ｈが、タイプ２の認識結果情報を、出力データとして出力する場合、タイプ１の認識結果情報を、出力データとして出力する場合に比較して、上位ユニット１１１ｈ＋１が、ACHMMの学習によって自己組織的に獲得する状態の粒度（モジュールであるHMMの状態に対応する、観測空間において観測値をクラスタリングするクラスタの粒度）は、粗くなる。
【０７１３】
図４５は、下位ユニット１１１ｈが、タイプ１、及び２のそれぞれの認識結果情報を、出力データとして出力する場合の、上位ユニット１１１ｈ＋１が、ACHMMの学習によって獲得する、モジュールとしてのHMMの状態の粒度を説明する図である。
【０７１４】
なお、ここでは、説明を簡単にするために、下位ユニット１１１ｈは、第１及び第２の出力制御方法のうちの、第１の出力制御方法によって、あるサンプリング間隔Tごとの認識結果情報を、出力データとして、上位ユニット１１１ｈ＋１に供給することとする。
【０７１５】
下位ユニット１１１ｈの出力制御部１２３が、タイプ１の認識結果情報を、出力データとして出力する場合、上位ユニット１１１ｈ＋１が、ACHMMの学習によって獲得する、モジュールとしてのHMMの状態の粒度は、下位ユニット１１１ｈが、ACHMMの学習によって獲得する、モジュールとしてのHMMの状態の粒度の、サンプリング間隔T倍だけ粗い粒度になる。
【０７１６】
図４５には、サンプリング間隔Tが、例えば、3である場合の、下位ユニット１１１ｈにおけるHMMの状態の粒度と、上位ユニット１１１ｈ＋１におけるHMMの状態の粒度とを、模式的に示してある。
【０７１７】
タイプ１の認識結果情報を採用する場合、例えば、最下位層のACHMMユニット１１１１が、図４０の学習装置を適用したエージェントがおかれた移動環境から観測される観測値の時系列を用いて、ACHMM処理を行うときには、ACHMMユニット１１１１の上位ユニット１１１２におけるHMMの状態は、その下位ユニットであるACHMMユニット１１１１におけるHMMが対応する局所領域の３倍の広さの領域に対応する。
【０７１８】
一方、下位ユニット１１１ｈの出力制御部１２３が、タイプ２の認識結果情報を、出力データとして出力する場合、上位ユニット１１１ｈ＋１におけるHMMの状態の粒度は、上述のタイプ１の認識結果情報を採用する場合の、さらに、モジュールであるHMMの状態数N倍になる。
【０７１９】
すなわち、タイプ２の認識結果情報を採用する場合、上位ユニット１１１ｈ＋１におけるHMMの状態の粒度は、下位ユニット１１１ｈにおけるHMMの状態の粒度の、T×N倍だけ粗い粒度になる。
【０７２０】
したがって、タイプ２の認識結果情報を採用する場合、サンプリング間隔Tが、例えば、上述したように、3であり、モジュールであるHMMの状態数Nが、例えば、5であるとすると、上位ユニット１１１ｈ＋１におけるHMMの状態の粒度は、下位ユニット１１１ｈにおけるHMMの状態の粒度の15倍だけ粗い粒度になる。
【０７２１】
［入力データの入力制御］
【０７２２】
図４６は、図４２の入力制御部１２１による入力データの入力制御の第１の方法（第１の入力制御方法）を説明する図である。
【０７２３】
第１の入力制御方法では、入力制御部１２１は、外側から供給される観測値としての、下位ユニット（の出力制御部１２３）から、上述の第１若しくは第２の出力制御方法によって供給される出力データである認識結果情報（又は、センサ１１から観測時系列バッファ１２を介して供給される観測値）を、入力バッファ１２１Ａに一時記憶し、下位ユニットからの最新の出力データを記憶したときに、固定長Lの最新の出力データの時系列を、入力データとして出力する。
【０７２４】
図４６は、固定長Lを、例えば、3とした場合の、第１の入力制御方法を示している。
【０７２５】
入力制御部１２１は、下位ユニットからの出力データを、外部から供給される観測値として、入力バッファ１２１Ａに一時記憶する。
【０７２６】
第１の入力制御方法では、入力制御部１２１は、下位ユニットからの最新の出力データを、入力バッファ１２１Ａに記憶したときに、その最新の出力データを含む過去Lサンプル（時刻）分のL=3個の出力データの時系列である時系列データO={o1,・・・,oL}を、入力データとして、入力バッファ１２１Ａから読み出し、ACHMM処理部１２２のモジュール学習部１３１、及び、認識部１３２に供給する。
【０７２７】
なお、図４６では（後述する図４７でも同様）、下位ユニットからの出力データが、第２の出力制御方法によって、上位ユニットの入力制御部１２１に供給されることとしてある。
【０７２８】
また、図４６では（後述する図４７でも同様）、第h階層のACHMMユニット１１１ｈのACHMM処理部１２２（図４２）を、下付のhを付して、ACHMM処理部１２２ｈと記載してある。
【０７２９】
図４７は、図４２の入力制御部１２１による入力データの入力制御の第２の方法（第２の入力制御方法）を説明する図である。
【０７３０】
第２の入力制御方法では、入力制御部１２１は、下位ユニットからの最新の出力データを、入力バッファ１２１Ａに記憶したときに、その最新の出力データから、異なる値の出力データが所定数Lだけ現れるまで（ユニーク(unique)オペレーションした結果の出力データのサンプル数がLとなるまで）、過去に遡った時点の出力データから最新の出力データまでを、入力データとして、入力バッファ１２１Ａから読み出し、ACHMM処理部１２２のモジュール学習部１３１、及び、認識部１３２に供給する。
【０７３１】
したがって、入力制御部１２１からACHMM処理部１２２に供給される入力データのサンプル数は、第１の入力制御方法によれば、Lサンプルとなるが、第２の入力制御方法によれば、Lサンプル以上の可変の値となる。
【０７３２】
なお、最下位層のACHMMユニット１１１１において、第１の入力制御方法が採用される場合には、固定長Lとしては、ウインドウ長Wが採用される。
【０７３３】
また、出力データとしての認識結果情報が、最大尤度モジュール#m*と、状態sm*Lとのインデクスのセット［m*，sm*L］であるタイプ１の認識結果情報である場合には、上位ユニット１１１ｈ＋１の入力制御部１２１は、例えば、図２０で説明したように、2次元のシンボルである認識結果情報［m*，sm*t］を、値N×(m*-1)+sm*t等の、下位ユニット１１１ｈのACHMMを構成するすべてのモジュールについて重複しない1次元のシンボル値に変換し、その1次元のシンボル値を、入力データとして扱う。
【０７３４】
ここで、図４０の学習装置を、エージェントに適用し、エージェントがおかれた移動環境から観測される観測値を用いて、移動環境の地図を、自己組織的に獲得する場合には、入力制御部１２１において、第１及び第２の入力制御方法のうちの、第２の入力制御方法を採用することが望ましい。
【０７３５】
すなわち、移動環境は、ある方向Dirを移動方向とする、所定の移動量だけの移動m1により、モジュールであるHMMの状態の状態遷移が生じ、方向Dirとは逆の方向を移動方向とする、所定の移動量だけの移動（元に戻る移動）m1'により、状態が元に戻る状態遷移が生じる、いわば可逆な系である。
【０７３６】
いま、エージェントが、移動m1及びm1'とは異なる移動m2を行い、その後、移動m1及びm1'を、交互に何度か繰り返し、繰り返しの最後の移動m1'の後に、移動m2に対して戻る移動m2'を行ったとする。
【０７３７】
さらに、このような移動によって、下位ユニット１１１ｈのACHMMのモジュールであるHMMにおいて、ある3個の状態#1,#2,#3の間の状態遷移として、状態#3から、"3→2→1→2→1→2→1→2→1→2→1→2→1→2→1→2→3"と遷移していく、状態#1と#2との間で振動するような状態遷移が生じたこととする。
【０７３８】
状態遷移"3→2→1→2→1→2→1→2→1→2→1→2→1→2→1→2→3"では、状態#1と#2との間の状態遷移が、状態#2と#3との間の状態遷移と比較して、圧倒的に多数出現する。
【０７３９】
なお、ここでは、最大尤度モジュール#m*と、状態sm*Lとのインデクスのセット［m*，sm*L］であるタイプ１の認識結果情報を採用することとするが、説明を簡単にするため、認識結果情報［m*，sm*L］のうちの、最大尤度モジュール#m*（のインデクス）は、無視することとする。
【０７４０】
さらに、ここでは、説明を簡単にするため、状態遷移"3→2→1→2→1→2→1→2→1→2→1→2→1→2→1→2→3"における状態のインデクスが、そのまますべて、出力データとして、下位ユニット１１１ｈから上位ユニット１１１ｈ＋１に供給されることとする。
【０７４１】
いま、上位ユニット１１１ｈ＋１において、固定長Lを、例えば、3として、第１の入力制御方法を採用したとすると、上位ユニット１１１ｈ＋１の入力制御部１２１は、まず、"3→2→1"を入力データとし、その後、"2→1→2"，"1→2→1"，・・・，"1→2→1"，"2→1→2"， "1→2→3"を、順次、入力データする。
【０７４２】
ここで、説明を簡単にするため、上位ユニット１１１ｈ＋１のACHMMのモジュールであるHMMでは、例えば、入力データ"3→2→1"に対し、その入力データの通りの状態遷移"3→2→1"が生じることとする。
【０７４３】
この場合、上位ユニット１１１ｈ＋１での、対象モジュールであるHMMの追加学習では、最初の入力データ"3→2→1"を用いたときの、状態#3から状態#2への状態遷移の状態遷移確率の更新が、その後に出現する多数の入力データ"2→1→2"、及び、"1→2→1"を用いての、状態#1と#2との間の状態遷移の状態遷移確率の更新によって、入力データ"2→1→2"、及び、"1→2→1"の出現回数に比例する分だけ、いわば希釈化（又は忘却）される。
【０７４４】
すなわち、状態#1ないし#3のうちの、例えば、状態#2に注目すると、状態#2については、多数の入力データ"2→1→2"、及び、"1→2→1"によって、状態#1との間の状態遷移の状態遷移確率が大になる一方で、状態#1以外の状態、つまり、状態#3を含むその他の状態との間の状態遷移確率が小になる。
【０７４５】
一方、上位ユニット１１１ｈ＋１において、固定数Lを、例えば、3として、第２の入力制御方法を採用したとすると、上位ユニット１１１ｈ＋１の入力制御部１２１は、まず、"3→2→1"を入力データとし、その後、"3→2→1→2"，"3→2→1→2→1"，・・・，"3→2→1→2→1→2→1→2→1→2→1→2→1→2→1→2"，"1→2→3"を、順次、入力データする。
【０７４６】
この場合、上位ユニット１１１ｈ＋１での、対象モジュールであるHMMの追加学習では、状態#3から状態#2への状態遷移の状態遷移確率の更新が、最初の入力データ"3→2→1"の他、その後の入力データをも用いて行われるので、状態#2については、状態#1との間の状態遷移の状態遷移確率が大になるとともに、状態#3との間の状態遷移の状態遷移確率も、多少なりとも大になり、状態#1及び#3以外の状態との間の状態遷移確率が、相対的に小になる。
【０７４７】
以上のようにして、第２の入力制御方法によれば、状態#3から状態#2への状態遷移の状態遷移確率の更新が、希釈化（忘却）される程度を低減することができる。
【０７４８】
［HMMの観測確率の拡張］
【０７４９】
図４８は、ACHMMのモジュールであるHMMの観測確率の拡張を説明する図である。
【０７５０】
階層ACHMMにおいて、ACHMMのモジュールであるHMMが、離散HMMである場合、入力データに、いままでに観測されたことがない観測値である未観測値が含まれるときがある。
【０７５１】
すなわち、特に、ACHMMには、新規モジュールが追加されることがあるため、最下位層以外の階層のACHMMユニット１１１ｈでは、下位ユニット１１１ｈ−１から供給される認識結果情報としてのインデクスが表す最大尤度モジュールm*が、それまで存在していなかった新規モジュールである場合があり、この場合、ACHMMユニット１１１ｈの入力制御部１２１が出力する入力データには、新規モジュールのインデクスに相当する未観測値が含まれる。
【０７５２】
ここで、上述したことから、新規モジュール#mのインデクスmとしては、1を初期値とするシーケンシャルな整数が用いられるため、下位ユニット１１１ｈ−１から供給される認識結果情報としてのインデクスが表す最大尤度モジュールm*が、それまで存在していなかった新規モジュールである場合、その新規モジュールのインデクスに相当する未観測値は、ACHMMユニット１１１ｈにおいて、いままで観測されたことがある観測値の最大値を超える値となる。
【０７５３】
ACHMMユニット１１１ｈのACHMM処理部１２２（図４２）のモジュール学習部１３１は、ACHMMのモジュールであるHMMが、離散HMMである場合において、入力制御部１２１から供給される入力データに、いままでに観測されたことがない観測値である未観測値が含まれるとき、ACHMMのモジュールであるHMMのHMMパラメータのうちの、観測値が観測される観測確率の観測確率行列を、未観測値の観測確率を含むように拡張する拡張処理を行う。
【０７５４】
すなわち、モジュール学習部１３１は、入力制御部１２１から供給される入力データに、いままで観測されたことがある観測値の最大値Kを超える値の未観測値K1が含まれる場合、拡張処理において、図４８に示すように、行方向（縦方向）を、状態#iのインデクスiとするとともに、列方向（横方向）を、観測値kとして、状態#iにおいて、観測値kが観測される観測確率をコンポーネントとする観測確率行列の、列方向の観測値の最大値を、観測値Kから、未観測値K1以上の値K2に変更する（拡張する）。
【０７５５】
さらに、拡張処理では、観測確率行列の、HMMの各状態についての、未観測値である値K+1ないしK2の観測確率が、例えば、1/(100×K)のオーダの、ランダムな微小値に初期化される。
【０７５６】
そして、観測確率行列の1行の観測確率の総和（1つの状態において、各観測値が観測される観測確率の総和）が、1.0になるように、観測確率行列の各行の観測確率を正規化する確率化が行われ、拡張処理は終了する。
【０７５７】
なお、拡張処理は、ACHMMを構成するすべてのモジュール(HMM)の観測確率行列を対象に行われる。
【０７５８】
［ユニット生成処理］
【０７５９】
図４９は、図４０のACHMM階層処理部１０１が行うユニット生成処理を説明するフローチャートである。
【０７６０】
ACHMM階層処理部１０１（図４０）は、必要に応じて、ACHMMユニット１１１を生成し、さらに、ACHMMユニット１１１を、階層構造に接続して、階層ACHMMを構成するユニット生成処理を行う。
【０７６１】
すなわち、ユニット生成処理では、ステップＳ２１１において、ACHMM階層処理部１０１は、最下位層のACHMMユニット１１１１を生成し、その最下位層のACHMMユニット１１１１だけを構成要素とする1階層の階層ACHMMを構成して、処理は、ステップＳ２１２に進む。
【０７６２】
ここで、ACHMMユニットの生成とは、例えば、オブジェクト指向プログラミングでは、ACHMMユニットのクラスを用意しておき、そのACHMMユニットのクラスのインスタンスを生成することに相当する。
【０７６３】
ステップＳ２１２では、ACHMM階層処理部１０１は、階層ACHMMを構成するACHMMユニット１１１のうちの、上位ユニットがないACHMMユニットから、出力データが出力されたかどうかを判定する。
【０７６４】
すなわち、いま、階層ACHMMが、H個（階層）のACHMMユニット１１１１ないし１１１Ｈで構成されることとすると、ステップＳ２１２では、階層ACHMMを構成するACHMMユニット１１１１ないし１１１Ｈのうちの、最上位層のACHMMユニット１１１Ｈ（の出力制御部１２３（図４２））から、出力データが出力されたかどうかが判定される。
【０７６５】
ステップＳ２１２において、最上位層のACHMMユニット１１１Ｈから、出力データが出力されたと判定された場合、処理は、ステップＳ２１３に進み、ACHMM階層処理部１０１は、ACHMMユニット１１１Ｈの上位ユニットとなる、新たな最上位層のACHMMユニット１１１Ｈ＋１を生成する。
【０７６６】
すなわち、ステップＳ２１３では、ACHMM階層処理部１０１は、新規のACHMMユニット（新規ユニット）１１１Ｈ＋１を生成し、その新規ユニット１１１Ｈ＋１を、それまで最上位層であったACHMMユニット１１１Ｈの上位ユニットとして、ACHMMユニット１１１Ｈに接続する。これにより、H+1個のACHMMユニット１１１１ないし１１１Ｈ＋１でなる階層HMMが構成される。
【０７６７】
その後、処理は、ステップＳ２１３からステップＳ２１２に戻り、以下、同様の処理が繰り返される。
【０７６８】
また、ステップＳ２１２において、最上位層のACHMMユニット１１１Ｈから、出力データが出力されていないと判定された場合、処理は、ステップＳ２１２に戻る。
【０７６９】
以上のように、ユニット生成処理では、H個のACHMMユニット１１１１ないし１１１Ｈでなる階層ACHMMにおいて、上位ユニットと接続されていないACHMMユニット（以下、未接続ユニットともいう）、つまり、最上位層のACHMMユニット１１１Ｈが、出力データを出力するとき、新規ユニットが生成される。そして、新規ユニットを、上位ユニットととするとともに、未接続ユニットを、下位ユニットとして、新規ユニットと、未接続ユニットとが接続され、H+1個のACHMMユニット１１１１ないし１１１Ｈ＋１でなる階層HMMが構成される。
【０７７０】
その結果、ユニット生成処理によれば、階層ACHMMの階層数が、モデル化対象の規模や構造に適切な数に至るまで増加していき、さらに、図４５で説明したように、上位層のACHMMユニット１１１ｈほど、モジュールとしてのHMMの状態の粒度（時空間粒度）が粗くなるので、パーセプチャルエイリアシングの問題を解消することができる。
【０７７１】
なお、新規ユニットについては、図９のステップＳ１１や、図１７のステップＳ６１の場合と同様の初期化処理が行われ、1個のモジュール(HMM)からなるACHMMが構成される。
【０７７２】
また、出力制御部１２３において、第１の出力制御方法（図４３）を採用する場合、未接続ユニットである最上位層のACHMMユニット１１１ＨのACHMMが、1個のモジュール(HMM)で構成され、かつ、ACHMMユニット１１１Ｈの認識部１３２において得られる認識結果情報の［m*，sm*L］の状態sm*Lが、ある特定の1つの状態となっている間は、最上位層のACHMMユニット１１１Ｈから出力データが出力されても、ステップＳ２１３は、スキップされ、新たな最上位層のACHMMユニット１１１Ｈ＋１は、生成されない。
【０７７３】
［ユニット学習処理］
【０７７４】
図５０は、図４２のACHMMユニット１１１ｈが行う処理（ユニット学習処理）を説明するフローチャートである。
【０７７５】
ステップＳ２２１において、ACHMMユニット１１１ｈの入力制御部１２１は、ACHMMユニット１１１ｈの下位ユニットであるACHMMユニット１１１ｈ−１（但し、ACHMMユニット１１１ｈが、最下位層のACHMMユニット１１１１である場合には、観測時系列バッファ１２（図４０））から、外部からの観測値としての出力データが供給されるのを待って、入力バッファ１２１Ａに一時記憶し、処理は、ステップＳ２２２に進む。
【０７７６】
ステップＳ２２２では、入力制御部１２１は、入力バッファ１２１Ａに記憶された出力データから、ACHMMに与える入力データを、第１又は第２の入力制御方法によって構成し、ACHMM処理部１２２（のモジュール学習部１３１及び認識部１３２）に供給して、処理は、ステップＳ２２３に進む。
【０７７７】
ステップＳ２２３では、ACHMM処理部１２２のモジュール学習部１３１が、入力制御部１２１からの入力データとしての観測値の時系列に、ACHMM記憶部１３４に記憶されたACHMMのモジュールであるHMMにおいて観測されたことがない観測値（未観測値）が含まれるかどうかを判定する。
【０７７８】
ステップＳ２２３において、入力データに、未観測値が含まれると判定された場合、処理は、ステップＳ２２４に進み、モジュール学習部１３１は、図４８で説明した拡張処理を行い、観測確率の観測確率行列を、未観測値の観測確率を含むように拡張して、処理は、ステップＳ２２５に進む。
【０７７９】
また、ステップＳ２２３において、入力データに、未観測値が含まれないと判定された場合、処理は、ステップＳ２２４をスキップして、ステップＳ２２５に進み、ACHMM処理部１２２は、入力制御部１２１からの入力データを用いて、モジュール学習処理、認識処理、及び、遷移情報生成処理を行って、処理は、ステップＳ２２６に進む。
【０７８０】
すなわち、ACHMM処理部１２２では、モジュール学習部１３１が、入力制御部１２１からの入力データを用いて、図９のモジュール学習処理のステップＳ１６以降、又は、図１７のステップＳ６６以降の処理を行う。
【０７８１】
その後、ACHMM処理部１２２では、認識部１３２が、入力制御部１２１からの入力データを用いて、図２１の認識処理を行う。
【０７８２】
そして、ACHMM処理部１２２では、遷移情報管理部１３３が、認識部１３２において入力データを用いて行われた認識処理の結果得られる認識結果情報を用いて、図２４の遷移情報生成処理を行う。
【０７８３】
ステップＳ２２６では、出力制御部１２３が、認識部１３２において入力データを用いて行われた認識処理の結果得られる認識結果情報を、出力バッファ１２３Ａに一時記憶して、処理は、ステップＳ２２７に進む。
【０７８４】
ステップＳ２２７では、出力制御部１２３は、図４３や図４４で説明した出力データの出力条件が満たされるかどうかを判定する。
【０７８５】
ステップＳ２２７において、出力データの出力条件が満たされないと判定された場合、処理は、ステップＳ２２８をスキップして、ステップＳ２２１に戻る。
【０７８６】
また、ステップＳ２２７において、出力データの出力条件が満たされると判定された場合、処理は、ステップＳ２２８に進み、出力制御部１２３は、出力バッファ１２３Ａに記憶された最新の認識結果情報を、出力データとして、ACHMMユニット１１１ｈの上位ユニットであるACHMMユニット１１１ｈ＋１に出力して、処理は、ステップＳ２２１に戻る。
【０７８７】
［学習装置を適用したエージェントの構成例］
【０７８８】
図５１は、図４０の学習装置を適用したエージェントの一実施の形態（第２実施の形態）の構成例を示すブロック図である。
【０７８９】
なお、図中、図２８の場合と対応する部分については、同一の符号を付してあり、以下では、その説明は、適宜省略する。
【０７９０】
図５１のエージェントは、センサ７１、観測時系列バッファ７２、アクションコントローラ８２、駆動部８３、及び、アクチュエータ８４を有する点で、図２８の場合と共通する。
【０７９１】
但し、図５１のエージェントは、図２８のモジュール学習部７３ないしHMM構成部７７、及び、プランニング部８１に代えて、ACHMM階層処理部１５１を有する点で、図２８の場合と相違する。
【０７９２】
図５１において、ACHMM階層処理部１５１は、図４０のACHMM階層処理部１０１と同様に、ACHMMユニットを生成し、ACHMMユニットを、階層構造に接続して、階層ACHMMを構成する。
【０７９３】
但し、ACHMM階層処理部１５１が生成するACHMMユニットは、図４０のACHMM階層処理部１０１が生成するACHMMユニットの機能の他、プランニングを行う機能を有する。
【０７９４】
なお、図５１では、アクションコントローラ８２が、ACHMM階層処理部１５１とは別に設けられているが、アクションコントローラ８２は、ACHMM階層処理部１５１が生成するACHMMユニットに含めることができる。
【０７９５】
但し、アクションコントローラ８２は、最下位層のACHMMユニットのACHMMの各状態遷移について、センサ７１で観測される観測値を入力として、アクション信号を出力するアクション関数の学習を行うので、階層ACHMMを構成するACHMMユニットのすべてに設ける必要はなく、最下位層のACHMMに設けるだけで良い。
【０７９６】
ここで、図２８のエージェントは、あらかじめ定められたルールに従って移動するアクションを行い、モデル化対象である移動環境の移動先において、センサ７１で観測される観測値の時系列を用いて、ACHMMの学習を行うとともに、ACHMMの各状態遷移について、観測値を入力として、アクション信号を出力するアクション関数の学習を行う。
【０７９７】
そして、図２８のエージェントは、学習後のACHMMから構成される結合HMMを用いて、現在状態から目標状態までの最尤状態系列を、現在状態から目標状態に辿り着くプランとして求め、そのプランとしての最尤状態系列の状態遷移を生じさせるアクションを、ACHMMの学習時に求めておいたアクション関数に従って行うことで、現在状態に対応する位置から、目標状態に対応する位置に移動する。
【０７９８】
一方、図５１のエージェントでも、あらかじめ定められたルールに従って移動するアクションを行い、最下位層のACHMMユニットでは、図２８のエージェントと同様に、移動先において、センサ７１で観測される観測値の時系列を用いて、ACHMMの学習を行うユニット学習処理（図５０）処理が行われるとともに、ACHMMの各状態遷移について、観測値を入力として、アクション信号を出力するアクション関数の学習が行われる。
【０７９９】
さらに、図５１のエージェントでは、最下位層以外の階層のACHMMユニットにおいて、その下位ユニットから出力データとして供給される、下位ユニットで得られた認識結果情報から、時系列データである入力データを構成し、その入力データを、外部から供給される観測値の時系列として用いて、ACHMMの学習を行うユニット学習処理（図５０）が行われる。
【０８００】
なお、図５１のエージェントでは、ユニット学習処理を行っているときに、ユニット生成処理(図４９）によって、必要に応じて、新規ユニットが生成される。
【０８０１】
以上のように、図５１のエージェントでは、各階層のACHMMユニットにおいて、ユニット学習処理（図５０）が行われることで、上位の階層のACHMMユニットのACHMMでは、より大域的な移動環境の構造が、下位の階層のACHMMユニットのACHMMでは、より局所的な移動環境の構造が、それぞれ、自己組織的に獲得される。
【０８０２】
そして、図５１のエージェントでは、各階層のACHMMユニットのACHMMの学習が、ある程度進行した後、階層ACHMMを構成するACHMMユニットのうちの、注目する階層のACHMMユニットである注目ACHMMユニットのACHMMの状態のうちの１つの状態が、目標状態として与えられると、注目ACHMMユニットにおいて、ACHMMから構成される結合HMMを用いて、現在状態から目標状態までの最尤状態系列が、プランとして求められる。
【０８０３】
注目ACHMMユニットが、最下位層のACHMMユニットである場合には、図５１のエージェントは、図２８のエージェントと同様に、プランとしての最尤状態系列の状態遷移を生じさせるアクションを、ACHMMの学習時に求めておいたアクション関数に従って行うことで、現在状態に対応する位置から、目標状態に対応する位置に移動する。
【０８０４】
また、注目ACHMMユニットが、最下位層以外の階層のACHMMユニットである場合には、図５１のエージェントは、注目ACHMMユニットで得られるプランとしての最尤状態系列の最初の状態（現在状態）の次の状態で観測される観測値の観測確率を参照し、観測確率が所定の閾値以上の観測値が表す下位ユニットのACHMMの状態を、下位ユニットにおける目標状態の候補（目標状態候補）として、下位ユニットにおいて、現在状態から目標状態候補までの最尤状態系列を、プランとして求める。
【０８０５】
なお、認識結果情報として、タイプ１の認識結果情報を採用する場合には、注目ACHMMユニットのACHMMのモジュールであるHMMにおいて観測される観測値は、注目ACHMMユニットの下位ユニットのACHMMの最大尤度モジュール#m*と、状態sm*Lとのインデクスのセットである認識結果情報［m*，sm*L］であり、したがって、そのような認識結果情報［m*，sm*L］が表す下位ユニットの状態とは、認識結果情報［m*，sm*L］によって特定される下位ユニットのACHMMのモジュール#m*の状態sm*Lである。
【０８０６】
また、認識結果情報として、タイプ２の認識結果情報を採用する場合には、注目ACHMMユニットのACHMMのモジュールであるHMMにおいて観測される観測値は、注目ACHMMユニットの下位ユニットのACHMMの最大尤度モジュール#m*のインデクスである認識結果情報［m*］である。そして、そのような認識結果情報［m*］が表す下位ユニットの状態とは、認識結果情報［m*］によって特定される下位ユニットのACHMMのモジュール#m*の任意の１つ、若しくは、複数の状態、又は、全部の状態である。
【０８０７】
図５１のエージェントにおいて、より下位の階層のACHMMでは、注目ACHMMユニットの下位ユニットと同様の処理が、再帰的に行われる。
【０８０８】
さらに、最下位層のACHMMユニットでは、図２８のエージェントと同様に、プランが求められる。そして、エージェントは、そのプランとしての最尤状態系列の状態遷移を生じさせるアクションを、ACHMMの学習時に求めておいたアクション関数に従って行うことで、現在状態に対応する位置から、目標状態に対応する位置に移動する。
【０８０９】
すなわち、階層ACHMMでは、上位の階層のACHMMユニットで得られるプランの状態遷移は、大域的な状態遷移であるため、図５１のエージェントは、上位の階層のACHMMユニットで得られたプランを、下位の階層のACHMMユニットに、いわば伝播していき、最終的には、最下位層のACHMMユニットで得られたプランの状態遷移が生じる移動を、アクションとして行う。
【０８１０】
［ACHMMユニットの構成例］
【０８１１】
図５２は、図５１のACHMM階層処理部１５１が生成するACHMMユニット２００のうちの、最下位層以外の第h階層のACHMMユニット２００ｈの構成例を示すブロック図である。
【０８１２】
ACHMMユニット２００ｈは、入力制御部２０１ｈ、ACHMM処理部２０２ｈ、出力制御部２０３ｈ、及び、プランニング部２２１ｈを含む。
【０８１３】
入力制御部２０１ｈは、入力バッファ２０１Ａｄを有し、図４２の入力制御部１２１と同様の入力制御を行う。
【０８１４】
ACHMM処理部２０２ｈは、モジュール学習部２１１ｈ、認識部２１２ｈ、遷移情報管理部２１３ｈ、ACHMM記憶部２１４ｈ、及び、HMM構成部２１５ｈを含む。
【０８１５】
モジュール学習部２１１ｈないしHMM構成部２１５ｈは、図４２のモジュール学習部１３１ないしHMM構成部１３５と同様に構成され、したがって、ACHMM処理部２０２ｈは、図４２のACHMM処理部１２２と同様の処理を行う。
【０８１６】
出力制御部２０３ｄは、出力バッファ２０３Ａｄを有し、図４２の出力制御部１２３と同様の出力制御を行う。
【０８１７】
プランニング部２２１ｈには、ACHMMユニット２００ｈの下位ユニット２００ｈ−１から、最新の観測値の認識を要求する認識処理要求が供給される。
【０８１８】
また、プランニング部２２１ｈには、認識部２１２ｈから、最新の観測値の認識結果情報［m*，sm*t］が供給されるとともに、HMM構成部２１５ｈから、結合HMMが供給される。
【０８１９】
さらに、プランニング部２２１ｈには、ACHMMユニット２００ｈの上位ユニット２００ｈ＋１から、その上位ユニット２００ｈ＋１のACHMM（のモジュールであるHMM）において観測される観測値のうちの、観測確率が所定の閾値以上の観測値のリスト（観測値リスト）が供給される。
【０８２０】
ここで、上位ユニット２００ｈ＋１から供給される観測値リストの観測値は、ACHMMユニット２００ｈで得られた認識結果情報であり、したがって、ACHMMユニット２００ｈのACHMMの状態、又は、モジュールを表す。
【０８２１】
プランニング部２２１ｈは、下位ユニット２００ｈ−１から、認識処理要求が供給されると、認識部２１２ｈに、最新の観測値を、最新のサンプルoLとして含む入力データO={o1,o2,・・・,oL}を用いた認識処理を要求する。
【０８２２】
その後、プランニング部２２１ｈは、認識部２１２ｈが認識処理を行うことによって、最新の観測値の認識結果情報［m*，sm*L］を出力するのを待って、その認識結果情報［m*，sm*L］を受信する。
【０８２３】
そして、プランニング部２２１ｈは、上位ユニット２００ｈ＋１からの観測値リストの観測値が表す状態、又は、観測値が表すモジュールのすべての状態を、目標状態候補（ACHMMユニット２００ｈの階層（第h階層）における目標状態の候補）として、1個以上の目標状態候補のいずれかと、認識部２１２ｈからの認識結果情報［m*，sm*L］によって特定される現在状態sm*Lとが一致するかどうかを判定する。
【０８２４】
現在状態sm*Lと、目標状態候補とが一致しない場合、プランニング部２２１ｈは、1個以上の目標状態候補それぞれについて、認識部２１２ｈからの認識結果情報［m*，sm*L］によって特定される現在状態sm*Lから、目標状態候補までの最尤状態系列を求める。
【０８２５】
そして、プランニング部２２１ｈは、１個以上の目標状態候補それぞれについての最尤状態系列のうちの、例えば、状態の数が最小の最尤状態系列を、プランとして選択する。
【０８２６】
さらに、プランニング部２２１ｈは、プランにおける最初の状態、すなわち、現在状態の次の状態において観測される観測値のうちの、観測確率が閾値以上の１個以上の観測値の観測値リストを生成し、ACHMMユニット２００ｈの下位ユニット２００ｈ−１に供給する。
【０８２７】
また、現在状態sm*Lと、目標状態候補とが一致する場合、プランニング部２２１ｈは、認識処理要求を、ACHMMユニット２００ｈの上位ユニット２００ｈ＋１に供給する。
【０８２８】
なお、プランニング部２２１ｈに対しては、ACHMMユニット２００ｈの上位ユニット２００ｈ＋１から、観測値リストの形で、目標状態（候補）を与えるのではなく、図２８のエージェントのプランニング部８１に対して目標状態を与えるのと同様に、外部からの目標状態の指定や、動機システムによる目標状態の設定によって、ACHMMユニット２００ｈのACHMMの任意の１つの状態を、目標状態として与えることができる。
【０８２９】
いま、このようにしてプランニング部２２１ｈに与えられる目標状態を、外部目標状態ということとすると、プランニング部２２１ｈは、外部目標状態が与えられた場合、その外部目標状態を、目標状態候補として、同様の処理を行う。
【０８３０】
図５３は、図５１のACHMM階層処理部１５１が生成するACHMMユニット２００のうちの、最下位層のACHMMユニット２００１の構成例を示すブロック図である。
【０８３１】
ACHMMユニット２００１は、最下位層以外の階層のACHMMユニット２００ｈと同様に、入力制御部２０１１、ACHMM処理部２０２１、出力制御部２０３１、及び、プランニング部２２１１を含む。
【０８３２】
但し、ACHMMユニット２００１の下位ユニットは、存在しないため、プランニング部２２１１では、下位ユニットから認識処理要求が供給されることはなく、観測リストを生成して、下位ユニットに供給することも行われない。
【０８３３】
その代わり、プランニング部２２１１は、プランの最初の状態（現在状態）から次の状態への状態遷移を、アクションコントローラ８２に供給する。
【０８３４】
また、最下位層のACHMMユニット２００１では、認識部２１２１が出力する認識結果情報と、入力制御部２０１１がACHMM処理部２０２１に供給する入力データとしての、センサ７１の観測値の時系列のうちの最新の観測値とが、アクションコントローラ８２に供給される。
【０８３５】
［アクション制御処理］
【０８３６】
図５４は、図５２の第h階層のACHMMユニット２００ｈに外部目標状態が与えられた場合に、そのACHMMユニット（以下、目標状態指定ユニットともいう）２００ｈのプランニング部２２１ｈが行う、エージェントのアクションを制御するアクション制御処理を説明するフローチャートである。
【０８３７】
なお、外部目標状態が、最下位層のACHMMユニット２００１に与えられた場合は、図２８のエージェントと同様の処理が行われるため、ここでは、目標状態指定ユニット２００ｈは、最下位層以外の階層のACHMMユニットであるとする。
【０８３８】
また、図５１のエージェントにおいて、各階層のACHMMユニット２００ｈによるユニット学習処理（図５０）は、ある程度、進行しており、アクションコントローラ８２によるアクション関数の学習は、済んでいることとする。
【０８３９】
ステップＳ２４１において、プランニング部２２１ｈは、目標状態指定ユニット２００ｈのACHMMの状態の１つが、外部目標状態#gとして与えられるのを待って、その外部目標状態#gを受信し、認識部２１２ｈに認識処理を要求して、処理は、ステップＳ２４２に進む。
【０８４０】
ステップＳ２４２では、認識部２１２ｈが、入力制御部２０１ｈから供給される最新の入力データを用いた認識処理を行うことにより得られる認識結果情報を出力するのを待って、プランニング部２２１ｈは、その認識結果情報を受信し、処理は、ステップＳ２４３に進む。
【０８４１】
ステップＳ２４３では、プランニング部２２１ｈは、認識部２１２ｈからの認識結果情報から特定される現在状態（最大尤度モジュールであるHMMにおいて、入力データが観測される最尤状態系列の最後の状態）と、外部目標状態#gとが一致するかどうかを判定する。
【０８４２】
ステップＳ２４３において、現在状態と、外部目標状態#gとが一致しないと判定された場合、処理は、ステップＳ２４４に進み、プランニング部２２１ｈは、プランニング処理を行う。
【０８４３】
すなわち、ステップＳ２４４では、プランニング部２２１ｈは、図３１の場合と同様に、HMM構成部２１５ｈから供給される結合HMMにおいて、現在状態から、目標状態#gまでの状態遷移の尤度が最大の状態系列（最尤状態系列）を、現在状態から目標状態#gに辿り着くプランとして求める。
【０８４４】
なお、図３１では、現在状態から目標状態#gまでの最尤状態系列の長さが、閾値以上となる場合は、プランとしての最尤状態系列が求められないとすることとしたが、図５１のエージェントが行うプランニング処理では、説明を簡単にするため、閾値として、十分大きな値を採用することで、最尤状態系列を、必ず求めることとする。
【０８４５】
その後、処理は、ステップＳ２４４からステップＳ２４５に進み、プランニング部２２１ｈは、プランにおける最初の状態、すなわち、現在状態の次の状態の観測確率を参照することで、次の状態において観測される観測値のうちの、観測確率が閾値以上の１個以上の観測値の観測値リストを生成し、目標状態指定ユニット２００ｈの下位ユニット２００ｈ−１（のプランニング部２２１ｈ−１）に供給する。
【０８４６】
ここで、目標状態指定ユニット２００ｈのACHMMの（モジュールであるHMMの）状態において観測される観測値は、その目標状態指定ユニット２００ｈの下位ユニット２００ｈ−１で得られる認識結果情報であり、したがって、下位ユニット２００ｈ−１のACHMMの状態、又は、モジュールを表すインデクスである。
【０８４７】
また、観測値リストの生成に用いる観測値の閾値としては、例えば、固定の閾値を採用することができる。さらに、観測値の閾値は、所定数の観測値が、観測確率が閾値以上の観測値となるように、適応的に設定することができる。
【０８４８】
ステップＳ２４５において、プランニング部２２１ｈが、観測値リストを、下位ユニット２００ｈ−１に供給した後、処理は、ステップＳ２４６に進み、プランニング部２２１ｈは、下位ユニット２００ｈ−１（のプランニング部２２１ｈ−１）から、認識処理要求が供給されてくるのを待って受信する。
【０８４９】
そして、プランニング部２２１ｈは、下位ユニット２００ｈ−１からの認識処理要求に従い、認識部２１２ｈに、最新の観測値を、最新のサンプルoLとして含む入力データO={o1,o2,・・・,oL}を用いた認識処理を要求する。
【０８５０】
その後、処理は、ステップＳ２４６からステップＳ２４２に戻り、認識部２１２ｈが、入力制御部２０１ｈから供給される最新の入力データを用いた認識処理を行うことによって、最新の観測値の認識結果情報を出力するのを待って、プランニング部２２１ｈは、その認識結果情報を受信し、以下、同様の処理が繰り返される。
【０８５１】
そして、ステップＳ２４３において、現在状態と、外部目標状態#gとが一致すると判定された場合、すなわち、エージェントが、移動環境内を移動し、外部目標状態#gに対応する位置に辿り着いた場合、処理は、終了する。
【０８５２】
図５５は、目標状態指定ユニットよりも下位の階層のACHMMユニットのうちの、最下位層のACHMMユニット２００１以外のACHMMユニット（以下、中間層ユニットともいう）２００ｈ（図５２）のプランニング部２２１ｈが行う、エージェントのアクションを制御するアクション制御処理を説明するフローチャートである。
【０８５３】
ステップＳ２５１において、プランニング部２２１ｈは、中間層ユニット２００ｈの上位ユニット２００ｈ＋１（のプランニング部２２１ｈ＋１）から、観測値リストが供給されてくるのを待って受信し、処理は、ステップＳ２５２に進む。
【０８５４】
ステップＳ２５２では、プランニング部２２１ｈは、上位ユニット２００ｈ＋１からの観測値リストから、目標状態候補を求める。
【０８５５】
すなわち、上位ユニット２００ｈ＋１から供給される観測値リストの観測値は、中間層ユニット２００ｈのACHMMの状態、又は、モジュールを表すインデクスであり、プランニング部２２１ｈは、観測値リストの1個以上の観測値であるインデクスそれぞれが表す中間層ユニット２００ｈのACHMMの状態、又は、モジュールであるHMMのすべての状態を、目標状態候補とする。
【０８５６】
ステップＳ２５２において、1個以上の目標状態候補が求められた後、プランニング部２２１ｈは、認識部２１２ｈに認識処理を要求して、処理は、ステップＳ２５３に進む。ステップＳ２５３では、認識部２１２ｈが、入力制御部２０１ｈから供給される最新の入力データを用いた認識処理を行うことにより得られる認識結果情報を出力するのを待って、プランニング部２２１ｈは、その認識結果情報を受信し、処理は、ステップＳ２５４に進む。
【０８５７】
ステップＳ２５４では、プランニング部２２１ｈは、認識部２１２ｈからの認識結果情報から特定される現在状態（最大尤度モジュールであるHMMにおいて、入力データが観測される最尤状態系列の最後の状態）と、1個以上の目標状態候補のいずれかとが一致するかどうかを判定する。
【０８５８】
ステップＳ２５４において、現在状態が、1個以上の目標状態候補のうちのいずれとも一致しないと判定された場合、処理は、ステップＳ２５５に進み、プランニング部２２１ｈは、1個以上の目標状態候補それぞれについて、プランニング処理を行う。
【０８５９】
すなわち、ステップＳ２５５では、プランニング部２２１ｈは、1個以上の目標状態候補それぞれについて、図３１の場合と同様に、HMM構成部２１５ｈから供給される結合HMMにおいて、現在状態から、目標状態候補までの状態遷移の尤度が最大の状態系列（最尤状態系列を求める。
【０８６０】
その後、処理は、ステップＳ２５５からステップＳ２５６に進み、プランニング部２２１ｈは、1個以上の目標状態候補それぞれについて求めた最尤状態系列のうちの、例えば、状態数が最小の1つの最尤状態系列を、最終的なプランとして選択し、処理は、ステップＳ２５７に進む。
【０８６１】
ステップＳ２５７では、プランニング部２２１ｈは、プランにおける最初の状態（現在状態）の次の状態の観測確率を参照することにより、次の状態において観測される観測値のうちの、観測確率が閾値以上の１個以上の観測値の観測値リストを生成し、中間層ユニット２００ｈの下位ユニット２００ｈ−１（のプランニング部２２１ｈ−１）に供給する。
【０８６２】
ここで、中間層ユニット２００ｈのACHMMの（モジュールであるHMMの）状態において観測される観測値は、その中間層ユニット２００ｈの下位ユニット２００ｈ−１で得られる認識結果情報であり、したがって、下位ユニット２００ｈ−１のACHMMの状態、又は、モジュールを表すインデクスである。
【０８６３】
ステップＳ２５７において、プランニング部２２１ｈが、観測値リストを、下位ユニット２００ｈ−１に供給した後、処理は、ステップＳ２５８に進み、プランニング部２２１ｈは、下位ユニット２００ｈ−１（のプランニング部２２１ｈ−１）から、認識処理要求が供給されてくるのを待って受信する。
【０８６４】
そして、プランニング部２２１ｈは、下位ユニット２００ｈ−１からの認識処理要求に従い、認識部２１２ｈに、最新の観測値を、最新のサンプルとして含む入力データを用いた認識処理を要求する。
【０８６５】
その後、処理は、ステップＳ２５８からステップＳ２５３に戻り、認識部２１２ｈが、入力制御部２０１ｈから供給される最新の入力データを用いた認識処理を行うことによって、最新の観測値の認識結果情報を出力するのを待って、プランニング部２２１ｈは、その認識結果情報を受信し、以下、同様の処理が繰り返される。
【０８６６】
そして、ステップＳ２５４において、現在状態が、1個以上の目標状態候補のいずれかと一致すると判定された場合、すなわち、エージェントが、移動環境内を移動し、1個以上の目標状態候補のうちのいずれかに対応する位置に辿り着いた場合、処理は、ステップＳ２５９に進み、プランニング部２２１ｈは、認識処理要求を、中間層ユニット２００ｈの上位ユニット２００ｈ+１（のプランニング部２２１ｈ＋１）に供給（送信）する。
【０８６７】
その後、処理は、ステップＳ２５９からステップＳ２５１に戻り、上述したように、プランニング部２２１ｈは、中間層ユニット２００ｈの上位ユニット２００ｈ＋１から、観測値リストが供給されてくるのを待って受信し、以下、同様の処理を繰り返す。
【０８６８】
なお、中間層ユニット２００ｈのアクション制御処理は、目標状態指定ユニットのアクション制御処理（図５４）が終了した場合（図５４のステップＳ２４３において、現在状態と、外部目標状態#gとが一致すると判定された場合）に、終了する。
【０８６９】
図５６は、最下位層のACHMMユニット（以下、最下位層ユニットともいう）２００１（図５３）のプランニング部２２１１が行う、エージェントのアクションを制御するアクション制御処理を説明するフローチャートである。
【０８７０】
最下位層ユニット２００１では、ステップＳ２７１ないしＳ２７６において、図５５のステップＳ２５１ないしＳ２５６とそれぞれ同様の処理が行われる。
【０８７１】
すなわち、ステップＳ２７１において、プランニング部２２１１は、最下位層ユニット２００１の上位ユニット２００２（のプランニング部２２１２）から、観測値リストが供給されてくるのを待って受信し、処理は、ステップＳ２７２に進む。
【０８７２】
ステップＳ２７２では、プランニング部２２１１は、上位ユニット２００２からの観測値リストから、目標状態候補を求める。
【０８７３】
すなわち、上位ユニット２００２から供給される観測値リストの観測値は、最下位層ユニット２００１のACHMMの状態、又は、モジュールを表すインデクスであり、プランニング部２２１１は、観測値リストの1個以上の観測値であるインデクスそれぞれが表す最下位層ユニット２００１のACHMMの状態、又は、モジュールであるHMMのすべての状態を、目標状態候補とする。
【０８７４】
ステップＳ２７２において、1個以上の目標状態候補が求められた後、プランニング部２２１１は、認識部２１２１に認識処理を要求し、処理は、ステップＳ２７３に進む。ステップＳ２７３では、認識部２１２１が、入力制御部２０１１から供給される最新の入力データ（センサ７１で観測される観測値の時系列）を用いた認識処理を行うことにより得られる認識結果情報を出力するのを待って、プランニング部２２１１は、その認識結果情報を受信し、処理は、ステップＳ２７４に進む。
【０８７５】
ステップＳ２７４では、プランニング部２２１１は、認識部２１２１からの認識結果情報から特定される現在状態と、1個以上の目標状態候補のいずれかとが一致するかどうかを判定する。
【０８７６】
ステップＳ２７４において、現在状態が、1個以上の目標状態候補のうちのいずれとも一致しないと判定された場合、処理は、ステップＳ２７５に進み、プランニング部２２１１は、1個以上の目標状態候補それぞれについて、プランニング処理を行う。
【０８７７】
すなわち、ステップＳ２７５では、プランニング部２２１１は、1個以上の目標状態候補それぞれについて、図３１の場合と同様に、HMM構成部２１５１から供給される結合HMMにおいて、現在状態から、目標状態候補までの最尤状態系列を求める。
【０８７８】
その後、処理は、ステップＳ２７５からステップＳ２７６に進み、プランニング部２２１１は、1個以上の目標状態候補それぞれについて求めた最尤状態系列のうちの、例えば、状態数が最小の1つの最尤状態系列を、最終的なプランとして選択し、処理は、ステップＳ２７７に進む。
【０８７９】
ステップＳ２７７では、プランニング部２２１１は、プランの最初の状態遷移、すなわち、プランにおける、現在状態から、その次の状態への状態遷移を表す情報（状態遷移情報）を、アクションコントローラ８２（図５１、図５３）に供給し、処理は、ステップＳ２７８に進む。
【０８８０】
ここで、プランニング部２２１１が、状態遷移情報を、アクションコントローラ８２に供給することにより、アクションコントローラ８２は、プランニング部２２１１からの状態遷移情報が表す状態遷移についてのアクション関数に対して、入力制御部２０１から供給される最新の観測値（現在時刻の観測値）を入力として与えることで、アクション関数が出力するアクション信号を、エージェントが次に行うべきアクションのアクション信号として求める。
【０８８１】
そして、アクションコントローラ８２は、そのアクション信号を、駆動部８３に供給する。駆動部８３は、アクションコントローラ８２からアクション信号を、アクチュエータ８４に供給することで、アクチュエータ８４を駆動し、これにより、エージェントは、例えば、移動環境内を移動するアクションを行う。
【０８８２】
以上のように、エージェントが、移動環境内を移動した後、ステップＳ２７８では、移動後の位置において、センサ７１で観測される観測値（最新の観測値）を、最新のサンプルとして含む入力データを用いた認識処理が、認識部２１２１によって行われ、その認識処理によって得られる認識結果情報が出力されるのを待って、プランニング部２２１１は、認識部２１２１が出力する認識結果情報を受信し、処理は、ステップＳ２７９に進む。
【０８８３】
ステップＳ２７９では、プランニング部２２１１は、認識部２１２１からの認識結果情報（直前のステップＳ２７８で受信した認識結果情報）から特定される現在状態が、1時刻前に現在状態であった状態である前回の現在状態と一致するかどうかを判定する。
【０８８４】
ステップＳ２７９において、現在状態が、前回の現在状態と一致すると判定された場合、すなわち、エージェントが移動した後の位置に対応する現在状態と、エージェントが移動する前の位置に対応する前回の現在状態とが、同一の状態であり、エージェントの移動によって、最下位層ACHMMユニットのACHMMにおいて、状態遷移が生じなかった場合、処理は、ステップＳ２７７に戻り、以下、同様の処理が繰り返される。
【０８８５】
また、ステップＳ２７９において、現在状態が、前回の現在状態と一致しないと判定された場合、すなわち、エージェントの移動によって、最下位層ACHMMユニットのACHMMにおいて、状態遷移が生じた場合、処理は、ステップＳ２８０に進み、プランニング部２２１１は、認識部２１２１からの認識結果情報から特定される現在状態と、1個以上の目標状態候補のいずれかとが一致するかどうかを判定する。
【０８８６】
ステップＳ２８０において、現在状態が、1個以上の目標状態候補のうちのいずれとも一致しないと判定された場合、処理は、ステップＳ２８１に進み、プランニング部２２１１は、現在状態が、プラン（としての状態系列）上の状態のいずれかと一致するかどうかを判定する。
【０８８７】
ステップＳ２８１において、現在状態が、プラン上の状態のいずれかと一致すると判定された場合、すなわち、エージェントが、プランとしての状態系列のいずれかの状態に対応する位置にいる場合、処理は、ステップＳ２８２に進み、プランニング部２２１１は、プラン上の状態のうちの、現在状態と一致する状態（プランの最初の状態から最後の状態に向かって、最初に現れる、現在状態と一致する状態）から、プランの最後の状態までの状態系列に、プランを変更し、処理は、ステップＳ２７７に戻る。
【０８８８】
この場合、変更後のプランを用いて、ステップＳ２７７以降の処理が行われる。
【０８８９】
また、ステップＳ２８１において、現在状態が、プラン上の状態のいずれとも一致しないと判定された場合、すなわち、エージェントが、プランとしての状態系列のいずれの状態に対応する位置にもいない場合、処理は、ステップＳ２７５に戻り、以下、同様の処理が繰り返される。
【０８９０】
この場合、1個以上の目標状態候補それぞれについて、新たな現在状態（直前のステップＳ２７８で受信した認識結果情報から特定される現在状態）から、目標状態までの最尤状態系列が求められ（ステップＳ２７５）、その1個以上の目標状態候補それぞれについての最尤状態系列から、１つの最尤状態系列を、プランとして選択する（ステップＳ２７６）、いわば、プランの作り直しが行われ、そのプランを用いて、以下、同様の処理が行われる。
【０８９１】
一方、ステップＳ２７４、又は、ステップＳ２８０において、現在状態が、1個以上の目標状態候補のいずれかと一致すると判定された場合、すなわち、エージェントが、移動環境内を移動し、1個以上の目標状態候補のうちのいずれかに対応する位置に辿り着いた場合、処理は、ステップＳ２８３に進み、プランニング部２２１１は、認識処理要求を、最下位層ユニット２００１の上位ユニット２００２（のプランニング部２２１２）に供給（送信）する。
【０８９２】
その後、処理は、ステップＳ２８３からステップＳ２７１に戻り、上述したように、プランニング部２２１１は、最下位層ユニット２００１の上位ユニット２００２から、観測値リストが供給されてくるのを待って受信し、以下、同様の処理を繰り返す。
【０８９３】
なお、最下位層ユニット２００１のアクション制御処理は、中間層ユニットのアクション制御処理と同様に、目標状態指定ユニットのアクション制御処理（図５４）が終了した場合（図５４のステップＳ２４３において、現在状態と、外部目標状態#gとが一致すると判定された場合）に、終了する。
【０８９４】
図５７は、階層ACHMMが、３階層のACHMMユニット#1，#2、及び、#3で構成される場合の、各階層のACHMMを模式的に示す図である。
【０８９５】
図５７において、楕円は、ACHMMの状態を表す。また、大きい楕円は、第3階層（最上位層）ACHMMユニット#3のACHMMの状態を、中くらいの楕円は、第2階層のACHMMユニット#2のACHMMの状態を、小さい楕円は、第1階層（最下位層）のACHMMユニット#1のACHMMの状態を、それぞれ表す。
【０８９６】
図５７では、各階層のACHMMの状態を、エージェントが移動する移動環境の、対応する位置に示してある。
【０８９７】
例えば、ACHMMユニット#3に対して、第3階層のACHMMのある状態（図中、星印を付して示す）が、外部目標状態#gとして与えられると、ACHMMユニット#3では、認識処理によって、現在状態が求められ、第3階層のACHMM（から構成される結合HMM）において、現在状態から、外部目標状態#gまでの最尤状態系列が、プラン（図中、矢印で示す）として求められる。
【０８９８】
そして、ACHMMユニット#3は、プランの最初の状態の次の状態において観測される観測値のうちの、観測確率が所定の閾値以上の観測値の観測値リストを生成し、下位ユニットであるACHMMユニット#2に供給する。
【０８９９】
ACHMMユニット#2では、認識処理によって、現在状態が求められる一方、上位ユニットであるACHMMユニット#3からの観測値リストの観測値である、第2階層のACHMMの状態（又はモジュール）を表すインデクスから、そのインデクスが表す状態（図中、星印を付して示す）が、目標状態候補として求められ、1個以上の目標状態候補それぞれについて、第2階層のACHMM（から構成される結合HMM）において、現在状態から、目標状態候補までの最尤状態系列が求められる。
【０９００】
さらに、ACHMMユニット#2では、1個以上の目標状態候補それぞれについての最尤状態系列のうちの、状態数が最小の最尤状態系列（図中、矢印で示す）が、プランとして選択される。
【０９０１】
そして、ACHMMユニット#2では、プランの最初の状態の次の状態において観測される観測値のうちの、観測確率が所定の閾値以上の観測値の観測値リストが生成され、下位ユニットであるACHMMユニット#1に供給される。
【０９０２】
ACHMMユニット#1でも、ACHMMユニット#2の場合と同様に、認識処理によって、現在状態が求められる一方、上位ユニットであるACHMMユニット#2からの観測値リストの観測値から、1個以上の目標状態候補（図中、星印を付して示す）が求められ、その1個以上の目標状態候補それぞれについて、第1階層のACHMM（から構成される結合HMM）において、現在状態から、目標状態候補までの最尤状態系列が求められる。
【０９０３】
さらに、ACHMMユニット#1では、1個以上の目標状態候補それぞれについての最尤状態系列のうちの、状態数が最小の最尤状態系列（図中、矢印で示す）が、プランとして選択される。
【０９０４】
そして、ACHMMユニット#1では、プランの最初の状態遷移を表す状態遷移情報が、アクションコントローラ８２（図５１）に供給され、これにより、エージェントは、ACHMMユニット#1で得られたプランの最初の状態遷移が、第1階層のACHMMにおいて生じるように移動していく。
【０９０５】
その後、エージェントが、第1階層のACHMMのうちの、1個以上の目標状態候補のいずれかの状態に対応する位置に移動し、その1個以上の目標状態候補のいずれかの状態が、現在状態となると、ACHMMユニット#1は、上位ユニットであるACHMMユニット#2に、認識処理要求を供給する。
【０９０６】
ACHMMユニット#2では、下位ユニットであるACHMMユニット#1からの認識処理要求に応じて、認識処理が行われ、現在状態が新たに求められる。
【０９０７】
さらに、ACHMMユニット#2では、上位ユニットであるACHMMユニット#3からの観測値リストの観測値から求められた1個以上の目標状態候補それぞれについて、第2階層のACHMMにおいて、現在状態から、目標状態候補までの最尤状態系列が求められる。
【０９０８】
そして、ACHMMユニット#2では、1個以上の目標状態候補それぞれについての最尤状態系列のうちの、状態数が最小の最尤状態系列が、プランとして選択され、以下、同様の処理が繰り返される。
【０９０９】
その後、ACHMMユニット#2において、下位ユニットであるACHMMユニット#1からの認識処理要求に応じて行われる認識処理によって求められる現在状態が、上位ユニットであるACHMMユニット#3からの観測値リストの観測値から求められた1個以上の目標状態候補のうちのいずれかに一致すると、ACHMMユニット#2は、上位ユニットであるACHMMユニット#3に、認識処理要求を供給する。
【０９１０】
ACHMMユニット#3では、下位ユニットであるACHMMユニット#2からの認識処理要求に応じて、認識処理が行われ、現在状態が新たに求められる。
【０９１１】
さらに、ACHMMユニット#3では、第3階層のACHMMにおいて、現在状態から、外部目標状態#gまでの最尤状態系列が、プランとして求めら、以下、同様の処理が繰り返される。
【０９１２】
そして、ACHMMユニット#3において、下位ユニットであるACHMMユニット#2からの認識処理要求に応じて行われる認識処理によって求められる現在状態が、外部目標状態#gに一致すると、ACHMMユニット#1ないし#3は、処理を終了する。
【０９１３】
以上のようにして、エージェントは、移動環境において、外部目標状態#gに対応する位置に移動することができる。
【０９１４】
以上のように、図５１のエージェントでは、任意階層における目的状態実現のための状態遷移プランを最下層へと順次展開してから状態遷移制御が行われるので、エージェントの自律的環境モデル獲得ならびに任意状態実現能力の獲得が可能となる。
【０９１５】
＜第３実施の形態＞
【０９１６】
図５８は、図８のモジュール学習部１３が行うモジュール学習処理の他の例を説明するフローチャートである。
【０９１７】
なお、図５８のモジュール学習処理では、図１７で説明した可変ウインドウ学習を行うが、図９で説明した固定ウインドウ学習を行うことも可能である。
【０９１８】
図９及び図１７のモジュール学習処理では、図１０で説明したように、最大尤度モジュール#m*の対数尤度である最大対数尤度maxLPと、あらかじめ設定された閾値尤度THとの大小関係によって、最大尤度モジュール#m*、又は、新規モジュールを、対象モジュールに決定する。
【０９１９】
すなわち、最大対数尤度maxLPが、閾値尤度TH以上である場合には、最大尤度モジュール#m*が、対象モジュールとなり、最大対数尤度maxLPが、閾値尤度TH以上でない場合には、新規モジュールが、対象モジュールとなる。
【０９２０】
しかしながら、最大対数尤度maxLPと閾値尤度THとの大小関係によって、対象モジュールを決定する場合には、実際には、最大尤度モジュール#m*を、対象モジュールとして、最大尤度モジュール#m*の追加学習を行った方が、ACHMM全体としては、良好なACHMM（例えば、認識部１４（図１）において、正しい認識結果情報が得られる可能性が、より高いACHMM）が得られるときであっても、最大対数尤度maxLPが、閾値尤度THを、僅かにでも下回ると、新規モジュールを、対象モジュールとして、新規モジュールの追加学習が行われる。
【０９２１】
同様に、実際には、新規モジュールを、対象モジュールとして、新規モジュールの追加学習を行った方が、ACHMM全体としては、良好なACHMMが得られるときであっても、最大対数尤度maxLPが、閾値尤度THと一致するか、閾値尤度THを、僅かにでも上回ると、最大尤度モジュール#m*を、対象モジュールとして、最大尤度モジュール#m*の追加学習が行われる。
【０９２２】
そこで、第３実施の形態では、対象モジュール決定部２２（図８）は、最大尤度モジュール#m*の追加学習を行った場合と、新規モジュールの追加学習を行った場合とのそれぞれの場合のACHMMの、ベイス推定により求められる事後確率に基づいて、対象モジュールを決定する。
【０９２３】
すなわち、対象モジュール決定部２２は、例えば、最大尤度モジュール#m*の追加学習を行った場合に得られるACHMMである、既存モジュール学習処理後のACHMMの事後確率に対する、新規モジュールの追加学習を行った場合に得られるACHMMである、新規モジュール学習処理後のACHMMの事後確率の改善量を算出し、その改善量に基づいて、尤度最大モジュール、又は、新規モジュールを、対象モジュールに決定する。
【０９２４】
このように、ACHMMの事後確率の改善量に基づいて、対象モジュールを決定することにより、最大対数尤度maxLPと閾値尤度THとの大小関係によって、対象モジュールを決定する場合に比較して、理論的、かつ、柔軟（適応的）に、新規モジュールが、ACHMMに追加されていき、モデル化対象について、過不足のない数のモジュールで構成されるACHMMを得ることができる。その結果、良好なACHMMを得ることができる。
【０９２５】
ここで、HMMの学習では、前述したように、HMMパラメータλで定義されるHMMにおいて、学習データである時系列データOが観測される尤度P(O|λ)を最大化するように、HMMパラメータλが推定される。HMMパラメータλの推定には、一般に、EMアルゴリズムを用いたBaum-Welchの再推定法が用いられる。
【０９２６】
また、HMMパラメータλの推定については、例えば、Brand, M.E., "Pattern Discovery via Entropy Minimization", Uncertainty 99: International Workshop on Artificial Intelligence and Statistics, January 1999に、学習データOが観測されたのが、HMMパラメータλで定義されるHMMである事後確率P(λ|O)を最大化するように、HMMパラメータλを推定することで、HMMの精度を改善する方法が記載されている。
【０９２７】
HMMの事後確率P(λ|O)を最大化するように、HMMパラメータλを推定する方法では、HMMパラメータλから定義されるエントロピーH(λ)を導入し、HMMパラメータλで定義されるHMMである事前確率P(λ)が、exp(-H(λ))に比例する関係にあることに注目して(exp()は、底がネイピア数(Napier's constant)である指数関数を表す）、HMMの事後確率P(λ|O)=P(O|λ)×P(λ)/P(O)を最大化するように、HMMパラメータλが推定される。
【０９２８】
なお、HMMパラメータλから定義されるエントロピーH(λ)は、HMMの構造の「コンパクト度合い」を測る尺度、すなわち、表現のあいまいさが少なく、より決定論的判別に性質が近い、つまり、いずれの観測時系列入力に対する認識結果においても、尤度最大の状態の尤度が他の状態の尤度と比べて優位に大きくなる、より「構造的」な度合いを測る尺度である。
【０９２９】
第３実施の形態では、HMMの事後確率P(λ|O)を最大化するように、HMMパラメータλを推定する方法に倣って、モデルパラメータθによって定義されるACHMMのエントロピーH(θ)を導入するとともに、ACHMMの対数事前確率log(P（θ))を、比例定数prior_balanceを用いて、式log(P（θ))=-prior_balance×H(θ)で定義する。
【０９３０】
さらに、第３実施の形態では、モデルパラメータθによって定義されるACHMMにおいて、時系列データOが観測される尤度P(O|θ)として、ACHMMの１つのモジュールである、例えば、最大尤度モジュール#m*の尤度P(O|λm*)=maxm[P(O|λm)]を採用する。
【０９３１】
以上のように、ACHMMの対数事前確率log(P（θ))、及び、尤度P(O|θ)を定義することにより、時系列データOが発生する確率P(O)を用い、ACHMMの事後確率P(θ|O)は、ベイズ推定に基づき、P(θ|O)=P(O|θ)×P(θ)/P(O)で表される。
【０９３２】
第３実施の形態では、対象モジュール決定部２２（図８）は、最大尤度モジュール#m*の追加学習を行った場合のACHMMの事後確率と、新規モジュールの追加学習を行った場合のACHMMの事後確率とに基づいて、尤度最大モジュール、又は、新規モジュールを、対象モジュールに決定する。
【０９３３】
すなわち、対象モジュール決定部２２は、例えば、最大尤度モジュール#m*の追加学習を行った場合に得られる、既存モジュール学習処理後のACHMMの事後確率に対して、新規モジュールの追加学習を行った場合に得られる、新規モジュール学習処理後のACHMMの事後確率が改善される場合には、新規モジュールが、対象モジュールに決定され、その対象モジュールとしての新規モジュールの追加学習が行われる。
【０９３４】
また、新規モジュール学習処理後のACHMMの事後確率が改善されない場合には、最大尤度モジュール#m*が、対象モジュールに決定され、その対象モジュールとしての最大尤度モジュール#m*の追加学習が行われる。
【０９３５】
以上のように、ACHMMの事後確率に基づいて、対象モジュールを決定することにより、理論的、かつ、柔軟（適応的）に、新規モジュールが、ACHMMに追加されていき、その結果、最大対数尤度maxLPと閾値尤度THとの大小関係によって、対象モジュールを決定する場合に比較して、新規モジュールの生成が、過度に多く行われること、及び、過度に少なく行われることを防止することができる。
【０９３６】
［モジュール学習処理］
【０９３７】
図５８は、以上のように、ACHMMの事後確率に基づいて、対象モジュールを決定しながら、ACHMMの学習を行うモジュール学習処理を説明するフローチャートである。
【０９３８】
図５８のモジュール学習処理では、ステップＳ３１１ないしＳ３２２において、図１７のモジュール学習処理のステップＳ６１ないしＳ７２とそれぞれ（ほぼ）同様の処理が行われる。
【０９３９】
但し、図５８のモジュール学習処理では、ステップＳ３１５において、図１７のステップＳ６５と同様の処理が行われる他、後述するサンプルバッファRSmに、学習データOtがバッファリングされる。
【０９４０】
さらに、ステップＳ３１９では、ACHMMが、1個のモジュール#1で構成されている間は、図１７のステップＳ６９と同様に、最大対数尤度maxLPと閾値尤度THとの大小関係によって、対象モジュールが決定されるが、ACHMMが、2個以上（複数）のモジュール#1ないし#Mで構成される場合には、ACHMMの事後確率に基づいて、対象モジュールが決定される。
【０９４１】
また、ステップＳ３２１において、図１７のステップＳ７１と同様の既存モジュール学習処理が行われた後、及び、ステップＳ３２２において、図１７のステップＳ７２と同様の新規モジュール学習処理が行われた後は、ステップＳ３２３において、後述するサンプル保存処理が行われる。
【０９４２】
すなわち、図５８のモジュール学習処理では、ステップＳ３１１において、モジュール学習部１３（図８）の更新部２３は、初期化処理として、ACHMMを構成する１個目のモジュール#1となるエルゴディックHMMの生成、及び、モジュール総数Mへの、初期値としての1のセットを行う。
【０９４３】
その後、センサ１１から、観測値otが出力され、観測時系列バッファ１２に記憶されるのを待って、処理は、ステップＳ３１１からステップＳ３１２に進み、モジュール学習部１３（図８）は、時刻tを、t=1にセットし、処理は、ステップＳ３１３に進む。
【０９４４】
ステップＳ３１３では、モジュール学習部１３は、時刻tが、ウインドウ長Wに等しいかどうかを判定する。
【０９４５】
ステップＳ３１３において、時刻tがウインドウ長Wに等しくないと判定された場合、センサ１１から、次の観測値otが出力され、観測時系列バッファ１２に記憶されるのを待って、処理は、ステップＳ３１４に進む。
【０９４６】
ステップＳ３１４では、モジュール学習部１３は、時刻tを1だけインクリメントして、処理は、ステップＳ３１３に戻り、以下、同様の処理が繰り返される。
【０９４７】
また、ステップＳ３１３において、時刻tがウインドウ長Wに等しいと判定された場合、すなわち、観測時系列バッファ１２に、ウインドウ長W分の観測値の時系列である時系列データOt=W={o1，・・・，oW}が記憶された場合、対象モジュール決定部２２（図８）は、1個だけのモジュール#1で構成されるACHMMの、そのモジュール#1を、対象モジュールに決定する。
【０９４８】
そして、対象モジュール決定部２２は、対象モジュールであるモジュール#1を表すモジュールインデクスm=1を、更新部２３に供給し、処理は、ステップＳ３１３からステップＳ３１５に進む。
【０９４９】
ステップＳ３１５では、更新部２３は、対象モジュール決定部２２からのモジュールインデクスm=1が表す対象モジュールであるモジュール#1の実効学習回数Qlearn[m=1]に、初期値としての1.0をセットする。
【０９５０】
さらに、ステップＳ３１５では、更新部２３は、対象モジュールであるモジュール#1の学習率γを、式γ＝1/(Qlearn[m=1]+1.0)に従って求める。
【０９５１】
そして、更新部２３は、観測時系列バッファ１２に記憶されたウインドウ長Wの時系列データOt=W={o1，・・・，oW}を、学習データとして、その学習データOt=Wを用い、学習率γ＝1/(Qlearn[m=1]+1.0)で、対象モジュールであるモジュール#1の追加学習を行う。
【０９５２】
すなわち、更新部２３は、上述した式（３）ないし式（１６）に従って、ACHMM記憶部１６に記憶された、対象モジュールであるモジュール#1のHMMパラメータλm=1を更新する。
【０９５３】
さらに、更新部２３は、その内蔵するメモリ（図示せず）に確保される、観測値をバッファリングする変数であるバッファbuffer_winner_sampleに、学習データOt=Wをバッファリングする。
【０９５４】
また、更新部２３は、その内蔵するメモリに確保される、1時刻前に最大尤度モジュールであったモジュールが、最大尤度モジュールになっている期間を表す変数である勝者期間情報cnt_since_winに、初期値としての1をセットする。
【０９５５】
さらに、更新部２３は、その内蔵するメモリに確保される、1時刻前の最大尤度モジュール（であったモジュール）を表す変数である前回勝者情報past_winに、初期値としての、モジュール#1のモジュールインデクスである1をセットする。
【０９５６】
また、対象モジュール決定部２２は、更新部２３の内蔵するメモリに確保される、各モジュール#mの追加学習に用いられた学習データを、各モジュール#mに対応付けて、サンプルとしてバッファリングする変数であるサンプルバッファRSmのうちのサンプルバッファRS1に、対象モジュールであるモジュール#1の追加学習に用いられた学習データOt=Wをバッファリングさせる。
【０９５７】
その後、センサ１１から、次の観測値otが出力され、観測時系列バッファ１２に記憶されるのを待って、処理は、ステップＳ３１５からステップＳ３１６に進み、モジュール学習部１３が、時刻tを1だけインクリメントして、処理は、ステップＳ３１７に進む。
【０９５８】
ステップＳ３１７では、尤度算出部２１（図８）は、観測時系列バッファ１２に記憶されたウインドウ長Wの最新の時系列データOt={ot-W+1，・・・，ot}を、学習データとし、ACHMM記憶部１６に記憶されたACHMMを構成するすべてのモジュール#1ないし#Mのそれぞれについて、モジュール尤度P(Ot|λm)を求めて、対象モジュール決定部２２に供給する。
【０９５９】
そして、処理は、ステップＳ３１７からステップＳ３１８に進み、対象モジュール決定部２２は、ACHMMを構成するモジュール#1ないし#Mのうちの、尤度算出部２１からのモジュール尤度P(Ot|λm)が最大の最大尤度モジュール#m*＝argmaxm[P(Ot|λm)]を求める。
【０９６０】
さらに、対象モジュール決定部２２は、尤度算出部２１からのモジュール尤度P(Ot|λm)から、最大対数尤度maxLP=maxm[log(P(Ot|λm))]を求め、処理は、ステップＳ３１８からステップＳ３１９に進む。
【０９６１】
ステップＳ３１９では、対象モジュール決定部２２は、最大対数尤度maxLP、又は、ACHMMの事後確率に基づいて、最大尤度モジュール#m*、又は、新規モジュールを、対象モジュールに決定する対象モジュールの決定の処理を行う。
【０９６２】
そして、対象モジュール決定部２２は、対象モジュールのモジュールインデクスを、更新部２３に供給し、処理は、ステップＳ３１９からステップＳ３２０に進む。
【０９６３】
ステップＳ３２０では、更新部２３は、対象モジュール決定部２２からのモジュールインデクスが表す対象モジュールが、最大尤度モジュール#m*、又は、新規モジュールのうちのいずれであるかを判定する。
【０９６４】
ステップＳ３２０において、対象モジュールが、最大尤度モジュール#m*であると判定された場合、処理は、ステップＳ３２１に進み、更新部２３は、最大尤度モジュール#m*のHMMパラメータλm*を更新する既存モジュール学習処理（図１８）を行う。
【０９６５】
また、ステップＳ３２０において、対象モジュールが、新規モジュールであると判定された場合、処理は、ステップＳ３２２に進み、更新部２３は、新規モジュールのHMMパラメータを更新する新規モジュール学習処理（図１９）を行う。
【０９６６】
ステップＳ３２１の既存モジュール学習処理、及び、ステップＳ３２２の新規モジュール学習処理の後は、いずれも、処理は、ステップＳ３２３に進み、対象モジュール決定部２２は、対象モジュール#mのHMMパラメータの更新（対象モジュール#mの追加学習）に用いられた学習データOtを、その対象モジュール#mに対応するサンプルバッファRSmに、学習データのサンプルとしてバッファリングするサンプル保存処理を行う。
【０９６７】
そして、センサ１１から、次の観測値otが出力され、観測時系列バッファ１２に記憶されるのを待って、処理は、ステップＳ３２３から、ステップＳ３１６に戻り、以下、同様の処理が繰り返される。
【０９６８】
［サンプル保存処理］
【０９６９】
図５９は、図５８のステップＳ３２３で、対象モジュール決定部２２（図８）が行うサンプル保存処理を説明するフローチャートである。
【０９７０】
ステップＳ３４１において、対象モジュール決定部２２（図８）は、対象モジュールになったモジュール#mのサンプルバッファRSmにバッファリングされている学習データの数（サンプル数）が、所定の数であるR個（以上）であるかどうかを判定する。
【０９７１】
ステップＳ３４１において、対象モジュールになったモジュール#mのサンプルバッファRSmにバッファリングされている学習データのサンプル数が、R個（以上）でないと判定された場合、すなわち、モジュール#mのサンプルバッファRSmにバッファリングされている学習データのサンプル数が、R個未満である場合、処理は、ステップＳ３４２及びＳ３４３をスキップして、ステップＳ３４４に進み、対象モジュール決定部２２（図８）は、モジュール#mのサンプルバッファRSmに、対象モジュールになったモジュール#mの学習に用いられた学習データOtを追加の形でバッファリングさせ、処理はリターンする。
【０９７２】
また、ステップＳ３４１において、対象モジュールになったモジュール#mのサンプルバッファRSmにバッファリングされている学習データのサンプル数が、R個（以上）であると判定された場合、処理は、ステップＳ３４２に進み、対象モジュール決定部２２（図８）は、モジュール#mのサンプルバッファRSmにバッファリングされている学習データのR個のサンプルのうちのいずれか1個のサンプルを、対象モジュールになったモジュール#mの学習に用いられた学習データOtと入れ替えるサンプル入れ替え条件が満たされるかどうかを判定する。
【０９７３】
ここで、サンプル入れ替え条件としては、例えば、サンプルバッファRSmへの学習データのバッファリングを、最後に行ってから、モジュール#mの学習が、所定の回数であるSAMP_STEP回目の学習である、という第１の条件を採用することができる。
【０９７４】
サンプル入れ替え条件として、第１の条件を採用する場合には、サンプルバッファRSmにバッファリングされている学習データのサンプル数が、R個に達してからは、モジュール#mの学習が、SAMP_STEP回だけ行われるごとに、サンプルバッファRSmにバッファリングされている学習データの入れ替えが行われる。
【０９７５】
また、サンプル入れ替え条件としては、サンプルバッファRSmにバッファリングされている学習データの入れ替えを行う入れ替え確率pを設定しておき、2つの数字のうちの一方の数字を、確率pで、他方の数字を、確率1-pで、ランダムに発生したときに、その発生した数字が、一方の数字である、という第２の条件を採用することができる。
【０９７６】
サンプル入れ替え条件として、第２の条件を採用する場合には、入れ替え確率pを、1/SAMP_STEPとすることにより、サンプルバッファRSmにバッファリングされている学習データのサンプル数が、R個に達してからは、期待値的には、第１の条件と同様に、モジュール#mの学習が、SAMP_STEP回だけ行われるごとに、サンプルバッファRSmにバッファリングされている学習データの入れ替えが行われる。
【０９７７】
ステップＳ３４２において、サンプル入れ替え条件が満たされないと判定された場合、処理は、ステップＳ３４３及びＳ３４４をスキップして、リターンする。
【０９７８】
また、ステップＳ３４２において、サンプル入れ替え条件が満たされると判定された場合、処理は、ステップＳ３４３に進み、対象モジュール決定部２２（図８）は、対象モジュールになったモジュール#mのサンプルバッファRSmにバッファリングされている学習データのR個のサンプルのうちの1個のサンプルをランダムに選択して、サンプルバッファRSmから削除する。
【０９７９】
そして、処理は、ステップＳ３４３からステップＳ３４４に進み、対象モジュール決定部２２（図８）は、サンプルバッファRSmに、対象モジュールになったモジュール#mの学習に用いられた学習データOtを追加の形でバッファリングさせ、これにより、サンプルバッファRSmにバッファリングされている学習データのサンプル数を、R個にして、処理はリターンする。
【０９８０】
以上のようにして、サンプル保存処理では、R回目の、モジュール#mの学習（追加学習）が行われるまでは、いままでのモジュール#mの学習に用いられた学習データすべてが、サンプルバッファRSmにバッファリングされ、モジュール#mの学習の回数が、R回を超えると、いままでのモジュール#mの学習に用いられた学習データの一部が、サンプルバッファRSmにバッファリングされる。
【０９８１】
［対象モジュールの決定］
【０９８２】
図６０は、図５８のステップＳ３１９で行われる、対象モジュールの決定の処理を説明するフローチャートである。
【０９８３】
ステップＳ３５１において、対象モジュール決定部２２は、新規モジュールを、対象モジュールとして、新規モジュール学習処理（図１９）を仮に行った場合と、最大尤度モジュールを、対象モジュールとして、既存モジュール学習処理（図１８）を仮に行った場合とのそれぞれについて、ACHMMのエントロピーH(θ）と、対数尤度log(P(Ot|θ))とを求める仮学習処理を行う。
【０９８４】
なお、仮学習処理の詳細については、後述するが、仮学習処理は、ACHMM記憶部１６（図８）に現に記憶されているACHMMのモデルパラメータのコピーを用いて行われる。したがって、仮学習処理が行われることによって、ACHMM記憶部１６に記憶されているACHMMのモデルパラメータは、変更（更新）されない。
【０９８５】
ステップＳ３５１の仮学習処理の後、処理は、ステップＳ３５２に進み、対象モジュール決定部２２（図８）は、ACHMMのモジュール総数Mが、1であるかどうかを判定する。
【０９８６】
ここで、ステップＳ３５２において、モジュール総数Mの判定の対象となるACHMMは、仮学習処理後のACHMMではなく、ACHMM記憶部１６に現に記憶されているACHMMである。
【０９８７】
ステップＳ３５２において、ACHMMのモジュール総数Mが、1であると判定された場合、すなわち、ACHMMが、1個のモジュール#1だけで構成される場合、処理は、ステップＳ３５３に進み、以下、ステップＳ３５３ないしＳ３５５において、図１０のステップＳ３１ないしＳ３３と同様に、最大対数尤度maxLPと閾値尤度THとの大小関係に基づいて、対象モジュールが決定される。
【０９８８】
すなわち、ステップＳ３５３では、対象モジュール決定部２２（図８）は、最大尤度モジュール#m*の対数尤度である最大対数尤度maxLPが、図１３ないし図１６で説明したようにして設定された尤度閾値TH以上であるかどうかを判定する。
【０９８９】
ステップＳ３５３において、最大対数尤度maxLPが、尤度閾値TH以上であると判定された場合、処理は、ステップＳ３５４に進み、対象モジュール決定部２２は、最大尤度モジュール#m*を、対象モジュールに決定し、処理は、リターンする。
【０９９０】
また、ステップＳ３５３において、最大対数尤度maxLPが、尤度閾値TH以上でないと判定された場合、処理は、ステップＳ３５５に進み、対象モジュール決定部２２は、新規モジュールを、対象モジュールに決定し、処理は、ステップＳ３５６に進む。
【０９９１】
ステップＳ３５６では、対象モジュール決定部２２は、ACHMMのエントロピーH(θ)を用いて、ACHMMの対数事前確率log(P（θ))を、式log(P（θ))=-prior_balance×H(θ)に従って求めるための比例定数prior_balanceを求めて、処理は、リターンする。
【０９９２】
すなわち、上述のステップＳ３５１で行われる仮学習処理において求められる、新規モジュール学習処理（図１９）を仮に行った場合の、ACHMMのエントロピーH(θ）と、対数尤度log(P(Ot|θ))とを、それぞれ、ETPnewと、LPROBnewと表すこととする。
【０９９３】
さらに、仮学習処理において求められる、最大尤度モジュールを、対象モジュールとして、既存モジュール学習処理（図１８）を仮に行った場合の、ACHMMのエントロピーH(θ）と、対数尤度log(P(Ot|θ))とを、それぞれ、ETPwinと、LPROBwinと表すこととする。
【０９９４】
ステップＳ３５６では、対象モジュール決定部２２は、新規モジュール学習処理（図１９）を仮に行った場合の、その新規モジュール学習処理後のACHMMのエントロピーETPnew、及び、対数尤度LPROBnew、並びに、既存モジュール学習処理（図１８）を仮に行った場合の、その既存モジュール学習処理後のACHMMのエントロピーETPwin、及び、対数尤度LPROBwinを用い、式prior_balance=(LPROBnew-LPROBwin)/(ETPnew-ETPwin)に従って、比例定数prior_balanceを求める。
【０９９５】
一方、ACHMMのモジュール総数Mが、1でないと判定された場合、すなわち、ACHMMが、2個以上ののモジュール#1ないしMで構成される場合、処理は、ステップＳ３５７に進み、対象モジュール決定部２２は、ステップＳ３５６で求めた比例定数prior_balanceを用いて求められるACHMMの事前確率（の改善量）に基づく対象モジュールの決定の処理を行って、処理は、リターンする。
【０９９６】
ここで、モデルパラメータθで定義されるACHMMの事後確率P(θ|O)は、ベイズ推定に基づき、ACHMMの事前確率P（θ)、尤度P(O|θ)、時系列データOが発生する確率（事前確率）P(O)を用い、式P(θ|O)=P(O|θ)×P(θ)/P(O)で求めることができる。
【０９９７】
式P(θ|O)=P(O|θ)×P(θ)/P(O)は、両辺の対数をとると、式log(P(θ|O))=log(P(O|θ))＋log(P(θ))−log(P(O))となる。
【０９９８】
いま、新規モジュール学習処理（図１９）を仮に行った場合の、その新規モジュール学習処理後のACHMMのモデルパラメータθを、θnewと表すとともに、既存モジュール学習処理（図１８）を仮に行った場合の、その既存モジュール学習処理後のACHMMのモデルパラメータθを、θwinと表すこととする。
【０９９９】
この場合、新規モジュール学習処理後のACHMMの（対数）事後確率log(P(θnew|O))は、式log(P(θnew|O))=log(P(O|θnew))＋log(P(θnew))−log(P(O))で表される。
【１０００】
また、既存モジュール学習処理後のACHMMの（対数）事後確率log(P(θwin|O))は、式log(P(θwin|O))=log(P(O|θwin))＋log(P(θwin))−log(P(O))で表される。
【１００１】
したがって、既存モジュール学習処理後のACHMMの事後確率log(P(θwin|O))に対する、新規モジュール学習処理後のACHMMの事後確率log(P(θnew|O))の改善量△APは、式
△AP＝log(P(θnew|O))−log(P(θwin|O))
＝log(P(O|θnew))＋log(P(θnew))−log(P(O))
−{（log(P(O|θwin))＋log(P(θwin))−log(P(O))）}
＝log(P(O|θnew))−log(P(O|θwin))＋log(P(θnew)−log(P(θwin))
で表される。
【１００２】
また、ACHMMの対数事前確率log(P（θ))は、式log(P（θ))=-prior_balance×H(θ)で表される。したがって、上述の事後確率の改善量△APは、式
△AP＝log(P(O|θnew))−log(P(O|θwin))−prior_balance×(H(θnew)−H(θwin))
＝(LPROBnew−LPROBwin)−prior_balance×(ETPnew−ETPwin)
で表される。
【１００３】
一方、図６０において、ステップＳ３５６での比例定数prior_balanceの算出は、ACHMMのモジュール総数Mが、1であると判定され（ステップＳ３５２）、最大対数尤度maxLPが、尤度閾値TH以上でないと判定されることにより（ステップＳ３５３）、ACHMMにおいて、初めて生成された新規モジュールが、対象モジュールとされる場合（ステップＳ３５５）に行われる。
【１００４】
したがって、その直前に行われたステップＳ３５１の仮学習処理で求められる、新規モジュール学習処理後のACHMMのエントロピーETPnew、及び、対数尤度LPROBnewは、ACHMMが1個のモジュールで構成される場合に、そのモジュールの対数尤度（つまりは、最大対数尤度maxLP）が、尤度閾値TH以上でないときに、ACHMMに、初めて、新規モジュールを追加し、その新規モジュールで、学習データの追加学習を行って得られるACHMMのエントロピー、及び、対数尤度である。
【１００５】
また、直前のステップＳ３５１の仮学習処理で求められる、既存モジュール学習処理後のACHMMのエントロピーETPwin、及び、対数尤度LPROBwinは、ACHMMが1個のモジュールで構成される場合に、そのモジュールの対数尤度（つまりは、最大対数尤度maxLP）が、尤度閾値TH以上でないときに、ACHMMを構成する1個のモジュールで、学習データの追加学習を行って得られるACHMMのエントロピー、及び、対数尤度である。
【１００６】
ステップＳ３５６において、式prior_balance=(LPROBnew-LPROBwin)/(ETPnew-ETPwin)に従って求められる比例定数prior_balanceの算出には、以上のような、新規モジュール学習処理後のACHMMのエントロピーETPnew、及び、対数尤度LPROBnew、並びに、既存モジュール学習処理後のACHMMのエントロピーETPwin、及び、対数尤度LPROBwinが用いられている。
【１００７】
そして、ステップＳ３５６において、式prior_balance=(LPROBnew-LPROBwin)/(ETPnew-ETPwin)に従って求められる比例定数prior_balanceは、式△AP＝(LPROBnew−LPROBwin)−prior_balance×(ETPnew−ETPwin)で表される事後確率の改善量△APが0となる場合のprior_balanceである。
【１００８】
すなわち、ステップＳ３５６において、式prior_balance=(LPROBnew-LPROBwin)/(ETPnew-ETPwin)に従って求められる比例定数prior_balanceは、1個のモジュールで構成されるACHMMに、そのモジュールの対数尤度が尤度閾値TH以上でないために、初めて、新規モジュールを追加した場合の事後確率の改善量△APを0とするprior_balanceである。
【１００９】
したがって、そのような比例定数prior_balanceを用い、式△AP＝(LPROBnew−LPROBwin)−prior_balance×(ETPnew−ETPwin)に従って求められる事後確率の改善量△APが、0を超える値になる場合に、新規モジュールを、対象モジュールに決定し、0以下になる場合に、最大尤度モジュールを、対象モジュールに決定することで、観測空間において、観測値をクラスタリングするクラスタリング粒度を、所望の粒度にするのに適切な閾値尤度THを用いて、対象モジュールを決定する場合よりも、ACHMMの事後確率を改善することができる。
【１０１０】
ここで、比例定数prior_balanceは、ACHMMのエントロピーH(θ)を、対数事前確率log(P(θ))＝−prior_balance×H(θ)に変換する変換係数であるが、対数事前確率log(P(θ))は、ACHMMの（対数）事後確率logP(θ｜O)に影響を与えるので、比例定数prior_balanceは、エントロピーH(θ)が、ACHMMの事後確率logP(θ｜O)に影響する度合いを制御するパラメータでもある。
【１０１１】
さらに、比例定数prior_balanceを用いて求められるACHMMの事後確率が改善されるかどうかによって、最大尤度モジュール、又は、新規モジュールが、対象モジュールに決定されるので、比例定数prior_balanceは、ACHMMへの新規モジュールの追加の仕方に影響を及ぼす。
【１０１２】
図６０では、ACHMMに、新規モジュールが、初めて追加されるまでは、対象モジュールの決定、つまり、ACHMMに、新規モジュールを追加するかどうかの決定を、閾値尤度THを用いて行い、その閾値尤度THを用いて、ACHMMに、新規モジュールが、初めて追加されるときのACHMMの事後確率の改善量△APを0（基準）として、比例定数prior_balanceが求められる。
【１０１３】
このようにして求められる比例定数prior_balanceは、観測空間において、観測値をクラスタリングするクラスタリング粒度を、ベイス推定で求められる事後確率P(θ｜O)に対してエントロピーH(θ)が影響する度合い（影響度）に換算する係数あるということができる。
【１０１４】
そして、その後の対象モジュールの決定は、比例定数prior_balanceを用いて求められる事後確率の改善量△APに基づいて行われるので、所望のクラスタリング粒度を実現するように、理論的、かつ、柔軟（適応的）に、新規モジュールが、ACHMMに追加され、モデル化対象について、過不足のない数のモジュールで構成されるACHMMを得ることができる。
【１０１５】
図６１は、図６０のステップＳ３５１で行われる仮学習処理を説明するフローチャートである。
【１０１６】
仮学習処理では、ステップＳ３６１において、対象モジュール決定部２２（図８）は、更新部２３を制御することにより、ACHMM記憶部１６に記憶されたACHMM（のモデルパラメータ）のコピー、及び、ACHMMの学習に用いる、例えば、バッファbuffer_winner_sample等の変数のコピーを生成する。
【１０１７】
ここで、仮学習処理においては、以降の処理は、ステップＳ３６１で生成されたACHMM及び、変数のコピーを用いて行われる。
【１０１８】
ステップＳ３６１の後、処理は、ステップＳ３６２に進み、対象モジュール決定部２２は、更新部２３を制御することにより、ACHMM及び変数のコピーを用いて、新規モジュール学習処理（図１９）を行い、処理は、ステップＳ３６３に進む。
【１０１９】
ここで、ACHMM及び変数のコピーを用いて行われる新規モジュール学習処理を、新規モジュール仮学習処理ともいう。
【１０２０】
ステップＳ３６３では、対象モジュール決定部２２は、新規モジュール仮学習処理で生成された新規モジュール#Mにおいて、最新（現在時刻t）の学習データOtが観測される対数尤度log(P(Ot｜λM))を、新規モジュール仮学習処理後のACHMMの対数尤度LPROBnew=log(P(Ot|θnew))として求め、処理は、ステップＳ３６４に進む。
【１０２１】
ここで、ステップＳ３６２の新規モジュール仮学習処理（図１９）では、新規モジュール#mが、最大尤度モジュールとなるまで、図１９のステップＳ１１５の新規モジュール#mの追加学習（式（３）ないし式（１６）に従ったパラメータの更新）が、繰り返し行われる。
【１０２２】
したがって、ステップ３６３において、新規モジュール仮学習処理後のACHMMの対数尤度LPROBnew=log(P(Ot|θnew))が求められるときには、新規モジュール#mが、最大尤度モジュールになっており、その最大尤度モジュールである新規モジュール#mの対数尤度（最大対数尤度）が、新規モジュール仮学習処理後のACHMMの対数尤度LPROBnew=log(P(Ot|θnew))として求められる。
【１０２３】
なお、ステップＳ３６２の新規モジュール仮学習処理での、新規モジュール#mの追加学習の繰り返しの回数は、所定の回数（例えば、２０回等）に制限され、新規モジュール#mの追加学習は、学習率γを、式γ=1/(Qlearn[m]+1.0)に従って更新しながら、新規モジュール#mが、最大尤度モジュールとなるまで、繰り返される。
【１０２４】
そして、新規モジュール#mの追加学習を、所定の回数だけ繰り返しても、新規モジュール#mが、最大尤度モジュールとならない場合、ステップＳ３６３では、新規モジュール#mではなく、最大尤度モジュールの対数尤度（最大対数尤度）が、新規モジュール仮学習処理後のACHMMの対数尤度LPROBnew=log(P(Ot|θnew))として求められる。
【１０２５】
図５５のステップＳ３２２の新規モジュール学習処理でも、ステップＳ３６２の新規モジュール仮学習処理と同様に、新規モジュール#mの追加学習は、繰り返しの回数を所定の回数に制限して、新規モジュール#mが、最大尤度モジュールとなるまで、繰り返される。
【１０２６】
ステップＳ３６４では、対象モジュール決定部２２は、更新部２３を制御することにより、新規モジュール仮学習処理後のACHMMを対象として、ACHMMのエントロピーH(θ)の算出処理を行うことで、新規モジュール仮学習処理後のACHMMのエントロピーETPnew=H(θnew)を求め、処理は、ステップＳ３６５に進む。
【１０２７】
ここで、ACHMMのエントロピーH(θ)の算出処理については、後述する。
【１０２８】
ステップＳ３６５では、対象モジュール決定部２２は、更新部２３を制御することにより、ACHMM及び変数のコピーを用いて、既存モジュール学習処理（図１８）を行い、処理は、ステップＳ３６６に進む。
【１０２９】
ここで、ACHMM及び変数のコピーを用いて行われる既存モジュール学習処理を、既存モジュール仮学習処理ともいう。
【１０３０】
ステップＳ３６６では、対象モジュール決定部２２は、既存モジュール仮学習処理で最大尤度モジュールとなったモジュール#m*において、最新（現在時刻t）の学習データOtが観測される対数尤度log(P(Ot｜λm*))を、既存モジュール仮学習処理後のACHMMの対数尤度LPROBwin=log(P(Ot|θwin))として求め、処理は、ステップＳ３６７に進む。
【１０３１】
ステップＳ３６７では、対象モジュール決定部２２は、更新部２３を制御することにより、既存モジュール仮学習処理後のACHMMを対象として、ACHMMのエントロピーH(θ)の算出処理を行うことで、既存モジュール仮学習処理後のACHMMのエントロピーETPwin=H(θwin)を求め、処理は、リターンする。
【１０３２】
図６２は、図６１のステップＳ３６４、及び、Ｓ３６７で行われる、ACHMMのエントロピーH(θ)の算出処理を説明するフローチャートである。
【１０３３】
ステップＳ３７１において、対象モジュール決定部２２（図８）は、更新部２３を制御することにより、ACHMMを構成するM個のモジュール#1ないし#Mのそれぞれに対応付けられたサンプルバッファRS1ないしRSMから、所定数であるZサンプルの学習データを、エントロピーH(θ)の算出用データとして抽出し、処理は、ステップＳ３７２に進む。
【１０３４】
ここで、サンプルバッファRS1ないしRSMから抽出する算出用データの数Zとしては、任意の値をとすることができるが、ACHMMを構成するモジュールの数に比較して、十分大きい値であることが望ましい。例えば、ACHMMを構成するモジュールの数が200程度である場合、値Zとしては、1000程度を採用することができる。
【１０３５】
また、サンプルバッファRS1ないしRSMからの算出用データとしてのZサンプルの学習データの抽出の方法としては、例えば、サンプルバッファRS1ないしRSMの中から、ランダムに、１つのサンプルバッファRSmを選択し、そのサンプルバッファRSmに記憶されている学習データのうちの1サンプルの学習データを、ランダムに抽出することを、Z回だけ繰り返す方法を採用することができる。
【１０３６】
なお、モジュール#mの追加学習が行われた回数（モジュール#mが、対象モジュールになった回数）を、モジュール#1ないし#Mすべての追加学習の回数の総和で除算した値を、確率ωmとして、サンプルバッファRS1ないしRSMの中からのサンプルバッファRSmの選択は、確率ωmで行うようにすることができる。
【１０３７】
ここで、サンプルバッファRS1ないしRSMから抽出されたZサンプルの算出用データのうちの、i番目の算出用データを、SOiと表す。
【１０３８】
ステップＳ３７２では、対象モジュール決定部２２は、モジュール#1ないし#Mそれぞれの、Zサンプルの算出用データSOiそれぞれに対する尤度P(SOi|λm)を求めて、処理は、ステップＳ３７３に進む。
【１０３９】
ステップＳ３７３では、対象モジュール決定部２２は、Zサンプルの算出用データSOiそれぞれについて、算出用データSOiに対する各モジュール#mの尤度P(SOi|λm)を、ACHMMを構成するすべてのモジュール#1ないし#Mについての総和が1.0になる値である確率に確率化（確率分布化）する。
【１０４０】
すなわち、いま、尤度P(SOi|λm)を、第i行第m列のコンポーネントとする、Z行×M列の行列を、尤度行列ということとすると、ステップＳ３７３では、尤度行列の各行ごとに、その行のコンポーネントである尤度P(SOi|λ1)，P(SOi|λ2)，・・・，P(SOi|λM)の総和が、1.0になるように、その尤度P(SOi|λ1)，P(SOi|λ2)，・・・，P(SOi|λM)それぞれが正規化される。
【１０４１】
より具体的には、尤度P(SOi|λm)を確率化して得られる確率を、φm（SOi)と表すこととすると、ステップＳ３７３では、式（１７）に従って、尤度P(SOi|λm)が、確率φm（SOi)に確率化される。
【１０４２】
【数１７】
2011059817.tif 000019
・・・（１７）
【１０４３】
ここで、式（１７）の変数mについてのサメ−ション（Σ）は、変数mを、1からMまでの整数に変えてのサメ−ションである。
【１０４４】
ステップＳ３７３の後、処理は、ステップＳ３７４に進み、対象モジュール決定部２２は、確率φm（SOi)を、算出用データSOiが発生する発生確率として、算出用データSOiのエントロピーε(SOi)を、式（１８）に従って求めて、処理は、ステップＳ３７５に進む。
【１０４５】
【数１８】
2011059817.tif 000020
・・・（１８）
【１０４６】
ここで、式（１８）の変数mについてのサメ−ションは、変数mを、1からMまでの整数に変えてのサメ−ションである。
【１０４７】
ステップＳ３７５では、対象モジュール決定部２２は、算出用データSOiのエントロピーε(SOi)を用い、式（１９）に従って、モジュール#mのエントロピーH(λm)を算出し、処理は、ステップＳ３７６に進む。
【１０４８】
【数１９】
2011059817.tif 000021
・・・（１９）
【１０４９】
ここで、式（１９）の変数iについてのサメ−ションは、変数iを、1からZまでの整数に変えてのサメ−ションである。
【１０５０】
また、式（１９）において、ωm(SOi)は、算出用データSOiのエントロピーε(SOi)を、モジュール#mのエントロピーH(λm)に影響させる度合いとしての重みであり、この重みωm(SOi)は、尤度P(SOi｜λm)を用い、式（２０）に従って求められる。
【１０５１】
【数２０】
2011059817.tif 000022
・・・（２０）
【１０５２】
ここで、式（１９）の変数iについてのサメ−ションは、変数iを、1からZまでの整数に変えてのサメ−ションである。
【１０５３】
ステップＳ３７６では、対象モジュール決定部２２は、モジュール#mのエントロピーH(λm)の、モジュール#1ないし#Mについての総和を、式（２１）に従い、ACHMMのエントロピーH(θ)として求め、処理は、リターンする。
【１０５４】
【数２１】
2011059817.tif 000023
・・・（２１）
【１０５５】
ここで、式（２１）の変数mについてのサメ−ションは、変数mを、1からMまでの整数に変えてのサメ−ションである。
【１０５６】
なお、式（２０）で求められる重みωm(SOi)は、モジュール#mの尤度P(SOi｜λm)を、より高い尤度とする算出用データSOiのエントロピーε(SOi)を、モジュール#mのエントロピーH(λm)に、より影響させるための係数である。
【１０５７】
すなわち、モジュール#mのエントロピーH(λm)は、概念的には、そのモジュール#mの尤度P(SOi｜λm)が高いときに、モジュール#m以外のモジュールの尤度が低くなっている度合いを表す尺度である。
【１０５８】
一方、算出用データSOiのエントロピーε(SOi)が高いことは、ACHMMの「コンパクト度合い」が、「コンパクトでない」をこと表す状況、つまり、表現のあいまいさが大きく、よりランダム的な性質に近い度合いになっていることを表す。
【１０５９】
したがって、エントロピーε(SOi)が高い算出用データSOiが観測される尤度P(SOi|λm)が、他の算出用データに比較して大きくなるモジュール#mが存在する場合には、そのモジュール#mについては、そのモジュール#mだけが優位に高い尤度になる算出データが存在しないことになり、そのモジュール#mの存在が、ACHMM全体の冗長性を生み出している。
【１０６０】
つまり、エントロピーε(SOi)が高い算出用データSOiが観測される尤度P(SOi|λm)が、他の算出用データに比較して高くなるモジュール#mの存在は、ACHMMを、「コンパクトでない」状況にたらしめていることに対する寄与度が大きい。
【１０６１】
そのため、モジュール#mのエントロピーH(λm)を求める式（１９）では、モジュール#mの尤度P(SOi|λm)が高い算出用データSOiのエントロピーε(SOi)を、エントロピーH(λm)に、より影響させるために、エントロピーε(SOi)が、高い尤度P(SOi|λm)に比例する大きな重みωm(SOi)で加算される。
【１０６２】
一方、エントロピーε(SOi)が高い算出用データSOiが観測される尤度P(SOi|λm)が低いモジュール#mは、ACHMMを、「コンパクトでない」状況にたらしめていることに対する寄与度が小さい。
【１０６３】
そのため、モジュール#mのエントロピーH(λm)を求める式（１９）では、モジュール#mの尤度P(SOi|λm)が低い算出用データSOiのエントロピーε(SOi)が、低い尤度P(SOi|λm)に比例する小さな重みωm(SOi)で加算される。
【１０６４】
なお、式（２０）によれば、エントロピーε(SOi)が小さい算出用データSOiが観測される尤度P(SOi|λm)が大きくなるモジュール#mについては、重みωm(SOi)が大きくなり、式（１９）において、そのような大きな重みωm(SOi)で、小さいエントロピーε(SOi)が加算されるが、エントロピーε(SOi)のスケールに対して、尤度P(SOi|λm)、ひいては、重みωm(SOi)のスケールが小さいので、式（１９）のモジュール#mのエントロピーH(λm)は、そのような小さいエントロピーε(SOi)の影響は、あまり受けない。
【１０６５】
つまり、式（１９）のモジュール#mのエントロピーH(λm)は、モジュール#mにおいて、エントロピーε(SOi)が高い算出用データSOiが観測される尤度P(SOi|λm)が高い場合の影響を強く受け、値が大きくなる。
【１０６６】
図６３は、図６０のステップＳ３５７で行われる、事後確率に基づく対象モジュールの決定の処理を説明するフローチャートである。
【１０６７】
事後確率に基づく対象モジュールの決定の処理は、図６０で説明したように、ACHMMが、1個のモジュールで構成され、最大対数尤度maxLP（ACHMMを構成する1個のモジュールの対数尤度）が、閾値尤度TH未満となって、新規モジュールが対象モジュールとなり、比例定数prior_balanceが求められた後、したがって、ACHMMが、2個以上（複数）のモジュールで構成されるようになった以降に行われる。
【１０６８】
事後確率に基づく対象モジュールの決定の処理では、ステップＳ３９１において、対象モジュール決定部２２（図８）は、既存モジュール仮学習処理後のACHMMの事後確率に対する、新規モジュール仮学習処理後のACHMMの事後確率の改善量△APを、直前に行われた仮学習処理（図６０のステップＳ３５１）で求められた、既存モジュール仮学習処理後のACHMMのエントロピーETPwin、及び、対数尤度LPROBwin、並びに、新規モジュール仮学習後のACHMMのエントロピーETPnew、及び、対数尤度LPROBnewを用いて求める。
【１０６９】
すなわち、対象モジュール決定部２２は、既存モジュール仮学習処理後のACHMMのエントロピーETPwinに対する、新規モジュール仮学習後のACHMMのエントロピーETPnewの改善量△ETPを、式（２２）に従って求める。
【１０７０】
【数２２】
2011059817.tif 000024
・・・（２２）
【１０７１】
さらに、対象モジュール決定部２２は、既存モジュール仮学習処理後のACHMMの対数尤度LPROBwinに対する、新規モジュール仮学習後のACHMMの対数尤度LPROBnewの改善量△LPROBを、式（２３）に従って求める。
【１０７２】
【数２３】
2011059817.tif 000025
・・・（２３）
【１０７３】
そして、対象モジュール決定部２２は、エントロピーの改善量△ETP、対数尤度の改善量△LPROB、及び、比例定数prior_balanceを用い、上述の式△AP＝(LPROBnew−LPROBwin)−prior_balance×(ETPnew−ETPwin)に一致する式（２４）に従って、既存モジュール仮学習処理後のACHMMの事後確率に対する、新規モジュール仮学習処理後のACHMMの事後確率の改善量△APを求める。
【１０７４】
【数２４】
2011059817.tif 000026
・・・（２４）
【１０７５】
ステップＳ３９１において、ACHMMの事後確率の改善量△APが求められた後、処理は、ステップＳ３９２に進み、対象モジュール決定部２２は、ACHMMの事後確率の改善量△APが、0以下であるかどうかを判定する。
【１０７６】
ステップＳ３９２において、ACHMMの事後確率の改善量△APが、0以下であると判定された場合、すなわち、新規モジュールを対象モジュールとして、追加学習を行った後のACHMMの事後確率が、最大尤度モジュールを対象モジュールとして、追加学習を行った後のACHMMの事後確率より高くならない場合、処理は、ステップＳ３９３に進み、対象モジュール決定部２２は、最大尤度モジュール#m*を、対象モジュールに決定し、処理は、リターンする。
【１０７７】
また、ステップＳ３９２において、ACHMMの事後確率の改善量△APが、0以下でないと判定された場合、すなわち、新規モジュールを対象モジュールとして、追加学習を行った後のACHMMの事後確率が、最大尤度モジュールを対象モジュールとして、追加学習を行った後のACHMMの事後確率より高くなる場合、処理は、ステップＳ３９４に進み、対象モジュール決定部２２は、新規モジュールを、対象モジュールに決定し、処理は、リターンする。
【１０７８】
以上のように、事後確率の改善量に基づいて、尤度最大モジュール、又は、新規モジュールを、対象モジュールに決定する、事後確率に基づく対象モジュールの決定の方法を、図２８や図５１のエージェントに適用することにより、エージェントは、エージェントがおかれた移動環境内を動き、経験を積んでいく過程で、適宜、ACHMMが既に有する既存のモジュールの学習や、必要な新規モジュールの追加を繰り返し、移動環境の規模や構造についての事前知識なしで、移動環境の規模に適したモジュール数で構成される、移動環境の状態遷移モデルとしてのACHMMが構築される。
【１０７９】
なお、事後確率に基づく対象モジュールの決定の方法は、ACHMMの他、モジュール追加型の学習アーキテクチャを採用する学習モデル（以下、モジュール追加アーキテクチャ型学習モデルともいう）に適用することができる。
【１０８０】
モジュール追加アーキテクチャ型学習モデルとしては、ACHMMのように、モジュールとして、HMMを採用し、時系列データを競合、追加的に学習する学習モデルの他、例えば、モジュールとして、リカレントニューラルネットワーク(RNN)等の、時系列データを学習し、時系列パターンを記憶する時系列パターン記憶モデル等を採用し、時系列データを競合、追加的に学習する学習モデルがある。
【１０８１】
すなわち、事後確率に基づく対象モジュールの決定の方法は、HMMやRNN等の時系列パターン記憶モデル、その他の任意のモデルをモジュールとして採用するモジュール追加アーキテクチャ型学習モデルに適用することができる。
【１０８２】
図６４は、本発明の情報処理装置を適用した学習装置の第３実施の形態の構成例を示すブロック図である。
【１０８３】
なお、図中、図１の場合と対応する部分については、同一の符号を付してあり、以下では、その説明は、適宜省略する。
【１０８４】
図６４において、学習装置は、センサ１１、観測時系列バッファ１２、モジュール学習部３１０、及び、モジュール追加アーキテクチャ型学習モデル記憶部３２０を含む。
【１０８５】
図６４の学習装置において、観測時系列バッファ１２に記憶された観測値は、上述したウインドウ長Wの時系列データの単位で、逐次、モジュール学習部３１０の尤度算出部３１１、及び、更新部３１３に供給される。
【１０８６】
モジュール学習部３１０は、尤度算出部３１１、対象モジュール決定部３１２、及び、更新部３１３を含む。
【１０８７】
尤度算出部３１１は、観測時系列バッファ１２から逐次供給される観測値の時系列であるウインドウ長Wの時系列データを、学習に用いる学習データとし、モジュール追加アーキテクチャ型学習モデル記憶部３２０に記憶されたモジュール追加アーキテクチャ型学習モデルを構成する各モジュールについて、モジュールにおいて、学習データが観測される尤度を求め、対象モジュール決定部３１２に供給する。
【１０８８】
対象モジュール決定部３１２は、モジュール追加アーキテクチャ型学習モデル記憶部３２０に記憶されたモジュール追加アーキテクチャ型学習モデルのうちの、尤度算出部３１１からの尤度が最大の最大尤度モジュール、又は、新規モジュールを、モジュール追加アーキテクチャ型学習モデルを構成するモジュールである時系列パターン記憶モデルのモデルパラメータを更新する対象の対象モジュールに決定し、その対象モジュールを表すモジュールインデクスを、更新部３１３に供給する。
【１０８９】
すなわち、対象モジュール決定部３１２は、学習データを用いて、最大尤度モジュールの学習を行った場合と、新規モジュールの学習を行った場合とのそれぞれの場合のモジュール追加アーキテクチャ型学習モデルの事後確率に基づいて、尤度最大モジュール、又は、新規のモジュールを、対象モジュールに決定し、その対象モジュールを表すモジュールインデクスを、更新部３１３に供給する。
【１０９０】
更新部３１３は、観測時系列バッファ１２からの学習データを用いて、対象モジュール決定部３１２から供給されるモジュールインデクスが表すモジュールである時系列パターン記憶モデルのモデルパラメータを更新する追加学習を行い、更新後のモデルパラメータによって、モジュール追加アーキテクチャ型学習モデル記憶部３２０の記憶内容を更新する。
【１０９１】
モジュール追加アーキテクチャ型学習モデル記憶部３２０は、時系列パターンを記憶する時系列パターン記憶モデルを、最小の構成要素であるモジュールとして有するモジュール追加アーキテクチャ型学習モデルを記憶する。
【１０９２】
図６５は、モジュール追加アーキテクチャ型学習モデルのモジュールとなる時系列パターン記憶モデルの例を示す図である。
【１０９３】
図６５では、時系列パターン記憶モデルとして、RNNが採用されている。
【１０９４】
図６５では、RNNは、入力層、中間層（隠れ層）、及び出力層の３層で構成されている。入力層、中間層、及び出力層は、それぞれ任意の数の、ニューロンに相当するユニットにより構成される。
【１０９５】
RNNでは、入力層の一部のユニットである入力ユニットに、外部から入力ベクトルxtが入力（供給）される。ここで、入力ベクトルxtは、時刻tのサンプル（ベクトル）を表す。なお、本明細書において、ベクトルとは、コンポーネントが1個のベクトル、すなわち、スカラ値であっても良い。
【１０９６】
入力層の、入力ベクトルxtが入力される入力ユニット以外の、残りのユニットは、コンテキストユニットであり、コンテキストユニットには、出力層の一部のユニットの出力（ベクトル）が、内部状態を表すコンテキストとして、コンテキストループを介してフィードバックされる。
【１０９７】
ここで、時刻tの入力ベクトルxtが入力層の入力ユニットに入力されるときに入力層のコンテキストユニットに入力される時刻tのコンテキストを、ctと記載する。
【１０９８】
中間層のユニットは、入力層に入力される入力ベクトルxtとコンテキストctを対象として、所定のウエイト（重み）を用いた重み付け加算を行い、その重み付け加算の結果を引数とする非線形関数の演算を行って、その演算結果を、出力層のユニットに出力する。
【１０９９】
出力層のユニットでは、中間層のユニットが出力するデータを対象として、中間層のユニットと同様の処理が行われる。そして、出力層の一部のユニットからは、上述したように、次の時刻t+1のコンテキストct+1が出力され、入力層にフィードバックされる。また、出力層の残りのユニットからは、入力ベクトルxtに対する出力ベクトル、すなわち、入力ベクトルxtが、関数の引数に相当するとすると、その引数に対する関数値に相当する出力ベクトルが出力される。
【１１００】
ここで、RNNの学習では、例えば、RNNに対して、ある時系列データの時刻tのサンプルを、入力ベクトルとして与えるとともに、その時系列データの、次の時刻t+1のサンプルを、出力ベクトルの真値として与え、出力ベクトルの、真値に対する誤差を小さくするように、ウエイトを更新することが行われる。
【１１０１】
このような学習が行われたRNNでは、入力ベクトルxtに対する出力ベクトルとして、その入力ベクトルxtの次の時刻t+1の入力ベクトルxt+1の予測値x*t+1が出力される。
【１１０２】
なお、上述したように、RNNでは、ユニットへの入力が重み付け加算されるが、この重み付け加算に用いられるウエイト（重み）が、RNNのモデルパラメータ（RNNパラメータ）である。RNNパラメータとしてのウエイトには、入力ユニットから中間層のユニットへのウエイトや、中間層のユニットから出力層のユニットへのウエイト等がある。
【１１０３】
以上のようなRNNを、モジュールとして採用する場合には、そのRNNの学習時には、入力ベクトル及び出力ベクトルの真値として、例えば、ウインドウ長Wの時系列データである学習データOt={ot-W+1,・・・,ot}が与えられる。
【１１０４】
そして、RNNの学習では、学習データOt={ot-W+1,・・・,ot}の各時刻のサンプルを、入力ベクトルとして、RNNに与えたときに、RNNが出力する出力ベクトルとしての時刻t+1のサンプルの予測値の予測誤差（の総和）を小さくするウエイトが、例えば、BPTT(Back-Propagation Through Time)法により求められる。
【１１０５】
ここで、時系列データOt={ot-W+1,・・・,ot}に対する、モジュール#mであるRNNの予測誤差Em(t)は、例えば、式（２５）に従って求められる。
【１１０６】
【数２５】
2011059817.tif 000027
・・・（２５）
【１１０７】
ここで、式（２５）において、od(τ)は、時系列データOtの時刻τのサンプルである入力ベクトルoτの第d次元のコンポーネントを表し、o^d(τ)は、入力ベクトルoτ-1に対して、RNNが出力する出力ベクトルである、時刻τの入力ベクトルoτの予測値（ベクトル）o^τの第d次元のコンポーネントを表す。
【１１０８】
以上のようなRNNを、モジュールとして採用するモジュール追加アーキテクチャ型学習モデルの学習では、モジュール学習部３１０（図６４）において、ACHMMの場合と同様に、閾値（閾値尤度TH）を用いて、対象モジュールを決定することができる。
【１１０９】
すなわち、閾値を用いて、対象モジュールを決定する場合には、モジュール学習部３１０は、学習データOtについて、モジュール追加アーキテクチャ型学習モデルの各モジュール#mの予測誤差Em(t)を、式（２５）に従って求める。
【１１１０】
さらに、モジュール学習部３１０は、式Ewin＝minm[Em(t)]に従い、モジュール追加アーキテクチャ型学習モデルの各モジュール#mの予測誤差Em(t)のうちの最小の予測誤差（最小予測誤差）Ewinを求める。
【１１１１】
ここで、minm[]は、インデクスmに対して変化するかっこ[]内の値の最小値を表す。
【１１１２】
モジュール学習部３１０は、最小予測誤差Ewinが、所定の閾値Eadd以下である場合には、その最小予測誤差Ewinが得られたモジュールを、対象モジュールに決定し、最小予測誤差Ewinが、所定の閾値Eadd以下でない場合には、新規モジュールを、対象モジュールに決定する。
【１１１３】
モジュール学習部３１０では、以上のように、閾値を用いて、対象モジュールを決定する他、事後確率に基づいて、対象モジュールを決定することができる。
【１１１４】
事後確率に基づいて、対象モジュールを決定する場合には、時系列データOtに対する、モジュール#mであるRNNの尤度が必要となる。
【１１１５】
そこで、モジュール学習部３１０では、尤度算出部３１１が、モジュール追加アーキテクチャ型学習モデルの各モジュール#mの予測誤差Em(t)を、式（２５）に従って求める。さらに、尤度算出部３１１は、予測誤差Em(t)を、式（２６）に従って確率化することで、0.0以上1.0以下の実数値であり、かつ、総和が1.0となる各モジュール#mの尤度（RNNパラメータ（ウエイト）λmで定義されるRNNの尤度）P(Ot|λm)を求め、対象モジュール決定部３１２に供給する。
【１１１６】
【数２６】
2011059817.tif 000028
・・・（２６）
【１１１７】
ここで、時系列データOtに対する、モジュール追加アーキテクチャ型学習モデルθ（モデルパラメータθで定義されるモジュール追加アーキテクチャ型学習モデル）の尤度P(Ot|θ)として、式P(Ot|θ)＝maxm[P(Ot|λm)]に従い、モジュール追加アーキテクチャ型学習モデルの各モジュールの尤度P(Ot|λm)のうちの最大値を採用するとともに、モジュール追加アーキテクチャ型学習モデルθのエントロピーH(θ)として、ACHMMの場合と同様にして、尤度P(Ot|λm)から求められるエントロピーを採用することとすると、モジュール追加アーキテクチャ型学習モデルθの対数事前確率log(P(θ))は、比例定数prior_balanceを用いた式log(P(θ))＝−prior_balance×H(θ)に従って求めることができる。
【１１１８】
さらに、モジュール追加アーキテクチャ型学習モデルθの事後確率P(θ|Ot)は、ACHMMの場合と同様に、事前確率P(θ)及びP(Ot)、並びに、尤度P(Ot|θ)を用い、ベイズ推定に基づく式P(θ|Ot)=P(Ot|θ)×P(θ)/P(Ot)に従って求めることができる。
【１１１９】
したがって、モジュール追加アーキテクチャ型学習モデルθの事後確率の改善量△APも、ACHMMの場合と同様にして求めることができる。
【１１２０】
モジュール学習部３１０では、対象モジュール決定部３１２が、尤度算出部３１１から供給される尤度P(Ot|λm)を用い、上述したようにして、モジュール追加アーキテクチャ型学習モデルθの、ベイズ推定に基づく事後確率の改善量△APを求め、その改善量△APに基づいて、対象モジュールを決定する。
【１１２１】
図６６は、図６４のモジュール学習部３１０が行うモジュール追加アーキテクチャ型学習モデルθの学習の処理（モジュール学習処理）を説明するフローチャートである。
【１１２２】
なお、図６６のモジュール学習処理では、図１７で説明した可変ウインドウ学習を行うが、図９で説明した固定ウインドウ学習を行うことも可能である。
【１１２３】
図６６のモジュール学習処理のステップＳ４１１ないしＳ４２３では、図５８のモジュール学習処理のステップＳ３１１ないしＳ３２３とそれぞれ同様の処理が行われる。
【１１２４】
但し、図６６のモジュール学習処理は、RNNをモジュールとするモジュール追加アーキテクチャ型学習モデルを対象とする点で、HMMをモジュールとするACHMMを対象とする図５８のモジュール学習処理と異なり、図６６のモジュール学習処理では、かかる点に起因して、図５８のモジュール学習処理とは一部異なる処理が行われる。
【１１２５】
すなわち、ステップＳ４１１において、更新部３１３（図６４）は、初期化処理として、モジュール追加アーキテクチャ型学習モデル記憶部３２０に記憶されるモジュール追加アーキテクチャ型学習モデルを構成する１個目のモジュール#1となるRNNの生成、及び、モジュール総数Mへの、初期値としての1のセットを行う。
【１１２６】
ここで、RNNの生成では、あらかじめ決定されたユニットの数の入力層、中間層、及び、出力層、並びに、コンテキストユニットのRNNが生成され、ウエイトが、例えば、乱数によって初期化される。
【１１２７】
その後、センサ１１から、観測値otが出力され、観測時系列バッファ１２に記憶されるのを待って、処理は、ステップＳ４１１からステップＳ４１２に進み、モジュール学習部３１０（図６４）は、時刻tを、t=1にセットし、処理は、ステップＳ４１３に進む。
【１１２８】
ステップＳ４１３では、モジュール学習部３１０は、時刻tが、ウインドウ長Wに等しいかどうかを判定する。
【１１２９】
ステップＳ４１３において、時刻tがウインドウ長Wに等しくないと判定された場合、センサ１１から、次の観測値otが出力され、観測時系列バッファ１２に記憶されるのを待って、処理は、ステップＳ４１４に進む。
【１１３０】
ステップＳ４１４では、モジュール学習部３１０は、時刻tを1だけインクリメントして、処理は、ステップＳ４１３に戻り、以下、同様の処理が繰り返される。
【１１３１】
また、ステップＳ４１３において、時刻tがウインドウ長Wに等しいと判定された場合、すなわち、観測時系列バッファ１２に、ウインドウ長W分の観測値の時系列である時系列データOt=W={o1，・・・，oW}が記憶された場合、対象モジュール決定部３１２は、1個だけのモジュール#1で構成されるモジュール追加アーキテクチャ型学習モデルの、そのモジュール#1を、対象モジュールに決定する。
【１１３２】
そして、対象モジュール決定部３１２は、対象モジュールであるモジュール#1を表すモジュールインデクスm=1を、更新部３１３に供給し、処理は、ステップＳ４１３からステップＳ４１５に進む。
【１１３３】
ステップＳ４１５では、更新部３１３は、対象モジュール決定部３１２からのモジュールインデクスm=1が表す対象モジュールであるモジュール#1の追加学習を、観測時系列バッファ１２に記憶されたウインドウ長Wの時系列データOt=W={o1，・・・，oW}を、学習データとして用いて行う。
【１１３４】
ここで、モジュール追加アーキテクチャ型学習モデルのモジュールが、RNNである場合には、RNNの追加学習の方法としては、例えば、特開2008-287626号公報に記載されている方法を採用することができる。
【１１３５】
ステップＳ４１５では、更新部３１３は、さらに、バッファbuffer_winner_sampleに、学習データOt=Wをバッファリングする。
【１１３６】
また、更新部３１３は、勝者期間情報cnt_since_winに、初期値としての1をセットする。
【１１３７】
さらに、更新部３１３は、前回勝者情報past_winに、初期値としての、モジュール#1のモジュールインデクスである1をセットする。
【１１３８】
そして、更新部３１３は、サンプルバッファRS1に、学習データOtをバッファリングする。
【１１３９】
その後、センサ１１から、次の観測値otが出力され、観測時系列バッファ１２に記憶されるのを待って、処理は、ステップＳ４１５からステップＳ４１６に進み、モジュール学習部３１０が、時刻tを1だけインクリメントして、処理は、ステップＳ４１７に進む。
【１１４０】
ステップＳ４１７では、尤度算出部３１１は、観測時系列バッファ１２に記憶されたウインドウ長Wの最新の時系列データOt={ot-W+1，・・・，ot}を、学習データとし、モジュール追加アーキテクチャ型学習モデル記憶部１６に記憶されたモジュール追加アーキテクチャ型学習モデルを構成するすべてのモジュール#1ないし#Mのそれぞれについて、モジュール尤度P(Ot|λm)を求めて、対象モジュール決定部３１２に供給する。
【１１４１】
すなわち、尤度算出部３１１は、各モジュール#mについて、モジュール#mであるRNN（以下、RNN#mとも記載する）に対して、学習データOt（の各時刻のサンプルoτ）を、入力ベクトルとして与え、入力ベクトルに対する出力ベクトルの予測誤差Em(t)を、式（２５）に従って求める。
【１１４２】
さらに、尤度算出部３１１は、予測誤差Em(t)を用い、RNNパラメータλmで定義されるRNN#mの尤度であるモジュール尤度P(Ot|λm)を、式（２６）に従って求め、対象モジュール決定部３１２に供給する。
【１１４３】
そして、処理は、ステップＳ４１７からステップＳ４１８に進み、対象モジュール決定部３１２は、モジュール追加アーキテクチャ型学習モデルを構成するモジュール#1ないし#Mのうちの、尤度算出部３１１からのモジュール尤度P(Ot|λm)が最大の最大尤度モジュール#m*＝argmaxm[P(Ot|λm)]を求める。
【１１４４】
さらに、対象モジュール決定部３１２は、尤度算出部３１１からのモジュール尤度P(Ot|λm)から、最大対数尤度maxLP=maxm[log(P(Ot|λm))]（最大尤度モジュール#m*のモジュール尤度P(Ot|λm*)の対数）を求め、処理は、ステップＳ４１８からステップＳ４１９に進む。
【１１４５】
ステップＳ４１９では、対象モジュール決定部３１２は、最大対数尤度maxLP、又は、モジュール追加アーキテクチャ型学習モデルの事後確率に基づいて、最大尤度モジュール#m*、又は、新規に生成するRNNである新規モジュールを、RNNパラメータを更新する対象モジュールに決定する対象モジュールの決定の処理を行う。
【１１４６】
そして、対象モジュール決定部３１２は、対象モジュールのモジュールインデクスを、更新部３１３に供給し、処理は、ステップＳ４１９からステップＳ４２０に進む。
【１１４７】
ここで、ステップＳ４１９の対象モジュールの決定の処理は、図６０で説明した場合と同様にして行われる。
【１１４８】
すなわち、モジュール追加アーキテクチャ型学習モデルが、1個だけのモジュール#1で構成される場合には、最大対数尤度maxLPと、あらかじめ設定された閾値との大小関係に基づき、最大対数尤度maxLPが閾値以上であるときには、最大尤度モジュール#m*が、対象モジュールに決定され、最大対数尤度maxLPが閾値以上でないときには、新規モジュールが、対象モジュールに決定される。
【１１４９】
さらに、モジュール追加アーキテクチャ型学習モデルが、1個だけのモジュール#1で構成される場合において、新規モジュールが、対象モジュールに決定されたときには、図６０で説明したようにして、比例定数prior_balanceが求められる。
【１１５０】
また、モジュール追加アーキテクチャ型学習モデルが、2個以上のM個のモジュール#1ないし#Mで構成される場合には、図６０、及び、図６３で説明したように、既存モジュール仮学習処理後のモジュール追加アーキテクチャ型学習モデルの事後確率に対する、新規モジュール仮学習処理後のモジュール追加アーキテクチャ型学習モデルの事後確率の改善量△APが、比例定数prior_balanceを用いて求められる。
【１１５１】
そして、事後確率の改善量△APが、0以下である場合には、最大尤度モジュール#m*が、対象モジュールに決定される。
【１１５２】
一方、事後確率の改善量△APが、0以下でない場合には、新規モジュールが、対象モジュールに決定される。
【１１５３】
ここで、モジュール追加アーキテクチャ型学習モデルの既存モジュール仮学習処理とは、モジュール追加アーキテクチャ型学習モデル３２０に記憶されたモジュール追加アーキテクチャ型学習モデル、及び、変数のコピーを用いて行われる既存モジュール学習処理である。
【１１５４】
モジュール追加アーキテクチャ型学習モデルの既存モジュール学習処理では、実効学習回数Qlearn[m]、及び、学習率γが用いられないこと、及び、追加学習が、HMMではなく、RNNを対象として行われることを除き、図１８で説明したのと同様の処理が行われる。
【１１５５】
同様に、モジュール追加アーキテクチャ型学習モデルの新規モジュール仮学習処理とは、モジュール追加アーキテクチャ型学習モデル３２０に記憶されたモジュール追加アーキテクチャ型学習モデル、及び、変数のコピーを用いて行われる新規モジュール学習処理である。
【１１５６】
モジュール追加アーキテクチャ型学習モデルの新規モジュール学習処理では、実効学習回数Qlearn[m]、及び、学習率γが用いられないこと、及び、追加学習が、HMMではなく、RNNを対象として行われることを除き、図１９で説明したのと同様の処理が行われる。
【１１５７】
ステップＳ４２０では、更新部３１３は、対象モジュール決定部３１２からのモジュールインデクスが表す対象モジュールが、最大尤度モジュール#m*、又は、新規モジュールのうちのいずれであるかを判定する。
【１１５８】
ステップＳ４２０において、対象モジュールが、最大尤度モジュール#m*であると判定された場合、処理は、ステップＳ４２１に進み、更新部３１３は、最大尤度モジュール#m*のRNNパラメータλm*を更新する既存モジュール学習処理を行う。
【１１５９】
また、ステップＳ４２０において、対象モジュールが、新規モジュールであると判定された場合、処理は、ステップＳ４２２に進み、更新部３１３は、新規モジュールのRNNパラメータを更新する新規モジュール学習処理を行う。
【１１６０】
ステップＳ４２１の既存モジュール学習処理、及び、ステップＳ４２２の新規モジュール学習処理の後は、いずれも、処理は、ステップＳ４２３に進み、対象モジュール決定部３１２は、対象モジュール#mのRNNパラメータの更新（対象モジュール#mの追加学習）に用いられた学習データOtを、その対象モジュール#mに対応するサンプルバッファRSmに、学習データのサンプルとしてバッファリングする、図５９で説明したサンプル保存処理を行う。
【１１６１】
そして、センサ１１から、次の観測値otが出力され、観測時系列バッファ１２に記憶されるのを待って、処理は、ステップＳ４２３から、ステップＳ４１６に戻り、以下、同様の処理が繰り返される。
【１１６２】
以上のように、モジュール追加アーキテクチャ型学習モデルのモジュールが、RNNである場合であっても、予測誤差を、式（２６）等に従って確率化することで、尤度に換算し、その尤度を用いて求められる、モジュール追加アーキテクチャ型学習モデルの事後確率の改善量に基づいて、対象モジュールを決定することにより、最大対数尤度maxLPと閾値との大小関係によって、対象モジュールを決定する場合に比較して、理論的、かつ、柔軟（適応的）に、新規モジュールが、モジュール追加アーキテクチャ型学習モデルに追加されていき、モデル化対象について、過不足のない数のモジュールで構成されるモジュール追加アーキテクチャ型学習モデルを得ることができる。
【１１６３】
［本発明を適用したコンピュータの説明］
【１１６４】
次に、上述した一連の処理は、ハードウェアにより行うこともできるし、ソフトウェアにより行うこともできる。一連の処理をソフトウェアによって行う場合には、そのソフトウェアを構成するプログラムが、汎用のコンピュータ等にインストールされる。
【１１６５】
そこで、図６７は、上述した一連の処理を実行するプログラムがインストールされるコンピュータの一実施の形態の構成例を示している。
【１１６６】
プログラムは、コンピュータに内蔵されている記録媒体としてのハードディスク５０５や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)やスピーカ等で構成される。
【１１７３】
ここで、本明細書において、コンピュータがプログラムに従って行う処理は、必ずしもフローチャートとして記載された順序に沿って時系列に行われる必要はない。すなわち、コンピュータがプログラムに従って行う処理は、並列的あるいは個別に実行される処理（例えば、並列処理あるいはオブジェクトによる処理）も含む。
【１１７４】
また、プログラムは、１のコンピュータ（プロセッサ）により処理されるものであっても良いし、複数のコンピュータによって分散処理されるものであっても良い。さらに、プログラムは、遠方のコンピュータに転送されて実行されるものであっても良い。
【１１７５】
なお、本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない領域において種々の変更が可能である。
【符号の説明】
【１１７６】
１１  センサ，  １２  観測時系列バッファ，  １３  モジュール学習部，  １４  認識部，  １５  遷移情報管理部，  １６  ACHMM記憶部，  １７  HMM構成部，  ２１  尤度算出部，  ２２  対象モジュール決定部，  ２３  更新部，  ３１  尤度算出部，  ３２  最尤推定部，  ４１  情報時系列バッファ，  ４２  情報更新部，  ５１  連結部，  ５２  正規化部，  ５３  頻度行列生成部，  ５４  頻度化部，  ５５  平均化部，  ５６  正規化部，  ７１  センサ，  ７２  観測時系列バッファ，  ７３  モジュール学習部，  ７４  認識部，  ７５  遷移情報管理部，  ７６  ACHMM記憶部，  ７７  HMM構成部，  ８１  プランニング部，  ８２  アクションコントローラ，  ８３  駆動部，  ８４  アクチュエータ，  １０１  ACHMM階層処理部，  １１１  ACHMMユニット，  １２１  入力制御部，  １２１Ａ  入力バッファ，  １２２  ACHMM処理部，  １２３  出力制御部，  １２３Ａ  出力バッファ，  １３１  モジュール学習部，  １３２  認識部，  １３３  遷移情報管理部，  １３４  ACHMM記憶部，  １３５  HMM構成部，  １５１  ACHMM階層処理部，  ２０１１ないし２０１Ｈ  入力制御部，  ２０１Ａ１ないし２０１ＡＨ  入力バッファ，  ２０２１ないし２０２Ｈ  ACHMM処理部，  ２０３１ないし２０３Ｈ  出力制御部，  ２０３Ａ１ないし２０３ＡＨ  出力バッファ，  ２１１１ないし２１１Ｈ  モジュール学習部，  ２１２１ないし２１２Ｈ  認識部，  ２１３１ないし２１３Ｈ  遷移情報管理部，  ２１４１ないし２１４Ｈ  ACHMM記憶部，  ２１５１ないし２１５Ｈ  HMM構成部，  ２２１１ないし２２１Ｈ  プランニング部，  ３１０  モジュール学習部，  ３１１  尤度算出部，  ３１２  対象モジュール決定部，  ３１３  更新部，  ３２０  モジュール追加アーキテクチャ型学習モデル記憶部，  ５０１  バス，  ５０２  CPU，  ５０３  ROM，  ５０４  RAM，  ５０５  ハードディスク，  ５０６  出力部，  ５０７  入力部，  ５０８  通信部，  ５０９  ドライブ，  ５１０  入出力インタフェース，  ５１１  リムーバブル記録媒体
【図１】
2011059817.tif 000029
【図２】
2011059817.tif 000030
【図３】
2011059817.tif 000031
【図４】
2011059817.tif 000032
【図５】
2011059817.tif 000033
【図６】
2011059817.tif 000034
【図７】
2011059817.tif 000035
【図８】
2011059817.tif 000036
【図９】
2011059817.tif 000037
【図１０】
2011059817.tif 000038
【図１１】
2011059817.tif 000039
【図１２】
2011059817.tif 000040
【図１３】
2011059817.tif 000041
【図１４】
2011059817.tif 000042
【図１５】
2011059817.tif 000043
【図１６】
2011059817.tif 000044
【図１７】
2011059817.tif 000045
【図１８】
2011059817.tif 000046
【図１９】
2011059817.tif 000047
【図２０】
2011059817.tif 000048
【図２１】
2011059817.tif 000049
【図２２】
2011059817.tif 000050
【図２３】
2011059817.tif 000051
【図２４】
2011059817.tif 000052
【図２５】
2011059817.tif 000053
【図２６】
2011059817.tif 000054
【図２７】
2011059817.tif 000055
【図２８】
2011059817.tif 000056
【図２９】
2011059817.tif 000057
【図３０】
2011059817.tif 000058
【図３１】
2011059817.tif 000059
【図３２】
2011059817.tif 000060
【図３３】
2011059817.tif 000061
【図３４】
2011059817.tif 000062
【図３５】
2011059817.tif 000063
【図３６】
2011059817.tif 000064
【図３７】
2011059817.tif 000065
【図３８】
2011059817.tif 000066
【図３９】
2011059817.tif 000067
【図４０】
2011059817.tif 000068
【図４１】
2011059817.tif 000069
【図４２】
2011059817.tif 000070
【図４３】
2011059817.tif 000071
【図４４】
2011059817.tif 000072
【図４５】
2011059817.tif 000073
【図４６】
2011059817.tif 000074
【図４７】
2011059817.tif 000075
【図４８】
2011059817.tif 000076
【図４９】
2011059817.tif 000077
【図５０】
2011059817.tif 000078
【図５１】
2011059817.tif 000079
【図５２】
2011059817.tif 000080
【図５３】
2011059817.tif 000081
【図５４】
2011059817.tif 000082
【図５５】
2011059817.tif 000083
【図５６】
2011059817.tif 000084
【図５７】
2011059817.tif 000085
【図５８】
2011059817.tif 000086
【図５９】
2011059817.tif 000087
【図６０】
2011059817.tif 000088
【図６１】
2011059817.tif 000089
【図６２】
2011059817.tif 000090
【図６３】
2011059817.tif 000091
【図６４】
2011059817.tif 000092
【図６５】
2011059817.tif 000093
【図６６】
2011059817.tif 000094
【図６７】
2011059817.tif 000095