(57)【特許請求の範囲】
【請求項１】
入力変数の値が入力される入力素子により構成された入力層と、前記入力素子に結合された中間素子であって、前記入力素子に入力された値に基づいて演算された中間変数の値が出力される前記中間素子により構成された中間層と、前記中間素子に結合された出力素子であって、前記中間素子に入力された値に基づいて演算された出力変数の値が出力される前記出力素子により構成された出力層と、を有する層状ニューラルネットにより、前記入力変数と前記出力変数との関係である関数を近似する関数近似装置において、
３以上の入力変数の各値が入力される各入力素子により構成された前記入力層と、
前記３以上の入力変数の各値をそれぞれ入力する入力変数入力手段と、
前記３以上の入力変数の中のいずれか２つの入力変数を一組とした入力変数組が設定され、前記入力変数組の一方の入力変数の各値と、前記入力変数組の他方の入力変数の各値に基づいて演算される各第１出力感度と、に基づいて、前記中間変数の各値をそれぞれ演算する中間変数演算手段と、
前記中間変数と、前記中間変数の値の重視度合いに応じて設定された結合荷重と、に基づいて、前記出力変数の値を演算する出力変数演算手段と、
前記出力変数の値と、予め記憶された前記関数の実際の値との差分に基づいて、前記結合荷重を更新することにより、前記結合荷重を学習する結合荷重学習手段と、
を備えたことを特徴とする関数近似装置。
【請求項２】
前記入力変数組の一方の入力変数の各値と、前記入力変数組の他方の入力変数の各値に基づいて演算される各第１出力感度と、に基づいて、第１中間変数の各値をそれぞれ演算する第１中間変数演算手段と、前記入力変数組の他方の入力変数の各値と、前記入力変数組の一方の入力変数の各値に基づいて演算される各第２出力感度と、に基づいて、第２中間変数の各値をそれぞれ演算する第２中間変数演算手段と、を有する前記中間変数演算と、
前記第１中間変数と、前記第２中間変数と、前記第１中間変数および前記第２中間変数の各値の重視度合いに応じて設定された各結合荷重と、に基づいて、前記出力変数の値を演算する前記出力変数演算手段と、
を備えたことを特徴とする請求項１に記載の関数近似装置。
【請求項３】
前記中間層が、複数の各中間変数の各値が出力される各中間素子により構成され、且つ、前記３以上の入力変数の全ての入力変数が、少なくとも一組の前記入力変数組の一方または他方の入力変数として設定されて複数組の前記入力変数組が構成されていることを特徴とする請求項１または２に記載の関数近似装置。
【請求項４】
行動を制御する対象としての制御装置と、
前記制御装置の状態を測定する状態測定手段と、
前記行動に対する報酬を取得する報酬取得手段と、
将来取得可能な報酬の予測に基づいて、測定された前記状態における全ての行動を評価するための評価値である行動価値関数を演算する行動価値関数演算手段と、
前記状態で測定された測定値を、前記入力変数の値とみなすことにより、測定された前記状態における前記行動価値関数を近似する請求項１ないし３のいずれかに記載の前記関数近似装置と、
近似された前記行動価値関数に基づいて、前記行動を選択する行動選択手段と、
選択された前記行動を実行する行動実行手段と、
前記報酬に基づいて、前記制御装置の制御が失敗した状態であるか否かを判別することにより、前記制御装置の制御を終了するか否かを判別する制御終了判別手段と、
を備えたことを特徴とする強化学習システム。
【請求項５】
前記制御装置の制御が失敗した状態であると判別された場合に、前記結合荷重を学習する前記結合荷重学習手段、を有する請求項１ないし３のいずれかに記載の前記関数近似装置、
を備えたことを特徴とする請求項４に記載の強化学習システム。
【請求項６】
入力変数の値が入力される入力素子により構成された入力層と、前記入力素子に結合された中間素子であって、前記入力素子に入力された値に基づいて演算された中間変数の値が出力される前記中間素子により構成された中間層と、前記中間素子に結合された出力素子であって、前記中間素子に入力された値に基づいて演算された出力変数の値が出力される前記出力素子により構成された出力層と、を有する層状ニューラルネットにより、前記入力変数と前記出力変数との関係である関数を近似する関数近似システムにおいて、
３以上の入力変数の各値が入力される各入力素子により構成された前記入力層と、
前記３以上の入力変数の各値をそれぞれ入力する入力変数入力手段と、
前記３以上の入力変数の中のいずれか２つの入力変数を一組とした入力変数組が設定され、前記入力変数組の一方の入力変数の各値と、前記入力変数組の他方の入力変数の各値に基づいて演算される各第１出力感度と、に基づいて、前記中間変数の各値をそれぞれ演算する中間変数演算手段と、
前記中間変数と、前記中間変数の値の重視度合いに応じて設定された結合荷重と、に基づいて、前記出力変数の値を演算する出力変数演算手段と、
前記出力変数の値と、予め記憶された前記関数の実際の値との差分に基づいて、前記結合荷重を更新することにより、前記結合荷重を学習する結合荷重学習手段と、
を備えたことを特徴とする関数近似システム。
【請求項７】
コンピュータを、
入力変数の値が入力される入力素子により構成され且つ３以上の入力変数の各値が入力される各入力素子により構成された入力層と、前記入力素子に結合された中間素子であって、前記入力素子に入力された値に基づいて演算された中間変数の値が出力される前記中間素子により構成された中間層と、前記中間素子に結合された出力素子であって、前記中間素子に入力された値に基づいて演算された出力変数の値が出力される前記出力素子により構成された出力層と、を有する層状ニューラルネットにおいて、前記３以上の入力変数の各値をそれぞれ入力する入力変数入力手段、
前記３以上の入力変数の中のいずれか２つの入力変数を一組とした入力変数組が設定され、前記入力変数組の一方の入力変数の各値と、前記入力変数組の他方の入力変数の各値に基づいて演算される各第１出力感度と、に基づいて、前記中間変数の各値をそれぞれ演算する中間変数演算手段、
前記中間変数と、前記中間変数の値の重視度合いに応じて設定された結合荷重と、に基づいて、前記出力変数の値を演算する出力変数演算手段、
前記出力変数の値と、予め記憶された前記関数の実際の値との差分に基づいて、前記結合荷重を更新することにより、前記結合荷重を学習する結合荷重学習手段、
として機能させることにより、前記入力変数と前記出力変数との関係である関数を近似する関数近似プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ニューラルネットにより関数を近似する関数近似装置、関数近似システムおよび関数近似プログラムに関する。また、本発明は、前記制御装置の制御を適切に行うために前記関数近似装置が適用された強化学習システムに関する。
【背景技術】
【０００２】
従来より、入力と出力との関係を表す関数を近似する技術が知られており、機械学習、パターン認識、ロボット等の制御等の知的情報処理分野では広く用いられている。また、前記関数を近似する技術は、前記関数を精度良く近似できれば、気象予測や製鉄所の溶鉱炉の制御等の様々な工学分野においても有用であるため、研究・開発等が盛んに行われている。
【０００３】
前記関数を近似する技術として、例えば、前記関数を線形多項式等に近似する線形モデル（一般線形モデル（ＧＬＭ：General Linear Model））や、予め記憶されたテーブルを参照することにより近似するテーブル参照法（テーブルルックアップ（Table Look-up））等の技術が知られている。
また、入力層、中間層、出力層がそれぞれ有する素子（ニューロン）よって入力・出力および関数を分散表現することで前記関数を近似する、いわゆる、層状ニューラルネットの技術が知られている。なお、前記層状ニューラルネットには、学習能力（汎化能力）等の特性がそれぞれ異なる多層パーセプトロン（ＭＬＰ：Multi-Layer Perceptron，Multi-Layered Perceptron）、ＲＢＦ（Radial Basis Function）ネットワーク、ＧＲＢＦ（Gaussian Radial Basis Function）ネットワーク等のアルゴリズムが含まれる。
なお、前記線形モデルについては、例えば、非特許文献１等に記載されており、前記層状ニューラルネットについては、例えば、非特許文献２等に記載されており、いずれも公知である。
【０００４】
（選択的不感化法について）
また、本願発明者らによって、選択的不感化法が適用された新たな層状ニューラルネットが提案されている。なお、前記選択的不感化法については、非特許文献３等に記載されており、公知である。ここで、前記選択的不感化法が適用された層状ニューラルネットについて、非特許文献３に記載された内容に基づいて、以下に説明する。
前記選択的不感化法が適用された層状ニューラルネットでは、２つの入力パターンＳ，Ｃの情報を統合して目標パターンＴを連想する課題、すなわち、入力がＳ，Ｃならば出力がＴとなる関数を近似する課題について考える。
【０００５】
図１２は選択的不感化法が適用された層状ニューラルネットの最小の構成の説明図である。
図１２において、前記選択的不感化法が適用された層状ニューラルネット０１は、２ｎ個の素子により構成された入力層０１ａと、ｎ個の素子により構成された中間層０１ｂと、ｍ個の素子により構成された出力層０１ｃとを有する。前記入力層０１ａの２ｎ個の素子は、前記入力パターンＳ，Ｃにそれぞれｎ個づつ振り分けられている。すなわち、前記入力パターンＳ，Ｃは、それぞれｎ個の素子（要素）により構成されている。また、前記中間層０１ｂのｎ個の素子には、前記入力パターンＳ，Ｃのｎ個の素子がそれぞれ結合されており、中間層０１ｂのｉ番目の素子（後述する要素ｘｉ）には、前記入力パターンＳ，Ｃのｉ番目の素子（後述する要素ｓｉ，ｃｉ）がそれぞれ結合されている（ｉ＝１，２，…，ｎ）。
【０００６】
ここで、前記入力パターンＳ，Ｃが、Ｓ＝（ｓ１，ｓ２，…，ｓｎ），Ｃ＝（ｃ１，ｃ２，…，ｃｎ）で示されるとする。この場合、入力パターンＳ，Ｃのｉ番目の要素がｓｉ，ｃｉで示される。また、前記中間層０１ｂの出力である中間パターンをＸとし、前記中間パターンＸが、Ｘ＝（ｘ１，ｘ２，…，ｘｎ）で示されるものとする。このとき、前記中間パターンＸのｉ番目の要素ｘｉは、以下の式（１）で示される。
ｘｉ＝ｇｉ（ｓｉ−ａｖｅ（ｘｉ））＋ａｖｅ（ｘｉ）     …（１）
ここで、ｇｉは前記要素ｘｉにおけるゲイン（出力感度、感度）であり、ａｖｅ（ｘｉ）は前記要素ｘｉの平均出力レベル、すなわち、全ての入力（要素ｓｉ，ｃｉ）に対する出力（要素ｘｉ）の平均値である。
【０００７】
なお、前記平均出力レベルａｖｅ（ｘｉ）は、前記ゲインｇｉと前記要素ｓｉとの間に相関がない場合、前記要素ｓｉの平均値（ａｖｅ（ｓｉ））と置き換えることが可能である。ここで、両者（ａｖｅ（ｘｉ），ａｖｅ（ｓｉ））が厳密に一致していなくても殆ど問題はない。よって、例えば、前記要素ｓｉの値が１と−１とを等確率で取り、前記ゲインｇｉと前記要素ｓｉとが独立に決定される場合（相関がない場合）、前記平均出力レベルａｖｅ（ｘｉ）を０とすることも可能である（ａｖｅ（ｘｉ）＝０）。この場合、前記要素ｘｉは、以下の式（１）′で示すことができる。
ｘｉ＝ｇｉ×ｓｉ    …（１）′
【０００８】
また、前記ゲインｇｉをｉ番目の要素として含むゲインベクトルをＧとし、前記ゲインベクトルＧが、Ｇ＝（ｇ１，ｇ２，…，ｇｎ）で示されるものとする。また、前記ゲインｇｉの値は、通常１であるが、これを０にすることを「不感化」と呼ぶこととし、前記中間パターンＸの出力において、前記入力パターンＳのｎ個の素子ｓｉ（ｉ＝１，２，…，ｎ）のある一部分だけを不感化することを「選択的不感化」と呼ぶこととする。
そして、不感化する要素ｓｉ（ｉ＝１，２，…，ｎ）の組み合わせを前記入力パターン（文脈パターン）Ｃの要素ｃｉ（ｉ＝１，２，…，ｎ）に基づいて変化させる方法が、選択的不感化に基づく文脈修飾法であり、これを「積型文脈修飾」と呼ぶこととする。また、前記入力パターン（文脈パターン）Ｃで積型文脈修飾された入力パターンＳを積型修飾Ｓ（Ｃ）とする。
【０００９】
この場合、前記ゲインベクトルＧのｉ番目の要素（ゲイン）ｇｉは、前記入力パターン（文脈パターン）Ｃのｉ番目の要素ｃｉに基づいて決定される。最も簡単な決定方法として、例えば、前記ゲインｇｉは、前記要素ｃｉの値が前記要素ｓｉと同様に１と−１とを等確率で取る場合、以下の式（２）で示される。
ｇｉ＝（１＋ｃｉ）／２    …（２）
したがって、ｃｉ＝１の場合には、ｇｉ＝１となり、ｃｉ＝−1の場合には、ｇｉ＝０となり、前記入力パターン（文脈パターン）Ｃと、前記ゲインベクトルＧとを同一視できる。なお、前記ゲインｇｉ（要素ｃｉ）と前記要素ｓｉとの間に相関がある場合、すなわち、前記ゲインベクトルＧ（入力パターン（文脈パターン）Ｃ）と前記入力パターンＳとの間に相関がある場合、前記ゲインベクトルＧの成分（要素ｇｉ）を適当にシャッフルする等して相関関係を解消し、ａｖｅ（ｘｉ）＝０とすることが望ましい。
【００１０】
また、図１２において、前記出力層０１ｃのｍ個の各素子には、前記中間層０１ｂの複数の素子がそれぞれ結合されている。ここで、前記出力層０１ｃの出力である出力パターンをＹとし、前記出力パターンＹが、Ｙ＝（ｙ１，ｙ２，…，ｙｍ）で示される場合、前記出力パターンＹのｊ番目の要素ｙｊは、以下の数１の式（３）で示される。
【００１１】
【数１】
0005152780.tif 000002
なお、ｗｊｉは前記要素ｘｉから前記要素ｙｊへの結合荷重（重み付け）である（０≦ｗｊｉ≦１）。また、ｓｇｎ（ｕ）は、ある値ｕについて、ｕ＞０の場合には、ｓｇｎ（ｕ）＝１、それ以外（ｕ≦０）の場合には、ｓｇｎ（ｕ）＝−１となる符号関数である。
【００１２】
また、前記入力パターンＳ，Ｃの間には相関がなく、前記入力パターンＳ，Ｃどうしの直交性が低いため、前記結合荷重ｗｊｉについてのフィードバック型の学習則として、直交性の低い入力パターンＳ，Ｃに対する連想記憶が可能な直交学習が利用できる。すなわち、前記目標パターンＴが、Ｔ＝（ｔ１，ｔ２，…，ｔｍ）で示され、前記目標パターンＴのｊ番目の要素がｔｊで示される場合、前記結合荷重ｗｊｉは、入力パターンＳ，Ｃが入力される度に、以下の数２の式（４）で示される更新値Δｗｊｉが加えられて更新される。
【００１３】
【数２】
0005152780.tif 000003
ここで、εは正定数（例えば、０．３）である。また、式（４）は、前記式（３）によって、以下の式（４）′で示すことができる。
Δｗｊｉ＝ε（ｔｊ−ｙｊ）ｘｉ    …（４）′
【００１４】
（積型モデルと相互修飾モデル）
図１３は選択的不感化法が適用された層状ニューラルネットの説明図であり、図１３Ａは積型モデルの説明図であり、図１３Ｂは相互修飾モデルの説明図である。
なお、選択的不感化法が適用された層状ニューラルネットには、図１３Ａに示す積型モデル０１′と、図１３Ｂに示す相互修飾モデル０２とが含まれる。
図１３Ａにおいて、前記積型モデル０１′は、２ｎ個の素子により構成された入力層０１ａ′と、ｎ個の素子により構成された中間層０１ｂ′と、ｍ個の素子により構成された出力層０１ｃ′とを有する。なお、前記積型モデル０１′は、矢印Ｓにより、前記入力層０１ａ′の入力パターンＳが省略されて簡略化されただけであり、図１２に示す前記層状ニューラルネット０１と同様に構成されている。
【００１５】
また、図１３Ｂにおいて、前記相互修飾モデル０２は、２ｎ個の素子により構成された入力層０２ａと、２ｎ個の素子により構成された中間層０２ｂと、ｍ個の素子により構成された出力層０２ｃとを有する。ここで、前記相互修飾モデル０２では、前記積型モデル０１，０１′の中間層０１，０１ｂ′が前記入力パターンＳの前記積型修飾Ｓ（Ｃ）を出力する各素子（ｘｉ（ｉ＝１，２，…，ｎ））のみを有しているのに対して、前記中間層０２ｂが、前記入力パターンＳの積型修飾Ｓ（Ｃ）を出力する各素子（ｘｉ（ｉ＝１，２，…，ｎ））と、前記入力パターンＣの積型修飾Ｃ（Ｓ）を出力する素子（ｘｉ′（ｉ＝１，２，…，ｎ））とを有している。すなわち、前記中間層０２ｂの中間パターンＸ′が、Ｘ′＝（ｘ１，ｘ２，…，ｘｎ，ｘ１′，ｘ２′，…，ｘｎ′）で示されるものとする。
そして、前記相互修飾モデル０２では、前記入力パターンＳ，Ｃどうしが相互に積型文脈修飾される。すなわち、前記入力パターンＳが前記入力パターンＣで積型文脈修飾されて前記積型修飾Ｓ（Ｃ）が出力されると共に、前記入力パターンＣも前記入力パターンＳで積型文脈修飾されて積型修飾Ｃ（Ｓ）が出力される（式（１）〜（４）参照）。このため、前記相互修飾モデル０２は、前記積型モデル０１′に比べ、学習能力（汎化能力）をさらに向上させることができる（非特許文献３参照）。
【００１６】
【非特許文献１】加藤悦史、“一般線形モデルについて”、「online」、2002年9月、北海道大学、「2007年8月6日検索」、インターネット＜URL：http://www.neurosci.aist.go.jp/~kurita/lecture/prnn/prnn.html＞
【非特許文献２】粟田多喜男、“パターン認識とニューラルネットワーク”、「online」、２００１年２月、産業技術総合研究所、「2007年8月7日検索」、インターネット＜URL：http://hosho.ees.hokudai.ac.jp/~kato/seminar/020909/slide_bold.pdf＞
【非特許文献３】森田昌彦、他３名、“選択的不感化法を適用した層状ニューラルネットの情報統合能力”、「電子情報通信学会論文誌」、2004年12月、第J87-D-II巻、第12号、p.2242−2252
【非特許文献４】森紘一郎、山名早人、“強化学習並列化による学習の高速化”、「online」、2004年3月、早稲田大学、「2007年8月8日検索」、インターネット＜URL：http://www.yama.info.waseda.ac.jp/publications/2003/0403_mori.pdf＞
【非特許文献５】浅川伸一、“強化学習”、「online」、2002年7月、東京女子大学、「2007年8月22日検索」、インターネット＜URL：http://www.twcu.ac.jp/~asakawa/chiba2002/lect8-Reinforcement/ReinforcementLearning.pdf＞
【発明の開示】
【発明が解決しようとする課題】
【００１７】
（従来技術の問題点）
【００１８】
しかしながら、線形モデルによって関数を近似する場合には、予め線形化できると分かっている関数しか精度良く近似できず、前記関数を精度良く近似するためには、線形多項式の次数を大きくし、入力および出力のサンプルデータをできるだけ多くする必要があった。また、前記テーブル参照法によって関数を近似する場合には、参照するテーブルの大きさが変数の数に応じて指数的に増加するという問題があった。例えば、１００通りの値を取り得る状態変数がｎ個存在する場合、テーブルで全ての状態を示すためには１００ｎ通りの大きさのテーブルが必要となる。したがって、関数を精度良く近似する場合には、１００ｎ通りにできる限り近い数のサンプルデータが必要となるため、テーブル作成のために莫大な時間および記憶容量が必要となる問題があった。
【００１９】
さらに、前記多層パーセプトロンや前記ＲＢＦ（ＧＲＢＦ）ネットワークによって関数を近似する場合にも、前記テーブル参照法の場合と同様に、入力層の素子の数が大きくなるほど学習に必要なサンプルデータの数が多く必要となり、前記関数を精度良く近似するためには、莫大な学習時間が必要となるという問題があった。
特に、前記多層パーセプトロンについては、独立した入力パターンの数が多くなり、課題が複雑になる程、期待された学習能力（汎化能力）が失われてしまうという問題があった（非特許文献３参照）。また、この問題については、前記多層パーセプトロンとアルゴリズムが異なるだけの前記ＲＢＦ（ＧＲＢＦ）ネットワークについても同様に存在すると考えられる。
したがって、従来公知のこれらの技術では、強い非線形性を有する関数（非線形関数）については精度良く近似することができず、入力パターンの数が小さくなければ、莫大な数のサンプルデータが必要になり、莫大な学習時間が必要となるという問題があった。
【００２０】
なお、前記選択的不感化法が適用された前記積型モデル０１，０１′（図１２、図１３Ａ参照）や前記相互修飾モデル０２（図１３Ｂ参照）は、前記多層パーセプトロンに比べ、学習能力（汎化能力）が高く、少ない学習回数で精度良く学習することができる（非特許文献３参照）。しかしながら、前記選択的不感化法が適用された層状ニューラルネット０１，０１′，０２では、２つの入力パターンＳ，Ｃについて前記中間パターンＸ，Ｘ′（Ｘ＝Ｓ（Ｃ），Ｘ′＝Ｓ（Ｃ），Ｃ（Ｓ））を出力する場合しか想定されていないという問題があった。すなわち、入力パターンの数が３つ以上に増えた場合には、前記選択的不感化法が適用された層状ニューラルネット０１，０１′，０２が適用できず、結局、従来公知の技術（線形モデル、テーブル参照法、多層パーセプトロン等の層状ニューラルネット等）を適用して前記関数を近似するしか方法がないため、上記の問題が解決できないという問題があった。また、従来公知の前記選択的不感化法が適用された層状ニューラルネット０１，０１′，０２は、簡単な線形関数（例えば、ｆ（ｘ，ｙ）＝ｘ−ｙ等）について実験されているだけで、複雑な非線形関数の近似についての有効性等について検証されておらず、且つ、現実的な応用例等も提案されていないという問題があった。
【００２１】
本発明は、前述の事情に鑑み、次の記載内容（Ｏ01）を技術的課題とする。
（Ｏ01）入力変数の数が多い場合でも関数を精度良く近似すると共に、近似するために必要な学習のコストを低減すること。
【課題を解決するための手段】
【００２２】
前記技術的課題を解決するために、請求項１記載の発明の関数近似装置は、
入力変数の値が入力される入力素子により構成された入力層と、前記入力素子に結合された中間素子であって、前記入力素子に入力された値に基づいて演算された中間変数の値が出力される前記中間素子により構成された中間層と、前記中間素子に結合された出力素子であって、前記中間素子に入力された値に基づいて演算された出力変数の値が出力される前記出力素子により構成された出力層と、を有する層状ニューラルネットにより、前記入力変数と前記出力変数との関係である関数を近似する関数近似装置において、
３以上の入力変数の各値が入力される各入力素子により構成された前記入力層と、
前記３以上の入力変数の各値をそれぞれ入力する入力変数入力手段と、
前記３以上の入力変数の中のいずれか２つの入力変数を一組とした入力変数組が設定され、前記入力変数組の一方の入力変数の各値と、前記入力変数組の他方の入力変数の各値に基づいて演算される各第１出力感度と、に基づいて、前記中間変数の各値をそれぞれ演算する中間変数演算手段と、
前記中間変数と、前記中間変数の値の重視度合いに応じて設定された結合荷重と、に基づいて、前記出力変数の値を演算する出力変数演算手段と、
前記出力変数の値と、予め記憶された前記関数の実際の値との差分に基づいて、前記結合荷重を更新することにより、前記結合荷重を学習する結合荷重学習手段と、
を備えたことを特徴とする。
【００２３】
請求項２に記載の発明は、請求項１に記載の関数近似装置において、
前記入力変数組の一方の入力変数の各値と、前記入力変数組の他方の入力変数の各値に基づいて演算される各第１出力感度と、に基づいて、第１中間変数の各値をそれぞれ演算する第１中間変数演算手段と、前記入力変数組の他方の入力変数の各値と、前記入力変数組の一方の入力変数の各値に基づいて演算される各第２出力感度と、に基づいて、第２中間変数の各値をそれぞれ演算する第２中間変数演算手段と、を有する前記中間変数演算と、
前記第１中間変数と、前記第２中間変数と、前記第１中間変数および前記第２中間変数の各値の重視度合いに応じて設定された各結合荷重と、に基づいて、前記出力変数の値を演算する前記出力変数演算手段と、
を備えたことを特徴とする。
【００２４】
請求項３に記載の発明は、請求項１または２に記載の関数近似装置において、
前記中間層が、複数の各中間変数の各値が出力される各中間素子により構成され、且つ、前記３以上の入力変数の全ての入力変数が、少なくとも一組の前記入力変数組の一方または他方の入力変数として設定されて複数組の前記入力変数組が構成されていることを特徴とする。
【００２５】
前記技術的課題を解決するために、請求項４記載の発明の強化学習システムは、
行動を制御する対象としての制御装置と、
前記制御装置の状態を測定する状態測定手段と、
前記行動に対する報酬を取得する報酬取得手段と、
将来取得可能な報酬の予測に基づいて、測定された前記状態における全ての行動を評価するための評価値である行動価値関数を演算する行動価値関数演算手段と、
前記状態で測定された測定値を、前記入力変数の値とみなすことにより、測定された前記状態における前記行動価値関数を近似する請求項１ないし３のいずれかに記載の前記関数近似装置と、
近似された前記行動価値関数に基づいて、前記行動を選択する行動選択手段と、
選択された前記行動を実行する行動実行手段と、
前記報酬に基づいて、前記制御装置の制御が失敗した状態であるか否かを判別することにより、前記制御装置の制御を終了するか否かを判別する制御終了判別手段と、
を備えたことを特徴とする。
【００２６】
請求項５に記載の発明は、請求項４に記載の強化学習システムにおいて、
前記制御装置の制御が失敗した状態であると判別された場合に、前記結合荷重を学習する前記結合荷重学習手段、を有する請求項１ないし３のいずれかに記載の前記関数近似装置、
を備えたことを特徴とする。
【００２７】
前記技術的課題を解決するために、請求項６記載の発明の関数近似システムは、
入力変数の値が入力される入力素子により構成された入力層と、前記入力素子に結合された中間素子であって、前記入力素子に入力された値に基づいて演算された中間変数の値が出力される前記中間素子により構成された中間層と、前記中間素子に結合された出力素子であって、前記中間素子に入力された値に基づいて演算された出力変数の値が出力される前記出力素子により構成された出力層と、を有する層状ニューラルネットにより、前記入力変数と前記出力変数との関係である関数を近似する関数近似システムにおいて、
３以上の入力変数の各値が入力される各入力素子により構成された前記入力層と、
前記３以上の入力変数の各値をそれぞれ入力する入力変数入力手段と、
前記３以上の入力変数の中のいずれか２つの入力変数を一組とした入力変数組が設定され、前記入力変数組の一方の入力変数の各値と、前記入力変数組の他方の入力変数の各値に基づいて演算される各第１出力感度と、に基づいて、前記中間変数の各値をそれぞれ演算する中間変数演算手段と、
前記中間変数と、前記中間変数の値の重視度合いに応じて設定された結合荷重と、に基づいて、前記出力変数の値を演算する出力変数演算手段と、
前記出力変数の値と、予め記憶された前記関数の実際の値との差分に基づいて、前記結合荷重を更新することにより、前記結合荷重を学習する結合荷重学習手段と、
を備えたことを特徴とする。
【００２８】
前記技術的課題を解決するために、請求項７記載の発明の関数近似プログラムは、
コンピュータを、
入力変数の値が入力される入力素子により構成され且つ３以上の入力変数の各値が入力される各入力素子により構成された入力層と、前記入力素子に結合された中間素子であって、前記入力素子に入力された値に基づいて演算された中間変数の値が出力される前記中間素子により構成された中間層と、前記中間素子に結合された出力素子であって、前記中間素子に入力された値に基づいて演算された出力変数の値が出力される前記出力素子により構成された出力層と、を有する層状ニューラルネットにおいて、前記３以上の入力変数の各値をそれぞれ入力する入力変数入力手段、
前記３以上の入力変数の中のいずれか２つの入力変数を一組とした入力変数組が設定され、前記入力変数組の一方の入力変数の各値と、前記入力変数組の他方の入力変数の各値に基づいて演算される各第１出力感度と、に基づいて、前記中間変数の各値をそれぞれ演算する中間変数演算手段、
前記中間変数と、前記中間変数の値の重視度合いに応じて設定された結合荷重と、に基づいて、前記出力変数の値を演算する出力変数演算手段、
前記出力変数の値と、予め記憶された前記関数の実際の値との差分に基づいて、前記結合荷重を更新することにより、前記結合荷重を学習する結合荷重学習手段、
として機能させることにより、前記入力変数と前記出力変数との関係である関数を近似する。
【発明の効果】
【００２９】
請求項１に記載の発明によれば、前記入力変数組の一方の入力変数の各値と、前記入力変数組の他方の入力変数の各値に基づいて演算される各第１出力感度と、に基づいて、前記中間変数の各値をそれぞれ演算することにより、２つの入力変数について中間変数および出力変数を出力する場合しか想定されていない従来公知の選択的不感化法が適用された層状ニューラルネットの適用対象外であった３以上の入力変数を有する関数に対しても、学習能力（汎化能力）が高い前記選択的不感化法に基づく層状ニューラルネットを適用できる。この結果、前記関数の入力変数の数が多い場合でも、従来公知の技術（線形モデル、テーブル参照法、多層パーセプトロン等の層状ニューラルネット等）に比べ、学習能力（汎化能力）を向上させることができるため、前記関数を精度良く近似することができると共に、前記関数を近似するために必要な学習における演算量や演算時間等の演算コストを低減できる。また、請求項１に記載の発明によれば、複数の前記入力変数組に基づいて、複数の中間変数の各値を演算する場合には、それぞれ並列で演算することが可能であり、例えば、複数のハードウェアにより、並列で演算することも可能である。この場合、前記中間変数を高速で演算でき、前記関数を近似するための演算時間を低減できる。
【００３０】
請求項２に記載の発明によれば、前記入力変数組の一方の入力変数が、いわゆる、選択的不感化された前記第１中間変数を演算できると共に、前記入力変数組の他方の入力変数が選択的不感化された前記第２中間変数を演算できる。すなわち、前記入力変数組の各入力変数が相互に選択的不感化された２つの各中間変数を演算できる。この結果、前記入力変数組の各入力変数が相互に選択的不感化されていない場合に比べ、学習能力（汎化能力）を向上させることができるため、前記関数を精度良く近似することができると共に、前記関数を近似するために必要な学習における演算量や演算時間等の演算コストを低減できる。
請求項３に記載の発明によれば、前記３以上の入力変数の全ての入力変数に基づいて、選択的不感化された複数の前記中間変数を演算できる。この結果、一部の入力変数が前記中間変数の演算に関わらずに前記出力変数が演算される場合に比べ、学習能力（汎化能力）を向上させることができるため、前記関数を精度良く近似することができると共に、前記関数を近似するために必要な学習における演算量や演算時間等の演算コストを低減できる。
【００３１】
請求項４に記載の発明によれば、前記関数近似装置によって、前記行動価値関数を近似することにより、未知の状態についても適切な行動を選択して実行できる。このため、未知の状態の行動価値関数を近似しない従来公知の強化学習システムに比べ、学習能力（汎化能力）を高くすることができると共に、外乱や観測ノイズ等を含む未知の環境に対する適用能力も高くすることができる。
請求項５に記載の発明によれば、前記制御装置の制御が失敗した状態であると判別され、前記制御装置の制御を終了すると判別された場合に、前記結合荷重を学習するため、最も多くの状態について評価できるように演算された行動価値関数に基づいて、前記結合荷重を学習できる。この結果、各状態における各行動価値関数を演算する度に前記結合荷重を学習する場合に比べ、前記関数を近似するために必要な学習における演算量および演算時間等の演算コストを低減することができる。
【００３２】
請求項６に記載の発明によれば、前記入力変数組の一方の入力変数の各値と、前記入力変数組の他方の入力変数の各値に基づいて演算される各第１出力感度と、に基づいて、前記中間変数の各値をそれぞれ演算することにより、２つの入力変数について中間変数および出力変数を出力する場合しか想定されていない従来公知の選択的不感化法が適用された層状ニューラルネットの適用対象外であった３以上の入力変数を有する関数に対しても、学習能力（汎化能力）が高い前記選択的不感化法に基づく層状ニューラルネットを適用できる。この結果、前記関数の入力変数の数が多い場合でも、従来公知の技術（線形モデル、テーブル参照法、多層パーセプトロン等の層状ニューラルネット等）に比べ、学習能力（汎化能力）を向上させることができるため、前記関数を精度良く近似することができると共に、前記関数を近似するために必要な学習における演算量や演算時間等の演算コストを低減できる。また、請求項６に記載の発明によれば、複数の前記入力変数組に基づいて、複数の中間変数の各値を演算する場合には、それぞれ並列で演算することが可能であり、例えば、複数のハードウェアにより、並列で演算することも可能である。この場合、前記中間変数を高速で演算でき、前記関数を近似するための演算時間を低減できる。
【００３３】
請求項７に記載の発明によれば、前記入力変数組の一方の入力変数の各値と、前記入力変数組の他方の入力変数の各値に基づいて演算される各第１出力感度と、に基づいて、前記中間変数の各値をそれぞれ演算することにより、２つの入力変数について中間変数および出力変数を出力する場合しか想定されていない従来公知の選択的不感化法が適用された層状ニューラルネットの適用対象外であった３以上の入力変数を有する関数に対しても、学習能力（汎化能力）が高い前記選択的不感化法に基づく層状ニューラルネットを適用できる。この結果、前記関数の入力変数の数が多い場合でも、従来公知の技術（線形モデル、テーブル参照法、多層パーセプトロン等の層状ニューラルネット等）に比べ、学習能力（汎化能力）を向上させることができるため、前記関数を精度良く近似することができると共に、前記関数を近似するために必要な学習における演算量や演算時間等の演算コストを低減できる。また、請求項７に記載の発明によれば、複数の前記入力変数組に基づいて、複数の中間変数の各値を演算する場合には、それぞれ並列で演算することが可能であり、例えば、複数のハードウェアにより、並列で演算することも可能である。この場合、前記中間変数を高速で演算でき、前記関数を近似するための演算時間を低減できる。
【発明を実施するための最良の形態】
【００３４】
次に図面を参照しながら、本発明の実施の形態の具体例（以下、実施例と記載する）を説明するが、本発明は以下の実施例に限定されるものではない。
なお、以後の説明の理解を容易にするために、図面において、前後方向をＸ軸方向、左右方向をＹ軸方向、上下方向をＺ軸方向とし、矢印Ｘ，−Ｘ，Ｙ，−Ｙ，Ｚ，−Ｚで示す方向または示す側をそれぞれ、前方、後方、右方、左方、上方、下方、または、前側、後側、右側、左側、上側、下側とする。
また、図中、「○」の中に「・」が記載されたものは紙面の裏から表に向かう矢印を意味し、「○」の中に「×」が記載されたものは紙面の表から裏に向かう矢印を意味するものとする。
なお、以下の図面を使用した説明において、理解の容易のために説明に必要な部材以外の図示は適宜省略されている。
【実施例１】
【００３５】
図１は本発明の実施例１の関数近似システムの全体説明図である。
図１において、実施例１の関数近似システム（強化学習システム）Ｓの一例は、いわゆる、倒立振子が倒れないようにするという課題を解決するためのシミュレータとして構成された制御システムである。前記関数近似システムＳは、左右方向（Ｙ軸方向）に移動可能な移動体の一例としての台車（制御装置）１を有する。前記台車１には、倒立振子としての棒２が支持されている。前記棒２は、基端が前記台車１上面の中央部に回転可能な状態で固定支持され、先端が左右方向（Ｙ軸方向）に振動可能な状態となっている。
前記台車１には、駆動輪１ａが設けられており、前記駆動輪１ａにより前記台車１は、水平な床面３を移動可能になっている。また、前記駆動輪１ａは、前記台車１に内蔵された駆動部（駆動モータ）１ｂにより駆動され、前記駆動部１ｂは、前記台車１に内蔵された制御部（関数近似装置）Ｃにより駆動を制御される。また、前記床面３の左右方向（Ｙ軸方向）の両端部には、右端壁３ａと左端壁３ｂとがそれぞれ設けられている。
【００３６】
（倒立振子の運動方程式）
ここで、図１に示すように、前記台車１の重心が前記床面３の左右方向（Ｙ軸方向）の中央部から右方向（＋Ｙ方向）に離れた距離、すなわち、前記台車１の位置をｘ［ｍ］とし、前記棒２が垂直方向（Ｚ軸方向）に対して右方向（＋Ｙ方向）に傾いた角度をθ［ｄｅｇ］とし、前記制御部Ｃにより前記駆動部１ｂを駆動して台車１に対して右方向（＋Ｙ方向）に加える力をＦ［Ｎ］とする。
また、前記台車１の質量をＭ［ｋｇ］とし、前記台車１が右方向（＋Ｙ方向）に移動する速度をｖ［ｍ／ｓ］とし（ｖ＝（ｄ／ｄｔ）ｘ）、前記棒２の質量をｍ［ｋｇ］とし、前記棒２の基端から重心までの長さ、すなわち、前記棒２の半分の長さをＬ［ｍ］とし、前記棒２が上下方向（Ｚ軸方向）に対して時計周りに回転する角速度をω［ｄｅｇ／ｓ］とし（ω＝（ｄ／ｄｔ）θ）、重力加速度をｇ［ｍ／ｓ２］とし、前記台車１が右方向（＋Ｙ方向）に移動する場合の加速度をａとし（ａ＝（ｄ／ｄｔ）ｖ［ｍ／ｓ２］）、前記棒２が上下方向（Ｚ軸方向）に対して時計周りに回転する場合の角加速度をｂとし（ｂ＝（ｄ／ｄｔ）ω［ｄｅｇ／ｓ２］）、前記台車１と前記振子２との間の摩擦と、前記台車１の駆動輪１ａと前記床面３との間の摩擦とを無視できるものとすると、課題である倒立振子問題の運動方程式は、以下の式（５−１），（５−２）で示すことができる。
【００３７】
（Ｍ＋ｍ）ａ＋（ｍＬｃｏｓθ）ｂ−ｍＬω２ｓｉｎθ＝Ｆ        …（５−１）
（ｍＬｃｏｓθ）ａ＋（４／３×ｍＬ２）ｂ−ｍｇＬｓｉｎθ＝０  …（５−２）
また、式（５−１），（５−２）を連立方程式として、変数ａ，ｂについて解いた結果、前記変数ａ，ｂは、以下の式（６−１），（６−２）で示すことができる。
ａ＝
｛４／３（Ｆ＋ｍＬω２ｓｉｎθ）−ｍｇｓｉｎθｃｏｓθ｝／
｛４／３（Ｍ＋ｍ）−ｍｃｏｓ２θ｝      …（６−１）
ｂ＝
｛（Ｍ＋ｍ）ｇｓｉｎθ−（Ｆ＋ｍＬω２ｓｉｎθ）ｃｏｓθ｝／
｛４／３（Ｍ＋ｍ）−ｍｃｏｓ２θ｝Ｌ    …（６−２）
【００３８】
また、ある自然数をｋとし（ｋ＝０，１，２，…）、微小な時間ステップをｔとし、ある時間ｋ×ｔ，（ｋ＋１）×ｔにおける前記台車１の位置をｘ（ｋ），ｘ（ｋ＋１）、速度をｖ（ｋ），ｖ（ｋ＋１）、前記棒２の角度をθ（ｋ），θ（ｋ＋１）、角速度をω（ｋ），ω（ｋ＋１）とし、前記時間ｋ×ｔにおける前記台車１の加速度をａ（ｋ）、前記棒２の角加速度をｂ（ｋ）とした場合、前記時間（ｋ＋１）×ｔの各変数ｘ（ｋ＋１），ｖ（ｋ＋１），θ（ｋ＋１），ω（ｋ＋１）は、従来公知のルンゲクッタ法（ＲＫ法、Runge-Kutta method）を用いて、以下の式（７−１）〜（７−４）で示される。なお、前記ルンゲクッタ法とは、予め設定された初期値に基づいて、対象となる常微分方程式の増分を計算して次の点の値を計算してゆく、いわゆる、逐次計算法による常微分方程式の解法アルゴリズムである。
【００３９】
ｘ（ｋ＋１）＝ｘ（ｋ）＋ｔ×ｖ（ｋ）    …（７−１）
ｖ（ｋ＋１）＝ｖ（ｋ）＋ｔ×ａ（ｋ）    …（７−２）
θ（ｋ＋１）＝θ（ｋ）＋ｔ×ω（ｋ）    …（７−３）
ω（ｋ＋１）＝ω（ｋ）＋ｔ×ｂ（ｋ）    …（７−４）
【００４０】
なお、実施例１では、前記台車１の質量Ｍが１．０［ｋｇ］（Ｍ＝１．０）、前記棒２の質量ｍが０．１［ｋｇ］（ｍ＝０．１）、前記棒２の長さＬが１．０［ｍ］（Ｌ＝１．０）、重力加速度ｇが９．８［ｍ／ｓ２］（ｇ＝９．８）、前記時間ステップｔが０．０２［ｓ］（ｔ＝０．０２）に予め設定されている。また、前記床面３における右端壁３ａから左端壁３ｂまでの距離が４．８［ｍ］に予め設定されている。すなわち、前記台車１の位置ｘが、−２．４〜２．４［ｍ］の範囲に予め制限されている（ｘ＝−２．４〜２．４）。
また、前記台車１に最初に加える力をＦ（０）とした場合、前記力Ｆ（０）が２０．０［Ｎ］（Ｆ（０）＝２０．０）に予め設定されている。さらに、初期状態の前記台車１の位置をｘ（０）、速度をｖ（０）、前記棒２の角度をθ（０）、角速度をω（０）とした場合、各変数ｘ（０），ｖ（０），θ（０），ω（０）は、以下の式（７−１）′〜（７−４）′で示される。
【００４１】
ｘ（０）＝０．０                                              …（７−１）′
ｖ（０）＝０．０                                              …（７−２）′
θ（０）＝−３．０〜３．０（−３〜３の範囲で設定された乱数）  …（７−３）′
ω（０）＝０．０                                              …（７−４）′
【００４２】
したがって、実施例１の関数近似システムＳでは、前記式（６−１），（６−２），（７−１）〜（７−４），（７−１）′〜（７−４）′と、前記各定数Ｍ，ｍ，Ｌ，ｇ，ｔおよび前記各変数Ｆ，ａ，ｂ，ｋとによって、前記時間ステップｔ毎の前記各変数ｘ，ｖ，θ，ωを演算できる。また、実施例１の関数近似システムＳでは、前記制御部Ｃが、演算された前記各変数ｘ，ｖ，θ，ωに基づいて、前記台車１に適切な力Ｆが加わるように前記駆動部１ｂの駆動を制御する。
【００４３】
（実施例１の制御部Ｃの説明）
図２は本発明の実施例１の台車の制御部が備えている各機能をブロック図（機能ブロック図）で示した図である。
前記制御部Ｃは、必要な処理を行うためのプログラムおよびデータ等が記憶されたＲＯＭ（リードオンリーメモリ）、必要なデータを一時的に記憶するためのＲＡＭ（ランダムアクセスメモリ）、前記ＲＯＭに記憶されたプログラムに応じた処理を行うＣＰＵ（中央演算処理装置）、ならびにクロック発振器等を有するマイクロコンピュータにより構成されており、前記ＲＯＭに記憶されたプログラムを実行することにより種々の機能を実現することができる。
前記構成の制御部Ｃは、前記ＲＯＭに記憶されたプログラムを実行することにより種々の機能を実現することができる。実施例１の前記制御部ＣのＲＯＭには、関数近似プログラムＡＰ１が記憶されている。
【００４４】
（関数近似プログラムＡＰ１）
図３は強化学習の簡単な説明図である。
関数近似プログラムＡＰ１は、下記の機能手段（プログラムモジュール）を有する。
Ｃ１：倒立振子制御開始判別手段
倒立振子制御開始判別手段Ｃ１は、開始状態記憶手段Ｃ１Ａを有し、倒立振子としての前記棒２が倒れないように前記台車１の左右方向（Ｙ軸方向）の移動を制御する倒立振子制御処理を開始するか否かを判別する。なお、実施例１の前記倒立振子制御処理では、図３に示す強化学習に基づいて、前記棒２が倒れないように前記駆動部１ｂの駆動を制御する。
【００４５】
（強化学習について）
なお、強化学習とは、行動主体となるエージェントが、報酬を手がかりに、試行錯誤を通じて、制御対象となる環境に適応する学習方式のことをいう。ここで、図３に示すように、前記エージェント（制御装置）をＡとし、前記環境をＥとし、ある時間をｔとし、前記時間ｔの次の時間をｔ＋１とし、前記時間ｔ，ｔ＋１における行動をａｔ，ａｔ＋１とし、前記時間ｔ，ｔ＋１における前記環境Ｅの状態をｓｔ，ｓｔ＋１とし、前記時間ｔ，ｔ＋１における前記環境Ｅから得られる報酬をｒｔ，ｒｔ＋１とする。
強化学習では、制御対象となる環境Ｅの現在の状態がｓｔである場合に、前記エージェントＡが、ある行動ａｔをとって前記環境Ｅに直接働きかける。その結果、前記環境Ｅの状態がｓｔ＋１に変化すると共に、前記エージェントＡは、前記環境Ｅから報酬ｒｔを得る。よって、前記エージェントＡは、前記報酬ｒｔを最大化することを目的とする。すなわち、強化学習では、通常の機械学習のように入力に対する正しい行動ａｔを明示的に示す教師等が存在しない替わりに、前記行動ａｔの結果として前記環境Ｅから与えられる前記報酬ｒｔに基づいて学習を行う。
【００４６】
なお、前記エージェントＡは、前記環境Ｅの現在の状態ｓｔにおける、各行動ａｔで得られると期待できる予測報酬（ｒｔ）を保持している。よって、前記予測報酬（ｒｔ）が行動ａｔの優先度であり、行動ａｔの評価値となる。そして、前記エージェントＡは、得られる報酬ｒｔが最大になるように試行錯誤的に行動してゆく。
しかしながら、前記報酬ｒｔには、遅れやノイズ等が存在する可能性も考えられる。例えば、ある行動ａｔは直接的な状態ｓｔのみならず、その後の状態（ｓｔ＋１）にも影響を与えるため、その後の全ての後続報酬（ｒｔ＋１）に影響する等の場合が考えられる。そこで、強化学習では、課題に応じて、エピソード単位で評価を行う経験強化型の強化学習と、ステップ単位で評価を行う環境同定型の強化学習のアルゴリズムとが選択できる。ここで、ステップとは、初期状態をｓ０とした場合に、前記エージェントＡが、前記環境Ｅで観測されたある状態ｓｔに基づいて、実際に行動ａｔを実行するまでの単位であり、エピソードとは、前記初期状態ｓ０から目的を達成した状態（ｓｔ）または失敗した状態（ｓｔ）となるまでの前記ステップの集合であるものとする。
【００４７】
前記経験強化型の強化学習は、学習中における高い報酬ｒｔが獲得できる行動ａｔを優先して選択する。このため、学習の立ち上がりは早いが、局所的な解（ローカルミニマム）に陥る可能性が高い。また、前記環境同定型の強化学習は、前記環境Ｅのすべての状態ｓｔにおける全ての行動ａｔを試行することにより最適な解を見つけ出す。よって、実施例１では、前記環境同定型の代表的なアルゴリズムである、Ｑ−ｌｅａｒｎｉｎｇによる強化学習を行う。
【００４８】
（Ｑ−ｌｅａｒｎｉｎｇについて）
ここで、Ｑ−ｌｅａｒｎｉｎｇとは、前記時間ステップｔにおける状態ｓｔで実行される行動ａｔの評価値をＱ（ｓｔ，ａｔ）とした場合、各状態（ｓｔ）における各行動（ａｔ）の各評価値（Ｑ（ｓｔ，ａｔ））を予測して記憶すると共に、記憶された前記各評価値（Ｑ（ｓｔ，ａｔ））に基づいて、ある状態（ｓｔ）における行動（ａｔ）を選択するアルゴリズムである。ここで、前記Ｑ−ｌｅａｒｎｉｎｇにおける１エピソードの具体的なアルゴリズムを、以下の処理（１）〜（５）により例示する。
【００４９】
（Ｑ−ｌｅａｒｎｉｎｇのアルゴリズムの具体例）
（１）エージェントＡは、環境Ｅの状態ｓｔを観測する。
（２）エージェントＡは、任意の行動選択方法に従って行動ａｔを実行する。
（３）エージェントＡは、環境Ｅから報酬ｒｔを獲得すると共に、状態遷移後の状態ｓｔ＋１を観測する。
（４）エージェントＡは、以下の式（８）に基づいて、評価値である行動価値関数Ｑ（ｓｔ，ａｔ）を更新する。
Ｑ（ｓｔ，ａｔ）＝
（１−α）Ｑ（ｓｔ，ａｔ）
＋α［ｒｔ＋γｍａｘａｔ＋１（Ｑ（ｓｔ＋１，ａｔ＋１））］    …（８）
ここで、αは１回の更新による行動価値関数Ｑ（ｓｔ，ａｔ）の変化量を表すパラメータとしての学習率であり（０＜α≦１）、γは将来得ることができると予想される報酬（ｒｔ＋１）をどれだけ割り引いて現在の評価に反映させるかを表すパラメータとしての割引率である（０＜γ≦１）。また、ｍａｘａｔ＋１（Ｑ（ｓｔ＋１，ａｔ＋１））は、状態ｓｔ＋１における全ての行動ａｔ＋１に対する評価値Ｑ（ｓｔ＋１，ａｔ＋１）の最大値である。
（５）目標が達成できた状態（成功状態）または失敗した状態（失敗状態）となったか否かを判別し、成功状態または失敗状態になった場合、エピソードを終了する。そうでなければ、時間をｔからｔ＋１に進めて処理（２）に戻る。
【００５０】
なお、実施例１では、処理（２）における前記行動選択法として、常に最も高い価値（Ｑ（ｓｔ，ａｔ））が期待できる行動を選択してゆくｇｒｅｅｄｙ選択法を適用するが、これに限定されず、例えば、最大価値の行動を選択するε−ｇｒｅｅｄｙ選択法等を適用することも可能である。また、実施例１では、強化学習定数としての学習率αおよび割引率γについて、学習率αが０．１（α＝０．１）、割引率γが０．９５（γ＝０．９５）に予め設定されている。
なお、強化学習、Ｑ−ｌｅａｒｎｉｎｇ、ｇｒｅｅｄｙ選択法等の行動選択法については、非特許文献４，５等に記載されており、公知である。
【００５１】
したがって、Ｑ−ｌｅａｒｎｉｎｇの強化学習では、前記環境Ｅについて前記エージェントＡの行動によらない時間変化等がなければ、前記エージェントＡは、全状態（ｓｔ）における全行動（ａｔ）を試行し、前記行動価値関数Ｑ（ｓｔ，ａｔ）を学習することにより、最適な行動（ａｔ）を選択できるようになる。しかしながら、最適な行動（ａｔ）を選択するために、前記行動価値関数Ｑ（ｓｔ，ａｔ）についての学習を収束させるには莫大な時間が必要となる。このため、例えば、課題が複雑である場合には、全試行が有限時間で終了しない可能性があった。
【００５２】
（選択的不感化法が適用された層状ニューラルネットが適用された強化学習について）
図４は本発明の実施例１の選択的不感化法が適用された層状ニューラルネットの説明図である。
そこで、実施例１では、前記行動価値関数Ｑ（ｓｔ，ａｔ）の学習効率を向上させるために、図４に示す選択的不感化法が適用された層状ニューラルネットの一例である多変数相互修飾モデルＮによって、前記行動価値関数Ｑ（ｓｔ，ａｔ）が近似される新たなＱ−ｌｅａｒｎｉｎｇの強化学習が適用されている。
図４において、前記多変数相互修飾モデルＮは、４ｎ個の素子（入力素子）により構成された入力層Ｎａと、１２ｎ個の素子（中間素子）により構成された中間層Ｎｂと、ｍ個の素子（出力素子）により構成された出力層Ｎｃとを有する。
【００５３】
前記多変数相互修飾モデルＮでは、従来公知の前記相互修飾モデル０２の入力層０２ａが、２つの入力パターンＳ，Ｃによって構成されているのに対し（図１３Ｂ参照）、実施例１の前記入力層Ｎａは、４つの入力変数（入力パターン）ｘ，ｖ，θ，ω、すなわち、前記台車１の前記位置ｘと、前記速度ｖと、前記棒２の前記角度θと、前記角速度ωとによって構成されている。なお、実施例１では、４つの前記入力変数ｘ，ｖ，θ，ωは、それぞれｎ個の素子によって構成されている（４×ｎ＝４ｎ）。
【００５４】
また、前記多変数相互修飾モデルＮでは、従来公知の前記相互修飾モデル０２の中間層０２ｂが、前記入力パターンＳの積型修飾Ｓ（Ｃ）と、前記入力パターンＣの積型修飾Ｃ（Ｓ）とを出力するのに対し（図１１Ｂ、式（１），（１）′，（２）参照）、実施例１の前記中間層Ｎｂは、前記入力変数ｘの積型修飾ｘ（ｖ），ｘ（θ），ｘ（ω）と、前記入力変数ｖの積型修飾ｖ（θ），ｖ（ω），ｖ（ｘ）と、前記入力変数θの積型修飾θ（ω），θ（ｘ），θ（ｖ）と、前記入力変数ωの積型修飾ω（ｘ），ω（ｖ），ω（θ）とを出力する。すなわち、実施例１の前記中間層Ｎｂでは、前記入力変数ｘ，ｖ，θ，ωが、それぞれ２つずつを１組（入力変数組）として相互に積型文脈修飾され、積型文脈修飾された１２個の前記積型修飾ｘ（ｖ），ｖ（ｘ），ｘ（θ），θ（ｘ），ｘ（ω），ω（ｘ），ｖ（θ），θ（ｖ），ｖ（ω），ω（ｖ），θ（ω），ω（θ）が中間変数（中間パターン）として出力される。なお、実施例１では、中間変数である１２個の前記積型修飾ｘ（ｖ），ｖ（ｘ），ｘ（θ），θ（ｘ），ｘ（ω），ω（ｘ），ｖ（θ），θ（ｖ），ｖ（ω），ω（ｖ），θ（ω），ω（θ）は、それぞれｎ個の素子によって構成されている（１２×ｎ＝１２ｎ）。
【００５５】
そして、前記多変数相互修飾モデルＮでは、従来公知の前記相互修飾モデル０２の出力層０２ｃにおいて、ｍ個の各素子に、前記中間層０２ｂの２ｎ個のうちの複数の素子が、それぞれ前記結合荷重ｗｊｉにより重み付けされた状態で結合されており、且つ、符号関数の演算が行われて出力パターンＹが出力されるのと同様に（図１１Ｂ、式（３）参照）、実施例１の前記出力層Ｎｃについては、ｍ個の各素子に、前記中間層Ｎｂの１２ｎ個のうちの複数の素子が、それぞれ結合荷重ｗｊｉ（ｗｊｉ′）により重み付けされた状態で結合されており、且つ、符号関数の演算が行われて出力変数（出力パターン）としての前記行動評価関数Ｑ（ｓｔ，ａｔ）が出力される。なお、実施例１では、前記出力変数Ｑ（ｓｔ，ａｔ）は、ｍ個の素子によって構成されている。
【００５６】
（強化学習の各要素と倒立振子問題の各要素との対応関係について）
したがって、実施例１では、前記関数近似システムＳに対して、前記Ｑ−ｌｅａｒｎｉｎｇの強化学習における各要素（Ａ，Ｅ，ｓｔ，ａｔ，ｒｔ）を、以下の（１）〜（５）のように対応付けることにより、前記倒立振子制御処理を実行することができる。
【００５７】
（１）前記エージェントＡは、前記台車１の制御部Ｃに対応付けられる。
（２）前記環境Ｅは、実施例１の前記関数近似システムＳの構成としての前記各要素１〜３に対応付けられる。すなわち、前記台車１および前記棒２についての定数Ｍ，ｍ，Ｌ，ｔ，ｇおよび変数ａ，ｂ，ｋ等や、倒立振子問題についての関係式（式（５−１），（５−２），（６−１），（６−２），（７−１）〜（７−４）参照）、前記床面３（右端壁３ａと左端壁３ｂ）等と対応付けられる。
（３）前記状態ｓｔ，ｓｔ＋１は、前記入力変数ｘ，ｖ，θ，ωに対応付けられる。ここで、例えば、前記状態ｓｔが、ｓｔ＝ｘ（ｋ），ｖ（ｋ），θ（ｋ），ω（ｋ）で示される場合、次の状態ｓｔ＋１を、ｓｔ＋１＝ｘ（ｋ＋１），ｖ（ｋ＋１），θ（ｋ＋１），ω（ｋ＋１）で示すことができる。
（４）前記行動ａｔは、前記力Ｆに対応付けられる。すなわち、前記棒２が倒れないように前記台車１を移動させるために前記駆動部１ｂを制御する値に応じた前記力Ｆに対応付けられる。ここで、前記時間ｋ×ｔにおける前記力ＦをＦ（ｋ）とした場合（ｋ＝０，１，２，…）、前記行動ａｔは、例えば、ａｔ＝Ｆ（ｋ）で示すことができる。
（５）前記報酬ｒｔ，ｒｔ＋１は、前記棒２が倒れているか否かを確認する値とすることができる。例えば、前記棒２が倒れて前記角度θが、θ≦−１８０°、又は、θ≧１８０°、となった場合には、前記報酬ｒｔ，ｒｔ＋１を負の値とし（ｒｔ＜０，ｒｔ＋１＜０）、それ以外の場合には、前記報酬ｒｔ，ｒｔ＋１を０以上の値とする（ｒｔ≧０，ｒｔ＋１≧０）。
【００５８】
なお、実施例１の前記倒立振子制御開始判別手段Ｃ１は、前記台車１および前記棒２についての各定数Ｍ，ｍ，Ｌ，ｔ，ｇ，α，γの設定値および各変数ｘ，ｖ，θ，ω，ａ，ｂ，ｋ，Ｆ，ｗｊｉ，ｗｊｉ′の初期値が設定されたか否かを判別することにより、前記倒立振子制御処理を開始するか否かを判別する。
Ｃ１Ａ：開始状態記憶手段
開始状態記憶手段Ｃ１Ａは、前記倒立振子制御処理を開始する状態を記憶する。実施例１の開始状態記憶手段Ｃ１Ａは、前記倒立振子制御処理を開始する状態として、前記台車１および前記棒２についての各定数Ｍ，ｍ，Ｌ，ｔ，ｇの設定値（Ｍ＝１．０，ｍ＝０．１，Ｌ＝１．０，ｔ＝０．０２，ｇ＝９．８）、強化学習定数α，γの設定値（α＝０．１，γ＝０．９５）、各変数ｘ，ｖ，θ，ω，ａ，ｂ，ｋ，Ｆ，ｗｊｉ，ｗｊｉ′の初期値（ｘ（０）＝ｖ（０）＝ω（０）＝ａ（０）＝ｂ（０）＝ｗｊｉ（０）＝ｗｊｉ′（０）＝０．０，θ（０）＝−３．０〜３．０，ｋ＝０，Ｆ（０）＝２０．０）とを記憶する。
【００５９】
なお、実施例１では、前記行動ａｔが、前記台車１の左右方向（Ｙ軸方向）への移動の制御であるため、右方向（＋Ｙ方向）への移動の評価用の荷重結合をｗｊｉとし、左方向（−Ｙ方向）への移動の評価用の荷重結合をｗｊｉ′として別々に荷重結合を設けることにより、前記各荷重結合ｗｊｉ，ｗｊｉ′の学習が互いに干渉しないように予め設定されている。また、実施例１では、未学習の場合の前記各荷重結合ｗｊｉ，ｗｊｉ′の初期値をｗｊｉ（０），ｗｊｉ′（０）とした場合に、いかなる状態（ｓｔ＝ｘ（０），ｖ（０），θ（０），ω（０））であっても、前記各荷重結合ｗｊｉ（０），ｗｊｉ′（０）が、ｗｊｉ（０）＝ｗｊｉ′（０）＝０．０で示されるように予め設定されている。
【００６０】
Ｃ２：状態測定手段
状態測定手段Ｃ２は、前記状態ｓｔ，ｓｔ＋１を測定する。実施例１の前記状態測定手段Ｃ２は、前記式（６−１），（６−２），（７−１）〜（７−４），（７−１）′〜（７−４）′と前記各定数Ｍ，ｍ，Ｌ，ｇ，ｔおよび前記各変数ａ，ｂ、ｋ，Ｆとに基づいて、前記時間ステップｔ毎の前記入力変数ｘ，ｖ，θ，ωの値（入力値ｘ（ｋ），ｖ（ｋ），θ（ｋ），ω（ｋ）（ｋ＝０，１，２，…））を演算することにより、前記状態ｓｔ，ｓｔ＋１を測定する（ｓｔ＝ｘ（ｋ），ｖ（ｋ），θ（ｋ），ω（ｋ），ｓｔ＋１＝ｘ（ｋ＋１），ｖ（ｋ＋１），θ（ｋ＋１），ω（ｋ＋１））。
【００６１】
Ｃ３：行動実行手段
行動実行手段Ｃ３は、行動選択手段Ｃ３Ａと、台車移動制御手段Ｃ３Ｂとを有し、前記行動ａｔを実行する、すなわち、前記行動実行手段Ｃ３は、前記時間ステップｔ毎の前記力Ｆ（ｋ）に応じて前記台車１を左右方向（Ｙ軸方向）に移動させる。
Ｃ３Ａ：行動選択手段
行動選択手段Ｃ３Ａは、任意の行動選択方法に従って行動ａｔを選択する。実施例１の行動選択手段Ｃ３Ａは、前記ｇｒｅｅｄｙ選択法に基づいて、評価値である前記行動価値関数Ｑ（ｓｔ，ａｔ）が最大となる前記行動ａｔを選択する。
Ｃ３Ｂ：台車移動制御手段
台車移動制御手段Ｃ３Ｂは、前記駆動部１ｂの駆動を制御して前記駆動輪１ａを回転駆動させることにより、前記台車１の左右方向（Ｙ軸方向）への移動を制御する。
【００６２】
Ｃ４：報酬取得手段
報酬取得手段Ｃ４は、前記報酬ｒｔ，ｒｔ＋１を取得する。実施例１の前記報酬取得手段Ｃ４では、前記時間ステップｔ毎の前記報酬ｒｔ，ｒｔ＋１は、前記棒２が倒れて前記角度θが、θ≦−１８０°、又は、θ≧１８０°、となった場合には、負の値として取得され（ｒｔ＜０，ｒｔ＋１＜０）、それ以外の場合には、０以上の値として取得される（ｒｔ≧０，ｒｔ＋１≧０）。なお、前記報酬取得手段Ｃ４では、前記角度θが０［ｄｅｇ］に近いほど前記報酬ｒｔ，ｒｔ＋１の値が大きくなるように予め設定されている。
Ｃ５：行動価値関数演算手段
行動価値関数演算手段Ｃ５は、前記行動価値関数Ｑ（ｓｔ，ａｔ），Ｑ（ｓｔ＋１，ａｔ＋１）を演算する。実施例１の前記行動価値関数演算手段Ｃ５は、前記式（８）に基づいて、前記時間ステップｔ毎の、すなわち、時間ｋ×ｔ，（ｋ＋１）×ｔの前記行動価値関数Ｑ（ｓｔ，ａｔ），Ｑ（ｓｔ＋１，ａｔ＋１）を演算する（ｋ＝０，１，２，…）。
【００６３】
Ｃ６：行動価値関数記憶手段
行動価値関数記憶手段Ｃ６は、前記行動価値関数演算手段Ｃ５で演算された、前記時間ステップｔ毎の前記行動価値関数Ｑ（ｓｔ，ａｔ），Ｑ（ｓｔ＋１，ａｔ＋１）を記憶する。実施例１の前記行動価値関数記憶手段Ｃ６は、前記時間ｋ×ｔ，（ｋ＋１）×ｔにおける全ての状態ｓｔ，ｓｔ＋１（ｓｔ＝ｘ（ｋ），ｖ（ｋ），θ（ｋ），ω（ｋ），ｓｔ＋１＝ｘ（ｋ＋１），ｖ（ｋ＋１），θ（ｋ＋１），ω（ｋ＋１））についての前記行動価値関数Ｑ（ｓｔ，ａｔ），Ｑ（ｓｔ＋１，ａｔ＋１）を記憶する（ｋ＝０，１，２，…）。
Ｃ７：行動価値関数近似手段
行動価値関数近似手段Ｃ７は、入力変数生成手段Ｃ７Ａと、入力変数記憶手段Ｃ７Ｂと、中間変数演算手段Ｃ７Ｃと、中間変数記憶手段Ｃ７Ｄと、出力変数演算手段Ｃ７Ｅと、出力変数記憶手段Ｃ７Ｆと、行動価値関数学習手段Ｃ７Ｇとを有し、前記多変数相互修飾モデルＮによって、前記行動価値関数Ｑ（ｓｔ，ａｔ）を近似する行動価値関数近似処理を実行する。すなわち、前記状態ｓｔにおける前記行動価値関数Ｑ（ｓｔ，ａｔ）の近似値を演算する前記行動価値関数近似処理を実行する。
【００６４】
Ｃ７Ａ：入力変数生成手段（入力変数入力手段）
入力変数生成手段Ｃ７Ａは、前記時間ステップｔ毎に連続的に変化する前記入力変数ｘ，ｖ，θ，ωの入力値（ｘ（ｋ），ｖ（ｋ），θ（ｋ），ω（ｋ），ｘ（ｋ＋１），ｖ（ｋ＋１），θ（ｋ＋１），ω（ｋ＋１））を生成する。実施例１の入力変数生成手段Ｃ７Ａは、前記多変数相互修飾モデルＮの入力層Ｎａ（図４参照）において、前記時間ステップｔ毎に、状態測定手段Ｃ２で演算された前記入力変数ｘ，ｖ，θ，ωの入力値に対応する、前記入力変数ｘ，ｖ，θ，ωの素子の値の配列、いわゆる、状態パターンを設定する。
【００６５】
図５は台車の位置を示す入力変数の状態パターンの一例を説明するための説明図である。
実施例１の前記入力変数生成手段Ｃ７Ａでは、前記入力層Ｎａにおける前記入力変数ｘ，ｖ，θ，ωの全４ｎ個の素子は、それぞれ−１または＋１のいずれかの値となるように予め設定されている。したがって、例えば、前記入力変数ｘ（台車１の位置ｘ）の状態パターンをＳｘとし、Ｓｘ＝（ｓｘ１，ｓｘ２，…，ｓｘｎ）で示される場合、前記入力変数ｘのｎ個の素子ｓｘｉ（ｉ＝１，２，…，ｎ）は、ｓｘｉ＝＋１またはｓｘｉ＝−１で示すことができる。
また、前記入力変数生成手段Ｃ７Ａでは、前記入力変数ｘ，ｖ，θ，ωは、ｎ／２個の素子が＋１となり、残りのｎ／２個の素子が−１となるように予め設定されている。よって、例えば、図５に示すように、前記入力変数ｘ（台車１の位置ｘ）の状態パターンＳｘについて、前記台車１の重心が実際に存在する位置に応じた範囲のｎ／２個の素子ｓｘｉが＋１を出力し、残りのｎ／２個の素子ｓｘｉが−１を出力するように予め設定されている。
【００６６】
さらに、前記入力変数生成手段Ｃ７Ａでは、前記入力変数θ（棒２の角度θ）の状態パターンは、学習の際の影響が特に大きいと思われるため、前記入力変数θの主要な値、例えば、θが０．０［ｄｅｇ］の付近の値である場合には（θ≒０）、僅かな値の変化によって、状態パターンが大きく変化するように予め設定されている。すなわち、前記入力変数θの状態パターンをＳθとし、前記時間ｋ×ｔ，（ｋ＋１）×ｔの前記入力変数θの入力値θ（ｋ），θ（ｋ＋１）に応じた各状態パターンをＳθ（ｋ），Ｓθ（ｋ＋１）とした場合、前記入力変数θは、入力値θ（ｋ），θ（ｋ＋１）が０．０［ｄｅｇ］の付近であれば（θ（ｋ）≒０，θ（ｋ＋１）≒０）、前記時間がｋ×ｔから（ｋ＋１）×ｔに変化したときの僅かな入力値の変化で（θ（ｋ＋１）−θ（ｋ）≒０）、変化後の状態パターンＳθ（ｋ＋１）が、変化前の状態パターンＳθ（ｋ）に比べて大きく変化し、それ以外の値であれば、僅かな入力値の変化では、変化後の状態パターンＳθ（ｋ＋１）が、変化前の状態パターンＳθ（ｋ）比べて大きく変化しないように予め設定されている。
【００６７】
Ｃ７Ｂ：入力変数記憶手段
入力変数記憶手段Ｃ７Ｂは、前記入力変数生成手段Ｃ７Ａで生成された前記入力変数ｘ，ｖ，θ，ωの入力値を記憶する。実施例１の前記入力変数記憶手段Ｃ７Ｂは、前記時間ステップｔ毎に前記入力変数ｘ，ｖ，θ，ωの各状態パターンＳｘ，Ｓｖ，Ｓθ，Ｓω（図４参照）を記憶する。
【００６８】
Ｃ７Ｃ：中間変数演算手段
中間変数演算手段Ｃ７Ｃは、選択的不感化手段Ｃ７C1を有し、前記時間ステップｔ毎に前記入力変数ｘ，ｖ，θ，ωに基づく前記中間変数を演算する。図４において、実施例１の前記中間変数演算手段Ｃ７Ｃは、前記中間層Ｎｂに示すように、前記時間ステップｔ毎に、前記入力変数ｘ，ｖ，θ，ωが、それぞれ２つずつを１組として相互に積型文脈修飾された１２個の前記積型修飾ｘ（ｖ），ｘ（θ），ｘ（ω），ｖ（θ），ｖ（ω），ｖ（ｘ），θ（ω），θ（ｘ），θ（ｖ），ω（ｘ），ω（ｖ），ω（θ）を中間変数（ｙ）として演算する（出力する）。すなわち、前記中間変数をｙとし（ｙ＝（ｘ（ｖ），ｖ（ｘ），ｘ（θ），θ（ｘ），ｘ（ω），ω（ｘ），ｖ（θ），θ（ｖ），ｖ（ω），ω（ｖ），θ（ω），ω（θ）））、前記中間変数の状態パターンをＳｙとした場合に、前記入力変数ｘ，ｖ，θ，ωの状態パターンＳｘ，Ｓｖ，Ｓθ，Ｓωから、前記中間変数ｙの状態パターンＳｙ（Ｓｙ＝（Ｓｘ（Ｓｖ），Ｓｖ（Ｓｘ），Ｓｘ（Ｓθ），Ｓθ（Ｓｘ），Ｓｘ（Ｓω），Ｓω（Ｓｘ），Ｓｖ（Ｓθ），Ｓθ（Ｓｖ），Ｓｖ（Ｓω），Ｓω（Ｓｖ），Ｓθ（Ｓω），Ｓω（Ｓθ）））を演算する。
【００６９】
Ｃ７C1：選択的不感化手段
選択的不感化手段Ｃ７C1は、第１不感化手段Ｃ７C1aと、第１出力感度演算手段Ｃ７C1bと、第２不感化手段Ｃ７C1cと、第２出力感度演算手段Ｃ７C1dとを有し、前記中間変数ｙの出力において、前記入力変数ｘ，ｖ，θ，ωに対して選択的不感化する選択的不感化処理を実行する。実施例１の前記選択的不感化手段Ｃ７C1は、前記入力変数ｘ，ｖ，θ，ωを、それぞれ２つずつを１組として相互に選択的不感化処理を実行する。例えば、４つの入力変数ｘ，ｖ，θ，ωから選択された２つの入力変数ｘ，ｖ（台車１の位置ｘおよび速度ｖ）を１組として、前記入力変数ｘを第１選択変数とし、前記入力変数ｖを第２選択変数とした場合、前記第２選択変数ｖが前記第１選択変数ｘを選択的不感化すると共に、前記第１選択変数ｘが前記第２選択変数ｖを選択的不感化する。
【００７０】
具体的には、図４において、まず、前記第１選択変数ｘの状態パターンＳｘ（Ｓｘ＝（ｓｘ１，ｓｘ２，…，ｓｘｎ）＝ｓｘｉ（ｉ＝１，２，…，ｎ））に対応して、前記第２選択変数ｖの状態パターンをＳｖ（Ｓｖ＝（ｓｖ１，ｓｖ２，…，ｓｖｎ）＝ｓｖｉ（ｉ＝１，２，…，ｎ））とし、前記選択変数ｘ，ｖの状態パターンＳｘ，Ｓｖに基づくゲインベクトルをＧｘ（Ｇｘ＝（ｇｘ１，ｇｘ２，…，ｇｘｎ）＝ｇｘｉ（ｉ＝１，２，…，ｎ）），Ｇｖ（Ｇｖ＝（ｇｖ１，ｇｖ２，…，ｇｖｎ）＝ｇｖｉ（ｉ＝１，２，…，ｎ））とし、前記積型修飾ｘ（ｖ），ｖ（ｘ）の状態パターンをＳｘ（Ｓｖ）（Ｓｘ（Ｓｖ）＝（ｙｘｖ１，ｙｘｖ２，…，ｙｘｖｎ）＝ｙｘｖｉ（ｉ＝１，２，…，ｎ）），Ｓｖ（Ｓｘ）（Ｓｖ（Ｓｘ）＝（ｙｖｘ１，ｙｖｘ２，…，ｙｖｘｎ）＝ｙｖｘｉ（ｉ＝１，２，…，ｎ））とする。
【００７１】
そして、前記選択変数ｘ，ｖの状態パターンＳｘ，Ｓｖについて、前記式（１），（２）を適用する。なお、実施例１では、前記状態パターンＳｘ，Ｓｖの素子ｓｘｉ，ｓｖｉ（ｉ＝１，２，…，ｎ）の値（＋１または−１）が存在する確率が等しく、且つ、独立に決定される（相関がない）ように予め設定されている。このため、前記式（１）の替わりに前記式（１）′が適用できる。ここで、前記選択変数ｘ，ｖの状態パターンＳｘ，Ｓｖについて、前記式（１）′，（２）が適用された式を、以下の式（９−１），（９−２），（１０−１），（１０−２）に示す。
ｙｘｖｉ＝ｇｖｉ×ｓｘｉ        …（９−１）
ｇｖｉ＝（１＋ｓｖｉ）／２      …（９−２）
ｙｖｘｉ＝ｇｘｉ×ｓｖｉ        …（１０−１）
ｇｘｉ＝（１＋ｓｘｉ）／２      …（１０−２）
【００７２】
Ｃ７C1a：第１不感化手段
第１不感化手段Ｃ７C1aは、前記第１選択変数の各素子の値を、前記中間変数の各素子の値に反映しないようにする（不感化する）。実施例１の前記第１不感化手段Ｃ７C1aでは、例えば、前記入力変数ｘが第１選択変数、前記入力変数ｖが第２選択変数として選択されている場合、前記式（９−１）によって、前記第１選択変数ｘの各素子ｓｘｉ（ｉ＝１，２，…，ｎ）から前記積型修飾ｘ（ｖ）の各素子ｙｘｖｉ（ｉ＝１，２，…，ｎ）を演算する際に、前記ゲインｇｖｉが０になる場合（ｇｖｉ＝０）、対応する前記素子ｙｘｖｉが、ｙｘｖｉ＝０となる。すなわち、前記第１選択変数ｘの各素子ｓｘｉの値（＋１または−１）が、前記積型修飾ｘ（ｖ）の各素子ｙｘｖｉ（ｉ＝１，２，…，ｎ）の値に反映されず０となる。本願明細書では、この状況を「不感化される」と呼ぶ。
Ｃ７C1b：第１出力感度演算手段
第１出力感度演算手段Ｃ７C1bは、前記第１選択変数を不感化するためのゲイン（第１出力感度）のゲインベクトルを演算する。実施例１の前記第１出力感度演算手段Ｃ７C1bは、例えば、前記入力変数ｘが第１選択変数、前記入力変数ｖが第２選択変数として選択されている場合、第２選択変数ｖの状態パターンＳｖに基づいて、第１選択変数ｘを不感化するための前記ゲインベクトルＧｖ＝ｇｖｉ（ｉ＝１，２，…，ｎ）を演算する（式（９−２）参照）。
なお、前記第１不感化手段Ｃ７C1aおよび前記第１出力感度演算手段Ｃ７C1bにより、実施例１の第１中間変数演算手段（Ｃ７C1a＋Ｃ７C1b）が構成されている。
【００７３】
Ｃ７C1c：第２不感化手段
第２不感化手段Ｃ７C1cは、前記第２選択変数の各素子の値を、前記中間変数の各素子の値に反映しないようにする（不感化する）。実施例１の前記第２不感化手段Ｃ７C1cでは、例えば、前記入力変数ｘが第１選択変数、前記入力変数ｖが第２選択変数として選択されている場合、前記式（１０−１）によって、前記第２選択変数ｖの各素子ｓｖｉ（ｉ＝１，２，…，ｎ）から前記積型修飾ｖ（ｘ）の各素子ｙｖｘｉ（ｉ＝１，２，…，ｎ）を演算する際に、前記ゲインｇｘｉが０になる場合（ｇｘｉ＝０）、対応する前記素子ｙｖｘｉが、ｙｖｘｉ＝０となる。すなわち、前記第２選択変数ｖの各素子ｓｖｉの値（＋１または−１）が、前記積型修飾ｖ（ｘ）の各素子ｙｖｘｉ（ｉ＝１，２，…，ｎ）の値に反映されず０となる。すなわち、不感化される。
Ｃ７C1d：第２出力感度演算手段
第２出力感度演算手段Ｃ７C1dは、前記第２選択変数を不感化するためのゲイン（第２出力感度）のゲインベクトルを演算する。実施例１の前記第２出力感度演算手段Ｃ７C1dは、例えば、前記入力変数ｘが第１選択変数、前記入力変数ｖが第２選択変数として選択されている場合、第１選択変数ｘの状態パターンＳｘに基づいて、第２選択変数ｖを不感化するための前記ゲインベクトルＧｘ＝ｇｘｉ（ｉ＝１，２，…，ｎ）を演算する（式（１０−２）参照）。
なお、前記第２不感化手段Ｃ７C1cおよび前記第２出力感度演算手段Ｃ７C1dにより、実施例１の第２中間変数演算手段（Ｃ７C1c＋Ｃ７C1d）が構成されている。
【００７４】
Ｃ７Ｄ：中間変数記憶手段
中間変数記憶手段Ｃ７Ｄは、前記中間変数演算手段Ｃ７Ｃで演算された前記中間変数をｙの値（中間値）を記憶する（ｙ＝（ｘ（ｖ），ｖ（ｘ），ｘ（θ），θ（ｘ），ｘ（ω），ω（ｘ），ｖ（θ），θ（ｖ），ｖ（ω），ω（ｖ），θ（ω），ω（θ）））。実施例１の前記中間変数記憶手段Ｃ７Ｄは、前記時間ステップｔ毎に前記中間変数ｙの状態パターンＳｙ（Ｓｙ＝（Ｓｘ（Ｓｖ），Ｓｖ（Ｓｘ），Ｓｘ（Ｓθ），Ｓθ（Ｓｘ），Ｓｘ（Ｓω），Ｓω（Ｓｘ），Ｓｖ（Ｓθ），Ｓθ（Ｓｖ），Ｓｖ（Ｓω），Ｓω（Ｓｖ），Ｓθ（Ｓω），Ｓω（Ｓθ）））を記憶する。
【００７５】
Ｃ７Ｅ：出力変数演算手段
出力変数演算手段Ｃ７Ｅは、前記時間ステップｔ毎に前記中間変数ｙ（ｙ＝（ｘ（ｖ），ｖ（ｘ），ｘ（θ），θ（ｘ），ｘ（ω），ω（ｘ），ｖ（θ），θ（ｖ），ｖ（ω），ω（ｖ），θ（ω），ω（θ）））に基づく前記出力変数Ｑ（ｓｔ，ａｔ）を演算する。図４において、実施例１の前記出力変数演算手段Ｃ７Ｅは、前記出力層Ｎｃに示すように、前記出力変数Ｑ（ｓｔ，ａｔ）の状態パターンをＳＱ（ＳＱ＝（ｑ１，ｑ２，…，ｑｍ），（ｑ１′，ｑ２′，…，ｑｍ′）＝ｑｊ，ｑｊ′（ｊ＝１，２，…，ｍ））とし、中間変数ｙの状態パターンＳｙについて、以下の式（１１）が成立する場合に、前記符号関数ｓｇｎ（ｕ）を用いた前記式（３）に基づく以下の式（１１−１），（１１−２）によって、前記中間変数ｙの状態パターンＳｙ（Ｓｙ＝（Ｓｘ（Ｓｖ），Ｓｖ（Ｓｘ），Ｓｘ（Ｓθ），Ｓθ（Ｓｘ），Ｓｘ（Ｓω），Ｓω（Ｓｘ），Ｓｖ（Ｓθ），Ｓθ（Ｓｖ），Ｓｖ（Ｓω），Ｓω（Ｓｖ），Ｓθ（Ｓω），Ｓω（Ｓθ）））から前記出力変数の状態パターンＳＱを演算する。
【００７６】
（中間変数ｙの状態パターンＳｙ）
Ｓｙ
＝（ｙ１，ｙ２，…，ｙ１２ｎ）
＝（ｙｘｖ１，ｙｘｖ２，…，ｙｘｖｎ，ｙｖｘ１，ｙｖｘ２，…，ｙｖｘｎ，
ｙｘθ１，ｙｘθ２，…，ｙｘθｎ，ｙθｘ１，ｙθｘ２，…，ｙθｘｎ，
ｙｘω１，ｙｘω２，…，ｙｘωｎ，ｙωｘ１，ｙωｘ２，…，ｙωｘｎ，
ｙｖθ１，ｙｖθ２，…，ｙｖθｎ，ｙθｖ１，ｙθｖ２，…，ｙθｖｎ，
ｙｖω１，ｙｖω２，…，ｙｖωｎ，ｙωｖ１，ｙωｖ２，…，ｙωｖｎ，
ｙθω１，ｙθω２，…，ｙθωｎ，ｙωθ１，ｙωθ２，…，ｙωθｎ）
…（１１）
（右方向（＋Ｙ方向）への移動を評価する場合）
ｑｊ＝ｓｇｎ（Σｉｗｊｉｙｉ）（ｉ＝１，２，…，１２ｎ）      …（１２−１）
（左方向（−Ｙ方向）への移動を評価する場合）
ｑｊ′＝ｓｇｎ（Σｉｗｊｉ′ｙｉ）（ｉ＝１，２，…，１２ｎ）  …（１２−２）
【００７７】
Ｃ７Ｆ：出力変数記憶手段
出力変数記憶手段Ｃ７Ｆは、前記出力変数演算手段Ｃ７Ｅで演算された前記出力変数Ｑ（ｓｔ，ａｔ）の値（出力値）を記憶する。実施例１の前記出力変数記憶手段Ｃ７Ｆは、前記時間ステップｔ毎に前記出力変数をＱ（ｓｔ，ａｔ）の状態パターンＳＱ（ＳＱ＝（ｑ１，ｑ２，…，ｑｍ），（ｑ１′，ｑ２′，…，ｑｍ′）＝ｑｊ，ｑｊ′（ｊ＝１，２，…，ｍ））を記憶する。
Ｃ７Ｇ：行動価値関数学習手段（結合荷重学習手段）
行動価値関数学習手段Ｃ７Ｇは、学習判別手段Ｃ７G1結合荷重演算手段Ｃ７G2と、結合荷重記憶手段Ｃ７G3とを有し、前記行動価値関数Ｑ（ｓｔ，ａｔ）を学習する行動価値関数学習処理を実行する。実施例１の前記行動価値関数学習手段Ｃ７Ｇは、前記失敗状態となって前記倒立振子制御処理が終了した場合に、前記行動価値関数記憶手段Ｃ６に記憶された前記倒立振子制御処理の終了後の前記行動価値関数Ｑ（ｓｔ，ａｔ）の状態パターンをＴＱ（ＴＱ＝（ｔ１，ｔ２，…，ｔｍ），（ｔ１′，ｔ２′，…，ｔｍ′）＝ｔｊ，ｔｊ′（ｊ＝１，２，…，ｍ））として、前記式（４），（４）′に基づく以下の式（１３−１），（１３−２）によって、前記結合荷重ｗｊｉ，ｗｊｉ′の更新値Δｗｊｉ，Δｗｊｉ′を演算して、前記結合荷重ｗｊｉ，ｗｊｉ′を更新する処理を繰り返すことにより、近似する前記行動価値関数Ｑ（ｓｔ，ａｔ）を学習する前記行動価値関数学習処理を実行する。なお、実施例１では、前記正定数εが０．３に予め設定されている（ε＝０．３）。
【００７８】
（右方向（＋Ｙ方向）への移動を評価する場合）
Δｗｊｉ＝ε（ｔｊ−ｑｊ）ｙｉ          …（１３−１）
（左方向（−Ｙ方向）への移動を評価する場合）
Δｗｊｉ′＝ε（ｔｊ′−ｑｊ′）ｙｉ    …（１３−２）
すなわち、前記行動価値関数学習手段Ｃ７Ｇは、前記時間ｋ×ｔ，（ｋ＋１）×ｔの前記結合荷重ｗｊｉ，ｗｊｉ′をｗｊｉ（ｋ），ｗｊｉ（ｋ＋１），ｗｊｉ′（ｋ），ｗｊｉ′（ｋ＋１）とした場合に、以下の式（１４−１），（１４−２）によって、前記結合荷重ｗｊｉ，ｗｊｉ′をｗｊｉ（ｋ），ｗｊｉ′（ｋ）からｗｊｉ（ｋ＋１），ｗｊｉ′（ｋ＋１）に更新する処理を繰り返す（ｋ＝０，１，…）。
【００７９】
ｗｊｉ（ｋ＋１）＝ｗｊｉ（ｋ）＋Δｗｊｉ        …（１４−１）
ｗｊｉ′（ｋ＋１）＝ｗｊｉ′（ｋ）＋Δｗｊｉ′  …（１４−２）
なお、前記時間がｋ×ｔから（ｋ＋１）×ｔに変化した場合の前記入力変数ｘ，ｖ，θ，ωの状態パターンＳｘ，Ｓｖ，Ｓθ，Ｓωが類似する場合、前記出力変数Ｑ（ｓｔ，ａｔ）の状態パターンＴＱにも大きな変化がなく、例えば、同じ状態パターン（ＴＱ）となる場合がある。よって、実施例１の前記行動価値関数学習手段Ｃ７Ｇでは、前記時間がｋ×ｔから（ｋ＋１）×ｔに変化した場合に、前記入力変数ｘ，ｖ，θ，ωの状態パターンＳｘ，Ｓｖ，Ｓθ，Ｓωが類似し（例えば、状態パターンＳｘ，Ｓｖ，Ｓθ，Ｓωの９割以上が変化しておらず）、且つ、前記出力変数Ｑ（ｓｔ，ａｔ）の状態パターンＴＱが変化しなかった場合（Ｑ（ｓｔ，ａｔ）＝Ｑ（ｓｔ＋１，ａｔ＋１））、前記結合荷重ｗｊｉ，ｗｊｉ′の更新処理を省略する。このため、前記行動価値関数Ｑ（ｓｔ，ａｔ）を学習する処理の演算ステップ（計算量）を低減できる。
【００８０】
Ｃ７G1：学習判別手段
学習判別手段Ｃ７G1は、前記時間がｋ×ｔから（ｋ＋１）×ｔに変化した場合に、前記入力変数ｘ，ｖ，θ，ωの状態パターンＳｘ，Ｓｖ，Ｓθ，Ｓωが類似し（例えば、状態パターンＳｘ，Ｓｖ，Ｓθ，Ｓωの９割以上が変化しておらず）、且つ、前記出力変数Ｑ（ｓｔ，ａｔ），Ｑ（ｓｔ＋１，ａｔ＋１）の状態パターンＴＱが変化したか否かを判別することにより、前記時間ｋ×ｔ，（ｋ＋１）×ｔ（ｋ＝０，１，２，）における前記結合荷重ｗｊｉ，ｗｊｉ′の更新処理を省略するか否かを判別する。
Ｃ７G2：結合荷重演算手段
結合荷重演算手段Ｃ７G2は、前記式（１３−１），（１３−２），（１４−１），（１４−２）により、前記結合荷重ｗｊｉ，ｗｊｉ′を演算する（更新する）。
Ｃ７G3：結合荷重記憶手段
結合荷重記憶手段Ｃ７G3は、前記結合荷重演算手段Ｃ７G2で演算された前記結合荷重ｗｊｉ，ｗｊｉ′を記憶する。
【００８１】
Ｃ８：倒立振子制御終了判別手段（制御終了判別手段）
倒立振子制御終了判別手段Ｃ８は、倒立振子制御時間計時手段Ｃ８Ａと、成功状態判別手段Ｃ８Ｂと、失敗状態判別手段Ｃ８Ｃとを有し、前記倒立振子制御処理を終了するか否かを判別する。実施例１の前記倒立振子制御終了判別手段Ｃ８は、前記倒立振子制御処理を開始してから前記棒２が１８０秒倒立した状態（成功状態）または負の値の前記報酬ｒｔが得られた状態（失敗状態）であるか否かを判別することにより、前記倒立振子制御処理を終了するか否かを判別する。
Ｃ８Ａ：倒立振子制御時間計時手段
倒立振子制御時間計時手段Ｃ８Ａは、前記倒立振子制御処理を開始した場合に、後述するタイマＴＭの計時を開始することにより、前記倒立振子制御処理における経過時間ｋ×ｔ（ｋ＝０，１，…，ｋｍａｘ（９０００））を計時する。
【００８２】
Ｃ８Ｂ：成功状態判別手段
成功状態判別手段Ｃ８Ｂは、前記倒立振子制御時間計時手段Ｃ８Ａにより、前記倒立振子制御処理を開始してから、前記報酬ｒｔが一度も負の値を取らずに（ｒｔ≧０）前記棒２が１８０秒倒立した状態であるか否かを判別することにより（ｋ＝ｋｍａｘ＝９０００）、前記成功状態であるか否かを判別する。ここで、ｋｍａｘは、前記自然数ｋの最大値である（ｋｍａｘ＝１８０／０．０２＝９０００）。
Ｃ８Ｃ：失敗状態判別手段
失敗状態判別手段Ｃ８Ｃは、前記失敗状態として前記報酬ｒｔが負の値であるか否かを判別することにより（ｒｔ＜０）、前記失敗状態であるか否かを判別する。
ＴＭ：タイマ
タイマＴＭは、前記倒立振子制御処理を実行するときの各時間ｋ×ｔ（ｋ＝０，１，…，ｋｍａｘ（９０００））を計時する。
【００８３】
（実施例１のフローチャートの説明）
次に、実施例１の制御部Ｃの関数近似プログラムＡＰ１の処理の流れをフローチャートを使用して説明する。
（実施例１のメイン処理のフローチャートの説明）
図６は本発明の実施例１の関数近似プログラムのメイン処理のフローチャートである。
図６のフローチャートの各ＳＴ（ステップ）の処理は、前記制御部ＣのＲＯＭ等に記憶されたプログラムに従って行われる。また、この処理は前記制御部Ｃの他の各種処理と並行してマルチタスクで実行される。
【００８４】
図６に示すフローチャートは前記台車１が電源オンした後、前記関数近似プログラムＡＰ１が起動した場合に開始される。
図６のＳＴ１において、次の（１）〜（６）の処理を実行し、ＳＴ２に移る。
（１）台車１の位置ｘ、速度ｖ、加速度ａ、棒２の角速度ω、角加速度ｂの初期値として０．０をセットする（ｘ（０）＝ｖ（０）＝ω（０）＝ａ（０）＝ｂ（０）＝０．０）。
（２）棒２の角度θの初期値として−３．０°〜３．０°の範囲の乱数をセットする（θ（０）＝−３．０°〜３．０°）。
（３）台車１に対して右方向（＋Ｙ方向）に加える力Ｆの初期値として２０．０をセットする（Ｆ（０）＝２０．０）。
（４）結合荷重ωｊｉ，ωｊｉ′の初期値として０．０をセットする（ωｊｉ（０）＝ωｊｉ′（０）＝０．０）。
（５）台車１および棒２についての各定数Ｍ，ｍ，Ｌ，ｔ，ｇの各設定値および強化学習定数α，γの各設定値をセットする（Ｍ＝１．０，ｍ＝０．１，Ｌ＝１．０，ｇ＝９．８，ｔ＝０．０２，α＝０．１，γ＝０．９５）。
（６）自然数ｋに１をセットする（ｋ＝１）。
【００８５】
ＳＴ２において、結合荷重記憶手段Ｃ７G3に記憶された学習済の結合荷重ωｊｉ，ωｊｉ′が存在するか否かを判別する。イエス（Ｙ）の場合はＳＴ３に移り、ノー（Ｎ）の場合はＳＴ４に移る。
ＳＴ３において、結合荷重記憶手段Ｃ７G3に記憶された学習済の結合荷重ωｊｉ，ωｊｉ′をセットする。そして、ＳＴ４に移る。
ＳＴ４において、タイマＴＭによる計時を開始する。そして、ＳＴ５に移る。
【００８６】
ＳＴ５において、式（６−１），（６−２），（７−１）〜（７−４），（７−１）′〜（７−４）′と、各定数Ｍ，ｍ，Ｌ，ｇ，ｔおよび各変数ａ（０），ｂ（０）、ｋ，Ｆ（０）とに基づいて、時間ｔ（ｋ＝１，ｔ＝０．０２［ｓ］）の入力変数ｘ，ｖ，θ，ωの値（入力値ｘ（１），ｖ（１），θ（１），ω（１））を演算することにより、状態ｓｔを測定する（ｓｔ＝ｘ（１），ｖ（１），θ（１），ω（１））。そして、ＳＴ６に移る。
ＳＴ６において、多変数相互修飾モデルＮ（図４参照）によって、行動価値関数Ｑ（ｓｔ，ａｔ）を近似する行動価値関数近似処理（後述する図７のフローチャート参照）を実行する。すなわち、状態ｓｔにおける時間ｋ×ｔ（ｋ＝１，２，…，ｋｍａｘ）の行動価値関数Ｑ（ｓｔ，ａｔ）の近似値を演算する前記行動価値関数近似処理を実行する。そして、ＳＴ７に移る。
ＳＴ７において、前記ｇｒｅｅｄｙ選択法に基づいて、評価値である行動価値関数Ｑ（ｓｔ，ａｔ）が最大となる行動ａｔを選択して実行する。すなわち、時間ｋ×ｔ（ｋ＝１，２，…，ｋｍａｘ）の力Ｆ（ｋ）に応じて台車１を左右方向（Ｙ軸方向）に移動させる。そして、ＳＴ８に移る。
【００８７】
ＳＴ８において、次の（１），（２）の処理を実行し、ＳＴ９に移る。
（１）行動ａｔに応じた報酬ｒｔを取得する。なお、実施例１の報酬ｒｔは、棒２が倒れて角度θが、θ≦−１８０°、又は、θ≧１８０°、となった場合には、負の値として取得され（ｒｔ＜０）、それ以外の場合には、０以上の値として取得される（ｒｔ≧０）。また、棒２の角度θが０［ｄｅｇ］に近いほど報酬ｒｔの値が大きくなるように予め設定されている。
（２）式（６−１），（６−２），（７−１）〜（７−４）と、各定数Ｍ，ｍ，Ｌ，ｇ，ｔおよび各変数ｘ（ｋ），ｖ（ｋ），θ（ｋ），ω（ｋ），ａ（ｋ），ｂ（ｋ），ｋ，Ｆ（ｋ）とに基づいて、時間（ｋ＋１）×ｔの入力変数ｘ，ｖ，θ，ωの値（入力値ｘ（ｋ＋１），ｖ（ｋ＋１），θ（ｋ＋１），ω（ｋ＋１））を演算することにより、行動ａｔ後の次の状態ｓｔ＋１を測定する（ｓｔ＋１＝ｘ（ｋ＋１），ｖ（ｋ＋１），θ（ｋ＋１），ω（ｋ＋１）（ｋ＝１，２，…，ｋｍａｘ））。
【００８８】
ＳＴ９において、式（８）に基づいて、時間ｋ×ｔ（ｋ＝０，１，２，…，ｋｍａｘ）の行動価値関数Ｑ（ｓｔ，ａｔ）を演算する（更新する）行動価値関数更新処理を実行する。そして、ＳＴ１０に移る。
ＳＴ１０において、タイマＴＭの計時を開始してから負の値の報酬ｒｔを一度も取得せずに（ｒｔ≧０）１８０秒（ｋ＝ｋｍａｘ＝９０００）を計時した状態、すなわち、棒２が１８０秒倒立した状態であるか否かを判別することにより、成功状態であるか否かを判別する。ノー（Ｎ）の場合はＳＴ１１に移り、イエス（Ｙ）の場合はＳＴ１に戻る。
【００８９】
ＳＴ１１において、負の値の前記報酬ｒｔ（ｒｔ＜０）が得られた状態であるか否かを判別することにより、失敗状態であるか否かを判別する。ノー（Ｎ）の場合はＳＴ１２に移り、イエス（Ｙ）の場合はＳＴ１３に移る。
ＳＴ１２において、自然数ｋに＋１を加算する（ｋ＝ｋ＋１）。そして、ＳＴ６に戻る。
ＳＴ１３において、行動価値関数Ｑ（ｓｔ，ａｔ）を学習する行動価値関数学習処理（後述する図８のフローチャート参照）を実行する。そして、ＳＴ１に戻る。
【００９０】
（実施例１の行動価値関数近似処理のフローチャートの説明）
図７は本発明の実施例１の関数近似プログラムの行動価値関数近似処理のフローチャートであり、図６のＳＴ６のサブルーチンの説明図である。
図７のＳＴ１０１において、時間ｋ×ｔ（ｋ＝０，１，２，…，ｋｍａｘ）の入力変数ｘ，ｖ，θ，ωを生成する。すなわち、多変数相互修飾モデルＮの入力層Ｎａ（図４参照）における時間ｋ×ｔの入力変数ｘ，ｖ，θ，ωの状態パターンＳｘ，Ｓｖ，Ｓθ，Ｓωを設定する（生成する）。そして、ＳＴ１０２に移る。
【００９１】
ＳＴ１０２において、生成された入力変数ｘ，ｖ，θ，ωから中間変数ｙ（ｙ＝（ｘ（ｖ），ｖ（ｘ），ｘ（θ），θ（ｘ），ｘ（ω），ω（ｘ），ｖ（θ），θ（ｖ），ｖ（ω），ω（ｖ），θ（ω），ω（θ）））を演算する。すなわち、入力変数ｘ，ｖ，θ，ωの状態パターンＳｘ，Ｓｖ，Ｓθ，Ｓωから、多変数相互修飾モデルＮの中間層Ｎｂ（図４参照）における中間変数ｙの状態パターンＳｙ（Ｓｙ＝（Ｓｘ（Ｓｖ），Ｓｖ（Ｓｘ），Ｓｘ（Ｓθ），Ｓθ（Ｓｘ），Ｓｘ（Ｓω），Ｓω（Ｓｘ），Ｓｖ（Ｓθ），Ｓθ（Ｓｖ），Ｓｖ（Ｓω），Ｓω（Ｓｖ），Ｓθ（Ｓω），Ｓω（Ｓθ）））を演算する（式（９−１），（９−２），（１０−１），（１０−２）参照）。なお、前記ＳＴ１０２では、図７に示すように、中間変数ｙである１２個の各積型修飾ｘ（ｖ），ｖ（ｘ），ｘ（θ），θ（ｘ），ｘ（ω），ω（ｘ），ｖ（θ），θ（ｖ），ｖ（ω），ω（ｖ），θ（ω），ω（θ）を演算する１２個のＳＴ１０２ａ〜１０２ｍが並列で実行される。
【００９２】
ＳＴ１０３において、演算された中間変数ｙから出力変数Ｑ（ｓｔ，ａｔ）を演算する。すなわち、中間変数ｙの状態パターンＳｙから、多変数相互修飾モデルＮの出力層Ｎｃ（図４参照）における出力変数ｙの状態パターンＳＱを演算する（式（１１），（１２−１），（１２−２）参照）。そして、行動価値関数近似処理を終了し、図６のメイン処理に戻る。
【００９３】
（実施例１の行動価値関数学習処理のフローチャートの説明）
図８は本発明の実施例１の関数近似プログラムの行動価値関数学習処理のフローチャートであり、図６のＳＴ１３のサブルーチンの説明図である。
図８のＳＴ２０１において、変数ｉ，ｊに１、自然数ｋおよび結合荷重ｗｊｉ，ｗｊｉ′の更新値Δｗｊｉ，Δｗｊｉ′に０をセットする（ｉ＝ｊ＝１，ｋ＝０，Δｗｊｉ＝Δｗｊｉ′＝０）。そして、ＳＴ２０２に移る。
【００９４】
ＳＴ２０２において、時間がｋ×ｔから（ｋ＋１）×ｔ（ｋ＝０，１，…，ｋｍａｘ）に変化したときの入力変数ｘ，ｖ，θ，ωの状態パターンＳｘ，Ｓｖ，Ｓθ，Ｓωが類似し（例えば、状態パターンＳｘ，Ｓｖ，Ｓθ，Ｓωの９割以上が変化しておらず）、且つ、出力変数Ｑ（ｓｔ，ａｔ）の状態パターンＴＱが変化していないか否かを判別する（ｓｔ≒ｓｔ＋１、且つ、Ｑ（ｓｔ，ａｔ）＝Ｑ（ｓｔ＋１，ａｔ＋１））。ノー（Ｎ）の場合はＳＴ２０３に移り、イエス（Ｙ）の場合はＳＴ２１１に移る。
【００９５】
ＳＴ２０３において、行動価値関数記憶手段Ｃ６に記憶された（１エピソード終了後の）行動価値関数Ｑ（ｓｔ，ａｔ）の状態パターンＴＱと、出力変数記憶手段Ｃ７Ｆに記憶された時間ｋ×ｔ（ｋ＝０，１，…，ｋｍａｘ）の出力変数Ｑ（ｓｔ，ａｔ）の状態パターンＳＱとによって、前記結合荷重ｗｊｉ，ｗｊｉ′の更新値（変化量）Δｗｊｉ，Δｗｊｉ′を演算する（式（１３−１），（１３−２）参照）。そして、ＳＴ２０４に移る。
ＳＴ２０４において、式（１４−１），（１４−２）によって、前記結合荷重ｗｊｉ，ｗｊｉ′を更新する。そして、ＳＴ２０５に移る。
【００９６】
ＳＴ２０５において、変数ｉが１２ｎ以上か否かを判別する（ｉ≧１２ｎ）。ノー（Ｎ）の場合はＳＴ２０６に移り、イエス（Ｙ）の場合はＳＴ２０７に移る。
ＳＴ２０６において、変数ｉに＋１を加算する（ｉ＝ｉ＋１）。そして、ＳＴ２０３に戻る。
ＳＴ２０７において、変数ｉを１にリセットする（ｉ＝１）。そして、ＳＴ２０８に移る。
【００９７】
ＳＴ２０８において、変数ｊがｍ以上か否かを判別する（ｊ≧ｍ）。ノー（Ｎ）の場合はＳＴ２０９に移り、イエス（Ｙ）の場合はＳＴ２１０に移る。
ＳＴ２０９において、変数ｊに＋１を加算する（ｊ＝ｊ＋１）。そして、ＳＴ２０３に戻る。
ＳＴ２１０において、変数ｊを１にリセットする（ｊ＝１）。そして、ＳＴ２１１に移る。
ＳＴ２１１において、自然数ｋがｋｍａｘ−１より小さいか否かを判別する（ｋ＜ｋｍａｘ−１）。イエス（Ｙ）の場合はＳＴ２１２に移り、ノー（Ｎ）の場合は行動価値関数学習処理を終了し、図６のメイン処理に戻る。
ＳＴ２１２において、自然数ｋに＋１を加算する（ｋ＝ｋ＋１）。そして、ＳＴ２０２に戻る。
【００９８】
（実施例１の作用）
前記構成を備えた実施例１の前記関数近似システムＳでは、前記倒立振子制御処理（図６のＳＴ１〜ＳＴ１２参照）において、前記行動ａｔ（台車１に対して右方向（＋Ｙ方向）に加える力Ｆ）を選択するための前記行動価値関数Ｑ（ｓｔ，ａｔ）を近似するために、選択的不感化法に基づく前記行動価値関数近似処理（図６のＳＴ６、図７のＳＴ１０１〜ＳＴ１０３参照）が実行される。したがって、Ｑ−ｌｅａｒｎｉｎｇに基づく前記行動価値関数更新処理（図６のＳＴ１０、式（８）参照）で学習していない状態（ｓｔ）における前記行動価値関数Ｑ（ｓｔ，ａｔ）についても演算することができ、すなわち、前記行動価値関数Ｑ（ｓｔ，ａｔ）の近似値を演算することができ、近似された前記行動価値関数Ｑ（ｓｔ，ａｔ）に基づいて、前記状態ｓｔにおける適切な行動ａｔを選択することができる（図６のＳＴ６，ＳＴ７参照）。
【００９９】
また、実施例１の前記関数近似システムＳでは、前記倒立振子制御処理が失敗状態となって終了した場合には、前記行動価値関数Ｑ（ｓｔ，ａｔ）を近似するための前記結合荷重ｗｊｉ，ｗｊｉ′を学習する前記行動価値関数学習処理（図６のＳＴ１３、図８のＳＴ２０１〜ＳＴ２１２参照）が実行される。したがって、前記倒立振子制御処理が失敗した場合、次のエピソード、すなわち、次の倒立振子制御処理では、更新された前記結合荷重ｗｊｉ，ｗｊｉ′で前記行動価値関数Ｑ（ｓｔ，ａｔ）を近似できるため、前記行動価値関数Ｑ（ｓｔ，ａｔ）を精度良く近似でき、前記行動ａｔをより適切に選択することができる（図６のＳＴ２，ＳＴ３参照）。
【０１００】
ここで、前記行動価値関数近似処理および前記行動価値関数学習処理で用いられる前記多変数相互修飾モデルＮにおいて、前記中間層Ｎｂ（図４参照）では、４つの入力変数ｘ，ｖ，θ，ωについて、順列組み合わせで２つの入力変数（第１選択変数、第２選択変数）を１組として相互に積型文脈修飾された１２個（４Ｐ２＝４×３＝１２）の積型修飾ｘ（ｖ），ｖ（ｘ），ｘ（θ），θ（ｘ），ｘ（ω），ω（ｘ），ｖ（θ），θ（ｖ），ｖ（ω），ω（ｖ），θ（ω），ω（θ）が前記中間変数ｙとして演算される（図７のＳＴ１０２、式（９−１），（９−２），（１０−１），（１０−２）参照）。このため、実施例１の前記関数近似システムＳでは、２つの入力パターンＳ，Ｃについて中間パターンＸ，Ｘ′および出力パターンＹを出力する場合しか想定されていない従来公知の選択的不感化法が適用された層状ニューラルネット０１，０１′，０２（図１２、図１３参照）の適用対象外であった３つ以上の入力変数（ｘ，ｖ，θ，ω）を有する関数（Ｑ（ｓｔ，ａｔ））に対しても、学習能力（汎化能力）が高い前記選択的不感化法に基づく前記多変数相互修飾モデルＮが適用できる。
【０１０１】
この結果、実施例１の前記関数近似システムＳは、従来公知のＱ−ｌｅａｒｎｉｎｇの強化学習のように全試行（全ての状態（ｓｔ）における全ての行動（ｓｔ））を実行しなくても、学習能力（汎化能力）が高い前記多変数相互修飾モデルＮに基づく前記行動価値関数近似処理および前記行動価値関数学習処理を実行することにより学習が収束する時間、いわゆる、学習時間を低減することができる。
【０１０２】
（実験例）
ここで、実施例１の前記関数近似システムＳが、前記行動価値関数近似処理および前記行動価値関数学習処理を実行することにより、学習効率がどのように変化したかを調べるために、次の実験例１〜３および比較例１〜３を準備した。
【０１０３】
（実験例１）
実験例１の関数近似システムＳは、実施例１の前記関数近似システムＳと同等の構成で作製されており、実施例１の前記メイン処理（図６のＳＴ１〜ＳＴ１３参照）において、前記行動価値関数近似処理および前記行動価値関数近似処理が実行される。すなわち、Ｑ−ｌｅａｒｎｉｇの強化学習で学習した状態ｓｔにおける行動価値関数Ｑ（ｓｔ，ａｔ）のみならず、学習していない状態ｓｔについても行動価値関数Ｑ（ｓｔ，ａｔ）が近似され、近似された行動価値関数Ｑ（ｓｔ，ａｔ）に基づく行動ａｔが実行されると共に、前記倒立振子制御処理が失敗した場合に、前記行動価値関数Ｑ（ｓｔ，ａｔ）を近似するための前記結合荷重ｗｊｉ，ｗｊｉ′の学習が行われる。
また、実験例１の前記関数近似システムＳは、外乱および観測ノイズのない環境Ｅの下で実験を行った（図１、図３参照）。
【０１０４】
（比較例１）
比較例１の関数近似システムＳ′は、従来公知のＱ−ｌｅａｒｎｉｎｇの強化学習に前記テーブル参照法が適用されており、実験例１の前記関数近似システムＳに比べ、前記メイン処理において、前記行動価値関数近似処理および前記行動価値関数近似処理が省略されている。すなわち、比較例１の前記関数近似システムＳ′は、学習した状態ｓｔにおける行動価値関数Ｑ（ｓｔ，ａｔ）をテーブルに記憶する。このため、学習した状態ｓｔについては、前記状態ｓｔおける行動価値関数Ｑ（ｓｔ，ａｔ）に基づく適切な行動ａｔが実行されるが、学習していない状態ｓｔについては、行動価値関数Ｑ（ｓｔ，ａｔ）が存在せず、前記状態ｓｔが試行されて学習されるまで適切な行動ａｔが実行できない。
【０１０５】
なお、比較例１の前記関数近似システムＳ′では、前記各入力変数ｘ，ｖ，θ，ωが１０等分されている。すなわち、前記入力変数ｘ，ｖ，θ，ωが取り得る入力値が１０種類に予め設定されている。また、比較例１の銭関数近似システムＳ′は、実施例１の前記関数近似システムＳが、右方向（＋Ｙ方向）および左方向（−Ｙ方向）の各移動（行動ａｔ）についての前記結合荷重ｗｊｉ，ｗｊｉ′を別々に設けているのに応じて、右方向（＋Ｙ方向）および左方向（−Ｙ方向）の各移動（行動ａｔ）についての評価用のテーブルを別々に設けている。このため、比較例１で記憶するテーブルのサイズは、２×１０４（１０×１０×１０×１０×２＝２×１０４）で示される。
また、比較例１の前記関数近似システムＳ′は、実験例１と同様に、前記環境Ｅの下で実験を行った。
【０１０６】
（実験例２）
実験例２の関数近似システムＳは、実験例１の前記関数近似システムＳと同様の構成において、実験例１の前記環境Ｅに外乱としての角速度ωｆが加えられた環境Ｅ′の下で実験を行った。ここで、前記外乱（角速度）ωｆは、シミュレータではなく実際に倒立振子を制御する場合に、ユーザが前記棒２を指で左右方向（Ｙ軸方向）に弾く行為に相当する。
【０１０７】
なお、実験例２の前記環境Ｅ′では、前記外乱ωｆが、前記棒２の角度θおよび角速度ωが所定の範囲の値以下を３秒間維持する度に与えられる。すなわち、所定の範囲の値以下を３秒間維持して安定した状態を安定状態とし、前記安定状態であるか否かを判別するための前記角度θおよび前記角速度ωの最小値をθｍｉｎ，ωｍｉｎとし、最大値をθｍａｘ，ωｍａｘとすると、前記角度θおよび前記角速度ωが、θｍｉｎ≦θ≦θｍａｘ，ωｍｉｎ≦ω≦ωｍａｘの範囲の値を３秒間維持した場合に前記安定状態であると判別され、前記外乱ωｆが与えられる。なお、実験例２では、前記角度θおよび前記角速度ωの最小値θｍｉｎ，ωｍｉｎおよび最大値θｍａｘ，ωｍａｘについて、θｍｉｎ＝−２．５［ｄｅｇ］，ωｍｉｎ＝−４５［ｄｅｇ／ｓ］，θｍａｘ＝２．５［ｄｅｇ］，ωｍａｘ＝４５［ｄｅｇ／ｓ］が成立するように予め設定されている（−２．５°≦θ≦２．５°，−４５≦ω≦４５）。
【０１０８】
したがって、実験例２の関数近似システムＳでは、前記角度θおよび前記角速度ωが、−２．５°≦θ≦２．５°，−４５≦ω≦４５の範囲の値を３秒間維持した場合に前記安定状態であると判別され、前記外乱ωｆが与えられる。
また、実験例２の前記環境Ｅ′では、前記外乱ωｆが与えられる度に１［ｄｅｇ／ｓ］大きくなるような角速度ωｆが、前記外乱ωｆとして左右方向（Ｙ軸方向）に対してランダムに与えられる。すなわち、何回目の外乱であるかを示す値（外乱を与える回数）をＮωとすると、ωｆ＝Ｎω［ｄｅｇ／ｓ］（左方向（−Ｙ方向）に与える場合にはωｆ＝−Ｎω［ｄｅｇ／ｓ］）が成立し、前記棒２の角速度ωの値（入力値）に加算できる。
【０１０９】
（比較例２）
比較例２の関数近似システムＳ′は、比較例１の前記関数近似システムＳ′と同様の構成において、実験例２と同様の前記環境Ｅ′の下で実験を行った。なお、比較例２の前記関数近似システムＳ′は、実験例２の前記関数近似システムＳに比べ、学習を収束し易くするために前記状態ｓｔを大きく区切っているため（各入力変数ｘ，ｖ，θ，ωの入力値の種類を１０種類としたため）、安定するまでに必要な時間が長くなると共に、安定していても各入力変数ｘ，ｖ，θ，ωの入力値の変化量が大きくなっている。このため、比較例２の前記環境Ｅ′では、実験例２に比べて安定条件の範囲を緩くするために、前記角度θおよび前記角速度ωの最小値θｍｉｎ，ωｍｉｎおよび最大値θｍａｘ，ωｍａｘについて、θｍｉｎ＝−６．０［ｄｅｇ］，ωｍｉｎ＝−１５０［ｄｅｇ／ｓ］，θｍａｘ＝６．０［ｄｅｇ］，ωｍａｘ＝１５０［ｄｅｇ／ｓ］が成立するように予め設定されている（−６°≦θ≦６°，−１５０≦ω≦１５０）。すなわち、比較例２の関数近似システムＳ′では、前記角度θおよび前記角速度ωが、−６°≦θ≦６°，−１５０≦ω≦１５０の範囲の値を３秒間維持した場合に前記安定状態であると判別され、前記外乱ωｆが与えられる。さらに、比較例２の前記関数近似システムＳ′は、安定状態になるまでに必要な時間が長いため、前記棒２の倒立時間に対して、成功状態（棒２を１８０秒倒立させた状態）である１８０秒の倒立時間の上限を設けないこととした。
【０１１０】
（実験例３）
実験例３の関数近似システムＳは、実験例１の前記関数近似システムＳと同様の構成において、実験例１の前記環境Ｅに観測ノイズとして前記台車１の位置ｘおよび前記棒２の角度θに誤差Δｘ，Δθが加えられた環境Ｅ″の下で実験を行った。ここで、前記観測ノイズΔｘ，Δθは、シミュレータではなく実際に倒立振子を制御する場合に、前記台車１に設けられるセンサ（位置測定センサ、傾斜角度測定センサ等）のノイズ、いわゆる、センサノイズに相当する。なお、実験例３の前記環境Ｅ″では、前記観測ノイズΔｘ，Δθは、時間ｋ×ｔ（ｋ＝０，１，２，…，ｋｍａｘ）毎に乱数を発生させて、前記位置ｘに±０．０５［ｍ］の範囲の誤差Δｘ、前記角度θに±０．５［ｄｅｇ］の範囲の誤差Δθとして与えられる。
（比較例３）
比較例３の関数近似システムＳ′は、比較例１の前記関数近似システムＳ′と同様の構成において、実験例３と同様の前記環境Ｅ″の下で実験を行った。
【０１１１】
（実験結果）
また、実験例１〜３および比較例１〜３の実験結果について以下に示す。
【０１１２】
（実験例１および比較例１の実験結果について）
図９は実験例の実験結果の説明図であり、横軸に倒立振子制御処理の試行回数（エピソード数）をとり、縦軸に倒立振子制御処理の試行時間（棒が倒立し続けた時間）をとって、実験例１の学習効率と比較例１の学習効率とを比較するためのグラフであり、図９Ａは実験例１の実験結果を示すグラフであり、図９Ｂは比較例１の実験結果を示すグラフである。
図９Ａ、図９Ｂに示すように、実験例１の前記関数近似システムＳは、約１０回の試行（エピソード）で成功状態（棒２を１８０秒倒立させた状態）となったのに対し、比較例１の前記関数近似システムＳ′は、成功状態となるまでに約１３００回の試行が必要であったことがわかる。すなわち、実験例１の前記関数近似システムＳは、比較例１の前記関数近似システムＳ′に比べ、学習の立ち上がりが早く、学習能力（汎化能力）が高いことがわかる。
【０１１３】
なお、図９Ａにおいて、実験例１の前記関数近似システムＳは、始めて成功状態となった後も、失敗状態（棒２が倒れた状態）となる試行が度々見受けられる。この実験結果については、以下のように考えられる。すなわち、実験例１の前記関数近似システムＳでは、前記入力変数（角度）θは、入力値θ（ｋ），θ（ｋ＋１）が０．０［ｄｅｇ］の付近であれば（θ（ｋ）≒０，θ（ｋ＋１）≒０）、前記時間がｋ×ｔから（ｋ＋１）×ｔに変化したときの僅かな入力値の変化で（θ（ｋ＋１）−θ（ｋ）≒０）、変化後の状態パターンＳθ（ｋ＋１）が、変化前の状態パターンＳθ（ｋ）に比べて大きく変化し、それ以外の入力値θ（ｋ），θ（ｋ＋１）であれば、僅かな入力値の変化では、変化後の状態パターンＳθ（ｋ＋１）が、変化前の状態パターンＳθ（ｋ）比べて大きく変化しないように予め設定されている。
【０１１４】
また、前記結合荷重ｗｊｉ，ｗｊｉ′を学習するか否かを判別するために、時間がｋ×ｔから（ｋ＋１）×ｔ（ｋ＝０，１，…，ｋｍａｘ）に変化したときの入力変数ｘ，ｖ，θ，ωの状態パターンＳｘ，Ｓｖ，Ｓθ，Ｓωが類似し（例えば、状態パターンＳｘ，Ｓｖ，Ｓθ，Ｓωの９割以上が変化しておらず）、且つ、出力変数Ｑ（ｓｔ，ａｔ）の状態パターンＴＱが変化していないか否かを判別している（図８のＳＴ２０２参照）。
したがって、実験例１の前記関数近似システムＳは、前記結合荷重ｗｊｉ，ｗｊｉ′の学習について、安定状態（−１°≦θ≦１°）を維持するための学習の機会が多くなり、安定状態ではない状態から安定状態になるまでの学習の機会が少なくなる。このため、前記角度θの初期値θ（０）が安定状態（−１°≦θ≦１°）よりも大きな角度（例えば、θ（０）＝３［ｄｅｇ］）で開始された場合に、失敗状態となる可能性が大きくなったものと推察される。
【０１１５】
また、図９Ｂにおいて、比較例１の前記関数近似システムＳ′は、始めて成功状態となった後は、ほぼ安定して成功状態となる試行が繰り返されている。この実験結果によって、比較例１の前記関数近似システムＳ′では、学習が収束するために、すなわち、２×１０４通りのテーブルに適切な行動価値関数Ｑ（ｓｔ，ａｔ）が設定されるために、約１３００回もの試行が必要であったが、前記テーブルに適切な行動価値関数Ｑ（ｓｔ，ａｔ）が設定されれば、それ以降は安定して成功状態となる試行を繰り返すことができることがわかる。
【０１１６】
（実験例２および比較例２の実験結果について）
図１０は実験例の実験結果の説明図であり、横軸に倒立振子制御処理の試行回数（エピソード数）をとり、縦軸に倒立振子制御処理の試行時間（棒が倒立し続けた時間）および外乱を与えた回数（棒を指で弾いた回数）をとって、実験例２の学習効率と比較例２の学習効率とを比較するためのグラフであり、図１０Ａは実験例２の実験結果を示すグラフであり、図１０Ｂは比較例２の実験結果を示すグラフである。
【０１１７】
図１０Ａに示すように、実験例２の前記関数近似システムＳでは、約５０回から１００回程度の試行により、試行回数（エピソード数）に対する試行時間ｋ×ｔ（ｋ＝０，１，…，ｋｍａｘ（９０００））の波形（図１０Ａの実線参照）が、試行回数に対する前記外乱ωｆを与えた回数Ｎωの波形（図１０Ａの点線参照）に対応している。すなわち、波形が類似してくることがわかる。
これに対し、図１０Ｂに示すように、比較例２の前記関数近似システムＳ′では、試行回数に対する試行時間ｋ×ｔ（ｋ＝０，１，…，ｋｍａｘ（９０００））の波形（図１０Ｂの実線参照）が、試行回数に対する前記外乱ωｆを与えた回数Ｎωの波形（図１０Ｂの点線参照）に対応するまでに（波形が類似してくるまでに）、約６０００回もの試行が必要であったことがわかる。
【０１１８】
なお、図１０Ｂにおいて、比較例２の前記関数近似システムＳ′では、約４０００回程度の試行で、十分な試行時間（倒立時間）が得られているように見受けられるが、約４０００回までの試行における前記外乱ωｆを与えた回数Ｎωが非常に少ないため、安定状態となるまでに非常に時間がかかっているだけであることがわかる。また、約４０００回から約６０００回までの試行では、前記外乱ωｆを殆ど与えていないにも関わらず、試行時間が非常に短くなっている。したがって、比較例２の前記関数近似システムＳ′は、学習が収束するために約６０００回の試行が必要であったことがわかる。
この結果、実験例２の前記関数近似システムＳは、比較例２の前記関数近似システムＳ′に比べ、外乱ωｆに対する適応能力が約６０〜１２０倍（６０００／１００＝６０，６０００／５０＝１２０）ほど高いことがわかる。
【０１１９】
（実験例３および比較例３の実験結果について）
図１１は実験例の実験結果の説明図であり、横軸に倒立振子制御処理の試行回数（エピソード数）をとり、縦軸に倒立振子制御処理の試行時間（棒が倒立し続けた時間）をとって、実験例３の学習効率と比較例３の学習効率とを比較するためのグラフであり、図１１Ａは実験例３の実験結果を示すグラフであり、図１１Ｂは比較例３の実験結果を示すグラフである。
【０１２０】
図１１Ａ、図１１Ｂに示すように、実験例３の前記関数近似システムＳは、約１０回の試行（エピソード）で成功状態となったのに対し、比較例３の前記関数近似システムＳ′は、成功状態となるまでに約１３００回の試行が必要であったことがわかる。また、実験例３の前記関数近似システムＳは、約７０回の試行で、観測ノイズΔｘ，Δθの影響を受けずに安定して成功状態が得られるようになったのに対し、比較例３の前記関数近似システムＳ′は、約１５００回の試行が行われても、安定して成功状態が得られていないことがわかる。すなわち、実験例３の前記関数近似システムＳは、比較例３の前記関数近似システムＳ′に比べ、観測ノイズΔｘ，Δθに対する適応能力が高いことがわかる。
【０１２１】
また、図１１Ａにおいて、実験例３の前記関数近似システムＳは、約７０回の試行で安定して成功状態が得られるようになった後、失敗状態（棒２が倒れた状態）となる試行が実験例１に比べて少なくなったことがわかる。この実験結果については、以下のように考えられる。すなわち、前記観測ノイズΔｘ，Δθにより、前記入力変数ｘ，ｖ，θ，ωが取りうる入力値ｘ（ｋ），ｖ（ｋ），θ（ｋ），ω（ｋ）（ｋ＝０，１，…，ｋｍａｘ（９０００））の範囲が、実験例１の前記関数近似システムＳに比べて広くなっている。このため、実験例３の前記関数近似システムＳは、実験例１の前記関数近似システムＳに比べて、安定状態ではない状態から安定状態になるまでの学習の機会が多くなり、より安定して成功状態となる試行を繰り返すことができるようになったと推察される。
【０１２２】
また、図１１Ｂにおいて、比較例３の前記関数近似システムＳ′は、比較例１の前記関数近似システムＳ′に比べ、始めて成功状態となった後も、安定して成功状態となる試行を繰り返すことができなくなったことがわかる。この実験結果については、以下のように考えられる。すなわち、比較例１〜３の前記関数近似システムＳ′では、学習を収束し易くするために前記状態ｓｔを大きく区切っているため（各入力変数ｘ，ｖ，θ，ωの入力値の種類を１０種類としたため）、安定状態でも前記入力変数ｘ，ｖ，θ，ωの入力値ｘ（ｋ），ｖ（ｋ），θ（ｋ），ω（ｋ）（ｋ＝０，１，…，ｋｍａｘ（９０００））が取り得る値の範囲が広く、前記台車１および前記棒２の移動が、実験例３の前記関数近似システムＳと比べて大きくなる。この状態から、さらに前記観測ノイズΔｘ，Δθが加えられると、安定状態を維持したり、安定状態でない状態から安定状態にしたりする適切な行動ａｔがより選択し難くなる。この結果、学習が収束し難くなってしまい、安定して成功状態となる試行を繰り返すことができなくなったものと推察される。
【０１２３】
前記実験結果により、実施例１の関数近似システムＳは、前記行動価値関数近似処理および前記行動価値関数学習処理が実行されない従来公知の関数近似システムＳ′に比べ、学習能力（汎化能力）を大幅に高くすることができると共に、外乱ωｆや観測ノイズΔｘ，Δθ等を含む未知の環境Ｅ′，Ｅ″に対しての適用能力も大幅に高くすることができる。すなわち、実施例１の関数近似システムＳは、シミュレータではなく、実際に倒立振子を制御する装置（関数近似装置）に適用される場合にも、従来公知の関数近似システムＳ′に比べ、より適切に倒立振子を制御することができる。
【０１２４】
また、実施例１の関数近似システムＳでは、前記中間変数ｙとしての１２個の各積型修飾ｘ（ｖ），ｖ（ｘ），ｘ（θ），θ（ｘ），ｘ（ω），ω（ｘ），ｖ（θ），θ（ｖ），ｖ（ω），ω（ｖ），θ（ω），ω（θ）については、前記多変数相互修飾モデルＮの入力層Ｎａ（図４参照）から前記入力変数ｘ，ｖ，θ，ωの状態パターンＳｘ，Ｓｖ，Ｓθ，Ｓωが与えられた場合には、それぞれ並列で演算される（図７のＳＴ１０２ａ〜ＳＴ１０２ｍ参照）。したがって、例えば、複数のＬＳＩ（Large-Scale Integrated circuit：大規模集積回路）等のハードウェアにより、各積型修飾ｘ（ｖ），ｖ（ｘ），ｘ（θ），θ（ｘ），ｘ（ω），ω（ｘ），ｖ（θ），θ（ｖ），ｖ（ω），ω（ｖ），θ（ω），ω（θ）が並列で演算される場合には、前記中間変数ｙを高速で演算でき（１２個のＬＳＩならば約１２倍の速度で演算でき、６個のＬＳＩならば約６倍の速度で演算でき）、前記行動価値関数近似処理の演算時間を低減できる。
【０１２５】
（変更例）
以上、本発明の実施例を詳述したが、本発明は、前記実施例に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内で、種々の変更を行うことが可能である。本発明の変更例（Ｈ01）〜（Ｈ08）を下記に例示する。
（Ｈ01）本発明の実施例１の前記関数近似システムＳは、いわゆる、倒立振子問題を解決するためのシミュレータとして構成されているが、シミュレータに限定されず、現実の制御機器の制御部にも適用可能である。また、課題についても倒立振子問題に限定されず、その他の課題、例えば、二足歩行の制御を行うロボット等や、画像や音声等のパターン認識装置等に適用することも可能である。
【０１２６】
（Ｈ02）本発明の実施例では、倒立振子問題を解決するために、Ｑ−ｌｅａｒｎｉｎｇの強化学習が適用されているが、これに限定されず、Ｑ−ｌｅａｒｎｉｎｇ以外のアルゴリズムを適用することも可能である。すなわち、前記行動評価関数Ｑ（ｓｔ，ａｔ）以外の関数を近似することも可能である。また、課題によっては、強化学習を適用せずに、前記多変数相互修飾モデルＮによって関数を近似する機能（図６のＳＴ６、図７のＳＴ１０１〜ＳＴ１０３参照）のみを抽出して、前記課題を解決する関数近似装置を構成することも可能である。すなわち、本発明の選択的不感化法が適用された層状ニューラルネット（多変数相互修飾モデルＮ等）により、前記課題である関数（非線形関数等）を近似する前記関数近似装置を構成することも可能である。
【０１２７】
（Ｈ03）本発明の実施例では、前記多変数相互修飾モデルＮにおいて、前記入力層Ｎａを、４つの入力変数ｘ，ｖ，θ，ωにより構成したが、これに限定されず、３つの入力変数の場合や、５以上の入力変数の場合についても構成可能である。
また、本発明の実施例では、前記中間層Ｎｂの中間変数ｙを、４つの入力変数ｘ，ｖ，θ，ωのうちの２つずつを１組として相互に積型文脈修飾された１２個の各積型修飾ｘ（ｖ），ｖ（ｘ），ｘ（θ），θ（ｘ），ｘ（ω），ω（ｘ），ｖ（θ），θ（ｖ），ｖ（ω），ω（ｖ），θ（ω），ω（θ）により構成し、前記中間変数ｙの状態パターンＳｙを１２ｎ個の素子により構成したが（図４、式（１１）参照）、これに限定されず、相互に積型文脈修飾しないようにすることも可能である。
例えば、最小の構成として、４つの入力変数ｘ，ｖ，θ，ωのうちの２つずつ（（ｘ，ｖ），（θ，ω））を１組として積型文脈修飾された２個の各積型修飾ｘ（ｖ），θ（ω）だけを前記中間変数ｙとして、前記中間変数ｙの状態パターンＳｙを２ｎ個の素子により構成することも可能である。この場合、前記中間変数ｙの状態パターンＳｙについて、Ｓｙ＝（ｙ１，ｙ２，…，ｙ２ｎ）＝（ｙｘｖ１，ｙｘｖ２，…，ｙｘｖｎ，ｙθω１，ｙθω２，…，ｙθωｎ）が成立する。なお、本願明細書では、本発明の最小の構成である前記層状ニューラルネットを、実施例１の「多変数相互修飾モデルＮ」に対して、「多変数積型モデル」と呼ぶこととする。
さらに、本発明の実施例では、出力層Ｎｃを、１つの出力変数Ｑ（ｓｔ，ａｔ）により構成したが、これに限定されず、複数の出力変数で構成することも可能である。
【０１２８】
（Ｈ04）本発明の実施例の多変数相互修飾モデルＮ（図４参照）における入力変数ｘ，ｖ，θ，ωおよび中間変数ｙとしての各積型修飾ｘ（ｖ），ｖ（ｘ），ｘ（θ），θ（ｘ），ｘ（ω），ω（ｘ），ｖ（θ），θ（ｖ），ｖ（ω），ω（ｖ），θ（ω），ω（θ）の各素子数ｎの値については任意に設定可能であり、例えば、ｎ＝１とすることも可能である。この場合、入力変数ｘ，ｖ，θ，ωの数と入力層Ｎａの素子数とが等しくなる（４ｎ＝４×１＝４）。
したがって、本発明の選択的不感化法が適用された層状ニューラルネットにおいて、前記入力層（Ｎａ）の素子数がｎで固定されている場合、最大の構成である前記多変数相互修飾モデル（Ｎ）では、前記中間層（Ｎｂ）の素子数の最大値がｎ（ｎ−１）となる。すなわち、素子数１のｎ個の入力変数が存在した場合、前記最大値について、ｎＰ２＝ｎ（ｎ−１）が成立する。また、最小の構成である前記多変数積型モデルは、前記中間層の素子数の最小値がｎ／２となる。すなわち、素子数ｎ／４の４つの入力変数が存在した場合、前記最小値について、ｎ／４×２＝ｎ／２が成立する。
この結果、本発明の選択的不感化法が適用された層状ニューラルネットは、入力層の素子数がｎ個で構成されている場合には、中間層の素子数はｎ／２〜ｎ（ｎ−１）個の範囲で構成できる。
【０１２９】
（Ｈ05）本発明の実施例１における各定数Ｍ，ｍ，Ｌ，ｔ，ｇ，α，γの設定値および各変数ｘ，ｖ，θ，ω，ａ，ｂ，ｋ，Ｆ，ｗｊｉ，ｗｊｉ′の初期値や取り得る値の範囲等については任意に変更可能である。
（Ｈ06）本発明の実施例では、前記行動価値関数学習処理（図６のＳＴ１３、図８のＳＴ２０１〜ＳＴ２１２参照）が、前記倒立振子制御処理（図６のＳＴ１〜ＳＴ１２参照）が失敗状態で終了した場合にのみ実行されるが（図６のＳＴ１１参照）、これに限定されず、成功状態で終了した場合（図６のＳＴ１０参照）についても実行することが可能である。この場合、Ｑ−ｌｅａｒｎｉｎｇの強化学習（図６のＳＴ９、式（８）参照）により更新された最新の行動価値関数Ｑ（ｓｔ，ａｔ）に基づいて、前記結合荷重ｗｊｉ，ｗｊｉ′が学習されるため、実施例１の前記関数近似システムＳに比べて演算ステップが増加するが、行動価値関数Ｑ（ｓｔ，ａｔ）についての学習の収束をより早くすることができる。
【０１３０】
（Ｈ07）本発明の実施例では、前記多変数相互修飾モデルＮの中間層Ｎｂを１層としたが、これに限定されず、中間層Ｎｂを複数層とすることも可能である。
（Ｈ08）本発明の実施例では、前記各入力変数ｘ，ｖ，θ，ωから中間変数ｙ（ｙ＝（ｘ（ｖ），ｖ（ｘ），ｘ（θ），θ（ｘ），ｘ（ω），ω（ｘ），ｖ（θ），θ（ｖ），ｖ（ω），ω（ｖ），θ（ω），ω（θ）））が演算される場合に、いわゆる、選択的不感化が行われ（式（９−１），（９−２），（１０−１），（１０−２）参照）、中間変数ｙから前記出力変数Ｑ（ｓｔ，ａｔ）が演算される場合には従来公知の多層パーセプトロンと同様に演算されて選択的不感化が行われないが、これに限定されず、前記中間変数ｙから前記出力変数Ｑ（ｓｔ，ａｔ）を演算する場合にも選択的不感化を適用することも可能である。例えば、中間変数ｙとして、ｙ＝（ｘ（ｖ），θ（ω）））が演算される場合に、すなわち、入力変数ｖで選択的不感化された入力変数ｘ（積型修飾ｘ（ｖ））と、入力変数ωで選択的不感化された入力変数θ（積型修飾θ（ω））とを中間変数ｙとした場合に、前記積型修飾θ（ω）で前記積型修飾ｘ（ｖ）を選択的不感化した後（積型文脈修飾した後）、前記結合荷重ｗｊｉ，ｗｊｉ′に基づいて前記出力変数Ｑ（ｓｔ，ａｔ）を演算することも可能である（式（１１），（１２−１），（１２−２）参照）。さらに、前記各入力変数ｘ，ｖ，θ，ωから中間変数ｙが演算される場合に選択的不感化を行わずに従来公知の多層パーセプトロンと同様に演算し、中間変数ｙから前記出力変数Ｑ（ｓｔ，ａｔ）が演算される場合に選択的不感化を行うことも可能である。
【産業上の利用可能性】
【０１３１】
前述の本発明の選択的不感化法が適用された層状ニューラルネット（多変数相互修飾モデルＮ、多変数積型モデル等）により、課題を関数（非線形関数等）として近似する関数近似装置、関数近似システムおよび関数近似プログラムを作製し、実時間で学習可能な課題についての制御を行う学習制御機器、例えば、自律行動型のロボットや、画像や音声等のパターン認識装置等の制御に適用することにより、学習時間を大幅に低減させたり、未知の環境に対する適応能力を向上させたりすることが可能となる。
【図面の簡単な説明】
【０１３２】
【図１】図１は本発明の実施例１の関数近似システムの全体説明図である。
【図２】図２は本発明の実施例１の台車の制御部が備えている各機能をブロック図（機能ブロック図）で示した図である。
【図３】図３は強化学習の簡単な説明図である。
【図４】図４は本発明の実施例１の選択的不感化法が適用された層状ニューラルネットの説明図である。
【図５】図５は台車の位置を示す入力変数の状態パターンの一例を説明するための説明図である。
【図６】図６は本発明の実施例１の関数近似プログラムのメイン処理のフローチャートである。
【図７】図７は本発明の実施例１の関数近似プログラムの行動価値関数近似処理のフローチャートであり、図６のＳＴ７のサブルーチンの説明図である。
【図８】図８は本発明の実施例１の関数近似プログラムの行動価値関数学習処理のフローチャートであり、図６のＳＴ１３のサブルーチンの説明図である。
【図９】図９は実験例の実験結果の説明図であり、横軸に倒立振子制御処理の試行回数（エピソード数）をとり、縦軸に倒立振子制御処理の試行時間（棒が倒立し続けた時間）をとって、実験例１の学習効率と比較例１の学習効率とを比較するためのグラフであり、図９Ａは実験例１の実験結果を示すグラフであり、図９Ｂは比較例１の実験結果を示すグラフである。
【図１０】図１０は実験例の実験結果の説明図であり、横軸に倒立振子制御処理の試行回数（エピソード数）をとり、縦軸に倒立振子制御処理の試行時間（棒が倒立し続けた時間）および外乱を与えた回数（棒を指で弾いた回数）をとって、実験例２の学習効率と比較例２の学習効率とを比較するためのグラフであり、図１０Ａは実験例２の実験結果を示すグラフであり、図１０Ｂは比較例２の実験結果を示すグラフである。
【図１１】図１１は実験例の実験結果の説明図であり、横軸に倒立振子制御処理の試行回数（エピソード数）をとり、縦軸に倒立振子制御処理の試行時間（棒が倒立し続けた時間）をとって、実験例３の学習効率と比較例３の学習効率とを比較するためのグラフであり、図１１Ａは実験例３の実験結果を示すグラフであり、図１１Ｂは比較例３の実験結果を示すグラフである。
【図１２】図１２は選択的不感化法が適用された層状ニューラルネットの最小の構成の説明図である。
【図１３】図１３は選択的不感化法が適用された層状ニューラルネットの説明図であり、図１３Ａは積型モデルの説明図であり、図１３Ｂは相互修飾モデルの説明図である。
【符号の説明】
【０１３３】
Ａ，１…制御装置、
ＡＰ１…関数近似プログラム、
ａｔ…行動、
Ｃ…関数近似装置、
Ｃ２…状態測定手段、
Ｃ３…行動実行手段、
Ｃ３Ａ…行動選択手段、
Ｃ４…報酬取得手段、
Ｃ５…行動価値関数演算手段、
Ｃ７Ａ…入力変数入力手段、
Ｃ７Ｃ…中間変数演算手段、
Ｃ７C1a＋Ｃ７C1b…第１中間変数演算手段、
Ｃ７C1c＋Ｃ７C1d…第２中間変数演算手段、
Ｃ７Ｅ…出力変数演算手段、
Ｃ７Ｇ…結合荷重学習手段、
Ｃ８…制御終了判別手段、
Ｅ…環境、
Ｎ…層状ニューラルネット、
Ｎａ…入力層、
Ｎｂ…中間層、
Ｎｃ…出力層、
Ｑ（ａｔ，ｓｔ），Ｑ（ａｔ＋１，ｓｔ＋１）…行動価値関数、
Ｑ（ａｔ，ｓｔ）…関数、出力変数、
ｒｔ，ｒｔ＋１…報酬、
Ｓ…強化学習システム，関数近似システム、
（ｑ１，ｑ２，…，ｑｍ），（ｑ１′，ｑ２′，…，ｑｍ′）…出力素子
ｓｔ，ｓｔ＋１…状態、
（ｓｘ１，ｓｘ２，…，ｓｘｎ，ｓｖ１，ｓｖ２，…，ｓｖｎ，ｓθ１，ｓθ２，…，ｓθｎ，ｓω１，ｓω２，…，ｓωｎ）…入力素子、
（ｔ１，ｔ２，…，ｔｍ），（ｔ１′，ｔ２′，…，ｔｍ′）…関数の実際の値、
ｗｊｉ，ｗｊｉ′…結合荷重、
ｘ，ｖ，θ，ω…入力変数、
ｙ…中間変数、
（ｙ１，ｙ２，…，ｙ１２ｎ）…中間素子。
【図１】
0005152780.tif 000004
【図２】
0005152780.tif 000005
【図３】
0005152780.tif 000006
【図４】
0005152780.tif 000007
【図６】
0005152780.tif 000008
【図７】
0005152780.tif 000009
【図８】
0005152780.tif 000010
【図９】
0005152780.tif 000011
【図１０】
0005152780.tif 000012
【図１２】
0005152780.tif 000013
【図１３】
0005152780.tif 000014
【図５】
0005152780.tif 000015
【図１１】
0005152780.tif 000016