1. HOME
  2. ブログ
  3. IT技術
  4. 第3世代のニューラルネットワーク「Spiking Neural Networks」とは?

第3世代のニューラルネットワーク「Spiking Neural Networks」とは?

ニューラルネットワーク

近年、人工知能の研究が盛んですが、その研究を支えている最もメジャーな技術は『ニューラルネットワーク』です。

ニューラルネットワークとは、生物の脳の神経細胞(ニューロン)をモデル化したものをネットワーク上に接続したものを指します。

現在そのニューラルネットワークを用いた、畳み込みニューラルネットワーク(CNN)、いわゆる『ディープラーニング』が至る分野で使われるようになりました。

しかし、現在使われているニューラルネットワークのほとんどは『形式ニューロンモデル』という、神経細胞をかなり単純化したものを使っています。

ミツオカミツオカ
ニューラルネットワークについてもっと詳しく知りたい方は、以下の記事をご覧ください!

スパイキングニューラルネットワーク

形式ニューロンモデルにおいて、情報は実数値です。

例えば、画像の画素値であったり、気温であったり、それらのアナログな数値を正規化して使用します。

ニューラルネットワークより、緻密に神経細胞をモデリングしたもの

しかし、実際私たちの脳内で情報として飛び交っているのはスパイク列(電気パルス)と呼ばれる、デジタル信号なのです。

スパイク列 (参考:7.1 Spike train variability )

そこで考案されたのが、、、

スパイキングニューラルネットワーク(SNN: Spiking Neural Networks)です!

スパイキングニューラルネットワークは、通常のニューラルネットワークより、緻密に神経細胞をモデリングしたものになります。

難しい内容になるため、少し具体的に説明していきます。

生物の神経細胞

生物の神経細胞(ニューロン)は、細胞の内外で電位差があり、これを膜電位と言います。

膜電位は通常、静止膜電位と呼ばれる約-60~-70mV程度で安定しているといわれています。

この膜電位は他の神経細胞から入力があると変化し、ある一定の膜電位(しきい値)に達すると、神経細胞はスパイクを出します。

実際のイメージ



また、スパイクを生成したニューロンは不応期と呼ばれる、膜電位が変化しない期間(約3ms)に入ります。

不応期によって、スパイクが極端に密集しないようになっています。

スパイキングニューロンモデル

ここで説明した一連の神経細胞の挙動をモデル化したものを『スパイキングニューロンモデル』と言います。

一度、スパイキングニューラルネットワーク(SNN: Spiking Neural Networks)で大事なことをまとめてみたいと思います。 (黒文字部分は、通常のニューラルネットワークと同じです。)

  1. 膜電位があること
  2. しきい値があること
  3. 入出力がスパイク列であること
  4. 不応期があること
  5. 前ニューロンからの入力は加算されること
  6. シナプス結合荷重には可塑性があること

スパイキングニューラルネットワーク研究について

それでは、ややこしい数式や実装例をお伝えする前に、スパイキングニューラルネットワークは、現在どのような研究で使われているのか見ていくことにしましょう!

TrueNorth

TrueNorthは、米IBMが開発した、スパイキングニューラルネットワークをハードウェア上に組んだコンピュータチップです。

およそ100万個のニューロン、2億5600万ものシナプスをシミュレーションが可能であるといわれています。

また低電力で動作可能であることも大きな特徴で、1秒間に32×32の画像を2600枚ほど処理できます。

ここまでくると、もはや小さな脳です。

スパイキングニューラルネットワークの現状

生物の脳の構造はもっと複雑で何十億ものニューロンから構成されています。

ですのでまだまだ到底及びませんが、とても夢のある研究です。

他にも探せば研究は出てきますが、このように複雑なスパイキングニューラルネットワークはハードウェア上での脳のシミュレーション研究が盛んなようです。

また、どちらかというと現在は「脳の働きを解明しよう」という医学(生物学)的研究が盛んなようです。

もちろん工学的な研究も盛んにおこなわれていますが、まだ効率の良い学習法も確立されておらず発展途上なのです。

スパイキングニューロンモデルを実装してみる

では実際に、簡易的にシミュレーションをしてみましょう。

実装する前に、まずは必要な数式を見ていきます。

今回は、IF(integrate-and-fire)モデルと呼ばれる、シンプルなスパイキングニューロンモデルを使っていきます。

文献によって式の形がやや形が異なりますが、今回は以下の式を用います。

IFニューロンの膜電位V(t)の式

  1. Iは「前層ニューロンの集合」
  2. wは「前層ニューロンとのシナプス結合荷重」
  3. Eは「静止膜電位」
  4. S(t)は「前層ニューロンのスパイク列」

入力スパイク列を入力電流に変換する式

  1. *は「畳み込み演算子」
  2. 積の第2項は「スパイク応答関数」
  3. τは「時定数」

スパイキングニューロンモデルを実装

それでは、実際にコードを書いてシミュレーションしてみましょう。

今回は、Pythonとnumpy、matplotlibを使用しています。

シミュレーション

今回は以下のように、4つのニューロンが生成したスパイク列が1つのニューロンに入力されることを想定してシミュレーションしてみました。

実行結果は以下のようになりました。

膜電位が突出している部分がスパイクです。

このように簡易ではありますが、スパイキングニューロンを実装して膜電位が観察できました。

重みの大きさや定数を弄ってみると挙動が異なってくるので、是非色々な条件で動かしてみてください。

接続されるニューロンを増やしたり、重みに負の値を混ぜるのも面白いかと思います。

さいごに

今回は、第3世代のニューラルネットワークと呼ばれる、スパイキングニューラルネットワークを紹介しました。

少しややこしい部分もありましたが、実際にPythonを用いて挙動を確認できたので、スパイキングニューラルネットワークがどのようなものなのか何となくわかっていただけたかと思います。

まだ発展途上な研究ですが、これからの人工知能の研究をより発展させてくれる重要な技術になることでしょう。

ライトコードよりお知らせ

にゃんこ師匠にゃんこ師匠
システム開発のご相談やご依頼はこちら
ミツオカミツオカ
ライトコードの採用募集はこちら
にゃんこ師匠にゃんこ師匠
社長と一杯飲みながらお話してみたい方はこちら
ミツオカミツオカ
フリーランスエンジニア様の募集はこちら
にゃんこ師匠にゃんこ師匠
その他、お問い合わせはこちら
ミツオカミツオカ
   
お気軽にお問い合わせください!せっかくなので、別の記事もぜひ読んでいって下さいね!

一緒に働いてくれる仲間を募集しております!

ライトコードでは、仲間を募集しております!

当社のモットーは「好きなことを仕事にするエンジニア集団」「エンジニアによるエンジニアのための会社」。エンジニアであるあなたの「やってみたいこと」を全力で応援する会社です。

また、ライトコードは現在、急成長中!だからこそ、あなたにお任せしたいやりがいのあるお仕事は沢山あります。「コアメンバー」として活躍してくれる、あなたからのご応募をお待ちしております!

なお、ご応募の前に、「話しだけ聞いてみたい」「社内の雰囲気を知りたい」という方はこちらをご覧ください。

ライトコードでは一緒に働いていただける方を募集しております!

採用情報はこちら

関連記事