意識を持った機械の詳細


目次

第1章 意識を持つ機械の可能性
  1:技術的可能性  
  2:倫理的な問題  
  3:経済的可能性  
第2章 ハードウエア     
  1:チップの選択  
  2:並列直列処理  
  3:配置及び接続  
第3章 ソフトウエア     
  1:刺激の伝達   
  2:通信アルゴリズム
  3:学習アルゴリズム
第4章 まとめ        


リ ン ク
OCN に置いたホームページ
Infoseek に置いたホームページ
楽天に置いたホームページ&日記
掲示板 : 議論のための場所 (閑散 ^-^;)
メイル : 私への密やかな連絡用。ご意見、ご注文もどうぞ


注)この文書は草稿であり、今後、改変を予定しています。
  お気づきの点がありましたら、作者にご一報下さい。

 

第1章 意識を持つ機械の可能性

最初に戻る 第2章へ 第3章へ 第4章へ

1:技術的可能性
 意識を持った機械を人工的に製造できるか、という問いに対して、人工知能の専門家にも No という人が多いことに驚きます。
 しかし、今日の生理学は、意識が超自然的現象であるという考え方に否定的で、私達が考えたり、感じたりするということは、複雑に絡み合ったニューロン(脳細胞)のネットワーク中を電気的パルスが飛び交っているに過ぎないのだと教えています。

 問題は、人間の脳が、極めて複雑だということです。
 人間の脳には 140 億個のニューロンがあり、それぞれのニューロンは 8 千のシナプス(他のニューロンとの接続部)を持つといわれています。
 この 140 億個というニューロンの数は、市井に流布している代表的数字ですが、生まれたばかりの赤ん坊は、もっと多くのニューロンを持ち、年を取るとニューロンは 50 億ほどに減少するというのが、より正確な数字です。

 それでは、人間と同じように意識を持ち、人間と同じように考える能力を持つ機械を作るためには、いくつのニューロンを準備する必要があるでしょうか。
 50 億というのがさしあたりの上限ですが、人間の脳では、複数のニューロンが同じ機能を果していると言われており、また、人のニューロンは、その 1/10 も使われていないと言われています。
 そこで、8 千の接続部を持つ 10 億個のニューロンからなるネットワークを人工的に作ることを考えましょう。
 まず、脳細胞の動作速度は数ms で、高速 CPU の命令実行速度のおよそ百万分の1です。また、ニューロンの動作をシミュレートするのに、8 千の乗算命令が必要です。まあ、他の演算も必要でしょうから、一つのニューロンあたり、1万の命令が必要であると考えると、一つの高速 CPU は 100 のニューロンを代替することができます。

 ところで、CPU の演算が必要になるのは、興奮状態にあるニューロンに対してだけであり、パルスを全く受取っていないニューロンに対しては、演算の必要はありません。
 人間の脳では、正常時には一部のニューロンのみが興奮しており、多数のニューロンが興奮しているのは、てんかんと呼ばれる病的状態においてのみです。
 CPU が計算すべきニューロンの数を推定することは困難ですが、ここでは、えいやっと、1%であると仮定します。そうすると、1つの CPU は1万のニューロンの機能を果たすことができるということになります。

 結論として、人間の脳と同等の機能を持つと思われる装置は、10 万個の CPU(または乗算器に相当する論理回路)で構成可能であるということになります。CPU ボード一つ 10 万円とすると、100 億円ほど用意すれば意識を持つ機械が作れるということになります。まあ、CPU ボードを 10 万枚も仕入れれば、もっと安く手に入るかもしれませんし、CPU の機能あたりのコストは急激に下がっていますから、数年後には、コストはこの 1/10 以下に低下するでしょう。
 一つの CPU ボードは1万個のニューロンの働きをします。ニューロン1つあたり 8 千の接続情報を持つ必要があります。接続情報としては接続先のニューロンのアドレス(10 億ですから 4 バイト)と、接続の強さ(符号付整数 2 バイト)があれば充分ですから、8000×6×10000 = 480 MB のメモリーが必要ということになります。この程度でしたら、10 万円のボードでもなんとかなるでしょう。

 注)ここでの見積りは、オーダーエスティメーションであり、一桁程度の誤差は容易に起こり得ることにご注意下さい。(例えば、興奮しているニューロンの比率1%等)

2:倫理的問題
 問題はニューラルネットの初期接続です。
 人は生まれながらにして、ある程度のニューラルネットを持っています。そのあるものは、食べたり、泣いたり、はいはいしたりといった、本能的行動能力に結びついているのですが、文法を理解するといった言語的能力も、ある程度は最初から備わっています。
 こういったニューラルネットは、ランダムな初期値から学習させることもできるでしょうし、実際の人の脳(もちろん死んだ人、できたら天才科学者)から読み取ることもできるでしょう。

 実際の人間の脳のニューラルネットを機械的に再現するというアイデアは、思考実験として、なかなか面白いものがあります。
 技術的には、ニューロンのサイズはミクロン程度ですから、染色方法を工夫することで、光学顕微鏡でも読み取ることができます。脳を、何かで固めて、ミクロン単位にスライスしながら、その全面を顕微鏡で読めば良いわけですね。また、AFM(原子間力顕微鏡)の触針のような形の電気化学的センサー等を用いて、ニューロンどうしの接続部(シナプス接合)の化合物の状態を測定することも不可能ではないはずで、実際の人間の脳を構成する、全てのニューロンの接続状態を記録することも、今日の技術水準は可能なレベルに来ていると思われます。

 倫理的にはどうでしょうか。死者の脳を取り出して解剖、分析するといったことは既に行なわれています。もちろんこれには遺族の同意が必要でしょうが、それが死者の精神を甦らせるという目的であれば、遺族の方のご理解は頂き易いのではないでしょうか。
 しかし、この技術は不老不死を実現する技術でもあります。肉体は滅びてしまうのですが、機械の脳に複製された人間の精神は、肉体を離れて、永遠に存続し得ます。もちろん、精神を持つ機械も、一定の寿命があります。しかし、ニューラルネットの接続状態は、デジタルデータとして媒体に記録し、複製することも可能です。毎日のバックアップデータを世界の各地に保存しておけば、仮に機械が破損しても、新しい機械にバックアップデータをリストアすることで、その人の精神は再び甦ることになります。
 人間の脳を再現する装置は、現在のところ、相当なコストが掛かるものと思われます。また、人間の脳のシナプス接合を全て読み取るためにも、相当な費用が掛かるでしょう。したがって、この技術ができたところで、不老不死の恩恵に与れるのは、一部の大金持ちか、権力者、ということになります。一部の人間だけが永遠の生命を持つなんて不公平だ、という議論が起こることは間違いないでしょう。

 もう一つの大きな問題は、このように再現された意識が権利を持ち得るのかという点です。ある人の意識が機械に継承されたら、その機械はその人の権利を引き継ぐことができるのでしょうか。例えば、所有権はどうなるのでしょうか。肉体の死と共に、その人の所有物は遺族に引き渡されるべきでしょうか。それとも、死者の意識が機械に引き継がれれば、その機械が死者の権利を継承すべきなのでしょうか。
 私が想像するに、おそらく、このような事態が生じれば、死者の権利は機械に継承されるべき、とされるのではないでしょうか。現在でも、様々な器具や人工臓器が人の器官の代用に使われています。ニューロンを代替する器具を使うことを特別視すべき理由はありません。あたかも義手を使うように、失われたニューロンの代替として電子回路を使用する、そんな考え方が最も自然ではないかと、私は思います。
 死者の権利を機械に継承すべきとするもう一つの理由は、死者の精神からみた権利の問題です。機械に複製された精神は、生前の精神を継承しています。死の床にあった人の意識は、気が付いたら機械の中に再現されていたという状況になります。この時、その精神から全ての権利を奪うことが許されるものでしょうか。
 また、敵国のスパイを捕らえて、その精神を機械にコピーするといった状況が生じるかもしれません。機械の中に再現された精神に一切の権利がないとすると、一旦精神を機械中に吸い取った後は、スパイの精神に対してどのような拷問を加えることもできてしまいます。
 そのような種々の点を考えれば、機械に移された人間の精神は、オリジナルの人の持つ権利を全て継承すると考えるのが妥当でしょう。

 一方、意識を持つ機械に人としての権利を認める場合にも、いくつかの問題が発生します。
 第一の問題は、同時に二つ以上のコピーを作動させることの是非です。優秀な科学者の脳を読み取ったデータは、なるべく多くの機械で同時に走らせることで、より多くの成果を生むでしょう。アインシュタインの知性を再現する機械がもしもできたとしたら、世界中の研究機関がそれを欲しがるでしょう。しかし、権利の多く(例えば、所有権)は排他的なものであり、それらの複数の意識を持つ機械が同じ権利を主張することはできません。この問題は、多少の不便は我慢することとして、一人の人物から得られた精神のコピーを二つ以上同時に作動させてはならないというルールを確立することで回避されるでしょう。

 もう一つの問題は、人間からのコピーではない、純粋に人工的に形成された意識を持つ機械の権利はどう考えるべきかという点です。このような装置の初期ニューラルネットは、ゼロからの機械的学習によって形成される場合もあるでしょうし、人間としての諸権利を持つ以前の、胎児のある成長段階の脳のニューラルネットワーク情報から形成されるかもしれないし、成人のニューラルネットワークの共通部分を見出すことによっても形成されるでしょう。
 一旦初期状態が定まれば、人間と同様の学習によって、ニューラルネットワークを複雑化することができます。また、教育のうまくいった接続情報を多数の装置にコピーして、それを更に学習させることによって、人間に対するよりもはるかに効率的な教育がなされるでしょう。
 このような機械にも権利を認めるのか、というのが第二の問題です。このような装置は大量生産が可能ですから、もしもそれら全ての機械に人間と同等の権利を認めると、特定の団体が多数の装置を支配下に置き,選挙権を主張するかもしれません。もちろん、量産するのは、彼等に都合の良い思想を持った意識を持つ機械というわけです。

 このようなことを考えると、当面は、自然人の脳をコピーした意識を持つ機械には、同時作動をワンコピーのみに限定する代りに、人と同様の権利を認め、純粋に人工的に形成された意識を持つ機械は、複数のコピーを認める代りに、一切の権利を認めず、誰かの所有物である機械とみなす、というのが一つの現実的な解であると思われます。

 もっとも、この解も過渡的な解に過ぎません。このようなやり方をしていると、意識を持つ機械間の差別問題が、遠い将来に発生するでしょう。
 同じ機械であるにもかかわらず、出生の差によって、その権利が大幅に異なるのはおかしい、という主張ですね。人間由来の意識を持つ機械は自由人として扱われるのに対し、それ以外の意識を持つ機械はモノ、あるいは奴隷として扱われるわけですから。
 AI解放同盟なんてのが結成されるのも、時間の問題ですね。

 まあ、こんな話をしていると、ディスク容量がいくらあっても足りなくなりますので(それはないだろ>作者)、ここでは倫理的な問題をできるだけ避けるため、人間からニューラルネットワークをコピーするという考えは捨てることにします。だいいち、人間のニューラルネットをそのままコピーするためには 10 億のニューロンでは多分不足でしょう。そこで、以下この文書では、機械自身が学習する方式を前提に、10 憶のニューロンの1%が興奮状態にあるニューラルネットの実現可能性について、議論を進めていきたいと思います。

3:経済的可能性
 人間と同じような意識を持つ機械は、技術的にも可能であり、倫理的にも問題の少ない道がありそうです。さて、それでは、経済的にはどうでしょうか。
 機械に百億円掛けるなら、人間を雇った方が安上がりです。しかし、人間の脳には限界がありますが、機械の脳なら、お金を掛けて CPU とメモリーを増設すれば、いくらでも賢くなります。それが大発明を生み出してくれるなら、数百億円のお金は安いものかもしれません。今後、CPU の速 度はどんどん速くなり、メモリー容量も増えるでしょうから、将来は、意識を持つ機械はもっともっと安くできるはずです。
 現在からそう遠くない、いずれかの時点で、意識を持つ機械が実用化されることは、まず間違いありません。そのような時代であっても通用する、人間や社会に対する考え方、ないしその基盤となるものを、現在の我々は考えておかねばならないのではないでしょうか。逆に、このような時代を見通して、人と社会に対する考察を深めることで、今日の我々が抱えている諸問題を解決する糸口が見えてくるのではないでしょうか。
 ともあれ、そういう機械の実現可能性が示されないことには、議論にもなりませんので、この文書では、人と同様の意識を持つ機械の実現可能性について議論を深めることにしましょう。人と社会に関する議論は、また別の文書で行ないたいと思います。

 

第2章 ハードウエア

最初に戻る 第3章へ 第4章へ


1:チップの選択
 前章では、話を簡単にするために CPU ボードでコストとスケールを見積りましたが、ニューラルネットで扱う信号は、CPU の扱う数値に比べて非常に粗く、これをそのまま CPU で処理することは不経済と考えられます。
 最近、ユーザレベル(フィールド)でプログラム可能なゲートアレー(FPGA)の大規模なものが発売され、DSP(デジタルシグナルプロセッサ:高速な CPU と思って頂いてもそれほど間違いではありません)を FPGA で構成することが行なわれるようになってきました。これを使えば、任意の精度を表現する数値データを扱うシステムを、無駄なく構成することが可能になります。

 例えばザイリンクス Virtex-II シリーズの 2V8000 というチップは 168 個の 18 bit X 18 bit の乗算器を一つのチップの中に形成することが可能です。
 このカタログには、pro というシリーズも乗っていて、最上位の 2VP125 というチップは 556 個の 18X18 乗算器を構成可能とされています。しかし、私が展示会でザイリンクスの技術者に話を聞いたところでは、pro シリーズはまだ市販されていない様子でしたので、さしあたり、2V8000 で考えておくことにしましょう。
 ちなみに、2V8000 のサンプル価格は、「ざっくり言って百万円」ということでした。

 さて、ニューロンで扱う信号を、4ビットの符号付整数と、4ビットの指数部で表したらどうでしょうか。

 ここで議論しているようなニューラルネットを実装する際、最も負荷の掛る部分は乗算器なんですけど、その複雑さは、大雑把に言って、桁数の二乗に比例します。
 2V8000は、18 ビットの整数乗算器を 168 個内蔵できます。整数部が4ビットの乗算であれば、乗算器の規模は 18 ビットどうしの乗算器の 1/20 程度に収まるはずで、その他の部分も含めて、3000 程度のシナプス接続を一つのチップで並列処理できることになります。(人間のニューロンの 1/3 分ほどですね。)

 人間のニューロンが数ミリ秒で信号処理しているのに対し、このチップの処理速度は 200 MHz、すなわち乗算に必要な時間は5ナノ秒ですから、およそ百万倍の速度です。一度に可能な乗算の数は、人間のニューロンの 1/3 ですから、2V8000 チップ一つあたり 30 万ほどのニューロンの機能を果たせる計算です。まあ、ここでは、余裕をみて、20 万(更に余裕をみて 10 万)ということにしておきましょう。

 さて、意識を持つ機械を作るためには 10 億のニューロンが必要であり、その内、計算が必要なニューロンは、1%の1千万ニューロンであると仮定すると、必要なチップの数は 50 個(余裕をみて百個)ということになります。チップ一つ百万円とすると、意識を持つ機械を作るのに必要なコストは5千万円(余裕をみて1億円)というソロバンになります。

 以下の議論を進めるために、具体的な数値を一つ決めておきましょう。

 それぞれのチップは、1024 個のニューロンシミュレータを持ち、それぞれのシミュレータは入出力を一つずつ順に処理するものとします(シミュレータ内部での並列演算は行なわない)。2V8000は、18 ビットの整数乗算器を 168 個内蔵できますので、整数部が4ビットであれば、この 20 倍の 3360 個の乗算器を内蔵できる計算です。乗算は、ニューロンをシミュレートする演算の大きな部分ですが、それ以外の計算機能も必要ですので、この 1/3 の 1024 個のニューロンシミュレータを一つのチップに収めると考えます。
 それぞれのシミュレータが 128 X 128 個のニューロンを代替することができるものと仮定します。ここで、最初の 128 は、人間のニューロンとシリコンチップの速度差によるもの、後の 128 は活動しているニューロンの比率です。後者は、もしかするともっと少ない数値かもしれませんし、チップに 1024 個ものニューロンシミュレータを乗せることが難しいかもしれませんから、この数値はあくまで参考であり、1〜2桁の誤差がある得るものです。
 この場合には、チップ1つあたり 1678 万個ほどのニューロンをシミュレートできますので、10 憶のニューロンからなるネットワークを構成するために必要なチップの数は約 60 個ということになります(64 個のチップを使うことを前提とします)。
 チップ1つあたりが受け持つニューロン数が多くなりますと,接続情報の記憶領域がそれだけ余計に必要になります。ニューロン十万個の接続情報の記憶に 480MB 必要でしたから,ニューロン 1678 万個の接続情報の記憶には 80GB のメモリーが必要となります。これは、全てを半導体で構成すると,たとえば、128MB 17,800 円のメモリーを用いた場合 1120 万という計算になりますが、ハードディスクを用いた仮想記憶を採用すれば、10 万円以下での構成もできるでしょう。これに関しては、速度とコストの兼ね合いで決める必要があるでしょう。

2:並列直列処理
 人間の脳を構成するニューラルネットは、多数のニューロンが並列で動作することにより、個々のニューロンが低速であるにもかかわらず、脳全体の情報処理能力は非常に大きなものになっています。
 シリコンチップでニューラルネットを構成する場合、これをそのまま真似て、それぞれのチップは単一のニューロンをシミュレートするというアプローチも取り得ます。「ニューロチップ」等と呼ばれて開発されているものがそうですね。(一例
 完全な並列処理は、画像処理等、全てのニューロンが同時に活動するタイプの情報処理には適すると思われますが、人間の脳は、ごく一部が活動しているに過ぎず、大部分のニューロンは沈黙しています。これをそのままシリコンに置きかえるのでは、無駄が多すぎるのではないかと思います。

 電子回路は、人間の脳のニューロンに比べ、128 倍(ニューロンの8千の乗算器の各々を百万倍の速度で代替)ほどの高速処理が可能です。したがって、一つの素子で、複数のニューロンの情報処理を行うのが効率的でしょう。
 もちろん、人間の脳と同じ働きをさせるには数十億のニューロンがあるため、一つの素子が百のニューロンを置き換えたとしても、多数の電子素子を並べることが必須になります。

 多数のシリコン素子を並べて並列に動作させつつ、個々の素子は多数のニューロンの情報処理を行う場合、作動しているニューロンを全ての素子に均等に割り当てることにより、並列処理に伴う無駄を最小限に押さえることができます。
 このようにすれば、ニューロンの1%のみが活動している場合、ニューロンの百倍の速度を持つ素子は、1万のニューロンと同等の機能を果たすことができます。

 作動しているニューロンを全ての素子に均等に割り当てるには、どのようにすれば良いでしょうか。
 このための第一の方法は、各素子の負荷を計測し、負荷が均等になるように、各素子が担当するニューロンを入れ換える、というものです。
 もう一つの方法は、学習の過程において、各素子への負荷の集中を負の評価として与えることです。ある素子に負荷が集中した場合、その素子に入力されるシナプス接合の重み係数を減らす働きを、学習アルゴリズムの中に組み込むことで、その素子が担当するニューロンの活動を抑制することができます。

  3:配置及び接続
 ニューラルネットは、層状の配置がよく知られています。
 この方法は、ニューロンをいくつかの層状に配置し(代表的には3層)、層内のニューロンどうしは接続せず、個々のニューロンは、下層の全てのニューロンから信号を受け、上層の全てのニューロンに信号を送ります。最下層の下側には感覚受容器や他のニューラルネットからの入力部が並び、最上層の上側には出力(例えば筋肉なり、他のニューラルネットの入力)が並びます。
 人間のニューラルネットにも、このような層状の配置が各所に見られます。しかし、人間の脳のニューラルネット全てが層状に配置されているわけではなく、ランダムな接続もできるようにしておく必要があると思われます。

 10 憶のニューロンをネットワーク状に接続する、最も簡単な方法は、それぞれのニューロンを単一のバスに接続することです。しかし、一つのバスは、同時に一つの情報伝達しかできませんので、単一のバスを 10 憶のニューロン間の情報伝達全てで共有すると、バスによる情報伝達が速度を制約することになります。そこで、複数のバスを用いる接続方法、具体的には、ニューロンどうしをN次元に格子状接続することを考えます。

 接続の具体的な方法は、チップの内部であればシリコン上に形成した配線、同じプリント基板(ボード)上のチップの間であればプリント配線、同じボックス内部の間であれば ISA バスや PCI バスのようなコネクタによる接続が可能であり、異なるボックスに納められたチップ間であれば同軸ケーブルや光ケーブルを用いることが可能です。これらの種々の情報伝達手段は、それぞれに速度もインターフェースも異なるため、異なるバスとすることが効果的です。
 
 具体的には、一つのチップの中の 1024 個のニューロンシミュレータを 32X32 の2次元接続するものとします。それぞれのニューロンシミュレータには1ビットのユーザIOを割当て、これを用いて他のチップに置かれたニューロンシミュレータとの同期シリアル通信を行なうものとします。
 一つのニューロンシミュレータが受け持つ 128X128 個のニューロンの信号入出力は、全てそのシミュレータが持つIOチャネルを用いて通信することになります。一般にシリアル通信の速度はそれほど速くなく、それぞれのニューロンシミュレータが 16384 個ものニューロンをシミュレートすることを考えると、チップ間の通信がボトルネックになるのではないかとの危惧を抱かれるかもしれませんが、ニューロンシミュレータが個々のニューロンをシミュレートするためには、8000 回の乗算を必要としますので、乗算一回あたりビットの転送しかできない場合でも、ニューロン1つあたり8キロビットの転送が、外部のチップに置かれたニューロンシミュレータとの間でできることになります。
 そうは言っても、ニューラルネットの形成は、ランダムになされますので、チップ間の転送速度がボトルネックになる危険は常にあります。この問題を抑制するためには、個々のニューロンシミュレータの転送負荷を監視して、これが限界に近付いた場合は負の評価を与えるように学習アルゴリズムを組むことが効果的ではないかと思います。
 一つのボードには、8個のチップを搭載するものとし、8枚のボードを重ねてコネクタで接続します。チップ間の接続は 8X8 の2次元接続ができれば良いのですが、チップのIO端子の数が 1108 本と限られていますので、時分割などの複雑な処理を行なわない限り、その全てを一つのバスに接続するしかありません。ここでは、全てのチップ(64 個)を一つのバスに接続するものとします。
 
 結論として、一つのニューロンシミュレータは 16384 個のニューロンをシミュレートし、一つのチップには 32X32 の2次元接続された 1024 個のニューロンシミュレータを納め、64 個のチップを外部配線のバスで接続するという形で、1,073,741,824 個、約 10 憶のニューロンを接続することとします。

 ニューロンシミュレータをN次元の格子状に接続した場合、共通するバスを持つシミュレータ間の通信は、その共通するバスを用いて行うことができますが、共通するバスを持たないシミュレータ間で通信をしようとすれば、他のニューロンシミュレータに転送を依頼する必要があります。このようなやり方は、シミュレータに余分な負荷をかけ、一つの通信が複数のバスを占有するという問題がありますので、ニューロン間の接続は、共通するバスを持つニューロン間に限定することとします。このような制約をかけても、いくつかのニューロンを経由することで、遅れは生じるものの、任意のニューロン間での信号の伝達が可能です。
 

第3章 ソフトウエア

最初に戻る 第2章へ 第4章へ


1:刺激の伝達
 ニューロンの一つの機能は刺激の伝達です。
 ニューロンは複数の他のニューロンの出力に、それぞれ異なる係数(正または負)を掛けて足し合わせ、これをS字関数(シグモイド関数)によりおおよその二値信号に変換して、これを複数の他のニューロンに伝達します。
 乗算は、掛け合わされる一方の値が一定であれば、より簡単な計算となりますので、受け手の係数の乗算を送り手側で行なうのが効率的と思われます。この場合、それぞれのニューロンの刺激伝達演算は以下のようになります。
 1. 全ての入力信号を加算し、
 2. シグモイド関数演算を行ない
 3. 個々の出力先について
  3.1 それぞれの入力係数を掛け、
  3.2 出力先ニューロンに送信する
 このうち、1 の、入力信号の加算は、受信演算時に行なえば良いですね。(メモリーも節約できて)
 
 ひとたび興奮したニューロンは、一定時間、入力をブロックします。このためには、個々のニューロンの興奮状態をローパスフィルタに与え、その出力が一定値以下になるまで、計算をスキップするようにします。

2:通信アルゴリズム
 ニューロン間の通信には、次の三つのケースが考えられます。
 1. 同じニューロンシミュレータ内部での信号伝達
 2. 同じチップ内での信号伝達
 3. 異なるチップ間での信号伝達
 
 同じニューロンシミュレータ内での信号伝達であれば、個々のニューロンシミュレータ内部のメモリーに値を保持することで、簡単に信号のやりとりができそうに思えます。しかし、一つのニューロンシミュレータが 16k 個のニューロンをシミュレートし、1つにチップに 1k 個のニューロンシミュレータを置くことを考えると、このデータはチップの外に置くというのが、簡単そうにみえます。
 しかし、大容量のメモリーをチップ外に置き,これと単一のアドレス・データバスでデータをやり取りする場合、一つのニューロンの出力が 4000 であると仮定しても、4k X 1k X 128 = 512 MB のデータを数msの間でやり取りする必要があり、例えば 100GB/s の転送能力が要求されます。これは、仮に 1ns で動作するメモリーを用いる場合も、100B の同時入出力が要求され、入出力ピンの数が不足する他、外付け回路も相当に複雑になることが予想されます。

 チップ内で保持すべき最低限のデータはどの程度でしょうか。一つのニューロンシミュレータは 128 個のニューロンをシミュレートし、一つのチップには 1k のシミュレータが置かれます。それぞれのニューロンは、出力先の 4k 個の係数を持つ必要がありますから、チップは最低でも 512MB のデータを扱う必要があります。これは、ゲートが 8M しかない 2V8000 には対応できません。
 
 結論として、現在市販されている FPLD チップ(ザイリンクスの 2V8000 を想定)では、安くて小型のニューロンシミュレータを構成することは難しいと考えられます。
 ところで、メモリーの容量は急速に増加しており、現在 512Mb、まもなく 1Gb の DRAM が実用化されようとしています。このような大容量メモリーを FPLD と同じチップに搭載することはできないのでしょうか。
 実は、このようなチップは、すでに検討されており(例えばこれ)いずれ実用化されるものと思われます。メモリー容量の増加は、おおよそ二年で二倍程度の速度ですから、このままの速度で高密度化が進めば、6年後には8倍の容量となり、その1〜2年後には 2V8000 程度のロジックも混載できるようになると期待しても良さそうです。
 ここでは、全章での議論を一部改め、十年以内に実用化できると考えられる FPLD+DRAM 混載チップを用いた意識を持つ機械を検討することと致します。
 
  3:学習アルゴリズム
 学習のアルゴリズムは、いくつか考えられています。
 1つは、逆誤差伝播法(バックプロパゲーション)と呼ばれる方法で、ニューラルネットワークの出力と教師データとの差(すなわち誤差)を、入力信号側に逆に伝えながら学習する方法です。この方法は、教師データが得られる場合には効率的に学習がなされるのですが、人間の大脳と同様な働きをさせようとすれば、教師データが存在しないため、採用することはできません。
 もう一つの古くから知られている方法は、ヘッブ則と呼ばれるもので、ニューロンの興奮に寄与したシナプス接続を強化するというものです。この現象は、現実のニューロンでも行なわれている様子で、意識を持った機械でも採用すべきものと思われますが、これだけでは、そのニューロンの興奮がシステムにとって好ましいものであったかどうかという、「評価」が何らフィードバックされません。
 評価をフィードバックする一つの方法として、大域的な評価指標を準備し、それが良いものである場合に、全てのニューロンの興奮に寄与したシナプスを強化し、悪いものである場合には、ニューロンの興奮に寄与したシナプス接続を弱めることとするのが良いのではないかと思われます。
 ニューラルネットワークの信号伝達には時間が掛りますので、ここで行なう学習の操作は、一定時間過去に遡って興奮したニューロンを対象に行なわれるべきです。このために、ニューロンの興奮を一定時間保持するローパスフィルターを用い、その出力を参照して学習処理を行なうのが良いのではないかと思われます。
 大域的な評価関数として、肉体を持つ場合は、その快適さ、本能的欲求の充足度合いを用いることができるでしょう。
 肉体を持たない意識を持つ機械の場合、大脳の生理的欲求により評価関数を与えるべきでしょう。
 今回考えているシステムの場合、特定のニューロンシミュレータの受け持つニューロンがあまり多く興奮すると処理に遅れが生じます。このような場合は、負の評価関数を、関連するニューロンに与えるべきでしょう。また、通信経路の込み具合も負の評価要素となり得ます。
 あるニューロンシミュレータが受け持つニューロンがほとんど興奮していない場合も、負の評価関数を与えます。これは、人間の感覚では「退屈」ということになります。
 謎や難しい問題が解けたとき、人間は快感を覚えます。このような快感は、ニューロンシミュレータに正の評価関数を与えるべきでしょう。このような知的快感をいかにして取り出すかということに関しては、今の所、筆者に具体的アイデアはありません。
 
 

第4章 まとめ

最初に戻る 第2章へ 第3章へ


 この文書では、意識を持つ機械の実現可能性に付いて論じた。
 
 現在の技術水準では、10 万枚の CPU ボードを接続することで意識を持つ機械が構成可能と考えられ、コストは約百億円程度と考えられる。
 数年後に、512MBのメモリーとロジックを集積した素子が実用化段階になれば、この素子を 64 個ネットワーク接続した装置により、恐らく、1億円以下で意識を持つ機械が、デスクトップサイズで実現可能と考えられる。
 
 意識を持つ機械は、将来倫理的な問題を引き起こすと思われ、事前の社会的合意が必要であろう。
 筆者の考えでは、以下の基準が当面の社会的合意になると予想される。
 1. 人間のニューラルネットワークのコピーは、死亡した人間一人に付きワンコピーのみの同時動作が許され、その機械は、死者の諸権利を継承する。
 2. 人間に由来しない意識を持つ機械は、モノとして扱われる。
 但し、この基準は、意識を持つ機械間の差別問題を引き起こす可能性が高く、更に検討が必要と思われる。

ご意見は筆者まで
最初に戻る 第1章へ 第2章へ 第3章へ