1 運動神経のシミュレーション
ニューラルネットは今のところ知性についての研究が盛んに行なわれていますが、 運動神経のニューロンのシミュレーションはあまり行なわれていません。 sxbike で物理シミュレーションが出来るようになり、 2輪車や4輪車をシミュレーションしてきましたが、 当初の目的には人の2足歩行のシミュレーションも含まれていました。 2003年の8月頃に多少検討をしてみた結果をここに書きたいと思います。
2 この方法で2足歩行は可能か?
この方法で2足歩行の実現は可能です。 また、最もよい方法ではないかと思います。 現在のところ、左右方向の傾きを押さえ込む拘束条件を付けているので、 完全に自立でバランスを取っているわけでもなく、 ちょっと怪しいのですが、それらしい歩き姿を見せてくれます。 また、運動の自発的な最適化は出来ず、手動で合わせ込んでいます。
この方法のメリットは、 歩きながら微妙に向きを変えるということが簡単に実現できることや、 複数の要因に同時に反応することができることです。 地面に進行方向に対して左右の勾配があると直進出来なくなりますが、 それを微妙に補正することもできます。
考えてみれば、イカの仲間に海底をいざって歩くような種類もあるのだから わりと簡単に実現できるのではないかと思います。 逆に、そのイカの神経の接続関係を調べてみると何か解るかもしれません。
例によって、この方法は何かを綿密に調べたわけではなく、 2足歩行をするためにはどう在るべきかを考えた結果です。 中でニューロンの負結合と言う物を使っているのですが、 まあどうせ、実用になれば実物のことは関係ないと思っていたのですが、 調べてみたら実在していたので、後になって驚いてしまいました。
ただ、今の方法では学習が出来ません。それはどういうことかと言えば、 何か荷物を持たせたりしたらすぐにこけたり、全く歩けなくなったりする と言うことです。 2003年8月に学習の方法を検討する段階で詰まってしまって 放置状態になっています。
3 方法
ニューロンのシナプスには正結合と負結合が在ることが知られています。 この負結合をループさせると発振します。 おおざっぱに言えば、この発振で足を動かし歩かそうという方法です。 また、発振回路は右半身用、左半身用の2個を用意して、 お互いに同期をとらせています。
発振には次の条件が必要です。
条件1は一般的なニューロンの条件です。 条件2を歩行のスイッチに用いることが出来ます。 また、入力レベルをアナログ的に調整できるのでこのオフセット入力の レベルを左右で変えると進行方向が変化します。 ニューロンは3個以上なので、今回は3個で作ってみました。 3個在るので次のようなステートが表れます。
state 1 2 3 4 5 6 s1 1 1 1 -1 -1 -1 s2 -1 -1 1 1 1 -1 s3 1 -1 -1 -1 1 1
ステートマシーンニューロンは s1、s2、s3 です。 ステートは全部で6ステート表れます。
町を歩きながら人が歩くのにいったい何ステートかかっているのかを 観察してみたことが有るのですが、この6ステートであっているようでした。 また、行進曲は2拍子だし、ワルツのように足さばきに関係している曲は 3拍子なので、6ステートと言うのは正しい可能性が高いと思います。 この3個のニューロンから信号を引き出し、 筋肉を直接動かすニューロンに接続させます。接続のシナプスは 正結合も負結合もまた、複数結合も必要でした。
右半身、左半身の同期は、同じ位置関係のニューロン(例えば s1)同士を、 お互いに負結合させることで実現できます。
出力用のニューロンから信号を取り出し、物理シュミレーションに渡して、 トラス構造で作った人形を歩かすことが出来ました。
歩く様子は同時に地面から両足が離れることはないのですが、 それらしい動きを見せてくれました。ノシノシというような歩きかたでした。
進行方向を変えるためにオフセット入力を変化させると、 ステートマシーンの振幅デューティーが微妙に変化してそれが結果として 向きを変えることにつながるようです。片半身のデューティーが変化すると 発振周波数が遅くなるのですが、それでも同期はとり続けられていています。
ちなみにループ内のニューロンの数を増やしていくとデューティーが1/2から ずれてきます。そうなると正負の結合でステートを表現しにくくなります。
転ばなくするためのフィードバックは複数用意することが出来ます。 現状では、前後の傾きをジャイロ的に検出して歩き方を変えるようになっている のですが、それではどうもタイミングが遅くて、ちょっとした段差に つまずいてこけてしまいます。 今の考えでは、足の裏のつま先とかかとに圧力センサーをつける方法が 最もよいのではないかと思っています。
4 学習方法の考察
基本的な動作はやはり手動で作る必要が有るようです。 それ以降の負荷や筋肉の強さに応じた出力の調整は自動で行ないたいものです。 そこで、筋肉の長さをモニターして出力ニューロンにフィードバックする 機能を付けて、出力強度を少しずつ変化させる機能を付けてみましたが、 意識的に立ち止まったり、こけたりしたときにもその機能が働いてしまい、 最適値から徐々にずれていってしまいます。
学習する期間を制限する「気分」と言うような条件が必要ではないかと 考えています。 実際の人間でも学習には気分が必要なので、やはり必要なのだと思うのですが、 歩行のような結構プリミティブな部分でも関係があると言うのは意外です。
5 オフトピ
ここに出てきたニューロンの負結合と言う物はどうも脳の発生のある段階でしか 発生しないらしいです。それで、現実社会で歩行困難な方がいますが、 その様な方はその段階を逃してしまったと言えるのかもしれません。 そこで、あとからリハビリ(?)として学習しようとする場合は、 この発生段階の状況を脳の中に作ってやればいいのではないかと 無責任にも考えてしまいます。
また、学習方法の考察で実は外部入力からこのループを発生させる実験を してみたことがあります。 その時は、「気分」としてパラメーターを学習しやすい状態にして、 外部から筋肉を動かしてやると、 (バックプロパゲーションはニューロン回りのイオン濃度で伝播) その信号はステートマシンを発振させることが出来ました。 ただ、この実験ではいつも同じ「気分」なので、筋肉の動きを止めると、 その止まった状態を学習してしまいます。
リハビリには「気分」が大変重要なのではないかと思います。
6 ニューロン構造の予測 wrote 2006.7.28
偶然に部屋に迷い込んだカナブンがいたので、これを観察てみました。 その結果から、昆虫の足の動きと人の手足の動きの違いをもとにして、 人の神経の構造を推測します。
6-1 ニューロン群の予測
観察したカナブンは弱っていて足の動きが極端に遅かったのですが、 そのため、その動きの時間変化についても観察することができました。 その動きは
x=1-exp(-t)
という形の飽和関数的な動きをしていました。x が位置で t は時間です。 この式はCプログラムで
for (;;) { t+=dt; x+=(1-x)*a*dt; }
としたときの t と x をプロットしたグラフに似たものになります。 弱っていない昆虫においてもこのようなタイプの動きをしているという 覚えがあります。また google で動画を探したのですが 人の腕のような構造を持ったカマキリの腕も飽和関数的な動きをするようです。 ちなみに、人は普段はこのような動かし方はしません。
筋肉が発生させる力とニューロンの活性化の関係は 手元にあった「ニューロコンピュータ 1989 ISBN4-87408-308-0」という本によれば 「1つのニューロンが複数の筋繊維を司っており常に同時に収縮して 運動制御の基本単位になっており、繊細な動きをする筋肉では司る筋繊維が 少なくなる」と書かれています。 つまり、力の調整は活性化させるニューロンの数を調整することで行なわれ、 また、最大筋力が同じ筋肉どうしでは繊細な動きをする方が ニューロンの数が多いと言うことのようです。 これが昆虫にも当てはまる内容なのかまでは書いてありませんが、 ここでは当てはまると仮定します。
本の記述と観察の結果から昆虫の運動ニューロンの構造を予測すると、 ある筋肉には複数の運動ニューロンが接続されており それらは異なる活性化スレッショルドをもっていて、 ある1つの前段ニューロンのON/OFF値入力は全運動ニューロンに均等に 接続されており、ONされると活性化スレッショルドの違いで 活性化する運動ニューロンの数が徐々に増えていき、その結果、 筋肉は徐々に力を増していくという仮説が立ちます。
図6-1 昆虫の神経系
スレッショルドの分布が全域にわたって均等であれば、 この構造はコンピューターシミュレーション的には 複数のニューロン(図6-1においては筋肉に接続している4個)を1つにまとめて、 前Cプログラムの形式で積分しその値 x を筋肉が出力する 力であるとした場合に置き換えることがでます。 スレッショルドの分布が均等でない場合は値 x を何らかの 単調増加な変換関数通せばよいといえます。
このモデルをモデルAと言うことにします。 統合したニューロン(図6-1では4個を統合)を モデルAのニューロン、あるいは単にニューロンと呼ぶことにします。
実際のニューロンを忠実に再現するところの閾値を越えると活性化する と言うモデルに比べるとモデルAはたいへん簡略化したものといえます。 しかし、実際の運動系のニューロンが力などを直線的に変化させることに注力し 最適化されているのであれば、モデルAで充分であると言えます。 また、より忠実なシミュレーションを行なうためには、まずモデルAに 非直線的な動作やノイズやディレーを加えればいいのではないかと思います。 さらに忠実なものとする場合には、モデルAのニューロンを元の複数ニューロンに 分解したモデルを作るといいのではないかと思います。
昆虫の場合では、前段ニューロンは1つであることにしていますが、 前段も同様の複数の集合体である場合も考えられます。 前述の本によれば人の神経は脊髄で一旦中継されて筋肉に出力されていると 言うことなので、これがそれに相当します。 中継場所ではあるニューロン群に前段階のニューロン群が複数のシナプスで 接続されるこのになります。 また、神経繊維の本数をへらすために何らかの重み付けが行なわれている 可能性があります。
図6-2 人間の神経系
図6-2では脊髄内で脳からきた2本の神経が4本にデコードされて筋肉に 出力されています。これは2進数をイメージしていますが、 必ずしも2進数の静的なデコーダーではなく、積分によるLPFを利用した 動的なものと、何進数かの重み付けを使っているのではないかと思います。 神経の一部が切断されたときの保証を考えると、 値が大きい方を分担するビットにおいてはn進数のnの値が大きく、 また、最初あらい解像度だったものが後に繊細になった場合に ニューロンと神経繊維の追加が簡単であることから、 小さい方を分担するビットにおいてはnは小さく2進数的な動作に近いのではないか と予想されます。 また、時間が経過して、さらに繊細になっていく過程で 下位の桁のnは大きくなっていき、ある程度の大きさになると、 最下位の桁は繰り上がり、2進数として新しい最下位の桁が 表れてくるのではないかと思います。
このような複数の桁を持った信号線を桁を意識しないで外から観察すると 一番上の桁は出力に比例するものとして確認できるけれどもそれ以下の桁は ノイズのように見えることが予測されます。
末端と脳内は同時に発達するので、 脳内において前段階や、さらに前段階にあるニューロン群との接続においては 末端の重み付けをそのまま引き継いでいる可能性が大きいと思います。 また、それらニューロン群どうしの接続においては、 数値演算的に何かの定数をかけるかのように重みの変換を行なうマトリックスが 存在しているのではないかと思います。さらに、実際のニューロンの特性として もともとある積分機能も持っていると思います。
モデルAのニューロンは、 図中のニューロン群(この図では2個のニューロンで構成)と 筋肉に接続しているニューロン(この図では4個)のニューロン群に相当します。 図では接続先の違いによってデコードの仕方が異なり、 構成するニューロンの数も異なりますが、 コンピューターシミュレーションにおいてはいずれも同様な扱い方ができます。
つぎに、人と昆虫の違いについて考えてみます。 人はつかれた場合、腕などの動きは震えた感じになります。 また、細かな部品をつかんで普段行なわないような動作で、しかも 力を入れると言うような場合でも震えてしまいます。 振動するということはどこかにフィードバック回路が入っているためですが、 それは位置のフィードバックに相当するのではないかと思います。 一方、昆虫においては意識的に力を入れるという場合を見ることはできませんが 今回のカナブンのように弱った状態を見ることができ、その場合は 人のように震えることはなく、ただ動きが遅くなるだけのようです。 このことから昆虫はフィードバック回路がないのではないかと言えます。
また、別の視点から考えると、昆虫は外骨格であり可動範囲の終端で ストッパーに相当する部分に衝突したとしても内骨格に比べて支点と ストッパーまでの距離の比が大きいのでストッパーのダメージが少なくすみます。 またコメツキムシのジャンプのようにストッパーを積極的に利用している 場合もあります。 このような形状的な理由から昆虫はフィードバック回路が必要ないのではないかと 推測できます。その利点は細胞が少なくてむと言うことではないでしょうか? しかし、そのために細かい動きができない可能性があります。 このような点において進化の袋小路に入っているのではないかとも思えます。
sxbike のニューロンシミュレーションではモデルAのニューロンを用いていますが、 これで、昆虫のようにストッパーを用いた場合と 人のようにフィードバックを用いた場合の2通りのスクリプトをかいてみて、 どちらも動かすことができました。 最初にストッパーを用いる方法で昆虫のようなものを作りうまく動いたので、 それを人に応用したのですが、 こちらはうまくバランスを取ることができませんでした。 その問題を解決するためにフィードバックを用いる方法を採用してうまく行きました。 人のシミュレーションの動画は過去にトップページにおいておきました。 (容量の関係で過去形)
6-2 ニューロン群の接続経路の予測
カナブンを引っかかりのない滑らかな机の上置いても 当然ながら歩くことができるのですが、 その足の運び方(足先の軌道)を詳しく観察すると、 上から見ると円弧を描くように動いていました。 また、それぞれの足は扇を広げるように一点から放射状にのびているのですが、 その放射状の方向を中心として前後均等に動いていました。 効率を考えると足の動きは途中の関節を利用して有効長さを変化させて、 進行方向に直線的に動かすべきなのですが、 実際は前記のように効率の悪い動きをするみたいです。 昆虫の実生活においてはカギズメを植物や岩の表面に ひっかけた状態で足を動かすので、角度によって引っ張り強さが変わるけれども 足先は直線的に動くことになります。 このため効率が悪くなることはないのではないかと推測できます。
人の足の場合は昆虫とは異なりどこかに引っかかるわけではありません。 人は途中の関節を利用して足裏を直線的に動かしています。 このことの検証はひざを少し曲げて中腰で歩いてみることでできます。 この歩き方をすると頭の地面からの高さが一定なので 足裏は直線的に動いていることが推測できます。 さらに、登り坂や下り坂も同様に歩けますが、 その場合は坂の角度にあわせて軌道を変化させていることも解ります。 また、腕を曲げたり延ばしたりする場合はとくに意識しなくても手のひらの位置が 首の付けね辺りを中心にして直線的に動きますが、 その時の動作をよく観察してみると 表現したい距離を何らかの関数で肩とひじの関節の角度に変換して、 結果としてその距離を表していることが解ると思います。 このように、 人は昆虫に比べて1段の座標変換機能が入っていることが予測されます。
ここで、人の座標変換回路の仕組みについて考察したいと思います。
この回路は入力に対して、asin() や sqrt() を組み合わせた関数の値を 出力する必要があります。 必ずしも入力の値がそのまま手の平などの位置に相当しているとは言えず、 曲がった関係を逆補正、正補正しながら最終的に目的の位置になるという 仕組みになっている可能性もあります。 しかし、任意の関数を表せればこれは補正できます。
ニューロンの仕組みにより任意の関数を表す方法は2種類考えられます。 ひとつは、電気回路で「折れ線回路」と呼ばれている方法やその発展型を ニューロンで実現する方法です。 この方法は名前から解るように入力をx、出力をyとしたときの グラフを折れ線で結び任意の関数の近似を表す方法です。 また、直線部分を何らかの方法を用いて曲線にする発展型があります。 サインマグニチュードによる方法やその変形バージョンが ニューロンに適していると思われます。
もうひとつは、脳内に身体モデルを持っていて、 つねに、それを実際の身体よりも高速に動かして座標を探りながら その結果を実際の身体に出力するという方法です。 座標を探る動作はニュートン法のように位置を前後させながら 振れ幅を小さくしていく方法がよいと思われます。 ターゲットとなる座標は時間と共に移動していきますが、 新たな座標に対してニュートン法を行なう場合、 初期値は直前の場所を用いることができるので高速に収束させることができます。 この方法はフィードバック回路を形成する必要がありますが、 そのために機能不全が起こると発振することになります。 その発振の特徴としては、周波数は普段の動作よりも少し速い程度で、 また、例えば腕の場合は肩とひじと言うように2箇所に出力されているので、 その2関節の動きは同調したものになります。 その結果、速く手を回すような動きが表れることが予測されます。 この動きは遠い記憶によればある政治事件で証人喚問に立たされた方が プレッシャーのあまりにサインができなくなった時の腕の動きを思い出させます。
図6-3 二次元上における腕のモデル
次に具体的なニューロンの接続を考えてみます。 図6-3のような二次元上における腕のモデルにおいて、 手の位置を座標(x,y)に移動させるときに必要な角度αとβの値を割り出す方法を 考えます。実際の腕の動きの感覚としては、 支点と手の距離(r)と、手の角度(θ=α-β/2)の極座標系で制御されていて その上の制御層として(x,y)の直交座標系があるような感じがしますが、 ここでは説明のために直交座標から直接、αとβの角度に変換しています。
図6-4 モデルAのニューロンを用いた座標変換器(1)
図6-4において、丸に点々の印はモデルAのニューロンを表します。 これ一つで複数ニューロンの集合を表し、1つの値を保持します。 また、その印の上に書いてある演算名はモデルAのニューロンの入力部分に おける演算を表しています。演算はシナプスの重み付けとマトリックスによって 行なわれます。演算名「^2」は二乗を表しています。 「asin(sqrt())」は x を入力として y=asin(sqrt(x)) の値を出力します。 addでは単純にたしあわせるわけではなく定数をかけた後にたしあわせます。 また、この図の中の線は複数の神経繊維を束ねたバス状のものです。
図6-5 モデルAのニューロンを用いた座標変換器(2)
図6-5は黄色い部分が入力で緑の部分が出力になっています。 全体構造はフィードバック系になっていて出力される値を元に手の座標を計算して その値と入力値を比較して差分をまた、出力される値に加算しています。 ループになっているので発振する可能性があるのですが、 変換回路における位相ずれが180度以上になる周波数では オープンループのゲインがマイナスになっていれば発振することはありません。 何か精神的ストレスで発振すると言うことは、 正常時は発振ぎりぎりにゲインがコントロールされている可能性もあります。 こうすることにより、 回路的にぎりぎりの高速度で演算することができるようになります。
座標変換回路1(図6-4)と 座標変換回路2(図6-5)のそれぞれの利点を上げます。 まず、回路1は回路2に比べて発振せずに しかも回路が簡単であるというメリットがあります。 一方、回路2は回路中に直接外界の物理量に対応、比例した値が組み込まれており、 高速に外界の変化に対応できると言うメリットがあります。 例えば、手に棒をもって仮想的な腕がのびた場合は図6-5のうち、 βに出力されている積分機の次についている sin cos のニューロンの出力を 棒の長さに比例した値だけ大きくすることで対応できます。 この間に乗算回路を挿入しておけば即座に長さの変化に対応できるようになります。 一方、回路1で同様に対応しようとする場合、 関数が持っている曲線の形そのものを変える必要があり、 また、回路2のように一部に新たな回路を挿入して対応することはできません。
前にトップページにノートPCの様々な大きさのキーボードに 10個程度のキーに触るだけで対応ができると言う話を書きましたが、 それはこの回路2のおかげなのかもしれません。
2種類の方法を書きましたが、実際の接続は同じ動作でも どちらの方法も採用されていて、 速度によって使い分けているという可能性があります。
この論理では手に棒をもってその先端を直線的に自分のからだから 遠ざかるように動かそうとした場合、ゆっくりでは直線的に動かせますが、 ある程度高速に動かそうとすると直線ではなくなり、 また、その遷移時の腕の速度はプレッシャーなどで手が震えた時の 腕の速度とほぼ同じか少し遅い程度の速度であるということになります。
実際に棒をもって動かしてみると遷移する速度があることが解りました。 (震えについては解りません。)
キーボードの話と関連付けて考えることもできます。 割りとゆっくりキーを押す場合は様々な大きさの キーボードでもすぐに対応できるけれども、 速度を上げていくと、なれていないキーボードでは早い段階でタッチミスが表れて 来るということになります。また、しばらくそのキーボードを使っていると 回路1の関数の形が対応していき高速にうてるようになるといえ、 また、回路1が1つで回路2が1つの切り替えになっていると、 最速に打てるキーボードは同時には1種類しかないということになります。 現象自体は当たり前のことですが、それをうまく説明できます。
次に、この回路が脳のどの部分にあるのかを考えてみます。
生まれつき小脳を損傷している人は、なかなか歩けるようにならず、 長い時間かけて歩くことができるようになるけれども、 成長によって体格が変わってしまうと、 また歩けなくなるという話をTVで聞いたことがあります。 また、正常だった小脳が機能障害を起こすと歩けなくなったり、 腕の動きがおかしくなるけれども、全く体が動かなくなるわけではなく、 それらしい動作はできるけれども、うまく制御できなくなるそうです。
これらのことから推測すると精度が高くて汎用性が高い方が小脳にあり、 精度が低い方が大脳にあると考えられます。 つまり、回路2が小脳にあり、回路1が大脳にあるということです。 小脳の機能障害時には小脳が発生させる値が一定のバイアスとなってしまうので 必ず制御がうまく行かなくなるという可能性もあります。
また、上では高速に打てるキーボードが1種類であると言いましたが、 2種類あることを経験したことがあります。 (普段使うデスククトップ+普段使うノートPCです)この場合、 大脳に回路1が2回路分形成されているということではないかと思います。
特定の動作になれる過程は遅い動作からはじまり、 徐々に速い動作ができるようになっていきます。 この過程で、小脳の回路2が発生させる曲線を 大脳が回路1の形式でコピーするのではないかという仮説が立てられます。 成人において運動の生長曲線は飽和曲線的であるけれども、 複数個のこぶが表れると言うことを昔授業で聞いたことがあります。 このこぶは動作の新たな発見により生じるとその時に習いましたが、 小脳から大脳へのコピーによっても生ずるのかもしれません。
最後に、精神活動について考えます。 「意識」、「精神」、「魂」と言う言葉があります。 意識は魂か精神が行なうものです。 魂と精神との違いが曖昧ですが 精神は魂と意識をあわせたものであるかのようにも思えます。 つまり、ここで説明している回路は魂に当たり、 回路が行なう演算は意識に当たります。 また、回路とそれが行なう演算をあわせたものが精神に当たることになります。
進化の過程を考えてみると、最初は体を動かすために神経が発達していき、 人間にいたって意識というものが発生したとします。 (意識が最初にあってそれが体をまとったという 考え方もありますがその考え方はしません) この場合、最初にあったものは座標などの数値を表すモデルAのニューロン とそれで構成された回路です。 回路は桁と言うものを持ったデジタル的、離散的な数値で動いています。 このような回路の中に意識が発生するわけなので、 意識は複数の数値で構成されているという仮説が立ちます。
小脳で速度の遅い意識が発生してそれが大脳にコピーされ、 また、キーボードの例から推測すると、 小脳の1つの意識に対して大脳に複数のそれぞれ微妙に異なる意識が発生する という仮説も立ちます。 大脳にある大量の意識が同時に動くことにより 人間の複雑さが表れるのかもしれません。 この仮説では最初に小脳に発生する単純で遅い意識とは 何なのかという疑問が残ります。
6-3 ニューロンチャンバーの予測 wrote 2006.8.1
6-1章と6-2章でモデルAのニューロンを述べましたが、 ニューロン群の物理的な配置を述べませんでした。 上の章を書いたときは大量にあるニューロンのうち距離的に近くにあるものどうしが まとまってモデルAのニューロンを作るものと考えていました。 その構造では単体では積分演算はできても、 次のような演算ができないという問題点があります。 この計算を誘導型の計算と呼ぶことにします。
for (;;) { out_val=out_val + (in_val - out_val)*a; ; } プログラム6-1
この演算は出力値(out_val)が入力値(in_val)に漸近するように変化します。 また、入力値が高速に変化しても出力値は定数 a の値にしたがってゆっくり 動くことになります。そのためフィルター回路として働きます。 また、入力を複数用意して次のようにすると重心的なものを計算できます。 a1、a2が重量の逆数となります。
out_val=out_val + (in1_val - out_val)*a1 + (in2_val - out_val)*a2 ; プログラム6-2
この演算は sxbike のニューロンシミュレーションで、 単純なニューロンどうしの接続(積分回路)と同じぐらいの頻度で多用しています。 (実際のプログラムはこのような形のループにはなっていません。) この演算は1つのタイプAのニューロンではできませんが複数あればできるので、 そのようになっているのではないかと考えていました。 しかし、章題の「ニューロンチャンバー」と言える 比較的簡単な物理構造で実現できることに気づきました。
複数のニューロンが存在する中に液体を満たし独立した空間(チャンバー)があり、 その中のなにかの濃度がモデルAのニューロンの値となるというモデルです。 空間は細胞で出来た袋状のものか、 あるいは、1個の細胞そのものがその空間である可能性もあります。 また、液体をかき回すための構造も必要になります。 空間にはニューロンが隣接しているために電位的な変化が起きないように 調整されている可能性が大きいです。仮に電位変化が起こると、 それがニューロン電位に影響を与えてしまい歪みとなるからです。 電位を変えずに濃度を変える方法は電荷を持たない物質を移動させるか、 電荷を持っている物質の種類を入れ替える方法があります。 ニューロンに限らず細胞は電荷を持った物質を能動的に動かす機能があるそうなので、 種類を入れ替える方法をとっている可能性が高いです。 電荷を持った物質の候補としては Na+、K+、Ca2+ (カルシウムイオン、電荷が2なので2+と表現しています)がありますが、 科学的に見分けることが容易であるという理由でCa2+である可能性が高いと 思います。
この構造でプログラム6-1と同等な誘導型の計算をする方法を書きます。 この構造では入力と出力はニューロン的には接続されていません。 ニューロンの入力を濃度にデコードする部分(複数)と、 濃度をニューロンの信号にエンコードする部分(1個)が必要です。 デコードでは重み付けのあるニューロンが複数個あり、 活性化すると重み付けを持った力で目的とする濃度へ誘導していきます。 また、エンコード側はスレッショルドの違いで一番上の桁をエンコードして、 負結合でそれ以下の桁を調整すると考えられます。
また、一般的な結合(積分回路)ではデコードのニューロンが 濃度を誘導する代わりに加算していく、あるいは減算していくことで実現できます。 1つのモデルAのニューロンに複数の誘導型計算をする接続と 積分型の計算をする接続を持つことも可能です。 sxbike のシミュレーションでは実際にこのような接続をしているニューロンが 存在します。
新たなモデルAのニューロン構造を書きましたが、 これ同士の比例演算のみの結合においてはニューロンの介在が 必要ない可能性もあります。 あるチャンバーの濃度を検出してその結果に従い他のチャンバーの濃度を コントロールする機能があれば可能になります。
3通りのタイプAのニューロン(重み無しの接続、重み有の接続、チャンバー型)を 書きましたが、これらすべてコンピューターシミュレーションでは1通りの やり方で表現できます。 実のところシミュレーションで種々ためしてみた結果うまく行く ある1つの方法を正当化させるために これら3通りを考えたという方が正しいかもしれません。 その1つの方法とは、 6-1章の最初の部分にあるプログラムのように積分していく方法です。
7 座標変換装置について wrote 2015.5.3
図6−5 モデルAのニューロンを用いた座標変換装置(2)は小脳に位置するのではないかと上で書きましたが、最近の研究で脊髄にあることが解ったそうです。その研究は国立精神・神経医療研究センターの関和彦部長らによる「Modulation of spinal motor output by initial arm postures in anesthetized monkeys」という研究です。
上では2次元の例をあげましたが、3次元の場合でも同様にニュートン法で計算することが出来ます。それはたぶんたいていの最近のロボットに実装されているのではないかと思います。3次元に拡張したさい、O脚X脚を表す不定の変数が一つ残りますが、その研究はその変数の性質を用いて明らかにしたようです。
そして、小脳は何をしているのかが疑問になります。