(57)【要約】      （修正有）【課題】神経細胞をシミュレートするニューロンに生存原理を導入し、基本構造を組み合わせることで種々の制御対象を容易に制御できるようにする制御装置等を提供する。【解決手段】制御装置５０１において、バースティングモデルに基づくニューロン部１０１を複数並べた入力層５０３、学習層５０４、出力層５０５は、それぞれ、重みα[i,j]、重みβ[j,k]で連結され、更新部５０７は、入力層５０３と出力層５０５の発火や出力の対応関係等からヘッブ則に基づいて重みα[i,j]を更新して学習し、入力層５０３には制御入力部５０２を介して目標値や実際の測定値等の制御入力が与えられ、制御出力部５０８は、出力層５０５の発火の個数に比例する量を制御対象に印加する制御出力として出力し、入力層５０３、学習層５０４、出力層５０５の各層内で、発火の閾値に対応する変数の初期値をそれぞれのニューロン部１０１で異なるものとする。【選択図】図５
2008225607.tif 000002
【特許請求の範囲】
【請求項１】
神経細胞をシミュレートするニューロン部を用いる制御装置であって、前記ニューロン部は、
膜電位変数x、イオン電流コンダクタンス変数y、流入電流変数I、閾値変数Tを記憶する変数記憶部と、
前記記憶された変数x，y，I，Tを、所定の関数f1(・,・)，f2(・,・)，f3(・)により定められる連立微分方程式
dx/dt = f1(x,y) + I - T；
dy/dt = f2(x,y)；
dT/dt = f3(x)
に基づいて変化させる変化部と、
０に近い所定の定数Aに対し、x > Aである場合、当該ニューロン部が発火している旨を、そうでないときに当該ニューロン部は発火していない旨を、それぞれ出力する発火部と、
１つまたは複数の入力を受け付けてこれらの総和を当該変数Iに与える変数入力部と、
当該変数xを出力する変数出力部と、を有し、
前記制御装置は、
制御入力値を受け付ける制御入力部と、
当該ニューロン部をL個有する入力層と、
当該ニューロン部をM個有する学習層と、
当該ニューロン部をN個有する出力層と、
L×M個の要素を有する重み配列α[i,j] (1≦i≦L，1≦j≦M)と、M×N個の要素を有する重み配列β[j,k] (1≦j≦M，1≦k≦N)と、を記憶する重み記憶部と、
前記記憶された重み配列α[i,j]を更新する更新部と、
前記出力層が有するN個のニューロン部の発火部による出力において発火している個数に比例する値を制御出力値として出力する制御出力部と、を備え、
前記入力層が有するニューロン部の変数記憶部に記憶される変数Tの初期値は、互いに異なり、
前記学習層が有するニューロン部の変数記憶部に記憶される変数Tの初期値は、互いに異なり、
前記出力層が有するニューロン部の変数記憶部に記憶される変数Tの初期値は、互いに異なり、
前記受け付けられた制御入力値は、前記入力層が有するそれぞれのニューロン部の入力部に入力され、
前記入力層が有するi (1≦i≦L)番目のニューロン部の変数出力部は、前記学習層が有するj (1≦j≦M)番目のニューロン部の変数入力部に、前記記憶された当該重みα[i,j]で接続され、
前記学習層が有するj (1≦j≦M)番目のニューロン部の変数出力部は、前記出力層が有するk (1≦k≦N)番目のニューロン部の変数入力部に、前記記憶された重みβ[j,k]で接続され、
前記更新部は、前記入力層が有するニューロン部の発火部もしくは変数出力部による出力と、前記出力層が有するニューロン部の発火部もしくは変数出力部による出力と、から、ヘッブ則により、当該重み配列α[i,j]を更新する
ことを特徴とする制御装置。
【請求項２】
請求項１に記載の制御装置であって、正定数a1，a2，a3，b1，b2，b3，c1，c2，c3により、
f1(x,y) = -y + a1x3 + a2x2 + a3x；
f2(x,y) = -y + b1x2 + b2x + b3；
f3(x) = c1〔1/(1 + exp(-c2x)) - c3〕
と定義される
ことを特徴とする制御装置。
【請求項３】
請求項１または２に記載の制御装置であって、
前記制御入力部は、前記制御出力部により出力される制御出力が印加される制御対象の目標値と測定値との差を表す第１の制御入力値と、当該制御対象の時間微分の測定値を表す第２の制御入力値と、を受け付け、
前記入力層が有するニューロン部は、第１のグループと、第２のグループと、に分けられ、
前記学習層が有するニューロン部は、第１のグループと、第２のグループと、に分けられ、
前記受け付けられた第１の制御入力値は、前記入力層の第１のグループのニューロン部の入力部に共通して与えられ、
前記受け付けられた第２の制御入力値は、前記入力層の第２のグループのニューロン部の入力部に共通して与えられ、
前記更新部は、当該重み配列α[i,j]のうち、入力層の第１のグループのニューロン部と学習層の第２のグループのニューロン部との間の重みは常に０であり、当該重み配列α[i,j]のうち、入力層の第２のグループのニューロン部と学習層の第１のグループのニューロン部との間の重みは常に０である
ことを特徴とする制御装置。
【請求項４】
請求項３に記載の制御装置を２つ有する制御システムであって、
当該制御対象を第１の向きに制御する場合には、当該２つの制御装置のうち、第１の制御装置を用い、
当該制御対象を第２の向きに制御する場合には、当該２つの制御装置のうち、第２の制御装置を用いる
ことを特徴とする制御システム。
【請求項５】
請求項１または２に記載の制御装置であって、
前記制御入力部は、前記制御出力部により出力される制御出力が印加される制御対象に関する値を表す第１の制御入力値と、当該制御対象に第１の動作をとらせるか第２の動作をとらせるかを指定する第２の制御入力値と、を受け付け、
前記入力層が有するニューロン部は、第１のグループと、第２のグループと、に分けられ、
前記学習層が有するニューロン部は、第１のグループと、第２のグループと、に分けられ、
前記受け付けられた第１の制御入力値は、前記入力層の第１のグループのニューロン部の入力部に共通して与えられ、
当該入力装置が有する第２のグループのニューロン部の出力部は、受け付けられた第２の制御入力値が、当該制御対象に第１の動作をとらせることを指定する場合、常に１を出力し、当該制御対象に第２の動作をとらせることを指定する場合、常に０を出力し、
前記更新部は、当該重み配列α[i,j]のうち、入力層の第１のグループのニューロン部と学習層の第２のグループのニューロン部との間の重みは常に０であり、当該重み配列α[i,j]のうち、入力層の第２のグループのニューロン部と学習層の第１のグループのニューロン部との間の重みは常に０である
ことを特徴とする制御装置。
【請求項６】
請求項５に記載の制御装置を２つ備える制御システムであって、
当該２つの制御装置は、与えられる第２の制御入力値と、当該入力層が有する第２のグループのニューロン部と、を共有する
ことを特徴とする制御システム。
【請求項７】
請求項１または２に記載の制御装置であって、
前記制御入力部は、前記制御出力部により出力される制御出力が印加される制御対象の目標値と測定値との差を表す第１の制御入力値と、当該制御対象の時間微分の測定値を表す第２の制御入力値と、当該制御対象に第１の動作をとらせるか第２の動作をとらせるかを指定する第３の制御入力値と、を受け付け、
前記入力層が有するニューロン部は、第１のグループと、第２のグループと、第３のグループと、に分けられ、
前記学習層が有するニューロン部は、第１のグループと、第２のグループと、第３のグループと、に分けられ、
前記受け付けられた第１の制御入力値は、前記入力層の第１のグループのニューロン部の入力部に共通して与えられ、
前記受け付けられた第２の制御入力値は、前記入力層の第２のグループのニューロン部の入力部に共通して与えられ、
当該入力装置が有する第３のグループのニューロン部の出力部は、受け付けられた第３の制御入力値が、当該制御対象に第１の動作をとらせることを指定する場合、常に１を出力し、当該制御対象に第２の動作をとらせることを指定する場合、常に０を出力し、
前記更新部は、当該重み配列α[i,j]のうち、入力層のニューロン部のグループ番号と学習層のニューロン部のグループ番号と、が異なるものの間の重みは常に０であるように更新する
ことを特徴とする制御装置。
【請求項８】
請求項７に記載の制御装置を２つ備える制御システムであって、
当該２つの制御装置は、与えられる第３の制御入力値と、当該入力層が有する第３のグループのニューロン部と、を共有する
ことを特徴とする制御システム。
【請求項９】
コンピュータを、請求項１、２、３、５、７のいずれか１項に記載の制御装置の各部として機能させることを特徴とするプログラム。
【請求項１０】
コンピュータを、請求項４、６、８のいずれか１項に記載の制御システムの各部として機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、神経細胞をシミュレートするニューロンに生存原理を導入し、基本構造を組み合わせることで種々の制御対象を容易に制御できるようにするのに好適な制御装置、制御システム、ならびに、これをコンピュータにて実現するプログラムに関する。
【背景技術】
【０００２】
従来から、神経細胞の活動を規範とする制御単位に、発火を続けることで閾値が上がり次第に発火しにくい状態に変化していくような生存原理を付加したモデル、たとえば、バースティングの数学モデルが提案されている。
【０００３】
神経細胞は、一定量のイオン電流が細胞内に流れ込むと、膜電位が大きく変化し、活動電位が生じる。これが「発火」である。このような生物物理学に基づいたバースティングモデルは、その定性的性質を保持しながら、多項式によって表現することができる。
【０００４】
そして、このようなバースティングモデルに基づいたニューラルネットワークによる制御は、複合制御とも呼ばれ、以下の文献に開示されている。
【非特許文献１】下田真吾，旭岳史，藤本英雄，木村英紀「複合制御論におけるロボット制御」第１１回ロボティクスシンポジア，２００６年
【０００５】
ここで、[非特許文献１]では、神経細胞モデルの自律的活動による学習で物体を運搬する動作を学習する技術が提案されている。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、[非特許文献１]に開示の技術は、制御対象の事情に合わせて設計された特有のニューラルネットワークを用いるものであり、このような個別のニューラルネットワークではなく、基本構造を有するニューラルネットワークを組み合わせることによって制御の設計が可能となるような技術に対する要望は大きい。
【０００７】
本発明は、以上のような課題を解決するためのもので、神経細胞をシミュレートするニューロンに生存原理を導入し、基本構造を組み合わせることで種々の制御対象を容易に制御できるようにするのに好適な制御装置、制御システム、ならびに、これをコンピュータにて実現するプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明の第１の観点に係る制御装置は、神経細胞をシミュレートするニューロン部を用い、以下のように構成する。
【０００９】
すなわち、ニューロン部は、
（１）膜電位変数x、イオン電流コンダクタンス変数y、流入電流変数I、閾値変数Tを記憶する変数記憶部と、
（２）記憶された変数x，y，I，Tを、所定の関数f1(・,・)，f2(・,・)，f3(・)により定められる連立微分方程式
dx/dt = f1(x,y) + I - T；
dy/dt = f2(x,y)；
dT/dt = f3(x)
に基づいて変化させる変化部と、
（３）０に近い所定の定数Aに対し、x > Aである場合、当該ニューロン部が発火している旨を、そうでないときに当該ニューロン部は発火していない旨を、それぞれ出力する発火部と、
（４）１つまたは複数の入力を受け付けてこれらの総和を当該変数Iに与える変数入力部と、
（５）当該変数xを出力する変数出力部と、
を有する。
【００１０】
一方、制御装置は、
（ａ）制御入力値を受け付ける制御入力部と、
（ｂ）当該ニューロン部をL個有する入力層と、
（ｃ）当該ニューロン部をM個有する学習層と、
（ｄ）当該ニューロン部をN個有する出力層と、
（ｅ）L×M個の要素を有する重み配列α[i,j] (1≦i≦L，1≦j≦M)と、M×N個の要素を有する重み配列β[j,k] (1≦j≦M，1≦k≦N)と、を記憶する重み記憶部と、
（ｆ）記憶された重み配列α[i,j]を更新する更新部と、
（ｇ）出力層が有するN個のニューロン部の発火部による出力において発火している個数に比例する値を制御出力値として出力する制御出力部と、
を備える。
【００１１】
ここで、
（ｐ）入力層が有するニューロン部の変数記憶部に記憶される変数Tの初期値は、互いに異なり、
（ｑ）学習層が有するニューロン部の変数記憶部に記憶される変数Tの初期値は、互いに異なり、
（ｒ）出力層が有するニューロン部の変数記憶部に記憶される変数Tの初期値は、互いに異なり、
（ｔ）受け付けられた制御入力値は、入力層が有するそれぞれのニューロン部の入力部に入力され、
（ｕ）入力層が有するi (1≦i≦L)番目のニューロン部の変数出力部は、学習層が有するj (1≦j≦M)番目のニューロン部の変数入力部に、記憶された当該重みα[i,j]で接続され、
（ｖ）学習層が有するj (1≦j≦M)番目のニューロン部の変数出力部は、出力層が有するk (1≦k≦N)番目のニューロン部の変数入力部に、記憶された重みβ[j,k]で接続され、
（ｗ）更新部は、入力層が有するニューロン部の発火部もしくは変数出力部による出力と、出力層が有するニューロン部の発火部もしくは変数出力部による出力と、から、ヘッブ則により、当該重み配列α[i,j]を更新する
ように構成する。
【００１２】
また、本発明の制御装置は、正定数a1，a2，a3，b1，b2，b3，c1，c2，c3により、
f1(x,y) = -y + a1x3 + a2x2 + a3x；
f2(x,y) = -y + b1x2 + b2x + b3；
f3(x) = c1〔1/(1 + exp(-c2x)) - c3〕
と定義されるように構成することができる。
【００１３】
また、本発明の制御装置において、
（１）制御入力部は、制御出力部により出力される制御出力が印加される制御対象の目標値と測定値との差を表す第１の制御入力値と、当該制御対象の時間微分の測定値を表す第２の制御入力値と、を受け付け、
（２）入力層が有するニューロン部は、第１のグループと、第２のグループと、に分けられ、
（３）学習層が有するニューロン部は、第１のグループと、第２のグループと、に分けられ、
（４）受け付けられた第１の制御入力値は、入力層の第１のグループのニューロン部の入力部に共通して与えられ、
（５）受け付けられた第２の制御入力値は、入力層の第２のグループのニューロン部の入力部に共通して与えられ、
（６）更新部は、当該重み配列α[i,j]のうち、入力層の第１のグループのニューロン部と学習層の第２のグループのニューロン部との間の重みは常に０であり、当該重み配列α[i,j]のうち、入力層の第２のグループのニューロン部と学習層の第１のグループのニューロン部との間の重みは常に０である
ように構成することができる。
【００１４】
この制御装置を２つ有する制御システムは、当該制御対象を第１の向きに制御する場合には、当該２つの制御装置のうち、第１の制御装置を用い、当該制御対象を第２の向きに制御する場合には、当該２つの制御装置のうち、第２の制御装置を用いるように構成することができる。
【００１５】
また、本発明の制御装置において、
（１）制御入力部は、制御出力部により出力される制御出力が印加される制御対象に関する値を表す第１の制御入力値と、当該制御対象に第１の動作をとらせるか第２の動作をとらせるかを指定する第２の制御入力値と、を受け付け、
（２）入力層が有するニューロン部は、第１のグループと、第２のグループと、に分けられ、
（３）学習層が有するニューロン部は、第１のグループと、第２のグループと、に分けられ、
（４）受け付けられた第１の制御入力値は、入力層の第１のグループのニューロン部の入力部に共通して与えられ、
（５）当該入力装置が有する第２のグループのニューロン部の出力部は、受け付けられた第２の制御入力値が、当該制御対象に第１の動作をとらせることを指定する場合、常に１を出力し、当該制御対象に第２の動作をとらせることを指定する場合、常に０を出力し、
（６）更新部は、当該重み配列α[i,j]のうち、入力層の第１のグループのニューロン部と学習層の第２のグループのニューロン部との間の重みは常に０であり、当該重み配列α[i,j]のうち、入力層の第２のグループのニューロン部と学習層の第１のグループのニューロン部との間の重みは常に０である
ように構成することができる。
【００１６】
また、この制御装置を２つ有する制御システムは、当該２つの制御装置において、与えられる第２の制御入力値と、当該入力層が有する第２のグループのニューロン部と、を共有するように構成することができる。
【００１７】
また、本発明の制御装置において、
（１）制御入力部は、制御出力部により出力される制御出力が印加される制御対象の目標値と測定値との差を表す第１の制御入力値と、当該制御対象の時間微分の測定値を表す第２の制御入力値と、当該制御対象に第１の動作をとらせるか第２の動作をとらせるかを指定する第３の制御入力値と、を受け付け、
（２）入力層が有するニューロン部は、第１のグループと、第２のグループと、第３のグループと、に分けられ、
（３）学習層が有するニューロン部は、第１のグループと、第２のグループと、第３のグループと、に分けられ、
（４）受け付けられた第１の制御入力値は、入力層の第１のグループのニューロン部の入力部に共通して与えられ、
（５）受け付けられた第２の制御入力値は、入力層の第２のグループのニューロン部の入力部に共通して与えられ、
（６）当該入力装置が有する第３のグループのニューロン部の出力部は、受け付けられた第３の制御入力値が、当該制御対象に第１の動作をとらせることを指定する場合、常に１を出力し、当該制御対象に第２の動作をとらせることを指定する場合、常に０を出力し、
（７）更新部は、当該重み配列α[i,j]のうち、入力層のニューロン部のグループ番号と学習層のニューロン部のグループ番号と、が異なるものの間の重みは常に０であるように更新する
ように構成することができる。
【００１８】
また、この制御装置を２つ有する制御システムは、当該２つの制御装置において、与えられる第３の制御入力値と、当該入力層が有する第３のグループのニューロン部と、を共有するように構成することができる。
【００１９】
本発明のその他の観点に係るプログラムは、コンピュータを上記の制御装置の各部として機能させるように構成する。
【００２０】
また、本発明のプログラムは、コンパクトディスク、フレキシブルディスク、ハードディスク、光磁気ディスク、ディジタルビデオディスク、磁気テープ、半導体メモリ等のコンピュータ読取可能な情報記憶媒体に記録することができる。
【００２１】
上記プログラムは、プログラムが実行されるコンピュータやディジタル信号プロセッサとは独立して、コンピュータ通信網を介して配布・販売することができる。また、上記情報記憶媒体は、コンピュータやディジタル信号プロセッサとは独立して配布・販売することができる。
【発明の効果】
【００２２】
本発明によれば、神経細胞をシミュレートするニューロンに生存原理を導入し、基本構造を組み合わせることで種々の制御対象を容易に制御できるようにするのに好適な制御装置、制御システム、ならびに、これをコンピュータにて実現するプログラムを提供することができる。
【発明を実施するための最良の形態】
【００２３】
以下に本発明の実施形態を説明する。なお、以下に説明する実施形態は説明のためのものであり、本発明の範囲を制限するものではない。したがって、当業者であればこれらの各要素もしくは全要素をこれと均等なものに置換した実施形態を採用することが可能であるが、これらの実施形態も本発明の範囲に含まれる。
【実施例１】
【００２４】
（ニューロン部）
本実施形態においては、生物の神経細胞をシミュレートするため、最小基本単位として、以下のようなニューロン部を採用する。
【００２５】
図１は、ニューロン部の概要構成を示す説明図である。以下、本図を参照して説明する。
【００２６】
ニューロン部１０１は、変数記憶部１０２、変化部１０３、発火部１０４、変数入力部１０５、変数出力部１０６を備える。
【００２７】
変数記憶部１０２には、以下の変数が記憶される。
（ａ）神経細胞の膜電位に相当する変数x。
（ｂ）イオン電流コンダクタンスに相当する変数y。
（ｃ）流入電流に相当する変数I。
（ｄ）変数Iを打ち消す方向に働き、発火のしやすさを制御する閾値に相当する変数T。
【００２８】
バースティングモデルに基づくとき、これらの変数の間には、以下のような連立微分方程式の関係がなりたつ。すなわち、所定の関数f1(・,・)，f2(・,・)，f3(・)を用いて、
dx/dt = f1(x,y) + I - T；
dy/dt = f2(x,y)；
dT/dt = f3(x)
のように表現される連立方程式である。
【００２９】
典型的には、関数f1(・)，f2(・)，f3(・)は、所定の正定数a1，a2，a3，b1，b2，b3，c1，c2，c3により、
f1(x,y) = -y + a1x3 + a2x2 + a3x；
f2(x,y) = -y + b1x2 + b2x + b3；
f3(x) = c1〔1/(1 + exp(-c2x)) - c3〕
と定義される。
【００３０】
さて、変化部１０３は、入力される電流変数Iが時刻によって変化しうることを考慮して、この連立微分方程式を差分方程式化して数値積分することにより、順次解くこととなる。この際には、単純に時間の刻み幅Δtでそれぞれの変数の値の増分を計算して、それぞれの変数の値を更新しても良いし、各種の数値積分の手法を適用することとしても良い。
【００３１】
また、発火部１０４は、当該ニューロン部１０１が、現在発火している旨（典型的には「１」を出力する。）、あるいは、発火していない旨（典型的には「０」を出力する。）出力する。具体的には、０に近い所定の定数Aに対し、当該ニューロン部１０１は、x > Aである場合、発火しており、x ≦ Aである場合、発火していないこととなる。
【００３２】
ニューロン部１０１同士の結び付きを表す重みを、Ｈｅｂｂ則などに基づいて更新して学習する際に、発火状態が同じもの同士については重みを大きくし、発火状態が異なるもの同士については重みを小さくする、などのために用いられるほか、複数のニューロン部１０１を「層」としてまとめたときに、その中の何個が発火しているかを表す発火個数に比例する値を制御対象に印加する、というような制御にも用いる。
【００３３】
また、外部から与えられる入力は、変数入力部１０５において受け付けられ、この総和が当該変数Iに与えられる。
【００３４】
また、変数出力部１０６は、変数xを出力するが、この値は、制御対象に直接与えられるものではなく、他のニューロン部１０１に対する入力として与えられるのが典型的である。
【００３５】
以下の実施例では、典型的な値として、
a1 = 0.1；
a2 = 0.1；
a3 = 0.3；
b1 = 0.29；
b2 = 0.725；
b3 = 0.145；
c1 = 1.0×10-5；
c2 = 1.0×103；
c3 = 1.0×10-3；
A = -0.15
を用いることとする。
【００３６】
このようなニューロン部１０１の振舞いについて、以下に説明する。変数x，y，Tには適当な値を初期値として与え、変数入力部１０５を介して変数Iに与える値として、時間により変化するものを考える。
【００３７】
図２は、ニューロン部１０１の変数入力部１０５に与える値の変化を示すグラフである。以下、本図を参照して説明する。
【００３８】
本図に示すように、ニューロン部１０１の変数入力部１０５には、０.１と０.０とを一定周期で繰り返し、０.１である時間が０.０である時間より長いような、値の変化が入力として与えられる。
【００３９】
図３は、ニューロン部１０１の、変数出力部１０６が出力する値xの変化を示すグラフである。図４は、ニューロン部１０１の変数記憶部１０２に記憶される閾値変数Tの値の変化を示すグラフである。以下、これら図を参照して説明する。
【００４０】
図２のような入力が与えられると、図３に示すように、初めは入力に呼応して出力xが大きく変化するが、図４に示すように閾値Tが大きく変化していく。
【００４１】
なお、図３において発火が生じている区間は、縦軸方向の値が０.０以上となっている区間で、上下方向に急激に値が変化している区間であり、本図では、０.５秒〜１.０秒の区間、２.１秒〜２.２秒の区間、５.８秒〜５.９秒の区間、９.３秒〜９.４秒の区間である。
【００４２】
当初は発火が起きる区間と発火が一切起きない区間の周期は、１.１秒程度で、与えられる入力の周期とほぼ一致している（０秒〜１.１秒の区間、１.１秒〜２.２秒の区間）。ところが、当該ニューロンが発火することで閾値Tが変化することにより、次第に周期はその３倍程度に変わり、入力の周期よりも長くなっていくことがわかる（２.２秒〜５.９秒の区間、５.６秒〜９.４秒の区間）。
【００４３】
実際の生物の神経細胞では、膜電位がゆっくり変化する静止期と、周期的なバースト期とが現れ、神経細胞に「慣れ」が生じることが見られるが、本図に示すグラフでも、このような「慣れ」が見られることがわかる。
【００４４】
このようなニューロン部１０１の動作は、所定の連立微分方程式を数値積分により解くこととに相当するため、当該機能を実現するプログラムをコンピュータに実行させることで実現が可能である。
【００４５】
（制御装置）
図５は、本実施形態に係る制御装置の概要構成を示す説明図である。以下、本図を参照して説明する。
【００４６】
制御装置５０１は、制御入力部５０２、入力層５０３、学習層５０４、出力層５０５、重み記憶部５０６、更新部５０７、制御出力部５０８を備える。
【００４７】
入力層５０３、学習層５０４、出力層５０５は、ニューラルネットワークを構成するものであり、それぞれ、上記のニューロン部１０１を、L個、M個、N個並べたものである。
【００４８】
ここで、入力層５０３、学習層５０４、出力層５０５において、処理を開始する際に、各層のニューロン部１０１の変数記憶部１０２に記憶される閾値変数Tの初期値は、互いに異なるようにしておくのが典型的である。たとえば、各層について、それぞれ、1〜L、1〜M、1〜Nの整数値を初期値として、与えることとする。閾値Tの値は、上記のように、次第に変化することとなる。
【００４９】
入力層５０３と学習層５０４、学習層５０４と出力層５０５の、それぞれの間は、「シナプス」によって接続されており、全体としてネットワークを構成している。
【００５０】
入力層５０３が有するi (1≦i≦L)番目のニューロン部１０１の変数出力部１０６は、学習層５０４が有するj (1≦j≦M)番目のニューロン部１０１の重みα[i,j]で接続される。
【００５１】
一方、学習層５０４が有するj (1≦j≦M)番目のニューロン部１０１の変数出力部１０６は、出力層５０５が有するk (1≦k≦N)番目のニューロン部１０１の重みβ[j,k]で接続される。
【００５２】
さらに、「ニューロン」同士を結合する「シナプス」の強さを表す重みα[i,j]は、更新部５０７によって更新される。これによって、自律的な学習が行われる。すなわち、入力層５０３が有するニューロン部１０１の発火部１０４もしくは変数出力部１０６による出力と、出力層５０５が有するニューロン部１０１の発火部１０４もしくは変数出力部１０６による出力と、から、ヘッブ則により、当該重みα[i,j]を更新する。
【００５３】
本実施形態では、入力層５０３と出力層５０５のニューロン部１０１のそれぞれが発火が同時に行われているか否かを元に、通常のニューラルネットワークの場合と同様に、重み出力層５０５のα[i,j]を更新することとしているが、たとえば、それぞれの変数出力部１０６の値の関係から更新することとしても良い。これについては後述する。
【００５４】
重みα[i,j]を更新する必要性から、重み記憶部５０６には、L×M個の要素を有する重み配列α[i,j] (1≦i≦L，1≦j≦M)と、M×N個の要素を有する重み配列β[j,k] (1≦j≦M，1≦k≦N)と、が用意されており、更新部５０７は、重み記憶部５０６の内容を書き換えることによって、重みα[i,j]を更新するのである。
【００５５】
なお、重みα[i,j]の中に、常に値が０となるものを用意しておいても良い。たとえば、入力層５０３のニューロン部１０１をP個のグループに分割し、学習層５０４のニューロン部１０１もP個のグループに分割し、同じ順序のニューロン部１０１同士を接続・結合させるような場合である。この場合、同じグループ番号のニューロン部１０１同士の結合の重みについては、ヘッブ則による自律学習が行われるが、異なるグループ番号のニューロン部１０１同士の結合の重みについては、常に０となるように構成する。
【００５６】
制御入力部５０２は、制御入力値を受け付けるもので、センサーの出力などのアナログ値やディジタル値を神経細胞における「電流」に相当するものとして受け付ける。複数種類の入力を受け付けることも可能であり、この場合には、複数の入力の総和を与える場合と、入力層５０３のニューロン部１０１のグループごとに分別して与える場合と、がありうる。
【００５７】
一方、制御出力部５０８は、出力層５０５が有するN個のニューロン部１０１の発火部１０４による出力において発火している個数に比例する値を制御出力値として出力する。すなわち、制御対象に印加される値は、「出力層５０５のニューロン部１０１の変数出力部１０６による出力の総和」ではない。
【００５８】
ここで、理解を容易にするため、
（１）入力層５０３のニューロン部１０１の変数記憶部１０２に記憶され、変数出力部１０６から出力される変数xの値をζ1，ζ2，…，ζL
（２）学習層５０４のニューロン部１０１の変数記憶部１０２に記憶され、変数出力部１０６から出力される変数xの値をξ1，ξ2，…，ξM
（３）出力層５０５のニューロン部１０１の変数記憶部１０２に記憶され、変数出力部１０６から出力される変数xの値をψ1，ψ2，…，ψN
と表記することとし、各ニューロン部１０１ ζ1，…，ζL，ξ1，…，ξM，ψ1，…，ψNと指称することとする。
【００５９】
上記のように、各ニューロン部１０１ ζ1，…，ζL，ξ1，…，ξM，ψ1，…，ψNの閾値Tの初期値T[ζ1](0)，…，T[ζL](0)，T[ξ1](0)，…，T[ξM](0)，T[ψ1](0)，…，T[ψN](0)は、各層ごとに互いに異なるものとする。ここで、・(0)は、変数・の時刻t = 0における値を意味する。
【００６０】
本実施形態では、
T[ζi](0) = i  (1≦i≦L)；
T[ξj](0) = j  (1≦j≦M)；
T[ψk](0) = k  (1≦k≦N)
のように設定する。
【００６１】
ψ1，…，ψNのうち、Q個が発火しているときには、ψ1，…，ψQが発火しており、ψQ+1，…，ψNが発火していない、というように、発火しているグループと発火していないグループとが明確に別れる。そこで、制御出力部５０８では、物理的な値を意味する制御入力値や制御出力値の入出力の際には、比例定数を用いて、個数Qを変換する。
【００６２】
図６は、このような、入力層５０３や出力層５０５の発火と制御出力値との値の変換の関係を示す説明図である。以下、本図を参照して説明する。なお、本図においては、要素を表す符号は図示を省略している。
【００６３】
本図左側（Activities of Control Units）では、８個のニューロン部からなる層（入力層５０３や出力層５０５）桝目を並べた形で図示されており、発火しているニューロン部１０１については、桝目の中に「１」が、発火していないニューロン部１０１については、桝目の中に「０」が、それぞれ記入されている。
【００６４】
本図右側（Physical Value）には、それぞれの層の発火の状態に対応する制御入出力値が記載されている。
【００６５】
本図上段の例では、ニューロン部１０１が２つだけ発火しているため、制御入出力値はaとなっている。これは、比例定数a/2に２を乗じたものである。以下同様。
【００６６】
本図中段の例では、ニューロン部１０１が４つだけ発火しているため、制御入出力値は2aとなっている。
【００６７】
本図下段の例では、ニューロン部１０１が７つだけ発火しているため、制御入出力値は3.5aとなっている。
【００６８】
たとえば、センサーが測定した情報を制御入力部５０２に与えると、この大きさが「電流」として入力層５０３のニューロン部１０１のそれぞれに、場合によっては、あるグループ内のものに、共通して与えられる。
【００６９】
また、出力層５０５において発火しているニューロンの個数が、たとえば、制御対象のモーターを駆動する電圧を指定するものとして利用されることとなる。
【００７０】
このように、本制御装置５０１においては、制御入力値と制御出力値とのやりとりを通じて制御対象の制御が可能となると同時に、ニューロン部１０１の自律的活動によって、ニューラルネットワークが変化する。このとき、個々のニューロン部１０１は、出力がなけければ発火が抑制される方向に進むが、出力があれば重みが増加するために発火が増える。
【００７１】
自律的活動による発火の抑制と重みの増加による発火の促進とは、互いのトレードオフの関係にあるため、これらの働きによってネットワーク全体は安定することとなる。そこで、本実施形態では、これを複合制御における学習と考えるのである。
【００７２】
さて、制御装置５０１におけるニューロン部１０１の自律的活動によるネットワークの変化を定式化すると、以下のようになる。
(d/dt)ξi = f1(ξi) + Σk=1L α[i,k]ζk - T[ξi]；
(d/dt)T[ξi] = f3(ξi)；
(d/dt)α[i,j] = Δα1Σk=1N ψkξiζj + Δα2Σk=1N (ψkξiζj - 1)；
(d/dt)ψi = f1(ψi) + Σk=1M β[i,k]ξk - T[ψi]
【００７３】
ここで、Δα1，Δα2は、学習のための定数であり、これらと、α[i,j]の初期値、β[i,j]の値として、
Δα1 = 1.0×10-3；
Δα2 = 1.0×10-5；
α[i,j](0) = 3.0；
β[i,j] = 3.0；
のような数値を採用することとして、説明する。これは、入力層５０３と学習層５０４の間の重みα[i,j]をヘッブ則に基づいて変化させる様子を表すものである。
【００７４】
なお、上記のモデルは、入力層５０３における発火（ζi>Aか否か。）と、出力層５０５における発火（ψk>Aか否か。）との、対応関係から、入力層５０３と学習層５０４との間の重みα[i,j]を更新するものであるが、重みを更新するためのパラメータとしては、以下のようなものを適宜組み合わせて選択し、自律的な学習を行うことが可能である。
（１）入力層５０３における各発火（ζi>Aか否か。）。
（２）入力層５０３における各出力（ζi）。
（３）学習層５０４における各発火（ξj>Aか否か。）。
（４）学習層５０４における各出力（ξj）。
（５）出力層５０５における各発火（ψk>Aか否か。）。
（６）出力層５０５における各出力（ψk）。
【００７５】
また、上記実施形態では、α[i,j]のみを更新し、β[j,k]は一定値のまま定数としていたが、いずれか一方、もしくは、両方を更新することとしても良い。
【００７６】
以下では、上記の制御装置５０１を用いた制御システムとして、フィードバック制御器とフィードフォワード制御器とを例として説明する。
【００７７】
（フィードバック制御器）
図７は、フィードバック制御器を実現する制御システムの概要構成を示す説明図である。以下、本図を参照して説明する。本実施形態に係る制御システム７０１は、１つのモータで駆動される制御対象の角度を制御することを想定するものである。
【００７８】
制御システム７０１は、２つの制御装置５０１からなっており、一方の制御装置５０１は、モータを正方向に回転させる場合に用いられ、他方の制御装置５０１は、モータを負方向に回転させる場合に用いられる。なお、理解を容易にするため、本図に示す制御装置５０１においては、適宜要素の図示を省略している。
【００７９】
それぞの制御装置５０１には、制御入力として
（１）角速度；
（２）目標の角度と実際の角度との差
の２つが入力されているが、上記のように、意図する回転方向が異なっているため、それぞの制御装置５０１の入力層５０３に与えられる制御入力の正負は反転させる。
【００８０】
フィードバック制御が成功するためには、「入力」電流の総和が減少する向きに変化するような初期設定を行う必要があるが、上記のような設定を行うことで、正方向の角度の場合には負方向に回転する電圧がモータに印加され、負方向の角度の場合には正方向に回転する電圧がモータに印加されることとなり、生体の反射に近い初期ネットワークを構成することができる。
【００８１】
本図に示す例では、各制御装置５０１の入力層５０３の第１グループ、第２グループ、学習層５０４の第１グループ、第２グループ、出力層５０５のそれぞれに、ニューロン部１０１を５０個割り当てる。したがって、閾値Tの初期値は各グループにおいて１，２，…，５０の値を持つものがそれぞれ１個ずつあることになる。
【００８２】
図８は、上記諸元でシミュレーションを行った結果を示すグラフである。図９は、学習回数ごとのニューロン部１０１の発火数を示すグラフである。以下、これら図を参照して説明する。
【００８３】
図８の横軸は経過時間であり、１回の学習試行が５秒間で、１回目、５回目、１０回目、１５回目、２０回目、２５回目の学習試行における制御の様子が示されている。本図に示すように、学習が進んでいない状態でも大まかな制御は可能であるが、これは、上記のような初期設定を採用したためである。
【００８４】
また、学習が進むにつれて、ニューロン部１０１が自律的に変化することにより、図９に示すように、学習回数（Number of Learning）が増えると、発火総数（Number of Firing）が減少していき、次第に一定値に収束していく。
【００８５】
このため、図８に示すように、次第にオーバーシュートのない行動が獲得されていくことが分かる。
【００８６】
（フィードフォワード制御器）
フィードフォワード制御器は、ある行為をしようと意図したときに、この意図を示す信号を与えるもので、この信号は、センサー入力などの外部信号とは無関係に与えられる。以下では、フィードフォワード制御器の制御対象として、二重倒立振子を考える。
【００８７】
図１０は、当該二重倒立振子の様子を示す説明図である。以下、本図を参照して説明する。
【００８８】
この二重倒立振子は、関節に相当する２つのジョイント９０１、９０２が、台９０６と、フレーム９１１、９１２と、を接続している。
【００８９】
フレーム９１１、９１２は、鉛直方向を基準方向としており、この基準方向からの角度の変位をθ1，θ2としている。初期姿勢として
θ1 = 0.0[rad]
θ2 = 0.0[rad]
を採用し、制御の目標は、
θ2 = -0.8[rad]
とするが、θ1には目標を与えないものとする。
【００９０】
図１１は、フィードフォワード制御器を実現する制御システムの概要構成を示す説明図である。以下、本図を参照して説明する。
【００９１】
本実施形態に係る制御システム７５１は、２つの制御装置５０１からなっており、一方の制御装置５０１は、ジョイント９０１のモータを回転させるために用いられ、他方の制御装置５０１は、ジョイント９０２のモータを回転させる場合に用いられる。
【００９２】
また、各制御装置５０１の入力層５０３は２つのグループに分割されており、学習層５０４は２つのグループに分割されており、それぞれのグループ番号が一致するもののみが、０でない重みで結合され、その重みが更新される。
【００９３】
そして、入力層５０３のグループの１つは、２つの制御装置５０１の間で共有されている。これは、制御入力部５０２の一部と同様である。このグループは、意図（intention）層７０２といい、「ある行為をさせようという意図を明示するために発火させるニューロン部１０１の集合」である。
【００９４】
したがって、「ある行為をさせよう」とする場合には、意図層７０２のニューロン部１０１すべてが発火するような制御入力を制御入力部５０２に与えることとなり、「ある行為をさせまい」とする場合には、意図層７０２のニューロン部１０１すべてが発火しないような制御入力を制御入力部５０２に与えることとなる。
【００９５】
さらに、入力層５０３における意図層７０２以外の部分については、グループ分割をしない単純な構成としても良いが（たとえば、目標角度と現在角度の差を制御入力とし、モータへの印加電圧を制御出力とする、あるいは、目標角度と現在角度の差、および、角速度を制御入力とし、モータへの印加電圧を制御出力とする等。）、本実施形態では、これらの部分の構成を、先に示したフィードバック制御器７０１とし、２つのモータを制御するために、２つのフィードバック制御器７０１を用いる。各フィードバック制御器７０１では、それぞれのモータの正方向回転と負方向回転とで、２つの制御装置５０１を用いるような構成である。
【００９６】
図１２は、目標動作の様子を示すグラフである。以下、本図を参照して説明する。
【００９７】
本図に示すように、目標動作では、５秒間目標姿勢をとり、３秒間倒立姿勢に戻る、という動作を繰り返す。したがって、本図に示すものに相当するような制御入力（意図入力）を、意図層７０２に与えることとなる。
【００９８】
すなわち、意図層７０２に含まれるニューロン部１０１は、目標姿勢を目指す場合は、すべて１を出力し、倒立姿勢を目指す場合は、すべて０を出力するようなものとする。このため、意図層７０２と学習層５０４との結合においては、「意図層７０２のニューロン部１０１の変数出力部と学習層５０４のニューロン部１０１の変数入力部とを結合」させるのではなく、「意図層７０２のニューロン部１０１の発火部と学習層５０４のニューロン部１０１の変数入力部とを結合」させることとしても良い。
【００９９】
また、意図層７０２のニューロン部１０１として、現在の意図入力をそのまま発火状態として取り扱うような、メモリのように機能する「ニューロン」を採用することとしても良い。
【０１００】
本制御システム７０１においては、ニューロン部１０１を合計で１４４０個用いている。
【０１０１】
図１３は、本制御システム７０１が獲得した動作を示すグラフである。以下、本図を参照して説明する。
【０１０２】
本図（Ａ）は、ジョイント１の角度の時間変化を示し、本図（Ｂ）は、ジョイント１のモーターに対する制御出力の時間変化を示し、本図（Ｃ）は、ジョイント２の角度の時間変化を示し、本図（Ｄ）は、ジョイント２のモーターに対する制御出力の時間変化を示す。
【０１０３】
ジョイント２は、６回程度の試行で目標角度に収束している（本図（Ｃ））。その際のジョイント１は、一定値に収束しており（本図（Ａ））、ジョイント１のモーターに対する制御出力は、ほぼ０となっている（本図（Ｂ））。この動作は、次のようにして獲得されたものと考えられる。
【０１０４】
すなわち、ジョイント２が目標角度に近付くと、倒立振子のバランスが崩れ、ジョイント１は負方向に回転する。
【０１０５】
すると、ジョイント１のフィードバック制御器は、正方向へ回転させる出力が生まれ、これが、意図層７０２と学習層５０４との間の重みを増加させる。
【０１０６】
目標の行為を繰り返し行うことで、ジョイント２が目標角度に近付くとともに、ジョイント１は意図層７０２の発火だけで正方向に回転するようになる。
【０１０７】
このために、ジョイント２が目標姿勢となったときにジョイント１バランスがとれる姿勢で出力が最小の状態となるように、ジョイント１のネットワークが自律的に学習を行う。
【０１０８】
このように、本実施形態の制御システム７０１は、基本となるニューロン部１０１の変数入力、変数出力、発火出力を適切に結合させ、ニューロン部１０１の集合からなる各種の層において、閾値Tの初期値を互いに異なる値とするものであるが、このような構成は、コンピュータにより容易に実装することが可能である。このとき、ニューロン部１０１の結合は、共有メモリ内の同じ領域への書き込みと読み出しによって実現することが可能である。
【産業上の利用可能性】
【０１０９】
本発明によれば、神経細胞をシミュレートするニューロンに生存原理を導入し、基本構造を組み合わせることで種々の制御対象を容易に制御できるようにするのに好適な制御装置５０１、制御システム、ならびに、これをコンピュータにて実現するプログラムを提供することができる。
【図面の簡単な説明】
【０１１０】
【図１】ニューロン部の概要構成を示す説明図である。
【図２】ニューロン部の変数入力部に与える値の変化を示すグラフである。
【図３】ニューロン部の、変数出力部が出力する値xの変化を示すグラフである。
【図４】ニューロン部の変数記憶部に記憶される閾値変数Tの値の変化を示すグラフである。
【図５】本実施形態に係る制御装置の概要構成を示す説明図である。
【図６】このような、入力層や出力層の発火と制御出力値との値の変換の関係を示す説明図である。
【図７】フィードバック制御器を実現する制御システムの概要構成を示す説明図である。
【図８】学習のシミュレーションを行った結果を示すグラフである。
【図９】学習回数ごとのニューロン部の発火数を示すグラフである。
【図１０】二重倒立振子の様子を示す説明図である。
【図１１】フィードフォワード制御器を実現する制御システムの概要構成を示す説明図である。
【図１２】目標動作の様子を示すグラフである。
【図１３】本制御システムが獲得した動作を示すグラフである。
【符号の説明】
【０１１１】
１０１  ニューロン部
１０２  変数記憶部
１０３  変化部
１０４  発火部
１０５  変数入力部
１０６  変数出力部
５０１  制御装置
５０２  制御入力部
５０３  入力層
５０４  学習層
５０５  出力層
５０６  重み記憶部
５０７  更新部
５０８  制御出力部
７０１  制御システム（フィードバック制御器）
７０２  意図層
７５１  制御システム（フィードフォワード制御器）
９０１  ジョイント
９０２  ジョイント
９０６  台
９１１  フレーム
９１２  フレーム
【図１】
2008225607.tif 000003
【図２】
2008225607.tif 000004
【図３】
2008225607.tif 000005
【図４】
2008225607.tif 000006
【図５】
2008225607.tif 000007
【図６】
2008225607.tif 000008
【図７】
2008225607.tif 000009
【図８】
2008225607.tif 000010
【図９】
2008225607.tif 000011
【図１０】
2008225607.tif 000012
【図１１】
2008225607.tif 000013
【図１２】
2008225607.tif 000014
【図１３】
2008225607.tif 000015