| 原作者 | マルクス ディーズマン、マルク=オリバー ゲヴァルティグ、アビゲイル モリソン、ハンス エッケハルト プレッサー |
|---|---|
| 開発者 | NESTイニシアチブ |
| 初回リリース | 2004年8月1日 |
| 安定版リリース | 3.3 / 2023年3月22日 |
| リポジトリ | github.com/nest/nest-simulator |
| 書かれた | C++、Python、Cython |
| オペレーティング·システム | クロスプラットフォーム |
| 利用可能 | 英語 |
| タイプ | 計算神経科学 |
| ライセンス | GPLv2 + ライセンス |
| Webサイト | ネストシミュレータ |
NEST は、大規模なニューロン ネットワークを含むスパイキング ニューラル ネットワークモデルのシミュレーション ソフトウェアです。NEST は当初 Markus Diesmann と Marc-Oliver Gewaltig によって開発され、現在は NEST Initiative によって開発および保守されています。
モデリング哲学
NESTシミュレーションは、コンピューター内で行われる電気生理学的実験のロジックに従おうとしますが、調査する 神経系は実験者によって定義される必要があるという違いがあります。
ニューラル システムは、多数のニューロンとそれらの接続によって定義されます。NEST ネットワークでは、さまざまなニューロン モデルとシナプス モデルが共存できます。任意の 2 つのニューロンは、異なるプロパティを持つ複数の接続を持つことができます。したがって、接続は一般に、重みまたは接続マトリックスではなく、隣接リストとして記述できます。
ネットワーク ダイナミクスを操作または観察するために、実験者は、実験で使用されるさまざまな機器 (測定および刺激用) を表す、いわゆるデバイスを定義できます。これらのデバイスは、データをメモリまたはファイルに書き込みます。
NEST は拡張可能であり、ニューロン、シナプス、デバイスの新しいモデルを追加できます。
例

次の例は、反復的な興奮と抑制を伴うスパースランダムネットワークにおけるスパイク活動をシミュレートするものである[1]
この図は、 50 個のニューロンのスパイク活動をラスター プロットとして示しています。時間は水平軸に沿って増加し、ニューロン ID は垂直軸に沿って増加します。各ドットは、特定の時間におけるそれぞれのニューロンのスパイクに対応します。図の下部には、ニューロンの平均発火率の ヒストグラムが表示されています。
ネスト
をインポートするネスト.raster_plotをインポートする
J_ex = 0.1 # 興奮性重み
J_in = - 0.5 # 抑制性重み
p_rate = 20000.0 # 外部ポアソン率
neuron_params = { "C_m" : 1.0 、 "tau_m" : 20.0 、 "t_ref" : 2.0 、
"E_L" : 0.0 、 "V_reset" : 0.0 、 "V_m" : 0.0 、 "V_th" : 20.0 }
# ニューロンとデバイスのパラメータを設定する
nest . SetDefaults ( "iaf_psc_delta" , neuron_params )
nest . SetDefaults ( "poisson_generator" , { "rate" : p_rate })
nest . SetDefaults ( "spike_detector" , { "withtime" : True , "withgid" : True })
# ニューロンとデバイスを作成する
nodes_ex = nest . Create ( "iaf_psc_delta" , 10000 )
nodes_in = nest . Create ( "iaf_psc_delta" , 2500 )
noise = nest . Create ( "poisson_generator" )
espikes = nest . Create ( "spike_detector" )
# シナプスモデルを構成する
nest . CopyModel ( "static_synapse" , "excitatory" , { "weight" : J_ex , "delay" : 1.5 })
nest . CopyModel ( "static_synapse" , "inhibitory" , { "weight" : J_in , "delay" : 1.5 })
# ランダム ネットを接続し、デバイスで計測します。
nest . Connect ( nodes_ex , nodes_ex + nodes_in , { "rule" : 'fixed_indegree' , "indegree" : 1000 }, "excitatory" )
nest . Connect ( nodes_in , nodes_ex + nodes_in , { "rule" : 'fixed_indegree' , "indegree" : 250 }, "inhibitory" )
nest . Connect ( noise , nodes_ex + nodes_in , syn_spec = "excitatory" )
nest . Connect ( nodes_ex [ 1 : 51 ], espikes )
# 100.ms シミュレーションします。nest.Simulate ( 100.0 )
#
結果をプロットするnest.raster_plot.from_device ( espikes , hist = True ) nest.raster_plot.show ( )
特徴
ニューロンモデル
- 異なるタイプのシナプス電流または電位を持つ積分発火モデル
- 伝導性に基づくシナプスを用いた積分発火モデル
- シングルコンパートメントホジキン・ハクスリーモデル
- 適応指数積分発火ニューロン (AdEx)
- MAT2 ニューロンモデル
ネットワークモデル
- ランダムニューラルネットワーク
- トポロジカルネットワーク
- データ駆動型ネットワークモデル
シナプスモデル
- 均一または不均一な重みと遅延を持つ静的シナプス。
- スパイクタイミング依存可塑性
- 短期可塑性(ツォディクシナプスとマルクラムシナプス)
- ドーパミンを使用した神経調節シナプス。
デバイスモデル
- スパイク検出器
- 電位、電流などを測定するマルチメーター。
- AC、DC、ステップ電流発生器
- ノイズ ジェネレータ (ポアソン、ガウス、ガンマ)
- スパイクを再生するためのスパイクジェネレータ
正確さ
- NESTはシミュレーションの高精度化を目指している[2]
- 各ニューロン モデルには適切なソルバーがあり、多くのモデルにはユニット テストがあります。
- 可能であれば、正確な積分[3]が使用される。
- デフォルトでは、スパイクはシミュレーションのタイムステップによって定義されたグリッド上に落ちます。一部のモデルでは、連続時間でのスパイク交換をサポートしています。[4]
並列および分散シミュレーション
- OpenMPまたはPOSIX スレッドを使用したマルチスレッド シミュレーションのサポート。
- ハイブリッド マルチスレッドおよび分散シミュレーションのサポート。
- 並列化は、NEST のシミュレーション カーネルによって半自動的に処理されます。
- 最大10000コアまでの超線形から線形のスケーリング。[5]
相互運用性
- INCFによって開発されたマルチシミュレータコーディネータへのインターフェース。[6]
- シミュレータに依存しないシミュレーション言語 PyNN へのインターフェース。
歴史
NESTの開発は、1993年にドイツのボーフムにあるルール大学ボーフム校とイスラエルのレホヴォトにあるワイツマン科学研究所のマルクス・ディースマンとマルク・オリバー・ゲヴァルティグによって開始されました。当時、シミュレータはSYNODと呼ばれ、シミュレーションはSLIと呼ばれるスタックベースのシミュレーション言語で定義されていました。[7]
2001 年に、ソフトウェアの名前が SYNOD から NEST に変更されました。2004 年まで、NEST は NEST Initiative の創設メンバーによって独占的に開発および使用されていました。最初の公開リリースは 2004 年の夏に登場しました。それ以来、NEST は年に 1 回か 2 回程度、定期的にリリースされています。
2007年以来、NESTはPOSIXスレッドとMPIを使用したハイブリッド並列処理をサポートしています。[5]
2008年に、スタックベースのシミュレーション言語SLIは最新のPythonインターフェースに置き換えられましたが、古いシミュレーション言語は依然として内部的に使用されています。[8] 同時に、シミュレータに依存しない仕様言語PyNNがNESTをサポートするように開発されました。[9] 2012年に、NESTイニシアティブはライセンスを独自のNESTライセンスからGNU GPL V2以降に変更しました。
ユーザーインターフェース
- NEST の主なユーザー インターフェイスは、 NEST シミュレーション カーネルを制御する Pythonパッケージである PyNEST です。PyNEST は、 Pythonとそのライブラリとの簡単な操作性とシームレスな対話を目指しています。
- PyNN は、ニューラル シミュレーション用のシミュレータに依存しない言語であり、NEST だけでなく、BRIAN、NEURON、ニューロモルフィック ハードウェアもサポートしています。
- NEST は独自のシミュレーション言語インタープリタ(SLI) も維持しており、これはPostScriptの影響を受けたシンプルなスタック指向プログラミング言語を理解します。[引用が必要]
参照
参考文献
- ^ Brunel, Nicolas (2000). 「興奮性および 抑制性スパイキングニューロンの疎結合ネットワークのダイナミクス」。Journal of Computational Neuroscience。8 ( 3 ): 183–208。doi : 10.1023 /A:1008925309027。PMID 10809012。S2CID 1849650 。
- ^ Henker, S.; Partzsch, J.; Schüffny, R. ( 2012). 「スパイキングニューラルネットワークの最新シミュレータで使用される数値手法の精度評価」。Journal of Computational Neuroscience。32 ( 2): 309–326。doi : 10.1007 /s10827-011-0353-9。PMID 21837455。S2CID 254601151 。
- ^ Rotter, Stefan ; Diesmann, Markus (1999). 「ニューロンモデリングへの応用を伴う時間不変線形システムの正確なデジタルシミュレーション」。生物学的サイバネティクス。81 (5–6): 381–402. doi :10.1007/s004220050570. PMID 10592015. S2CID 8124866.
- ^ Morrison, Abigail; Straube, Sirko; Plesser, Hans Ekkehard; Diesmann, Markus (2007). 「離散時間ニューラルネットワークシミュレーションにおける連続スパイク時間による正確なサブスレッショルド積分」。ニューラルコンピューティング。19 (1 ) : 47–79。doi :10.1162/neco.2007.19.1.47。PMID 17134317。S2CID 8517223 。
- ^ ab プレッサー、ハンス E.;エプラー、ヨッヘン M.モリソン、アビゲイル。ディーズマン、マルクス。ゲワルティグ、マーク・オリバー (2007)。 「マルチプロセッサ コンピュータのクラスタ上の大規模ニューロン ネットワークの効率的な並列シミュレーション」。Euro-Par 2007 並列処理。コンピューターサイエンスの講義ノート。 Vol. 4641。672–681 ページ。土井:10.1007/978-3-540-74466-5_71。ISBN 978-3-540-74465-8。
- ^ ユールフェルト、ミカエル;ヨース、ヨハネス。エプラー、ヨッヘン M.ドゥダニ、ニラージ。ヘリアス、モーリッツ。ポジャンス、トビアス C.バーラ、アピンダー S.ディーズマン、マルクス。ヘルグレン・コタレスキ、ジャネット。エケバーグ、オルジャン (2010)。 「MUSIC フレームワークに基づくニューロン ネットワーク シミュレーター間の実行時の相互運用性」。神経情報学。8 (1): 43-60。土井:10.1007/s12021-010-9064-z。PMC 2846392。PMID 20195795。
- ^ NEST - 脳シミュレーター(ビデオ)。Bernstein Network。2012-07-11 – YouTube経由。
- ^ エプラー、ヨッヘン M.;ヘリアス、M.ミュラー、E.ディーズマン、M.ミズーリ州ゲワルティグ (2008)。 「PyNEST: NEST シミュレーターへの便利なインターフェイス」。神経情報学のフロンティア。2 : 12.土井: 10.3389/neuro.11.012.2008。PMC 2636900。PMID 19198667。
- ^ Davison, AP; Brüderle, D.; Eppler, J.; Kremkow, J.; Muller, E.; Pecevski, D.; Perrinet, L.; Yger, P. (2009). 「PyNN: ニューロンネットワークシミュレータの共通インターフェース」. Frontiers in Neuroinformatics . 2 : 11. doi : 10.3389 /neuro.11.011.2008 . PMC 2634533. PMID 19194529.
外部リンク
- 公式サイト
- シミュレーションパッケージのリスト
- ネストシミュレーター
