(57)【要約】      （修正有）【課題】  人工知能及びロボット工学の分野において自立的に発達できるシステムを提供する。【解決手段】  発達システムは、自らの発達を駆動する自己目的メカニズムを備える。システム内の自己目的コンポーネント（１）は、マッピングメカニズム（２）を用いて、入力の組に基づいて出力を生成する。マッピングメカニズム（２）は、自らに関連する状態に応じて、マッピングを行う。この状態のコンテンツは、システムと環境との間の相互作用に基づいて、学習／リペアモジュール（３）によって変更され、したがって、このコンポーネントの経験の結果、このコンポーネントが獲得した知識を反映する。自己目的コンポーネント（１）は、自己目的コンポーネント（１）に関連する異なるパラメータの複雑性を定量化した１以上の挑戦パラメータの組のレベルを参照して、挑戦パラメータのレベルを制御する。【選択図】  図５
2005092866.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも１つの自己発達コンポーネント（１）を備える人工システムにおいて、
上記少なくとも１つの自己発達コンポーネント（１）の発達の過程は、当該人工システム自体が設定した挑戦のレベルに一致する性能レベルを達成するための要求によって駆動される人工システム。
【請求項２】
上記少なくとも１つの自己発達コンポーネント（１）は、１以上の入力の組にマッピング機能を適用して１以上の出力を生成するマッピングメカニズム（２）を有し、
当該人工システムは更に、
上記少なくとも１つの自己発達コンポーネント（１）に提示された挑戦のレベルを調整するコントローラ（５）と、
一連の期間の各期間において、上記コントローラ（５）によって設定された少なくとも１つの挑戦のレベルに関して上記少なくとも１つの自己発達コンポーネントの性能を監視する性能監視手段（４）と、
上記性能監視手段（４）によって監視された性能に基づいて、上記少なくとも１つの自己発達コンポーネント（１）によって適用されたマッピング機能を適応化し、これにより、上記少なくとも１つの自己発達コンポーネント（１）の性能を上記少なくとも１つの挑戦のレベルに一致させるよう試みる学習モジュール（３）とを備えることを特徴とする請求項１記載の人工システム。
【請求項３】
動作時に、上記性能監視手段が上記少なくとも１つの挑戦のレベル及び上記少なくとも１つの自己発達コンポーネント（１）の実際の性能の間に、閾値より大きな差を検出すると、該性能監視手段は、該自己発達コンポーネント（１）について失敗信号を生成し、該自己発達コンポーネント（１）に対する失敗信号の生成に応答して、上記コントローラ（５）は、上記自己発達コンポーネント（１）の学習モジュール（３）に対し、利用可能であれば、候補リペアリストから生成された１以上のリペアの組を実行するよう命令することを特徴とする請求項２記載の人工システム。
【請求項４】
動作時に、上記自己発達コンポーネント（１）に対する失敗信号に応じて、上記コントローラ（５）は、上記自己発達コンポーネント（１）の学習モジュール（３）に対し、それぞれ単一のリペアを実行するよう命令することを特徴とする請求項３記載の人工システム。
【請求項５】
動作時に、上記コントローラ（５）は、上記自己発達コンポーネント（１）対して先に行った試みが成功しなかった全てのリペアを上記候補リペアのリストからフィルタリングして削除することを特徴とする請求項３又は４記載の人工システム。
【請求項６】
動作時に、上記コントローラ（５）が上記自己発達コンポーネント（１）の学習モジュール（３）に対し、上記１以上のリペア組を実行するよう命令した後に、該自己発達コンポーネント（１）は、該リペアの発端となった失敗信号の生成を誘発した入力と同じ入力にそのマッピング機能を適用するよう試みることを特徴とする請求項３乃至５いずれか１項記載の人工システム。
【請求項７】
各自己発達コンポーネント（１）について、それぞれの値（ｐ）が複雑さのレベルを表す１以上の挑戦パラメータの組（＜ｐ１，ｐ２，．．．，ｐｎ＞）が定義されていることを特徴とする請求項３乃至請求項６いずれか１項記載の人工システム。
【請求項８】
上記各挑戦パラメータは、複雑さの最高のレベルを１．０として、０．０〜１．０の範囲をとるように定義されていることを特徴とする請求項７記載の人工システム。
【請求項９】
上記コントローラ（５）は、オペレーションフェーズ及びシェークアップフェーズで動作し、上記挑戦パラメータの値は、オペレーションフェーズの各インスタンス間では不変のまま維持され、シェークアップフェーズの各インスタンスの間は、上記コントローラ（５）は、上記挑戦パラメータの１以上の値の組を選択し、変更することを特徴とすることを特徴とする請求項７又は８記載の人工システム。
【請求項１０】
ある期間から次の期間における上記少なくとも１つの自己発達コンポーネント（１）の性能レベルの変化が閾値量より小さいと判定されたとき、上記コントローラ（５）は、上記オペレーションフェーズの動作から上記シェークアップフェーズの動作に変化することを特徴とする請求項９記載の人工システム。
【請求項１１】
各コンポーネント（１）について、各値が該コンポーネント（１）の各能力又は該コンポーネント（１）によって使用されるリソースを定量化する１以上のスキル変数の組（＜ｓ１，ｓ２，．．．，ｓｒ＞）が定義され、ある期間から次の期間における上記少なくとも１つの自己発達コンポーネント（１）の性能レベル及びスキルレベルの変化がそれぞれの閾値量より小さいとき、上記コントローラ（５）は、上記オペレーションフェーズの動作から上記シェークアップフェーズに移行することを特徴とする請求項９記載の人工システム。
【請求項１２】
上記コントローラ（５）は、上記シェークアップフェーズの各インスタンスにおいて、単一の挑戦パラメータ又は少数の挑戦パラメータのみを変更することを特徴とする請求項９乃至１１いずれか１項記載の人工システム。
【請求項１３】
上記コントローラ（５）は、上記発達の開始時に、上記挑戦パラメータを低い値に設定することを特徴とする請求項９乃至請求項１２いずれか１項記載の人工システム。
【請求項１４】
上記少なくとも１つの自己発達コンポーネントは、複数の自己発達コンポーネント（ｃｉ）を含み、上記シェークアップフェーズの間、上記コントローラ（５）は、上記複数の自己発達コンポーネント及びシステム全体について監視された性能データ（Ｍ）に基づいて、上記１以上の挑戦パラメータの組を選択し、変更することを特徴とする請求項９乃至請求項１３いずれか１項記載の人工システム（１１）。
【請求項１５】
動作時に、上記自己発達コンポーネントのうちの第１の自己発達コンポーネントがそのマッピング機能をうまく実行できなくなったとき、該第１の自己発達コンポーネントは、該第１の自己発達コンポーネントの入力として機能する出力を出力する上記自己発達コンポーネントのうちの第２の自己発達コンポーネントに関して、失敗信号を生成することができることを特徴とする請求項１４記載の人工システム（１１）。
【請求項１６】
それぞれ自律的な複数のエージェントを備え、動作時に、上記複数の自己発達コンポーネントのうちの第１の自己発達コンポーネントが該複数の自己発達コンポーネントのうちの第２の自己発達コンポーネントによって生成された出力をうまく処理できなくなったとき、該第１の自己発達コンポーネントは、該第２の自己発達コンポーネントに関して、失敗信号を生成することができることを特徴とする請求項３乃至請求項１３いずれか１項記載の人工システム。
【請求項１７】
請求項１乃至１６いずれか１項記載の人工システムを適用した自然言語処理システム。
【請求項１８】
請求項１乃至１６いずれか１項記載の人工システムを適用した感覚運動システム。
【請求項１９】
少なくとも１つの自己発達コンポーネント（１）を備える人工システムの発達を自己調整する自己調整方法において、
上記少なくとも１つの自己発達コンポーネント（１）を該人工システム自体が設定した挑戦のレベルに一致する性能レベルを達成するための要求によって駆動するステップを有する自己調整方法。
【請求項２０】
上記少なくとも１つの自己発達コンポーネント（１）は、１以上の入力の組にマッピング機能を適用して１以上の出力を生成するマッピングメカニズム（２）を有し、
上記少なくとも１つの自己発達コンポーネント（１）に提示された挑戦のレベルを定量化する値を設定するステップと、
一連の期間の各期間において、上記挑戦のレベルに関して上記少なくとも１つの自己発達コンポーネントの性能を監視するステップと、
上記監視された性能に基づいて、上記少なくとも１つの自己発達コンポーネント（１）によって適用されたマッピング機能を適応化し、これにより、上記少なくとも１つの自己発達コンポーネント（１）の性能を上記少なくとも１つの挑戦のレベルに一致させるよう試みるステップとを有することを特徴とする請求項１９記載の自己調整方法。
【請求項２１】
上記挑戦のレベル及び上記自己発達コンポーネントの実際の性能の間に、閾値より大きな差が検出されると、該自己発達コンポーネントについて失敗信号を生成するステップと、
上記自己発達コンポーネントに対する失敗信号の生成に応答して、利用可能であれば、候補リペアリストから生成された１以上のリペアの組を実行するステップとを有する請求項２０記載の自己調整方法。
【請求項２２】
上記自己発達コンポーネントに対する失敗信号に応じて、それぞれ単一のリペアを実行するステップを有する請求項２１記載の自己調整方法。
【請求項２３】
上記自己発達コンポーネント対して先に行った試みが成功しなかった全てのリペアを上記候補リペアのリストからフィルタリングして削除するステップを有する請求項２１又は２２記載の自己調整方法。
【請求項２４】
上記リペアの発端となった失敗信号の生成を誘発した入力と同じ入力にその自己発達コンポーネントのマッピング機能を適用するよう試みるステップを有する請求項２１乃至２３いずれか１項記載の自己調整方法。
【請求項２５】
各自己発達コンポーネント（１）について、それぞれの値（ｐ）が複雑さのレベルを表す１以上の挑戦パラメータの組（＜ｐ１，ｐ２，．．．，ｐｎ＞）を定義するステップを有する請求項２１乃至請求項２４いずれか１項記載の自己調整方法。
【請求項２６】
上記各挑戦パラメータは、複雑さの最高のレベルを１．０として、０．０〜１．０の範囲をとるように定義されていることを特徴とする請求項２５記載の自己調整方法。
【請求項２７】
上記人工システムを制御して、オペレーションフェーズ及びシェークアップフェーズで動作させ、
上記挑戦パラメータの値は、上記オペレーションフェーズの各インスタンス間では不変のまま維持され、
シェークアップフェーズの各インスタンスの間は、上記挑戦パラメータの１以上の値の組を選択し、変更することを特徴とする請求項２５又は２６記載の自己調整方法。
【請求項２８】
ある期間から次の期間における上記少なくとも１つの自己発達コンポーネントの性能レベルの変化が閾値量より小さいと判定されたとき、上記人工システムは、上記オペレーションフェーズの動作から上記シェークアップフェーズの動作に変化することを特徴とする請求項２７記載の自己調整方法。
【請求項２９】
各コンポーネント（１）について、各値が該コンポーネント（１）の各能力又は該コンポーネント（１）によって使用されるリソースを定量化する１以上のスキル変数の組（＜ｓ１，ｓ２，．．．，ｓｒ＞）が定義され、ある期間から次の期間における上記少なくとも１つの自己発達コンポーネント（１）の性能レベル及びスキルレベルの変化がそれぞれの閾値量より小さいとき、上記システムは、上記オペレーションフェーズの動作から上記シェークアップフェーズに移行することを特徴とする請求項２７記載の自己調整方法。
【請求項３０】
上記シェークアップフェーズの各インスタンスにおいて、単一の挑戦パラメータ又は少数の挑戦パラメータのみを選択し、変更することを特徴とする請求項２７乃至２９いずれか１項記載の自己調整方法。
【請求項３１】
上記発達の開始時に、上記挑戦パラメータを低い値に設定することを特徴とする請求項２７乃至請求項３０いずれか１項記載の自己調整方法。
【請求項３２】
上記人工システムは、複数の自己発達コンポーネント（ｃｉ）を備え、上記シェークアップフェーズの間、上記複数の自己発達コンポーネント及びシステム全体について監視された性能データ（Ｍ）に基づいて、上記１以上の挑戦パラメータの組を選択し、変更することを特徴とする請求項２７乃至請求項３０いずれか１項記載の自己調整方法。
【請求項３３】
上記人工システムは、複数の自己発達コンポーネント（ｃｉ）を備え、上記自己発達コンポーネントのうちの第１の自己発達コンポーネントがそのマッピング機能をうまく実行できなくなったとき、該第１の自己発達コンポーネントは、該第１の自己発達コンポーネントの入力として機能する出力を出力する上記自己発達コンポーネントのうちの第２の自己発達コンポーネントに関して、失敗信号を生成することができることを特徴とする請求項３２記載の自己調整方法。
【請求項３４】
上記人工システムは、それぞれ自律的な複数のエージェントを備え、上記複数の自己発達コンポーネントのうちの第１の自己発達コンポーネントが該複数の自己発達コンポーネントのうちの第２の自己発達コンポーネントによって生成された出力をうまく処理できなくなったとき、該第１の自己発達コンポーネントは、該第２の自己発達コンポーネントに関して、失敗信号を生成することができることを特徴とする請求項３乃至請求項１３いずれか１項記載の自己発達システム。
【請求項３５】
システムのプロセッサに実行されて、該システムに請求項１９乃至請求項３４いずれか１項記載の自己調整方法を実行させる命令の組を有するコンピュータプログラム。
【請求項３６】
請求項３５記載のコンピュータプログラムを搬送するデータキャリア。
【請求項３７】
請求項３５記載のコンピュータプログラムを格納するストレージ媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、人工知能及びロボット工学の分野に関し、詳しくは、自己発達システム（self-developing systems）における発達過程（developmental process）の調整（regulation）に関する。
【０００２】
本明細書において、「発達システム（developmetal systems）」又は「自己発達（self-developing systems）」とは、（システムの外部及び内部の両方の）環境との相互作用によって、自ら発達するシステムを意味する。
【背景技術】
【０００３】
無制限な発達（open-ended development）が可能である発達システムの設計及び実現は、近年のロボット工学人工知能（ＡＩ）の研究分野（文献「ロボット及び動物における自発的な知能発達（Autonomous mental development by robots and animals）」 by J. Weng, J. McClelland, A. Pentland, O. Sporns, I. Stockman, M. Sur, & E. Thelen, in Science, 291, 599-600, 2001、及び「構造、内部値、階層及び過程：発達ロボットのアーキテクチャの本質（Structures, inner values, hierarchies and stages: Essentials for developmental robot architectures）」 by A. Kulakov & G. Stojanov, in the Proceedings of the Second International Workshop on Epigenetic robotics: Modeling Cognitive Development in Robotic Systems, ed.C. G. Prince et al, Lund University Cognitive Studies Volume 94, Lund, Sweden (2002)参照）並びに進化言語学（evolutionary linguistics）の新たな分野における研究の焦点となっている。
【０００４】
このような発達システムは、後生的（epigenetic）又は個体発生的（ontogenetic）発達のコンテキストにおいて、発達心理学者（developmental psychologist）らによっても研究されている（文献「本質の再考：発達における結合説の展望（Rethinking innateness: A connectionist perspective on development）」 by J. L. Elman et al, MIT Press, Cambridge, Ma., USA (1996)、及び文献「幼児における皮質の分化：成熟モデルの超越（Cortical specialization in infants: Beyond the maturational model）」 by M. H. Johnson, Brain and Cognition, 42, 124-127, (1996)参照）。これは、ピアジェ（Piaget）らも述べているように、幼児の知能の成長は、人間が無制限な発達の能力を有することを明らかに示しているからである。
【０００５】
発達システムを構築するためには、特に、それぞれがサブタスクを処理するサブコンポーネントを備えるシステムの場合には、多くの問題を解決する必要がある。例えば、それぞれが、複雑なタスクを実行するためのより大きなシステムの部分を構成するコンポーネントの組が、ある環境と相互作用するとする。このような場合、システムの各コンポーネントは、特定の入出力マッピング（input-output mapping）を実行するとみなすことができ、換言すれば、所定の入力の組に対して、コンポーネントが対応する出力（これは、このコンポーネント及びシステム全体が発達するにつれて変化することもある）を生成する。多くの場合、１つのコンポーネントからの出力が１以上の他のコンポーネントの入力として機能するという意味において、コンポーネントは、連鎖的に繋がっている。このようなマルチコンポーネントシステムは、システムの各コンポーネントに適応性（自らが行うべきサブタスクに必要なタスク遂行能力（competence）を強化する能力があるという意味で）があれば、完全に「発達可能（developmental）」である。更に、システムは、新たなコンポーネント、すなわち、新たに導入され、又は「オンラインとなった（coming on line）」一般的なコンポーネントの具現化に対処できることが好ましい。これにより、無制限な発達が可能である。例えば、人工システム（artificial systems）は、次のような、幼児の発達における振る舞いに例示されるような「組合せ（combinatorial）」能力を有していることが望ましい。すなわち、幼児は、オブジェクト（object）に手を伸ばし、この動作とは独立して、握り動作（grasping movement）において、手を開いて／閉じてオブジェクトを握るが、一旦、この能力が取得されると、これらの動作は総合的ジェスチャとして組み合わされ、オブジェクトに手を伸ばしてオブジェクトを握ることを１つの動作として行えるようになる。
【０００６】
無制限な発達は、学習（learning）と、タスクを遂行するために必要なメモリ又は処理能力等の新たなリソースを補充（recruit）する能力とを明らかに必要とする。多くの学習の形態では、コンポーネントによって確立されたマップが如何に「正しい（correct）」かに関するフィードバックを行う必要がある。「正しい」とは、全体的なシステムにおいて、良好な動作に貢献するということを意味する。このフィードバックは、他のコンポーネントによって生成してもよく、システムによる包括的なタスクの遂行の成功に基づいて生成してもよい。
【０００７】
ここで検討しているマルチコンポーネントシステムの種類の一例として、ロボットの感覚運動（sensori-motor）システムがある。感覚運動システムは、環境との相互作用によって生成された感覚ストリームをセグメント化するためのコンポーネント、例えば特徴抽出のためのコンポーネント、追跡（tracking）のためのコンポーネント、物体認知及び認識のためのコンポーネント、イベント検出及びイベント認識のためのコンポーネント、目標生成（goal generation）のためのコンポーネント、立案（planning）のためのコンポーネント、握持のための高精度のモータ制御のためのコンポーネント、前進のためのコンポーネント、ナビゲーションのためのコンポーネント等の様々なコンポーネントを備える。現実世界の無制限な性質（open-ended nature）のために、現在では、これらのコンポーネントのそれぞれが適応性を有しているべきであると一般的に考えられている。すなわち、厳密にタスク指向の設計では、システムの潜在能力（potentialities）及び機能が過度に制限される虞がある。
【０００８】
ここで、オブジェクトの握持の際に、どのような処理が含まれるかを考察する。このタスクでは、オブジェクトをどのように握持するかを予測するために、オブジェクトを範疇化する必要がある。これらの範疇は、環境との相互作用を介して徐々に学習され、握持の成功により、現在の範疇が如何に正しいかをフィードバックする必要がある。当分野では、既に、多くの学習システムが提案されている。例えば、必要な範疇化は、（視覚的）入力の重み付け加算を行う標準的なフィードフォワードパーセプトロンに適したニューラルネットワーク（feed-forward perceptron-like neural network）によって行うことができ、この場合、学習は、フィードバックに基づく重みの変更によって実現できる（文献「パターン認識のためのニューラルネットワーク（Neural Networks for Pattern Recognition）」 by C. M. Bischop, Oxford University Press, Oxford., 1995参照）。
【０００９】
マルチコンポーネントシステムの他の具体例としては、自律ロボットのための自然言語システムがある。このような自然言語システムは、項目選択のためのコンポーネント、概念化のためのコンポーネント、辞書検索（lexicon lookup）のためのコンポーネント、文法規則適用のためのコンポーネント、音声表現のためのコンポーネント、構文解析のためのコンポーネント、意味論的解釈のためのコンポーネント、対話管理のためのコンポーネント等を有する。この場合も、自然言語の無制限な性質のため、一般的に、最良の性能を実現するために、これらのコンポーネントのそれぞれは、適応性を有することが望ましいと考えられている。
【００１０】
この場合、一例を挙げると、辞書コンポーネントは、新たな単語の意味を学習する能力を有する必要がある。このような能力は、例えば、未知の単語の意味の推測、及び特定の意志疎通においてある単語の使用が成功したか否かに基づく連想学習（associative learning）によって実現することができる（文献「新しい適応辞書（Emergent Adaptive Lexicons）」 by L. Steels, in the Proceedings of the Simulation of Adaptive Behavior Conference, ed. P. Maes, The MIT Press, Cambridge Ma., 1996参照）。
【００１１】
図１に示すように、自己発達コンポーネント１００は、複数の入力を処理して１つの出力、又は滅多にないが複数の出力を生成するある種のマッピングメカニズム２００を備えている。マッピングメカニズム２００の性質（nature）は、アプリケーションに依存する。例えば、マッピングメカニズム２００は、入力から出力を求める関数を算出するアルゴリズム、１組の入力が与えられ、出力状態を決定するニューラルネットワーク、物理的なコントローラ等から構成することができる。マッピングメカニズム２００は、様々な手法で実現することができる。例えば、ニューラルネットワークは、多くの場合、入力ノードと出力ノード間の１組の接続と、各接続に対する重みのテーブルとを備え、物理的コントローラは、マッピングがどのように行われるかを支配するソフトウェアコンポーネントを含んでいてもよい。
【００１２】
所望のマッピングを実行するために、マッピングメカニズム２００は、情報（又は「知識」）の表現を利用する。この表現の形式は、アプリケーションに依存する。情報の表現は、システムが環境（包括的な意味での環境であり、システムにとって外部の要素及びシステム内部の要素の両方を含む）と相互作用することによって得られたシステムの経験に基づいて修正される。
【００１３】
この情報の表現をマッピングメカニズム２００に関連する状態として図１に示す。この状態を明瞭に説明するために、２つの具体例を用いる。
【００１４】
第１の具体例は、説明を明瞭にするために、恣意的に単純化した具体例である。すなわち、ここでは、電話帳機能を実装したマッピングメカニズム２００について考察する。このマッピングメカニズム２００は、入力として氏名を受け取り、出力として電話番号を返す。このマッピングメカニズム２００に関連する状態とは、氏名を電話番号に関連付けるマッピング（例えば、データベースを用いて実行される）である。例えば、入力された特定の氏名に対応するエントリがリストにない等の理由によって、このマッピングの動作が失敗すると、このデータベース（状態）を更新し、当該氏名に対する＜氏名−電話番号＞エントリを追加することができる。これにより、マッピングメカニズム２００は、そのマッピング動作を実行する際に、更新された状態を利用することができるようになる。
【００１５】
より現実的な具体例として、視覚システム（vision system）及びオブジェクトを握持するメカニズムを備えるロボット装置について考察する。この握持メカニズムは、ロボットアームと、複数のフィンガを有するロボットハンドとを備える。このロボット装置は、情景（scene）を見て、視覚特徴検出器（visual feature detector）を動作させる（ロボット装置が見た情景内において、特定の視覚特徴が検出されたことを示すある種のパラメータによって、満たすべき条件を特定する）。所定のオブジェクトを握持するためのロボットハンドの最良の位置及び形状は、そのオブジェクトの形状に依存し、この形状は、その視覚的特徴を反映している。ロボット装置は、視覚特徴検出器の組と、対応するロボットアーム、ハンド及びフィンガの目標位置との間の関係を学習するコンポーネントを備える。このような技術は、例えば、文献「人型ロボットの伸腕及び握持のための触覚及び視覚的な知覚の開発（Developing Haptic and Visual Perceptual Categories for Reaching and Grasping with a Humanoid robot）」 by Jefferson A. Coelho et al, from "robotics and Autonomous Systems", special issue on humanoid robots, 37(2-3), pp.195-218, 2001にも開示されている。
【００１６】
上述の具体例において、この自己発達コンポーネントへの入力は、視覚パラメータデータの組であり、このコンポーネントからの出力は、ロボットアーム、ハンド、フィンガのための目標位置の組である。この場合、状態は、視覚特徴検出器の組及びそのパラメータ、及び視覚的特徴とアーム、ハンド及びフィンガの目標位置との関係を表している。ハンドがオブジェクトを握持することができなかった場合、これは、現在の状態に内在する範疇化が誤っていることを意味し、失敗信号（failure signal）が生成される。ロボット装置は、異なる様々な可能性を試み、最終的に、特定のオブジェクトを握持することを為し遂げる。これにより、このオブジェクトに関する新たな特定の視覚的特徴が学習され、成功したアーム、ハンド及びフィンガの軌道（trajectories）が関連付けられる。
【００１７】
自己発達コンポーネント１００は、更に、学習モジュール３００を備える。学習モジュール３００は、マッピングメカニズム２００に関する状態を監視し、マッピングメカニズム２００によって実行されるマッピングが望ましいマッピングにより近づくように、この状態を変更するよう動作する要素である。学習モジュール３００は、多くの場合、自己発達コンポーネント１００の外部コンポーネントからのフィードバックに基づいて、マッピングメカニズム２００の状態を変更する。このフィードバックは、例えば、自己発達コンポーネント１００と協働する他のコンポーネントが割り当てられたタスクを実行することができなかったこと、又はシステム全体に関連する包括的なタスクが失敗したことを示すものであってもよい。また、自己発達コンポーネント１００自体の内部から学習モジュール３００に内部フィードバックを供給してもよい。
【００１８】
マッピングメカニズム２００がルックアップテーブルに基づいてアルゴリズムを実現している場合、アルゴリズムが失敗すると、外部情報ソース（例えば、人間であるユーザ）が適切な出力を与え、これにより、新たな入出力関係を書き込み、状態を更新してもよい。また、マッピングメカニズム２００がニューラルネットワーク（例えば、パーセプトロンネットワーク又は逆伝播（back-propagation）ネットワーク）を用いて実行されている場合、フィードバック信号がネットワークにどのような学習をさせるかに関す周知の規則が存在する。詳しくは、学習モジュール３００は、マッピングメカニズム２００によって適切に更新された入出力マッピングが確立されるまで、ネットワーク内のリンクの重みを変更する。マッピングメカニズム２００が物理的なコントローラとして実現されている場合、学習モジュール３００は、コントローラのソフトウェアの一部を構成することができこの学習モジュール３００を、コントローラの動作に応じて受け取ったフィードバック信号に基づいて状態を更新することによって、将来的にコントローラを最適化するようにプログラミングしてもよい。
【００１９】
発達システム、特にマルチコンポーネントシステムを構築するためには、個々の様々な問題を解決する必要があるが、次のような包括的な問題も存在する。すなわち、このような発達システムにおける複雑性（complexity）の増大を如何に管理するかという問題、換言すれば、スキルの累進的な蓄積、人工システムによって取り扱うことができるタスク、振る舞い、入出力マッピングにおける複雑性の増大に如何に対処するかという問題がある。
【００２０】
発達の調整に関する問題は、次のような様々な理由から、非常に困難（challenging）な問題である。
【００２１】
（１）ある種の事柄は、他の事柄が習得されなければ学習することができず、したがって、発達の複雑性は、ある程度枠組みが定められ（scaffold）、単純なものから複雑なものに徐々に高められる（bootstrap）必要がある。したがって、言語に基づくシステムでは、辞書に関する最小限の知識がなければ、文法を適用し又は文法を学習することはできない。同様に、ロボット装置では、握持すべきオブジェクトを識別し、追跡する能力がなければ、握持に関する精密な制御を行うことができない。
【００２２】
（２）複雑なマルチコンポーネントシステムにおいては、各コンポーネントは、入力の供給又は適切なフィードバックの生成について、他のコンポーネントに依存する。特に、それぞれが独自の速度（pace）で発達する多くのサブコンポーネントがある場合、システム全体の発達を調整することは非常に困難である。
【００２３】
（３）最後に、発達を積極的に促す必要がある。一旦、性能が安定し、横這いの状態（plateau）に達すると、一時的に性能を低下させても、更に複雑な発達を遂行するための動機付けが必要となる。
【００２４】
互いに協働する自律ロボットの集合等を含むマルチエージェントシステムの場合には、特別な難問が生じる。各エージェントは、個別に環境を学習し、環境に適応するが、エージェント間の協働を可能にするためには、これらのエージェントは、それぞれの学習動作を調和させる（coordinate）必要がある。例えば、２つのロボットがある物理的なタスクについて協働する場合、一方のロボットは、未だ実行できていないタスクの遂行について他のロボットを頼ることはできず、また、ロボット間に通信が確立されている場合、一方のロボットは、他方のロボットが未だ学習していない通信規約（communication conventions）を用いることができない。したがって、それぞれのロボットの発達は、グループ内の他のメンバの発達に応じてある程度較正する必要がある。
【００２５】
初期的には、研究者らは、変化する個体発生的状況（changing ontogenetic landscape）においては、あるスキルの発達は、他のスキルの発達のための新たな機会を自然に与えるため、発達システムにおける複雑性の成長を組織化する（organise）ために特別な措置を講じる必要はないと考えた（文献「認識及び発達に達する動的システム（A dynamic systems approach to cognition and development）」 by B. Thelen and L. Smith, MIT Press, Cambridge Ma., 1994参照）。例えば、アームをどのように制御するかが一旦学習されると、そのアームの先に設けられているハンドの使用法の探索を開始することができる。これは間違いのない事実であるが、現在では、システムが、能力を完全に探索しないまま安定状態を維持してしまうような状況を回避するために、何らかの策を講じる必要があると考えられている。具体的には、この問題については、科学文献において、以下のような３つの手法が議論されている。
【００２６】
入力の複雑性のスケーリング（Scaling of input complexity）
研究者の第１のグループは、システムに与えられた外部入力の複雑性を調整することにより、発達を組織化する手法を提案している。これにより、システムは、枠組みが定められた方式（scaffolded way）で能力を強化することができると仮定される。実際には、多くの場合、小さなサブタスクが孤立し、システムは、その特定のサブタスクについて、準備された枠組みが定められたデータ（prepared scaffolded data）によってトレーニングされる。例えば、オブジェクトを握持する上述のロボット装置に対して現実世界で遭遇するような種類の複雑性を有するオブジェクトを提示する前に、まず、非常に単純な幾何学的に把握しやすいオブジェクトを用いてこのロボット装置をトレーニングする（上述のCoelhoらによる文献参照）。（文献「幼児の認識における構成主義モデル（A constructivist model of infant cognition）」 by L. Cohen et.al, in Cognitive Development, 17(2002) 1323-1343, (2002)、及び文献「ニューラルネットワークにおける学習及び発達（Learning and development in neural networks）」 by J. Elman in Cognition 48 (1993), pages 71-99には、他の具体例が開示されている。）。更に高度なアプリケーションでは、幾つかステージと副次的能力（subcompetences）を特定し、入力データは、発達システムを各ステージに引き上げるように注意して準備される。
【００２７】
リソースのスケーリング（Scaling of resources）
幾人かの研究者は、より多くのリソースを徐々にシステムに導入することによって学習をスケーリングし、発展的なステージ設定（developmental staging）が可能であることを指摘している。例えば、上述した文献「Elman (1993)」では、リカレントニューラルネットワーク（recurrent neural network）を用いて実現された、メモリリソース、レイヤ又はレイヤ間のリンクが比較的少ない言語処理システムは、まず単純な文法構造を理解した後に、これらのリソースを増加させ、システムがより複雑な文法構造に取り組む（tackle）ことができるようになることが示されている。
【００２８】
報酬関数の設定（Scaffolding of reward function）
ある種の振る舞いを強化し、又は他の振る舞いを抑制する（discouraging）ために、すなわち、より複雑なスキルへの取り組みの前に、より単純で基礎的なスキルが学習されることを確実にするために、発達システムに外部フィードバックを与えてシステムによって用いられている報酬関数の枠組みを定める（scaffold）ことによって、システムが指定したタスクの枠組みを定める（scaffold）ことを提案している研究者もいる。（この手法は、上述の文献「ロボット及び動物における自発的な知能発達（Autonomous mental development by robots and animals）」にも開示されている。）例えば、言語発達の場合、まず、単一の単語からなる文を生成するための報酬を想定し、次に、複数の単語からなる文を生成するための報酬を想定することによって、複雑性を増大させながら文法的なフレーズを構築することができる。ロボットアームによる到達及び握持の場合、まず、目的のオブジェクトの方向にアームを向けるための報酬を設け、次に、オブジェクトに接触し、フィンガを閉じるための報酬を設け、次に、オブジェクトを拾い上げ、その場所を移動させるための報酬を設けることができる。
【発明の開示】
【発明が解決しようとする課題】
【００２９】
これらの手法は全て、有益であり、興味深い結果を示している。更に、これらの手法は、極めて自然なものである。例えば、幼児教育においては、幼児保護者は、多くの場合、幼児の能力をより高く引き上げるために、環境の枠組みを定め、又は「報酬を高くする（up the ante）」。しかしながら、これらの手法は、「トレーナ」による強い介入を受け、及び／又は発達のシナリオを先験的に慎重に設計することを前提としている。現実世界は、常に同様の複雑性を学習者に提供し、したがって、この複雑性を制約することは、人工的（artificial）である。枠組みが定められた学習を実現するためにシステムリソースがどのように限定されるかを予め知ることは、未解決の問題であり、如何なる場合も、システムが発達するにつれて、低いレベルにおいて、システムに干渉することを暗示する。システム自身の発達を積極的に自己調整することによって、無制限な環境（open-ended environment）において、システムが独自に及び自立的に発達することがより望ましい。
【課題を解決するための手段】
【００３０】
本発明は、自らの発達を積極的に自己調整することによって、無制限な環境において、独立して、自律的に発達できるシステムを提供する。
【００３１】
本発明の好適な実施例では、複雑な発達システムが環境の枠組みを定め、リソースを段階的に導入し、又は外部から報酬関数を高めたりする等の設計者からの介入の必要なく、スキルの強化を自己調整するための包括的な原理を提供する。この原理は、新たな強力な調整力（regulatory force）を提供する。この手法は、他の手法（すなわち、外部からの介入による入力の単純化、報酬関数のスケーリング、又はリソースの段階的導入等）を排斥するものではなく、これらは、この新たな原理と組み合わせて用いてもよい。
【００３２】
本発明 は、発達システムの複雑性の発達の自己目的調整（autotelic regulation）を含む。ここで、「自己目的（autotelic）」とは、動機となる原動力（telos：目的因）がシステム自体（auto：自己）に由来することを意味する。本発明は、人間の動機に関する経験的な研究結果、特に内部動機に焦点をあてた研究結果から創造的刺激（inspiration）を受けている（文献「最適経験：意識におけるフローの研究（Optimal Experience: Psychological Studies of Flow in Consciousness）」 ed. M. Csikszentmihalyi and I. Selega, Cambridge University Press, Cambridge, 2001参照）。これらの研究は、所謂「フロー理論（flow theory）」の発達を導いている（文献「退屈及び不安の超越：仕事と遊びにおけるフローの経験（Beyond Boredom and Anxiety: Experiencing Flow in Work and Play"）」 by M. Csikszentmihalyi, Cambridge University Press, Cambridge, 1978参照）。
【００３３】
「フロー理論」よれば、人間は、自らが為そうとする挑戦と、その挑戦を実行するための自らが有しているスキルとが均衡しているとき、高く動機付けされる（図２参照）。挑戦のレベルが低すぎ、個人のスキルレベルが高すぎる場合、退屈（boredom）が経験され、一方、挑戦のレベルが高すぎ、個人のスキルが低すぎる場合、不安（anxiety）が経験される均衡状態（図２の「フロー領域（flow region）」）は、非常に高い報酬（満足感及び達成感）を与え、したがって、人は、この状態が導かれるような振る舞いを繰り返す。一般的に、個人のスキルは、タスクの実行の際に高められ、あるタスクは、最初は困難であっても、ある時点で退屈になり、個人は、より困難なタスクを要求するようになる。ここでは、人間が自らの挑戦及びタスクのレベルを自己調整する原理を自己目的原理と呼ぶ（上述の文献「"Beyond Boredom and Anxiety: Experiencing Flow in Work and Play"」に従っている）。本発明では、この「自己目的」原理を人工の（すなわち、天然ではない）発達システムにおける複雑性の成長の調整の基礎として用いている。
【００３４】
本発明は、自己目的原理を動作可能なものとし、この自己目的原理を例えば、発達可能なロボット装置、発達可能な言語システム等の発達システムにおいて具現化する。「自己目的装置」は、挑戦パラメータの自己監視及び自己調整の機能を有する自己発達装置とみなすことができる。
【００３５】
詳しくは、本発明は、少なくとも１つの自己発達コンポーネントを備える人工システムにおいて、少なくとも１つの自己発達コンポーネントの発達の過程が人工システム自体が設定した挑戦のレベルに一致する性能レベルを達成するための要求によって駆動される人工システムを提供する。
【００３６】
なお、本発明は、１つの適応可能な（自己発達）コンポーネントのみを有する発達システム、複数のコンポーネントを有し、これらのうちの幾つか又は全てが適応可能な発達システムのいずれにも適用できる。更に、本発明は、複数の自律的なエージェント（各エージェントが自己発達装置である。）を備えるシステムにも適用できる。
【００３７】
本発明に基づく人工システムは、少なくとも１つの自己発達コンポーネントは、１以上の入力の組にマッピング機能を適用して１以上の出力を生成するマッピングメカニズムを有し、人工システムは更に、少なくとも１つの自己発達コンポーネントに提示された挑戦のレベルを調整するコントローラと、一連の期間の各期間において、コントローラによって設定された少なくとも１つの挑戦のレベルに関して少なくとも１つの自己発達コンポーネントの性能を監視する性能監視手段と、性能監視手段によって監視された性能に基づいて、少なくとも１つの自己発達コンポーネントによって適用されたマッピング機能を適応化し、これにより、少なくとも１つの自己発達コンポーネントの性能を少なくとも１つの挑戦のレベルに一致させるよう試みる学習モジュールとを備えていてもよい。
【００３８】
好ましくは、「挑戦のレベル」は、各自己目的コンポーネントについて定義された、それぞれの値（ｐ）が複雑さのレベルを表す１以上の挑戦パラメータの組（＜ｐ１，ｐ２，．．．，ｐｎ＞）として表され、コントローラは、複雑さの最高のレベルを１．０として、各挑戦パラメータが０．０〜１．０の範囲をとるように定義する。
【００３９】
本発明では、スキルと挑戦の均衡が発達システムの動機に関する基本的な原動力となる。これは、挑戦レベルが性能の自己監視に基づいて、自己調整される（適切に増加又は減少される）ようにシステムをパラメータ化し、システムが新たな挑戦のレベルと協働してスキルを高めるための学習サブシステムを有する必要があることを意味する。挑戦及びスキルの間の均衡を維持するシステムの努力の副次的な効果として、システムの振る舞いの複雑性の増大（したがって、システムが処理できるタスク及び環境の複雑性の増大）がある。
【００４０】
挑戦パラメータは、本発明に基づく自己目的コンポーネントのマッピングメカニズムによって実行されたマッピングを決定し及び、コンポーネントが受信したフィードバック信号を決定する。更に、多くの場合、挑戦パラメータは、コンポーネントの性能を定量化するパラメータ（性能尺度）を決定する。これらの性能尺度の多くは、設定された挑戦が如何にうまく達成されたかに直接関係し、及びフィードバック信号も挑戦レベルに関連する。例えば、自己目的のオブジェクト追跡コンポーネントにおいて、挑戦レベルが２つのオブジェクトを追跡する必要があることを指示したが、１つのオブジェクトしか高い信頼度で追跡することができなかった場合、失敗信号が生成される。
【００４１】
ここで、自己目的コンポーネントへの入力の実際の複雑性と、挑戦パラメータによって指示された入力複雑性のレベルとの間に差があると（例えば、実際の入力が非常に複雑で、一方、その入力に関連する対応する挑戦パラメータが低い挑戦レベルを特定した場合）、矛盾が生じるとも考えられる。実際には、これは問題を生じない。例えば、入力が非常に複雑な音声信号であり、関連する挑戦パラメータが低いレベルの複雑性を指定しているとする。この場合、システムは、この音声の認識できる一部に焦点をあて、他の部分を無視する。実際には、挑戦パラメータは、音声信号の何パーセントをカバーすべきかをシステムに指示するよう定義することができる。状態は、入力に一致する音声テンプレートの組であってもよい。同様に、テンプレートを用いた視覚システムでは、システムは、単に、自らが協働できる画像の部分を検索し、他の細部を無視してもよい。更に、言語の発話を解析するコンポーネントにおいては、まず、このコンポーネントは、自らが認識できる単語のみを処理し、認識できない単語及び文法を無視することができる。
【００４２】
本発明の好適な実施例においては、性能監視手段が少なくとも１つの挑戦のレベル及び少なくとも１つの自己発達コンポーネントの実際の性能の間に、閾値より大きな差を検出すると、性能監視手段は、自己発達コンポーネントについて失敗信号を生成する。これに応じて、コンポーネントの学習モジュールは、リペア候補のリストから選択された１以上のリペア（利用可能であれば）を実行する。好ましくは、このリペア候補のリストから、このコンポーネントについて先に試され、失敗したリペアをフィルタリングして除去し、一回に１つのリペアを実行して、好ましくは、失敗信号の生成の発端となった入力刺激と同じ入力刺激の組を用いて、このコンポーネントによってマッピング機能の適用を再開する。また、失敗信号の他のソースを設けてもよく、特に、システム内の他のコンポーネントから失敗信号を提供してもよい。
【００４３】
本発明の好適な実施例では、挑戦レベルの自己調整は、交互に行われるオペレーションフェーズとシェークアップフェーズとを含む。開始時には、挑戦パラメータは、低い値に設定するとよい。オペレーションフェーズでは、挑戦パラメータの値は、クランプされる。シェークアップフェーズの各インスタンスの間は、コントローラは、１以上の（好ましくは１つ又は少数の）挑戦パラメータを選択し、変更する。システムは、システム内の自己目的コンポーネントが安定状態に到達し、スキルレベルの大きな向上がなくなったときに、オペレーションフェーズからシェークアップフェーズに移行する。
【００４４】
マルチコンポーネントシステムの場合、システム全体のレベル及び適応可能な各コンポーネントのそれぞれのレベルにおいて、スキル及び挑戦を均衡させることが好ましい。これは、（１）各コンポーネントをパラメータ化する必要があり、（２）各コンポーネントが学習サブシステムを備えている必要があり、（３）システム全体の挑戦レベルの調節（増加及び減少の両方）を包括的に動的に調整する必要があることを意味する。システム全体の報酬関数は、各コンポーネントの挑戦とスキルの間の均衡の度合いに基づいて決定される。
【００４５】
本発明に基づく発達システムは、全体を適切な汎用コンピュータ上のソフトウェアとして実現してもよく、ハードウェアとして実現してもよく、ハードウェア及びソフトウェアの組合せとして実現してもよい。
【発明を実施するための最良の形態】
【００４６】
以下では、まず、本発明の側面、すなわち、コンポーネントのパラメータ化、性能、学習及びスキルレベルの監視、並びに挑戦レベルの調整について詳細に説明する。次に、本発明が実現された発達システムの単純化された具体例における処理について説明する。この具体例は、自己目的原理（autotelic principle）を発達の原動力（drive）として用いるコンポーネントを１つのみを有する単純なシステムに関する情報と、各コンポーネントが自己目的原理を利用するマルチコンポーネントに関する情報の両方を含む。更に、本発明は、全てではないが複数のコンポーネント（又はモジュール）が自己目的原理を利用して発達を駆動するマルチコンポーネントシステムにも適用できる。
【００４７】
コンポーネントのパラメータ化
適応可能な（adaptive）（又は「発達可能な（developmental）」）システムの各コンポーネントについて、パラメータ値がそのコンポーネントが直面する異なる挑戦レベルを反映するように１以上のパラメータを定義する必要がある。パラメータ化の性質は、明らかに、コンポーネントが実現すべきタスク及びそのコンポーネント内で用いられているアルゴリズムの性質に依存する。
【００４８】
視覚サブシステム（vision sub-system）及びハンド−アイサブシステム（hand-eye sub-system：ハンドと視覚を連動させるシステム）を有するロボットシステムの具体例について検討する。このロボットシステムが、視覚サブシステム及びハンド−アイサブシステムを用いてオブジェクトを移動させるタスクを有するコンポーネントを備えているとする。このようなコンポーネントのパラメータ化の１つとして、オブジェクトを移動させるための詳細を示してもよい。すなわち、例えば、大まかな動作でオブジェクトを押し退ければよいか、或いはオブジェクトを拾い上げて、精密な位置に慎重に置き直すかといったことを示してもよい。「位置決めの詳細（precision of positioning）」パラメータは、必要とされる精度のレベルを示す値（多くの場合、特定の連続した範囲内にある）を取ることができる。また、他の「挑戦パラメータ（challenge parameter）」によってオブジェクトの性質を示してもよい。すなわち、これにより、オブジェクトが単純で均一な形状を有しているか、又はオブジェクトがオブジェクトを操作するための認識すべきハンドル又は他の構造を有しているかを示すことができる。「オブジェクト複雑性（object complexity）」パラメータは、オブジェクトの複雑性のレベルを示す値（所定の範囲内）を取ることができる。また、他の挑戦パラメータによって、オブジェクトの重さを示してもよい（重さが重い場合、ロボットは、バランスを失わないために特定の位置に移動する必要がある）。
【００４９】
所定のコンポーネントｃｉは、コンポーネントｃｉに関連して定義されたｎ個の挑戦パラメータｐを有する。ここで、形式的に、各コンポーネントｃｉに対し、ｎ個の挑戦パラメータのそれぞれの値を示すパラメータベクトル＜ｐ｛ｉ，１｝，．．．，ｐ｛ｉ，ｎ｝＞を関連付けるマルチコンポーネントシステムにおけるｍ個のコンポーネントの全てに対する全ての挑戦パラメータの組により、多次元パラメータ空間Ｐが定義される。大域動力学（global dynamics）を容易に実現可能にするために、挑戦パラメータは、範囲［０，１］（すなわち、０〜１）を取るように設計するとよい。システムｓは、如何なる時刻ｔにおいても、パラメータ空間Ｐ内のこれらの挑戦パラメータｐ（ｓ，ｔ）の特定の構成（configuration）を採用することができる。マルチエージェントシステムにおいては、エージェントは、それぞれ異なる挑戦パラメータ構成を有していてもよい。
【００５０】
ここで、発達における自己調整の問題は、多次元パラメータ空間において、最適な（又は許容可能な）性能に達するまでの検索処理であるとみなすことができる。性能は、コスト関数Ｃ：Ｐ→Ｒを用いて評価される。ここで、Ｒは、０．０から１．０までの間の実数を表している。形式的には、この目的は、Ｃｏｐｔを最適なコストとして、Ｃ（ｐ（ｓ，ｔ））＝Ｃｏｐｔとなる構成ｐ（ｓ，ｔ）を見出すことである。マルチエージェントシステムの場合、この目的は、全てのシステムｓについて、Ｃ（ｐ（ｓ，ｔ））＝Ｃｏｐｔとなる構成を見出すことである。
【００５１】
多くの場合、現実的な発達システムに含まれるパラメータ空間は非常に大きく、この問題は、複雑性理論において定義されるＮＰ困難（すなわち、非決定性多項式時間−困難（nondeterministic polynomial time-hard））な問題となる。この問題を解くためには、一般的に、近似値を算出し、略々最適な性能（sub-optimal performance）を許容し、経験則（heuristics）を用いる必要がある。
【００５２】
パラメータ空間内を検索して最適な性能（コスト関数に基づいて評価される）を生み出すパラメータ値の組を検索する処理は、単体法（Simplex algorithm）、組合せ最適化（combinatorial optimization）、シミュレーテッドアニーリング法（simulated annealing）、進化的プログラミング（evolutionary programming）等、最適化理論（optimization theory）において知られている手法を用いて実行される。これらの手法は、最適化理論の分野でよく知られた手法であり（例えば、文献「組合せ最適化：アルゴリズム及び最適化（Combinatorial Optimization: Algorithms and Complexity）」 by C. H. Papadimitriou and K. Steiglitz, Dover, new York, 1998参照）、ここでは詳細には説明しない。ここで、本発明によれば、発達システムの目的は、安定状態（stable state）に到達することではなく、挑戦とスキルの均衡を維持するために、パラメータ特性（parameter landscape）の探索を継続することである。換言すれば、安定状態に到達すると、直ちにシステムを再び均衡から不均衡な状態に引き戻す力を加える。これについては、後の「自己調整（Self-Regulation）」の章で詳細に述べる。
【００５３】
性能の監視（コスト関数）
各コンポーネントは、自らの性能を監視するための１又は複数のサブモジュールを備える。また、システム全体の性能を監視する少なくとも１つのサブモジュールも設ける。様々な種類の性能尺度（又は「監視変数」）を用いることができるが、これらは、１を特定の性能尺度における最適の性能を表す値として、範囲［０，１］の値をとるように設計することが望ましい。
【００５４】
コンポーネントレベルでは、コンポーネントが遂行しようとしているタスクの性質に関連する様々な性能尺度を用いることができる。例えば、自然言語生成システムにおける辞書検索に関連するコンポーネントは、表現すべき全ての意味のどこまでをカバーでき、選択された単語が聞き手にどの程度理解されるかを監視することができる。オブジェクトを握持するためのシステムでは、オブジェクトに到達し、オブジェクトを握持する性能の性能尺度については、例えば、消費されたエネルギ、動作の軌道の長さ、動作の円滑さ、必要とされた逆追跡（back-tracking）の回数、動作の実行の速度等の特性のデータを収集することができる。
【００５５】
これらの性能尺度の最適レベルを定義する必要があり、これらは、多くの場合、このコンポーネントについて定義されている挑戦パラメータに関連している。例えば、上述した「辞書検索」コンポーネントにおいては、「使用された単語数と、カバーされた述語の数の比」を表す挑戦パラメータ（この挑戦パラメータの値が大きい程、システムは、複雑な意味の単語を生成する）又は、「ある単語がある意味を有する確かさ」を表す挑戦パラメータ（この挑戦パラメータの値が大きい程、システムは、可能な限り一義的な単語を検索する）等を設けることができる。対応する性能尺度の値は、実際の性能が挑戦パラメータによって示される所望の性能レベルからどれほど乖離しているかを反映している。最も単純には、所定の挑戦パラメータｐｉｊ及び関連する実際の性能ａｉｊについて、対応する性能尺度ｍｉｊは、次の式で求めることができる。
ｍｉｊ＝１−｜ｐｉｊ−ａｉｊ｜
システム全体のレベルで考察すると、性能尺度は、システムが指定した全体的なタスクをどれほどうまく遂行できるかに関連する。
【００５６】
形式的には、各コンポーネント及び全体のシステムｃＴについて、それぞれ関連する監視ベクトル＜ｍ｛ｉ，１｝，．．．，ｍ｛ｉ，ｑ｝＞が存在する。
【００５７】
性能データは、観察ウィンドウ（observation window）として知られるある時間的なウィンドウに亘って収集され、これらの値は、多くの場合、平均化され、この期間における所望の性能と比較される。
【００５８】
システム内の全てのコンポーネントに関する監視変数（性能尺度）の組は、全体的なシステム自体について定義された監視変数とともに、多次元空間を定義し、包括的なシステム性能は、環境的な刺激（environmental stimuli）の所定のストリームに応じてこの空間内の軌道をトレースする。好ましくは、時刻ｔにおける全体的なシステムｓの性能Ｍ（ｓ，ｔ）は、全ての監視変数（すなわち、システムにおいて用いられている全てのコンポーネントの監視変数及びシステム自体に関する監視変数）の値の平均を算出することによって、定量化される。これにより、コスト関数Ｃ（Ｐ（ｓ，ｔ））は、次のように定義される。
Ｃ（Ｐ（ｓ，ｔ））＝１．０−Ｍ（ｓ，ｔ）
コスト関数の最適値Ｃｏｐｔは、０．０である。
【００５９】
時刻ｔにおける全体的なシステムｓの性能を表す上述の変数Ｍ（ｓ，ｔ）は、全体的なシステムがその割り当てられたタスクを如何にうまく実行できるかに関する性能尺度のみではなく、各コンポーネントがそれぞれに割り当てられたサブタスクを如何にうまく実行できるかに関する性能尺度をも考慮して評価することが望ましい。これにより、システムがタスクを実行しているときに、サブタスクを実行しているコンポーネントが修正的な又は発達に関して行うべきステップの選択に影響を与えることができる。
【００６０】
更に、アプリケーションによっては、変数Ｍ（ｓ，ｔ）が性能尺度の重み付け平均に基づいていることが望ましい場合もある。幾つかの挑戦は、非常に基本的な性質を有し、したがって、これらの挑戦は常に維持されるべきであり（したがって、これらの挑戦パラメータに関連する性能尺度は、Ｍ（ｓ，ｔ）を算出する際に高い重みが与えられる。）、一方、この他の挑戦は、望ましい性能を表してはいるが、重要度は低い（したがって、関連する性能尺度には、Ｍ（ｓ，ｔ）を算出する際に低い重みが与えられる）。
【００６１】
学習及びスキルレベル
本発明に基づく発達システムにおいて、発達の原動力（drive）として自己目的原理を用いるコンポーネントは、自らのスキルレベルを高める手段を有する。このようなスキル向上手段（これを本明細書では、「リペア手段（repair means）」とも呼ぶ。）は、特定の入出力マッピングをこのコンポーネントによって確立できない場合、又は、入出力マッピングが正しくないこと、又は挑戦パラメータによって特定された挑戦レベルに基づいて実行されていないことを示す失敗信号が受け取られた場合に使用される。
【００６２】
コンポーネント及びシステム全体が自己目的原理を適用するコンポーネント発達システムの場合、システム全体が各サブコンポーネントのマッピングを連鎖させることによって包括的な入出力マッピングを確立しようとすると、様々な失敗（failure）が生じる可能性がある。更に、マッピングを確立することができても、後に失敗信号が生成されて、そのマッピングを変更する必要が生じることもある。再び自然言語システムの例を用いて説明すると、辞書コンポーネントは、ある述語に対する単語を有しておらず、したがって、意味構造の一部のみしかカバーできないことがある。又は、自律エージェント間で通信を行うシステムにおいては、あるエージェントの辞書が他のエージェントの辞書と異なり、通信が失敗する場合もある。したがって、コンポーネントには、失敗を修正（リペア）し、スキルレベルを向上させるための手段を設けている。
【００６３】
本発明は、スキルレベルを向上させ／失敗をリペアする種類の方法に限定されるわけではない。適切な技術としては、以下に限定されるわけではないが、コンポーネントによって使用されるリソースを増加させることによって、「スキルを増加させる方法」（例えば、コンポーネントが使用できるメモリを増加させる）、単純な学習メカニズム（例えば、様々な形式のニューラルネットワーク）、高度な抽象的機械学習技術（symbolic machine learning techniques）等が含まれる。
【００６４】
何が行われているかを追跡するために発達システムのスキルレベルの特徴を定式化することは有益である。これは、そのコンポーネントの「スキル変数（skill variable）」を定義することによって実現できる。このようなスキル変数の具体例としては、コンポーネントによって要求されるメモリ容量（必要なメモリ容量が少ないほど高いスキルレベルを表す）、コンポーネントによって学習される規則の数、ネットワーク内のノード又はリンクの数等がある。これらのスキル変数は、コンポーネントの発達の間にこれらのスキル変数の進化（evolution）を監視できるように定量化されるしたがって、コンポーネントｃｉは、スキルレベルを測定するための、関連するスキルベクトル＜ｓ｛ｉ，１｝，．．．，ｓ｛ｉ，ｒ｝＞を有する。
【００６５】
以上より、本発明に基づくコンポーネントｃｉは、好ましくは、トリプルｃｉ＝＜Ｐ｛ｉ，ｊ｝，Ｍ｛ｉ，ｋ｝，Ｓ｛ｉ，ｌ｝＞として定義される。ここで、Ｐ｛ｉ，ｊ｝＝＜ｐ｛ｉ，１｝，．．．，ｐ｛ｉ，ｎ｝＞は、挑戦パラメータベクトルを表し、Ｍ｛ｉ，ｋ｝＝＜ｍ｛ｉ，１｝，．．．，ｍ｛ｉ，ｑ｝＞は、監視ベクトル（すなわち、「性能尺度のベクトル」）を表し、Ｓ｛ｉ，ｌ｝＝＜ｓ｛ｉ，１｝，．．．，ｓ｛ｉ，ｒ｝＞は、スキルベクトルを表す。好ましくは、マルチコンポーネントシステムにおいては、全体的なシステムＴは、自らのパラメータと、モニタと、スキル尺度とを有するコンポーネントとして定義することができ、これにより、システムの全体の性能を同様に監視することができる。
【００６６】
自己調整
本発明に基づく発達システムは、円滑で漸進的な自己発達を実現する目的で、挑戦パラメータのレベルを調整するよう設計される。
【００６７】
挑戦パラメータの最適な設定を見出す処理は、組合せ最適化の具体例であり、したがって、最適な性能を実現するパラメータの構成を見出すべきシミュレーテッドアニーリング法（simulated annealing）等の周知の最適化アルゴリズムと同じ包括的な構造を有する（文献「シミュレーテッドアニーリングによる最適化（Optimization by Simulated Annealing）」 by S. Kirkpatrick, C. D. Gerlatt Jr., and M. P. Vecchi, in "Science" 220, 671-680, (1983)参照）。アニーリング法は、統計物理学、特に固体が非常に整った構造（a highly regular structure）を有する最小のエネルギ状態に到達させる緩慢な冷却処理に由来する手法である。この手法は、確率的変動を用いて局所的最小値（local minima）を回避する最適化処理であると概括することができる（文献「シミュレーテッドアニーリング：実行対理論（Simulated annealing: Practice versus theory）」 by L. Ingber in "Mathematical and Computer Modelling", 18, 11, 29-57, (1993)参照）。
【００６８】
ここで、本発明では、従来の最適化タスクに比べて次のような２つの複雑な問題がある。（１）挑戦パラメータの特定の構成の「コスト」は、（例えば、特定の経路を辿るセールスマンの「コスト」が、基本的に経路の長さである「巡回セールスマン問題」とは異なり）単純な関数を適用するだけでは簡単に算出することができず、特定の期間、システムの実際の性能を監視することによって導出する必要がある。（２）この監視期間は、システムがある性能レベルに達する必要なスキルを獲得するために十分な期間である必要がある。なお、この目的は、最適な性能を得ることではなく、より高い複雑性の度合いに到達するような可能性の状況（landscape of possibilities）を探索することである。
【００６９】
最適化アルゴリズムは、多くの場合、繰り返される向上（山登り法（hill-climbing process）において最適なパラメータ設定を見出すための構成への小規模な変更（small-scale changes）がある。）と、ランダム化（初期的には、性能を劣化させる虞があるが、システムが局所的最小値から抜け出す助けとなるパラメータの変更がある。）とを組み合わせる。これらの側面はいずれも挑戦パラメータを自己調整するためにここに提案するアルゴリズムに含まれる特徴である。
【００７０】
本発明の好適な実施例においては、挑戦パラメータを調整する処理は、交互に現れる次のような２つのフェーズを有する（図３参照）。
（１）学習又はリソースの割当によってスキルレベルを高めた後、一定の（steady）性能レベルに到達するまで挑戦パラメータをクランプする「オペレーションフェーズ（operation phase）」。
（２）（一定の性能に到達し、獲得されたスキルレベルが実行された挑戦に対して高すぎるレベルになったため、又はスキルを向上させる試みを行っても所望の性能に到達できず、したがって、獲得されたスキルレベルに対して、挑戦レベルが高すぎるため）挑戦パラメータが変更される「シェークアップフェーズ（shake-up phase）」。
【００７１】
本発明の好適な実施例によれば、システムにおける挑戦パラメータの所定の構成に対するコスト関数は、性能モニタ（performance monitor）の平均値を考慮して算出される。これは、これらのモニタを算出する関数が上述したような形式を有している場合、その平均値は、システム全体がどの程度うまく振る舞っているかを示すわかりやすい尺度を提供するためである。
【００７２】
ランダムな構成から開始するのに代えて、ボトムアップ式に着実に能力を強化するために全てのコンポーネントに対して、可能な最も低いレベルでシステムを開始する方が望ましいことが見出された。システムが能力の獲得を既に開始した後に、システムの電源がオフにされた（又は、この他の理由により電力を失った）状況に対処するために、システム内で挑戦パラメータ値を設定するコントローラは、「現在の」構成を不揮発性メモリに保存してもよく、システムが挑戦パラメータ値をそれらの最低レベルに設定する前に、システムが真に「開始する（starting-up）」か否かを検証してもよい。この検証は、様々なコンポーネントのスキルレベルを確認することによって行うことができる。
【００７３】
不均一なスキルを有するマルチエージェントシステムの場合、より有能なエージェント（最良の性能を有するエージェント）は、（スキルが既に高いレベルにあっても）他のエージェントに追いつく機会を与えるために、挑戦パラメータを下げ続けなくてはならない。
【００７４】
オペレーションフェーズ
オペレーションフェーズの間、挑戦パラメータは、所定のレベルにクランプされる。システムは、そのコンポーネントを訓練（exercise）し、各コンポーネントの性能を監視する必要がある。コンポーネントは、様々な入力を利用することができるようになるとアクティブとなる。（コンポーネントが所望の入出力マッピングを実現できないため、又は、多くの場合、他のコンポーネントから失敗信号が受け取られたために）失敗が生じた場合、関連するコンポーネントは、失敗に対処（fix）するために使用可能なリペア手段を利用することができる。例えば、オブジェクトを握持するよう設計された感覚運動システムにおいて、握持動作が失敗した場合、システムは、システムの範疇化コンポーネントが失敗信号を受け取り、新たな状況を区別するために範疇レパートリ（categorial repertoire）を拡張するよう設計することができる。リペアの幾つかは、メモリ又はより多くの処理サイクル等の単なる追加的リソースの追加であってもよい。与えられた実行状況において、可能な失敗の種類は数多くあり、リペアも数多くあるため、どのリペアを適用するか及び幾つのリペアを適用するかについて幾つかの選択を行う必要がある。
【００７５】
オペレーションフェーズに対する好ましい手続き
オペレーションフェーズは、図４のフローチャートに示すように組織化することができる。このフローチャート及びこれに基づく説明は、２以上の発達可能なコンポーネントを含む自己発達システムに対応する。この説明では、単一の発達可能なコンポーネントのみを含むシステムの場合と、異なるステップを明らかにしている。
【００７６】
固定された挑戦パラメータのレベルにより（ステップ１）入力刺激（input stimuli）の次のバッチがシステムに供給される（ステップ２）。次に、どのコンポーネントが要求した入力を利用可能かを確定する（又は、単一の発達可能なコンポーネントを有するシステムについては、そのコンポーネントが要求した入力を利用可能か否かを判定する）。次に、入力が利用可能なコンポーネントのうちの第１のコンポーネントを実行し、（ステップ３）その性能を監視する。この性能監視により、所望の入出力マッピングを確立することができるか、及び、挑戦パラメータによって設定された基準を性能がどの程度満足させることができるかが評価される（ステップ４）。入出力マッピングを確立できない場合、又はコンポーネントの実際の性能と設定された挑戦パラメータ値によって示された性能との間の差が大きすぎる場合（この差を閾値と比較することによって評価される）失敗信号が生成される。（なお、失敗は、他のコンポーネントがこのコンポーネントの出力を取り扱うことを試みたとき等、後の段階でのみ検出される場合もある。）
コンポーネントによるタスクの実行が失敗すると、このコンポーネントに関する可能なリペアが導出され、「リペア候補（candidate repairs）」のリストに追加される（ステップ５）。多くの場合、所定のコンポーネントに対する可能なリペアの組を示すデータは、（コンポーネントレベル又はシステムレベルにおいて）システム内のレジスタ又はレベルに保存される。問題を処理するための潜在的な有効性に関してリペアをランク付けすることによってリペアに経験則を付加することは有益である。このランク付けは、コンポーネントの失敗の性質に応じて異なっていてもよい。可能なリペアのランクに関するデータは、通常、システムにプログラミングされる。なお、これらのランクは、システムが「学習する」につれて変更するように適応化してもよい。更に、同じリペア（システムの現在の状態では未だ与えることができないリペア）が何度も繰り返して試される無限ループに陥ることを回避するために、どのリペアが同じ入出力マッピングについて既に試されているかを考慮に入れる必要がある。
【００７７】
システムが、発達可能なコンポーネントを１つしか有さないために、又は要求された全ての入力を利用できる更なるコンポーネントがないと判定された（ステップ６）ために実行すべき更なるコンポーネントがなくなると、処理はステップ７に進み、リペア候補のリストがフィルタリングされる。なお、このフィルタリング処理では、現在の入力刺激に関して既に実行され、失敗に終わったリペアがリストから取り除かれる。リスト内にリペア候補が残っている場合、有効性が最も高いと推定された１又は複数のリペアが選択され、この又はこれらのリペアが実行される（ステップ８）。理論的には、フィルタリングされたリスト内の全てのリペア候補を実行することができる。しかしながら、シミュレーションの結果一回に１つのみのリペア又は少数のリペアの組を実行した方がより良好な結果が得られることが見出された。選択されたリペアが実行されると、処理をステップ３から再開し、入力を利用可能な全てのコンポーネントを再び実行することが望ましい。
【００７８】
この再開時には、システムが利用可能な入力刺激の次のバッチを用いてもよいが、リペアの前と同じ入力刺激を用いてコンポーネントの実行を再開した方が有益であることが見出された。これにより、発達の速度が著しく速くなることが判った。
【００７９】
ステップ３から処理を再開することが常に望ましいわけでもなく、常に可能であるわけでもない（例えば、視覚及びオブジェクトを処理するアプリケーションでは、幾つかのオブジェクトがリペアが実行された時点では、既にシステムから見えなくなってしまっていることもある）。したがって、システムは、リペアの実行の後に、ステップ２から処理を再開するようにプログラミングしてもよい（ステップ３からの再開の試みが不可能であることが判明した後にこれを行ってもよい）。
【００８０】
リペア候補のリストをフィルタリングした後（ステップ７）、リペア候補が残っていない場合は、処理はステップ２から再開され、入力刺激の新たなバッチが受け取られ、この入力の組に対してアクティブとなる全てのコンポーネントが実行される。
【００８１】
図４に示す処理は、オペレーションフェーズの間、継続的に実行される。続いて、オペレーションフェーズは、シェークアップフェーズに移行する。オペレーションフェーズの期間は、所定数の観察ウィンドウの組（すなわち、所定数の期間）として設定してもよい。しかしながら、観察期間からシェークアップ期間への移行は、システム性能によって決定することが望ましく、特に、性能が安定状態に達したとき及びスキルレベルの更なる大きな向上がなくなったときに移行することが望ましい。ある観察ウィンドウから次の観察ウィンドウへのシステム性能の変化及びある観察ウィンドウから次の観察ウィンドウへのスキルレベルの変化が（例えば、それぞれの閾値レベルと比べて）小さいことが見出された場合にシェークアップフェーズへの移行をトリガしてもよい。これに代えて、又はこれに加えて、設定された数の観察ウィンドウの組について、システム性能が不適切であり、スキルレベルの大きな向上がなかった場合にこの移行を行ってもよい。
【００８２】
シェークアップフェーズ
シェークアップフェーズの目的は、挑戦パラメータを調節（adjust）することである。殆どの組合せ最適化アルゴリズム（例えば、アニーリング法等）において、この調節は、任意にパラメータを選択し、これを変更することによってランダムな方式で実行される。同様に、本発明においても、システム全体の１以上のコンポーネントにおける１以上の挑戦パラメータをランダムに選択して、その値を変更する（増加又は減少させる）ことによってパラメータ空間を変更することができる。本発明に基づくシステムにおいて、このような手法を用いた場合、発達の開始時において、全ての挑戦パラメータを低いレベルに初期化し、パラメータ空間を変更する際には慎重なストラテジを適用することが望ましいことが見出された。特に、一回に１つのシステムのコンポーネントにおける挑戦パラメータを変更することが有益であることが判った。更に、一回に１つのみの挑戦パラメータを変更することが有益であることが判った。
【００８３】
しかしながら、現実的な複雑性を有する発達システムにおけるパラメータ空間のサイズが与えられた場合、上述した検索法は、比較的弱い。このような場合、これに代えて、挑戦パラメータをより構造的に適応化し、利用可能な経験則をできるだけ利用する手法を適用することが好ましい。以下では、このような手法について説明する。
【００８４】
シェークアップフェーズは、与えられた挑戦パラメータの設定によってシステムが十分な経験を得た後に実行される。「十分な経験」とは、コンポーネント（又は、マルチコンポーネントシステムにおける各コンポーネント）及びシステム全体の平均的性能レベルが、特定の観察ウィンドウの間、大きく変化しなくなり、スキルの更なる大きな向上もなくなったことを意味する。
【００８５】
ここでは、次のような２つの状況が起こりうる。
（１）性能が所望のレベルの近傍のどこにも到達しない。これは、挑戦レベルが高すぎ、学習によって性能がこれ以上向上しないことを意味する。この状況をＡ−状態と呼ぶ（Ａは、「Anxiety：不安」を表している）。
（２）性能が非常に高いレベルで安定している。これは、全てのコンポーネントの動作がルーチンになり、挑戦を高めることができる可能性があることを意味する。この状況をＢ−状態と呼ぶ（Ｂは、「Boredom：退屈」を表している）。
【００８６】
なお、多くのアプリケーション（例えば、自律エージェント間の自然言語ダイアログ等）において、システムによって指定されるタスクの複雑性は、「相手（partner）」のスキルレベルにも依存する。これは、発達している（又は成熟した）システムが、相手のシステムに追いつかせるために、自らの挑戦レベルを下げる必要がある場合があることを意味する。
【００８７】
システムの特定の状態に応じて、発達を刺激するために、特定のアクションを実行することができる。更に、１つのコンポーネントの性能が非常に高く他のコンポーネントの性能が非常に低いといった場合もあるので、これらの状態を高精度に分析することもできる。したがって、パラメータの変更は、好ましくは、どのコンポーネントがＡ−状態であり、どのコンポーネントがＢ−状態であるかを考慮して、経験的にガイドされる。
【００８８】
経験則的情報の他のソースは、コンポーネントの相互の依存性である。あるコンポーネントがＡ−状態である場合、これは、このコンポーネントに接続されたコンポーネントからの出力の複雑性に起因する可能性がある。したがって、このＡ−状態のコンポーネントに入力を供給するコンポーネントに「挑戦レベル低減（decrease challenge levels）」信号を出すことが有効である可能性がある。（及び、この「挑戦レベル低減」信号は、再帰的に（recursively）適用してもよく、すなわち連鎖内の更なる「アップストリーム」で入力を提供するコンポーネントの挑戦レベルを低減してもよい）。
【００８９】
更なる経験則的情報としては、先の挑戦パラメータの構成によって達成された性能を用いることができる。好ましくは、先の挑戦パラメータの構成によって達成された性能に関する記録を保存するとよい。これにより、システムは、バックトラックを行い、システムがより良好な性能を示した際の先の構成を返すことができる。これにより、パラメータ空間の局所的探索に基づいて最適な構成を目指し、及び適切な解を目指す反復的な手法が実行される。
【００９０】
本発明では、シェークアップフェーズの間に挑戦パラメータを変更するためのストラテジに、上述した経験則の全て又はいずれを利用してもよい。以下、挑戦パラメータを変更する好適なストラテジについて説明する。
【００９１】
Ａ−状態に対する手続き
コンポーネントがＡ−状態であると判定された場合、どの挑戦パラメータを低下させるかを決定するために、次のような手続きを適用することが望ましい。
１．先のパラメータ構成が現在の構成に比べてより良好な全体的なシステム性能Ｍ（ｓ，ｔ）を生んでいた場合、更なる変更を行う前に、まず、先の構成にスイッチバックする。
２．次のように、パラメータ適応化のための可能な選択肢のリストを作成する。Ａ−状態の全てのコンポーネントについて、そのコンポーネントの挑戦パラメータの１つを低下させてもよく、ステップ２を繰り返し適用することによって、そのコンポーネントに出力を提供するコンポーネントに対し、その出力の複雑性を低減するように知らしてもよい。これらの選択は、含まれるコンポーネントの性能に基づいて、経験的に順序付けされる。詳しくは、現在、性能が比較的悪いコンポーネントに影響を与える挑戦パラメータを変更することが望ましい。
３．可能な選択肢のリストから、１以上のパラメータを選択し、変更を行い、オペレーションフェーズに戻る。
【００９２】
Ｂ−状態に対する手続き
コンポーネントがＢ−状態であると判定された場合、挑戦パラメータについて与えられた値に関して性能は安定しているが、更にスキルを高める機会がある可能性がある。なお、ここでの挑戦パラメータの変更は完全にランダムではないが、このフェーズは、他の多くの組合せ最適化アルゴリズムにおける「ランダム化」フェーズに対応している。どの挑戦パラメータを高めるかを決定するために、次のような手続きを行うことが望ましい。
１．次のように、パラメータの適応化に関する可能な選択肢のリストを作成する。Ｂ−状態の全てのコンポーネントについて、このコンポーネントの挑戦パラメータの１つを高めてもよく、或いは、このコンポーネントに入力を供給するコンポーネントの挑戦パラメータを再帰的に高めてもよい。ここでも、含まれるコンポーネントの性能に基づいて、これらの可能性を順序付けすることができる。
２．これらのパラメータの１以上を選択し、変更を行い、オペレーションフェーズに戻る。
【００９３】
なお、必要に応じてバックトラックを行うために、パラメータ構成と、これらに関連する性能とに関する記録を保存することが好ましい。
【００９４】
初期的には、挑戦パラメータを大きく変化させ、続いて、正しい設定に近付ける（zoom in）ために、その変化を徐々に小さくする。アニーリング法における研究では、挑戦パラメータの一連の変化の大きさは、ボルツマン分布に基づいて決定することが望ましいと考えられている。しかしながら、シミュレーションの結果、ある種のアプリケーションについては、挑戦パラメータの変化の大きさを、小さい値で一定に維持した方が良好な性能が得られることが見出された。
【００９５】
実験では、保守的なストラテジ（オペレーションフェーズにおいて、１つのリペアのみを実行し、シェークアップフェーズにおいて、１つのパラメータのみを変更する）の方が、急激な変更を行うよりも望ましい結果が得られた。
【００９６】
実施例
上述した原理及び手続きを明らかにするために、本発明に基づく自己発達システムの２つの実施例について説明する。
【００９７】
実施例１  単一の自己発達コンポーネントを備えるシステム
図５は、本発明に基づく単一の自己発達コンポーネント１の構成を示すブロック図である。この実施例では、説明を簡潔にするために、自己発達コンポーネント１は、自己発達コンポーネント１のみが自己目的原理を適用するシステムの一部を構成しているとする。このシステムには、他のモジュールが存在してもよく、更に他の自己発達モジュールが存在してもよいが、これらは、自らの発達の原動力として自己目的原理を適用しないものとする。
【００９８】
図５に示すように、自己発達コンポーネント１は、図１に示す自己発達コンポーネントと略々同様のコンポーネントであり、関連する状態を有するマッピングメカニズム２と、学習／リペアモジュール３とを備える。マッピングメカニズム２は、入力を出力にマッピングし、学習／リペアモジュール３は、実際のマッピングが望ましいマッピングに近づくように、（外部及び内部の両方の）フィードバックに基づいてマッピングメカニズム２によって行われたマッピングを適応化する。
【００９９】
周知の自己発達装置と異なり、図５に示す自己発達コンポーネント１は、一組の挑戦パラメータｐに関連してこのコンポーネントの性能及びスキルを監視するモジュール４を備える。挑戦パラメータｐは、自己発達コンポーネント１によって行われているタスクの困難さを表している。多くの場合、これらの挑戦パラメータｐは、以下のいずれか又は全てを定量化したものである。
・入力の複雑性
・タスクを実行する際にマッピングメカニズムによって使用されるリソース（例えば、時間、空間、メモリ等）の複雑性
・マッピング機能の複雑性
・学習モジュールの複雑性
・フィードバックの複雑性
・マッピングメカニズムに関連する内部状態の複雑性
・出力の複雑性
説明のため、標準的な述語論理表現をその表現をカバーする１以上の単語に変換する自己発達コンポーネントについて考察する。入力は、例えば、ｒｅｄ（Ｏ１）、ｂａｌｌ（Ｏ１）、ｎｅｘｔ−ｔｏ（Ｏ１，Ｏ２）、ｇｒｅｅｎ（Ｏ２）、ｂｏｘ（Ｏ２）等の形式をとる。ここで、ｒｅｄ，ｂａｌｌ，ｎｅｘｔ−ｔｏ，ｇｒｅｅｎ，ｂｏｘは、述語であり、Ｏ１及びＯ２はオブジェクトである。出力は、例えば、｛「ｒｅｄ」，「ｂａｌｌ」，「ｎｅｘｔ−ｔｏ」，「ｇｒｅｅｎ」，「ｂｏｘ」｝といった単語のリストである。
【０１００】
このコンポーネントの状態は、それぞれが関連する得点を有する＜述語，単語＞の対を含む。マッピングメカニズム２は、各述語又は述語のサブセットについて、「最良の」単語、すなわち、最も高い得点を有する単語を選択する。選択された単語が「正しい」場合、すなわち、聞き手が単語を理解した場合、これにより正のフィードバック信号が生成され、選択された＜述語，単語＞の対に関連するスコアが高められ、競合する対のスコアが低められる。この文脈において、「競合する」＜述語，単語＞の対とは、同じ述語を含むが、異なる単語が関連付けられている対を意味する。選択された単語が失敗した場合（すなわち、聞き手が単語を理解しなかった場合）失敗信号がコンポーネント１にフィードバックされ、この結果、学習／リペアモジュール３は、選択された＜述語，単語＞の対に関連する得点を低める。この場合、聞き手が正しい単語を示唆してもよく、コンポーネントは、新たな＜述語，単語＞の対を保存することができる。
【０１０１】
この実施例では、次のような挑戦パラメータを定義してもよい。
ｐ１：入力として与えられる述語の数。コンポーネントは、単一の述語のみを有する入力表現を受け入れ、段階的に複数の述語を有する表現を受け入れるようにするなどしてもよい。この挑戦パラメータは、コンポーネント１への入力の複雑性に関連する。
ｐ２：出力として生成される単語の数。（入力が複数の述語を含んでいる場合であっても）最初は単一の単語のみを出力し、続いて複数の単語を出力する。複数の単語で失敗が生じた場合には、どの単語がどの意味をカバーするかが明確でなくなるため組合せ検索問題が生じる（但し、これらは辞書のサイズを縮小するために役立つ）。
この挑戦パラメータは、コンポーネント１からの出力の複雑性に関連する。
ｐ３：＜述語，単語＞の対における述語の数。単一の述語に対して単一の単語が対応している場合もあり、これに代えて、単一の単語が多数の述語をカバーしている場合もある。後者の可能性は、単語の数が出力において用いられる入力として与えられる述語の数より少ないような状況を処理するために必要である。この挑戦パラメータは、マッピングメカニズム３に関する状態の複雑性に関連する。
ｐ４：同じ意味について保存される代替的な単語の数。複数の代替的な単語を保存することにより、母集団においてアクティブであるが、現在のエージェントにとっては必ずしも望まれない好ましくない単語の意味に関する統計的データの収集が可能となる（他のエージェントの母集団と相互作用する自律エージェントの一部を構成していると仮定している）。この挑戦パラメータは、学習／リペアモジュール３の複雑性に関連する。
ｐ５：＜述語，単語＞の対に関する特定の増加又は減少の量。この量が小さければ、コンポーネントは、大きく変化しない。この場合、発達システムは、より保守的となる（但し、性能の信頼性は高まる）。この挑戦パラメータ学習／リペアモジュール３の複雑性に関連する。
ｐ６：危険性（risk）。主に、得点が高い＜述語，単語＞の対のいずれかを用いることが多いが、或いは、システムは、（統計的データを修正し、このコンポーネントの学習を向上させるために）時々、得点が低い対を選択してもよい。この挑戦パラメータは、マッピングメカニズム３によって実行されるマッピング機能の複雑性に関連する。
ｐ７：複数のユーザ（multi-user）。システムは、様々な数のテーブルを用いて得点付けされた＜述語，単語＞の対を保存することができる。テーブルは１つのみでもよく、システムが対話する聞き手毎に異なるテーブルを用いてもよい（人が異なると、単語も若干異なる用法で用いられることがあるため）。この挑戦パラメータは、マッピングメカニズム３の状態の複雑性に関連する。
【０１０２】
パラメータ化の詳細は、装置の性質及び内部で用いられている実装技術に依存することは明らかである。例えば、ニューラルネットワークは、初期的にはその入力ノードの幾つかを無視してもよく、現在の決定に過去の記憶を利用せず、段階的に記憶を統合してもよく、初期的には出力ノードの幾つかのみを使用してもよく、限定された数の入出力リンクのみを有し、これを成長させてもよく、全ての出力についてフィードバック信号を受け取ってもよく（教師あり学習）、フィードバックを全く受け取らなくてもよく（教師なし学習）、入力と出力の間にレイヤがなくてもよく、複数のレイヤがあってもよく、演算のための時間的ステップの数が制限されていてもよく、この数が無制限であってもよい。
【０１０３】
自己発達コンポーネント１の性能／スキル監視モジュール４は、多くの場合、入力、出力、フィードバック及びリソース（時間、空間、サイズ及び内部状態の構造的複雑性）の内部的な使用状況を観察するコンポーネント自身の性能を監視する。ここでもこの監視を実行するための詳細な事項については、装置の性質及びその実装技術に依存する。
【０１０４】
動作時には、自己発達装置１は、上述した２つのフェーズ、すなわち、オペレーションフェーズシェークアップフェーズ間を行き来する。初期的には、挑戦パラメータは、その最低の値に設定され、自己発達装置１は、オペレーションフェーズにおいて訓練（exercise）（内部の「状態」を構築するための学習を含む。）される。性能は、定期的に評価され、安定した性能又は弱すぎる性能が検出された場合には、シェークアップフェーズがトリガされる。シェークアップフェーズにおいては、挑戦パラメータの１つが変更され（性能が安定している場合には高められ、性能が弱い場合には低められる。）、性能モニタが再インストールされ、オペレーションフェーズが再開される。
【０１０５】
実施例２  自己発達コンポーネントの組を備えるシステム
図６は、本発明の他の実施例である複数のコンポーネントを備える自己発達システム１１の主な構成を示すブロック図である。この実施例では、説明を簡潔に行うために、自己発達システム１１内の全てのコンポーネントが発達に自己目的原理を適用する自己発達コンポーネントであり、挑戦レベルの変更は、コンポーネントの組に対して一括して制御されるものと仮定している。
【０１０６】
本発明を適用することができるマルチコンポーネントシステムの一具体例として、自然言語処理システムがある。自然言語処理システムは、それぞれ認知（perception）、概念化（conceptualization）、辞書、文法及びレンダリングを担当する複数の自己目的（autotelic）コンポーネントを備える。
【０１０７】
この認知コンポーネントは、その入力としてビデオストリームを受け取り、出力として、ビデオストリーム内に存在するイベントの記述を含む論理表現を生成する。このようなコンポーネントの実装技術については、文献「自律ロボットによるイベント記述の共有基礎訓練（Shared grounding of event descriptions by autonomous robots）」 by L. Steels and J-C Baillie, robotics and Autonomous Systems , 43 (2003), pp.163-173に開示されている。このコンポーネントの状態は、特徴エキストラクタ（features extractor）、オブジェクトテンプレート、及びイベントのマルコフモデルを含み、これらは全て、学習によって拡張することができる。挑戦パラメータは、観察のウィンドウの期間、観察ウィンドウ内において追跡されるオブジェクトの数、イベント／オブジェクト又はこの特徴の認識について要求される確かさ、取り扱うことができるイベントの種類の数等を含む。
【０１０８】
概念化コンポーネントは、１以上のイベントを選択し、選択されたイベント／オブジェクトについて弁別的な一連の述語を収集する。このコンポーネントは、選択されるイベントの数、過去からどの程度異なるものであるべきか、イベントの説明に含まれるオブジェクトの数、時間／因果関係等の他の側面を表現するか等を含む多くの異なる挑戦パラメータを有している。このコンポーネントは、例えば、メモリリソースを増加させて過去に何が選択されたかをより詳しく追跡したり、定義のレパートリを拡張したりする等、スキルを高めるための多くの機会を有する。
【０１０９】
辞書コンポーネントは、上述のような動作を実行し、イベントの説明内の述語をカバーする単語の文字列（string）を生成する。
【０１１０】
文法コンポーネントは、辞書から抽出された単語に対して語順（又は他の統語的構造）を強制する文法規則を用いる。このコンポーネントは、新たな単語及び新たな種類の構造を処理するために、新たな文法規則を学習するという意味において、適応化可能なコンポーネントである。このコンポーネントの挑戦パラメータは、特に、曖昧さをどの程度回避するかに関連する。
【０１１１】
レンダリングコンポーネントは、文法コンポーネントによって生成された統語構造から発話（utterance）を抽出する。
【０１１２】
なお、本発明は、（このシステムが図５に示すコンポーネント１の組と同等になるように）挑戦レベルの調整を各コンポーネントについて個別に処理するシステムにも適用できる。更に、本発明は、一部のコンポーネントのみが発達の原動力として自己目的原理を適用する「混合的な」システムにも適用できる（図６のシステム１１のような一括に処理されるこのコンポーネントの組に対しても、又は、図５のコンポーネントのような個別に処理されるコンポーネント１の組内の各コンポーネントに対しても、挑戦レベルを調整することができる）。
【０１１３】
更に、図６は、第１の自己発達コンポーネントｃ１からの出力が、第２のコンポーネントｃ２の入力の１つとして用いられ（ｃ２の他の入力は示していない）、第２の自己発達コンポーネントｃ２からの出力が、第３のコンポーネントｃ３の入力の１つとして用いられ（ｃ３の他の入力は示していない）、といった具合に自己発達コンポーネントが単純な方式で連鎖的に接続されたシステムを示している。連鎖内の最後の自己発達コンポーネントｃｎからの出力は、システム１１からの出力として機能する。但し、本発明は、コンポーネントがどのように接続されているかといった特定の構成とは無関係に適用することができる。
【０１１４】
図６に示す実施例では、各自己目的コンポーネントｃｉは、フィードバック（このコンポーネントｃｉが割り当てられたタスクを如何にうまく実行しているか／システム全体が如何にうまく機能しているかを示す。）を受け取る。このフィードバックは、他のコンポーネントｃｉの１つから提供してもよく、システムの外部から提供してもよく、及び／又はコンポーネント１自身が提供してもよい。
【０１１５】
各自己発達コンポーネントｃｉは、関連する状態を有するマッピングメカニズム２と、マッピングメカニズム２の適応化を制御して、これにより実行されるマッピングを修正する学習／リペアモジュール３とを備える。各自己発達コンポーネントｃｉは、更に、性能／スキル監視モジュール４を備える。全体的なシステム１１は、更に、システム全体に関する１以上の性能尺度ｍを評価する性能／スキル監視モジュール９（これ自体１つのコンポーネントであるとみなすことができる。）を備える。
【０１１６】
この実施例における自己発達システム１１においては、全てのコンポーネントｃ１〜ｃｎ（及び、コンポーネントｃＴとみなされるシステム全体）内の挑戦パラメータの調整は、挑戦パラメータレジスタ６、過去性能レジスタ７及びリペア候補レジスタ８と連携して、単一のコントローラ５が制御する。
【０１１７】
システム１１における複雑性の成長を制御する好適な手法は、以下の通りである。システム１１が学習を開始したとき、コントローラ５は、コンポーネントｃの全てについて、挑戦パラメータを低いレベルに設定する。次に、システムは、「オペレーションフェーズ」において動作することが許可される。そして、システム１１には、入力の第１の組が適用される。要求された全ての入力を利用可能なコンポーネントｃには、それぞれのマッピング機能を１つずつ実行することが許可される（図４に示すステップ３〜ステップ８と同様）。失敗が発生すると、失敗したコンポーネントに関連する可能なリペアのリストが作成される。このリストは、学習／リペアモジュール３、性能／スキル監視モジュール４又はこのコンポーネントに対応する独立したメモリ（図示せず）に保存されているデータに基づいて作成してもよく、コントローラ５若しくはこれに関連するメモリ又はレジスタ（図示せず）に保存されているデータに基づいて作成してもよい。「リペア」データ（及びこれに関連するあらゆるランク）は、適応化することができる。可能なリペアは、コントローラ５に接続されたリペア候補レジスタ８内に設けられている「リペア候補」のリストに追加される。
【０１１８】
全てのアクティブなコンポーネントが実行され、リペアリストがフィルタリングされた後（図４のステップ７参照）、リペアが残っている場合、残りのリペアのうちの１つのみを実行することが望ましい。選択されたリペア（このリペアの期待される有効性を示す保存されたパラメータに基づいて選択してもよい）は、検討中のコンポーネントの学習／リペアモジュール３に適切な制御信号を供給するコントローラ５によって実行される。次に、このコンポーネントの学習／リペアモジュール３は、必要なリペアを実行する（例えば、関連するマッピングメカニズム２において利用可能なメモリ容量を増やす）。リペアが実行された後に、現在の入力のバッチを維持し、全てのアクティブなコンポーネントを１つずつ実行することが望ましい。利用可能なリペアがなくなると、又は現在の入力刺激についてアクティブなコンポーネントのいずれもが失敗しなくなると、システム１１には、次の入力刺激のバッチが適用される。
【０１１９】
上述のオペレーションフェーズの間、システム全体の及びコンポーネントの性能が（及び関連するスキルレベルが）向上する。一連の観察ウィンドウ（期間）のそれぞれにおいて、各コンポーネントの性能及びシステム全体の性能が監視される。各観察ウィンドウにおいて、図４のフローチャートによって表されている手続きが何かも繰り返して行われる。各観察ウィンドウの最後には、コントローラ５は、観察されたシステム性能Ｍ（ｓ，ｔ）に基づいて、現在の挑戦パラメータの設定及びスキルレベルに関するコスト関数Ｃ（Ｐ（ｓ，ｔ））を算出する。
【０１２０】
オペレーションフェーズは、コントローラ５がある観察ウィンドウから次の観察ウィンドウにおけるシステム性能Ｍ（ｓ，ｔ）の向上が所定の閾値（システムは、経験によりこの閾値を修正することができる。）より小さく、スキルレベルがこれ以上大きく向上しないと判定するまで継続される。次に、コントローラ５は、上述した「シェークアップフェーズ」を開始する。コントローラ５は、様々なコンポーネントの性能／スキル監視モジュール４からの信号及び挑戦パラメータの現在の値（挑戦パラメータレジスタ６に保存されている）に基づいて、どのコンポーネントが「Ａ−状態」であり、どのコンポーネントが「Ｂ−状態」であるかを判定する。コントローラ５は、過去性能レジスタ７を調べ、現在のシステム性能が挑戦パラメータの直前の設定（より包括的には、以前の設定）によって実現された性能より良いか悪いかを確認する。これらの確認及び保存された経験則（この実施例では、予めプログラミングされている。）に基づき、コントローラ５は、１以上の挑戦パラメータを選択して、その値を増加させ又は減少させる上述のように、シェークアップフェーズの各インスタンスにおいて、１つのみの挑戦パラメータ値を増加又は減少させることが好適であることが見出されている。
【０１２１】
変更された挑戦パラメータは、システム１１の１つの（又は複数であってもよい。）コンポーネントｃに関連し、その性能／スキル監視モジュール４によって、コンポーネントｃについて算出される少なくとも１つの性能尺度に影響を与える。したがって、コントローラ５は、変更された１又は複数の挑戦パラメータ値を、関連する１又は複数の性能／スキル監視モジュール４に通知する。システムは、更新された挑戦パラメータ値に基づいて、オペレーションフェーズに戻る。
【０１２２】
本発明に基づく自己発達システムは、様々な分野に応用できる。この自己発達システムの自然言語処理システムへの応用及びロボット型握持装置等の感覚運動装置への応用については上述した通りである。なお、本発明は、少なくとも１つの自己発達コンポーネントを含むあらゆる人工システムに広く応用することができる。
【０１２３】
本発明の様々な好ましい実施の形態について説明したが、これらは、説明の目的で例示的に示したものに過ぎない。添付の請求の範囲において定義される本発明の範囲内でこれらの特定の実施例に関する様々に修正できることは、当業者にとって明らかである。
【０１２４】
例えば、図５及び図６では、本発明に基づく自己発達コンポーネント１の様々なモジュール（例えば、マッピングメカニズム２、学習／リペアモジュール３、性能／スキル監視モジュール４及びコントローラ５）を独立したユニットとして示しているが実際の実現例に応じて、これらのモジュールの機能を１以上の共通の装置に組み込んでもよい。更に、これらのモジュールの幾つか又は全てをソフトウェアによって実現してもよい。更に、実施例では、挑戦パラメータ、過去性能の記録及びリペア候補リストについてそれぞれ独立したレジスタを示しているがこれらは単に例示的なものに過ぎない。これらの様々なアイテムを保存するためのメモリ構成として、これ以外の構成を用いてもよく、メモリは、独立して設けても、共通のストレージ手段により実現してもよい（また、これらは、コントローラ５の内部に設けても外部に設けてもよい）。
【０１２５】
更に、図６では、システム１１の各自己目的コンポーネントｃｉは、そのコンポーネントｃｉの性能／スキルを監視するために、それぞれ独立したモジュール４を備えているが、様々なコンポーネントの性能／スキルは、個々のコンポーネントｃｉの外部に設けられ、コントローラ５に接続された１以上のモジュールによって監視してもよい。更に、性能／スキル監視モジュール４は、コントローラ５に組み込んでもよい。
【図面の簡単な説明】
【０１２６】
【図１】自己発達コンポーネントの主なコンポーネントの構成を示すブロック図である。
【図２】「フロー理論」に基づくスキルと挑戦レベルの均衡の変更の効果を図式的に示すグラフ図である。
【図３】本発明に基づく自己発達システムによって実現される発達の自己調整のフェーズを図式的に示す図である。
【図４】本発明の好適な実施例における「オペレーションフェーズ」に含まれる主なステップを示すフローチャートである。
【図５】本発明の第１の実施例として、自己目的原理を用いて自らの発達を調整する自己発達コンポーネントの具体例の主な構成を示すブロック図である。
【図６】本発明の第２の実施例として、自己目的原理を用いて自らの発達を調整する複数のコンポーネントを備える自己発達システムの具体例の主な構成を示すブロック図である。
【図１】
2005092866.tif 000003
【図２】
2005092866.tif 000004
【図３】
2005092866.tif 000005
【図４】
2005092866.tif 000006
【図５】
2005092866.tif 000007
【図６】
2005092866.tif 000008
【外国語明細書】
2005092866.tif 000009
2005092866.tif 000010
2005092866.tif 000011
2005092866.tif 000012
2005092866.tif 000013
2005092866.tif 000014
2005092866.tif 000015
2005092866.tif 000016
2005092866.tif 000017
2005092866.tif 000018
2005092866.tif 000019
2005092866.tif 000020
2005092866.tif 000021
2005092866.tif 000022
2005092866.tif 000023
2005092866.tif 000024
2005092866.tif 000025
2005092866.tif 000026
2005092866.tif 000027
2005092866.tif 000028
2005092866.tif 000029
2005092866.tif 000030
2005092866.tif 000031
2005092866.tif 000032
2005092866.tif 000033
2005092866.tif 000034
2005092866.tif 000035
2005092866.tif 000036
2005092866.tif 000037
2005092866.tif 000038
2005092866.tif 000039
2005092866.tif 000040
2005092866.tif 000041
2005092866.tif 000042
2005092866.tif 000043
2005092866.tif 000044
【図１】
2005092866.tif 000045
【図２】
2005092866.tif 000046
【図３】
2005092866.tif 000047
【図４】
2005092866.tif 000048
【図５】
2005092866.tif 000049
【図６】
2005092866.tif 000050