忍者ブログ

Memeplexes

プログラミング、3DCGとその他いろいろについて

タイムトラベルをシミュレートするニューロン

ニューロンは万能な計算ユニットであり、組み合わせれば人間にできる計算ならなんでもできます(例:人間の脳)。ここでは、演習問題として、ニューロンでタイムトラベルを計算するにはどうすればいいか考えてみましょう。


タイムトラベルのシミュレーション法

このブログではこれまでいくつかタイムトラベルのシミュレートをしてきましたが、今回用いるのは、「ランダムに動かして、タイムパラドックスを起こさなかった経路を強化する」というものです(わかりやすい刺激を求めるシミュレーション)。

はじめはタイムパラドックスを起こす経路と起こさない経路が混在しているのですが、学習によって、タイムパラドックスを起こす経路が消えていくのです――『バック・トゥ・ザ・フューチャー』で両親の出会いを邪魔したマーティー・マクフライのように。

ニューロンで実装

この学習方法は、「経路を強化」という面に注目すると、ニューロンの学習方法であるヘッブ学習に似ています(通った経路はますます通りやすくなる)。ニューロンで再現するのは簡単そうです。

ただし、これには「ノードの赤と青のどちらかしか発火しない」とか「経路が強化されると自動的に他のすべての経路は弱まる」といった、数個のニューロンで単純に再現できない面もあります(数十個のニューロンを使えば可能かもしれませんが、そうすると複雑すぎて私が理解できなくなります!)。

そこで次の図のように、ノードをニューロンとみなすのではなく、ノード2つをニューロンの状態(発火、発火していない)とみなすことにしましょう。そうすればニューロン1個や2個でも十分可能です。

このやり方なら、上記の問題は一気に解決します。「ノードの赤と青のどちらかしか発火しない」というのは「ニューロンは発火するか発火しないかどちらかしかない」ということであり、「経路が強化されると自動的に他のすべての経路は弱まる」というのは、「シナプスが強化されると自動的にニューロンが発火しない確率は小さくなる」となります。自明です。

そして学習をすすめると、次の図のように、ニューロンAが発火した時ニューロンBが発火する確率が上がり、ニューロンAが発火していない時ニューロンBが発火しない確率が上がるでしょう。

どう解釈すべきか?

これはどう解釈すればよいでしょう?「ニューロンAが発火した時ニューロンBが発火する確率が上がる」というのは単にAとBの間のシナプスが強化されたのと同じだと言えます。両者のつながりが強くなったので、AがBをより確実に発火させるようになったのです。かんたんです。

では「ニューロンAが発火していない時ニューロンBが発火しない」というのはどう解釈すればよいのでしょうか?もしかすると、ニューロンAはBが自分の言うことだけを聞いてほしいと思っていて、自分が発火していないときに勝手に発火するニューロンとは――不機嫌になった小学生のように――絶縁するのかもしれません。

これはスパイク時間依存可塑性(STDP)という現実のニューロンの学習と似ています。STDPでは、自分のあとに発火したニューロンへのつながりを強める一方、自分より先に発火するニューロンへのつながりを弱めるのです。つまり、上記の2つの解釈を合わせると、STDPが導かれるわけです。

これで十分か?

ここではニューロン2つでシミュレートすることを考えましたが、これが全てだとは思えません。たぶん、数百個、数千個のニューロンで同じようなことをすることもできるでしょう。

実際、あるニューロン集団が別のニューロン集団の活動を抑制するということは現実にあるので、ノードがニューロン集団そのものに対応させることも可能なはずです。これは複雑すぎるという理由で今回無視した可能性ですが、不可能だというわけでもないのです。

拍手[0回]

PR