JP2011059817A - 情報処理装置、情報処理方法、及び、プログラム - Google Patents

情報処理装置、情報処理方法、及び、プログラム Download PDF

Info

Publication number
JP2011059817A
JP2011059817A JP2009206435A JP2009206435A JP2011059817A JP 2011059817 A JP2011059817 A JP 2011059817A JP 2009206435 A JP2009206435 A JP 2009206435A JP 2009206435 A JP2009206435 A JP 2009206435A JP 2011059817 A JP2011059817 A JP 2011059817A
Authority
JP
Japan
Prior art keywords
module
unit
hmm
state
achmm
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
JP2009206435A
Other languages
English (en)
Inventor
Hirotaka Suzuki
洋貴 鈴木
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Corp
Original Assignee
Sony Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sony Corp filed Critical Sony Corp
Priority to JP2009206435A priority Critical patent/JP2011059817A/ja
Priority to US12/869,321 priority patent/US20110060707A1/en
Publication of JP2011059817A publication Critical patent/JP2011059817A/ja
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning

Abstract

【課題】モデル化対象に対して適切な規模の学習モデルを得る。
【解決手段】HMMを、最小の構成要素であるモジュールとして有する学習モデルであるACHMMを構成する各モジュールについて、そのモジュールにおいて、外部から供給される観測値の時系列である入力データが観測される尤度を求め、ACHMMの各モジュールの尤度に基づいて、ACHMMの1つのモジュール、又は、新規のモジュールを、HMMパラメータを更新する対象のモジュールである対象モジュールに決定し、入力データを用いて、対象モジュールのHMMパラメータを更新するモジュール学習を行うACHMM処理部122を有するACHMMユニット111が生成され、階層構造に接続される。本発明は、例えば、時系列のデータの学習等に適用できる。
【選択図】図41

Description

本発明は、情報処理装置、情報処理方法、及び、プログラムに関し、特に、モデル化対象に対して適切な規模の学習モデルを得ることができるようにする情報処理装置、情報処理方法、及び、プログラムに関する。
モデル化の対象であるモデル化対象を、センサでセンシングし、そのセンサが出力するセンサ信号を、観測値として用いて、モデル化(学習モデルの学習)を行う方法としては、センサ信号(観測値)をクラスタリングするk-平均法(k-means clustering method)や、SOM(Self-Organization Map)等がある。
例えば、モデル化対象の、ある状態(内部状態)が、クラスタに対応すると考えると、k-平均法やSOMでは、状態は、センサ信号の信号空間(観測値の観測空間)内に、代表的なベクトルとして配置される。
すなわち、K-平均法の学習では、信号空間内に、適当に、初期値としての代表ベクトル(セントロイドベクトル)が配置される。さらに、各時刻のセンサ信号としてのベクトルを入力データとして、入力データ(ベクトル)が、その入力データとの距離が最も近い代表ベクトルに割り当てられる。そして、各代表ベクトルに割り当てられた入力データの平均ベクトルによって代表ベクトルを更新することが繰り返される。
SOMの学習では、SOMを構成するノードに、適当に、初期値としての代表ベクトルが与えられる。さらに、センサ信号としてのベクトルを入力データとして、入力データとの距離が最も近い代表ベクトルを有するノードが、勝者ノード(winner)に決定される。そして、勝者ノードを含む近傍のノードの代表ベクトルが、勝者ノードに近いノードの代表ベクトルほど、入力データの影響を受けるように更新される競合近傍学習が行われる(非特許文献1)。
SOMと関連する研究は非常に多く、状態(代表ベクトル)を逐次的に増やしながら学習するGrowing Gridと呼ばれる学習方法なども提案されている(非特許文献2)。
上述のk-平均法やSOM等の学習では、センサ信号の信号空間内に、状態(代表ベクトル)が配置されるだけで、状態の遷移の情報(どのように状態が遷移するかの情報)は、獲得されない。
さらに、状態の遷移の情報を獲得しないために、パーセプチャルエイリアシング(perceptual aliasing)と呼ばれる問題、すなわち、モデル化対象の状態が異なるにもかかわらず、モデル化対象から観測されるセンサ信号が同じ場合に、これを区別することができないという問題を扱うことが困難である。
具体的には、例えば、カメラを備えた移動型ロボットが、カメラを通して風景画像をセンサ信号として観測する場合に、同じ風景画像が観測される場所が環境中に複数個所あると、それらを区別することはできないという問題が発生する。
一方、モデル化対象から観測されるセンサ信号を時系列データとして扱い、その時系列データを用いて、モデル化対象を、状態および状態遷移を合わせ持つ確率モデルとして学習する方法として、HMM(Hidden Markov Model)の利用が提案されている。
HMMは、音声認識に広く利用されるモデルの一つであり、状態が遷移する確率を表す状態遷移確率や、各状態において、状態が遷移するときに、ある観測値が観測される観測確率となる確率密度を表す出力確率密度関数等で定義される状態遷移モデルである(非特許文献3)。
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の構造そのものを決定する方法が提案されている(非特許文献4)。
非特許文献4に記載の方法では、HMMの状態の数や、状態遷移の数を1つずつ増やしていき、そのつどパラメータの推定を行い、赤池情報量基準(AICと呼ばれる)と呼ばれる評価基準を用いて、HMMを評価するということを繰り返しながら、HMMの構造が決定される。
非特許文献4に記載の方法は、音素モデルのような小規模なHMMに応用されている。
しかしながら、非特許文献4に記載の方法は、大規模なHMMのパラメータの推定を行うことを考慮した方法ではないため、複雑なモデル化対象を適切にモデル化することは困難である。
すなわち、一般に、HMMの構造に関して、1つずつ状態と状態遷移を追加する修正を行うだけでは、評価基準が単調に改善されることは、必ずしも保証されない。
したがって、大規模なHMMで表現される複雑なモデル化対象について、非特許文献4に記載の方法を用いても、適切なHMMの構造が決定されるとは限らない。
複雑なモデル化対象については、小規模なHMMを、最小の構成要素であるモジュールとして、モジュールの集合体(モジュールネットワーク)の全体最適化学習を行う学習方法が提案されている(特許文献1、並びに、非特許文献5及び6)。
特許文献1、及び、非特許文献5に記載の方法では、各ノードに小規模なHMMを割り当てたSOMを、学習モデルとして用い、競合近傍学習が行われる。
特許文献1、及び、非特許文献5に記載の学習モデルは、SOMのクラスタリングの能力と、HMMの時系列データの構造化の特徴とを備えたモデルであるが、SOMのノード数(モジュール数)を、あらかじめ設定する必要があり、モデル化対象の規模が事前に知りえない場合には、適用が難しい。
また、非特許文献6に記載の方法では、HMMを、モジュールとして、複数のモジュールの競合学習が行われる。すなわち、非特許文献6に記載の方法では、既定数のHMMのモジュールを用意しておき、入力データに対して、各モジュールの尤度が算出される。そして、最大の尤度が得られるモジュール(勝者)のHMMに対して、入力データを与えて学習が行われる。
非特許文献6に記載の方法も、特許文献1、及び、非特許文献5に記載の方法と同様に、モジュール数をあらかじめ設定する必要があり、モデル化対象の規模が事前に知りえない場合には、適用が難しい。
特開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)を、最小の構成要素であるモジュールとして有する学習モデルに与える入力データとして、前記観測値の時系列を出力する入力制御を行う入力制御手段と、前記学習モデルを構成する各モジュールについて、前記モジュールにおいて、前記入力データが観測される尤度を求め、前記尤度に基づいて、前記学習モデルの1つのモジュール、又は、新規のモジュールを、HMMパラメータを更新する対象のモジュールである対象モジュールに決定し、前記入力データを用いて、前記対象モジュールのHMMパラメータを更新するモジュール学習処理を行うモジュール学習手段と、前記学習モデルを用いて、前記入力データを認識し、前記入力データの認識結果を表す認識結果情報を出力する認識手段とを含み、前記学習モデルを用いた処理を行うモデル処理手段と、前記認識結果情報を記憶し、外部に出力する出力データとして、前記認識結果情報を出力する出力制御を行う出力制御手段とを有するユニットを生成し、前記ユニットを、階層構造に接続する階層処理手段を備え、下位層のユニットである下位ユニットの前記出力制御手段は、前記出力データを、前記下位ユニットに接続された上位層のユニットである上位ユニットに出力し、前記上位ユニットの前記入力制御手段は、前記下位ユニットからの前記出力データを記憶し、前記出力データの時系列を、前記入力データとして出力する情報処理装置、又は、情報処理装置として、コンピュータを機能させるためのプログラムである。
本発明の一側面の情報処理方法は、情報処理装置が、外部から供給される観測値を記憶し、HMM(Hidden Markov Model)を、最小の構成要素であるモジュールとして有する学習モデルに与える入力データとして、前記観測値の時系列を出力する入力制御を行う入力制御手段と、前記学習モデルを構成する各モジュールについて、前記モジュールにおいて、前記入力データが観測される尤度を求め、前記尤度に基づいて、前記学習モデルの1つのモジュール、又は、新規のモジュールを、HMMパラメータを更新する対象のモジュールである対象モジュールに決定し、前記入力データを用いて、前記対象モジュールのHMMパラメータを更新するモジュール学習処理を行うモジュール学習手段と、前記学習モデルを用いて、前記入力データを認識し、前記入力データの認識結果を表す認識結果情報を出力する認識手段とを含み、前記学習モデルを用いた処理を行うモデル処理手段と、前記認識結果情報を記憶し、外部に出力する出力データとして、前記認識結果情報を出力する出力制御を行う出力制御手段とを有するユニットを生成し、前記ユニットを、階層構造に接続するステップを含み、下位層のユニットである下位ユニットの前記出力制御手段は、前記出力データを、前記下位ユニットに接続された上位層のユニットである上位ユニットに出力し、前記上位ユニットの前記入力制御手段は、前記下位ユニットからの前記出力データを記憶し、前記出力データの時系列を、前記入力データとして出力する情報処理方法である。
以上のような一側面においては、外部から供給される観測値を記憶し、HMM(Hidden Markov Model)を、最小の構成要素であるモジュールとして有する学習モデルに与える入力データとして、前記観測値の時系列を出力する入力制御を行う入力制御手段と、前記学習モデルを用いた処理を行うモデル処理手段と、前記認識結果情報を記憶し、外部に出力する出力データとして、前記認識結果情報を出力する出力制御を行う出力制御手段とを有するユニットが生成され、前記ユニットが、階層構造に接続される。そして、下位層のユニットである下位ユニットの前記出力制御手段では、前記出力データが、前記下位ユニットに接続された上位層のユニットである上位ユニットに出力され、前記上位ユニットの前記入力制御手段では、前記下位ユニットからの前記出力データが記憶され、前記出力データの時系列が、前記入力データとして出力される。
なお、情報処理装置は、独立した装置であっても良いし、1つの装置を構成している内部ブロックであっても良い。
また、プログラムは、伝送媒体を介して伝送することにより、又は、記録媒体に記録して、提供することができる。
本発明の一側面によれば、モデル化対象に対して適切な規模の学習モデルを得ることができる。特に、例えば、大規模なモデル化対象に対して、適切な学習モデルを、容易に得ることができる。
本発明の情報処理装置を適用した学習装置の第1実施の形態の構成例を示すブロック図である。 観測時系列バッファ12からモジュール学習部13に供給される観測値の時系列を説明する図である。 HMMの例を示す図である。 音声認識で利用されるHMMの例を示す図である。 スモールワールドネットワークの例を示す図である。 ACHMMの例を示す図である。 ACHMMの学習(モジュール学習)の概要を説明する図である。 モジュール学習部13の構成例を示すブロック図である。 モジュール学習処理を説明するフローチャートである。 対象モジュールの決定の処理を説明するフローチャートである。 既存モジュール学習処理を説明するフローチャートである。 新規モジュール学習処理を説明するフローチャートである。 ガウス分布G1ないしG3のそれぞれに従う観測値の例を示す図である。 ガウス分布G1ないしG3をアクティベートするタイミングの例を示す図である。 シミュレーションの結果得られる、係数coef_th_new、及び、平均ベクトル間距離Hと、学習後のACHMMを構成するモジュール数との関係を示す図である。 学習後のACHMMのモジュール数が、3ないし5個になる場合の、係数coef_th_new、及び、平均ベクトル間距離Hを示す図である。 モジュール学習処理を説明するフローチャートである。 既存モジュール学習処理を説明するフローチャートである。 新規モジュール学習処理を説明するフローチャートである。 認識部14の構成例を示すブロック図である。 認識処理を説明するフローチャートである。 遷移情報管理部15の構成例を示すブロック図である。 遷移情報管理部15が遷移情報を生成する遷移情報生成処理を説明する図である。 遷移情報生成処理を説明するフローチャートである。 HMM構成部17の構成例を示すブロック図である。 HMM構成部17による結合HMMの構成の方法を説明する図である。 HMM構成部17による、結合HMMのHMMパラメータを求める方法の具体例を説明する図である。 学習装置を適用したエージェントの第1実施の形態の構成例を示すブロック図である。 アクションコントローラ82が、アクション関数を求める学習の処理を説明するフローチャートである。 アクション制御処理を説明するフローチャートである。 プランニング処理を説明するフローチャートである。 エージェントによるACHMMの学習の概要を説明する図である。 エージェントによる結合HMMの再構成の概要を説明する図である。 エージェントによるプランニングの概要を説明する図である。 移動環境内を移動するエージェントによるACHMMの学習と、結合HMMの再構成との例を示す図である。 移動環境内を移動するエージェントによるACHMMの学習と、結合HMMの再構成との他の例を示す図である。 移動環境内を、エージェントが移動した場合に、ACHMMを用いた認識によって得られる、最大尤度モジュールのインデクスの時系列を示す図である。 下位ACHMMと上位ACHMMとを階層構造に接続した、2階層の階層構造のACHMMを説明する図である。 エージェントの移動環境の例を示す図である。 本発明の情報処理装置を適用した学習装置の第2実施の形態の構成例を示すブロック図である。 ACHMM階層処理部101の構成例を示すブロック図である。 ACHMMユニット111のACHMM処理部122の構成例を示すブロック図である。 出力制御部123による出力データの出力制御の第1の出力制御方法を説明する図である。 出力制御部123による出力データの出力制御の第2の出力制御方法を説明する図である。 下位ユニット111が、タイプ1、及び2のそれぞれの認識結果情報を、出力データとして出力する場合の、上位ユニット111h+1のHMMの状態の粒度を説明する図である。 入力制御部121による入力データの入力制御の第1の入力制御方法を説明する図である。 入力制御部121による入力データの入力制御の第2の入力制御方法を説明する図である。 ACHMMのモジュールであるHMMの観測確率の拡張を説明する図である。 ユニット生成処理を説明するフローチャートである。 ユニット学習処理を説明するフローチャートである。 学習装置を適用したエージェントの第2実施の形態の構成例を示すブロック図である。 最下位層以外の第h階層のACHMMユニット200の構成例を示すブロック図である。 最下位層のACHMMユニット200の構成例を示すブロック図である。 目標状態指定ユニット200のプランニング部221が行うアクション制御処理を説明するフローチャートである。 中間層ユニット200のプランニング部221が行うアクション制御処理を説明するフローチャートである。 最下位層ユニット200のプランニング部221が行うアクション制御処理を説明するフローチャートである。 階層ACHMMが、3階層のACHMMユニット#1,#2、及び、#3で構成される場合の、各階層のACHMMを模式的に示す図である。 モジュール学習部13が行うモジュール学習処理の他の例を説明するフローチャートである。 サンプル保存処理を説明するフローチャートである。 対象モジュールの決定の処理を説明するフローチャートである。 仮学習処理を説明するフローチャートである。 ACHMMのエントロピーの算出処理を説明するフローチャートである。 事後確率に基づく対象モジュールの決定の処理を説明するフローチャートである。 本発明の情報処理装置を適用した学習装置の第3実施の形態の構成例を示すブロック図である。 モジュール追加アーキテクチャ型学習モデルのモジュールとなる時系列パターン記憶モデルとしてのRNNの例を示す図である。 モジュール学習部310が行うモジュール追加アーキテクチャ型学習モデルθの学習の処理(モジュール学習処理)を説明するフローチャートである。 本発明を適用したコンピュータの一実施の形態の構成例を示すブロック図である。
<第1実施の形態>
[学習装置の構成例]
図1は、本発明の情報処理装置を適用した学習装置の第1実施の形態の構成例を示すブロック図である。
図1において、学習装置は、モデル化対象から観測される観測値に基づき、モデル化対象の確率統計的な動特性を与える学習モデルを学習する(モデル化を行う)。
なお、ここでは、学習装置は、モデル化対象に対する事前知識を持っていないこととするが、事前知識を持っていても良い。
学習装置は、センサ11、観測時系列バッファ12、モジュール学習部13、認識部14、遷移情報管理部15、ACHMM記憶部16、及び、HMM構成部17を含む。
センサ11は、各時刻に、モデル化対象をセンシングし、モデル化対象から観測されるセンサ信号である観測値を、時系列に出力する。
観測時系列バッファ12は、センサ11が出力する観測値の時系列を一時記憶する。観測時系列バッファ12に記憶された観測値の時系列は、モジュール学習部13、及び、認識部14に、逐次供給される。
なお、観測時系列バッファ12は、少なくとも、後述するウインドウ長Wの観測値を記憶するだけの記憶容量を有し、その記憶容量分の観測値を記憶した後は、最も古い観測値を消去して、新たな観測値を記憶する。
モジュール学習部13は、観測時系列バッファ12から逐次供給される観測値の時系列を用いて、ACHMM記憶部16に記憶された、HMM(Hidden Markov Model)を、最小の構成要素であるモジュールとして有する学習モデルである、後述するACHMM(Additive Competitive Hidden Markov Model)の学習(モジュール学習)を行う。
認識部14は、ACHMM記憶部16に記憶されたACHMMを用い、観測時系列バッファ12から逐次供給される観測値の時系列を認識(識別)し、その認識結果を表す認識結果情報を出力する。
認識部14が出力する認識結果情報は、遷移情報管理部15に供給される。なお、認識結果情報は、(学習装置の)外部に出力することもできる。
遷移情報管理部15は、認識部14からの認識結果情報に基づいて、ACHMM記憶部16に記憶されたACHMMにおける各状態遷移の頻度の情報である遷移情報を生成し、ACHMM記憶部16に供給する。
ACHMM記憶部16は、HMMを、最小の構成要素であるモジュールとして有する学習モデルであるACHMM(のモデルパラメータ)を記憶する。
ACHMM記憶部16に記憶されたACHMMは、モジュール学習部13、認識部14、及び、遷移情報管理部15によって、必要に応じて参照される。
なお、ACHMMのモデルパラメータには、ACHMMを構成するモジュールであるHMMのモデルパラメータ(HMMパラメータ)と、遷移情報管理部15が生成する遷移情報とが含まれる。
HMM構成部17は、ACHMM記憶部16に記憶されたACHMMから、(ACHMMを構成するモジュールであるHMMより)大規模なHMM(以下、結合HMMともいう)を構成(再構成)する。
すなわち、HMM構成部17は、ACHMM記憶部16に記憶されたACHMMを構成する複数のモジュールを、その複数のモジュールであるHMMのHMMパラメータ、及び、ACHMM記憶部16に記憶された遷移情報を用いて結合し、これにより、1個のHMMである結合HMMを構成する。
[観測値]
図2は、図1の観測時系列バッファ12からモジュール学習部13(及び、認識部14)に供給される観測値の時系列を説明する図である。
上述したように、センサ11(図1)は、モデル化対象(環境、システム、事象等)から観測されるセンサ信号である観測値を、時系列に出力し、その観測値の時系列が、観測時系列バッファ12からモジュール学習部13に供給される。
いま、センサ11が、時刻tの観測値otを出力したとすると、観測時系列バッファ12からモジュール学習部13には、固定長Wの、時刻tにおいて最新の観測値の時系列、すなわち、時刻tから過去W時刻分の観測値の時系列である時系列データOt={ot-W+1,・・・,ot}が供給される。
ここで、モジュール学習部13に供給される時系列データOtの長さW(以下、ウインドウ長Wともいう)は、モデル化対象の動特性を、どれくらいの時間粒度で確率統計的な状態遷移モデル(ここでは、HMM)として状態分割するかの指標であり、あらかじめ設定される。
図2では、ウインドウ長Wは、5になっている。ウインドウ長Wは、ACHMMのモジュールであるHMMの状態の数の1.5ないし2倍程度の値に設定するのが適切であると思われ、例えば、HMMの状態の数が、9である場合、ウインドウ長Wとしては、15等を採用することができる。
なお、センサ11が出力する観測値は、連続値をとるベクトル(1次元のベクトル(スカラ値)を含む)であっても良いし、離散値をとるシンボルであっても良い。
観測値が、ベクトル(観測ベクトル)である場合、ACHMMのモジュールとしてのHMMとしては、観測値が観測される確率密度を、パラメータ(HMMパラメータ)として有する連続HMMが採用される。また、観測値が、シンボルである場合、ACHMMのモジュールとしてのHMMとしては、観測値が観測される確率を、HMMパラメータとして有する離散HMMが採用される。
[ACHMM]
次に、ACHMMについて説明するが、その前に、ACHMMのモジュールであるHMMについて、簡単に説明する。
図3は、HMMの例を示す図である。
HMMは、状態と状態遷移とで構成される状態遷移モデルである。
図3のHMMは、3つの状態s1,s2,s3を有するHMMであり、図3において、丸印は、状態を表し、矢印は、状態遷移を表す。
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)は、式(1)で表される。
Figure 2011059817
・・・(1)
ここで、式(1)において、N[x,μjkjk]は、観測値xが、D次元のベクトルであるとすると、平均ベクトルが、D次元のベクトルμjkで表され、共分散行列が、D行×D列の行列Σjkで表されるガウス分布を表す。
また、Vは、混合するガウス分布の総数(混合数)を表し、cjkは、V個のガウス分布を混合するときの、k番目のガウス分布N[x,μjkjk]の重み係数(混合重み係数)を表す。
HMMを定義する状態遷移確率aij、出力確率密度関数(観測確率)bi(x)、及び、初期確率πiが、HMMのパラメータ(HMMパラメータ)であり、以下、HMMパラメータを、λ={aij,bi(x),πi,i=1,2,・・・,N,j=1,2,・・・,N}と表す。なお、Nは、HMMの状態の数(状態数)を表す。
HMMパラメータの推定、すなわち、HMMの学習は、一般に、前述の非特許文献3等に記載されている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は、状態数や状態遷移等が、あらかじめ調整される場合が多い。
図4は、音声認識で利用されるHMMの例を示す図である。
図4のHMMは、状態遷移として、自己遷移と、いまの状態よりも右側の状態への状態遷移だけが許されるleft-to-right型と呼ばれるHMMである。
図4のHMMは、図3のHMMと同様に、3個の状態s1ないしs3を有するが、状態遷移としては、自己遷移と、いまの状態の右隣の状態への状態遷移のみを許す構造に制約されている。
ここで、上述の図3のHMMでは、状態遷移に制約がなく、任意の状態への状態遷移が可能であるが、このような、任意の状態への状態遷移が可能なHMMは、エルゴディックHMM(エルゴディック型のHMM)と呼ばれる。
モデル化対象によっては、HMMの状態遷移を、一部の状態遷移だけに制約しても、(適切な)モデル化を行うことができるかもしれないが、ここでは、モデル化対象の規模等の事前知識、すなわち、モデル化対象にとって適切な状態数や、状態遷移の制約のかけ方等のHMMの構造を決定するための情報が分からないことがあることを考慮して、そのような情報は、一切、与えられないこととする。
この場合、モデル化対象のモデル化には、構造の自由度が最も高いエルゴディック型のHMMを採用することが望ましい。
しかしながら、エルゴディック型のHMMは、状態数が多くなると、HMMパラメータの推定が困難となる。
例えば、状態数が1000個である場合、状態遷移の数は100万通りとなり、状態遷移確率として、100万個の確率を推定することが必要となる。
したがって、モデル化対象を適切に(精度良く)モデル化するのに必要なHMMの状態数が多い場合には、HMMパラメータの推定に、膨大な計算コストを要し、その結果、HMMの学習が困難となる。
そこで、図1の学習装置では、モデル化対象のモデル化に用いる学習モデルとして、HMMそのものではなく、HMMを、モジュールとして有するACHMMを採用する。
ACHMMは、「自然界の現象の殆どは、スモールワールドネットワークによって表現可能である」という仮説に基づく学習モデルである。
図5は、スモールワールドネットワークの例を示す図である。
スモールワールドネットワークは、繰り返し利用可能な局所的に構造化されたネットワーク(スモールワールド)と、そのスモールワード(局所構造)間を繋ぐ疎なネットワークとで構成される。
ACHMMでは、モデル化対象の確率統計的な動特性を与える状態遷移モデルのモデルパラメータの推定を、大規模なエルゴディックHMMで行うのではなく、スモールワールドネットワークの局所構造に相当するモジュール(モジュラ状態遷移モデル)である小規模な(状態数の少ない)HMMで行う。
さらに、ACHMMでは、スモールワールドネットワークの局所構造間を繋ぐネットワークに相当する、局所構造間に亘る遷移(状態遷移)に関するモデルパラメータとして、モジュール間の状態の遷移の頻度等が求められる。
図6は、ACHMMの例を示す図である。
ACHMMは、HMMを、最小の構成要素であるモジュールとして有する。
ACHMMでは、モジュールとしてのHMMを構成する状態どうしの間の状態遷移(状態間遷移)(HMMの状態遷移)の他に、あるモジュールの状態と、そのモジュールを含む任意のモジュールの状態との間の状態遷移(モジュール状態間遷移)、及び、あるモジュール(の任意の状態)と、そのモジュールを含む任意のモジュール(の任意の状態)との間の状態遷移(モジュール間遷移)の、合計で、3種類の状態遷移が考えられる。
なお、あるモジュールのHMMの状態遷移は、あるモジュールの状態と、そのモジュールの状態との間の状態遷移であるので、以下では、必要に応じて、モジュール状態間遷移に含めることとする。
モジュールとなるHMMとしては、小規模なHMMが採用される。
大規模なHMM、つまり、状態数、及び、状態遷移の数が大のHMMでは、HMMパラメータの推定に、膨大な計算コストを要し、また、モデル化対象を適切に表現する精度の良いHMMパラメータの推定が困難となる。
モジュールとなるHMMとして、小規模なHMMを採用し、そのようなモジュールの集合であるACHMMを、モデル化対象をモデル化する学習モデルに採用することで、大規模なHMMを学習モデルに採用する場合に比較して、計算コストを低減し、かつ、精度の良いHMMパラメータを推定することができる。
図7は、ACHMMの学習(モジュール学習)の概要を説明する図である。
ACHMMの学習(モジュール学習)では、各時刻tの、例えば、ウインドウ長Wの時系列データOtを、学習に用いる学習データとして、学習データOtに対して、競合学習メカニズムにより、最適な1つのモジュールが、ACHMMを構成するモジュールの中から選択される。
そして、ACHMMを構成するモジュールの中から選択された1つのモジュール、又は、新規のモジュールが、HMMパラメータを更新する対象のモジュールである対象モジュールに決定され、その対象モジュールの追加学習が、逐次行われる。
したがって、ACHMMの学習では、ACHMMを構成する1つのモジュールの追加学習が行われる場合もあるし、新規のモジュール(新規モジュール)が生成され、その新規モジュールの追加学習が行われる場合もある。
なお、ACHMMの学習時には、遷移情報管理部15において、後述する遷移情報生成処理が行われ、図6で説明したモジュール状態間遷移の情報(モジュール状態間遷移情報)や、モジュール間遷移の情報(モジュール間遷移情報)といった、ACHMMにおける各状態遷移の頻度の情報である遷移情報も獲得される。
ACHMMを構成するモジュール(HMM)としては、小規模なHMM(状態数の少ないHMM)が採用される。本実施の形態では、例えば、状態数が9のエルゴディックHMMを採用することとする。
さらに、本実施の形態では、モジュールとしてのHMMの出力確率密度関数bj(x)として、混合数が1(つまり単一確率密度)のガウス分布を採用し、各状態sjの出力確率密度関数bj(x)としてのガウス分布の共分散行列Σjが、式(2)に示すように、対角成分以外が、すべて0の行列であるとする。
Figure 2011059817
・・・(2)
また、共分散行列Σjの対角成分σ2 j12 j2,・・・,σ2 jDをコンポーネントとするベクトルを、分散(ベクトル)σ2 jというとともに、出力確率密度関数bj(x)としてのガウス分布の平均ベクトルを、ベクトルμjで表すこととすると、HMMパラメータλは、出力確率密度関数bj(x)に代えて、平均ベクトルμi、及び、分散σ2 jを用いて、λ={aij,μi,σ2 i,πi,i=1,2,・・・,N,j=1,2,・・・,N}で表される。
ACHMMの学習(モジュール学習)では、このHMMパラメータλ={aij,μi,σ2 i,πi,i=1,2,・・・,N,j=1,2,・・・,N}が推定される。
[モジュール学習部13の構成例]
図8は、図1のモジュール学習部13の構成例を示すブロック図である。
モジュール学習部13は、小規模のHMM(モジュラー状態遷移モデル)をモジュールとして有する学習モデルであるACHMMの学習(モジュール学習)を行う。
モジュール学習部13によるモジュール学習では、各時刻tの学習データOtに対する、ACHMMを構成する各モジュールの尤度が求められ、尤度が最大のモジュール(以下、最大尤度モジュールともいう)のHMMパラメータを更新する競合学習型の学習(競合学習)、又は、新規モジュールのHMMパラメータを更新するモジュール追加型の学習が、逐次行われるモジュールアーキテクチャが採用される。
このように、モジュール学習では、競合学習型の学習が行われる場合と、モジュール追加型の学習が行われる場合とが混在するので、本実施の形態では、そのようなモジュール学習の対象となる、HMMをモジュールとして有する学習モデルを、Additive Competitive HMM(ACHMM)と呼んでいる。
上述のようなモジュールアーキテクチャを採用することにより、大規模な(ゆえにパラメータの推定が困難となる)HMMを用いなければ表現不可能なモデル化対象を、小規模な(ゆえにパラメータの推定が容易な)HMMの集合体であるACHMMで表現することが可能となる。
また、モジュール学習では、競合学習型の学習の他に、モジュール追加型の学習が行われるので、モデル化対象から観測される観測値の観測空間(センサ11(図1)が出力するセンサ信号の信号空間)において、実際に観測することができる観測値の範囲が、あらかじめ分かっておらず、ACHMMの学習が進行するにつれて、実際に観測される観測値の範囲が広がっていく場合には、人が経験を積み重ねるように、学習を行うことができる。
図8において、モジュール学習部13は、尤度算出部21、対象モジュール決定部22、及び、更新部23を含む。
尤度計算部21には、観測時系列バッファ12に記憶された観測値の時系列が、逐次供給される。
尤度計算部21は、観測時系列バッファ12から逐次供給される観測値の時系列を、学習に用いる学習データとし、ACHMM記憶部16に記憶されたACHMMを構成する各モジュールについて、モジュールにおいて、学習データが観測される尤度を求め、対象モジュール決定部22に供給する。
ここで、時系列データの、先頭からτ番目のサンプルを、oτと表すこととすると、ある長さLの時系列データOは、O={oτ=1,・・・,oτ=L}と表すことができる。
尤度計算部21において、HMMであるモジュールλ(HMMパラメータλで定義されるHMM)の、時系列データOに対する尤度P(O|λ)は、いわゆるフォワードアルゴリズム(前向き処理)に従って求められる。
対象モジュール決定部22は、尤度計算部21から供給されるACHMMを構成する各モジュールの尤度に基づいて、ACHMMの1つのモジュール、又は、新規モジュールを、HMMパラメータを更新する対象のモジュールである対象モジュールに決定し、その対象モジュールを表す(特定する)モジュールインデクスを、更新部23に供給する。
更新部23には、学習データ、すなわち、観測時系列バッファ12から尤度計算部21に供給されるのと同一の観測値の時系列が、観測時系列バッファ12から供給される。
更新部23は、観測時系列バッファ12からの学習データを用いて、対象モジュール、すなわち、対象モジュール決定部22から供給されるモジュールインデクスが表すモジュールのHMMパラメータを更新する学習を行い、更新後のHMMパラメータによって、ACHMM記憶部16の記憶内容を更新する。
ここで、更新部23では、HMMパラメータを更新する学習として、いわゆる追加学習(HMMが既に獲得している(時系列)パターンに、新たな時系列データ(学習データ)を作用させる学習)が行われる。
更新部23での追加学習は、一般に、バッチ処理で行われるBaum-Welchアルゴリズムに従ったHMMパラメータの推定の処理を、逐次的に行う処理(オンライン処理)に拡張した処理(以下、逐次学習型Baum-Welchアルゴリズム処理ともいう)によって行われる。
逐次学習型Baum-Welchアルゴリズム処理では、Baum-Welchアルゴリズム(Baum-Welchの再推定法)において、HMMパラメータλの推定に用いられる内部パラメータであって、学習データから計算される前向き確率αi(τ)、及び、後ろ向き確率βi(τ)を用いて求められる内部パラメータである学習データ内部パラメータρi,νj,ξj,χij、及び、φiと、HMMパラメータの前回の推定に用いられた内部パラメータである前回内部パラメータρi old,νj old,ξj old,χij old、及び、φi oldとの重み付け加算によって、HMMパラメータの今回の推定に用いられる新たな内部パラメータρi new,νj new,ξj new,χij new、及び、φi newが求められ、その新たな内部パラメータρi new,νj new,ξj new,χij new、及び、φi newを用いて、対象モジュールのHMMパラメータλが(再)推定される。
すなわち、更新部23は、前回内部パラメータρi old,νj old,ξj old,χij old、及び、φi old、つまり、更新前のHMMパラメータλoldの推定に用いた内部パラメータρi old,νj old,ξj old,χij old、及び、φi oldを、その推定時に、例えば、ACHMM記憶部16に記憶させておく。
さらに、更新部23は、学習データである時系列データ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が観測される確率である。
更新部23は、前向き確率αi(τ)、及び、後ろ向き確率βi(τ)を求めると、その前向き確率αi(τ)、及び、後ろ向き確率βi(τ)を用いて、式(3)、式(4)、式(5)、式(6)、及び、式(7)にそれぞれ従い、学習データ内部パラメータρi,νj,ξj,χij、及び、φiを求める。
Figure 2011059817
・・・(3)
Figure 2011059817
・・・(4)
Figure 2011059817
・・・(5)
Figure 2011059817
・・・(6)
Figure 2011059817
・・・(7)
ここで、式(3)ないし式(7)に従って求められる学習データ内部パラメータρi,νj,ξj,χij、及び、φiは、バッチ処理で行われるBaum-Welchアルゴリズムに従って、HMMパラメータを推定する場合に求められる内部パラメータに一致する。
その後、更新部23は、式(8)、式(9)、式(10)、式(11)、及び、式(12)に従った重み付け加算、すなわち、学習データ内部パラメータρi,νj,ξj,χij、及び、φiと、HMMパラメータの前回の推定に用いられ、ACHMM記憶部16に記憶されている前回内部パラメータρi old,νj old,ξj old,χij old、及び、φi oldとの重み付け加算によって、HMMパラメータの今回の推定に用いられる新たな内部パラメータρi new,νj new,ξj new,χij new、及び、φi newを求める。
Figure 2011059817
・・・(8)
Figure 2011059817
・・・(9)
Figure 2011059817
・・・(10)
Figure 2011059817
・・・(11)
Figure 2011059817
・・・(12)
ここで、式(8)ないし式(12)のγは、重み付け加算に用いる重みであり、0以上1以下の値をとる。重みγとしては、HMMが既に獲得している(時系列)パターンに、新たな時系列データ(学習データ)Oを作用させる程度を表す学習率を採用することができる。学習率γの求め方については、後述する。
更新部23は、新たな内部パラメータρi new,νj new,ξj new,χij new、及び、φi newを求めた後、その新たな内部パラメータρi new,νj new,ξj new,χij new、及び、φi newを用いて、式(13)、式(14)、式(15)、及び、式(16)に従い、HMMパラメータλnew={aij new,μi new,σ2 i new,πi new,i=1,2,・・・,N,j=1,2,・・・,N}を求め、HMMパラメータλoldを、HMMパラメータλnewに更新する。
Figure 2011059817
・・・(13)
Figure 2011059817
・・・(14)
Figure 2011059817
・・・(15)
Figure 2011059817
・・・(16)
[モジュール学習処理]
図9は、図8のモジュール学習部13が行うモジュール学習の処理(モジュール学習処理)を説明するフローチャートである。
ステップS11において、更新部23は、初期化処理を行う。
ここで、更新部23は、初期化処理において、ACHMMを構成する1個目のモジュール#1として、あらかじめ設定された状態数N(例えば、N=9等)のエルゴディックHMMを生成する。
すなわち、更新部23は、モジュール#1であるHMM(エルゴディックHMM)のHMMパラメータλ={aij,μi,σ2 i,πi,i=1,2,・・・,N,j=1,2,・・・,N}について、N×N個の状態遷移確率aijに、初期値としての、例えば1/Nをセットするとともに、N個の初期確率πiに、初期値としての、例えば、1/Nをセットする。
さらに、更新部23は、N個の平均ベクトルμiに、観測空間中の適当な点の座標(例えば、ランダムな座標)をセットし、N個の分散σ2 i(式(2)のσ2 j12 j2,・・・,σ2 jDをコンポーネントとするD次元のベクトル)に、初期値としての、適当な値(例えば、ランダムな値)をセットする。
なお、センサ11が、観測値otを正規化して出力することができる場合、すなわち、センサ11(図1)が出力する観測値otであるD次元のベクトルのD個のコンポーネントそれぞれが、例えば、0以上1以下の範囲の値に正規化されている場合には、平均ベクトルμiの初期値としては、各コンポーネントが、例えば、0.5等のD次元のベクトルを採用することができる。また、分散σ2 iの初期値としては、各コンポーネントが、例えば、0.01等のD次元のベクトルを採用することができる。
ここで、ACHMMを構成するm個目のモジュールを、モジュール#mともいい、モジュール#mであるHMMのHMMパラメータλを、λmとも記載する。また、本実施の形態では、モジュール#mのモジュールインデクスとして、mを使用することとする。
更新部23は、モジュール#1を生成すると、ACHMMを構成するモジュールの総数を表す変数であるモジュール総数Mに、1をセットしするとともに、モジュール#1の学習を行った回数(又は量)を表す(配列)変数である学習回数(又は学習量)Nlearn[m=1]に、初期値としての0をセットする。
その後、センサ11から、観測値otが出力され、観測時系列バッファ12に記憶されると、処理は、ステップS11からステップS12に進み、モジュール学習部13は、時刻tを、t=1にセットし、処理は、ステップS13に進む。
ステップS13では、モジュール学習部13は、時刻tが、ウインドウ長Wに等しいかどうかを判定する。
ステップS13において、時刻tがウインドウ長Wに等しくないと判定された場合、すなわち、時刻tが、ウインドウ長W未満である場合、センサ11から、次の観測値otが出力され、観測時系列バッファ12に記憶されるのを待って、処理は、ステップS14に進む。
ステップS14では、モジュール学習部13は、時刻tを1だけインクリメントして、処理は、ステップS13に戻り、以下、同様の処理が繰り返される。
また、ステップS13において、時刻tがウインドウ長Wに等しいと判定された場合、すなわち、観測時系列バッファ12に、ウインドウ長W分の観測値の時系列である時系列データOt=W={o1,・・・,oW}が記憶された場合、対象モジュール決定部22は、1個だけのモジュール#1で構成されるACHMMの、そのモジュール#1を、対象モジュールに決定する。
そして、対象モジュール決定部22は、対象モジュールであるモジュール#1を表すモジュールインデクスm=1を、更新部23に供給し、処理は、ステップS13からステップS15に進む。
ステップS15では、更新部23は、対象モジュール決定部22からのモジュールインデクスm=1が表す対象モジュールであるモジュール#1の学習回数Nlearn[m=1]を、例えば、1だけインクリメントする。
さらに、ステップS15では、更新部23は、対象モジュールであるモジュール#1の学習率γを、式γ=1/(Nlearn[m=1]+1)に従って求める。
そして、更新部23は、観測時系列バッファ12に記憶されたウインドウ長Wの時系列データOt=W={o1,・・・,oW}を、学習データとして、その学習データOt=Wを用い、学習率γ=1/(Nlearn[m=1]+1)で、対象モジュールであるモジュール#1の追加学習を行う。
すなわち、更新部23は、上述した式(3)ないし式(16)に従って、ACHMM記憶部16に記憶された、対象モジュールであるモジュール#1のHMMパラメータλm=1を更新する。
その後、センサ11から、次の観測値otが出力され、観測時系列バッファ12に記憶されるのを待って、処理は、ステップS15からステップS16に進む。ステップS16では、モジュール学習部13は、時刻tを1だけインクリメントして、処理は、ステップS17に進む。
ステップS17では、尤度算出部21は、観測時系列バッファ12に記憶されたウインドウ長Wの最新の時系列データOt={ot-W+1,・・・,ot}を、学習データとし、ACHMM記憶部16に記憶されたACHMMを構成するすべてのモジュール#1ないし#Mのそれぞれについて、モジュール#mにおいて、学習データOtが観測される尤度(以下、モジュール尤度ともいう)P(Otm)を求める。
さらに、ステップS17では、尤度算出部21は、モジュール#1ないし#Mのそれぞれのモジュール尤度P(Ot1),P(Ot2),・・・,P(OtM)を、対象モジュール決定部22に供給して、処理は、ステップS18に進む。
ステップS18では、対象モジュール決定部22は、ACHMMを構成するモジュール#1ないし#Mのうちの、尤度算出部21からのモジュール尤度P(Otm)が最大のモジュールである最大尤度モジュール#m*=argmaxm[P(Otm)]を求める。
ここで、argmaxm[]は、インデクス(モジュールインデクス)mに対して変化するかっこ[]内の値を最大にするインデクスm=m*を表す。
対象モジュール決定部22は、さらに、尤度算出部21からのモジュール尤度P(Otm)の最大値である最大尤度(最大対数尤度)(尤度の対数の最大値)maxLP=maxm[log(P(Otm))]を求める。
ここで、maxm[]は、インデクスmに対して変化するかっこ[]内の値の最大値を表す。
最大尤度モジュールが、モジュール#m*である場合には、最大対数尤度maxLPは、モジュール#m*のモジュール尤度P(Otm*)の対数となる。
対象モジュール決定部22が、最大尤度モジュール#m*、及び、最大対数尤度maxLPを求めると、処理は、ステップS18からステップS19に進み、対象モジュール決定部22は、最大対数尤度maxLPに基づいて、最大尤度モジュール#m*、又は、新規に生成するHMMである新規モジュールを、HMMパラメータを更新する対象モジュールに決定する、後述する対象モジュールの決定の処理を行う。
そして、対象モジュール決定部22は、対象モジュールのモジュールインデクスを、更新部23に供給し、処理は、ステップS19からステップS20に進む。
ステップS20では、更新部23は、対象モジュール決定部22からのモジュールインデクスが表す対象モジュールが、最大尤度モジュール#m*、又は、新規モジュールのうちのいずれであるかを判定する。
ステップS20において、対象モジュールが、最大尤度モジュール#m*であると判定された場合、処理は、ステップS21に進み、更新部23は、最大尤度モジュール#m*のHMMパラメータλm*を更新する既存モジュール学習処理を行う。
また、ステップS20において、対象モジュールが、新規モジュールであると判定された場合、処理は、ステップS22に進み、更新部23は、新規モジュールのHMMパラメータを更新する新規モジュール学習処理を行う。
ステップS21の既存モジュール学習処理、及び、ステップS22の新規モジュール学習処理の後は、いずれも、センサ11から、次の観測値otが出力され、観測時系列バッファ12に記憶されるのを待って、処理は、ステップS16に戻り、以下、同様の処理が繰り返される。
図10は、図9のステップS19で行われる、対象モジュールの決定の処理を説明するフローチャートである。
対象モジュールの決定の処理では、ステップS31において、対象モジュール決定部22(図8)は、最大尤度モジュール#m*の尤度の対数である最大対数尤度maxLPが、例えば、あらかじめ設定された閾値である尤度閾値TH以上であるかどうかを判定する。
ステップS31において、最大対数尤度maxLPが、尤度閾値TH以上であると判定された場合、すなわち、最大尤度モジュール#m*の尤度の対数である最大対数尤度maxLPが、ある程度大きな値である場合、処理は、ステップS32に進み、対象モジュール決定部22は、最大尤度モジュール#m*を、対象モジュールに決定し、処理は、リターンする。
また、ステップS31において、最大対数尤度maxLPが、尤度閾値TH以上でないと判定された場合、すなわち、最大尤度モジュール#m*の尤度の対数である最大対数尤度maxLPが、小さな値である場合、処理は、ステップS33に進み、対象モジュール決定部22は、新規モジュールを、対象モジュールに決定し、処理は、リターンする。
図11は、図9のステップS21で行われる既存モジュール学習処理を説明するフローチャートである。
既存モジュール学習処理では、ステップS41において、更新部23(図8)は、対象モジュールである最大尤度モジュール#m*の学習回数Nlearn[m*]を、例えば、1だけインクリメントして、処理は、ステップS42に進む。
ステップS42では、更新部23は、対象モジュールである最大尤度モジュール#m*の学習率γを、式γ=1/(Nlearn[m*]+1)に従って求める。
そして、更新部23は、観測時系列バッファ12に記憶されたウインドウ長Wの最新の時系列データOtを、学習データとして、その学習データOtを用い、学習率γ=1/(Nlearn[m*]+1)で、対象モジュールである最大尤度モジュール#m*の追加学習を行い、処理は、リターンする。
すなわち、更新部23は、上述した式(3)ないし式(16)に従って、ACHMM記憶部16に記憶された、対象モジュールである最大尤度モジュール#m*のHMMパラメータλm*を更新する。
図12は、図9のステップS22で行われる新規モジュール学習処理を説明するフローチャートである。
新規モジュール学習処理では、ステップS51において、更新部23(図8)は、ACHMMを構成するM+1個目のモジュール#M+1となる新規モジュールであるHMMを、図9のステップS11の場合と同様にして生成し、その新規モジュール#m=M+1(のHMMパラメータλM+1)を、ACHMMを構成するモジュールとして、ACHMM記憶部16に記憶させて、処理は、ステップS52に進む。
ステップS52では、更新部23は、新規モジュール#m=M+1の学習回数Nlearn[m=M+1]に、初期値としての1をセットし、処理は、ステップS53に進む。
ステップS53では、更新部23は、対象モジュールである新規モジュール#m=M+1の学習率γを、式γ=1/(Nlearn[m=M+1]+1)に従って求める。
そして、更新部23は、観測時系列バッファ12に記憶されたウインドウ長Wの最新の時系列データOtを、学習データとして、その学習データOtを用い、学習率γ=1/(Nlearn[m=M+1]+1)で、対象モジュールである新規モジュール#m=M+1の追加学習を行う。
すなわち、更新部23は、上述した式(3)ないし式(16)に従って、ACHMM記憶部16に記憶された、対象モジュールである新規モジュール#m=M+1のHMMパラメータλM+1を更新する。
その後、処理は、ステップS53からステップS54に進み、更新部23は、ACHMMを構成するモジュールとして、新規モジュールが生成されたことに伴い、モジュール総数Mを、1だけインクリメントして、処理は、リターンする。
以上のように、モジュール学習部13では、逐次供給される観測値の時系列を、学習に用いる学習データとし、HMMを、最小の構成要素であるモジュールとして有するACHMMを構成する各モジュールについて、モジュールにおいて、学習データが観測される尤度を求め、その尤度に基づいて、ACHMMの1つのモジュールとしての最大尤度モジュール、又は、新規モジュールを、HMMパラメータを更新する対象のモジュールである対象モジュールに決定し、学習データを用いて、対象モジュールのHMMパラメータを更新する学習を行うので、モデル化対象の規模等が事前に知りえない場合であっても、モデル化対象に対して適切な規模のACHMMを得ることができる。
特に、モデル化に、大規模なHMMが必要となるモデル化対象について、その局所構造を、モジュールであるHMMで獲得した、適切な規模(モジュール数)のACHMMを得ることができる。
[閾値尤度THの設定]
図10の対象モジュールの決定の処理では、対象モジュール決定部22は、最大対数尤度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において、新規モジュールが生成される場合との関係は、以下のようなシミュレーションによって獲得することができる。
すなわち、シミュレーションでは、例えば、観測空間としての2次元空間内に、分散が1で、互いの平均ベクトルどうしの距離(平均ベクトル間距離)Hが所定の値の、3個のガウス分布G1,G2,G3を想定する。
観測空間が、2次元空間であるので、観測値の次元数Dは2である。
図13は、ガウス分布G1ないしG3のそれぞれに従う観測値の例を示す図である。
図13では、平均ベクトル間距離Hが、2,4,6,8,10それぞれのガウス分布G1ないしG3のそれぞれに従う観測値を示してある。
なお、図13において、丸(○)印が、ガウス分布G1を、三角(△)印が、ガウス分布G2を、バツ(×)印が、ガウス分布G3を、それぞれ表す。
ガウス分布G1ないしG3のそれぞれ(に従う観測値)は、平均ベクトル間距離Hが大であるほど、互いに離れた位置に分布する。
シミュレーションでは、各時刻tに、ガウス分布G1ないしG3のうちの1個のガウス分布だけをアクティベートし、そのアクティベートされたガウス分布に従う観測値を生成する。
図14は、ガウス分布G1ないしG3をアクティベートするタイミングの例を示す図である。
図14において、横軸は、時刻を表し、縦軸は、アクティベートされるガウス分布を表す。
図14によれば、ガウス分布G1ないしG3は、100時刻ごとに、G1,G2,G3,G1,・・・の順で、繰り返しアクティベートされる。
シミュレーションでは、ガウス分布G1ないしG3を、例えば、図14に示したようにアクティベートし、例えば、5000時刻分の観測値としての2次元ベクトルの時系列を生成する。
さらに、シミュレーションでは、ACHMMのモジュールとして、状態数Nが、例えば、1のHMMを採用し、ウインドウ長Wを、例えば、5として、ガウス分布G1ないしG3から生成される5000時刻分の観測値の時系列から、ウインドウ長W=5の時系列データを、学習データとして、1時刻ずつ時刻tをずらしながら逐次抽出し、ACHMMの学習を行う。
なお、ACHMMの学習は、係数coef_th_newと、平均ベクトル間距離Hとのそれぞれを、適宜変化させて行う。
図15は、以上のシミュレーションの結果得られる、係数coef_th_new、及び、平均ベクトル間距離Hと、学習後のACHMMを構成するモジュールの数(モジュール数)(modules)との関係を示す図である。
なお、図15には、学習後のACHMMの幾つかについて、各モジュール(HMM)の1個の状態において、観測値が観測される出力確率密度関数としてのガウス分布も、図示してある。
ここで、シミュレーションでは、1個の状態のHMMを、モジュールとして採用しているので、図15において、1個のガウス分布は、1個のモジュールに相当する。
図15から、係数coef_th_newによって、モジュールの生成のされ方が異なることを確認することができる。
シミュレーションで用いた学習データは、3個のガウス分布G1ないしG3から生成された時系列データであるから、学習後のACHMMは、その3個のガウス分布G1ないしG3それぞれに相当する3個のモジュールで構成されることが望ましいが、ここでは、多少のマージンを考慮して、学習後のACHMMのモジュール数として、3ないし5個が望ましいと考える。
図16は、学習後のACHMMのモジュール数が、3ないし5個になる場合の、係数coef_th_new、及び、平均ベクトル間距離Hを示す図である。
図16によれば、学習後の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としては、以上のようにして求められる値を設定することができる。
[可変長の学習データを用いたモジュール学習処理]
図17は、モジュール学習処理の他の例を説明するフローチャートである。
ここで、図9のモジュール学習処理では、固定長であるウインドウ長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のモジュール学習を、固定ウインドウ学習ともいう。
図17は、可変ウインドウ学習によるモジュール学習処理を説明するフローチャートである。
可変ウインドウ学習によるモジュール学習処理では、ステップS61ないしS64において、図9のステップS11ないしS14と、それぞれ(ほぼ)同様の処理が行われる。
すなわち、ステップS61では、更新部23(図8)は、初期化処理として、ACHMMを構成する1個目のモジュール#1となるエルゴディックHMMの生成、及び、モジュール総数Mへの、初期値としての1のセットを行う。
その後、センサ11から、観測値otが出力され、観測時系列バッファ12に記憶されるのを待って、処理は、ステップS61からステップS62に進み、モジュール学習部13(図8)は、時刻tを、t=1にセットし、処理は、ステップS63に進む。
ステップS63では、モジュール学習部13は、時刻tが、ウインドウ長Wに等しいかどうかを判定する。
ステップS63において、時刻tがウインドウ長Wに等しくないと判定された場合、センサ11から、次の観測値otが出力され、観測時系列バッファ12に記憶されるのを待って、処理は、ステップS64に進む。
ステップS64では、モジュール学習部13は、時刻tを1だけインクリメントして、処理は、ステップS63に戻り、以下、同様の処理が繰り返される。
また、ステップS63において、時刻tがウインドウ長Wに等しいと判定された場合、すなわち、観測時系列バッファ12に、ウインドウ長W分の観測値の時系列である時系列データOt=W={o1,・・・,oW}が記憶された場合、対象モジュール決定部22は、1個だけのモジュール#1で構成されるACHMMの、そのモジュール#1を、対象モジュールに決定する。
そして、対象モジュール決定部22は、対象モジュールであるモジュール#1を表すモジュールインデクスm=1を、更新部23に供給し、処理は、ステップS63からステップS65に進む。
ステップS65では、更新部23は、対象モジュール決定部22からのモジュールインデクスm=1が表す対象モジュールであるモジュール#1の学習を行った回数(又は量)を表す(配列)変数Qlearn[m=1]に、初期値としての1.0をセットする。
ここで、上述の図9で説明したモジュール#mの学習回数Nlearn[m]は、固定長であるウインドウ長Wの学習データを用いたモジュール#mの学習に対して、1だけ増加することとしている。
そして、図9では、モジュール#mの学習に用いられる学習データは、必ず、固定長であるウインドウ長Wの時系列データであるため、学習回数Nlearn[m]は、1ずつしか増加しないので、整数値となる。
これに対して、図17では、モジュール#mの学習が、可変長の最新の観測値の時系列を、学習データとして用いて行われる。
固定長であるウインドウ長Wの学習データを用いたモジュール#mの学習に対して、1だけ増加することを基準とすると、任意の長さW'の観測値の時系列を学習データとして用いて行ったモジュール#mの学習に対しては、モジュール#mの学習を行った回数を表す変数Qlearn[m]は、W'/Wだけ増加する必要がある。
したがって、変数Qlearn[m]は、実数値となる。
なお、ウインドウ長Wの学習データを用いたモジュール#mの学習を、1回の学習としてカウントすることとすると、任意の長さW'の学習データを用いたモジュール#mの学習には、W'/W回の学習の実効があるので、変数Qlearn[m]を、実効学習回数ともいう。
ステップS65では、更新部23は、さらに、対象モジュールであるモジュール#1の学習率γを、式γ=1/(Qlearn[m=1]+1.0)に従って求める。
そして、更新部23は、観測時系列バッファ12に記憶されたウインドウ長Wの時系列データOt=W={o1,・・・,oW}を、学習データとして、その学習データOt=Wを用い、学習率γ=1/(Qlearn[m=1]+1.0)で、対象モジュールであるモジュール#1の追加学習を行う。
すなわち、更新部23は、上述した式(3)ないし式(16)に従って、ACHMM記憶部16に記憶された、対象モジュールであるモジュール#1のHMMパラメータλm=1を更新する。
さらに、更新部23は、その内蔵するメモリ(図示せず)に確保される、観測値をバッファリングする変数であるバッファbuffer_winner_sampleに、学習データOt=Wをバッファリングする。
また、更新部23は、その内蔵するメモリに確保される、1時刻前に最大尤度モジュールであったモジュールが、最大尤度モジュールになっている期間を表す変数である勝者期間情報cnt_since_winに、初期値としての1をセットする。
さらに、更新部23は、その内蔵するメモリに確保される、1時刻前の最大尤度モジュール(であったモジュール)を表す変数である前回勝者情報past_winに、初期値としての、モジュール#1のモジュールインデクスである1をセットする。
その後、センサ11から、次の観測値otが出力され、観測時系列バッファ12に記憶されるのを待って、処理は、ステップS65からステップS66に進み、以下、ステップS66ないしS70において、図9のステップS16ないしS20と、それぞれ同様の処理が行われる。
すなわち、ステップS66では、モジュール学習部13が、時刻tを1だけインクリメントして、処理は、ステップS67に進む。
ステップS67では、尤度算出部21は、観測時系列バッファ12に記憶されたウインドウ長Wの最新の時系列データOt={ot-W+1,・・・,ot}を、学習データとし、ACHMM記憶部16に記憶されたACHMMを構成するすべてのモジュール#1ないし#Mのそれぞれについて、モジュール尤度P(Otm)を求めて、対象モジュール決定部22に供給する。
そして、処理は、ステップS67からステップS68に進み、対象モジュール決定部22は、ACHMMを構成するモジュール#1ないし#Mのうちの、尤度算出部21からのモジュール尤度P(Otm)が最大のモジュールである最大尤度モジュール#m*=argmaxm[P(Otm)]を求める。
さらに、対象モジュール決定部22は、尤度算出部21からのモジュール尤度P(Otm)から、最大対数尤度maxLP=maxm[log(P(Otm))](最大尤度モジュール#m*のモジュール尤度P(Otm*)の対数)を求め、処理は、ステップS68からステップS69に進む。
ステップS69では、対象モジュール決定部22は、最大対数尤度maxLPに基づいて、最大尤度モジュール#m*、又は、新規に生成するHMMである新規モジュールを、HMMパラメータを更新する対象モジュールに決定する対象モジュールの決定の処理を行う。
そして、対象モジュール決定部22は、対象モジュールのモジュールインデクスを、更新部23に供給し、処理は、ステップS69からステップS70に進む。
ステップS70では、更新部23は、対象モジュール決定部22からのモジュールインデクスが表す対象モジュールが、最大尤度モジュール#m*、又は、新規モジュールのうちのいずれであるかを判定する。
ステップS70において、対象モジュールが、最大尤度モジュール#m*であると判定された場合、処理は、ステップS71に進み、更新部23は、最大尤度モジュール#m*のHMMパラメータλm*を更新する既存モジュール学習処理を行う。
また、ステップS70において、対象モジュールが、新規モジュールであると判定された場合、処理は、ステップS72に進み、更新部23は、新規モジュールのHMMパラメータを更新する新規モジュール学習処理を行う。
ステップS71の既存モジュール学習処理、及び、ステップS72の新規モジュール学習処理の後は、いずれも、センサ11から、次の観測値otが出力され、観測時系列バッファ12に記憶されるのを待って、処理は、ステップS66に戻り、以下、同様の処理が繰り返される。
図18は、図17のステップS71で行われる既存モジュール学習処理を説明するフローチャートである。
既存モジュール学習処理では、ステップS91において、更新部23(図8)は、前回勝者情報past_winと、対象モジュールとなった最大尤度モジュール#m*のモジュールインデクスとが一致するかどうかを判定する。
ステップS91において、前回勝者情報past_winと、対象モジュールとなった最大尤度モジュール#m*のモジュールインデクスとが一致すると判定された場合、すなわち、現在時刻tの1時刻前の時刻t-1に、最大尤度モジュールであったモジュールが、現在時刻tでも、最大尤度モジュールとなり、ひいては、対象モジュールとなった場合、処理は、ステップS92に進み、更新部23は、式mod(cnt_since_win,W)=0が満たされるかどうかを判定する。
ここで、mod(A,B)は、AをBで除算したときの剰余を表す。
ステップS92において、式mod(cnt_since_win,W)=0が満たされないと判定された場合、処理は、ステップS93及びS94をスキップして、ステップS95に進む。
また、ステップS92において、式mod(cnt_since_win,W)=0が満たされると判定された場合、すなわち、勝者期間情報cnt_since_winが、ウインドウ長Wで割り切れ、したがって、現在時刻tに、最大尤度モジュールになっているモジュール#m*が、ウインドウ長Wの整数倍の期間の間、連続して最大尤度モジュールになっている場合、ステップS93に進み、更新部23は、対象モジュールである現在時刻tの最大尤度モジュール#m*の実効学習回数Qlearn[m*]を、例えば、1.0だけインクリメントして、処理は、ステップS94に進む。
ステップS94では、更新部23は、対象モジュールである最大尤度モジュール#m*の学習率γを、式γ=1/(Qlearn[m*]+1.0)に従って求める。
そして、更新部23は、観測時系列バッファ12に記憶されたウインドウ長Wの最新の時系列データOtを、学習データとして、その学習データOtを用い、学習率γ=1/(Qlearn[m*]+1.0)で、対象モジュールである最大尤度モジュール#m*の追加学習を行う。
すなわち、更新部23は、上述した式(3)ないし式(16)に従って、ACHMM記憶部16に記憶された、対象モジュールである最大尤度モジュール#m*のHMMパラメータλm*を更新する。
その後、処理は、ステップS94からステップS95に進み、更新部23は、観測時系列バッファ12に記憶された現在時刻tの観測値otを、バッファbuffer_winner_sampleに、追加する形でバッファリングして、処理は、ステップS96に進む。
ステップS96では、更新部23は、勝者期間情報cnt_since_winを、1だけインクリメントして、処理は、ステップS108に進む。
一方、ステップS91において、前回勝者情報past_winと、対象モジュールとなった最大尤度モジュール#m*のモジュールインデクスとが一致しないと判定された場合、すなわち、現在時刻tの最大尤度モジュール#m*が、現在時刻tの1時刻前の時刻t-1の最大尤度モジュールと異なる場合、処理は、ステップS101に進み、以下、時刻t-1まで最大尤度モジュールであったモジュールと、現在時刻tの最大尤度モジュール#m*との学習が行われる。
すなわち、ステップS101では、更新部23は、時刻t-1まで最大尤度モジュールであったモジュール、つまり、前回勝者情報past_winをモジュールインデクスとするモジュール(以下、前回勝者モジュールともいう)#past_winの実効学習回数Qlearn[past_win]を、例えば、LEN[buffer_winner_sample]/Wだけインクリメントして、処理は、ステップS102に進む。
ここで、LEN[buffer_winner_sample]は、バッファbuffer_winner_sampleにバッファリングされている観測値の長さ(数)を表す。
ステップS102では、更新部23は、前回勝者モジュール#past_winの学習率γを、式γ=1/(Qlearn[past_win]+1.0)に従って求める。
そして、更新部23は、バッファbuffer_winner_sampleにバッファリングされている観測値の時系列を、学習データとして、その学習データを用い、学習率γ=1/(Qlearn[past_win]+1.0)で、前回勝者モジュール#past_winの追加学習を行う。
すなわち、更新部23は、上述した式(3)ないし式(16)に従って、ACHMM記憶部16に記憶された、前回勝者モジュール#past_winのHMMパラメータλpast_winを更新する。
その後、処理は、ステップS102からステップS103に進み、更新部23は、対象モジュールである現在時刻tの最大尤度モジュール#m*の実効学習回数Qlearn[m*]を、例えば、1.0だけインクリメントして、処理は、ステップS104に進む。
ステップS104では、更新部23は、対象モジュールである最大尤度モジュール#m*の学習率γを、式γ=1/(Qlearn[m*]+1.0)に従って求める。
そして、更新部23は、観測時系列バッファ12に記憶されたウインドウ長Wの最新の時系列データOtを、学習データとして、その学習データOtを用い、学習率γ=1/(Qlearn[m*]+1.0)で、対象モジュールである最大尤度モジュール#m*の追加学習を行う。
すなわち、更新部23は、上述した式(3)ないし式(16)に従って、ACHMM記憶部16に記憶された、対象モジュールである最大尤度モジュール#m*のHMMパラメータλm*を更新する。
その後、処理は、ステップS104からステップS105に進み、更新部23は、バッファbuffer_winner_sampleをクリアして、処理は、ステップS106に進む。
ステップS106では、更新部23は、ウインドウ長Wの最新の学習データOtを、バッファbuffer_winner_sampleにバッファリングして、処理は、ステップS107に進む。
ステップS107では、更新部23は、勝者期間情報cnt_since_winに、初期値としての1をセットして、処理は、ステップS108に進む。
ステップS108では、更新部23は、前回勝者情報past_winに、現在時刻tの最大尤度モジュール#m*のモジュールインデクスm*をセットし、処理は、リターンする。
図19は、図17のステップS72で行われる新規モジュール学習処理を説明するフローチャートである。
新規モジュール学習処理では、新規モジュールを生成し、その新規モジュールを、対象モジュールとして、学習が行われるが、新規モジュールの学習に先立って、それまで(時刻t-1まで)最大尤度モジュールであったモジュールの学習が行われる。
すなわち、ステップS111において、更新部23は、時刻t-1まで最大尤度モジュールであったモジュール、つまり、前回勝者情報past_winをモジュールインデクスとするモジュールである前回勝者モジュール#past_winの実効学習回数Qlearn[past_win]を、例えば、LEN[buffer_winner_sample]/Wだけインクリメントして、処理は、ステップS112に進む。
ステップS112では、更新部23は、前回勝者モジュール#past_winの学習率γを、式γ=1/(Qlearn[past_win]+1.0)に従って求める。
そして、更新部23は、バッファbuffer_winner_sampleにバッファリングされている観測値の時系列を、学習データとして、その学習データを用い、学習率γ=1/(Qlearn[past_win]+1.0)で、前回勝者モジュール#past_winの追加学習を行う。
すなわち、更新部23は、上述した式(3)ないし式(16)に従って、ACHMM記憶部16に記憶された、前回勝者モジュール#past_winのHMMパラメータλpast_winを更新する。
その後、処理は、ステップS112からステップS113に進み、更新部23(図8)は、ACHMMを構成するM+1個目のモジュール#M+1となる新規モジュールであるHMMを、図9のステップS11の場合と同様にして生成する。さらに、更新部23は、新規モジュール#m=M+1(のHMMパラメータλM+1)を、ACHMMを構成するモジュールとして、ACHMM記憶部16に記憶させて、処理は、ステップS113からステップS114に進む。
ステップS114では、更新部23は、新規モジュール#m=M+1の実効学習回数Qlearn[m=M+1]に、初期値としての1.0をセットし、処理は、ステップS115に進む。
ステップS115では、更新部23は、対象モジュールである新規モジュール#m=M+1の学習率γを、式γ=1/(Qlearn[m=M+1]+1.0)に従って求める。
そして、更新部23は、観測時系列バッファ12に記憶されたウインドウ長Wの最新の時系列データOtを、学習データとして、その学習データOtを用い、学習率γ=1/(Qlearn[m=M+1]+1.0)で、対象モジュールである新規モジュール#m=M+1の追加学習を行う。
すなわち、更新部23は、上述した式(3)ないし式(16)に従って、ACHMM記憶部16に記憶された、対象モジュールである新規モジュール#m=M+1のHMMパラメータλM+1を更新する。
その後、処理は、ステップS115からステップS116に進み、更新部23は、バッファbuffer_winner_sampleをクリアして、処理は、ステップS117に進む。
ステップS117では、更新部23は、ウインドウ長Wの最新の学習データOtを、バッファbuffer_winner_sampleにバッファリングして、処理は、ステップS118に進む。
ステップS118では、更新部23は、勝者期間情報cnt_since_winに、初期値としての1をセットして、処理は、ステップS119に進む。
ステップS119では、更新部23は、前回勝者情報past_winに、新規モジュール#M+1のモジュールインデクスM+1をセットし、処理は、ステップS120に進む。
ステップS120では、更新部23は、ACHMMを構成するモジュールとして、新規モジュールが生成されたことに伴い、モジュール総数Mを、1だけインクリメントし、処理は、リターンする。
以上のように、可変ウインドウ学習によるモジュール学習処理(図17ないし図19)では、対象モジュールとなった最大尤度モジュール#m*と、1時刻前の学習データに対する尤度が最大のモジュールである前回勝者モジュール#past_winとが一致する間は、固定長の時間であるウインドウ長Wごとに、ウインドウ長Wの最新の観測値の時系列を、学習データとして、対象モジュールとなった最大尤度モジュール#m*の学習が行われ(図18のステップS94)、最新の観測値otが、バッファbuffer_winner_sampleにバッファリングされる。
そして、対象モジュールと、前回勝者モジュール#past_winとが一致しなくなったときに、つまり、対象モジュールが、新規モジュール、又は、ACHMMを構成するモジュールのうちの、前回勝者モジュール#past_win以外のモジュールになったときに、バッファbuffer_winner_sampleにバッファリングされている観測値の時系列を、学習データとして、前回勝者モジュール#past_winの学習が行われ(図18のステップS102、及び、図19のステップS112)、ウインドウ長Wの最新の観測値の時系列を、学習データとして、対象モジュールの学習が行われる(図18のステップS104、及び、図19のステップS115)。
すなわち、対象モジュールとなったモジュールについては、(連続して)対象モジュールになっている限り、最初に対象モジュールになってから、ウインドウ長Wごとに、ウインドウ長Wの観測値の時系列を、学習データとして、学習が行われ、その間の観測値は、バッファbuffer_winner_sampleにバッファリングされる。
そして、対象モジュールが、それまで対象モジュールであったモジュールから、他のモジュールになったときに、それまで対象モジュールであったモジュールの学習が、バッファbuffer_winner_sampleにバッファリングされた観測値の時系列を、学習データとして行われる。
その結果、可変ウインドウ学習によるモジュール学習処理によれば、固定長であるウインドウ長Wの最新の観測値の時系列を、学習データとして、各時刻tのACHMMの学習を、逐次行う場合に生じる弊害と、観測値の時系列を、ウインドウ長Wの単位に分節して、学習データとする場合に生じる弊害とを改善することができる。
なお、図9のモジュール学習処理では、固定長であるウインドウ長Wの学習データを用いた学習に対して、モジュール#mの学習回数Nlearn[m]を、1だけインクリメント(増加)することとしている。
一方、図17のモジュール学習処理では、対象モジュールが、前回勝者モジュール#past_win以外のモジュールになったときに、前回勝者モジュール#past_winの学習が、バッファbuffer_winner_sampleにバッファリングされている観測値の時系列、すなわち、可変長の時系列データを、学習データとして行われるため、実効学習回数Qlearn[m]を、バッファbuffer_winner_sampleにバッファリングされている観測値の長さLEN[buffer_winner_sample]を、ウインドウ長Wで除算した除算値だけ増加する適応制御(バッファbuffer_winner_sampleにバッファリングされている観測値の長さLEN[buffer_winner_sample]に従った適応制御)が行われる(図18のステップS101、及び、図19のステップS111)。
例えば、ウインドウ長Wが5であり、前回勝者モジュール#past_winの学習に用いられる、バッファbuffer_winner_sampleにバッファリングされている観測値の長さLEN[buffer_winner_sample]が10である場合、前回勝者モジュール#past_winの実効学習回数Qlearn[past_win]は、2.0(=LEN[buffer_winner_sample]/W)だけインクリメントされる。
[認識部14の構成例]
図20は、図1の認識部14の構成例を示すブロック図である。
認識部14は、ACHMM記憶部16に記憶されたACHMMを用い、観測時系列バッファ12から逐次供給される観測値の時系列、つまり、モジュール学習部13が学習に用いる学習データOt={ot-W+1,・・・,ot}である時系列データを認識(識別)(分類)し、その認識結果を表す認識結果情報を出力する認識処理を行う。
すなわち、認識部14は、尤度算出部31、及び、最尤推定部32を含み、モジュール学習部13が学習に用いる学習データOt={ot-W+1,・・・,ot}である時系列データを認識し、その認識結果を表す認識結果情報として、ACHMMを構成するモジュールのうちの、時系列データ(学習データ)Otが観測される尤度が最大のモジュールである最大尤度モジュール#m*(のモジュールインデクスm*)と、最大尤度モジュール#m*において、時系列データOtが観測される尤度が最大の状態遷移が生じる、HMMの状態の系列である最尤状態系列Sm* tとを求める
ここで、認識部14では、モジュール学習部13が学習を行うことにより逐次更新されるACHMMを用いて、モジュール学習部13が学習に用いる学習データOtの認識(状態推定)を行う他、モジュール学習部13によるACHMMの学習が十分進行して、ACHMMの更新が行われなくなった後に、そのACHMMを用いて、観測時系列バッファ12に記憶された任意の長さの時系列データ(観測値の時系列)の認識(状態認識)を行うことができる。
尤度計算部31には、観測時系列バッファ12から、モジュール学習部13の尤度計算部21(図8)に学習データとして供給されるのと同一の観測値の時系列(ウインドウ長Wの時系列データ)Ot={ot-W+1,・・・,ot}が、逐次供給される。
尤度計算部31は、観測時系列バッファ12から逐次供給される時系列データ(ここでは、学習データでもある)Otを用い、ACHMM記憶部16に記憶されたACHMMを構成する各モジュール#1ないし#Mについて、モジュール#mにおいて、時系列データOtが観測される尤度(モジュール尤度)P(Otm)を、図8の尤度計算部21と同様にして求め、最尤推定部32に供給する。
ここで、尤度計算部31と、図8のモジュール学習部13の尤度計算部21とは、1つの尤度計算部で兼用することができる。
最尤推定部32には、尤度計算部31から、ACHMMを構成するモジュール#1ないし#Mのモジュール尤度P(Ot1)ないしP(OtM)が供給される他、観測時系列バッファ12から、ウインドウ長Wの時系列データ(学習データ)Ot={ot-W+1,・・・,ot}が供給される。
最尤推定部32は、ACHMMを構成するモジュール#1ないし#Mのうちの、尤度算出部31からのモジュール尤度P(Otm)が最大のモジュールである最大尤度モジュール#m*=argmaxm[P(Otm)]を求める。
ここで、モジュール#m*が、最大尤度モジュールであるということは、観測空間を、自己組織的に、モジュールに相当する部分空間に分割した場合の、その部分空間のうちの、モジュール#m*に対応する部分空間に、時刻tの時系列データOtが認識(分類)されたことに相当する。
最尤推定部32は、最大尤度モジュール#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}と表す。
最尤推定部32は、時刻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}]を出力する。
なお、最尤推定部32は、時刻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次元のシンボル値に変換して出力することができる。
[認識処理]
図21は、図20の認識部14が行う認識処理を説明するフローチャートである。
認識処理は、時刻tが、時刻Wになってから開始される。
ステップS141において、尤度算出部31は、観測時系列バッファ12に記憶されたウインドウ長Wの最新(時刻t)の時系列データOt={ot-W+1,・・・,ot}を用い、ACHMM記憶部16に記憶されたACHMMを構成する各モジュール#mのモジュール尤度P(Otm)を求め、最尤推定部32に供給する。
そして、処理は、ステップS141からステップS142に進み、最尤推定部32は、ACHMMを構成するモジュール#1ないし#Mのうちの、尤度算出部31からのモジュール尤度P(Otm)が最大の最大尤度モジュール#m*=argmaxm[P(Otm)]を求め、処理は、ステップS143に進む。
ステップS143では、最尤推定部32は、最大尤度モジュール#m*において、時系列データOtが観測される尤度が最大の状態遷移が生じる最尤状態系列Sm* t={sm* t-W+1,・・・,sm* t}を求め、処理は、ステップS144に進む。
ステップS144では、最尤推定部32は、時刻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とのセットである2次元のシンボル[m*,sm* t]を出力する。
そして、観測時系列バッファ12に、最新の観測値が記憶されるのを待って、ステップS141に戻り、以下、同様の処理が繰り返される。
[遷移情報管理部15の構成例]
図22は、図1の遷移情報管理部15の構成例を示すブロック図である。
遷移情報管理部15は、認識部14からの認識結果情報に基づいて、ACHMM記憶部16に記憶されたACHMMにおける各状態遷移の頻度の情報である遷移情報を生成し、ACHMM記憶部16に供給して、ACHMM記憶部16に記憶された遷移情報を更新する。
すなわち、遷移情報管理部15は、情報時系列バッファ41、及び、情報更新部42を含む。
情報時系列バッファ41は、認識部14が出力する認識結果情報[m*,Sm* t={sm* t-W+1,・・・,sm* t}]を一時記憶する。
なお、情報時系列バッファ41は、少なくとも、ウインドウ長Wに等しい数の、後述するフェーズについて、2時刻分の認識結果情報を記憶するだけの記憶容量を有する。
また、認識部14から遷移情報管理部15の情報時系列バッファ41には、ある1時刻の観測値ではなく、ウインドウ長Wの時系列データOt={ot-W+1,・・・,ot}の認識結果情報[m*,Sm* t={sm* t-W+1,・・・,sm* t}]が供給される。
情報更新部42は、情報時系列バッファ41に記憶された認識結果情報と、ACHMM記憶部16に記憶された遷移情報とから、新たな遷移情報を生成し、その新たな遷移情報によって、ACHMM記憶部16に記憶された遷移情報が登録された、後述するモジュール状態間遷移頻度テーブルを更新する。
図23は、図22の遷移情報管理部15が遷移情報を生成する遷移情報生成処理を説明する図である。
モジュール学習部13(図1)でのモジュール学習によれば、モデル化対象から観測される観測値の観測空間は、モジュールに相当する局所構造(スモールワールド)(部分空間)に分割され、局所構造内では、HMMによって、ある時系列パターンが獲得される。
モデル化対象を、スモールワールドネットワークで表現するためには、局所構造間の(状態)遷移、すなわち、モジュール間の遷移のモデル(遷移モデル)を、学習によって獲得する必要がある。
一方、認識部14が出力する認識結果情報によれば、任意の時刻tの観測値otが観測される(HMMの)状態を特定することができるから、モジュール内の状態の遷移は勿論、モジュール間の状態の遷移も獲得することができる。
そこで、遷移情報管理部15は、認識部14が出力する認識結果情報を用いて、遷移モデル(のパラメータ)としての遷移情報を獲得する。
すなわち、遷移情報管理部15は、認識部14が出力する認識結果情報から、ある連続する時刻t-1、及び、時刻tのそれぞれにいるモジュールと(HMMの)状態とを特定し、時間的に先行する時刻t-1にいるモジュールと状態を、遷移元モジュール、及び、遷移元状態とするとともに、時間的に後行する時刻tにいるモジュールと状態を、遷移先モジュール、及び、遷移先状態とする。
さらに、遷移情報管理部15は、遷移元モジュール、遷移元状態、遷移先モジュール、及び、遷移先状態(を表すインデクス)と、遷移元モジュールの遷移元状態から、遷移先モジュールの遷移先状態への状態遷移の(出現)頻度としての1を、遷移情報の1つであるモジュール状態間遷移情報として生成し、そのモジュール状態間遷移情報を、モジュール状態間遷移頻度テーブルの1レコード(1エントリ)(1行)として登録する。
そして、遷移情報管理部15は、モジュール状態間遷移頻度テーブルに既に登録されたモジュール状態間遷移情報と同一の遷移元モジュール、遷移元状態、遷移先モジュール、及び、遷移先状態が出現した場合には、そのモジュール状態間遷移情報の頻度を1だけインクリメントしたモジュール状態間遷移情報を生成し、そのモジュール状態間遷移情報によって、モジュール状態間遷移頻度テーブルを更新する。
具体的には、遷移情報管理部15(図22)では、時刻tをウインドウ長Wで除算した場合の剰余fによって、時刻tを、フェーズに分類することとして、情報時系列バッファ41(図22)に、フェーズの数(ウインドウ長Wに等しい)だけの記憶領域が確保される。
フェース#f(f=0,1,・・・,W-1)の記憶領域は、少なくとも、2時刻分の認識結果情報を記憶するだけの記憶容量を有し、そのフェーズ#fの最新の2時刻分の認識結果情報、すなわち、フェーズ#fの最新の時刻tを、時刻t=τとすると、時刻τの認識結果情報と、時刻τ-Wの認識結果情報とを記憶する。
ここで、図23には、ウインドウ長Wが5であり、したがって、認識結果情報を、5個のフェーズ#0,#1,#2,#3,#4に分けて記憶する場合の情報時系列バッファ41の記憶内容を示してある。
なお、図23において、数字を2段に分けて、内部に記載してある長方形は、1時刻の認識結果情報を表す。また、1時刻の認識結果情報としての長方形の内部の2段の数字のうちの、上段の1個の数字は、最大尤度モジュールとなったモジュール(のモジュールインデクス)を表し、下段の5個の数字は、右端を最新時刻の状態とする最尤状態系列(を構成する状態のインデクス)を表す。
現在時刻(最新の時刻)tが、例えば、フェーズ#1に分類される時刻である場合には、認識部14から情報時系列バッファ41には、現在時刻tの認識結果情報が供給され、情報時系列バッファ41のフェーズ#1の記憶領域に、追加する形で記憶される。
その結果、情報時系列バッファ41のフェーズ#1の記憶領域には、少なくとも、現在時刻tの認識結果情報と、時刻t-Wの認識結果情報とが記憶される。
ここで、認識部14から情報時系列バッファ41に出力される時刻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の認識結果情報とが記憶されると、情報更新部42(図22)は、図23において点線の矢印で示すように、現在時刻tの認識結果情報と、時刻t-Wの認識結果情報とを、時刻順に連結する。
さらに、情報更新部42は、連結後の認識結果情報、すなわち、時刻t-2W+1ないし時刻tの各時刻の認識値の時系列順の並び(以下、連結情報ともいう)のうちの、時刻t-Wないし時刻tのW+1個の認識値の、隣接する認識値どうしのW個のセット(以下、認識値セットともいう)について、その認識値セットを、遷移元モジュール、及び、遷移元状態と、遷移先モジュール、及び、遷移先状態とのセットとするモジュール状態間遷移情報が、ACHMM記憶部16に記憶されたモジュール状態間遷移情報頻度テーブルに登録されているかどうかを調査する。
認識値セットを、遷移元モジュール、及び、遷移元状態と、遷移先モジュール、及び、遷移先状態とのセットとするモジュール状態間遷移情報が、ACHMM記憶部16に記憶されたモジュール状態間遷移情報頻度テーブルに登録されていない場合、情報更新部42は、認識値セットのうちの、時間的に先行するモジュール及び状態と、時間的に後行するモジュール及び状態とを、それぞれ、遷移元モジュール、及び、遷移元状態と、遷移先モジュール、及び、遷移先状態ととし、かつ、頻度を初期値としての1とするモジュール状態間遷移情報を新規に生成する。
そして、情報更新部42は、新規に生成したモジュール状態間遷移情報を、ACHMM記憶部16に記憶されたモジュール状態間遷移頻度テーブルの、新たな1レコードとして登録する。
なお、ACHMM記憶部16には、モジュール学習部13(図1)でのモジュール学習処理が開始されるときに、レコードがないモジュール状態間遷移頻度テーブルが記憶されることとする。
また、情報更新部42は、遷移元モジュール、及び、遷移元状態と、遷移先モジュール、及び、遷移先状態とが、同一となる場合、つまり、いわゆる自己遷移の場合であっても、上述したように、モジュール状態間遷移情報を新規に生成して、モジュール状態間遷移頻度テーブルに登録する。
一方、認識値セットを、遷移元モジュール、及び、遷移元状態と、遷移先モジュール、及び、遷移先状態とのセットとするモジュール状態間遷移情報が、ACHMM記憶部16に記憶されたモジュール状態間遷移情報頻度テーブルに登録されている場合、情報更新部42は、そのモジュール状態間遷移情報の頻度を1だけインクリメントしたモジュール状態間遷移情報を生成し、そのモジュール状態間遷移情報によって、ACHMM記憶部16に記憶されたモジュール状態間遷移頻度テーブルを更新する。
ここで、現在時刻tの認識結果情報と、時刻t-Wの認識結果情報とを連結して得られる連結情報のうちの、時刻t-2W+1ないし時刻t-WのW個の認識値の、隣接する認識値どうしのW-1個の認識値セットは、遷移情報管理部15が行う遷移情報生成処理において、頻度のカウント(インクリメント)に用いられない。
これは、時刻t-2W+1ないし時刻t-WのW個の認識値の、隣接する認識値どうしのW-1個の認識値セットは、時刻t-Wの認識結果情報と、時刻t-2Wの認識結果情報とを連結して得られる連結情報を用いた遷移情報生成処理において、頻度のカウントに、既に用いられているので、頻度のカウントが、重複して行われることを防止するためである。
なお、情報更新部42では、モジュール状態間遷移頻度テーブルの更新後に、その更新後のモジュール状態間遷移頻度テーブルのモジュール状態間遷移情報を、状態(の情報)について、図23に示すように周辺化することで、あるモジュール(の任意の状態)と、そのモジュールを含む任意のモジュール(の任意の状態)との間の状態遷移(モジュール間遷移)の遷移情報であるモジュール間遷移情報を登録したモジュール間遷移頻度テーブルを生成し、ACHMM記憶部16に記憶させることができる。
ここで、モジュール間遷移情報は、遷移元モジュール、及び、遷移先モジュール(を表すインデクス)と、遷移元モジュールから、遷移先モジュールへの状態遷移の頻度とからなる。
[遷移情報生成処理]
図24は、図22の遷移情報管理部15が行う遷移情報生成処理を説明するフローチャートである。
遷移情報管理部15は、現在時刻である時刻tの認識結果情報[m*,Sm* t={sm* t-W+1,・・・,sm* t}]が、認識部14から出力されるのを待って、ステップS151において受信し、処理は、ステップS152に進む。
ステップS152では、遷移情報管理部15は、時刻tのフェーズ#f=mod(t,W)を求め、処理は、ステップS153に進む。
ステップS153では、遷移情報管理部15は、情報時系列バッファ41(図22)のフェーズ#fの記憶領域に、認識部14からの時刻tの認識結果情報[m*,Sm* t]を記憶させ、処理は、ステップS154に進む。
ステップS154では、遷移情報管理部15の情報更新部42は、情報時系列バッファ41のフェーズ#fの記憶領域に記憶された時刻tの認識結果情報と、時刻t-Wの認識結果情報とを用いて、時刻t-Wから時刻tまでの各状態遷移を表すW個の認識値セットを検出する。
すなわち、情報更新部42は、図23で説明したように、時刻tの認識結果情報と、時刻t-Wの認識結果情報とを、時刻順に連結して、時刻t-2W+1ないし時刻tの各時刻の認識値の時系列順の並びである連結情報を生成する。
さらに、情報更新部42は、連結情報としての認識値の並びにおいて、時刻t-Wないし時刻tのW+1個の認識値の、隣接する認識値どうしのW個のセットを、時刻t-Wから時刻tまでの各状態遷移を表すW個の認識値セットとして検出する。
その後、処理は、ステップS154からステップS155に進み、情報更新部42は、時刻t-Wから時刻tまでの各状態遷移を表すW個の認識値セットを用いて、モジュール状態間遷移情報を生成し、そのモジュール状態間遷移情報によって、ACHMM記憶部16に記憶されたモジュール状態間遷移情報頻度テーブル(図23)を更新する。
すなわち、情報更新部42は、W個の認識値セットのうちの、ある認識値セットを、注目認識値セットとして注目し、注目認識値セットのうちの、時間的に先行する認識値を、遷移元モジュール、及び、遷移元状態とするとともに、時間的に後行する認識値を、遷移先モジュール、及び、遷移先状態とするモジュール状態間遷移情報(以下、注目認識値セットに対応するモジュール状態間遷移情報ともいう)が、ACHMM記憶部16に記憶されたモジュール状態間遷移情報頻度テーブルに登録されているかどうかを調査する。
そして、情報更新部42は、注目認識値セットに対応するモジュール状態間遷移情報が、モジュール状態間遷移情報頻度テーブルに登録されていない場合には、注目認識値セットのうちの、時間的に先行するモジュール及び状態と、時間的に後行するモジュール及び状態とを、それぞれ、遷移元モジュール、及び、遷移元状態と、遷移先モジュール、及び、遷移先状態ととし、かつ、頻度を初期値としての1とするモジュール状態間遷移情報を新規に生成する。
さらに、情報更新部42は、新規に生成したモジュール状態間遷移情報を、ACHMM記憶部16に記憶されたモジュール状態間遷移頻度テーブルの、新たな1レコードとして登録する。
また、情報更新部42は、注目認識値セットに対応するモジュール状態間遷移情報が、モジュール状態間遷移情報頻度テーブルに登録されている場合には、注目認識値セットに対応するモジュール状態間遷移情報の頻度を1だけインクリメントしたモジュール状態間遷移情報を生成し、そのモジュール状態間遷移情報によって、ACHMM記憶部16に記憶されたモジュール状態間遷移頻度テーブルを更新する。
モジュール状態間遷移頻度テーブルの更新後、処理は、ステップS155からステップS156に進み、情報更新部42は、更新後のモジュール状態間遷移頻度テーブルのモジュール状態間遷移情報を、状態について周辺化し、あるモジュール(の任意の状態)と、そのモジュールを含む任意のモジュール(の任意の状態)との間の状態遷移(モジュール間遷移)の遷移情報であるモジュール間遷移情報を生成する。
そして、情報更新部42は、更新後のモジュール状態間遷移頻度テーブルを用いて生成したモジュール間遷移情報を登録したモジュール間遷移情報テーブル(図23)を生成し、そのモジュール間遷移情報テーブルを、ACHMM記憶部16に記憶させる(古いモジュール間遷移情報テーブルが記憶されている場合には、上書きする)。
その後、認識部14から遷移情報管理部15に対して、次の時刻の認識結果情報が出力されるのを待って、処理は、ステップS156からステップS151に戻り、以下、同様の処理が繰り返される。
なお、図24の遷移情報生成処理において、ステップS156は、スキップすることができる。
[HMM構成部17の構成例]
図25は、図1のHMM構成部17の構成例を示すブロック図である。
ここで、局所構造(スモールワールド)として、小規模なHMMを採用するACHMMの学習では、競合学習型の学習(競合学習)、又は、新規モジュールのHMMパラメータを更新するモジュール追加型の学習が、適応的に行われるので、モデル化対象が、モデル化に、大規模なHMMが必要な対象であっても、ACHMMの学習の収束性は、大規模なHMMの学習に比較して極めて良い(高い)。
また、ACHMMは、モデル化対象から観測される観測値の観測空間を、モジュールに相当する部分空間に分割し、さらに、部分空間を、その部分空間に相当するモジュールであるHMMの状態に相当する単位に、より細かく分割(状態分割)する。
したがって、ACHMMによれば、観測値について、粗密2層構造の認識(状態認識)、すなわち、モジュールの単位で、いわば粗い認識をすることと、HMMの状態の単位で、いわば細かい(密な)認識をすることができる。
一方、ACHMMのモデルパラメータとしての、局所構造を学習するモジュールであるHMMのHMMパラメータと、ACHMMにおける各状態遷移の頻度の情報である遷移情報とは、それぞれ、モジュール学習処理(図9、図17)と、遷移情報生成処理(図24)という、性質の異なる学習で獲得されるが、これらのHMMパラメータと遷移情報とを統合して、ACHMM全体を、確率的状態遷移モデルとして再表現した方が、図1の学習装置の後段で処理を行うブロックにとって、都合が良い場合がある。
そのような都合の良い場合としては、例えば、図1の学習装置を、後述するような、自律的に行動する(アクションを行う)エージェントに適用する場合がある。
そこで、HMM構成部17は、ACHMMのモジュールどうしを結合することで、1個のモジュールのHMMより大規模な1個のHMMである結合HMMを構成(再構成)する。
すなわち、HMM構成部17は、連結部51、正規化部52、頻度行列生成部53、頻度化部54、平均化部55、及び、正規化部56を含む。
ここで、結合HMMのモデルパラメータλUを、λU={aU ij,μU i,(σ2)U i,πU i,i=1,2,・・・,N×M,j=1,2,・・・,N×M}と表すこととする。aU ij,μU i,(σ2)U i,πU iは、それぞれ、結合HMMの状態遷移確率、平均ベクトル、分散、初期確率を表す。
連結部51には、ACHMM記憶部16に記憶されているACHMMのモジュールであるHMMのHMMパラメータλmのうちの、平均ベクトルμm i、分散(σ2)m j、及び、初期確率πm iが供給される。
連結部51は、ACHMM記憶部16からの、ACHMMのすべてのモジュールの平均ベクトルμm iを連結することにより、結合HMMの平均ベクトルμU iを求めて出力する。
また、連結部51は、ACHMM記憶部16からの、ACHMMのすべてのモジュールの分散(σ2)m iを連結することにより、結合HMMの分散(σ2)U iを求めて出力する。
さらに、連結部51は、ACHMM記憶部16からの、ACHMMのすべてのモジュールの初期確率πm iを連結し、その連結結果を、正規化部52に供給する。
正規化部52は、連結部51からの、ACHMMのすべてのモジュールの初期確率πm iの連結結果を、総和が1.0になるように正規化することにより、結合HMMの初期確率πU iを求めて出力する。
頻度行列生成部53には、ACHMM記憶部16に記憶されているACHMMのモデルパラメータのうちの、遷移情報(モジュール状態間遷移情報)が登録されたモジュール状態間遷移頻度テーブル(図23)が供給される。
頻度行列生成部53は、ACHMM記憶部16からのモジュール状態間遷移頻度テーブルを参照し、ACHMMの(各モジュールの)任意の状態どうしの間の状態遷移の頻度(回数)をコンポーネントとする行列である頻度行列を生成し、頻度化部54、及び、平均化部55に供給する。
頻度化部54には、頻度行列生成部53から、頻度行列が供給される他、ACHMM記憶部16に記憶されているACHMMのモジュールであるHMMのHMMパラメータλmのうちの、状態遷移確率am ijが供給される。
頻度化部54は、頻度行列生成部53からの頻度行列に基づき、ACHMM記憶部16からの状態遷移確率am ijを、対応する状態遷移の頻度に換算し、その頻度をコンポーネントとする行列である頻度化遷移行列を平均化部55に供給する。
平均化部55は、頻度行列生成部53からの頻度行列と、頻度化部54からの頻度化遷移行列とを平均化し、その結果得られる行列である平均化頻度行列を、正規化部56に供給する。
正規化部56は、平均化部55からの平均化頻度行列のコンポーネントとしての頻度のうちの、ACHMMの1つの状態から、ACHMMのすべての状態それぞれへの状態遷移の頻度の総和が1.0となるように、平均化頻度行列のコンポーネントとしての頻度を正規化することにより、頻度を確率化することで、結合HMMの状態遷移確率aU ijを求めて出力する。
図26は、図25のHMM構成部17による結合HMMの構成の方法、すなわち、結合HMMのHMMパラメータである状態遷移確率aU ij、平均ベクトルμU i、分散(σ2)U i、及び、初期確率πU iを求める方法を説明する図である。
なお、図26では、ACHMMが、3つのモジュール#1,#2,#3で構成されることとしてある。
まず、結合HMMの観測確率を規定する平均ベクトルμU i、及び、分散(σ2)U iの求め方を説明する。
観測値がD次元のベクトルである場合、1個のモジュール#mの観測確率を規定する平均ベクトルμm i、及び、分散(σ2)m iは、それぞれ第d行のコンポーネントを、ベクトルμm i、及び、分散(σ2)m iの第d次元のコンポーネントとするD次元の列ベクトルで表すことができる。
さらに、1個のモジュール#mのHMMの状態数がNである場合、1個のモジュール#mの(すべての状態siについての)平均ベクトルμm iの集合は、第i列のコンポーネントを、D次元の列ベクトルである平均ベクトルμm iとする、D行N列の行列で表すことができる。
同様に、1個のモジュール#mの(すべての状態siについての)分散(σ2)m iの集合は、第i列のコンポーネントを、D次元の列ベクトルである分散(σ2)m iとする、D行N列の行列で表すことができる。
連結部51(図25)は、ACHMMのすべてのモジュール#1ないし#3それぞれの平均ベクトルμ1 iないしμ3 iのD行N列の行列を、図26に示すように、モジュールインデクスmの昇順に、列方向(横方向)に並べて連結することにより、結合HMMの平均ベクトルμU iの行列を求める。
同様に、連結部51は、ACHMMのすべてのモジュール#1ないし#3それぞれの分散(σ2)1 iないし(σ2)3 iのD行N列の行列を、図26に示すように、モジュールインデクスmの昇順に、列方向に並べて連結することにより、結合HMMの分散(σ2)U iの行列を求める。
ここで、結合HMMの平均ベクトルμU iの行列、及び、結合HMMの分散(σ2)U iの行列は、いずれも、D行3×N列の行列となる。
次に、結合HMMの初期確率πU iの求め方を説明する。
上述したように、1個のモジュール#mのHMMの状態数がNである場合、1個のモジュール#mの初期確率πm iの集合は、状態siの初期確率πm iを、第i行のコンポーネントとするN次元の列ベクトルで表すことができる。
連結部51(図25)は、ACHMMのすべてのモジュール#1ないし#3それぞれの初期確率π1 iないしπ3 iであるN次元の列ベクトルを、図26に示すように、モジュールインデクスmの昇順に、行方向(縦方向)に並べて連結し、その連結結果である3×N次元の列ベクトルを、正規化部52に供給する。
正規化部52(図25)は、連結部51からの連結結果である3×N次元の列ベクトルのコンポーネントを、そのコンポーネントの総和が1.0になるように正規化することにより、結合HMMの初期確率πU iの集合である3×N次元の列ベクトルを求める。
次に、結合HMMの状態遷移確率aU ijの求め方を説明する。
上述したように、1個のモジュール#mのHMMの状態数がNである場合、3個のモジュール#1ないし#3から構成されるACHMMの状態の総数は、3×N個であり、したがって、3×N個の状態から、3×N個の状態への状態遷移が存在する。
頻度行列生成部53(図25)は、モジュール状態間遷移頻度テーブルを参照し、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の状態を遷移元の状態とする状態遷移の頻度を表す。
一方、頻度化部54は、頻度行列生成部53で生成された頻度行列に基づき、ACHMMを構成する3個のモジュール#1ないし#3それぞれの状態遷移確率a1 ijないしa3 ijを、対応する状態遷移の頻度に換算し、その頻度をコンポーネントとする行列である頻度化遷移行列を生成する。
平均化部55は、頻度行列生成部53で生成された頻度行列と、頻度化部54で生成された頻度化遷移行列とを平均化することで、3×N行3×N列の平均化頻度行列を生成する。
正規化部56は、平均化部55で生成された平均化頻度行列のコンポーネントである頻度を確率化することで、結合HMMの状態遷移確率aU ijを、第i行第j列のコンポーネントとする3×N行3×N列の行列を求める。
図27は、図25のHMM構成部17による、結合HMMのHMMパラメータである状態遷移確率aU ij、平均ベクトルμU i、分散(σ2)U i、及び、初期確率πU iを求める方法の具体例を説明する図である。
なお、図27では、図26と同様に、ACHMMが、3つのモジュール#1,#2,#3で構成されることとしてある。
さらに、図27では、観測値の次元数Dが、2次元であるとし、1個のモジュール#mのHMMの状態数Nが3であるとしてある。
また、図27において、上付のTは、転置を表す。
まず、結合HMMの観測確率を規定する平均ベクトルμU i、及び、分散(σ2)U iの求め方を説明する。
観測値の次元数Dが、2次元であるとし、1個のモジュール#mのHMMの状態数Nが3である場合、図26で説明したことから、1個のモジュール#mの平均ベクトルμm iは、第d行のコンポーネントを、平均ベクトルμm iの第d次元のコンポーネントとする2次元の列ベクトルで表され、1個のモジュール#mの(すべての状態siについての)平均ベクトルμm iの集合は、第i列のコンポーネントを、2次元の列ベクトルである平均ベクトルμm iとする、2行3列の行列で表される。
同様に、1個のモジュール#mの分散(σ2)m iは、第d行のコンポーネントを、分散(σ2)m iの第d次元のコンポーネントとする2次元の列ベクトルで表され、1個のモジュール#mの(すべての状態siについての)分散(σ2)m iの集合は、第i列のコンポーネントを、2次元の列ベクトルである分散(σ2)m iとする、2行3列の行列で表される。
なお、図27では、平均ベクトルμm iの集合としての行列、及び、分散(σ2)m iの集合としての行列は、いずれも、転置されており、3行2列の行列で表されている。
連結部51(図25)は、ACHMMのすべてのモジュール#1ないし#3それぞれの平均ベクトルμ1 iないしμ3 iの2行3列の行列を、モジュールインデクスmの昇順に、列方向(横方向)に並べて連結することにより、結合HMMの平均ベクトルμU iの行列である2行9(=3×3)列の行列を求める。
同様に、連結部51は、ACHMMのすべてのモジュール#1ないし#3それぞれの分散(σ2)1 iないし(σ2)3 iの2行3列の行列を、モジュールインデクスmの昇順に、列方向に並べて連結することにより、結合HMMの分散(σ2)U iの行列である2行9列の行列を求める。
なお、図27では、平均ベクトルμm iの集合としての行列、及び、分散(σ2)m iの集合としての行列は、いずれも、転置されているため、連結は、行方向(縦方向)に行われている。さらに、その結果、結合HMMの平均ベクトルμU iの行列、及び、分散(σ2)U iの行列は、2行9列の行列を転置した9行2列の行列になっている。
次に、結合HMMの初期確率πU iの求め方を説明する。
1個のモジュール#mのHMMの状態数Nが3である場合、図26で説明したことから、1個のモジュール#mの初期確率πm iの集合は、状態siの初期確率πm iを、第i行のコンポーネントとする3次元の列ベクトルで表される。
連結部51(図25)は、ACHMMのすべてのモジュール#1ないし#3それぞれの初期確率π1 iないしπ3 iである3次元の列ベクトルを、モジュールインデクスmの昇順に、行方向(縦方向)に並べて連結し、その連結結果である9(=3×3)次元の列ベクトルを、正規化部52に供給する。
正規化部52(図25)は、連結部51からの連結結果である9次元の列ベクトルのコンポーネントを、そのコンポーネントの総和が1.0になるように正規化することにより、結合HMMの初期確率πU iの集合である9次元の列ベクトルを求める。
次に、結合HMMの状態遷移確率aU ijの求め方を説明する。
1個のモジュール#mのHMMの状態数Nが3である場合、3個のモジュール#1ないし#3から構成されるACHMMの状態の総数は、9(=3×3)個であり、したがって、9個の状態から、9個の状態への状態遷移が存在する。
頻度行列生成部53(図25)は、モジュール状態間遷移頻度テーブルを参照し、9個の状態それぞれを遷移元の状態として、その遷移元の状態から、9個の状態それぞれを遷移先の状態とする状態遷移の頻度をコンポーネントとする行列である頻度行列を生成する。
頻度行列は、9個の状態のうちのi番目の状態から、j番目の状態への状態遷移の頻度を、第i行第j列のコンポーネントとする9行9列の行列となる。
ここで、ACHMMを構成する1個のモジュール#mの、i番目の状態からj番目の状態への状態遷移確率am ijを、第i行第j列のコンポーネントとするN行N列の行列を、遷移行列ということとする。
モジュール#mのHMMの状態数Nが3である場合、モジュール#mの遷移行列は3行3列の行列となる。
図26で説明したように、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遷移行列に対応する。
頻度化部54は、頻度行列において、モジュール#1の遷移行列に対応する3行3列の部分行列(以下、モジュール#1の対応部分行列ともいう)に基づき、モジュール#1の遷移行列のコンポーネントである状態遷移確率a1 ijを、モジュール#1の対応部分行列のコンポーネントである頻度に相当する頻度に換算し、その頻度をコンポーネントとする3行3列のモジュール#1の頻度化遷移行列を生成する。
すなわち、頻度化部54は、モジュール#1の対応部分行列の第i行のコンポーネントである頻度の総和を求め、その総和を、モジュール#1の遷移行列の第i行のコンポーネントである状態遷移確率a1 ijに乗算することで、モジュール#1の遷移行列の第i行のコンポーネントである状態遷移確率a1 ijを頻度に変換(換算)する。
したがって、例えば、図27に示すように、頻度行列の、第1行ないし第3行と、第1列ないし第3列との重複部分の、モジュール#1の対応部分行列の第1行のコンポーネントである頻度が、29,8,5であり、モジュール#1の遷移行列の第1行のコンポーネントである状態遷移確率a1 ijが、0.7,0.2,0.1である場合には、モジュール#1の対応部分行列の第1行の頻度の総和は、42=(29+8+5)であるから、モジュール#1の遷移行列の第1行の状態遷移確率a1 ijである0.7,0.2,0.1は、それぞれ、頻度29.4(=0.7×42),8.4(=0.2×42),4.2(=0.1×42)に変換される。
頻度化部54は、モジュール#1の頻度化遷移行列と同様にして、ACHMMを構成する他のモジュールであるモジュール#2及び#3それぞれの頻度化遷移行列も生成する。
そして、平均化部55は、頻度行列生成部53で生成された9行9列の頻度行列と、頻度化部54で生成されたモジュール#1ないし#3それぞれの頻度化遷移行列とを平均化することで、9行9列の平均化頻度行列を生成する。
すなわち、平均化部55は、9行9列の頻度行列において、モジュール#1の対応部分行列の各コンポーネントを、そのコンポーネントと、そのコンポーネントに対応する、モジュール#1の頻度化遷移行列のコンポーネントとの平均値によって更新(上書き)する。
同様に、平均化部55は、9行9列の頻度行列において、モジュール#2の対応部分行列の各コンポーネントを、そのコンポーネントと、そのコンポーネントに対応する、モジュール#2の頻度化遷移行列のコンポーネントとの平均値によって更新するとともに、モジュール#3の対応部分行列の各コンポーネントを、そのコンポーネントと、そのコンポーネントに対応する、モジュール#3の頻度化遷移行列のコンポーネントとの平均値によって更新する。
正規化部56は、平均化部55において、上述したように、平均値で更新された頻度行列である9行9列の平均化頻度行列のコンポーネントである頻度を確率化することで、結合HMMの状態遷移確率aU ijを、第i行第j列のコンポーネントとする9行9列の行列を求める。
すなわち、正規化部56は、9行9列の平均化頻度行列の各行のコンポーネントを、その行のコンポーネントの総和が1.0になるように正規化することで、結合HMMの状態遷移確率aU ijを、第i行第j列のコンポーネントとする9行9列の行列(この行列も、遷移行列という)を求める。
なお、図26及び図27では、モジュール状態間遷移頻度テーブルと、モジュールのHMMの状態遷移確率とを用いて、結合HMMの状態遷移確率aU ijを求めることとしたが、結合HMMの状態遷移確率aU ijは、モジュール状態間遷移頻度テーブルだけを用いて生成することが可能である。
すなわち、図26及び図27では、モジュール状態間遷移頻度テーブルから生成された頻度行列と、モジュール#1ないし#3の遷移行列から生成された頻度化遷移行列とを平均化し、その結果得られる平均化頻度行列を確率化することで、結合HMMの状態遷移確率aU ijを求めることとしたが、結合HMMの状態遷移確率aU ijは、モジュール状態間遷移頻度テーブルから生成された頻度行列そのものを確率化することだけで求めることが可能である。
以上のように、ACHMMから結合HMMを再構成することができるので、大規模な(表現能力の高い)HMMでなければ表現することが困難なモデル化対象を、まず、ACHMMで効率良く学習しておき、このACHMMから結合HMMを再構成することで、効率良く、適切な規模の、適切なネットワーク構造(状態遷移)をもつHMMの形で、モデル化対象の統計的(確率的)状態遷移モデルを獲得することが可能となる。
なお、場合によっては、結合HMMを再構成した後、その結合HMM(のHMMパラメータ)を、初期値として、Baum-Welchの再推定法等に従った一般のHMMの学習を行うことで、モデル化対象をより適切に表現する、より精度の高いHMMを獲得することができる。
また、結合HMMは、1個のモジュールのHMMより大規模なHMMであり、大規模なHMMの追加学習は、大規模なゆえに、効率良く行うことが困難である。そこで、追加学習の必要が生じた場合には、追加学習は、ACHMMで行い、後述するプランニング処理等のように、ACHMMの状態すべてを対象とした状態遷移を考慮して、状態系列(最尤状態系列)を、高精度に推定する必要がある場合には、そのような状態系列の推定は、(追加学習後の)ACHMMから再構成される結合HMMで行うことができる。
ここで、上述の場合には、HMM構成部17において、ACHMMを構成するモジュールのすべてを結合した結合HMMを構成することとしたが、HMM構成部17では、ACHMMを構成するモジュールの一部である複数のモジュールを結合した結合HMMを構成することが可能である。
[学習装置を適用したエージェントの構成例]
図28は、図1の学習装置を適用したエージェントの一実施の形態(第1実施の形態)の構成例を示すブロック図である。
図28のエージェントは、例えば、移動可能な環境(移動環境)から観測される観測値を知覚(センシング)し、その知覚した観測値に基づいて、移動等のアクションを行う(行動をとる)移動型ロボット等の、自律的にアクションを行うことができるエージェントであり、移動環境から観測した観測値と、エージェントがアクションを行うのに、モータ等のアクチュエータに与えるべきアクション信号とに基づいて、移動環境のモデルを構築し、そのモデル上での任意の内部知覚状態を実現するためのアクション(行動)を行う。
そして、図28のエージェントは、移動環境のモデルの構築を、ACHMMを用いて行う。
移動環境のモデルの構築を、ACHMMを用いて行う場合には、エージェントは、エージェント自身がおかれた移動環境の規模や構造の事前知識を必要としない。エージェントは、移動環境内を移動し、経験を積んでいく過程として、ACHMMの学習(モジュール学習)を行い、移動環境の規模に適した数のモジュールで構成される、移動環境の状態遷移モデルとしてのACHMMを構築する。
すなわち、エージェントは、移動環境を移動しながら、移動環境から観測される観測値を、ACHMMにより逐次学習する。ACHMMの学習によって、様々な観測値の時系列が観測されたときにいる状態(内部状態)を特定するための情報が、モジュールのHMMパラメータ、及び、遷移情報として獲得される。
また、エージェントは、ACHMMの学習と同時に、各状態遷移(又は、各状態)について、その状態遷移が生じるときに観測された観測値と、行われたアクションのアクション信号(あるアクションを行うのに、アクチュエータに与えるべき信号)との関係を学習する。
そして、エージェントは、ACHMMの状態のうちの1つの状態が、目標となる目標状態として与えられると、ACHMMから再構成される結合HMMを用いて、移動環境内のエージェントの現在地に対応する状態(現在状態)から、目標状態までの、ある状態系列を、現在状態から目標状態に辿り着くプランとして求めるプランニングを行う。
さらに、エージェントは、学習で獲得した、各状態遷移についての、観測値とアクション信号との関係に基づいて、プランとしての状態系列の状態遷移が生じるアクションを行うことで、現在地から、目標状態に対応する移動環境内の位置まで移動する。
図28のエージェントは、以上のような移動環境のACHMMによる学習、各状態遷移についての観測値とアクション信号との関係の学習、プランニング、及び、プランに従ったアクションを行うために、センサ71、観測時系列バッファ72、モジュール学習部73、認識部74、遷移情報管理部75、ACHMM記憶部76、HMM構成部77、プランニング部81、アクションコントローラ82、駆動部83、及び、アクチュエータ84を含む。
センサ71ないしHMM構成部77は、図1の学習装置のセンサ11ないしHMM構成部17とそれぞれ同様に構成される。
なお、センサ71としては、エージェントから、前、後ろ、左、及び、右の4方向を含む複数の方向の、移動環境内の間近の壁までの距離を測定する距離センサを採用することができる。この場合、センサ71は、複数の方向の距離をコンポーネントとするベクトルを、観測値として出力する。
プランニング部81には、図示せぬブロックから目標状態(を表すインデクス)が供給されるとともに、認識部74が出力する、現在時刻tの観測値otの認識結果情報[m*,sm* t]が供給される。
さらに、プランニング部81には、HMM構成部77から、結合HMMが供給される。
ここで、目標状態は、例えば、ユーザの操作等に応じて、外部から指定することや、エージェントに、ACHMMの状態のうちの、複数の観測値の観測確率が高い状態等を目標状態とする動機等に従って、目標状態を設定する動機システムを内蔵させ、その動機システムで、目標状態を設定すること等によって、プランニング部81に供給される。
また、ACHMMを用いた認識(状態認識)では、ACHMMの状態の中で、現在状態となっている状態は、認識結果情報[m*,sm* t]を構成する最大尤度モジュール#m*のモジュールインデクスと、その最大尤度モジュール#m*であるHMMの状態のうちのいずれかの状態sm* tのインデクスとによって特定されるが、以下では、ACHMMの状態すべての中の現在状態(となっている状態)を、認識結果情報[m*,sm* t]のsm* tだけを用いて、状態sm* tとも表す。
プランニング部81は、結合HMMにおいて、認識部74からの現在状態sm* tから、目標状態までの状態遷移の尤度が最大の状態の系列である最尤状態系列を、現在状態sm* tから目標状態に辿り着くプランとして求めるプランニングを行う。
プランニング部81は、プランニングによって求めたプランを、アクションコントローラ82に供給する。
なお、ここでは、プランニングに用いる現在状態として、ACHMMを用いた現在時刻tの観測値otの認識の結果得られる、最大尤度モジュール#m*において、状態確率が最大の状態sm* tを採用するが、プランニングに用いる現在状態としては、結合HMMを用いた現在時刻tの観測値otの認識の結果得られる、結合HMMにおいて、状態確率が最大の状態を採用することが可能である。
結合HMMにおいて、状態確率が最大の状態は、結合HMMにおいて、現在時刻tの時系列データOtが観測される尤度が最大の状態遷移が生じる状態系列(最尤状態系列)を、ビタビ法に従って求めたときの、その最尤状態系列の最後の状態となる。
アクションコントローラ82には、プランニング部81から、プランが供給される他、観測時系列バッファ72から、現在時刻tの観測値otが、認識部74から、現在時刻tの観測値otの認識結果情報[m*,sm* t]が、駆動部83から、現在時刻tの観測値otが観測されたときに(直後に)アクチュエータ84に与えられたアクション信号Atが、それぞれ供給される。
アクションコントローラ82は、例えば、ACHMMの学習時等に、各状態遷移について、その状態遷移が生じるときに観測された観測値と、行われたアクションのアクション信号との関係を学習する。
すなわち、アクションコントローラ82は、認識部74からの認識結果情報[m*,sm* t]を用いて、1時刻前の時刻t-1から現在時刻tにかけて生じた状態遷移(1時刻前の時刻t-1の現在状態sm* t-1から、現在時刻tの現在状態sm* tへの状態遷移)(以下、時刻t-1の状態遷移ともいう)を認識する。
さらに、アクションコントローラ82は、時刻t-1の状態遷移と対応付けて、観測時系列バッファ72からの時刻t-1の観測値ot-1と、駆動部83からの時刻t-1のアクション信号At-1とのセット、つまり、時刻t-1の状態遷移が生じるときに観測された観測値ot-1と、行われたアクションのアクション信号At-1とのセットを記憶する。
そして、アクションコントローラ82は、ACHMMの学習の進行とともに、各状態遷移について、その状態遷移が生じるときに観測された観測値と、行われたアクションのアクション信号とのセットを多数収集すると、各状態遷移について、その状態遷移に対応付けられている観測値とアクション信号とのセットを用いて、観測値を入力として、アクション信号を出力する関数であるアクション関数を求める。
すなわち、アクションコントローラ82は、例えば、ある観測値oが、1つのアクション信号Aとのみセットになっている場合は、観測値oに対して、アクション信号Aを出力するアクション関数を求める。
また、アクションコントローラ82は、例えば、ある観測値oが、あるアクション信号Aとセットになっていることや、他のアクション信号A'とセットになっていることがある場合には、観測値oとアクション信号Aとのセットの数cと、観測値oと他のアクション信号A'とのセットの数c'とをカウントし、観測値oに対して、c/(c+c')の割合で、アクション信号Aを出力するとともに、c'/(c+c')の割合で、他のアクション信号A'を出力するアクション関数を求める。
アクションコントローラ82は、各状態遷移ついて、アクション関数を求めた後は、プランニング部81から供給されるプランである最尤状態系列の状態遷移を生じさせるために、その状態遷移についてのアクション関数に、観測時系列バッファ72からの観測値otを入力として与えることで、アクション関数が出力するアクション信号を、エージェントが次に行うべきアクションのアクション信号として求める。
そして、アクションコントローラ82は、そのアクション信号を、駆動部83に供給する。
駆動部83は、アクションコントローラ82からアクション信号が供給されない場合、すなわち、アクションコントローラ82において、アクション関数が、まだ求められていない場合には、例えば、あらかじめ定められたルールに従ったアクション信号を、アクチュエータ84に供給することで、アクチュエータ84を駆動する。
すなわち、あらかじめ定められたルールには、例えば、各値の観測値が観測されたときに、エージェントを移動させる方向が規定されており、駆動部83は、ルールに規定されている方向の移動のアクションを行うためのアクション信号を、アクチュエータ84に供給する。
なお、駆動部83は、あらかじめ定められたルールに従ったアクション信号を、アクチュエータ84の他、アクションコントローラ82にも供給する。
また、駆動部83は、アクションコントローラ82からアクション信号が供給される場合には、そのアクション信号を、アクチュエータ84に供給することで、アクチュエータ84を駆動する。
アクチュエータ84は、例えば、エージェントを移動させる車輪や足を駆動するモータ等であり、駆動部83からのアクション信号に従って駆動する。
[アクション関数を求める学習の処理]
図29は、図28のアクションコントローラ82が、アクション関数を求める学習の処理を説明するフローチャートである。
ステップS161において、アクションコントローラ82は、観測時系列バッファ72から、現在時刻tの(最新の)観測値otが供給されるのを待って、その観測値otを受信し、処理は、ステップS162に進む。
ステップS162では、アクションコントローラ82は、認識部74が、観測値otに対して、その観測値otの認識結果情報[m*,sm* t]を出力するのを待って、その認識結果情報[m*,sm* t]を受信し、処理は、ステップS163に進む。
ステップS163では、アクションコントローラ82は、1時刻前のステップS161で観測時系列バッファ72から受信した観測値(以下、前回の観測値ともいう)ot-1と、1時刻前の後述するステップS164で駆動部83から受信したアクション信号(以下、前回のアクション信号ともいうAt-1とのセットを、1時刻前のステップS162で認識部74から受信した認識結果情報[m*,sm* t-1]から特定される1時刻前の現在状態(以下、前回の状態ともいう)sm* t-1から、直前のステップS162で認識部74から受信した認識結果情報[m*,sm* t]から特定される現在状態sm* tへの状態遷移(時刻t-1の状態遷移)と対応付け、アクション関数の学習用のデータ(以下、アクション学習データともいう)として、一時記憶する。
その後、駆動部83から、アクションコントローラ82に対して、現在時刻tのアクション信号Atが供給されるのを待って、処理は、ステップ163からステップS164に進み、アクションコントローラ82は、駆動部83があらかじめ定められたルールに従って出力する現在時刻tのアクション信号Atを受信して、処理は、ステップS165に進む。
ステップS165では、アクションコントローラ82は、アクション関数を求めるのに十分な数(例えば、あらかじめ定められた数)のアクション学習データが得られたかどうかを判定する。
ステップS165において、また、十分な数のアクション学習データが得られていないと判定された場合、処理は、ステップS161に戻り、以下、同様の処理が繰り返される。
また、ステップS165において、十分な数のアクション学習データが得られたと判定された場合、処理は、ステップS166に進み、アクションコントローラ82は、各状態遷移について、その状態遷移と対応付けられて、アクション学習データにおいてセットになっている観測値とアクション信号とを用いて、観測値を入力として、アクション信号を出力するアクション関数を求め、処理は、終了する。
[アクション制御処理]
図30は、図28のプランニング部81、アクションコントローラ82、駆動部83、及び、アクチュエータ84が行う、エージェントのアクションを制御するアクション制御処理を説明するフローチャートである。
ステップS171において、プランニング部81は、HMM構成部77から供給される結合HMMの状態のうちの1つの状態が、目標状態#g(インデクスがgの状態)として与えられるのを待って、その目標状態#gを受信し、処理は、ステップS172に進む。
ステップS172では、プランニング部81は、観測時系列バッファ72から現在時刻tの観測値otが供給されるのを待って、その観測値otを受信し、処理は、ステップS173に進む。
ステップS173では、プランニング部81、及び、アクションコントローラ82は、認識部74が、観測値otに対する認識結果情報[m*,sm* t]を出力するのを待って、その認識結果情報[m*,sm* t]を受信し、現在状態sm* tを特定する。
そして、処理は、ステップS173からステップS174に進み、プランニング部81は、現在状態sm* tが、目標状態#gに一致するかどうかを判定する。
ステップS174において、現在状態sm* tが、目標状態#gに一致しないと判定された場合、処理は、ステップS175に進み、プランニング部81は、HMM構成部77から供給される結合HMMにおいて、現在状態sm* tから、目標状態#gまでの状態遷移の尤度が最大の状態系列(最尤状態系列)を、現在状態sm* tから目標状態#gに辿り着くプランとして求めるプランニングの処理(プランニング処理)を、例えば、ビタビ法に従って行う。
プランニング部81は、プランニング処理によって求めたプランを、アクションコントローラ82に供給し、処理は、ステップS175からステップS176に進む。
なお、プランニング処理では、プランが得られない場合があり得る。プランが得られない場合、プランニング部81は、その旨を、アクションコントローラ82に供給する。
ステップS176では、アクションコントローラ82は、プランニング処理によって、プランが得られたかどうかを判定する。
ステップS176において、プランが得られなかったと判定された場合、すなわち、プランニング部81からアクションコントローラ82に対して、プランが供給されなかった場合、処理は、終了する。
また、ステップS176において、プランが得られたと判定された場合、すなわち、プランニング部81からアクションコントローラ82に対して、プランが供給された場合、処理は、ステップS177に進み、アクションコントローラ82は、プランの最初の状態遷移、すなわち、プランにおける、現在状態sm* tから、その次の状態への情勢遷移についてのアクション関数に対して、観測時系列バッファ72からの観測値otを入力として与えることで、アクション関数が出力するアクション信号を、エージェントが次に行うべきアクションのアクション信号として求める。
そして、アクションコントローラ82は、そのアクション信号を、駆動部83に供給し、処理は、ステップS177からステップS178に進む。
ステップS178では、駆動部83は、アクションコントローラ82からアクション信号を、アクチュエータ84に供給することで、アクチュエータ84を駆動し、処理は、ステップS172に戻る。
以上のように、アクチュエータ84が駆動されることで、エージェントは、移動環境内を、目標状態#gに対応する位置に向って移動するアクションを行う。
一方、ステップS174において、現在状態sm* tが、目標状態#gに一致すると判定された場合、すなわち、例えば、エージェントが、移動環境内を移動し、目標状態#gに対応する位置に辿り着いた場合、処理は、終了する。
なお、図30のアクション制御処理では、最新の観測値otが得られるごとに(ステップS172)、つまり、時刻tごとに、現在状態sm* tが、目標状態#gに一致するかどうかを判定し(ステップS174)、現在状態sm* tが、目標状態#gに一致しない場合には、プランニング処理を行って、プランを得るようにしたが(ステップS175)、プランニング処理は、時刻tごとではなく、目標状態#gが与えられたときの1回だけ行い、その後は、アクションコントローラ82において、1回のプランニング処理によって得られるプランの最初の状態から最後の状態までの状態遷移を生じさせるアクション信号を出力するようにすることが可能である。
図31は、図30のステップS175のプランニング処理を説明するフローチャートである。
なお、図31のプランニング処理では、現在状態sm* tから目標状態#gまでの最尤状態系列を、ビタビ法(を応用したアルゴリズム)に従って求めるが、最尤状態系列を求める方法は、ビタビ法に限定されるものではない。
ステップS181において、プランニング部81(図28)は、HMM構成部77からの結合HMMの状態のうちの、認識部74からの認識結果情報[m*,sm* t]から特定される現在状態sm* tの状態確率に、初期値としての1.0をセットする。
さらに、プランニング部81は、結合HMMの状態のうちの、現在状態sm* t以外の状態の状態確率に、初期値としての0.0をセットし、最尤状態系列の時刻を表す変数τに、初期値としての0をセットして、処理は、ステップS181からステップS182に進む。
ステップS182では、プランニング部81は、結合HMMの状態遷移確率aU ijのうちの、所定の閾値(例えば、0.01等)以上の状態遷移確率aU ijに、高い確率としての、例えば、0.9をセットするとともに、他の状態遷移確率aU ijに、低い確率としての、例えば、0.0をセットする。
ステップS182の後、処理は、ステップS183に進み、プランニング部81は、結合HMMの各状態#j(インデクスがjの状態)について、時刻τの各状態#iの状態確率と、状態遷移確率aU ijとを乗算し、その結果得られる乗算値の最大値を、時刻τ+1の状態#jの状態確率にセットする。
すなわち、プランニング部81は、状態#jについて、時刻τの各状態#iを遷移元の状態として、状態#jに状態遷移したときに、状態#jの状態確率を最大にする状態遷移を検出し、その状態遷移の遷移元の状態#iの状態確率と、その状態遷移の状態遷移確率aU ijとの乗算値を、時刻τ+1の状態#jの状態確率とする。
その後、処理は、ステップS183からステップS184に進み、プランニング部81は、時刻τ+1の各状態#jについて、遷移元の状態#iを、内蔵するメモリである状態系列バッファ(図示せず)に記憶し、処理は、ステップS185に進む。
ステップS185では、プランニング部81は、(時刻τ+1の)目標状態#gの状態確率が、0.0を超える値になったかどうかを判定する。
ステップS185において、目標状態#gの状態確率が、0.0を超える値になっていないと判定された場合、処理は、ステップS186に進み、プランニング部81は、プランとして求める最尤状態系列の長さの閾値として、あらかじめ設定された値に相当する所定の回数だけ、遷移元の状態#iを、状態系列バッファに記憶したかどうかを判定する。
ステップS186において、遷移元の状態#iを、所定の回数だけ、状態系列バッファに、まだ記憶していないと判定された場合、処理は、ステップS187に進み、プランニング部81は、時刻τを1だけインクリメントする。そして、処理は、ステップS187からステップS183に戻り、以下、同様の処理が繰り返される。
また、ステップS186において、遷移元の状態#iを、所定の回数だけ、状態系列バッファに記憶したと判定された場合、すなわち、現在状態sm* tから目標状態#gまでの最尤状態系列の長さが、閾値以上となる場合、処理は、リターンする。
なお、この場合、プランニング部81は、プランが得られない旨を、アクションコントローラ82に供給する。
一方、ステップS185において、目標状態#gの状態確率が、0.0を超える値になっていると判定された場合、処理は、ステップS188に進み、プランニング部81は、目標状態#gを、現在状態sm* tから目標状態#gまでの最尤状態系列の時刻τの状態に選択して、処理は、ステップS189に進む。
ステップS189では、プランニング部81は、最尤状態系列の状態遷移の遷移先の状態#j(時刻τの状態#j)として、目標状態#gをセットし、処理は、ステップS190に進む。
ステップS190では、プランニング部81は、時刻τの状態#jへの状態遷移の遷移元の状態#iを、状態系列バッファから検出し、最尤状態系列の時刻τ-1の状態に選択して、処理は、ステップS191に進む。
ステップS191では、プランニング部81は、時刻τを1だけデクリメントして、処理は、ステップS192に進む。
ステップS192では、プランニング部81は、時刻τが0であるかどうかを判定する。
ステップS192において、時刻τが0でないと判定された場合、処理は、ステップS193に進み、プランニング部81は、最尤状態系列の状態遷移の遷移先の状態#j(時刻τの状態#j)として、直前のステップS190で最尤状態系列の状態に選択された状態#iをセットし、処理は、ステップS190に戻る。
また、ステップS192において、時刻τが0であると判定された場合、すなわち、現在状態sm* tから目標状態#gまでの最尤状態系列が得られた場合、プランニング部81は、その最尤状態系列を、プランとして、アクションコントローラ82(図28)に供給して、処理は、リターンする。
図32は、図28のエージェントによるACHMMの学習の概要を説明する図である。
エージェントは、移動環境内を適宜移動し、そのときに、センサ71を通じて得られる、移動環境から観測される観測値を用いて、ACHMMの学習を行うことにより、移動環境の地図を、ACHMMによって獲得する。
ここで、移動環境の地図を獲得したACHMMを用いた認識(状態認識)によって得られる現在状態sm* tは、移動環境内のエージェントの現在地に対応する。
図33は、図28のエージェントによる結合HMMの再構成の概要を説明する図である。
エージェントは、例えば、ACHMMの学習がある程度進行した後に、目標状態が与えられると、ACHMMから結合HMMを再構成する。そして、エージェントは、結合HMMを用いて、現在状態sm* tから目標状態#gまでの最尤状態系列であるプランを求める。
なお、ACHMMからの結合HMMの再構成は、目標状態が与えられた場合の他、例えば、周期的なタイミングや、ACHMMのモデルパラメータが更新される等のイベントが生じたタイミング等の任意のタイミングで行うことができる。
図34は、図28のエージェントによるプランニングの概要を説明する図である。
エージェントは、上述したように、結合HMMを用いて、現在状態sm* tから目標状態#gまでの最尤状態系列であるプランを求める。
エージェントは、プランに従い、そのプランの状態遷移を生じさせるアクション信号を、各状態遷移について求めておいたアクション関数に従って出力する。
これにより、結合HMMでは、プランとしての最尤状態系列が得られる状態遷移が生じ、エージェントは、移動環境内の、現在状態sm* tに対応する現在地から、目標状態#gに対応する位置まで移動する。
以上のようなACHMMによれば、HMMの構造や初期値をあらかじめ決定することができない未知のモデル化対象の構造学習問題に対して、HMMを利用することが可能となる。特に、大規模なHMMの構造を、適切に決定し、かつ、HMMパラメータを推定することが可能となる。さらに、HMMパラメータの再推定の計算や、状態認識の計算を効率化することが可能となる。
また、ACHMMを、自律発達するエージェントに搭載することにより、エージェントは、エージェントがおかれた移動環境内を動き、経験を積んでいく過程で、適宜、ACHMMが既に有する既存のモジュールの学習や、必要な新規モジュールの追加を繰り返し、その結果、移動環境の規模や構造についての事前知識なしで、移動環境の規模に適したモジュール数で構成される、移動環境の状態遷移モデルとしてのACHMMが構築される。
なお、ACHMMは、移動型ロボット等の、自律的にアクションを行うことができるエージェントの他、システムの同定、制御、人工知能等におけるモデル学習に広く応用することができる。
<第2実施の形態>
上述したように、ACHMMを、自律的にアクションを行うエージェントに適用し、エージェントにおいて、移動環境から観測される観測値の時系列を用いて、ACHMMの学習をすることにより、移動環境の地図を、ACHMMによって獲得することができる。
さらに、エージェントにおいて、ACHMMから結合HMMを再構成し、その結合HMMを用いて、現在状態sm* tから目標状態#gまでの最尤状態系列であるプランを求め、そのプランに従ったアクションを行うことにより、エージェントは、移動環境内の、現在状態sm* tに対応する位置から、目標状態#gに対応する位置まで移動することができる。
ところで、ACHMMから再構成された結合HMMにおいては、実際にはありえない状態遷移が、あたかも確率的に可能なように表現されることがある。
すなわち、図35は、移動環境内を移動するエージェントによるACHMMの学習と、結合HMMの再構成との例を示す図である。
エージェントは、移動環境から観測される観測値の時系列を用いて、ACHMMの学習をすることにより、移動環境の構造(地図)を、状態ネットワーク(モジュールであるHMM)と、モジュール(の状態)の間の状態遷移を表す遷移情報として獲得することができる。
図35では、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を用いて、プランを求めることができる。
図36は、移動環境内を移動するエージェントによるACHMMの学習と、結合HMMの再構成との他の例を示す図である。
図36では、ACHMMは、5個のモジュールAないしEから構成されている。
さらに、図36では、モジュールAは、移動環境の位置PAを中心とする局所的な領域の構造と、位置PA'を中心とする局所的な領域の構造とを獲得している。
また、モジュールBは、移動環境の位置PBを中心とする局所的な領域の構造と、移動環境の位置PB'を中心とする局所的な領域の構造とを獲得している。
さらに、モジュールC,D,Eは、移動環境の位置PC,PD,PEを中心とする局所的な領域の構造を、それぞれ獲得している。
すなわち、図36の移動環境を、ある程度の粒度で巨視的に見ると、位置PAを中心とする局所的な領域(部屋)と、位置PA'を中心とする局所的な領域とは、構造が一致(又は類似)している。
さらに、位置PBを中心とする局所的な領域と、移動環境の位置PB'を中心とする局所的な領域の構造とも、構造が一致している。
図36の移動環境を対象としたACHMMの学習では、ACHMMの利点が生かされ、構造が一致する、位置PAを中心とする局所的な領域と、位置PA'を中心とする局所的な領域とについては、構造が、1つのモジュールAで獲得されている。
さらに、構造が一致する、位置PBを中心とする局所的な領域と、位置PB'を中心とする局所的な領域とについても、構造が、1つのモジュールBで獲得されている。
以上のように、ACHMMでは、位置が異なる領域であっても、構造が一致する、複数の局所的な領域については、構造(局所構造)が、1つのモジュールで獲得される。
すなわち、ACHMMの学習では、ACHMMのあるモジュールが既に獲得している構造と同一の局所構造が、将来的に(その後に)観測された場合には、その局所構造については、新規モジュールで学習(獲得)するのではなく、その局所構造と同一の構造を獲得しているモジュールを、いわば使い回して、追加的に学習が行われる。
以上のように、ACHMMの学習では、モジュールの使い回しが行われるため、ACHMMから再構成される結合HMMにおいて、実際にはありえない状態遷移が、あたかも確率的に可能なように表現されることがある。
すなわち、図36において、ACHMMから再構成される結合HMMでは、モジュールBの(状態であった)状態については、モジュールCの状態との間の状態遷移(状態遷移確率が0.0(0.0とみなすことができる0.0に近い値を含む)でない状態遷移)も、モジュールEの状態との間の状態遷移も、いずれの状態遷移も生じうる。
しかしながら、図36では、位置PBを中心とする局所的な領域(以下、位置PBの局所領域ともいう)から、位置PCの局所領域(部屋)へは、直接的に移動することができるが、位置PEの局所領域へは、直接的に移動することができず、位置PCの局所領域を通らなければ、移動することができない。
また、位置PB'の局所領域から、位置PEの局所領域へは、直接的に移動することができるが、位置PCの局所領域へは、直接的に移動することができず、位置PEの局所領域を通らなければ、移動することができない。
一方、図36では、エージェントが、位置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の状態への状態遷移は、生じえない。
また、上述のように、異なる位置の局所領域であるが、構造が同一の複数の局所領域の構造が、1つのモジュールで獲得されるACHMMを用いた(状態)認識の結果得られる状態(現在状態)や、その状態を有するモジュール(最大尤度モジュール)のインデクスを、(外部から観測することができる)観測値として出力する場合には、異なる複数の局所領域に対して、同一の観測値が出力されるので、パーセプチャルエイリアシング(perceptual aliasing)の問題が生じる。
すなわち、図37は、図36と同一の移動環境内を、エージェントが、位置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とを階層構造に接続する方法がある。
図38は、下位ACHMMと上位ACHMMとを階層構造に接続した、2階層の階層構造のACHMMを説明する図である。
図38において、下位ACHMMでは、移動環境から観測される観測値を学習する。さらに、下位ACHMMでは、移動環境から観測される観測値が認識され、その認識結果としての、下位ACHMMのモジュールのうちの、最大尤度モジュールのモジュールインデクスが、時系列に出力される。
上位ACHMMでは、下位ACHMMが出力するモジュールインデクスを、観測値として、下位ACHMMと同様の学習が行われる。
ここで、図38では、上位ACHMMは、1個のモジュールから構成され、その1個のモジュールであるHMMは、7個の状態#1,2,3,4,5,6,7を有する。
上位ACHMMのモジュールであるHMMでは、下位ACHMMが出力するモジュールインデクスの時間的な前後関係によって、エージェントが、位置PAの局所領域にいる場合と、位置PA'の局所領域にいる場合とを、異なる状態として獲得することができる。
その結果、上位ACHMMでの認識により、エージェントが、位置PAの局所領域にいるのか、又は、位置PA'の局所領域にいるのかを特定することができる。
ところで、上位ACHMMにおいて、その上位ACHMMでの認識の結果を、(外部から観測することができる)観測値として出力する場合、やはり、パーセプチャルエイリアシングの問題が生じうる。
すなわち、階層構造のACHMMの階層数を、幾つに設定しても、その階層数が、モデル化対象としての移動環境の規模や構造に適切な数に至っていない場合には、パーセプチャルエイリアシングの問題が生じうる。
図39は、エージェントの移動環境の例を示す図である。
図39の移動環境においては、局所領域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と同様に、階層数やモジュール数をあらかじめ決定することが困難な未知のモデル化対象のモデル化に適切なモデルではない。
[学習装置の構成例]
そこで、図40は、本発明の情報処理装置を適用した学習装置の第2実施の形態の構成例を示すブロック図である。
なお、図中、図1の場合と対応する部分については、同一の符号を付してあり、以下では、その説明は、適宜省略する。
図40の学習装置では、モデル化対象のモデル化に用いる学習モデルとして、ACHMMを基本構成要素とするユニットを階層的に連結(接続)する階層アーキテクチャである階層ACHMMを採用する。
階層ACHMMの採用により、階層を下層から上層へあがるにつれ、状態遷移モデル(HMM)の時空間粒度が粗くなる特徴を持つため、実世界事象のように階層的かつ共通局所構造を多数内在する系に対して、記憶効率、学習効率ともに優れた学習が可能となる。
すなわち、階層ACHMMによれば、モデル化対象から繰り返し観測される(異なる位置等の)同一の局所構造は、各階層のACHMMにより同一モジュールで学習が行われるため、記憶効率、学習効率が優れた学習が可能となる。
なお、同一の局所構造の異なる位置は、一段巨視的に見た時に、状態を分けて表現されるべきであるが、階層ACHMMでは、一段上位の階層のACHMMにより状態分割される。
図40において、学習装置は、センサ11、観測時系列バッファ12、及び、ACHMM階層処理部101を含む。
ACHMM階層処理部101は、ACHMMを含む、後述するACHMMユニットを生成し、さらに、ACHMMユニットを、階層構造に接続して、階層ACHMMを構成する。
そして、階層ACHMMでは、観測時系列バッファ12から供給される観測値の時系列(時系列データOtを用いた学習が行われる。
図41は、図40のACHMM階層処理部101の構成例を示すブロック図である。
ACHMM階層処理部101は、上述したように、ACHMMユニットを生成し、ACHMMユニットを、階層構造に接続して、階層ACHMMを構成する。
図41では、3個のACHMMユニット111,111、及び、111が生成され、ACHMMユニット111,111、及び、111を、それぞれ、最下位層、最下位層から2番目の階層、及び、最上位層(ここでは、最下位層から3番目の階層)のACHMMユニットとして、階層ACHMMが構成されている。
ACHMMユニット111は、第h階層(最下位層から最上位層に向かって、h番目の階層)のACHMMユニットであり、入力バッファ制御部121、ACHMM処理部122、及び、出力バッファ制御部123を含む。
入力バッファ制御部121には、観測時系列バッファ12(図40)から観測値が、又は、ACHMMユニット111の1階層だけ下位の階層のACHMMユニット111h−1(ACHMMユニット111に接続されたACHMMユニット111h−1)からACHMMの認識結果情報が、外部から供給される観測値として供給される。
入力バッファ制御部121は、入力バッファ121Aを内蔵する。入力バッファ制御部121は、外部から供給される観測値を、入力バッファ121Aに一時記憶し、その入力バッファ121Aに記憶された観測値の時系列を、ACHMMに与える入力データとして、ACHMM処理部122に出力する入力制御を行う。
ACHMM処理部122は、入力バッファ制御部121からの入力データを用いたACHMMの学習(モジュール学習)、及び、ACHMMを用いた入力データの認識等の、ACHMMを用いた処理(以下、ACHMM処理ともいう)を行う。
また、ACHMM処理部122は、ACHMMを用いた入力データの認識の結果得られる認識結果情報を、出力制御部123に供給する。
出力制御部123は、出力バッファ123Aを内蔵する。出力制御部123は、ACHMM処理部122から供給される認識結果情報を、出力バッファ123Aに一時記憶し、その出力バッファ123Aに記憶された認識結果情報を、(ACHMMユニット111の)外部に出力する出力データとして出力する出力制御を行う。
出力制御部123が出力データとして出力する認識結果情報は、ACHMMユニット111の1階層だけ上位のACHMMユニット111h+1(ACHMMユニット111に接続されたACHMMユニット111h+1)に供給される。
図42は、図41のACHMMユニット111のACHMM処理部122の構成例を示すブロック図である。
ACHMM処理部122は、モジュール学習部131、認識部132、遷移情報管理部133、ACHMM記憶部134、及び、HMM構成部135を含む。
モジュール学習部131ないしHMM構成部135は、図1の学習装置のモジュール学習部13ないしHMM構成部17とそれぞれ同様に構成される。
したがって、ACHMM処理部122では、図1のモジュール学習部13ないしHMM構成部17で行われる処理と同様の処理が行われる。
但し、ACHMM処理部122には、モジュール学習部131によるACHMMの学習、及び、認識部132によるACHMMを用いた認識のために、ACHMMに与える時系列データである入力データが、入力データ制御部121(の入力バッファ121A)から供給される。
すなわち、ACHMMユニット111が、最下位層のACHMMユニット111である場合、入力バッファ制御部121には、観測時系列バッファ12(図40)から観測値が、外部から供給される観測値として供給される。
入力バッファ制御部121は、外部から供給される観測値としての、観測時系列バッファ12(図40)からの観測値を、入力バッファ121Aに一時記憶する。
そして、入力バッファ制御部121は、入力バッファ121Aに、最新の観測値である時刻tの観測値otを記憶すると、時刻tから、ウインドウ長Wである過去W時刻分の観測値の時系列である時刻tの時系列データOt={ot-W+1,・・・,ot}を、入力データとして、入力バッファ121Aから読み出し、ACHMM処理部122のモジュール学習部131、及び、認識部132に供給する。
また、ACHMMユニット111が、最下位層のACHMMユニット111以外のACHMMユニットである場合、入力バッファ制御部121には、ACHMMユニット111の1階層だけ下位の階層のACHMMユニット(以下、下位ユニットともいう)111h−1から認識結果情報が、外部から供給される観測値として供給される。
入力バッファ制御部121は、外部から供給される観測値としての、下位ユニット111h−1からの観測値を、入力バッファ121Aに一時記憶する。
そして、入力バッファ制御部121は、入力バッファ121Aに、最新の観測値が記憶されると、その最新の観測値を含む過去Lサンプル(時刻)分のL個の観測値の時系列である時系列データO={o1,・・・,oL}を、入力データとして、入力バッファ121Aから読み出し、ACHMM処理部122のモジュール学習部131、及び、認識部132に供給する。
なお、1個のACHMMユニット111にだけ注目し、時系列データO={o1,・・・,oL}において、最新の観測値oLを、時刻tの観測値otと考えると、時系列データO={o1,・・・,oL}は、時刻tから、過去L時刻分の観測値の時系列である時刻tの時系列データOt={ot-L+1,・・・,ot}であるということができる。
ここで、最下位層以外の階層のACHMMユニット111では、入力データである時系列データOt={ot-L+1,・・・,ot}の長さLは、可変長である。
ACHMM処理部122のACHMM記憶部134には、図1のACHMM記憶部16と同様に、HMMをモジュールとするACHMMが記憶される。
但し、最下位層のACHMMユニット111では、モジュールであるHMMとしては、入力データとなる観測値、すなわち、センサ11が出力する観測値が、連続値、又は、離散値であることに応じて、それぞれ、連続HMM、又は、離散HMMが採用される。
一方、最下位層以外の階層のACHMMユニット111では、入力データとなる観測値が、下位ユニット111h−1からの認識結果情報であり、離散値であるため、ACHMMのモジュールであるHMMとしては、離散HMMが採用される。
また、ACHMM処理部122では、認識部132による、ACHMMを用いた入力データの認識の結果得られる認識結果情報が、遷移情報管理部133の他、出力制御部123(の出力バッファ123A)にも供給される。
但し、認識部132は、時刻tの入力データである観測値の時系列のうちの、最新の観測値、つまり、時刻tの観測値の認識結果情報を、出力制御部123に供給する。
すなわち、認識部132は、ACHMM記憶部134に記憶された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]を、認識結果情報として、出力制御部123に供給する。
なお、入力データOを、O={o1,・・・,oL}と表す場合、その入力データに対する最尤状態系列を、Sm*={sm* 1,・・・,sm* L}と表し、最新の観測値oLの認識結果情報を、[m*,sm* L]と表す。
認識部132では、最大尤度モジュール#m*と、その最大尤度モジュール#m*における最尤状態系列Sm*={sm* 1,・・・,sm* L}の最後の状態sm* Lとのインデクスのセット[m*,sm* L]を、認識結果情報として、出力制御部123に供給する他、最大尤度モジュール#m*のインデクス(モジュールインデクス)[m*]だけを、認識結果情報として、出力制御部123に供給することができる。
ここで、最大尤度モジュール#m*と、状態sm* Lとのインデクスのセット[m*,sm* L]である2次元のシンボルの認識結果情報を、タイプ1の認識結果情報ともいい、最大尤度モジュール#m*のモジュールインデクス[m*]だけの1次元のシンボルの認識結果情報を、タイプ2の認識結果情報ともいう。
上述したように、出力制御部123は、ACHMM処理部122(の認識部132)から供給される認識結果情報を、出力バッファ123Aに一時記憶する。そして、出力制御部123は、所定の出力条件が満たされるときに、出力バッファ123Aに記憶された認識結果情報を、(ACHMMユニット111の)外部に出力する出力データとして出力する。
出力制御部123が出力データとして出力する認識結果情報は、ACHMMユニット111の1階層だけ上位のACHMMユニット(以下、上位ユニットともいう)111h+1に供給される。
上位ユニット111h+1の入力制御部121では、ACHMMユニット111の場合と同様に、下位ユニット111からの出力データとしての認識結果情報が、外部から供給される観測値として、入力バッファ121Aに記憶される。
そして、上位ユニット111h+1では、その上位ユニット111h+1の入力制御部121の入力バッファ121Aに記憶された観測値の時系列を、入力データとして、ACHMM処理(ACHMMの学習(モジュール学習)、及び、ACHMMを用いた入力データの認識等の、ACHMMを用いた処理)が行われる。
[出力データの出力制御]
図43は、図42の出力制御部123による出力データの出力制御の第1の方法(第1の出力制御方法)を説明する図である。
第1の出力制御方法では、出力制御部123は、ACHMM処理部122(の認識部132)から供給される認識結果情報を、出力バッファ123Aに一時記憶し、あらかじめ設定されたタイミングの認識結果情報を、出力データとして出力する。
すなわち、第1の出力制御方法では、あらかじめ設定されたタイミングの認識結果情報であることを、出力データの出力条件として、そのあらかじめ設定されたタイミングとしての、例えば、あらかじめ設定されたサンプリング間隔ごとのタイミングの認識結果情報が、出力データとして出力される。
図43は、サンプリング間隔Tとして、T=5を採用した場合の第1の出力制御方法を示している。
この場合、出力制御部123は、ACHMM処理部122から供給される認識結果情報を、出力バッファ123Aに一時記憶し、直前に出力データとして出力した認識結果情報から、5個だけ後の認識結果情報を、出力データとして出力することを繰り返す。
第1の出力制御方法によれば、以上のようなT=5個おきの認識結果情報である出力データが、上位ユニットに供給される。
なお、図43では(後述する図44、図46、及び、図47でも同様)、図が煩雑になるのを避けるため、認識結果情報として、1次元のシンボルを採用している。
図44は、図42の出力制御部123による出力データの出力制御の第2の方法(第2の出力制御方法)を説明する図である。
第2の出力制御方法では、出力制御部123は、ACHMM処理部122(の認識部132)から供給される認識結果情報を、出力バッファ123Aに一時記憶し、最新の認識結果情報が、前回の認識結果情報と一致しないことを、出力データの出力条件として、最新の認識結果情報が、前回の認識結果情報と一致しない場合に、最新の認識結果情報を、出力データとして出力する。
したがって、第2の出力制御方法では、ある時刻に出力データとして出力した認識結果情報と同一の認識結果情報が連続する場合には、その同一の認識結果情報が連続する限りは、出力データは出力されない。
また、第2の出力制御方法では、各時刻の認識結果情報が、直前の時刻の認識結果情報と異なる場合には、各時刻の認識結果情報が、出力データとして出力される。
第2の出力制御方法によれば、以上のようにして、同一の認識結果情報が連続しない出力データが、上位ユニットに供給される。
なお、出力制御部123が、第2の出力制御方法により、出力データを出力する場合に、その出力データの供給を受けて、上位ユニットが行うACHMMの学習は、例えば、図40の学習装置を適用したエージェントが、アクションを行うことによって、センサ11が出力するセンサ信号である観測値が変化することに起因して生じるACHMMの状態遷移を、イベントとして捉え、イベントの切り替わりを単位時間として、時系列構造学習を行うことに相当し、実世界の事象を効率良く構造化するのに適している。
第1及び第2の出力制御方法のいずれによっても、ACHMM処理部122で得られた認識結果情報は、その幾つかを間引いて(時間的な粒度を粗くして)、出力データとして、上位ユニットに供給される。
そして、上位ユニットでは、出力データとして供給される認識結果情報を、入力データとして用いて、ACHMM処理を行う。
ところで、上述したタイプ1の認識結果情報は、最大尤度モジュール#m*における、最尤状態系列の最後の状態sm* Lが異なれば、異なる情報となるが、タイプ2の認識結果情報は、最大尤度モジュール#m*の最尤状態系列の最後の状態sm* Lが異なっていても、タイプ1の認識結果情報のように、異なる情報にはならず、最大尤度モジュール#m*の状態の違いには不感の情報である。
このため、下位ユニット111が、タイプ2の認識結果情報を、出力データとして出力する場合、タイプ1の認識結果情報を、出力データとして出力する場合に比較して、上位ユニット111h+1が、ACHMMの学習によって自己組織的に獲得する状態の粒度(モジュールであるHMMの状態に対応する、観測空間において観測値をクラスタリングするクラスタの粒度)は、粗くなる。
図45は、下位ユニット111が、タイプ1、及び2のそれぞれの認識結果情報を、出力データとして出力する場合の、上位ユニット111h+1が、ACHMMの学習によって獲得する、モジュールとしてのHMMの状態の粒度を説明する図である。
なお、ここでは、説明を簡単にするために、下位ユニット111は、第1及び第2の出力制御方法のうちの、第1の出力制御方法によって、あるサンプリング間隔Tごとの認識結果情報を、出力データとして、上位ユニット111h+1に供給することとする。
下位ユニット111の出力制御部123が、タイプ1の認識結果情報を、出力データとして出力する場合、上位ユニット111h+1が、ACHMMの学習によって獲得する、モジュールとしてのHMMの状態の粒度は、下位ユニット111が、ACHMMの学習によって獲得する、モジュールとしてのHMMの状態の粒度の、サンプリング間隔T倍だけ粗い粒度になる。
図45には、サンプリング間隔Tが、例えば、3である場合の、下位ユニット111におけるHMMの状態の粒度と、上位ユニット111h+1におけるHMMの状態の粒度とを、模式的に示してある。
タイプ1の認識結果情報を採用する場合、例えば、最下位層のACHMMユニット111が、図40の学習装置を適用したエージェントがおかれた移動環境から観測される観測値の時系列を用いて、ACHMM処理を行うときには、ACHMMユニット111の上位ユニット111におけるHMMの状態は、その下位ユニットであるACHMMユニット111におけるHMMが対応する局所領域の3倍の広さの領域に対応する。
一方、下位ユニット111の出力制御部123が、タイプ2の認識結果情報を、出力データとして出力する場合、上位ユニット111h+1におけるHMMの状態の粒度は、上述のタイプ1の認識結果情報を採用する場合の、さらに、モジュールであるHMMの状態数N倍になる。
すなわち、タイプ2の認識結果情報を採用する場合、上位ユニット111h+1におけるHMMの状態の粒度は、下位ユニット111におけるHMMの状態の粒度の、T×N倍だけ粗い粒度になる。
したがって、タイプ2の認識結果情報を採用する場合、サンプリング間隔Tが、例えば、上述したように、3であり、モジュールであるHMMの状態数Nが、例えば、5であるとすると、上位ユニット111h+1におけるHMMの状態の粒度は、下位ユニット111におけるHMMの状態の粒度の15倍だけ粗い粒度になる。
[入力データの入力制御]
図46は、図42の入力制御部121による入力データの入力制御の第1の方法(第1の入力制御方法)を説明する図である。
第1の入力制御方法では、入力制御部121は、外側から供給される観測値としての、下位ユニット(の出力制御部123)から、上述の第1若しくは第2の出力制御方法によって供給される出力データである認識結果情報(又は、センサ11から観測時系列バッファ12を介して供給される観測値)を、入力バッファ121Aに一時記憶し、下位ユニットからの最新の出力データを記憶したときに、固定長Lの最新の出力データの時系列を、入力データとして出力する。
図46は、固定長Lを、例えば、3とした場合の、第1の入力制御方法を示している。
入力制御部121は、下位ユニットからの出力データを、外部から供給される観測値として、入力バッファ121Aに一時記憶する。
第1の入力制御方法では、入力制御部121は、下位ユニットからの最新の出力データを、入力バッファ121Aに記憶したときに、その最新の出力データを含む過去Lサンプル(時刻)分のL=3個の出力データの時系列である時系列データO={o1,・・・,oL}を、入力データとして、入力バッファ121Aから読み出し、ACHMM処理部122のモジュール学習部131、及び、認識部132に供給する。
なお、図46では(後述する図47でも同様)、下位ユニットからの出力データが、第2の出力制御方法によって、上位ユニットの入力制御部121に供給されることとしてある。
また、図46では(後述する図47でも同様)、第h階層のACHMMユニット111のACHMM処理部122(図42)を、下付のhを付して、ACHMM処理部122と記載してある。
図47は、図42の入力制御部121による入力データの入力制御の第2の方法(第2の入力制御方法)を説明する図である。
第2の入力制御方法では、入力制御部121は、下位ユニットからの最新の出力データを、入力バッファ121Aに記憶したときに、その最新の出力データから、異なる値の出力データが所定数Lだけ現れるまで(ユニーク(unique)オペレーションした結果の出力データのサンプル数がLとなるまで)、過去に遡った時点の出力データから最新の出力データまでを、入力データとして、入力バッファ121Aから読み出し、ACHMM処理部122のモジュール学習部131、及び、認識部132に供給する。
したがって、入力制御部121からACHMM処理部122に供給される入力データのサンプル数は、第1の入力制御方法によれば、Lサンプルとなるが、第2の入力制御方法によれば、Lサンプル以上の可変の値となる。
なお、最下位層のACHMMユニット111において、第1の入力制御方法が採用される場合には、固定長Lとしては、ウインドウ長Wが採用される。
また、出力データとしての認識結果情報が、最大尤度モジュール#m*と、状態sm* Lとのインデクスのセット[m*,sm* L]であるタイプ1の認識結果情報である場合には、上位ユニット111h+1の入力制御部121は、例えば、図20で説明したように、2次元のシンボルである認識結果情報[m*,sm* t]を、値N×(m*-1)+sm* t等の、下位ユニット111のACHMMを構成するすべてのモジュールについて重複しない1次元のシンボル値に変換し、その1次元のシンボル値を、入力データとして扱う。
ここで、図40の学習装置を、エージェントに適用し、エージェントがおかれた移動環境から観測される観測値を用いて、移動環境の地図を、自己組織的に獲得する場合には、入力制御部121において、第1及び第2の入力制御方法のうちの、第2の入力制御方法を採用することが望ましい。
すなわち、移動環境は、ある方向Dirを移動方向とする、所定の移動量だけの移動m1により、モジュールであるHMMの状態の状態遷移が生じ、方向Dirとは逆の方向を移動方向とする、所定の移動量だけの移動(元に戻る移動)m1'により、状態が元に戻る状態遷移が生じる、いわば可逆な系である。
いま、エージェントが、移動m1及びm1'とは異なる移動m2を行い、その後、移動m1及びm1'を、交互に何度か繰り返し、繰り返しの最後の移動m1'の後に、移動m2に対して戻る移動m2'を行ったとする。
さらに、このような移動によって、下位ユニット111の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]であるタイプ1の認識結果情報を採用することとするが、説明を簡単にするため、認識結果情報[m*,sm* L]のうちの、最大尤度モジュール#m*(のインデクス)は、無視することとする。
さらに、ここでは、説明を簡単にするため、状態遷移"3→2→1→2→1→2→1→2→1→2→1→2→1→2→1→2→3"における状態のインデクスが、そのまますべて、出力データとして、下位ユニット111から上位ユニット111h+1に供給されることとする。
いま、上位ユニット111h+1において、固定長Lを、例えば、3として、第1の入力制御方法を採用したとすると、上位ユニット111h+1の入力制御部121は、まず、"3→2→1"を入力データとし、その後、"2→1→2","1→2→1",・・・,"1→2→1","2→1→2", "1→2→3"を、順次、入力データする。
ここで、説明を簡単にするため、上位ユニット111h+1のACHMMのモジュールであるHMMでは、例えば、入力データ"3→2→1"に対し、その入力データの通りの状態遷移"3→2→1"が生じることとする。
この場合、上位ユニット111h+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を含むその他の状態との間の状態遷移確率が小になる。
一方、上位ユニット111h+1において、固定数Lを、例えば、3として、第2の入力制御方法を採用したとすると、上位ユニット111h+1の入力制御部121は、まず、"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"を、順次、入力データする。
この場合、上位ユニット111h+1での、対象モジュールであるHMMの追加学習では、状態#3から状態#2への状態遷移の状態遷移確率の更新が、最初の入力データ"3→2→1"の他、その後の入力データをも用いて行われるので、状態#2については、状態#1との間の状態遷移の状態遷移確率が大になるとともに、状態#3との間の状態遷移の状態遷移確率も、多少なりとも大になり、状態#1及び#3以外の状態との間の状態遷移確率が、相対的に小になる。
以上のようにして、第2の入力制御方法によれば、状態#3から状態#2への状態遷移の状態遷移確率の更新が、希釈化(忘却)される程度を低減することができる。
[HMMの観測確率の拡張]
図48は、ACHMMのモジュールであるHMMの観測確率の拡張を説明する図である。
階層ACHMMにおいて、ACHMMのモジュールであるHMMが、離散HMMである場合、入力データに、いままでに観測されたことがない観測値である未観測値が含まれるときがある。
すなわち、特に、ACHMMには、新規モジュールが追加されることがあるため、最下位層以外の階層のACHMMユニット111では、下位ユニット111h−1から供給される認識結果情報としてのインデクスが表す最大尤度モジュールm*が、それまで存在していなかった新規モジュールである場合があり、この場合、ACHMMユニット111の入力制御部121が出力する入力データには、新規モジュールのインデクスに相当する未観測値が含まれる。
ここで、上述したことから、新規モジュール#mのインデクスmとしては、1を初期値とするシーケンシャルな整数が用いられるため、下位ユニット111h−1から供給される認識結果情報としてのインデクスが表す最大尤度モジュールm*が、それまで存在していなかった新規モジュールである場合、その新規モジュールのインデクスに相当する未観測値は、ACHMMユニット111において、いままで観測されたことがある観測値の最大値を超える値となる。
ACHMMユニット111のACHMM処理部122(図42)のモジュール学習部131は、ACHMMのモジュールであるHMMが、離散HMMである場合において、入力制御部121から供給される入力データに、いままでに観測されたことがない観測値である未観測値が含まれるとき、ACHMMのモジュールであるHMMのHMMパラメータのうちの、観測値が観測される観測確率の観測確率行列を、未観測値の観測確率を含むように拡張する拡張処理を行う。
すなわち、モジュール学習部131は、入力制御部121から供給される入力データに、いままで観測されたことがある観測値の最大値Kを超える値の未観測値K1が含まれる場合、拡張処理において、図48に示すように、行方向(縦方向)を、状態#iのインデクスiとするとともに、列方向(横方向)を、観測値kとして、状態#iにおいて、観測値kが観測される観測確率をコンポーネントとする観測確率行列の、列方向の観測値の最大値を、観測値Kから、未観測値K1以上の値K2に変更する(拡張する)。
さらに、拡張処理では、観測確率行列の、HMMの各状態についての、未観測値である値K+1ないしK2の観測確率が、例えば、1/(100×K)のオーダの、ランダムな微小値に初期化される。
そして、観測確率行列の1行の観測確率の総和(1つの状態において、各観測値が観測される観測確率の総和)が、1.0になるように、観測確率行列の各行の観測確率を正規化する確率化が行われ、拡張処理は終了する。
なお、拡張処理は、ACHMMを構成するすべてのモジュール(HMM)の観測確率行列を対象に行われる。
[ユニット生成処理]
図49は、図40のACHMM階層処理部101が行うユニット生成処理を説明するフローチャートである。
ACHMM階層処理部101(図40)は、必要に応じて、ACHMMユニット111を生成し、さらに、ACHMMユニット111を、階層構造に接続して、階層ACHMMを構成するユニット生成処理を行う。
すなわち、ユニット生成処理では、ステップS211において、ACHMM階層処理部101は、最下位層のACHMMユニット111を生成し、その最下位層のACHMMユニット111だけを構成要素とする1階層の階層ACHMMを構成して、処理は、ステップS212に進む。
ここで、ACHMMユニットの生成とは、例えば、オブジェクト指向プログラミングでは、ACHMMユニットのクラスを用意しておき、そのACHMMユニットのクラスのインスタンスを生成することに相当する。
ステップS212では、ACHMM階層処理部101は、階層ACHMMを構成するACHMMユニット111のうちの、上位ユニットがないACHMMユニットから、出力データが出力されたかどうかを判定する。
すなわち、いま、階層ACHMMが、H個(階層)のACHMMユニット111ないし111で構成されることとすると、ステップS212では、階層ACHMMを構成するACHMMユニット111ないし111のうちの、最上位層のACHMMユニット111(の出力制御部123(図42))から、出力データが出力されたかどうかが判定される。
ステップS212において、最上位層のACHMMユニット111から、出力データが出力されたと判定された場合、処理は、ステップS213に進み、ACHMM階層処理部101は、ACHMMユニット111の上位ユニットとなる、新たな最上位層のACHMMユニット111H+1を生成する。
すなわち、ステップS213では、ACHMM階層処理部101は、新規のACHMMユニット(新規ユニット)111H+1を生成し、その新規ユニット111H+1を、それまで最上位層であったACHMMユニット111の上位ユニットとして、ACHMMユニット111に接続する。これにより、H+1個のACHMMユニット111ないし111H+1でなる階層HMMが構成される。
その後、処理は、ステップS213からステップS212に戻り、以下、同様の処理が繰り返される。
また、ステップS212において、最上位層のACHMMユニット111から、出力データが出力されていないと判定された場合、処理は、ステップS212に戻る。
以上のように、ユニット生成処理では、H個のACHMMユニット111ないし111でなる階層ACHMMにおいて、上位ユニットと接続されていないACHMMユニット(以下、未接続ユニットともいう)、つまり、最上位層のACHMMユニット111が、出力データを出力するとき、新規ユニットが生成される。そして、新規ユニットを、上位ユニットととするとともに、未接続ユニットを、下位ユニットとして、新規ユニットと、未接続ユニットとが接続され、H+1個のACHMMユニット111ないし111H+1でなる階層HMMが構成される。
その結果、ユニット生成処理によれば、階層ACHMMの階層数が、モデル化対象の規模や構造に適切な数に至るまで増加していき、さらに、図45で説明したように、上位層のACHMMユニット111ほど、モジュールとしてのHMMの状態の粒度(時空間粒度)が粗くなるので、パーセプチャルエイリアシングの問題を解消することができる。
なお、新規ユニットについては、図9のステップS11や、図17のステップS61の場合と同様の初期化処理が行われ、1個のモジュール(HMM)からなるACHMMが構成される。
また、出力制御部123において、第1の出力制御方法(図43)を採用する場合、未接続ユニットである最上位層のACHMMユニット111のACHMMが、1個のモジュール(HMM)で構成され、かつ、ACHMMユニット111の認識部132において得られる認識結果情報の[m*,sm* L]の状態sm* Lが、ある特定の1つの状態となっている間は、最上位層のACHMMユニット111から出力データが出力されても、ステップS213は、スキップされ、新たな最上位層のACHMMユニット111H+1は、生成されない。
[ユニット学習処理]
図50は、図42のACHMMユニット111が行う処理(ユニット学習処理)を説明するフローチャートである。
ステップS221において、ACHMMユニット111の入力制御部121は、ACHMMユニット111の下位ユニットであるACHMMユニット111h−1(但し、ACHMMユニット111が、最下位層のACHMMユニット111である場合には、観測時系列バッファ12(図40))から、外部からの観測値としての出力データが供給されるのを待って、入力バッファ121Aに一時記憶し、処理は、ステップS222に進む。
ステップS222では、入力制御部121は、入力バッファ121Aに記憶された出力データから、ACHMMに与える入力データを、第1又は第2の入力制御方法によって構成し、ACHMM処理部122(のモジュール学習部131及び認識部132)に供給して、処理は、ステップS223に進む。
ステップS223では、ACHMM処理部122のモジュール学習部131が、入力制御部121からの入力データとしての観測値の時系列に、ACHMM記憶部134に記憶されたACHMMのモジュールであるHMMにおいて観測されたことがない観測値(未観測値)が含まれるかどうかを判定する。
ステップS223において、入力データに、未観測値が含まれると判定された場合、処理は、ステップS224に進み、モジュール学習部131は、図48で説明した拡張処理を行い、観測確率の観測確率行列を、未観測値の観測確率を含むように拡張して、処理は、ステップS225に進む。
また、ステップS223において、入力データに、未観測値が含まれないと判定された場合、処理は、ステップS224をスキップして、ステップS225に進み、ACHMM処理部122は、入力制御部121からの入力データを用いて、モジュール学習処理、認識処理、及び、遷移情報生成処理を行って、処理は、ステップS226に進む。
すなわち、ACHMM処理部122では、モジュール学習部131が、入力制御部121からの入力データを用いて、図9のモジュール学習処理のステップS16以降、又は、図17のステップS66以降の処理を行う。
その後、ACHMM処理部122では、認識部132が、入力制御部121からの入力データを用いて、図21の認識処理を行う。
そして、ACHMM処理部122では、遷移情報管理部133が、認識部132において入力データを用いて行われた認識処理の結果得られる認識結果情報を用いて、図24の遷移情報生成処理を行う。
ステップS226では、出力制御部123が、認識部132において入力データを用いて行われた認識処理の結果得られる認識結果情報を、出力バッファ123Aに一時記憶して、処理は、ステップS227に進む。
ステップS227では、出力制御部123は、図43や図44で説明した出力データの出力条件が満たされるかどうかを判定する。
ステップS227において、出力データの出力条件が満たされないと判定された場合、処理は、ステップS228をスキップして、ステップS221に戻る。
また、ステップS227において、出力データの出力条件が満たされると判定された場合、処理は、ステップS228に進み、出力制御部123は、出力バッファ123Aに記憶された最新の認識結果情報を、出力データとして、ACHMMユニット111の上位ユニットであるACHMMユニット111h+1に出力して、処理は、ステップS221に戻る。
[学習装置を適用したエージェントの構成例]
図51は、図40の学習装置を適用したエージェントの一実施の形態(第2実施の形態)の構成例を示すブロック図である。
なお、図中、図28の場合と対応する部分については、同一の符号を付してあり、以下では、その説明は、適宜省略する。
図51のエージェントは、センサ71、観測時系列バッファ72、アクションコントローラ82、駆動部83、及び、アクチュエータ84を有する点で、図28の場合と共通する。
但し、図51のエージェントは、図28のモジュール学習部73ないしHMM構成部77、及び、プランニング部81に代えて、ACHMM階層処理部151を有する点で、図28の場合と相違する。
図51において、ACHMM階層処理部151は、図40のACHMM階層処理部101と同様に、ACHMMユニットを生成し、ACHMMユニットを、階層構造に接続して、階層ACHMMを構成する。
但し、ACHMM階層処理部151が生成するACHMMユニットは、図40のACHMM階層処理部101が生成するACHMMユニットの機能の他、プランニングを行う機能を有する。
なお、図51では、アクションコントローラ82が、ACHMM階層処理部151とは別に設けられているが、アクションコントローラ82は、ACHMM階層処理部151が生成するACHMMユニットに含めることができる。
但し、アクションコントローラ82は、最下位層のACHMMユニットのACHMMの各状態遷移について、センサ71で観測される観測値を入力として、アクション信号を出力するアクション関数の学習を行うので、階層ACHMMを構成するACHMMユニットのすべてに設ける必要はなく、最下位層のACHMMに設けるだけで良い。
ここで、図28のエージェントは、あらかじめ定められたルールに従って移動するアクションを行い、モデル化対象である移動環境の移動先において、センサ71で観測される観測値の時系列を用いて、ACHMMの学習を行うとともに、ACHMMの各状態遷移について、観測値を入力として、アクション信号を出力するアクション関数の学習を行う。
そして、図28のエージェントは、学習後のACHMMから構成される結合HMMを用いて、現在状態から目標状態までの最尤状態系列を、現在状態から目標状態に辿り着くプランとして求め、そのプランとしての最尤状態系列の状態遷移を生じさせるアクションを、ACHMMの学習時に求めておいたアクション関数に従って行うことで、現在状態に対応する位置から、目標状態に対応する位置に移動する。
一方、図51のエージェントでも、あらかじめ定められたルールに従って移動するアクションを行い、最下位層のACHMMユニットでは、図28のエージェントと同様に、移動先において、センサ71で観測される観測値の時系列を用いて、ACHMMの学習を行うユニット学習処理(図50)処理が行われるとともに、ACHMMの各状態遷移について、観測値を入力として、アクション信号を出力するアクション関数の学習が行われる。
さらに、図51のエージェントでは、最下位層以外の階層のACHMMユニットにおいて、その下位ユニットから出力データとして供給される、下位ユニットで得られた認識結果情報から、時系列データである入力データを構成し、その入力データを、外部から供給される観測値の時系列として用いて、ACHMMの学習を行うユニット学習処理(図50)が行われる。
なお、図51のエージェントでは、ユニット学習処理を行っているときに、ユニット生成処理(図49)によって、必要に応じて、新規ユニットが生成される。
以上のように、図51のエージェントでは、各階層のACHMMユニットにおいて、ユニット学習処理(図50)が行われることで、上位の階層のACHMMユニットのACHMMでは、より大域的な移動環境の構造が、下位の階層のACHMMユニットのACHMMでは、より局所的な移動環境の構造が、それぞれ、自己組織的に獲得される。
そして、図51のエージェントでは、各階層のACHMMユニットのACHMMの学習が、ある程度進行した後、階層ACHMMを構成するACHMMユニットのうちの、注目する階層のACHMMユニットである注目ACHMMユニットのACHMMの状態のうちの1つの状態が、目標状態として与えられると、注目ACHMMユニットにおいて、ACHMMから構成される結合HMMを用いて、現在状態から目標状態までの最尤状態系列が、プランとして求められる。
注目ACHMMユニットが、最下位層のACHMMユニットである場合には、図51のエージェントは、図28のエージェントと同様に、プランとしての最尤状態系列の状態遷移を生じさせるアクションを、ACHMMの学習時に求めておいたアクション関数に従って行うことで、現在状態に対応する位置から、目標状態に対応する位置に移動する。
また、注目ACHMMユニットが、最下位層以外の階層のACHMMユニットである場合には、図51のエージェントは、注目ACHMMユニットで得られるプランとしての最尤状態系列の最初の状態(現在状態)の次の状態で観測される観測値の観測確率を参照し、観測確率が所定の閾値以上の観測値が表す下位ユニットのACHMMの状態を、下位ユニットにおける目標状態の候補(目標状態候補)として、下位ユニットにおいて、現在状態から目標状態候補までの最尤状態系列を、プランとして求める。
なお、認識結果情報として、タイプ1の認識結果情報を採用する場合には、注目ACHMMユニットのACHMMのモジュールであるHMMにおいて観測される観測値は、注目ACHMMユニットの下位ユニットのACHMMの最大尤度モジュール#m*と、状態sm* Lとのインデクスのセットである認識結果情報[m*,sm* L]であり、したがって、そのような認識結果情報[m*,sm* L]が表す下位ユニットの状態とは、認識結果情報[m*,sm* L]によって特定される下位ユニットのACHMMのモジュール#m*の状態sm* Lである。
また、認識結果情報として、タイプ2の認識結果情報を採用する場合には、注目ACHMMユニットのACHMMのモジュールであるHMMにおいて観測される観測値は、注目ACHMMユニットの下位ユニットのACHMMの最大尤度モジュール#m*のインデクスである認識結果情報[m*]である。そして、そのような認識結果情報[m*]が表す下位ユニットの状態とは、認識結果情報[m*]によって特定される下位ユニットのACHMMのモジュール#m*の任意の1つ、若しくは、複数の状態、又は、全部の状態である。
図51のエージェントにおいて、より下位の階層のACHMMでは、注目ACHMMユニットの下位ユニットと同様の処理が、再帰的に行われる。
さらに、最下位層のACHMMユニットでは、図28のエージェントと同様に、プランが求められる。そして、エージェントは、そのプランとしての最尤状態系列の状態遷移を生じさせるアクションを、ACHMMの学習時に求めておいたアクション関数に従って行うことで、現在状態に対応する位置から、目標状態に対応する位置に移動する。
すなわち、階層ACHMMでは、上位の階層のACHMMユニットで得られるプランの状態遷移は、大域的な状態遷移であるため、図51のエージェントは、上位の階層のACHMMユニットで得られたプランを、下位の階層のACHMMユニットに、いわば伝播していき、最終的には、最下位層のACHMMユニットで得られたプランの状態遷移が生じる移動を、アクションとして行う。
[ACHMMユニットの構成例]
図52は、図51のACHMM階層処理部151が生成するACHMMユニット200のうちの、最下位層以外の第h階層のACHMMユニット200の構成例を示すブロック図である。
ACHMMユニット200は、入力制御部201、ACHMM処理部202、出力制御部203、及び、プランニング部221を含む。
入力制御部201hは、入力バッファ201Aを有し、図42の入力制御部121と同様の入力制御を行う。
ACHMM処理部202は、モジュール学習部211、認識部212、遷移情報管理部213、ACHMM記憶部214、及び、HMM構成部215を含む。
モジュール学習部211ないしHMM構成部215は、図42のモジュール学習部131ないしHMM構成部135と同様に構成され、したがって、ACHMM処理部202は、図42のACHMM処理部122と同様の処理を行う。
出力制御部203は、出力バッファ203Aを有し、図42の出力制御部123と同様の出力制御を行う。
プランニング部221には、ACHMMユニット200の下位ユニット200h−1から、最新の観測値の認識を要求する認識処理要求が供給される。
また、プランニング部221には、認識部212から、最新の観測値の認識結果情報[m*,sm* t]が供給されるとともに、HMM構成部215から、結合HMMが供給される。
さらに、プランニング部221には、ACHMMユニット200の上位ユニット200h+1から、その上位ユニット200h+1のACHMM(のモジュールであるHMM)において観測される観測値のうちの、観測確率が所定の閾値以上の観測値のリスト(観測値リスト)が供給される。
ここで、上位ユニット200h+1から供給される観測値リストの観測値は、ACHMMユニット200で得られた認識結果情報であり、したがって、ACHMMユニット200のACHMMの状態、又は、モジュールを表す。
プランニング部221は、下位ユニット200h−1から、認識処理要求が供給されると、認識部212に、最新の観測値を、最新のサンプルoLとして含む入力データO={o1,o2,・・・,oL}を用いた認識処理を要求する。
その後、プランニング部221は、認識部212が認識処理を行うことによって、最新の観測値の認識結果情報[m*,sm* L]を出力するのを待って、その認識結果情報[m*,sm* L]を受信する。
そして、プランニング部221は、上位ユニット200h+1からの観測値リストの観測値が表す状態、又は、観測値が表すモジュールのすべての状態を、目標状態候補(ACHMMユニット200の階層(第h階層)における目標状態の候補)として、1個以上の目標状態候補のいずれかと、認識部212からの認識結果情報[m*,sm* L]によって特定される現在状態sm* Lとが一致するかどうかを判定する。
現在状態sm* Lと、目標状態候補とが一致しない場合、プランニング部221は、1個以上の目標状態候補それぞれについて、認識部212からの認識結果情報[m*,sm* L]によって特定される現在状態sm* Lから、目標状態候補までの最尤状態系列を求める。
そして、プランニング部221は、1個以上の目標状態候補それぞれについての最尤状態系列のうちの、例えば、状態の数が最小の最尤状態系列を、プランとして選択する。
さらに、プランニング部221は、プランにおける最初の状態、すなわち、現在状態の次の状態において観測される観測値のうちの、観測確率が閾値以上の1個以上の観測値の観測値リストを生成し、ACHMMユニット200の下位ユニット200h−1に供給する。
また、現在状態sm* Lと、目標状態候補とが一致する場合、プランニング部221は、認識処理要求を、ACHMMユニット200の上位ユニット200h+1に供給する。
なお、プランニング部221に対しては、ACHMMユニット200の上位ユニット200h+1から、観測値リストの形で、目標状態(候補)を与えるのではなく、図28のエージェントのプランニング部81に対して目標状態を与えるのと同様に、外部からの目標状態の指定や、動機システムによる目標状態の設定によって、ACHMMユニット200のACHMMの任意の1つの状態を、目標状態として与えることができる。
いま、このようにしてプランニング部221に与えられる目標状態を、外部目標状態ということとすると、プランニング部221は、外部目標状態が与えられた場合、その外部目標状態を、目標状態候補として、同様の処理を行う。
図53は、図51のACHMM階層処理部151が生成するACHMMユニット200のうちの、最下位層のACHMMユニット200の構成例を示すブロック図である。
ACHMMユニット200は、最下位層以外の階層のACHMMユニット200と同様に、入力制御部201、ACHMM処理部202、出力制御部203、及び、プランニング部221を含む。
但し、ACHMMユニット200の下位ユニットは、存在しないため、プランニング部221では、下位ユニットから認識処理要求が供給されることはなく、観測リストを生成して、下位ユニットに供給することも行われない。
その代わり、プランニング部221は、プランの最初の状態(現在状態)から次の状態への状態遷移を、アクションコントローラ82に供給する。
また、最下位層のACHMMユニット200では、認識部212が出力する認識結果情報と、入力制御部201がACHMM処理部202に供給する入力データとしての、センサ71の観測値の時系列のうちの最新の観測値とが、アクションコントローラ82に供給される。
[アクション制御処理]
図54は、図52の第h階層のACHMMユニット200に外部目標状態が与えられた場合に、そのACHMMユニット(以下、目標状態指定ユニットともいう)200のプランニング部221が行う、エージェントのアクションを制御するアクション制御処理を説明するフローチャートである。
なお、外部目標状態が、最下位層のACHMMユニット200に与えられた場合は、図28のエージェントと同様の処理が行われるため、ここでは、目標状態指定ユニット200は、最下位層以外の階層のACHMMユニットであるとする。
また、図51のエージェントにおいて、各階層のACHMMユニット200によるユニット学習処理(図50)は、ある程度、進行しており、アクションコントローラ82によるアクション関数の学習は、済んでいることとする。
ステップS241において、プランニング部221は、目標状態指定ユニット200のACHMMの状態の1つが、外部目標状態#gとして与えられるのを待って、その外部目標状態#gを受信し、認識部212に認識処理を要求して、処理は、ステップS242に進む。
ステップS242では、認識部212が、入力制御部201から供給される最新の入力データを用いた認識処理を行うことにより得られる認識結果情報を出力するのを待って、プランニング部221は、その認識結果情報を受信し、処理は、ステップS243に進む。
ステップS243では、プランニング部221は、認識部212からの認識結果情報から特定される現在状態(最大尤度モジュールであるHMMにおいて、入力データが観測される最尤状態系列の最後の状態)と、外部目標状態#gとが一致するかどうかを判定する。
ステップS243において、現在状態と、外部目標状態#gとが一致しないと判定された場合、処理は、ステップS244に進み、プランニング部221は、プランニング処理を行う。
すなわち、ステップS244では、プランニング部221は、図31の場合と同様に、HMM構成部215から供給される結合HMMにおいて、現在状態から、目標状態#gまでの状態遷移の尤度が最大の状態系列(最尤状態系列)を、現在状態から目標状態#gに辿り着くプランとして求める。
なお、図31では、現在状態から目標状態#gまでの最尤状態系列の長さが、閾値以上となる場合は、プランとしての最尤状態系列が求められないとすることとしたが、図51のエージェントが行うプランニング処理では、説明を簡単にするため、閾値として、十分大きな値を採用することで、最尤状態系列を、必ず求めることとする。
その後、処理は、ステップS244からステップS245に進み、プランニング部221は、プランにおける最初の状態、すなわち、現在状態の次の状態の観測確率を参照することで、次の状態において観測される観測値のうちの、観測確率が閾値以上の1個以上の観測値の観測値リストを生成し、目標状態指定ユニット200の下位ユニット200h−1(のプランニング部221h−1)に供給する。
ここで、目標状態指定ユニット200のACHMMの(モジュールであるHMMの)状態において観測される観測値は、その目標状態指定ユニット200の下位ユニット200h−1で得られる認識結果情報であり、したがって、下位ユニット200h−1のACHMMの状態、又は、モジュールを表すインデクスである。
また、観測値リストの生成に用いる観測値の閾値としては、例えば、固定の閾値を採用することができる。さらに、観測値の閾値は、所定数の観測値が、観測確率が閾値以上の観測値となるように、適応的に設定することができる。
ステップS245において、プランニング部221が、観測値リストを、下位ユニット200h−1に供給した後、処理は、ステップS246に進み、プランニング部221は、下位ユニット200h−1(のプランニング部221h−1)から、認識処理要求が供給されてくるのを待って受信する。
そして、プランニング部221は、下位ユニット200h−1からの認識処理要求に従い、認識部212に、最新の観測値を、最新のサンプルoLとして含む入力データO={o1,o2,・・・,oL}を用いた認識処理を要求する。
その後、処理は、ステップS246からステップS242に戻り、認識部212が、入力制御部201から供給される最新の入力データを用いた認識処理を行うことによって、最新の観測値の認識結果情報を出力するのを待って、プランニング部221は、その認識結果情報を受信し、以下、同様の処理が繰り返される。
そして、ステップS243において、現在状態と、外部目標状態#gとが一致すると判定された場合、すなわち、エージェントが、移動環境内を移動し、外部目標状態#gに対応する位置に辿り着いた場合、処理は、終了する。
図55は、目標状態指定ユニットよりも下位の階層のACHMMユニットのうちの、最下位層のACHMMユニット200以外のACHMMユニット(以下、中間層ユニットともいう)200(図52)のプランニング部221が行う、エージェントのアクションを制御するアクション制御処理を説明するフローチャートである。
ステップS251において、プランニング部221は、中間層ユニット200の上位ユニット200h+1(のプランニング部221h+1)から、観測値リストが供給されてくるのを待って受信し、処理は、ステップS252に進む。
ステップS252では、プランニング部221は、上位ユニット200h+1からの観測値リストから、目標状態候補を求める。
すなわち、上位ユニット200h+1から供給される観測値リストの観測値は、中間層ユニット200のACHMMの状態、又は、モジュールを表すインデクスであり、プランニング部221は、観測値リストの1個以上の観測値であるインデクスそれぞれが表す中間層ユニット200のACHMMの状態、又は、モジュールであるHMMのすべての状態を、目標状態候補とする。
ステップS252において、1個以上の目標状態候補が求められた後、プランニング部221は、認識部212に認識処理を要求して、処理は、ステップS253に進む。ステップS253では、認識部212が、入力制御部201から供給される最新の入力データを用いた認識処理を行うことにより得られる認識結果情報を出力するのを待って、プランニング部221は、その認識結果情報を受信し、処理は、ステップS254に進む。
ステップS254では、プランニング部221は、認識部212からの認識結果情報から特定される現在状態(最大尤度モジュールであるHMMにおいて、入力データが観測される最尤状態系列の最後の状態)と、1個以上の目標状態候補のいずれかとが一致するかどうかを判定する。
ステップS254において、現在状態が、1個以上の目標状態候補のうちのいずれとも一致しないと判定された場合、処理は、ステップS255に進み、プランニング部221は、1個以上の目標状態候補それぞれについて、プランニング処理を行う。
すなわち、ステップS255では、プランニング部221は、1個以上の目標状態候補それぞれについて、図31の場合と同様に、HMM構成部215から供給される結合HMMにおいて、現在状態から、目標状態候補までの状態遷移の尤度が最大の状態系列(最尤状態系列を求める。
その後、処理は、ステップS255からステップS256に進み、プランニング部221は、1個以上の目標状態候補それぞれについて求めた最尤状態系列のうちの、例えば、状態数が最小の1つの最尤状態系列を、最終的なプランとして選択し、処理は、ステップS257に進む。
ステップS257では、プランニング部221は、プランにおける最初の状態(現在状態)の次の状態の観測確率を参照することにより、次の状態において観測される観測値のうちの、観測確率が閾値以上の1個以上の観測値の観測値リストを生成し、中間層ユニット200の下位ユニット200h−1(のプランニング部221h−1)に供給する。
ここで、中間層ユニット200のACHMMの(モジュールであるHMMの)状態において観測される観測値は、その中間層ユニット200の下位ユニット200h−1で得られる認識結果情報であり、したがって、下位ユニット200h−1のACHMMの状態、又は、モジュールを表すインデクスである。
ステップS257において、プランニング部221が、観測値リストを、下位ユニット200h−1に供給した後、処理は、ステップS258に進み、プランニング部221は、下位ユニット200h−1(のプランニング部221h−1)から、認識処理要求が供給されてくるのを待って受信する。
そして、プランニング部221は、下位ユニット200h−1からの認識処理要求に従い、認識部212に、最新の観測値を、最新のサンプルとして含む入力データを用いた認識処理を要求する。
その後、処理は、ステップS258からステップS253に戻り、認識部212が、入力制御部201から供給される最新の入力データを用いた認識処理を行うことによって、最新の観測値の認識結果情報を出力するのを待って、プランニング部221は、その認識結果情報を受信し、以下、同様の処理が繰り返される。
そして、ステップS254において、現在状態が、1個以上の目標状態候補のいずれかと一致すると判定された場合、すなわち、エージェントが、移動環境内を移動し、1個以上の目標状態候補のうちのいずれかに対応する位置に辿り着いた場合、処理は、ステップS259に進み、プランニング部221は、認識処理要求を、中間層ユニット200の上位ユニット200h+1(のプランニング部221h+1)に供給(送信)する。
その後、処理は、ステップS259からステップS251に戻り、上述したように、プランニング部221は、中間層ユニット200の上位ユニット200h+1から、観測値リストが供給されてくるのを待って受信し、以下、同様の処理を繰り返す。
なお、中間層ユニット200のアクション制御処理は、目標状態指定ユニットのアクション制御処理(図54)が終了した場合(図54のステップS243において、現在状態と、外部目標状態#gとが一致すると判定された場合)に、終了する。
図56は、最下位層のACHMMユニット(以下、最下位層ユニットともいう)200(図53)のプランニング部221が行う、エージェントのアクションを制御するアクション制御処理を説明するフローチャートである。
最下位層ユニット200では、ステップS271ないしS276において、図55のステップS251ないしS256とそれぞれ同様の処理が行われる。
すなわち、ステップS271において、プランニング部221は、最下位層ユニット200の上位ユニット200(のプランニング部221)から、観測値リストが供給されてくるのを待って受信し、処理は、ステップS272に進む。
ステップS272では、プランニング部221は、上位ユニット200からの観測値リストから、目標状態候補を求める。
すなわち、上位ユニット200から供給される観測値リストの観測値は、最下位層ユニット200のACHMMの状態、又は、モジュールを表すインデクスであり、プランニング部221は、観測値リストの1個以上の観測値であるインデクスそれぞれが表す最下位層ユニット200のACHMMの状態、又は、モジュールであるHMMのすべての状態を、目標状態候補とする。
ステップS272において、1個以上の目標状態候補が求められた後、プランニング部221は、認識部212に認識処理を要求し、処理は、ステップS273に進む。ステップS273では、認識部212が、入力制御部201から供給される最新の入力データ(センサ71で観測される観測値の時系列)を用いた認識処理を行うことにより得られる認識結果情報を出力するのを待って、プランニング部221は、その認識結果情報を受信し、処理は、ステップS274に進む。
ステップS274では、プランニング部221は、認識部212からの認識結果情報から特定される現在状態と、1個以上の目標状態候補のいずれかとが一致するかどうかを判定する。
ステップS274において、現在状態が、1個以上の目標状態候補のうちのいずれとも一致しないと判定された場合、処理は、ステップS275に進み、プランニング部221は、1個以上の目標状態候補それぞれについて、プランニング処理を行う。
すなわち、ステップS275では、プランニング部221は、1個以上の目標状態候補それぞれについて、図31の場合と同様に、HMM構成部215から供給される結合HMMにおいて、現在状態から、目標状態候補までの最尤状態系列を求める。
その後、処理は、ステップS275からステップS276に進み、プランニング部221は、1個以上の目標状態候補それぞれについて求めた最尤状態系列のうちの、例えば、状態数が最小の1つの最尤状態系列を、最終的なプランとして選択し、処理は、ステップS277に進む。
ステップS277では、プランニング部221は、プランの最初の状態遷移、すなわち、プランにおける、現在状態から、その次の状態への状態遷移を表す情報(状態遷移情報)を、アクションコントローラ82(図51、図53)に供給し、処理は、ステップS278に進む。
ここで、プランニング部221が、状態遷移情報を、アクションコントローラ82に供給することにより、アクションコントローラ82は、プランニング部221からの状態遷移情報が表す状態遷移についてのアクション関数に対して、入力制御部201から供給される最新の観測値(現在時刻の観測値)を入力として与えることで、アクション関数が出力するアクション信号を、エージェントが次に行うべきアクションのアクション信号として求める。
そして、アクションコントローラ82は、そのアクション信号を、駆動部83に供給する。駆動部83は、アクションコントローラ82からアクション信号を、アクチュエータ84に供給することで、アクチュエータ84を駆動し、これにより、エージェントは、例えば、移動環境内を移動するアクションを行う。
以上のように、エージェントが、移動環境内を移動した後、ステップS278では、移動後の位置において、センサ71で観測される観測値(最新の観測値)を、最新のサンプルとして含む入力データを用いた認識処理が、認識部212によって行われ、その認識処理によって得られる認識結果情報が出力されるのを待って、プランニング部221は、認識部212が出力する認識結果情報を受信し、処理は、ステップS279に進む。
ステップS279では、プランニング部221は、認識部212からの認識結果情報(直前のステップS278で受信した認識結果情報)から特定される現在状態が、1時刻前に現在状態であった状態である前回の現在状態と一致するかどうかを判定する。
ステップS279において、現在状態が、前回の現在状態と一致すると判定された場合、すなわち、エージェントが移動した後の位置に対応する現在状態と、エージェントが移動する前の位置に対応する前回の現在状態とが、同一の状態であり、エージェントの移動によって、最下位層ACHMMユニットのACHMMにおいて、状態遷移が生じなかった場合、処理は、ステップS277に戻り、以下、同様の処理が繰り返される。
また、ステップS279において、現在状態が、前回の現在状態と一致しないと判定された場合、すなわち、エージェントの移動によって、最下位層ACHMMユニットのACHMMにおいて、状態遷移が生じた場合、処理は、ステップS280に進み、プランニング部221は、認識部212からの認識結果情報から特定される現在状態と、1個以上の目標状態候補のいずれかとが一致するかどうかを判定する。
ステップS280において、現在状態が、1個以上の目標状態候補のうちのいずれとも一致しないと判定された場合、処理は、ステップS281に進み、プランニング部221は、現在状態が、プラン(としての状態系列)上の状態のいずれかと一致するかどうかを判定する。
ステップS281において、現在状態が、プラン上の状態のいずれかと一致すると判定された場合、すなわち、エージェントが、プランとしての状態系列のいずれかの状態に対応する位置にいる場合、処理は、ステップS282に進み、プランニング部221は、プラン上の状態のうちの、現在状態と一致する状態(プランの最初の状態から最後の状態に向かって、最初に現れる、現在状態と一致する状態)から、プランの最後の状態までの状態系列に、プランを変更し、処理は、ステップS277に戻る。
この場合、変更後のプランを用いて、ステップS277以降の処理が行われる。
また、ステップS281において、現在状態が、プラン上の状態のいずれとも一致しないと判定された場合、すなわち、エージェントが、プランとしての状態系列のいずれの状態に対応する位置にもいない場合、処理は、ステップS275に戻り、以下、同様の処理が繰り返される。
この場合、1個以上の目標状態候補それぞれについて、新たな現在状態(直前のステップS278で受信した認識結果情報から特定される現在状態)から、目標状態までの最尤状態系列が求められ(ステップS275)、その1個以上の目標状態候補それぞれについての最尤状態系列から、1つの最尤状態系列を、プランとして選択する(ステップS276)、いわば、プランの作り直しが行われ、そのプランを用いて、以下、同様の処理が行われる。
一方、ステップS274、又は、ステップS280において、現在状態が、1個以上の目標状態候補のいずれかと一致すると判定された場合、すなわち、エージェントが、移動環境内を移動し、1個以上の目標状態候補のうちのいずれかに対応する位置に辿り着いた場合、処理は、ステップS283に進み、プランニング部221は、認識処理要求を、最下位層ユニット200の上位ユニット200(のプランニング部221)に供給(送信)する。
その後、処理は、ステップS283からステップS271に戻り、上述したように、プランニング部221は、最下位層ユニット200の上位ユニット200から、観測値リストが供給されてくるのを待って受信し、以下、同様の処理を繰り返す。
なお、最下位層ユニット200のアクション制御処理は、中間層ユニットのアクション制御処理と同様に、目標状態指定ユニットのアクション制御処理(図54)が終了した場合(図54のステップS243において、現在状態と、外部目標状態#gとが一致すると判定された場合)に、終了する。
図57は、階層ACHMMが、3階層のACHMMユニット#1,#2、及び、#3で構成される場合の、各階層のACHMMを模式的に示す図である。
図57において、楕円は、ACHMMの状態を表す。また、大きい楕円は、第3階層(最上位層)ACHMMユニット#3のACHMMの状態を、中くらいの楕円は、第2階層のACHMMユニット#2のACHMMの状態を、小さい楕円は、第1階層(最下位層)のACHMMユニット#1のACHMMの状態を、それぞれ表す。
図57では、各階層の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では、プランの最初の状態遷移を表す状態遷移情報が、アクションコントローラ82(図51)に供給され、これにより、エージェントは、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に対応する位置に移動することができる。
以上のように、図51のエージェントでは、任意階層における目的状態実現のための状態遷移プランを最下層へと順次展開してから状態遷移制御が行われるので、エージェントの自律的環境モデル獲得ならびに任意状態実現能力の獲得が可能となる。
<第3実施の形態>
図58は、図8のモジュール学習部13が行うモジュール学習処理の他の例を説明するフローチャートである。
なお、図58のモジュール学習処理では、図17で説明した可変ウインドウ学習を行うが、図9で説明した固定ウインドウ学習を行うことも可能である。
図9及び図17のモジュール学習処理では、図10で説明したように、最大尤度モジュール#m*の対数尤度である最大対数尤度maxLPと、あらかじめ設定された閾値尤度THとの大小関係によって、最大尤度モジュール#m*、又は、新規モジュールを、対象モジュールに決定する。
すなわち、最大対数尤度maxLPが、閾値尤度TH以上である場合には、最大尤度モジュール#m*が、対象モジュールとなり、最大対数尤度maxLPが、閾値尤度TH以上でない場合には、新規モジュールが、対象モジュールとなる。
しかしながら、最大対数尤度maxLPと閾値尤度THとの大小関係によって、対象モジュールを決定する場合には、実際には、最大尤度モジュール#m*を、対象モジュールとして、最大尤度モジュール#m*の追加学習を行った方が、ACHMM全体としては、良好なACHMM(例えば、認識部14(図1)において、正しい認識結果情報が得られる可能性が、より高いACHMM)が得られるときであっても、最大対数尤度maxLPが、閾値尤度THを、僅かにでも下回ると、新規モジュールを、対象モジュールとして、新規モジュールの追加学習が行われる。
同様に、実際には、新規モジュールを、対象モジュールとして、新規モジュールの追加学習を行った方が、ACHMM全体としては、良好なACHMMが得られるときであっても、最大対数尤度maxLPが、閾値尤度THと一致するか、閾値尤度THを、僅かにでも上回ると、最大尤度モジュール#m*を、対象モジュールとして、最大尤度モジュール#m*の追加学習が行われる。
そこで、第3実施の形態では、対象モジュール決定部22(図8)は、最大尤度モジュール#m*の追加学習を行った場合と、新規モジュールの追加学習を行った場合とのそれぞれの場合のACHMMの、ベイス推定により求められる事後確率に基づいて、対象モジュールを決定する。
すなわち、対象モジュール決定部22は、例えば、最大尤度モジュール#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の構造の「コンパクト度合い」を測る尺度、すなわち、表現のあいまいさが少なく、より決定論的判別に性質が近い、つまり、いずれの観測時系列入力に対する認識結果においても、尤度最大の状態の尤度が他の状態の尤度と比べて優位に大きくなる、より「構造的」な度合いを測る尺度である。
第3実施の形態では、HMMの事後確率P(λ|O)を最大化するように、HMMパラメータλを推定する方法に倣って、モデルパラメータθによって定義されるACHMMのエントロピーH(θ)を導入するとともに、ACHMMの対数事前確率log(P(θ))を、比例定数prior_balanceを用いて、式log(P(θ))=-prior_balance×H(θ)で定義する。
さらに、第3実施の形態では、モデルパラメータθによって定義されるACHMMにおいて、時系列データOが観測される尤度P(O|θ)として、ACHMMの1つのモジュールである、例えば、最大尤度モジュール#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)で表される。
第3実施の形態では、対象モジュール決定部22(図8)は、最大尤度モジュール#m*の追加学習を行った場合のACHMMの事後確率と、新規モジュールの追加学習を行った場合のACHMMの事後確率とに基づいて、尤度最大モジュール、又は、新規モジュールを、対象モジュールに決定する。
すなわち、対象モジュール決定部22は、例えば、最大尤度モジュール#m*の追加学習を行った場合に得られる、既存モジュール学習処理後のACHMMの事後確率に対して、新規モジュールの追加学習を行った場合に得られる、新規モジュール学習処理後のACHMMの事後確率が改善される場合には、新規モジュールが、対象モジュールに決定され、その対象モジュールとしての新規モジュールの追加学習が行われる。
また、新規モジュール学習処理後のACHMMの事後確率が改善されない場合には、最大尤度モジュール#m*が、対象モジュールに決定され、その対象モジュールとしての最大尤度モジュール#m*の追加学習が行われる。
以上のように、ACHMMの事後確率に基づいて、対象モジュールを決定することにより、理論的、かつ、柔軟(適応的)に、新規モジュールが、ACHMMに追加されていき、その結果、最大対数尤度maxLPと閾値尤度THとの大小関係によって、対象モジュールを決定する場合に比較して、新規モジュールの生成が、過度に多く行われること、及び、過度に少なく行われることを防止することができる。
[モジュール学習処理]
図58は、以上のように、ACHMMの事後確率に基づいて、対象モジュールを決定しながら、ACHMMの学習を行うモジュール学習処理を説明するフローチャートである。
図58のモジュール学習処理では、ステップS311ないしS322において、図17のモジュール学習処理のステップS61ないしS72とそれぞれ(ほぼ)同様の処理が行われる。
但し、図58のモジュール学習処理では、ステップS315において、図17のステップS65と同様の処理が行われる他、後述するサンプルバッファRSmに、学習データOtがバッファリングされる。
さらに、ステップS319では、ACHMMが、1個のモジュール#1で構成されている間は、図17のステップS69と同様に、最大対数尤度maxLPと閾値尤度THとの大小関係によって、対象モジュールが決定されるが、ACHMMが、2個以上(複数)のモジュール#1ないし#Mで構成される場合には、ACHMMの事後確率に基づいて、対象モジュールが決定される。
また、ステップS321において、図17のステップS71と同様の既存モジュール学習処理が行われた後、及び、ステップS322において、図17のステップS72と同様の新規モジュール学習処理が行われた後は、ステップS323において、後述するサンプル保存処理が行われる。
すなわち、図58のモジュール学習処理では、ステップS311において、モジュール学習部13(図8)の更新部23は、初期化処理として、ACHMMを構成する1個目のモジュール#1となるエルゴディックHMMの生成、及び、モジュール総数Mへの、初期値としての1のセットを行う。
その後、センサ11から、観測値otが出力され、観測時系列バッファ12に記憶されるのを待って、処理は、ステップS311からステップS312に進み、モジュール学習部13(図8)は、時刻tを、t=1にセットし、処理は、ステップS313に進む。
ステップS313では、モジュール学習部13は、時刻tが、ウインドウ長Wに等しいかどうかを判定する。
ステップS313において、時刻tがウインドウ長Wに等しくないと判定された場合、センサ11から、次の観測値otが出力され、観測時系列バッファ12に記憶されるのを待って、処理は、ステップS314に進む。
ステップS314では、モジュール学習部13は、時刻tを1だけインクリメントして、処理は、ステップS313に戻り、以下、同様の処理が繰り返される。
また、ステップS313において、時刻tがウインドウ長Wに等しいと判定された場合、すなわち、観測時系列バッファ12に、ウインドウ長W分の観測値の時系列である時系列データOt=W={o1,・・・,oW}が記憶された場合、対象モジュール決定部22(図8)は、1個だけのモジュール#1で構成されるACHMMの、そのモジュール#1を、対象モジュールに決定する。
そして、対象モジュール決定部22は、対象モジュールであるモジュール#1を表すモジュールインデクスm=1を、更新部23に供給し、処理は、ステップS313からステップS315に進む。
ステップS315では、更新部23は、対象モジュール決定部22からのモジュールインデクスm=1が表す対象モジュールであるモジュール#1の実効学習回数Qlearn[m=1]に、初期値としての1.0をセットする。
さらに、ステップS315では、更新部23は、対象モジュールであるモジュール#1の学習率γを、式γ=1/(Qlearn[m=1]+1.0)に従って求める。
そして、更新部23は、観測時系列バッファ12に記憶されたウインドウ長Wの時系列データOt=W={o1,・・・,oW}を、学習データとして、その学習データOt=Wを用い、学習率γ=1/(Qlearn[m=1]+1.0)で、対象モジュールであるモジュール#1の追加学習を行う。
すなわち、更新部23は、上述した式(3)ないし式(16)に従って、ACHMM記憶部16に記憶された、対象モジュールであるモジュール#1のHMMパラメータλm=1を更新する。
さらに、更新部23は、その内蔵するメモリ(図示せず)に確保される、観測値をバッファリングする変数であるバッファbuffer_winner_sampleに、学習データOt=Wをバッファリングする。
また、更新部23は、その内蔵するメモリに確保される、1時刻前に最大尤度モジュールであったモジュールが、最大尤度モジュールになっている期間を表す変数である勝者期間情報cnt_since_winに、初期値としての1をセットする。
さらに、更新部23は、その内蔵するメモリに確保される、1時刻前の最大尤度モジュール(であったモジュール)を表す変数である前回勝者情報past_winに、初期値としての、モジュール#1のモジュールインデクスである1をセットする。
また、対象モジュール決定部22は、更新部23の内蔵するメモリに確保される、各モジュール#mの追加学習に用いられた学習データを、各モジュール#mに対応付けて、サンプルとしてバッファリングする変数であるサンプルバッファRSmのうちのサンプルバッファRS1に、対象モジュールであるモジュール#1の追加学習に用いられた学習データOt=Wをバッファリングさせる。
その後、センサ11から、次の観測値otが出力され、観測時系列バッファ12に記憶されるのを待って、処理は、ステップS315からステップS316に進み、モジュール学習部13が、時刻tを1だけインクリメントして、処理は、ステップS317に進む。
ステップS317では、尤度算出部21(図8)は、観測時系列バッファ12に記憶されたウインドウ長Wの最新の時系列データOt={ot-W+1,・・・,ot}を、学習データとし、ACHMM記憶部16に記憶されたACHMMを構成するすべてのモジュール#1ないし#Mのそれぞれについて、モジュール尤度P(Otm)を求めて、対象モジュール決定部22に供給する。
そして、処理は、ステップS317からステップS318に進み、対象モジュール決定部22は、ACHMMを構成するモジュール#1ないし#Mのうちの、尤度算出部21からのモジュール尤度P(Otm)が最大の最大尤度モジュール#m*=argmaxm[P(Otm)]を求める。
さらに、対象モジュール決定部22は、尤度算出部21からのモジュール尤度P(Otm)から、最大対数尤度maxLP=maxm[log(P(Otm))]を求め、処理は、ステップS318からステップS319に進む。
ステップS319では、対象モジュール決定部22は、最大対数尤度maxLP、又は、ACHMMの事後確率に基づいて、最大尤度モジュール#m*、又は、新規モジュールを、対象モジュールに決定する対象モジュールの決定の処理を行う。
そして、対象モジュール決定部22は、対象モジュールのモジュールインデクスを、更新部23に供給し、処理は、ステップS319からステップS320に進む。
ステップS320では、更新部23は、対象モジュール決定部22からのモジュールインデクスが表す対象モジュールが、最大尤度モジュール#m*、又は、新規モジュールのうちのいずれであるかを判定する。
ステップS320において、対象モジュールが、最大尤度モジュール#m*であると判定された場合、処理は、ステップS321に進み、更新部23は、最大尤度モジュール#m*のHMMパラメータλm*を更新する既存モジュール学習処理(図18)を行う。
また、ステップS320において、対象モジュールが、新規モジュールであると判定された場合、処理は、ステップS322に進み、更新部23は、新規モジュールのHMMパラメータを更新する新規モジュール学習処理(図19)を行う。
ステップS321の既存モジュール学習処理、及び、ステップS322の新規モジュール学習処理の後は、いずれも、処理は、ステップS323に進み、対象モジュール決定部22は、対象モジュール#mのHMMパラメータの更新(対象モジュール#mの追加学習)に用いられた学習データOtを、その対象モジュール#mに対応するサンプルバッファRSmに、学習データのサンプルとしてバッファリングするサンプル保存処理を行う。
そして、センサ11から、次の観測値otが出力され、観測時系列バッファ12に記憶されるのを待って、処理は、ステップS323から、ステップS316に戻り、以下、同様の処理が繰り返される。
[サンプル保存処理]
図59は、図58のステップS323で、対象モジュール決定部22(図8)が行うサンプル保存処理を説明するフローチャートである。
ステップS341において、対象モジュール決定部22(図8)は、対象モジュールになったモジュール#mのサンプルバッファRSmにバッファリングされている学習データの数(サンプル数)が、所定の数であるR個(以上)であるかどうかを判定する。
ステップS341において、対象モジュールになったモジュール#mのサンプルバッファRSmにバッファリングされている学習データのサンプル数が、R個(以上)でないと判定された場合、すなわち、モジュール#mのサンプルバッファRSmにバッファリングされている学習データのサンプル数が、R個未満である場合、処理は、ステップS342及びS343をスキップして、ステップS344に進み、対象モジュール決定部22(図8)は、モジュール#mのサンプルバッファRSmに、対象モジュールになったモジュール#mの学習に用いられた学習データOtを追加の形でバッファリングさせ、処理はリターンする。
また、ステップS341において、対象モジュールになったモジュール#mのサンプルバッファRSmにバッファリングされている学習データのサンプル数が、R個(以上)であると判定された場合、処理は、ステップS342に進み、対象モジュール決定部22(図8)は、モジュール#mのサンプルバッファRSmにバッファリングされている学習データのR個のサンプルのうちのいずれか1個のサンプルを、対象モジュールになったモジュール#mの学習に用いられた学習データOtと入れ替えるサンプル入れ替え条件が満たされるかどうかを判定する。
ここで、サンプル入れ替え条件としては、例えば、サンプルバッファRSmへの学習データのバッファリングを、最後に行ってから、モジュール#mの学習が、所定の回数であるSAMP_STEP回目の学習である、という第1の条件を採用することができる。
サンプル入れ替え条件として、第1の条件を採用する場合には、サンプルバッファRSmにバッファリングされている学習データのサンプル数が、R個に達してからは、モジュール#mの学習が、SAMP_STEP回だけ行われるごとに、サンプルバッファRSmにバッファリングされている学習データの入れ替えが行われる。
また、サンプル入れ替え条件としては、サンプルバッファRSmにバッファリングされている学習データの入れ替えを行う入れ替え確率pを設定しておき、2つの数字のうちの一方の数字を、確率pで、他方の数字を、確率1-pで、ランダムに発生したときに、その発生した数字が、一方の数字である、という第2の条件を採用することができる。
サンプル入れ替え条件として、第2の条件を採用する場合には、入れ替え確率pを、1/SAMP_STEPとすることにより、サンプルバッファRSmにバッファリングされている学習データのサンプル数が、R個に達してからは、期待値的には、第1の条件と同様に、モジュール#mの学習が、SAMP_STEP回だけ行われるごとに、サンプルバッファRSmにバッファリングされている学習データの入れ替えが行われる。
ステップS342において、サンプル入れ替え条件が満たされないと判定された場合、処理は、ステップS343及びS344をスキップして、リターンする。
また、ステップS342において、サンプル入れ替え条件が満たされると判定された場合、処理は、ステップS343に進み、対象モジュール決定部22(図8)は、対象モジュールになったモジュール#mのサンプルバッファRSmにバッファリングされている学習データのR個のサンプルのうちの1個のサンプルをランダムに選択して、サンプルバッファRSmから削除する。
そして、処理は、ステップS343からステップS344に進み、対象モジュール決定部22(図8)は、サンプルバッファRSmに、対象モジュールになったモジュール#mの学習に用いられた学習データOtを追加の形でバッファリングさせ、これにより、サンプルバッファRSmにバッファリングされている学習データのサンプル数を、R個にして、処理はリターンする。
以上のようにして、サンプル保存処理では、R回目の、モジュール#mの学習(追加学習)が行われるまでは、いままでのモジュール#mの学習に用いられた学習データすべてが、サンプルバッファRSmにバッファリングされ、モジュール#mの学習の回数が、R回を超えると、いままでのモジュール#mの学習に用いられた学習データの一部が、サンプルバッファRSmにバッファリングされる。
[対象モジュールの決定]
図60は、図58のステップS319で行われる、対象モジュールの決定の処理を説明するフローチャートである。
ステップS351において、対象モジュール決定部22は、新規モジュールを、対象モジュールとして、新規モジュール学習処理(図19)を仮に行った場合と、最大尤度モジュールを、対象モジュールとして、既存モジュール学習処理(図18)を仮に行った場合とのそれぞれについて、ACHMMのエントロピーH(θ)と、対数尤度log(P(Ot|θ))とを求める仮学習処理を行う。
なお、仮学習処理の詳細については、後述するが、仮学習処理は、ACHMM記憶部16(図8)に現に記憶されているACHMMのモデルパラメータのコピーを用いて行われる。したがって、仮学習処理が行われることによって、ACHMM記憶部16に記憶されているACHMMのモデルパラメータは、変更(更新)されない。
ステップS351の仮学習処理の後、処理は、ステップS352に進み、対象モジュール決定部22(図8)は、ACHMMのモジュール総数Mが、1であるかどうかを判定する。
ここで、ステップS352において、モジュール総数Mの判定の対象となるACHMMは、仮学習処理後のACHMMではなく、ACHMM記憶部16に現に記憶されているACHMMである。
ステップS352において、ACHMMのモジュール総数Mが、1であると判定された場合、すなわち、ACHMMが、1個のモジュール#1だけで構成される場合、処理は、ステップS353に進み、以下、ステップS353ないしS355において、図10のステップS31ないしS33と同様に、最大対数尤度maxLPと閾値尤度THとの大小関係に基づいて、対象モジュールが決定される。
すなわち、ステップS353では、対象モジュール決定部22(図8)は、最大尤度モジュール#m*の対数尤度である最大対数尤度maxLPが、図13ないし図16で説明したようにして設定された尤度閾値TH以上であるかどうかを判定する。
ステップS353において、最大対数尤度maxLPが、尤度閾値TH以上であると判定された場合、処理は、ステップS354に進み、対象モジュール決定部22は、最大尤度モジュール#m*を、対象モジュールに決定し、処理は、リターンする。
また、ステップS353において、最大対数尤度maxLPが、尤度閾値TH以上でないと判定された場合、処理は、ステップS355に進み、対象モジュール決定部22は、新規モジュールを、対象モジュールに決定し、処理は、ステップS356に進む。
ステップS356では、対象モジュール決定部22は、ACHMMのエントロピーH(θ)を用いて、ACHMMの対数事前確率log(P(θ))を、式log(P(θ))=-prior_balance×H(θ)に従って求めるための比例定数prior_balanceを求めて、処理は、リターンする。
すなわち、上述のステップS351で行われる仮学習処理において求められる、新規モジュール学習処理(図19)を仮に行った場合の、ACHMMのエントロピーH(θ)と、対数尤度log(P(Ot|θ))とを、それぞれ、ETPnewと、LPROBnewと表すこととする。
さらに、仮学習処理において求められる、最大尤度モジュールを、対象モジュールとして、既存モジュール学習処理(図18)を仮に行った場合の、ACHMMのエントロピーH(θ)と、対数尤度log(P(Ot|θ))とを、それぞれ、ETPwinと、LPROBwinと表すこととする。
ステップS356では、対象モジュール決定部22は、新規モジュール学習処理(図19)を仮に行った場合の、その新規モジュール学習処理後のACHMMのエントロピーETPnew、及び、対数尤度LPROBnew、並びに、既存モジュール学習処理(図18)を仮に行った場合の、その既存モジュール学習処理後のACHMMのエントロピーETPwin、及び、対数尤度LPROBwinを用い、式prior_balance=(LPROBnew-LPROBwin)/(ETPnew-ETPwin)に従って、比例定数prior_balanceを求める。
一方、ACHMMのモジュール総数Mが、1でないと判定された場合、すなわち、ACHMMが、2個以上ののモジュール#1ないしMで構成される場合、処理は、ステップS357に進み、対象モジュール決定部22は、ステップS356で求めた比例定数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))となる。
いま、新規モジュール学習処理(図19)を仮に行った場合の、その新規モジュール学習処理後のACHMMのモデルパラメータθを、θnewと表すとともに、既存モジュール学習処理(図18)を仮に行った場合の、その既存モジュール学習処理後の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)
で表される。
一方、図60において、ステップS356での比例定数prior_balanceの算出は、ACHMMのモジュール総数Mが、1であると判定され(ステップS352)、最大対数尤度maxLPが、尤度閾値TH以上でないと判定されることにより(ステップS353)、ACHMMにおいて、初めて生成された新規モジュールが、対象モジュールとされる場合(ステップS355)に行われる。
したがって、その直前に行われたステップS351の仮学習処理で求められる、新規モジュール学習処理後のACHMMのエントロピーETPnew、及び、対数尤度LPROBnewは、ACHMMが1個のモジュールで構成される場合に、そのモジュールの対数尤度(つまりは、最大対数尤度maxLP)が、尤度閾値TH以上でないときに、ACHMMに、初めて、新規モジュールを追加し、その新規モジュールで、学習データの追加学習を行って得られるACHMMのエントロピー、及び、対数尤度である。
また、直前のステップS351の仮学習処理で求められる、既存モジュール学習処理後のACHMMのエントロピーETPwin、及び、対数尤度LPROBwinは、ACHMMが1個のモジュールで構成される場合に、そのモジュールの対数尤度(つまりは、最大対数尤度maxLP)が、尤度閾値TH以上でないときに、ACHMMを構成する1個のモジュールで、学習データの追加学習を行って得られるACHMMのエントロピー、及び、対数尤度である。
ステップS356において、式prior_balance=(LPROBnew-LPROBwin)/(ETPnew-ETPwin)に従って求められる比例定数prior_balanceの算出には、以上のような、新規モジュール学習処理後のACHMMのエントロピーETPnew、及び、対数尤度LPROBnew、並びに、既存モジュール学習処理後のACHMMのエントロピーETPwin、及び、対数尤度LPROBwinが用いられている。
そして、ステップS356において、式prior_balance=(LPROBnew-LPROBwin)/(ETPnew-ETPwin)に従って求められる比例定数prior_balanceは、式△AP=(LPROBnew−LPROBwin)−prior_balance×(ETPnew−ETPwin)で表される事後確率の改善量△APが0となる場合のprior_balanceである。
すなわち、ステップS356において、式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への新規モジュールの追加の仕方に影響を及ぼす。
図60では、ACHMMに、新規モジュールが、初めて追加されるまでは、対象モジュールの決定、つまり、ACHMMに、新規モジュールを追加するかどうかの決定を、閾値尤度THを用いて行い、その閾値尤度THを用いて、ACHMMに、新規モジュールが、初めて追加されるときのACHMMの事後確率の改善量△APを0(基準)として、比例定数prior_balanceが求められる。
このようにして求められる比例定数prior_balanceは、観測空間において、観測値をクラスタリングするクラスタリング粒度を、ベイス推定で求められる事後確率P(θ|O)に対してエントロピーH(θ)が影響する度合い(影響度)に換算する係数あるということができる。
そして、その後の対象モジュールの決定は、比例定数prior_balanceを用いて求められる事後確率の改善量△APに基づいて行われるので、所望のクラスタリング粒度を実現するように、理論的、かつ、柔軟(適応的)に、新規モジュールが、ACHMMに追加され、モデル化対象について、過不足のない数のモジュールで構成されるACHMMを得ることができる。
図61は、図60のステップS351で行われる仮学習処理を説明するフローチャートである。
仮学習処理では、ステップS361において、対象モジュール決定部22(図8)は、更新部23を制御することにより、ACHMM記憶部16に記憶されたACHMM(のモデルパラメータ)のコピー、及び、ACHMMの学習に用いる、例えば、バッファbuffer_winner_sample等の変数のコピーを生成する。
ここで、仮学習処理においては、以降の処理は、ステップS361で生成されたACHMM及び、変数のコピーを用いて行われる。
ステップS361の後、処理は、ステップS362に進み、対象モジュール決定部22は、更新部23を制御することにより、ACHMM及び変数のコピーを用いて、新規モジュール学習処理(図19)を行い、処理は、ステップS363に進む。
ここで、ACHMM及び変数のコピーを用いて行われる新規モジュール学習処理を、新規モジュール仮学習処理ともいう。
ステップS363では、対象モジュール決定部22は、新規モジュール仮学習処理で生成された新規モジュール#Mにおいて、最新(現在時刻t)の学習データOtが観測される対数尤度log(P(Ot|λM))を、新規モジュール仮学習処理後のACHMMの対数尤度LPROBnew=log(P(Otnew))として求め、処理は、ステップS364に進む。
ここで、ステップS362の新規モジュール仮学習処理(図19)では、新規モジュール#mが、最大尤度モジュールとなるまで、図19のステップS115の新規モジュール#mの追加学習(式(3)ないし式(16)に従ったパラメータの更新)が、繰り返し行われる。
したがって、ステップ363において、新規モジュール仮学習処理後のACHMMの対数尤度LPROBnew=log(P(Otnew))が求められるときには、新規モジュール#mが、最大尤度モジュールになっており、その最大尤度モジュールである新規モジュール#mの対数尤度(最大対数尤度)が、新規モジュール仮学習処理後のACHMMの対数尤度LPROBnew=log(P(Otnew))として求められる。
なお、ステップS362の新規モジュール仮学習処理での、新規モジュール#mの追加学習の繰り返しの回数は、所定の回数(例えば、20回等)に制限され、新規モジュール#mの追加学習は、学習率γを、式γ=1/(Qlearn[m]+1.0)に従って更新しながら、新規モジュール#mが、最大尤度モジュールとなるまで、繰り返される。
そして、新規モジュール#mの追加学習を、所定の回数だけ繰り返しても、新規モジュール#mが、最大尤度モジュールとならない場合、ステップS363では、新規モジュール#mではなく、最大尤度モジュールの対数尤度(最大対数尤度)が、新規モジュール仮学習処理後のACHMMの対数尤度LPROBnew=log(P(Otnew))として求められる。
図55のステップS322の新規モジュール学習処理でも、ステップS362の新規モジュール仮学習処理と同様に、新規モジュール#mの追加学習は、繰り返しの回数を所定の回数に制限して、新規モジュール#mが、最大尤度モジュールとなるまで、繰り返される。
ステップS364では、対象モジュール決定部22は、更新部23を制御することにより、新規モジュール仮学習処理後のACHMMを対象として、ACHMMのエントロピーH(θ)の算出処理を行うことで、新規モジュール仮学習処理後のACHMMのエントロピーETPnew=H(θnew)を求め、処理は、ステップS365に進む。
ここで、ACHMMのエントロピーH(θ)の算出処理については、後述する。
ステップS365では、対象モジュール決定部22は、更新部23を制御することにより、ACHMM及び変数のコピーを用いて、既存モジュール学習処理(図18)を行い、処理は、ステップS366に進む。
ここで、ACHMM及び変数のコピーを用いて行われる既存モジュール学習処理を、既存モジュール仮学習処理ともいう。
ステップS366では、対象モジュール決定部22は、既存モジュール仮学習処理で最大尤度モジュールとなったモジュール#m*において、最新(現在時刻t)の学習データOtが観測される対数尤度log(P(Ot|λm*))を、既存モジュール仮学習処理後のACHMMの対数尤度LPROBwin=log(P(Otwin))として求め、処理は、ステップS367に進む。
ステップS367では、対象モジュール決定部22は、更新部23を制御することにより、既存モジュール仮学習処理後のACHMMを対象として、ACHMMのエントロピーH(θ)の算出処理を行うことで、既存モジュール仮学習処理後のACHMMのエントロピーETPwin=H(θwin)を求め、処理は、リターンする。
図62は、図61のステップS364、及び、S367で行われる、ACHMMのエントロピーH(θ)の算出処理を説明するフローチャートである。
ステップS371において、対象モジュール決定部22(図8)は、更新部23を制御することにより、ACHMMを構成するM個のモジュール#1ないし#Mのそれぞれに対応付けられたサンプルバッファRS1ないしRSMから、所定数であるZサンプルの学習データを、エントロピーH(θ)の算出用データとして抽出し、処理は、ステップS372に進む。
ここで、サンプルバッファRS1ないしRSMから抽出する算出用データの数Zとしては、任意の値をとすることができるが、ACHMMを構成するモジュールの数に比較して、十分大きい値であることが望ましい。例えば、ACHMMを構成するモジュールの数が200程度である場合、値Zとしては、1000程度を採用することができる。
また、サンプルバッファRS1ないしRSMからの算出用データとしてのZサンプルの学習データの抽出の方法としては、例えば、サンプルバッファRS1ないしRSMの中から、ランダムに、1つのサンプルバッファRSmを選択し、そのサンプルバッファRSmに記憶されている学習データのうちの1サンプルの学習データを、ランダムに抽出することを、Z回だけ繰り返す方法を採用することができる。
なお、モジュール#mの追加学習が行われた回数(モジュール#mが、対象モジュールになった回数)を、モジュール#1ないし#Mすべての追加学習の回数の総和で除算した値を、確率ωmとして、サンプルバッファRS1ないしRSMの中からのサンプルバッファRSmの選択は、確率ωmで行うようにすることができる。
ここで、サンプルバッファRS1ないしRSMから抽出されたZサンプルの算出用データのうちの、i番目の算出用データを、SOiと表す。
ステップS372では、対象モジュール決定部22は、モジュール#1ないし#Mそれぞれの、Zサンプルの算出用データSOiそれぞれに対する尤度P(SOim)を求めて、処理は、ステップS373に進む。
ステップS373では、対象モジュール決定部22は、Zサンプルの算出用データSOiそれぞれについて、算出用データSOiに対する各モジュール#mの尤度P(SOim)を、ACHMMを構成するすべてのモジュール#1ないし#Mについての総和が1.0になる値である確率に確率化(確率分布化)する。
すなわち、いま、尤度P(SOim)を、第i行第m列のコンポーネントとする、Z行×M列の行列を、尤度行列ということとすると、ステップS373では、尤度行列の各行ごとに、その行のコンポーネントである尤度P(SOi1),P(SOi2),・・・,P(SOiM)の総和が、1.0になるように、その尤度P(SOi1),P(SOi2),・・・,P(SOiM)それぞれが正規化される。
より具体的には、尤度P(SOim)を確率化して得られる確率を、φm(SOi)と表すこととすると、ステップS373では、式(17)に従って、尤度P(SOim)が、確率φm(SOi)に確率化される。
Figure 2011059817
・・・(17)
ここで、式(17)の変数mについてのサメ−ション(Σ)は、変数mを、1からMまでの整数に変えてのサメ−ションである。
ステップS373の後、処理は、ステップS374に進み、対象モジュール決定部22は、確率φm(SOi)を、算出用データSOiが発生する発生確率として、算出用データSOiのエントロピーε(SOi)を、式(18)に従って求めて、処理は、ステップS375に進む。
Figure 2011059817
・・・(18)
ここで、式(18)の変数mについてのサメ−ションは、変数mを、1からMまでの整数に変えてのサメ−ションである。
ステップS375では、対象モジュール決定部22は、算出用データSOiのエントロピーε(SOi)を用い、式(19)に従って、モジュール#mのエントロピーH(λm)を算出し、処理は、ステップS376に進む。
Figure 2011059817
・・・(19)
ここで、式(19)の変数iについてのサメ−ションは、変数iを、1からZまでの整数に変えてのサメ−ションである。
また、式(19)において、ωm(SOi)は、算出用データSOiのエントロピーε(SOi)を、モジュール#mのエントロピーH(λm)に影響させる度合いとしての重みであり、この重みωm(SOi)は、尤度P(SOi|λm)を用い、式(20)に従って求められる。
Figure 2011059817
・・・(20)
ここで、式(19)の変数iについてのサメ−ションは、変数iを、1からZまでの整数に変えてのサメ−ションである。
ステップS376では、対象モジュール決定部22は、モジュール#mのエントロピーH(λm)の、モジュール#1ないし#Mについての総和を、式(21)に従い、ACHMMのエントロピーH(θ)として求め、処理は、リターンする。
Figure 2011059817
・・・(21)
ここで、式(21)の変数mについてのサメ−ションは、変数mを、1からMまでの整数に変えてのサメ−ションである。
なお、式(20)で求められる重みω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(SOim)が、他の算出用データに比較して大きくなるモジュール#mが存在する場合には、そのモジュール#mについては、そのモジュール#mだけが優位に高い尤度になる算出データが存在しないことになり、そのモジュール#mの存在が、ACHMM全体の冗長性を生み出している。
つまり、エントロピーε(SOi)が高い算出用データSOiが観測される尤度P(SOim)が、他の算出用データに比較して高くなるモジュール#mの存在は、ACHMMを、「コンパクトでない」状況にたらしめていることに対する寄与度が大きい。
そのため、モジュール#mのエントロピーH(λm)を求める式(19)では、モジュール#mの尤度P(SOim)が高い算出用データSOiのエントロピーε(SOi)を、エントロピーH(λm)に、より影響させるために、エントロピーε(SOi)が、高い尤度P(SOim)に比例する大きな重みωm(SOi)で加算される。
一方、エントロピーε(SOi)が高い算出用データSOiが観測される尤度P(SOim)が低いモジュール#mは、ACHMMを、「コンパクトでない」状況にたらしめていることに対する寄与度が小さい。
そのため、モジュール#mのエントロピーH(λm)を求める式(19)では、モジュール#mの尤度P(SOim)が低い算出用データSOiのエントロピーε(SOi)が、低い尤度P(SOim)に比例する小さな重みωm(SOi)で加算される。
なお、式(20)によれば、エントロピーε(SOi)が小さい算出用データSOiが観測される尤度P(SOim)が大きくなるモジュール#mについては、重みωm(SOi)が大きくなり、式(19)において、そのような大きな重みωm(SOi)で、小さいエントロピーε(SOi)が加算されるが、エントロピーε(SOi)のスケールに対して、尤度P(SOim)、ひいては、重みωm(SOi)のスケールが小さいので、式(19)のモジュール#mのエントロピーH(λm)は、そのような小さいエントロピーε(SOi)の影響は、あまり受けない。
つまり、式(19)のモジュール#mのエントロピーH(λm)は、モジュール#mにおいて、エントロピーε(SOi)が高い算出用データSOiが観測される尤度P(SOim)が高い場合の影響を強く受け、値が大きくなる。
図63は、図60のステップS357で行われる、事後確率に基づく対象モジュールの決定の処理を説明するフローチャートである。
事後確率に基づく対象モジュールの決定の処理は、図60で説明したように、ACHMMが、1個のモジュールで構成され、最大対数尤度maxLP(ACHMMを構成する1個のモジュールの対数尤度)が、閾値尤度TH未満となって、新規モジュールが対象モジュールとなり、比例定数prior_balanceが求められた後、したがって、ACHMMが、2個以上(複数)のモジュールで構成されるようになった以降に行われる。
事後確率に基づく対象モジュールの決定の処理では、ステップS391において、対象モジュール決定部22(図8)は、既存モジュール仮学習処理後のACHMMの事後確率に対する、新規モジュール仮学習処理後のACHMMの事後確率の改善量△APを、直前に行われた仮学習処理(図60のステップS351)で求められた、既存モジュール仮学習処理後のACHMMのエントロピーETPwin、及び、対数尤度LPROBwin、並びに、新規モジュール仮学習後のACHMMのエントロピーETPnew、及び、対数尤度LPROBnewを用いて求める。
すなわち、対象モジュール決定部22は、既存モジュール仮学習処理後のACHMMのエントロピーETPwinに対する、新規モジュール仮学習後のACHMMのエントロピーETPnewの改善量△ETPを、式(22)に従って求める。
Figure 2011059817
・・・(22)
さらに、対象モジュール決定部22は、既存モジュール仮学習処理後のACHMMの対数尤度LPROBwinに対する、新規モジュール仮学習後のACHMMの対数尤度LPROBnewの改善量△LPROBを、式(23)に従って求める。
Figure 2011059817
・・・(23)
そして、対象モジュール決定部22は、エントロピーの改善量△ETP、対数尤度の改善量△LPROB、及び、比例定数prior_balanceを用い、上述の式△AP=(LPROBnew−LPROBwin)−prior_balance×(ETPnew−ETPwin)に一致する式(24)に従って、既存モジュール仮学習処理後のACHMMの事後確率に対する、新規モジュール仮学習処理後のACHMMの事後確率の改善量△APを求める。
Figure 2011059817
・・・(24)
ステップS391において、ACHMMの事後確率の改善量△APが求められた後、処理は、ステップS392に進み、対象モジュール決定部22は、ACHMMの事後確率の改善量△APが、0以下であるかどうかを判定する。
ステップS392において、ACHMMの事後確率の改善量△APが、0以下であると判定された場合、すなわち、新規モジュールを対象モジュールとして、追加学習を行った後のACHMMの事後確率が、最大尤度モジュールを対象モジュールとして、追加学習を行った後のACHMMの事後確率より高くならない場合、処理は、ステップS393に進み、対象モジュール決定部22は、最大尤度モジュール#m*を、対象モジュールに決定し、処理は、リターンする。
また、ステップS392において、ACHMMの事後確率の改善量△APが、0以下でないと判定された場合、すなわち、新規モジュールを対象モジュールとして、追加学習を行った後のACHMMの事後確率が、最大尤度モジュールを対象モジュールとして、追加学習を行った後のACHMMの事後確率より高くなる場合、処理は、ステップS394に進み、対象モジュール決定部22は、新規モジュールを、対象モジュールに決定し、処理は、リターンする。
以上のように、事後確率の改善量に基づいて、尤度最大モジュール、又は、新規モジュールを、対象モジュールに決定する、事後確率に基づく対象モジュールの決定の方法を、図28や図51のエージェントに適用することにより、エージェントは、エージェントがおかれた移動環境内を動き、経験を積んでいく過程で、適宜、ACHMMが既に有する既存のモジュールの学習や、必要な新規モジュールの追加を繰り返し、移動環境の規模や構造についての事前知識なしで、移動環境の規模に適したモジュール数で構成される、移動環境の状態遷移モデルとしてのACHMMが構築される。
なお、事後確率に基づく対象モジュールの決定の方法は、ACHMMの他、モジュール追加型の学習アーキテクチャを採用する学習モデル(以下、モジュール追加アーキテクチャ型学習モデルともいう)に適用することができる。
モジュール追加アーキテクチャ型学習モデルとしては、ACHMMのように、モジュールとして、HMMを採用し、時系列データを競合、追加的に学習する学習モデルの他、例えば、モジュールとして、リカレントニューラルネットワーク(RNN)等の、時系列データを学習し、時系列パターンを記憶する時系列パターン記憶モデル等を採用し、時系列データを競合、追加的に学習する学習モデルがある。
すなわち、事後確率に基づく対象モジュールの決定の方法は、HMMやRNN等の時系列パターン記憶モデル、その他の任意のモデルをモジュールとして採用するモジュール追加アーキテクチャ型学習モデルに適用することができる。
図64は、本発明の情報処理装置を適用した学習装置の第3実施の形態の構成例を示すブロック図である。
なお、図中、図1の場合と対応する部分については、同一の符号を付してあり、以下では、その説明は、適宜省略する。
図64において、学習装置は、センサ11、観測時系列バッファ12、モジュール学習部310、及び、モジュール追加アーキテクチャ型学習モデル記憶部320を含む。
図64の学習装置において、観測時系列バッファ12に記憶された観測値は、上述したウインドウ長Wの時系列データの単位で、逐次、モジュール学習部310の尤度算出部311、及び、更新部313に供給される。
モジュール学習部310は、尤度算出部311、対象モジュール決定部312、及び、更新部313を含む。
尤度算出部311は、観測時系列バッファ12から逐次供給される観測値の時系列であるウインドウ長Wの時系列データを、学習に用いる学習データとし、モジュール追加アーキテクチャ型学習モデル記憶部320に記憶されたモジュール追加アーキテクチャ型学習モデルを構成する各モジュールについて、モジュールにおいて、学習データが観測される尤度を求め、対象モジュール決定部312に供給する。
対象モジュール決定部312は、モジュール追加アーキテクチャ型学習モデル記憶部320に記憶されたモジュール追加アーキテクチャ型学習モデルのうちの、尤度算出部311からの尤度が最大の最大尤度モジュール、又は、新規モジュールを、モジュール追加アーキテクチャ型学習モデルを構成するモジュールである時系列パターン記憶モデルのモデルパラメータを更新する対象の対象モジュールに決定し、その対象モジュールを表すモジュールインデクスを、更新部313に供給する。
すなわち、対象モジュール決定部312は、学習データを用いて、最大尤度モジュールの学習を行った場合と、新規モジュールの学習を行った場合とのそれぞれの場合のモジュール追加アーキテクチャ型学習モデルの事後確率に基づいて、尤度最大モジュール、又は、新規のモジュールを、対象モジュールに決定し、その対象モジュールを表すモジュールインデクスを、更新部313に供給する。
更新部313は、観測時系列バッファ12からの学習データを用いて、対象モジュール決定部312から供給されるモジュールインデクスが表すモジュールである時系列パターン記憶モデルのモデルパラメータを更新する追加学習を行い、更新後のモデルパラメータによって、モジュール追加アーキテクチャ型学習モデル記憶部320の記憶内容を更新する。
モジュール追加アーキテクチャ型学習モデル記憶部320は、時系列パターンを記憶する時系列パターン記憶モデルを、最小の構成要素であるモジュールとして有するモジュール追加アーキテクチャ型学習モデルを記憶する。
図65は、モジュール追加アーキテクチャ型学習モデルのモジュールとなる時系列パターン記憶モデルの例を示す図である。
図65では、時系列パターン記憶モデルとして、RNNが採用されている。
図65では、RNNは、入力層、中間層(隠れ層)、及び出力層の3層で構成されている。入力層、中間層、及び出力層は、それぞれ任意の数の、ニューロンに相当するユニットにより構成される。
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)は、例えば、式(25)に従って求められる。
Figure 2011059817
・・・(25)
ここで、式(25)において、od(τ)は、時系列データOtの時刻τのサンプルである入力ベクトルoτの第d次元のコンポーネントを表し、o^d(τ)は、入力ベクトルoτ-1に対して、RNNが出力する出力ベクトルである、時刻τの入力ベクトルoτの予測値(ベクトル)o^τの第d次元のコンポーネントを表す。
以上のようなRNNを、モジュールとして採用するモジュール追加アーキテクチャ型学習モデルの学習では、モジュール学習部310(図64)において、ACHMMの場合と同様に、閾値(閾値尤度TH)を用いて、対象モジュールを決定することができる。
すなわち、閾値を用いて、対象モジュールを決定する場合には、モジュール学習部310は、学習データOtについて、モジュール追加アーキテクチャ型学習モデルの各モジュール#mの予測誤差Em(t)を、式(25)に従って求める。
さらに、モジュール学習部310は、式Ewin=minm[Em(t)]に従い、モジュール追加アーキテクチャ型学習モデルの各モジュール#mの予測誤差Em(t)のうちの最小の予測誤差(最小予測誤差)Ewinを求める。
ここで、minm[]は、インデクスmに対して変化するかっこ[]内の値の最小値を表す。
モジュール学習部310は、最小予測誤差Ewinが、所定の閾値Eadd以下である場合には、その最小予測誤差Ewinが得られたモジュールを、対象モジュールに決定し、最小予測誤差Ewinが、所定の閾値Eadd以下でない場合には、新規モジュールを、対象モジュールに決定する。
モジュール学習部310では、以上のように、閾値を用いて、対象モジュールを決定する他、事後確率に基づいて、対象モジュールを決定することができる。
事後確率に基づいて、対象モジュールを決定する場合には、時系列データOtに対する、モジュール#mであるRNNの尤度が必要となる。
そこで、モジュール学習部310では、尤度算出部311が、モジュール追加アーキテクチャ型学習モデルの各モジュール#mの予測誤差Em(t)を、式(25)に従って求める。さらに、尤度算出部311は、予測誤差Em(t)を、式(26)に従って確率化することで、0.0以上1.0以下の実数値であり、かつ、総和が1.0となる各モジュール#mの尤度(RNNパラメータ(ウエイト)λmで定義されるRNNの尤度)P(Otm)を求め、対象モジュール決定部312に供給する。
Figure 2011059817
・・・(26)
ここで、時系列データOtに対する、モジュール追加アーキテクチャ型学習モデルθ(モデルパラメータθで定義されるモジュール追加アーキテクチャ型学習モデル)の尤度P(Ot|θ)として、式P(Ot|θ)=maxm[P(Otm)]に従い、モジュール追加アーキテクチャ型学習モデルの各モジュールの尤度P(Otm)のうちの最大値を採用するとともに、モジュール追加アーキテクチャ型学習モデルθのエントロピーH(θ)として、ACHMMの場合と同様にして、尤度P(Otm)から求められるエントロピーを採用することとすると、モジュール追加アーキテクチャ型学習モデルθの対数事前確率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の場合と同様にして求めることができる。
モジュール学習部310では、対象モジュール決定部312が、尤度算出部311から供給される尤度P(Otm)を用い、上述したようにして、モジュール追加アーキテクチャ型学習モデルθの、ベイズ推定に基づく事後確率の改善量△APを求め、その改善量△APに基づいて、対象モジュールを決定する。
図66は、図64のモジュール学習部310が行うモジュール追加アーキテクチャ型学習モデルθの学習の処理(モジュール学習処理)を説明するフローチャートである。
なお、図66のモジュール学習処理では、図17で説明した可変ウインドウ学習を行うが、図9で説明した固定ウインドウ学習を行うことも可能である。
図66のモジュール学習処理のステップS411ないしS423では、図58のモジュール学習処理のステップS311ないしS323とそれぞれ同様の処理が行われる。
但し、図66のモジュール学習処理は、RNNをモジュールとするモジュール追加アーキテクチャ型学習モデルを対象とする点で、HMMをモジュールとするACHMMを対象とする図58のモジュール学習処理と異なり、図66のモジュール学習処理では、かかる点に起因して、図58のモジュール学習処理とは一部異なる処理が行われる。
すなわち、ステップS411において、更新部313(図64)は、初期化処理として、モジュール追加アーキテクチャ型学習モデル記憶部320に記憶されるモジュール追加アーキテクチャ型学習モデルを構成する1個目のモジュール#1となるRNNの生成、及び、モジュール総数Mへの、初期値としての1のセットを行う。
ここで、RNNの生成では、あらかじめ決定されたユニットの数の入力層、中間層、及び、出力層、並びに、コンテキストユニットのRNNが生成され、ウエイトが、例えば、乱数によって初期化される。
その後、センサ11から、観測値otが出力され、観測時系列バッファ12に記憶されるのを待って、処理は、ステップS411からステップS412に進み、モジュール学習部310(図64)は、時刻tを、t=1にセットし、処理は、ステップS413に進む。
ステップS413では、モジュール学習部310は、時刻tが、ウインドウ長Wに等しいかどうかを判定する。
ステップS413において、時刻tがウインドウ長Wに等しくないと判定された場合、センサ11から、次の観測値otが出力され、観測時系列バッファ12に記憶されるのを待って、処理は、ステップS414に進む。
ステップS414では、モジュール学習部310は、時刻tを1だけインクリメントして、処理は、ステップS413に戻り、以下、同様の処理が繰り返される。
また、ステップS413において、時刻tがウインドウ長Wに等しいと判定された場合、すなわち、観測時系列バッファ12に、ウインドウ長W分の観測値の時系列である時系列データOt=W={o1,・・・,oW}が記憶された場合、対象モジュール決定部312は、1個だけのモジュール#1で構成されるモジュール追加アーキテクチャ型学習モデルの、そのモジュール#1を、対象モジュールに決定する。
そして、対象モジュール決定部312は、対象モジュールであるモジュール#1を表すモジュールインデクスm=1を、更新部313に供給し、処理は、ステップS413からステップS415に進む。
ステップS415では、更新部313は、対象モジュール決定部312からのモジュールインデクスm=1が表す対象モジュールであるモジュール#1の追加学習を、観測時系列バッファ12に記憶されたウインドウ長Wの時系列データOt=W={o1,・・・,oW}を、学習データとして用いて行う。
ここで、モジュール追加アーキテクチャ型学習モデルのモジュールが、RNNである場合には、RNNの追加学習の方法としては、例えば、特開2008-287626号公報に記載されている方法を採用することができる。
ステップS415では、更新部313は、さらに、バッファbuffer_winner_sampleに、学習データOt=Wをバッファリングする。
また、更新部313は、勝者期間情報cnt_since_winに、初期値としての1をセットする。
さらに、更新部313は、前回勝者情報past_winに、初期値としての、モジュール#1のモジュールインデクスである1をセットする。
そして、更新部313は、サンプルバッファRS1に、学習データOtをバッファリングする。
その後、センサ11から、次の観測値otが出力され、観測時系列バッファ12に記憶されるのを待って、処理は、ステップS415からステップS416に進み、モジュール学習部310が、時刻tを1だけインクリメントして、処理は、ステップS417に進む。
ステップS417では、尤度算出部311は、観測時系列バッファ12に記憶されたウインドウ長Wの最新の時系列データOt={ot-W+1,・・・,ot}を、学習データとし、モジュール追加アーキテクチャ型学習モデル記憶部16に記憶されたモジュール追加アーキテクチャ型学習モデルを構成するすべてのモジュール#1ないし#Mのそれぞれについて、モジュール尤度P(Otm)を求めて、対象モジュール決定部312に供給する。
すなわち、尤度算出部311は、各モジュール#mについて、モジュール#mであるRNN(以下、RNN#mとも記載する)に対して、学習データOt(の各時刻のサンプルoτ)を、入力ベクトルとして与え、入力ベクトルに対する出力ベクトルの予測誤差Em(t)を、式(25)に従って求める。
さらに、尤度算出部311は、予測誤差Em(t)を用い、RNNパラメータλmで定義されるRNN#mの尤度であるモジュール尤度P(Otm)を、式(26)に従って求め、対象モジュール決定部312に供給する。
そして、処理は、ステップS417からステップS418に進み、対象モジュール決定部312は、モジュール追加アーキテクチャ型学習モデルを構成するモジュール#1ないし#Mのうちの、尤度算出部311からのモジュール尤度P(Otm)が最大の最大尤度モジュール#m*=argmaxm[P(Otm)]を求める。
さらに、対象モジュール決定部312は、尤度算出部311からのモジュール尤度P(Otm)から、最大対数尤度maxLP=maxm[log(P(Otm))](最大尤度モジュール#m*のモジュール尤度P(Otm*)の対数)を求め、処理は、ステップS418からステップS419に進む。
ステップS419では、対象モジュール決定部312は、最大対数尤度maxLP、又は、モジュール追加アーキテクチャ型学習モデルの事後確率に基づいて、最大尤度モジュール#m*、又は、新規に生成するRNNである新規モジュールを、RNNパラメータを更新する対象モジュールに決定する対象モジュールの決定の処理を行う。
そして、対象モジュール決定部312は、対象モジュールのモジュールインデクスを、更新部313に供給し、処理は、ステップS419からステップS420に進む。
ここで、ステップS419の対象モジュールの決定の処理は、図60で説明した場合と同様にして行われる。
すなわち、モジュール追加アーキテクチャ型学習モデルが、1個だけのモジュール#1で構成される場合には、最大対数尤度maxLPと、あらかじめ設定された閾値との大小関係に基づき、最大対数尤度maxLPが閾値以上であるときには、最大尤度モジュール#m*が、対象モジュールに決定され、最大対数尤度maxLPが閾値以上でないときには、新規モジュールが、対象モジュールに決定される。
さらに、モジュール追加アーキテクチャ型学習モデルが、1個だけのモジュール#1で構成される場合において、新規モジュールが、対象モジュールに決定されたときには、図60で説明したようにして、比例定数prior_balanceが求められる。
また、モジュール追加アーキテクチャ型学習モデルが、2個以上のM個のモジュール#1ないし#Mで構成される場合には、図60、及び、図63で説明したように、既存モジュール仮学習処理後のモジュール追加アーキテクチャ型学習モデルの事後確率に対する、新規モジュール仮学習処理後のモジュール追加アーキテクチャ型学習モデルの事後確率の改善量△APが、比例定数prior_balanceを用いて求められる。
そして、事後確率の改善量△APが、0以下である場合には、最大尤度モジュール#m*が、対象モジュールに決定される。
一方、事後確率の改善量△APが、0以下でない場合には、新規モジュールが、対象モジュールに決定される。
ここで、モジュール追加アーキテクチャ型学習モデルの既存モジュール仮学習処理とは、モジュール追加アーキテクチャ型学習モデル320に記憶されたモジュール追加アーキテクチャ型学習モデル、及び、変数のコピーを用いて行われる既存モジュール学習処理である。
モジュール追加アーキテクチャ型学習モデルの既存モジュール学習処理では、実効学習回数Qlearn[m]、及び、学習率γが用いられないこと、及び、追加学習が、HMMではなく、RNNを対象として行われることを除き、図18で説明したのと同様の処理が行われる。
同様に、モジュール追加アーキテクチャ型学習モデルの新規モジュール仮学習処理とは、モジュール追加アーキテクチャ型学習モデル320に記憶されたモジュール追加アーキテクチャ型学習モデル、及び、変数のコピーを用いて行われる新規モジュール学習処理である。
モジュール追加アーキテクチャ型学習モデルの新規モジュール学習処理では、実効学習回数Qlearn[m]、及び、学習率γが用いられないこと、及び、追加学習が、HMMではなく、RNNを対象として行われることを除き、図19で説明したのと同様の処理が行われる。
ステップS420では、更新部313は、対象モジュール決定部312からのモジュールインデクスが表す対象モジュールが、最大尤度モジュール#m*、又は、新規モジュールのうちのいずれであるかを判定する。
ステップS420において、対象モジュールが、最大尤度モジュール#m*であると判定された場合、処理は、ステップS421に進み、更新部313は、最大尤度モジュール#m*のRNNパラメータλm*を更新する既存モジュール学習処理を行う。
また、ステップS420において、対象モジュールが、新規モジュールであると判定された場合、処理は、ステップS422に進み、更新部313は、新規モジュールのRNNパラメータを更新する新規モジュール学習処理を行う。
ステップS421の既存モジュール学習処理、及び、ステップS422の新規モジュール学習処理の後は、いずれも、処理は、ステップS423に進み、対象モジュール決定部312は、対象モジュール#mのRNNパラメータの更新(対象モジュール#mの追加学習)に用いられた学習データOtを、その対象モジュール#mに対応するサンプルバッファRSmに、学習データのサンプルとしてバッファリングする、図59で説明したサンプル保存処理を行う。
そして、センサ11から、次の観測値otが出力され、観測時系列バッファ12に記憶されるのを待って、処理は、ステップS423から、ステップS416に戻り、以下、同様の処理が繰り返される。
以上のように、モジュール追加アーキテクチャ型学習モデルのモジュールが、RNNである場合であっても、予測誤差を、式(26)等に従って確率化することで、尤度に換算し、その尤度を用いて求められる、モジュール追加アーキテクチャ型学習モデルの事後確率の改善量に基づいて、対象モジュールを決定することにより、最大対数尤度maxLPと閾値との大小関係によって、対象モジュールを決定する場合に比較して、理論的、かつ、柔軟(適応的)に、新規モジュールが、モジュール追加アーキテクチャ型学習モデルに追加されていき、モデル化対象について、過不足のない数のモジュールで構成されるモジュール追加アーキテクチャ型学習モデルを得ることができる。
[本発明を適用したコンピュータの説明]
次に、上述した一連の処理は、ハードウェアにより行うこともできるし、ソフトウェアにより行うこともできる。一連の処理をソフトウェアによって行う場合には、そのソフトウェアを構成するプログラムが、汎用のコンピュータ等にインストールされる。
そこで、図67は、上述した一連の処理を実行するプログラムがインストールされるコンピュータの一実施の形態の構成例を示している。
プログラムは、コンピュータに内蔵されている記録媒体としてのハードディスク505やROM503に予め記録しておくことができる。
あるいはまた、プログラムは、リムーバブル記録媒体511に格納(記録)しておくことができる。このようなリムーバブル記録媒体511は、いわゆるパッケージソフトウエアとして提供することができる。ここで、リムーバブル記録媒体511としては、例えば、フレキシブルディスク、CD-ROM(Compact Disc Read Only Memory),MO(Magneto Optical)ディスク,DVD(Digital Versatile Disc)、磁気ディスク、半導体メモリ等がある。
なお、プログラムは、上述したようなリムーバブル記録媒体511からコンピュータにインストールする他、通信網や放送網を介して、コンピュータにダウンロードし、内蔵するハードディスク505にインストールすることができる。すなわち、プログラムは、例えば、ダウンロードサイトから、ディジタル衛星放送用の人工衛星を介して、コンピュータに無線で転送したり、LAN(Local Area Network)、インターネットといったネットワークを介して、コンピュータに有線で転送することができる。
コンピュータは、CPU(Central Processing Unit)502を内蔵しており、CPU502には、バス501を介して、入出力インタフェース510が接続されている。
CPU502は、入出力インタフェース510を介して、ユーザによって、入力部507が操作等されることにより指令が入力されると、それに従って、ROM(Read Only Memory)503に格納されているプログラムを実行する。あるいは、CPU502は、ハードディスク505に格納されたプログラムを、RAM(Random Access Memory)504にロードして実行する。
これにより、CPU502は、上述したフローチャートにしたがった処理、あるいは上述したブロック図の構成により行われる処理を行う。そして、CPU502は、その処理結果を、必要に応じて、例えば、入出力インタフェース510を介して、出力部506から出力、あるいは、通信部508から送信、さらには、ハードディスク505に記録等させる。
なお、入力部507は、キーボードや、マウス、マイク等で構成される。また、出力部506は、LCD(Liquid Crystal Display)やスピーカ等で構成される。
ここで、本明細書において、コンピュータがプログラムに従って行う処理は、必ずしもフローチャートとして記載された順序に沿って時系列に行われる必要はない。すなわち、コンピュータがプログラムに従って行う処理は、並列的あるいは個別に実行される処理(例えば、並列処理あるいはオブジェクトによる処理)も含む。
また、プログラムは、1のコンピュータ(プロセッサ)により処理されるものであっても良いし、複数のコンピュータによって分散処理されるものであっても良い。さらに、プログラムは、遠方のコンピュータに転送されて実行されるものであっても良い。
なお、本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない領域において種々の変更が可能である。
11 センサ, 12 観測時系列バッファ, 13 モジュール学習部, 14 認識部, 15 遷移情報管理部, 16 ACHMM記憶部, 17 HMM構成部, 21 尤度算出部, 22 対象モジュール決定部, 23 更新部, 31 尤度算出部, 32 最尤推定部, 41 情報時系列バッファ, 42 情報更新部, 51 連結部, 52 正規化部, 53 頻度行列生成部, 54 頻度化部, 55 平均化部, 56 正規化部, 71 センサ, 72 観測時系列バッファ, 73 モジュール学習部, 74 認識部, 75 遷移情報管理部, 76 ACHMM記憶部, 77 HMM構成部, 81 プランニング部, 82 アクションコントローラ, 83 駆動部, 84 アクチュエータ, 101 ACHMM階層処理部, 111 ACHMMユニット, 121 入力制御部, 121A 入力バッファ, 122 ACHMM処理部, 123 出力制御部, 123A 出力バッファ, 131 モジュール学習部, 132 認識部, 133 遷移情報管理部, 134 ACHMM記憶部, 135 HMM構成部, 151 ACHMM階層処理部, 201ないし201 入力制御部, 201Aないし201A 入力バッファ, 202ないし202 ACHMM処理部, 203ないし203 出力制御部, 203Aないし203A 出力バッファ, 211ないし211 モジュール学習部, 212ないし212 認識部, 213ないし213 遷移情報管理部, 214ないし214 ACHMM記憶部, 215ないし215 HMM構成部, 221ないし221 プランニング部, 310 モジュール学習部, 311 尤度算出部, 312 対象モジュール決定部, 313 更新部, 320 モジュール追加アーキテクチャ型学習モデル記憶部, 501 バス, 502 CPU, 503 ROM, 504 RAM, 505 ハードディスク, 506 出力部, 507 入力部, 508 通信部, 509 ドライブ, 510 入出力インタフェース, 511 リムーバブル記録媒体

Claims (14)

  1. 外部から供給される観測値を記憶し、HMM(Hidden Markov Model)を、最小の構成要素であるモジュールとして有する学習モデルに与える入力データとして、前記観測値の時系列を出力する入力制御を行う入力制御手段と、
    前記学習モデルを構成する各モジュールについて、前記モジュールにおいて、前記入力データが観測される尤度を求め、
    前記尤度に基づいて、前記学習モデルの1つのモジュール、又は、新規のモジュールを、HMMパラメータを更新する対象のモジュールである対象モジュールに決定し、
    前記入力データを用いて、前記対象モジュールのHMMパラメータを更新する
    モジュール学習処理を行うモジュール学習手段と、
    前記学習モデルを用いて、前記入力データを認識し、前記入力データの認識結果を表す認識結果情報を出力する認識手段と
    を含み、前記学習モデルを用いた処理を行うモデル処理手段と、
    前記認識結果情報を記憶し、外部に出力する出力データとして、前記認識結果情報を出力する出力制御を行う出力制御手段と
    を有するユニットを生成し、前記ユニットを、階層構造に接続する階層処理手段を備え、
    下位層のユニットである下位ユニットの前記出力制御手段は、前記出力データを、前記下位ユニットに接続された上位層のユニットである上位ユニットに出力し、
    前記上位ユニットの前記入力制御手段は、前記下位ユニットからの前記出力データを記憶し、前記出力データの時系列を、前記入力データとして出力する
    情報処理装置。
  2. 前記出力制御手段は、所定の出力条件が満たされるときに、前記認識結果情報を、前記出力データとして出力し、
    前記階層処理手段は、前記上位ユニットと接続されていないユニットである未接続ユニットの前記出力制御手段が、前記出力データを出力するとき、新規のユニットを生成し、前記新規のユニットを、前記未接続ユニットの上位ユニットとして、前記未接続ユニットと接続する
    請求項1に記載の情報処理装置。
  3. 最下位層のユニットである最下位層ユニットの前記入力制御手段は、モデル化の対象であるモデル化対象から観測される観測値を、前記外部から供給される観測値として記憶し、前記観測値の時系列を、前記入力データとして出力し、
    前記最下位層ユニットの前記学習モデルを構成する前記モジュールとしてのHMMは、前記モデル化対象から観測される観測値が、連続値である場合には、連続HMMであり、前記モデル化対象から観測される観測値が、離散値である場合には、離散HMMであり、
    前記認識手段は、前記入力データの認識結果を表す認識結果情報として、前記学習モデルを構成するモジュールのうちの、前記入力データが観測される尤度が最大のモジュールである最大尤度モジュールを表すシンボル、又は、前記最大尤度モジュールを表すシンボルと、前記最大尤度モジュールにおいて、前記入力データが観測される尤度が最大の状態遷移が生じる、前記HMMの状態の系列である最尤状態系列の最後の状態を表すシンボルとの2つのシンボルを出力し、
    前記出力制御手段は、前記認識結果情報である前記シンボルを記憶し、前記出力データとして出力し、
    前記最下位層ユニット以外のユニットの前記入力制御手段は、前記下位ユニットからの前記出力データである前記シンボルを、前記外部から供給される観測値として記憶し、前記観測値の時系列を、前記入力データとして出力し、
    前記最下位層ユニット以外のユニットの前記学習モデルを構成する前記モジュールとしてのHMMは、離散HMMである
    請求項1に記載の情報処理装置。
  4. 前記モデル処理手段は、前記学習モデルを構成する前記モジュールとしてのHMMが、離散HMMである場合において、前記入力データに、いままでに観測されたことがない観測値である未観測値が含まれるとき、前記HMMのHMMパラメータのうちの、観測値が観測される観測確率の観測確率行列を、前記未観測値の観測確率を含むように拡張する拡張処理として、
    前記未観測値の観測確率を、ランダムな微小値に初期化し、
    前記HMMの各状態において、各観測値が観測される観測確率の総和が1になるように、観測確率を確率化する
    処理を行う
    請求項3に記載の情報処理装置。
  5. 前記ユニットは、
    前記認識結果情報に基づいて、前記学習モデルにおける各状態遷移の頻度の情報である遷移情報を生成する遷移情報管理手段と、
    前記学習モデルの複数のモジュールを、その複数のモジュールのHMMパラメータ、及び、前記遷移情報を用いて結合した1個のHMMである結合HMMを構成するHMM構成手段と、
    前記結合HMMの任意の状態を、目標状態の候補である目標状態候補として、状態確率が最大の状態である現在状態から、前記目標状態候補までの状態遷移の尤度が最大の、前記結合HMMの状態の系列である最尤状態系列を、前記現在状態から、前記目標状態候補に辿り着くプランとして求めるプランニング手段と
    を、さらに有し、
    前記ユニットの前記プランニング手段は、
    上位層のユニットから供給される、そのユニットで求められた前記プランにおける前記現在状態の次の状態において観測される観測値のうちの、観測確率が閾値以上の1個以上の観測値である前記シンボルそれぞれに対応する状態を、前記目標状態候補として、1個以上の前記目標状態候補それぞれについて、前記最尤状態系列を求め、
    1個以上の前記目標状態候補それぞれについての前記最尤状態系列のうちの、状態の数が最小の前記最尤状態系列を、前記プランとして選択し、
    下位層のユニットが存在する場合には、前記プランにおける前記現在状態の次の状態において観測される観測値のうちの、観測確率が閾値以上の1個以上の観測値を、下位層のユニットに供給する
    請求項3に記載の情報処理装置。
  6. 前記出力制御手段は、あらかじめ設定されたタイミングの前記認識結果情報を、前記出力データとして出力する
    請求項1に記載の情報処理装置。
  7. 前記出力制御手段は、あらかじめ設定された間隔ごとの前記認識結果情報を、前記出力データとして出力する
    請求項1に記載の情報処理装置。
  8. 前記出力制御手段は、最新の前記認識結果情報が、前回の前記認識結果情報と一致しない場合に、最新の前記認識結果情報を、前記出力データとして出力する
    請求項1に記載の情報処理装置。
  9. 前記上位ユニットの前記入力制御手段は、前記下位ユニットからの最新の前記出力データを記憶したときに、固定長の最新の前記出力データの時系列を、前記入力データとして出力する
    請求項1に記載の情報処理装置。
  10. 前記上位ユニットの前記入力制御手段は、前記下位ユニットからの最新の前記出力データを記憶したときに、最新の前記出力データから、異なる値の前記出力データが所定数だけ現れるまで、過去に遡った時点の前記出力データから最新の前記出力データまでを、前記入力データとして出力する
    請求項1に記載の情報処理装置。
  11. 前記認識手段は、前記入力データの認識結果を表す認識結果情報として、前記学習モデルを構成するモジュールのうちの、前記入力データが観測される尤度が最大のモジュールである最大尤度モジュールを表すシンボルを出力する
    請求項1に記載の情報処理装置。
  12. 前記認識手段は、前記入力データの認識結果を表す認識結果情報として、前記学習モデルを構成するモジュールのうちの、前記入力データが観測される尤度が最大のモジュールである最大尤度モジュールを表すシンボルと、前記最大尤度モジュールにおいて、前記入力データが観測される尤度が最大の状態遷移が生じる、前記HMMの状態の系列である最尤状態系列の最後の状態を表すシンボルとの2つのシンボルを出力する
    請求項1に記載の情報処理装置。
  13. 情報処理装置が、
    外部から供給される観測値を記憶し、HMM(Hidden Markov Model)を、最小の構成要素であるモジュールとして有する学習モデルに与える入力データとして、前記観測値の時系列を出力する入力制御を行う入力制御手段と、
    前記学習モデルを構成する各モジュールについて、前記モジュールにおいて、前記入力データが観測される尤度を求め、
    前記尤度に基づいて、前記学習モデルの1つのモジュール、又は、新規のモジュールを、HMMパラメータを更新する対象のモジュールである対象モジュールに決定し、
    前記入力データを用いて、前記対象モジュールのHMMパラメータを更新する
    モジュール学習処理を行うモジュール学習手段と、
    前記学習モデルを用いて、前記入力データを認識し、前記入力データの認識結果を表す認識結果情報を出力する認識手段と
    を含み、前記学習モデルを用いた処理を行うモデル処理手段と、
    前記認識結果情報を記憶し、外部に出力する出力データとして、前記認識結果情報を出力する出力制御を行う出力制御手段と
    を有するユニットを生成し、前記ユニットを、階層構造に接続するステップを含み、
    下位層のユニットである下位ユニットの前記出力制御手段は、前記出力データを、前記下位ユニットに接続された上位層のユニットである上位ユニットに出力し、
    前記上位ユニットの前記入力制御手段は、前記下位ユニットからの前記出力データを記憶し、前記出力データの時系列を、前記入力データとして出力する
    情報処理方法。
  14. 外部から供給される観測値を記憶し、HMM(Hidden Markov Model)を、最小の構成要素であるモジュールとして有する学習モデルに与える入力データとして、前記観測値の時系列を出力する入力制御を行う入力制御手段と、
    前記学習モデルを構成する各モジュールについて、前記モジュールにおいて、前記入力データが観測される尤度を求め、
    前記尤度に基づいて、前記学習モデルの1つのモジュール、又は、新規のモジュールを、HMMパラメータを更新する対象のモジュールである対象モジュールに決定し、
    前記入力データを用いて、前記対象モジュールのHMMパラメータを更新する
    モジュール学習処理を行うモジュール学習手段と、
    前記学習モデルを用いて、前記入力データを認識し、前記入力データの認識結果を表す認識結果情報を出力する認識手段と
    を含み、前記学習モデルを用いた処理を行うモデル処理手段と、
    前記認識結果情報を記憶し、外部に出力する出力データとして、前記認識結果情報を出力する出力制御を行う出力制御手段と
    を有するユニットを生成し、前記ユニットを、階層構造に接続する階層処理手段
    として、コンピュータを機能させるためのプログラムであり、
    下位層のユニットである下位ユニットの前記出力制御手段は、前記出力データを、前記下位ユニットに接続された上位層のユニットである上位ユニットに出力し、
    前記上位ユニットの前記入力制御手段は、前記下位ユニットからの前記出力データを記憶し、前記出力データの時系列を、前記入力データとして出力する
    プログラム。
JP2009206435A 2009-09-07 2009-09-07 情報処理装置、情報処理方法、及び、プログラム Withdrawn JP2011059817A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2009206435A JP2011059817A (ja) 2009-09-07 2009-09-07 情報処理装置、情報処理方法、及び、プログラム
US12/869,321 US20110060707A1 (en) 2009-09-07 2010-08-26 Information processing device, information processing method, and program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009206435A JP2011059817A (ja) 2009-09-07 2009-09-07 情報処理装置、情報処理方法、及び、プログラム

Publications (1)

Publication Number Publication Date
JP2011059817A true JP2011059817A (ja) 2011-03-24

Family

ID=43648464

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009206435A Withdrawn JP2011059817A (ja) 2009-09-07 2009-09-07 情報処理装置、情報処理方法、及び、プログラム

Country Status (2)

Country Link
US (1) US20110060707A1 (ja)
JP (1) JP2011059817A (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011059815A (ja) * 2009-09-07 2011-03-24 Sony Corp 情報処理装置、情報処理方法、及び、プログラム
US8775341B1 (en) 2010-10-26 2014-07-08 Michael Lamport Commons Intelligent control with hierarchical stacked neural networks
US9015093B1 (en) 2010-10-26 2015-04-21 Michael Lamport Commons Intelligent control with hierarchical stacked neural networks
JP5892360B2 (ja) * 2011-08-02 2016-03-23 ソニー株式会社 ロボット指示装置、ロボット指示方法、プログラム、及び通信システム
US9600241B2 (en) * 2012-02-15 2017-03-21 The Mathworks, Inc. Unified state transition table describing a state machine model
EP2820537A1 (en) 2012-02-15 2015-01-07 The Mathworks, Inc. Generating a state diagram
US9262681B1 (en) * 2014-11-19 2016-02-16 Amazon Technologies, Inc. Probabilistic registration of interactions, actions or activities from multiple views

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4639784B2 (ja) * 2004-12-06 2011-02-23 ソニー株式会社 学習装置および学習方法、並びにプログラム

Also Published As

Publication number Publication date
US20110060707A1 (en) 2011-03-10

Similar Documents

Publication Publication Date Title
JP2011059816A (ja) 情報処理装置、情報処理方法、及び、プログラム
JP2011059815A (ja) 情報処理装置、情報処理方法、及び、プログラム
Lu et al. Multiobjective evolutionary design of deep convolutional neural networks for image classification
JP4710933B2 (ja) 学習装置、学習方法、およびプログラム
JP4201012B2 (ja) データ処理装置、データ処理方法、およびプログラム
ES2643448T3 (es) Sistema y método de aprendizaje adaptativo
JP2011059817A (ja) 情報処理装置、情報処理方法、及び、プログラム
JP2010020444A (ja) 学習装置、学習方法、およびプログラム
Amiri et al. Adventures in data analysis: A systematic review of Deep Learning techniques for pattern recognition in cyber-physical-social systems
Leke et al. Deep learning and missing data in engineering systems
Simsek et al. Deep learning in smart health: Methodologies, applications, challenges
Nikoloska et al. Training hybrid classical-quantum classifiers via stochastic variational optimization
Goutsu et al. Linguistic descriptions of human motion with generative adversarial seq2seq learning
Zhang et al. Universal value iteration networks: When spatially-invariant is not universal
Xia An overview of deep learning
JP5170698B2 (ja) 確率的推論装置
Gu A dual-model semi-supervised self-organizing fuzzy inference system for data stream classification
KR20230141828A (ko) 적응형 그래디언트 클리핑을 사용하는 신경 네트워크들
JP5458791B2 (ja) 連想記憶装置、連想記憶方法、及びプログラム
JP2007280057A (ja) データ処理装置、データ処理方法、およびプログラム
JP2009043122A (ja) データ処理装置、データ処理方法、及びプログラム
Dawood et al. Robot behaviour learning using topological gaussian adaptive resonance hidden markov model
JP2008293259A (ja) データ処理装置、データ処理方法、及びプログラム
Medvedev et al. Optimization of the local search in the training for SAMANN neural network
Chakraborty et al. Bayesian neural tree models for nonparametric regression

Legal Events

Date Code Title Description
A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20121204