コンテンツへスキップ

ニューロンの簡単な作り方

この日記、始めて読まれる方は、できれば最初の記事から読んでいただけると、意図がわかりやすいんですけど。ま、こんなこと、無論、強制できるわけもありませんが。

で、何でこんなことを書く気になったかというと、最初のほうで議論していた「意識する機械」について、最近また、いろいろと考え始めたからです。実は、FPGAを実際に使ってやろうということを最近仕事のほうで考えておりまして、そのノウハウは、当然、意識する機械にも応用できるわけです。意識を持つ機械、現実味を帯びてきましたね。

さて、FPGAの上位の機種には、乗算器を持つものが多いんですけど、この乗算、結構時間が掛かる上に、整数の乗算器なんですね。これは、シナプスの乗算にはあまり向かない。

一方で、FPGAのロジックエレメント、足し算引き算の機能は備わっている。もし、シナプスからニューロンに加えられる情報が、精度1ビットの浮動小数点数なら、シナプスで行う乗算は、指数部の加減算で済みますので、実装は非常に楽になります。

よく考えてみると、人間の神経、精度が1ビット程度、つまり、二倍、半分の識別しかできないものって、結構ありますよね。もちろん、これよりもはるかに精度が高い識別ができる神経もあるんですけど、そういうのには、複数の神経を割り当てればよい。

ちなみに、1ビットの加減算を行うロジックエレメントの価格は5円以下です。それぞれのシナプスに必要なビット数は、興奮の幅を±127、つまり2の7乗とすると、指数部の桁数は3ビット、符号部1ビットの計4ビット、20円、ということになります。

さて、ニューロン一つには8千のシナプスがあるのですが、チップのスピードは100MHz以上と、ニューロンの10万倍ほどありますので、ニューロン一つ、2円以下、という計算になるのですねえ。ふーむ、ニューロンの1%が興奮しているなら、140億個のニューラルネットワークの値段、3億円以下程度ですかね。

まあもちろんこれ以外のハードも必要ですから、もう少々お高いんでしょうが、一方で、専用のチップを作ると一桁安くなるという事情もあり、意識する機械、そろそろ本気で考えても良いかもしれませんね。