JP2015529357A - スパイキングニューロンネットワーク学習のための装置および方法 - Google Patents

スパイキングニューロンネットワーク学習のための装置および方法 Download PDF

Info

Publication number
JP2015529357A
JP2015529357A JP2015527661A JP2015527661A JP2015529357A JP 2015529357 A JP2015529357 A JP 2015529357A JP 2015527661 A JP2015527661 A JP 2015527661A JP 2015527661 A JP2015527661 A JP 2015527661A JP 2015529357 A JP2015529357 A JP 2015529357A
Authority
JP
Japan
Prior art keywords
event
neuron
rule
implementations
unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2015527661A
Other languages
English (en)
Other versions
JP2015529357A5 (ja
JP6169697B2 (ja
Inventor
シンヤフシキー、オレグ
イジケビッチ、ユージーン
Original Assignee
クゥアルコム・テクノロジーズ・インコーポレイテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by クゥアルコム・テクノロジーズ・インコーポレイテッド filed Critical クゥアルコム・テクノロジーズ・インコーポレイテッド
Publication of JP2015529357A publication Critical patent/JP2015529357A/ja
Publication of JP2015529357A5 publication Critical patent/JP2015529357A5/ja
Application granted granted Critical
Publication of JP6169697B2 publication Critical patent/JP6169697B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/10Interfaces, programming languages or software development kits, e.g. for simulating neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/049Temporal neural networks, e.g. delay elements, oscillating neurons or pulsed inputs

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Biomedical Technology (AREA)
  • Molecular Biology (AREA)
  • Artificial Intelligence (AREA)
  • General Engineering & Computer Science (AREA)
  • Biophysics (AREA)
  • Mathematical Physics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Debugging And Monitoring (AREA)
  • User Interface Of Digital Computer (AREA)
  • Stored Programmes (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

人工ニューロンネットワークにおけるイベントベース更新が実装され得る。ニューロンの着信結合を更新するために内部イベントが定義され得る。内部イベントは、外部信号によっておよび/またはニューロンによって内部でトリガされ得る。ポストシナプス反応を必要とすることなしにシナプス更新を実施するために、強化信号を使用してニューロンの内部イベントをトリガし得る。所望のターゲットにニューロンの反応を送出するために外部イベントが定義され得る。外部イベントと内部イベントとは、結合更新とポストシナプスターゲットへのスパイク送出とを実現するように構成された合成イベントに組み合わせられ得る。内部イベントの範囲は、それぞれのニューロンを備え得、ネットワークの他のニューロンに拡大しない。逆に、外部イベントの範囲は、たとえば、ポストシナプススパイク送出を介して、ネットワークの他のニューロンに拡大し得る。

Description

関連出願の相互参照
[0001]本出願は、2011年9月21日に出願された「ELEMENTARY NETWORK DESCRIPTION FOR NEUROMORPHIC SYSTEMS」と題する米国特許出願第13/239,123号[代理人整理番号021672−0399229]、2011年9月21日に出願された「ELEMENTARY NETWORK DESCRIPTION FOR EFFICIENT LINK BETWEEN NEURONAL MODELS AND NEUROMORPHIC SYSTEMS」と題する米国特許出願第13/239,148号[代理人整理番号021672−0399230]、2011年9月21日に出願された「ELEMENTARY NETWORK DESCRIPTION FOR EFFICIENT MEMORY MANAGEMENT IN NEUROMORPHIC SYSTEMS」と題する米国特許出願第13/239,155号[代理人整理番号021672−0399232]、2011年9月21日に出願された「ELEMENTARY NETWORK DESCRIPTION FOR EFFICIENT IMPLEMENTATION OF EVENT-TRIGGERED PLASTICITY RULES IN NEUROMORPHIC SYSTEMS」と題する米国特許出願第13/239,163号[代理人整理番号021672−0399233]、2011年9月21日に出願された「APPARATUS AND METHOD FOR PARTIAL EVALUATION OF SYNAPTIC UPDATES BASED ON SYSTEM EVENTS」と題する米国特許出願第13/239,259号、および2011年9月21日に出願された「APPARATUS AND METHODS FOR SYNAPTIC UPDATE IN A PULSE-CODED NETWORK」と題する米国特許出願第13/239,255号、2012年7月27日に出願された「APPARATUS AND METHODS FOR GENERALIZED STATE-DEPENDENT LEARNING IN SPIKING NEURON NETWORKS」と題する米国特許出願第13/560,902号[代理人整理番号021672−0410044、顧客参照番号BC201212A]、および2012年7月27日に出願された「APPARATUS AND METHODS FOR EFFICIENT UPDATES IN SPIKING NEURON NETWORKS」と題する米国特許出願第13/560,891号[代理人整理番号021672−040936、顧客参照番号BC201221A]に関し、上記の各々は、同時係属であり、同一出願人によって所有され、その全体が参照により本明細書に組み込まれる。
著作権
[0002]本特許文献の開示の一部分は、著作権保護を受ける資料を含んでいる。著作権所有者は、米国特許商標局特許ファイルまたは記録中に現れるような、特許文献または特許開示のいずれかによる複製には異議はないが、それ以外は、いかなるすべての著作権をも所有する。
[0003]本開示は、視覚認知、モーター制御(motor control)、および/または他のニューラル計算など、ニューラル計算を実施するニューロンネットワークをシミュレートするための並列分散型コンピュータシステムに関する。
[0004]ほとんどのニューロンモデルおよびシステムは、ニューロンと呼ばれる単純なユニットのネットワークからなり、それらは、互いにおよび外界とシナプスと呼ばれる結合(connection)を介して相互作用する。そのようなニューロンシステム中の情報処理は並列に行われ得る。
[0005]ニューロンモデルのシミュレーションおよび並列実行のために最適化されうる、いくつかの既存の並列ハードウェアアーキテクチャと対応する言語とは、イベント駆動型(event-driven)ネットワーク更新を利用し得る。ニューラルネットワークにおいて学習を実装するとき、ネットワークのいくつかの態様を選択的に変更し得る(たとえば、シナプス荷重(synaptic weight)を変化させ得る)イベントを利用しながら、ネットワークの他の態様が影響を受けないように保持する(たとえば、ニューロン出力を発生せずにこれらの荷重を変更する)ことが可能であることが望ましいことがある。
[0006]しかしながら、既存の実装形態は、ネットワークのニューロンのために結合荷重適応とポストシナプス(post-synaptic)反応発生とを組み合わせるイベントを利用する。
[0007]したがって、ネットワークにおいてポストシナプス反応発生からネットワーク全体の結合適応を分離し、それによって、スパイキングニューロンネットワークにおける学習アルゴリズムのよりフレキシブルな実装形態を可能にし得る、追加の機構の顕著なニーズがある。
[0008]本技術は、とりわけ、フレキシブルなイベントベース更新を実装するための装置および方法を提供することによって、上記のニーズを満たす。
[0009]本開示の一態様は、入力結合と出力結合とを有する人工スパイキングニューロンを動作させる方法に関する。本方法は、第1のイベントを含む第1のイベントタイプの1つまたは複数のイベントを与えることを備え得る。第1のイベントは、入力結合の可塑性(plasticity)の更新を実現するように構成され得る。入力結合の可塑性は、入力結合に関連するパラメータを調整するように構成され得る。調整は時間期間によって特徴づけられ得る。本方法は、第2のイベントを含む第2のイベントタイプの1つまたは複数のイベントを与えることを備え得る。第2のイベントは、出力結合を介してニューロンの反応の送出を実現するように構成され得る。
[0010]いくつかの実装形態では、第1のイベントは、ニューロンに与えられる外部信号に基づき得る。パラメータは入力結合荷重を備え得る。
[0011]いくつかの実装形態では、入力結合は、ニューロンにフィードフォワード刺激(feed-forward stimulus)を与えるように構成され得る。ニューロンは、ターゲット結果を生成するように構成された学習プロセスに従って動作可能であり得る。外部信号は、ターゲット結果からの所定の範囲内の反応かどうかに基づいて構成された強化信号(reinforcement signal)を備え得る。
[0012]いくつかの実装形態では、フィードフォワード刺激は、複数のスパイクの個々の間の間隔を備えるスパイク間間隔(ISI:inter spike interval)によって特徴づけられる複数のスパイクを備え得る。タイ期間(tie period)は、複数のスパイクの連続する個々のスパイクについて決定されるISIを超え得る。
[0013]いくつかの実装形態では、外部信号は、第2のイベントタイプの1つまたは複数のイベントとは無関係に第1のイベントタイプの1つまたは複数のイベントを引き起こすように構成され得る。
[0014]いくつかの実装形態では、第1のイベントタイプの所与のイベントは、第1のイベントタイプの所与のイベントがトリガされた後の反応なし時間間隔を可能にするために、第2のイベントタイプの所与のイベントとは無関係にトリガされるように構成され得る。
[0015]いくつかの実装形態では、荷重の変更は可塑性時間ウィンドウによって特徴づけられ得る。反応なし時間間隔は、可塑性時間ウィンドウを超えて構成され得る。
[0016]いくつかの実装形態では、入力結合は、ニューロンにフィードフォワード刺激を与えることが可能であり得る。外部信号は、入力結合とは別個に構成されたインターフェースを介して与えられ得る。
[0017]いくつかの実装形態では、入力結合の可塑性の更新は、外部信号が与えられる時間に基づいて構成され得る。
[0018]いくつかの実装形態では、フィードフォワード刺激は少なくとも1つのスパイクを備え得る。可塑性の更新は、少なくとも1つのスパイクに関連する時間に基づいてさらに構成され得る。
[0019]いくつかの実装形態では、可塑性の更新は、入力結合を通るデータ送信の確率を調整することを備え得る。調整することは、(i)外部信号を与えることとニューロン反応時間との間の時間間隔、または(ii)少なくとも1つのスパイク反応時間の間の時間間隔、の一方または両方に基づき得る。反応時間は、外部信号が与えられる前に発生されたニューロンの反応に関連付けられ得る。
[0020]いくつかの実装形態では、可塑性の更新は、(i)外部信号を与えることとニューロン反応時間との間の時間間隔、または(ii)少なくとも1つのスパイク反応時間の間の時間間隔、の一方または両方に基づいて決定された入力結合に関連する有効性を調整することを備え得る。反応時間は、外部信号が与えられる前に発生されたニューロンの反応に関連付けられ得る。
[0021]いくつかの実装形態では、可塑性の更新は、(a)通信遅延またはb)入力結合に関連する荷重、の一方または両方を調整することを備え得る。調整することは、(i)外部信号を与えることとニューロン反応時間との間の時間間隔、または(ii)少なくとも1つのスパイク反応時間の間の時間間隔、の一方または両方に基づいて決定され得る。反応時間は、外部信号が与えられる前に発生されたニューロンの反応に関連付けられ得る。
[0022]いくつかの実装形態では、ニューロンは、状態によって特徴づけられるニューロンプロセスに従って動作するように構成され得る。状態は、それに関連付けられた反応発生しきい値を有し得る。反応発生しきい値は、反応を発生するニューロンに関連付けられ得る。反応は、ニューロンへの入力結合を介してニューロンに与えられる1つまたは複数の入力スパイクに基づき得る。反応は、反応発生しきい値を突破する状態によって特徴づけられ得る。
[0023]いくつかの実装形態では、本方法は、ニューロンに関連するメモリロケーションに状態の現在値を記憶することを備え得る。第1のイベントタイプの1つまたは複数のイベントは、入力結合にメモリロケーションへの読取り専用アクセスを与えるように構成され得る。[0024]いくつかの実装形態では、第1のイベントは、(i)タイマー満了、(ii)バッファオーバーフロー信号、または(iii)ニューロンプロセスに関連するトリガ、のうちの1つまたは複数に基づいて構成され得る。バッファは、1つまたは複数の入力スパイクの時間履歴を記憶するように構成され得る。
[0025]いくつかの実装形態では、第1のイベントタイプの1つまたは複数のイベントは、入力結合に1つまたは複数の入力スパイクの時間履歴への読取り専用アクセスを与えるように構成され得る。
[0026]いくつかの実装形態では、第1のイベントタイプの1つまたは複数のイベントは、入力結合にニューロンの反応のうちの1つまたは複数の時間履歴への読取り専用アクセスを与えるようにさらに構成され得る。
[0027]いくつかの実装形態では、第1のイベントタイプに関連する供与は、可塑性の更新が、反応を引き起こすことおよび/または反応に関連付けられることなしに実現されることが可能であるように、第2のイベントタイプとは無関係に構成され得る。
[0028]いくつかの実装形態では、本方法は、第3のイベントを含む第3のイベントタイプの1つまたは複数のイベントを与えることをさらに備え得る。第3のイベントはプレシナプス(pre-synaptic)イベントに関連付けられ得る。プレシナプスイベントは、入力結合の可塑性の更新を引き起こすことが可能であり得る。
[0029]いくつかの実装形態では、第1のイベントと第2のイベントとは、互いに同時に与えられるように構成され得る。
[0030]いくつかの実装形態では、第2のイベントは、出力結合の可塑性の更新を引き起こすことが可能であり得る。
[0031]本開示の別の態様は、人工スパイキングニューロンネットワークのための強化学習の方法に関する。本方法は、強化学習プロセスに従ってニューロンを動作させることを備え得る。強化学習プロセスは、入力信号と強化信号とに基づいて出力を発生するように構成され得る。本方法は、強化信号に基づいて、第1のイベントタイプの第1のイベントを選択的にトリガすることを備え得る。第1のイベントは、ニューロンの結合の可塑性の更新を引き起こすように構成され得る。選択的にトリガすることは、出力の発生とは無関係の可塑性の更新の適用を可能にするように構成され得る。入力信号は、ニューロンの外部の環境に関する情報を搬送し得る。
[0032]いくつかの実装形態では、結合は、ニューロンに入力を与えるように構成され得る。強化学習プロセスは、ターゲット結果を達成するように構成され得る。強化信号は、所望の結果と出力との間の不一致を特徴づける測定に基づき得る。
[0033]いくつかの実装形態では、強化信号は、所定の値の外にあるという不一致に基づいて決定された負の報酬を備え得る。
[0034]本開示のまた別の態様は、ネットワークにおいてイベントベース更新を実装するように構成されたコンピュータ化スパイキングニューロンネットワークシステムに関する。本システムは、コンピュータプログラムモジュールを実行するように構成された1つまたは複数のプロセッサを備え得る。コンピュータプログラムモジュールの実行は、1つまたは複数のプロセッサに、第1のイベントに基づいて、ネットワークの第1のスパイキングニューロンと第2のスパイキングニューロンとにそれぞれ関連する第1のインターフェースと第2のインターフェースとを更新させ得る。第1のイベントは、イベントに反応して第1のスパイキングニューロンと第2のスパイキングニューロンとによってそれぞれ発生される第1の出力と第2の出力とがないことによって特徴づけられる。
[0035]いくつかの実装形態では、コンピュータプログラムモジュールの実行は、1つまたは複数のプロセッサに、第1のスパイキングニューロンと第2のスパイキングニューロンとにそれぞれ関連する第1の出力インターフェースまたは第2の出力インターフェースの一方または両方を介して、第1の出力または第2の出力の一方または両方の送出を引き起こすように構成された第2のイベントを発生させ得る。
[0036]いくつかの実装形態では、コンピュータプログラムモジュールの実行は、1つまたは複数のプロセッサに、第1のスパイキングニューロンまたは第2のスパイキングニューロンの一方または両方のユーザ定義更新を実行するように構成されたカスタムイベントを発生させ得る。
[0037]本技術のこれらおよび他の目的、特徴、および特性、ならびに構造の関係する要素の動作方法および機能、および部分の組合せ、および製造の経済性は、本明細書の一部をそれらのすべてが形成する、添付の図面を参照しながら以下の説明および添付の特許請求の範囲を考慮するとより明らかになり、ここにおいて、同じ参照番号は、様々な図において対応する部分を指定する。ただし、図面は、例示および説明のためのものにすぎず、本技術の限界を定めるものではないことを明確に理解されたい。本明細書および特許請求の範囲において使用する「a」、「an」、および「the」の単数形は、文脈が別段に明確に規定しない限り、複数の指示対象を含む。
[0038]一実装形態によるニューラルシミュレータを示すブロック図。 [0039]一実装形態による、モデル開発ワークフローを示すブロック図。 [0040]本開示によるENI通信チャネルを備えるENDシミュレーションの一実装形態を示すブロック図。 [0041]一実装形態によるENI通信チャネルを示すブロック図。 [0042]一実装形態による、ENIにおけるコンテンツ、フォーマットおよび予想される挙動を詳述するブロック図。 [0043]一実装形態によるENI(方式)の動作モードを示す図式図。 [0044]一実装形態による、ENIチャネルを介した完全同期通信を示すブロック図。 [0045]一実装形態による、シフト(両方向にS=1)を伴う図7Aの実装形態の同期通信を示すブロック図。 [0046]一実装形態による、遅延とともに接合(junction)およびシナプスをもつ例示的な通信モデルを示すブロック図。 [0047]一実装形態による、ENIチャネルを備える通信モデルを示すブロック図。 [0048]一実装形態による、ENDエンジンの様々な例示的な通信モデルを示すブロック図。 [0049]1つまたは複数の実装形態による、スパイキングネットワークにおいてイベント駆動型更新機構をもつ有用なコンピュータ化システムを示すブロック図。 [0050]1つまたは複数の実装形態による、スパイキングネットワークにおいてイベント駆動型更新メカニズムをもつ有用な神経形態学的コンピュータ化システムを示すブロック図。 [0051]1つまたは複数の実装形態による、スパイキングネットワークにおいてイベント駆動型更新メカニズムをもつ有用な階層神経形態学的コンピュータ化システムアーキテクチャを示すブロック図。 [0052]1つまたは複数の実装形態による、スパイキングネットワークにおいてイベント駆動型更新メカニズムをもつ有用なセルタイプ神経形態学的コンピュータ化システムアーキテクチャを示すブロック図。 [0053]一実装形態による、スパイクタイミング依存可塑性(STDP:Spike−Timing Dependent Plasticity)を実装するダブレット(doublet)イベントルールを示すブロック図。 [0054]一実装形態による、通信パラメータの可能な値をリストするテーブル。 [0055]1つまたは複数の実装形態による、イベント駆動型更新とともに使用するスパイキングニューラルネットワークを示すブロック図。 [0056]1つまたは複数の実装形態による、外部でトリガされた樹状突起(dendritic)イベントによるネットワーク更新を示すプログラムリスティング。 [0057]1つまたは複数の実装形態による、内部でトリガされた樹状突起イベントによるネットワーク更新を示すプログラムリスティング。 [0058]1つまたは複数の実装形態による、軸索(axonic)イベントと樹状突起イベントとによるネットワーク更新を示すプログラムリスティング。 [0059]1つまたは複数の実装形態による、外部でトリガされたカスタムイベントによるネットワーク更新を示すプログラムリスティング。 [0060]1つまたは複数の実装形態による、内部でトリガされたカスタムイベントを使用するネットワーク更新を示すプログラムリスティング。 [0061]1つまたは複数の実装形態による、複数のトリガ条件を備えるカスタムイベントを使用するネットワーク更新を示すプログラムリスティング。 [0062]一実装形態による、スパイク送出をトリガすることなしに構成された樹状突起イベントを備えるネットワーク更新を示すプログラムリスティング。 [0063]一実装形態による、シナプスルールを実行するように構成された、カスタムイベントを使用するネットワーク更新を示すプログラムリスティング。 [0064]1つまたは複数の実装形態による、図14のネットワーク結合とともに使用するための、効率的な更新方法を示す論理フロー図。 [0065]1つまたは複数の実装形態による、図14のニューラルネットワークとともに使用するための、時間不変(time invariant)結合ダイナミクスを備える、効率的な更新方法を示す論理フロー図。 [0066]1つまたは複数の実装形態による、図14のニューラルネットワークとともに使用するための、シナプス荷重の効率的な更新を示す論理フロー図。 [0067]1つまたは複数の実装形態による、スパイキングネットワークにおいてイベント駆動型更新メカニズムを実装するように構成された感覚処理装置を示すブロック図。 [0068]一実装形態によるダブレットイベントルールの論理フローを示すブロック図。 [0069]1つまたは複数の実装形態によるENDイベントフレームワーク拡張を示すブロック図。
[0070]本明細書で開示するすべての図は、(c)著作権2013ブレイン社(Brain Corporation)である。著作権所有。
[0071]次に、当業者が本技術を実施することを可能にするために例示的な例として与えられている図面を参照しながら、本技術の実装形態について詳細に説明する。特に、以下の図および例は、本技術の範囲を単一の実装形態に限定するためのものではなく、説明または図示する要素の一部または全部の交換またはそれとの組合せによって他の実装形態が可能である。好都合な場合はいつでも、同じまたは同様の部分を指すために図面全体にわたって同じ参照番号を使用する。
[0072]これらの実装形態のいくつかの要素が、知られている構成要素を使用して部分的または完全に実装され得る場合、本技術の理解のために必要であるそのような知られている構成要素の部分のみについて説明し、そのような知られている構成要素の他の部分についての詳細な説明は、本技術を不明瞭にしないために省略する。
[0073]本明細書では、単一の構成要素を示す実装形態は限定的であると見なされるべきではなく、むしろ、本技術は、本明細書に別段に明記されていない限り、複数の同じ構成要素を含む他の実装形態を包含するものであり、その逆も同様である。
[0074]さらに、本技術は、本明細書において例として言及される構成要素に対する現在および将来の知られている等価物を包含する。
[0075]本明細書で使用する「コンピュータ」、「コンピューティングデバイス」、および「コンピュータ化デバイス」という用語は、パーソナルコンピュータ(PC)および/またはミニコンピュータ(たとえば、デスクトップ、ラップトップ、および/または他のPC)、メインフレームコンピュータ、ワークステーション、サーバ、携帯情報端末(PDA)、ハンドヘルドコンピュータ、組込みコンピュータ、プログラマブル論理デバイス、パーソナルコミュニケータ、タブレットコンピュータ、ポータブルナビゲーションエイド、J2ME搭載デバイス、セルラー電話、スマートフォン、パーソナル統合通信もしくはエンターテインメントデバイス、および/または、命令のセットを実行し、入来データ信号を処理することが可能な任意の他のデバイスのうちの1つまたは複数を含み得る。
[0076]本明細書で使用する「コンピュータプログラム」または「ソフトウェア」という用語は、機能を実施する人間および/または機械認識可能なステップの任意のシーケンスを含み得る。そのようなプログラムは、C/C++、C#、Fortran、COBOL、MATLAB(登録商標)、PASCAL、Python、アセンブリ言語、マークアップ言語(たとえば、HTML、SGML、XML、VoXML)など、ならびに共通オブジェクトリクエストブローカーアーキテクチャ(CORBA)、(J2ME、Java(登録商標) Beansを含む)Java(登録商標)、バイナリランタイム環境(たとえば、BREW)などのオブジェクト指向環境、および/または他のプログラミング言語および/または環境のうちの1つまたは複数を含む、ほぼどんなプログラミング言語または環境においてもレンダリングされ得る。
[0077]本明細書で使用する「結合」、「リンク」、「送信チャネル」、「遅延線」、「ワイヤレス」という用語は、エンティティ間の情報交換を可能にする、(物理的であるか論理的/仮想的であるかにかかわらず)任意の2つ以上のエンティティ間の因果的リンクを含み得る。
[0078]本明細書で使用する「メモリ」という用語は、デジタルデータを記憶するために適応された、任意のタイプの集積回路または他の記憶デバイスを含み得る。非限定的な例として、メモリは、ROM、PROM、EEPROM(登録商標)、DRAM、SDRAM、DDR/2 SDRAM、EDO/FPM、RLDRAM、SRAM、「フラッシュ」メモリ(たとえば、NAND/NOR)、MEMRISTORメモリ、PSRAM、および/または他のタイプのメモリのうちの1つまたは複数を含み得る。
[0079]本明細書で使用する「マイクロプロセッサ」および「デジタルプロセッサ」という用語は、概して、すべてのタイプのデジタル処理デバイスを含むように意図され得る。デジタル処理デバイスの例としては、デジタル信号プロセッサ(DSP)、縮小命令セットコンピュータ(RISC)、汎用(CISC)プロセッサ、マイクロプロセッサ、ゲートアレイ(たとえば、FPGA)、PLD、再構成可能コンピュータファブリック(RCF)、アレイプロセッサ、セキュアマイクロプロセッサ、特定用途向け集積回路(ASIC)、および/または他のデジタル処理デバイスのうちの1つまたは複数があり得る。そのようなデジタルプロセッサは単一のユニタリーICダイ上に含まれているか、または複数の構成要素にわたって分散され得る。
[0080]本明細書で使用する「イベント」、「活動電位」、「パルス」、「スパイク」、「スパイクのバースト」、および「パルス列」という用語は、概して、限定はしないが、任意のタイプのパルス信号、たとえば、信号の何らかの特性の急速な変化、たとえば、振幅、強度、位相、または周波数が、ベースライン値からより高い値またはより低い値に変化し、続いてベースライン値に急速に復帰することを指すように意図され得、単一のスパイク、スパイクのバースト、電子パルス、電位のパルス、電流のパルス、パルスおよび/またはパルスのバーストのソフトウェア表現、パルスのレイテンシまたはタイミングのソフトウェア表現、ならびに、パルス送信システムまたはメカニズムに関連する任意の他のパルスまたはパルスタイプのいずれかを指し得る。本明細書で使用する「スプネット(spnet)」という用語はスパイキングネットワークを含み得る。
[0081]システム、装置および方法を含む、本技術のいくつかの実装形態の詳細な説明が本明細書で開示される。本技術のいくつかの態様は、大規模ニューロンシステムを効率的にシミュレートすることができる、ソフトウェアおよびハードウェアで実装された並列シミュレーションエンジンアーキテクチャのコンテキストにおいて最もよく理解され得るが、本技術の実装形態は、ハードウェアとは無関係な様式でのニューロンシステムの効率的な表現のために最適化された命令セット、すなわち、基本ネットワーク記述(END:Elementary Network Description)フォーマットを実装するために使用され得る。
[0082]たとえば、いくつかの実装形態は、神経形態学的コンピュータシステムのハードウェアおよび/またはソフトウェア実装形態で展開され得る。そのような一実装形態では、画像処理システムは、プロスセティック(prosthetic)デバイスなどの埋込み適用例における使用のために適応または構成され得る、特定用途向け集積回路(「ASIC」)で実施されたプロセッサを含み得る。
[0083]本開示は、特に、イベントベース更新を実装することによってスパイキングニューロンネットワークによる学習を可能にするためのコンピュータ化装置および方法を提供する。1つまたは複数の実装形態では、ネットワークは、神経形態学的システムのための基本ネットワーク記述(END)を使用して構成され得る。いくつかの実装形態では、END記述は、イベントベース機能を実現するように構成された複数のイベントタイプを備え得る。
[0084]いくつかの実装形態では、たとえば、入力結合を変更するために(たとえば、結合のプレシナプスアクティビティに基づいてニューロンのプレシナプス可塑性ルールを使用してシナプス荷重を調整するために)、プレシナプスイベントが定義され得る。1つまたは複数の実装形態では、プレシナプスイベントは、結合を介して送出されるプレシナプス入力(たとえば、プレシナプススパイク)に基づいて構成され得る。
[0085]いくつかの実装形態では、たとえば、ニューロンの入力結合を変更するために、樹状突起(または内部)イベントが定義され得る。内部イベントは、外部信号によっておよび/またはニューロンによって内部でトリガされ得る。1つまたは複数の実装形態では、樹状突起イベントは、タイマー、ニューロンスパイキング履歴(プレシナプスおよび/またはポストシナプス)を記憶し得るバッファに関連するオーバーフローインジケータによってトリガされるか、ニューロンによって内部で生成されるか、あるいは、たとえば、強化結合を介して、外部でニューロンに与えられ得る。1つまたは複数の実装形態では、樹状突起イベントは、ニューロンによるポストシナプス反応を引き起こすのではなく、結合可塑性適応を引き起こすように構成され得る。
[0086]いくつかの実装形態では、たとえば、適切な宛先へのニューロンのポストシナプス反応の分配を引き起こすために、軸索(または送出)イベントが定義され得る。1つまたは複数の実装形態では、軸索イベントはニューロンスパイク反応プロセス(たとえば、超しきい値条件)によってトリガされ得る。いくつかの実装形態では、樹状突起イベントおよび軸索イベントは、単一の複合イベントとして互いに連続的に実装され得る
[0087]いくつかの実装形態では、内部イベントの範囲は、それぞれのニューロンを備え得、ネットワークの他のニューロンに拡大しない。逆に、外部イベントの範囲は、たとえば、ポストシナプススパイク送出を介して、ネットワークの他のニューロンに拡大し得る。
[0088]いくつかの実装形態では、たとえば、ENDのカスタムイベントルールを実装するために、カスタムイベントが定義され得る。
[0089]いくつかの実装形態では、2つ以上のカスタムイベントが定義され得る。1つまたは複数の実装形態では、これらの2つ以上のカスタムイベントは特定の名前(たとえば、イベントタグ)を備え得る。いくつかの実装形態では、結合(たとえば、シナプス)は、カスタムイベントを適切に処理するために、タグに基づいて1つまたは複数のそのようなカスタムイベントにサブスクライブするように構成され得る。
[0090]1つまたは複数の実装形態では、ネットワークによる強化学習を可能にするために樹状突起イベントが利用され得る。例として、強化入力(「樹状突起スパイク)を受信すると、ポストシナプスターゲットにポストシナプス反応を送出することなしに、ニューロンの着信シナプスの可塑性が調整され得る。その後、次いでニューロン状態が超しきい値条件に達し、所望の宛先にニューロンポストシナプス反応を送出するために軸索イベントが使用され得る。
[0091]1つまたは複数の実装形態では、樹状突起イベントと軸索イベントとは組み合わせられて、たとえば、基本神経形態学的記述(END:elementary neuromorphic description)フレームワークv 1、v2、およびv3においてたとえば使用されるにおいて使用されるポストシナプススパイクなど、合成イベントを取得し得る。
[0092]次に図1に示された例を参照すると、ニューラルシミュレータ開発環境100の一構成が詳細に図示および説明されている。この例では、ネットワーク設計、結合性拡大、監視および可視化、エンジン固有の初期化、ならびにエンジンのブロックはソフトウェアツールを備え得るが、標示されたライブラリ、高レベル記述、デバッギングテーブル、低レベル記述およびエンジン固有のデータフォーマットのブロックは、本明細書でより詳細に説明する特定のフォーマットにおけるデータ構造として実装され得る。
[0093]図1のニューラルシミュレータ開発環境は、ユーザが任意のニューラルシステムモデルを定義し、任意の計算プラットフォーム(エンジン)上でそのモデルを実行することを可能にする。ニューラルシミュレータ開発100は、いくつかのフォーマットで構成されたデータ構造を介して互いに相互作用するいくつかのソフトウェアツール(図1の透明ブロック)と、単一のコンピュータ、コンピュータクラスタ、GPU、または専用ハードウェア中に具備され得る計算エンジン104とを備え得る。いくつかの実装形態では、計算エンジン104は、コンピュータ化制御/感覚入力処理装置の一部であり得、図1の矢印102のペアを介してデータを装置の残りの部分と交換する。例として、計算エンジン104は、入力102を介して「実世界」から感覚情報を受信し、出力103を介して制御装置の任意の適切なアクチュエータ(図示せず)に、ドライバのセットを介した感覚入力への制御/処理反応を可能にするモーターコマンドを送る。
[0094]ユーザは、たとえば、Microsoft Visual Studio(登録商標)と同様のGUIネットワーク設計ツールを使用して、ニューラルシミュレータ100の所望のネットワークレイアウトを指定し得る。いくつかの実装形態では、ニューラルシミュレータは、様々な専用機能を実装するように構成された専用ライブラリを採用する。いくつかの特定のライブラリモジュールは、たとえば、「1M個のニューロンをもつ網膜+視床+V1」と手短に記述され得る。いくつかの実装形態では、ライブラリモジュールはより詳細に記述され、可塑性、ニューロンダイナミクス、皮質マイクロ回路、および/またはデフォルトパラメータに関連する他の情報のうちの1つまたは複数を定義する様々なデフォルトパラメータの初期化を(適宜に)行い得る。GUIネットワーク設計ツールは、ニューラルシミュレータ100のネットワークレイアウトを「高レベル記述」フォーマットで保存する。いくつかの実装形態では、GUIネットワーク設計ツールは、図1のライブラリ106を変更するように構成される。
[0095]ネットワークレイアウトの高レベル記述は、ライブラリ106を使用して低レベル記述(基本ネットワーク記述END)108にコンパイルされる。たとえば、高レベル記述は、皮質領域V1およびV2(図示せず)の記述を備え得、ライブラリ106に記憶された適切な結合性ルールに従ってそれらを結合することを必要とし得る。コンパイラは、ニューロンを割り振り、それらのニューロン間の結合を確立し、アセンブリ言語と同様である低レベル記述でネットワークレイアウト100を保存する。いくつかの実装形態では、コンパイラは、デバッギング中の監視および可視化ツールのための適切なテーブルを与え得る。
[0096]基本ネットワーク記述(END)表現は、図2に示されているように、シミュレータツールとハードウェアプラットフォーム実装との間の中間ボトルネック(すなわち、リンク)として働く。END表現は、基礎をなすハードウェアから開発環境を分離するアブストラクションレイヤを与える。ENDの1つの目的は、図2に示されているように、ハードウェアシミュレーションツールから、ニューラルネットワークモデルを開発するステップを分離することである。END手法は、(図1のモデルなどの)ニューラルモデルの実装を2つのステップに区分するように動作し得る。第1のステップにおいて、神経科学者が、高レベル記述言語とEND表現とを使用して様々な複雑さのニューラルモデルを作成する。第2のステップにおいて、開発者(プログラマーおよびハードウェア技術者)は、特定のハードウェア/ソフトウェアプラットフォームのためにモデル動作を適応させ、最適化するために、基礎をなす実装ブロックを変更し、適応させる。このアーキテクチャでは、ENDフォーマットは、LLVM(低レベル仮想マシン:low−level virtual machine)またはJavaバイトコードと同じサービスを実施するが、ENDフォーマットは、ニューロンシステムの並列表現と実行とのために最適化され得る。
[0097]モデルの低レベル記述は、図1に示されているように、計算エンジン104へのアップロードに好適な、エンジン固有の2進形式に変換される。計算エンジンは、以後の再アップロードのためにそれの現在の状態を同じフォーマットで保存することが可能である。バイナリデータは、計算結果のデバッギングおよび可視化ならびにシステムの監視中に、図1の監視および可視化ブロック110によって使用される。上記で説明したように、計算エンジンは、図1の矢印102によって示されるように、(ドライバによってハードウェアに接続された)センサーとアクチュエータとを介して実世界と相互作用する。
[0098]ネットワークの基本ネットワーク記述(END)は最低レベルプラットフォーム独立モデル図を備え得る。一実装形態では、そのような記述は、コンピュータプログラミング技術において通常使用される、アセンブリ言語記述と同様に構成される。ただし、多くの既存のコンピュータアセンブリ言語実装はプロセッサ依存であり得るが、END記述はハードウェアアグノスティック(hardware−agnostic)である。
[0099]END記述は、図2に示されているように、ニューラルモデルの高レベル記述とプラットフォーム固有の実装との間のプラットフォーム独立リンクとして動作し得る。図2において、ブロック210(ニューラルシミュレータ1〜3)は(NEURON、GENESIS、NESTなどの)様々なネットワーク開発ツールを示すが、ブロック220(ハードウェアプラットフォーム1〜3)は異なるハードウェア実装(たとえば、CPU、それぞれのニューラルシミュレータモデルを実行するために使用されるマルチプロセッサコンピュータ(ワークステーション、デスクトップ、サーバ、メインフレーム、ASIC、FPGA、および/または他のハードウェア実装)を示す。
[00100]END実装の一実装形態では、入力ニューラルシミュレータモデルデータは、XMLフォーマット(または任意の他の好都合な構造化データフォーマット)で与えられるか、あるいは、ニューラルシミュレーションモデルの1つまたは複数の態様を指定するのに十分である最小セットの入力データを与えることを目的として、リレーショナルデータベース標準形式で与えられ得る。ニューラルシミュレーションモジュールの所与の態様は、ニューロン、樹状突起ツリー、シナプス、ニューロンおよびシナプスクラス、可塑性ルール、ニューロンダイナミクス、および/または他の態様のうちの1つまたは複数を含み得る。入力データのこのセットは、上記の項目間の複数の関係を介して構成される。入力データのこのセットは、(i)個々のファイルが単一のデータ構造、たとえば、ニューロンを記述する、複数のファイルの集合、(ii)(圧縮され得る)単一のファイル、または(iii)階層的ディレクトリ/フォルダ/ファイル構造、またはそれらの組合せという、様々な方法で構成され得る。
[00101]いくつかの実装形態では、ネットワークシミュレーションモデルの基本(アトミック)計算ユニットは、「ユニット」と呼ばれるニューロンである。いくつかの実装形態では、ユニットはニューロンコンパートメントを備え得、そこで、ユニットは接合によってリンクされて樹状突起ツリーが形成され得、樹状突起ツリーはニューロンを形成する。これらの例では、シナプスは、あるユニットから別のユニットへの結合を備え、それにより、結合性図式を介してユニット(ノード)相互結合を記述することが可能になる。そのような図式は、必ずしも細胞体(soma)から来るシナプスを通してツリーに結合されたツリーを備えるとは限らない。
[00102]動作可能なネットワーク記述を取得するために、個々のユニット(たとえば、ニューロン、コンパートメント)と個々のシナプスとは、それのダイナミクスを支配するルールのセットに従わなければならないことがある。いくつかの実装形態では、これらのルールのいくつかは、ニューロンユニットおよび接合に適用されるクロックベースのルールを備えるが、他のルールは、イベントベースであり、シナプスに適用され得る。
[00103]例として、個々のニューロンユニットは、(i)スパイクを発火させるための条件と、(ii)スパイクが発火された後に、ユニット動的状態変数に適用され得る変更のセットとを備える、そのユニットのためのスパイク発生メカニズムを記述するルールのセットに従わなければならないことがある。同様に、個々のシナプスは、プレシナプスユニットが発火したときにシナプス上で実施されるアクションのセットと、ポストシナプスユニットが発火したときにシナプス上で実施されるアクションのセットとを決定するスパイクルールに従わなければならないことがある。
[00104]一実装形態では、計算エンジン(たとえば、図1のエンジン104)を実装するCコードを発生するためにENDフォーマットが使用され得る。本明細書ではEND1.0と呼ぶこの実装形態では、ルールの記述は、以下の例によって示されるように、任意の拡張可能な機能をもつニューロンモデルを与えるために、Cコードテンプレート中に挿入され得るコードストリングを備え得る。
[00105]END1.0は、可能なサブクラスとともにオブジェクトクラスunit_class、junction_class、synaptic_class、およびevent_ruleを備え得る、オブジェクト継承構造を実装し得る。そのようなクラスの個々のクラスは、インスタンス、すなわち、ユニット、接合、シナプス、およびルールを有し得る。
[00106]END1.0は、メソッド(更新およびスパイクルール)からデータ(ユニット、接合、シナプス)を分離するように構成され得、それによって、計算エンジン(たとえば、図1のエンジン102のリンカ(linker)112)がデータ<−−−>メソッド相互結合を実装することが可能になる。計算エンジンのいくつかの実装形態では、計算動作はデータによってグループ化され得る(たとえば、個々のシナプスについて、そのシナプスのためにアクション(ルール)の一部または全部が実行される)。たとえば、GPUハードウェアを用いた有用な、計算エンジンの他の通常使用される実装形態では、計算動作はメソッドによってグループ化され得る(たとえば、個々の更新ルールについて、その更新ルールに従わなければならない一部または全部のシナプスについての未解決の要求が実行される)。ENDは、上記の動作グルーピング構成のいずれにも等しく順調に動作するように構成され得る。
[00107]たとえば、哺乳類視覚システムなど、複雑な現実システムの大規模モデルを実装するとき、ENDフォーマットで記述されたいくつかのデータ構造がネットワークモデルリソース(メモリまたはCPU、あるいはその両方)の大部分(いくつかの実装形態では最高99%)を消費し得る。一般に「カノニカル構造(canonical structure)」と呼ばれるこれらのデータ構造の実装は、そのようなカノニカル構造をシミュレートするために最適化されたASICまたはFGPAなど、専用ハードウェアの使用から大いに恩恵を受ける。同様に、いくつかのルールおよびメソッドがCPU処理リソースの大部分を消費する(たとえば、実行するために大部分の時間を要する)いくつかの実装形態では、専用ハードウェアアクセラレータの開発がカノニカルメソッドの処理の大幅な増加をもたらし得る。異なるハードウェア実装形態は異なるメソッドを配線接続(hard-wire)することができ、それはハードウェアプラットフォームの多様性をもたらす。
[00108]END記述を用いて達成される目的のうちの1つは、任意の複雑さのニューロンモデルを記述するのに十分である最小命令セットを与えることであり得る。本明細書では、ENDフォーマットを記述する際に以下の表記法を使用する。クラスまたは型定義タイプは山括弧<...>中に入れられる。クラス(またはタイプ)内のフィールドは、以下の定義1の例に示されているように、クラス定義に対して字下げされ得る。
[00109]上記の定義において、ステートメント<unit of (unit_class)>は、以下のようにフィールド「unit_id」および「Initialization」を有するクラス「unit_class」のインスタンスの定義を示す。
<unit of (unit_class)>
unit_id
Initialization
[00110]このクラスは、ニューロンまたはコンパートメントを定義するが、原則として、あらかじめ定義されたモデル実行タイムステップ(たとえば、1ms)でモデルによって実行され得る、任意のニューラルユニットであり得る。このユニットは、モデルタイムステップのうちの個々のステップにおいて実施される動作を指定するオブジェクトユニットクラスのインスタンス化であり得る。unit_classのフィールドは以下のように定義され得る。
unit_id
は、一意のラベル、たとえば、個々のユニットを識別する番号または文字である。unit_idは、有効なidの範囲を指定するPerlまたはPHPまたはRegEx、またはMATLAB表現であり得、実際のidはモデルビルド中にリンカよって割り当てられ得る。たとえば、‘exc(1:1000)’または‘excl:excl000’。
Initialization
は、クラスの定義中のデフォルト値とは異なり得るクラスフィールドの初期値を含んでいる構造であり得る。これらの一部または全部は、unit_class中のデフォルト値を用いて宣言され、初期化され得る。
<unit_class of (unit_class)>
unit_class_id
execution_condition
update_rule
event_condition
after_event_rule
Initialization
は、ニューロンダイナミクスを指定し、ニューロン変数を割り振り、ニューラルモデルクラスに関連するスパイク処理ルール、および/または他の情報を定義する、ニューロンモデルクラスの一般的な定義を与える。クラス<unit_class>は、(オブジェクト指向プログラミングの場合のように)unit_classの別のオブジェクトから派生され得るオブジェクトである。<unit_class>オブジェクトのフィールドは以下のように定義され得る。
unit_class_id
は、オブジェクトクラスの一意の名前(ストリング)、たとえば、‘exc’または‘p23soma’または‘p4cmpitinnt3’である。これらのオブジェクト名は、たとえば、バックグラウンドプロセス中にまたはI/Oプロセス中に、ニューロンモデルによって、ユニットを指すためにベクトルの名前として使用され得る。
execution_condition
このクラスのユニットを実行すべきか否かを決定するために個々のモデル実行タイムステップで評価される条件、たとえば、‘now%10==0、または‘DA>0.1’。execution_conditionがない(このフィールドがブランクである)場合、それぞれのユニットが個々のモデルタイムステップ(すなわち、システムクロックステップサイクル)で実行され得る。ベースクラス(スーパークラス)からクラス(サブクラス)が派生され得るとき、派生クラス実行条件はベースクラス実行条件をオーバーライドする。
update_rule
は、リンカよって実行可能コードに変換されることになるコードストリングを定義する。いくつかの実装形態では、コードストリングは、たとえば、次式など、前進オイラー数値法表記法(forward Euler numerical method notation)を備え得る。
’x(t+1)=x(t)+tau*(F(x(t))).
’I+=g*(E−5); g+=tau*(−g)/5;
v+=tau*(2*(v+70)*(v+50)−u+I)/20;
u+=tau*0.1*(2*(v+70)−u);’.
[00111]いくつかの実装形態では、コードストリングは、マッピングx(t+1)=‘x(t)+tau*(f(x(t))’を指定するか、あるいはモデル実行の個々のステップで実施され得るC実行可能コード(関数またはサブルーチン)を指定する。クラスがベースクラスから派生されたとき、サブクラスのオブジェクトupdate_ruleが最初に実行され、続いてベースクラスルールが実行され得、それにより、サブクラスルール実行によるある変数の更新が可能になる。
event_condition
は、スパイクを検出するために必要とされる論理ステートメントを定義する。たとえば、‘v>30’。これは個々のクロックサイクル(モデルタイムステップ)で実行され得る。このクラスがベースクラスから派生されたとき、サブクラスのevent_conditionがベースクラスのevent_conditionに取って代わる。
after_event_rule
スパイクが検出され得るときに実行されるコード。たとえば、‘v=−65;u=u−8;’。派生サブクラスの場合、サブクラスafter_event_ruleはベースクラスのafter_event_ruleの前に実行され得る。
initialization
は、ユニットの一部または全部の変数およびパラメータの初期値を設定する。たとえば、‘float v=0;float u=0;float g_AMPA=0;’。異なるユニットクラスは、異なる数のシナプスコンダクタンスタイプ(synaptic conductance type)を有しおよび/または異なる変数名を割り当てられ得る。ビルド中に変数の一部または全部の名前を取得するためにリンカよってパースされる初期化ストリング。派生オブジェクトクラスは新しい変数を追加し得る。派生サブクラスの場合、ベースクラスの初期化が最初に実行され、次いで、デフォルトパラメータのいくつかを変更し得るように、後でこの初期化が実行され得る。この初期化は、ベースクラスから継承されたデフォルトパラメータ値を変更し得る。例として、初期化ストリング‘float g_NMDA=1;g_AMPA=1’は、新しい変数g_NMDAを作成し、既存の変数g_AMPAの値をリセットする。
[00112]同様に、上記と同じ方法を使用して接合およびシナプスが記述され得る。
<junction of (junction_class)>
unit_idl
unit_id2
initialization
は、ユニットのペア間の結合性を与えるニューロンモデルクラスの一般的な定義を与える。フィールドjunction_classは、親オブジェクトクラスの名前、たとえば、「gap_junction」または「dendritic_tree」を参照する。クラスフィールドは以下の通りであり得る。
unit_idl, unit_id2
は、2つの結合されたニューロンユニットのidを指定する。
initialization
[00113]パラメータと変数とのための初期値を設定する。クラスjunction_classは、サブクラス<junction_class of (junction_class)>を定義するためのベースとして使用され得、以下のように宣言され得る。
<junction_class of (junction_class)>
junction_class_id
execution_condition
unit_class_1
unit_class_2
update_rule
initialization
ここで、
junction_class_id
は、別のクラスから派生され得るクラスを指定する一意の識別ラベルである。
execution_condition
[00114]このクラスのユニットを実行すべきか否かを決定するために個々のモデル実行タイムステップで評価される条件、たとえば、‘now%10==0、または‘DA>0.1’。execution_conditionがない(このフィールドがブランクである)場合、それぞれのユニットが個々のモデルタイムステップで実行され得る。ベースクラス(スーパークラス)からクラス(サブクラス)が派生されたとき、派生クラス実行条件はベースクラス実行条件をオーバーライドする。
unit_class_1
unit_1のクラス識別子、
unit_class_2
unit_2のクラス識別子。省略された場合、接合は一部または全部のユニットクラスに適用されると仮定され得る。
update_rule
は、リンカよって実行可能コードに変換されることになるコードストリングを定義する。いくつかの実装形態では、コードストリングは、たとえば、次式など、前進オイラー数値法表記法を備え得る。
’ g_2tol*(V2−V1), g_lto2*(V1−V2)’.
[00115]オーミック接合に適用可能ないくつかの実装形態では、_class部分をスキップし、<junction>中のコンダクタンスg_2to1およびg_lto2だけを指定することができる。このクラスがベースクラスから派生されたとき、サブクラスのオブジェクトupdate_ruleが最初に実行され、続いてベースクラスルールが実行され得、それにより、サブクラスルール実行によるある変数の更新が可能になる。
Initialization
は、もしある場合、update_codeを実行するために使用される変数の初期値を設定する。
[00116]クラスシナプスは以下のように宣言され得る。
<synapse of (synaptic_class)>
pre
post
delay
initialization
ここで、
pre
post
はそれぞれ、プレシナプスユニットの識別子、およびポストシナプスユニットの識別子である。
delay
は、軸索伝導(axonal conduction)遅延値を(シミュレーションタイムステップで)指定する
initialization
は、初期パラメータおよび変数値を設定する。接合クラスと同様に、シナプスクラスはベースから派生され得シナプスクラスは以下のように宣言され得る。
<synaptic_class of (synaptic_class)>
synaptic_class_id
initialization
ここで、
synaptic_class_id
は、(順序はスクランブルされ得るが)バックグラウンドプロセス中に個々のシナプスを参照するためにベクトル識別子として使用され得る、ベースクラスを指定する一意のラベルである。このクラスは別のクラスから派生され得る。
initialization
は、個々のシナプスのためのパラメータおよび変数の初期値を設定し、たとえば、‘float w=5;float sd=0;float p=0;’。シナプス変数とpost_unit変数とにアクセスするプレシナプスイベントルールを定義するクラスは、以下のように宣言され得る。
<presynaptic_event of (event_rule)>
synaptic_class
post_unit_class
ここで、
synaptic_class
は、この可塑性ルールが適用されるシナプスクラスの名前を示す。オブジェクトevent_ruleは、プレシナプスユニットが発火したときに実施されるアクションを指定するために使用され得る。synaptic_classのルールは、プレシナプスニューロン(ユニット)のためのSTDPルールの短期可塑性(STP:short−term plasticity)および長期増強(LTP:long−term potentiation)部分を定義する。
post_unit_class
は、ポストシナプスユニットのクラスを指定し、それによってevent_ruleのアクションのドメインを定義し、それによって、STDPルール実行によって必要とされ得る情報(たとえば、ポストシナプス電位(PSP:post−synaptic potential)を送出し、last_spikeなどの変数にアクセスするためのクラス)を与える。クラスpost−synaptic_eventは以下のように宣言され得る。
<post−synaptic_event of (event_rule)>
synaptic_class
post_unit_class
ここで、
synaptic_class
は、この可塑性ルールが適用されるシナプスクラスの名前を指定する。オブジェクトevent_ruleは、(これらのシナプスに関して参照される)ポストシナプスユニットが発火したときにシナプス変数を用いて実施され得るアクションのリストを定義するために使用され得、それによって、ポストシナプスユニットがスパイクを発火させたときはいつでも実行され得るSTDP可塑性ルールのLTP部分を実装する。
post_unit_class
は、ポストシナプスユニットのクラスを指定し、それによって、このルールのためのアクションドメインを定義する。一実装形態では、このルールはアクセスシナプス変数に構成され得る。event_ruleクラスはベースクラスから以下のように派生され得る。
<event_rule of (event_rule)>
event_rule_id
rule
initialization
ここで、
event_rule_id
は、ルールクラスを指定する一意のラベルである。概して、ルールクラスは別のオブジェクトクラスevent_ruleから派生され得る。
Rule
は、イベントの発生時に実施されるアクションを指定するコードのストリング表現である。例として、ポストシナプス電位(PSP:post−synaptic potential)の送出が以下のように指定され得る」。
’g+=w’ または ’I+=w’ または ’g+=g*p’.
[00117]同様に、presynaptic_eventに関連するアクションが以下として定義され得る。
’p*=STP(now−last_active); w−=LTD(now−last_spike);'
一方、post−synaptic_eventに関連するアクションは以下として定義され得る。
’w+=STDP(now−last_active)’
ここで、
「last_active」は、シナプスがアクティブであった前の時点から経過した時間であり、
last_spikeは、ポストシナプスユニットの最後のスパイクの時間であり、
‘now’は現在時間である。
[00118]さらに、event_ruleクラスは、テーブル、たとえば、STDP、LTP、または他の生物学的動機づけテーブルを指定し得る。
initializationは、テーブルの初期値を、たとえば、‘STDP={,..,};’または‘STP=1,...,I;LTD={...}’のように設定する。
<background_process>
execution_condition
プロセスを実行すべきか否かを決定するために個々のシミュレーションタイムステップで評価される条件。たとえば、‘now%10==0’または‘DA>0.1’。ない場合、プロセスは個々のタイムステップで実行され得る。それの局所変数がアクセスされ得るunit_classまたはsynaptic_classの名前。以下のコードが、任意の順序で(場合によっては並列に)クラスメンバー内でループ中で実行されることになる。ない場合、このプロセスは‘true’execution_conditionごとに1回実行され、ユニットまたはシナプスクラス名を使用して個々のユニットまたはシナプスがアクセスされ得ると仮定され得る。たとえば、ユニットクラス‘exc’は、順序が場合によっては未知であるユニットexc[i]を含んでおり、その順序は、必ずしも、それらがリストされた順序に対応するとは限らない。
update_rule
実行されるべきコード、たとえば‘DA*=0.9’、またはsynaptic_classドメイン中で‘w+=DA*sd;sd*=0.995;’、またはドメインなしで単に‘exc[rand()].I=100;’initializationグローバル変数の初期化、たとえば、‘float DA=0’。
[00119]シミュレーションのタイムステップ、および他のランタイムパラメータが指定され得る。皆にとってアクセス可能な数個のグローバル変数、たとえば「now」、すなわち現在時間があり得る。
[00120]パラメータによって異なるクラスは単一のクラスとして宣言され得、パラメータ値はインスタンス化において指定され得る。パラメータのほんのいくつかの(たとえば、2つ、3つ、または何らかの他の数の)異なる値がある場合、2つの異なるクラスを指定し、式において配線接続されたパラメータを個々のクラスが有することが道理にかない得る。
[00121]ENDフレームワークの外部インターフェースは、ニューロンネットワーク(たとえば、図1のネットワーク100)への外部感覚入力の供与と、(たとえば、図1の経路102を介した)外部ロボット装置への出力の送出とを記述する。END外部インターフェースは、以下で詳細に説明する、感覚入力ブロック、ならびに出力および監視ブロックという、2つの主要な論理ブロックを備え得る。
[00122]このブロックは、ネットワークモデルの様々なユニットへの外部入力の結合を定義する。例として、Nチャネル(1〜Nに番号付けされた)スパイキング網膜入力のための感覚クラスが以下のように宣言され得る。
<unit_class>
unit_class_id=’retina’
after_event_rule //空であり得る
[00123]上記のクラス宣言は、網膜からのスパイクが進むことになる計算エンジンおよび入力ドライバを通知する。入力の構造は、N個の空のユニットの以下の宣言を使用して定義され得る。
<unit>
unit_id=’retina(1:N)’
[00124]いくつかの実装形態では、個々のネットワークタイムステップで実行されることが必要とされる更新ルールがないことがある。したがって、計算エンジンは、これらの空のユニットに計算リソースを費やさないことがある。しかしながら、‘retina’として宣言された入力チャネルからのスパイクが到達したときはいつでも、入力ドライバは、それがスパイクを実際に発火させたかのように、ユニットインデックスをスパイクキュー中に入れ得る(これは、after_event_ruleが空でない場合、エンジンによるafter_event_rule実行をトリガし得る)。このユニットから他のユニットへのシナプスは、スパイクに対して何をすべきかをネットワークに伝え得る。LGN上の網膜入力の場合、網膜ユニットは、いくつかのLGN細胞上に1〜3個のシナプスを有し得る。
[00125]入力チャネルが連続信号を供給する場合、信号は、所与の時間間隔で(たとえば、1ミリ秒ごとに)個々のユニット中の変数「I」を更新し得る。この場合、更新ルールおよびevent_conditionを指定し得る。
[00126]出力および監視ブロックは、ネットワークモードのための出力インターフェースを与える。モデルからのモーター出力に適用可能な一実装形態では、出力ブロックは、ネットワークユニットと、外部モーターインターフェース(motor interface)または何らかの他のアクチュエータとの間の結合を指定する。いくつかの実装形態では、モーターインターフェースは筋肉インターフェースを備え得る。いくつかの実装形態では、モーターインターフェースは、外部ロボット装置を制御するように構成されたモーターインターフェースを備え得る。たとえば、頸筋とインターフェースするためのNチャネルモーター出力オブジェクトを備えるユニット‘neck muscles’が、ENDフレームワークを使用して以下のように宣言され得る。
<unit_class>
asunit_class_id=’neck_muscles’
initialization=’float I=0;’
[00127]上記の宣言は、電流Iの値の変化についてどのニューロン(ユニット)を監視すべきかを出力ドライバに通知する。それぞれのN個の空のユニットオブジェクトが、次いで、以下のように作成され得る。
<unit>
unit_id=’neck_muscles’
[0128]モデルの実行中に、計算エンジンは、モーターニューロンが発火したときはいつでも、ユニットオブジェクト内の変数Iが正値に設定され得るように、モーターニューロン(ユニット)頸筋の少なくともいくつかがこれらのニューロンへの非0の(たとえば、正の)シナプス投射を有することを保証する。出力ドライバは、したがって、個々のモデルタイムステップで変数Iを監視し、必要な場合、それをI=0にリセットする。モーター出力インターフェースは(個々のモデル実行タイムステップでの)更新ルールの実行を必要としないので、計算エンジンは、‘neck_musclesユニットを維持することに最小のリソースを費やす。
[0129]ニューラルネットワーク実行を監視することに適用可能ないくつかの実装形態では、出力ブロックは、ネットワークユニットと外部監視インターフェースとの間の結合を指定する。
[0130]上記で説明したように、ニューロンモデルのいくつかの要素は、特定のハードウェアブロック(ハードウェアアクセラレータ)によって実施され得る計算から恩恵を受ける。例として、エンジン計算リソースの大部分(たとえば、99%)を消費するユニットunit_classのメソッドupdate_ruleを考察する。
<unit_class>
unit_class_id=’simple_model’
update_rule=’v+=(0.04*v+5).*v+140−u+I; u+=a*(b*v−u);'
event_condition=’v>30’
after_event_rule=’v=−65;u+=d’
initialization=’float v=−65; float u=0; float a=0.1; float b=0.5; float d=8;’
[0131]update_ruleの実装がユニットごとにおよび/またはモデルランごとに変化しないとすれば、update_ruleに関連する計算動作は、たとえば、ASIC、FPGA、または特殊シリコンにおいて実装され得る専用ハードウェアアクセラレータ中によってより効率的に実行され得る。ENDフレームワーク内では、たとえば、上記に記載したupdate_ruleに関連するコードの実行を、ハードウェアアクセラレータインターフェースに対応する適切なロケーションにダイレクトするようにコンパイラに命令するために、‘simple_model’クラスが使用され得る。そのようなマッピングを作成するために、simple_modelクラスのインスタンスは以下のようにインスタンス化され得る。
<unit of (simple_model)>
unit_id=509
initialization ’a=0.01; d=2’
[0132]そのようなハードウェアアクセラレータ(simple_modelオブジェクト)は、ENDによって、より複雑なオブジェクトを構成するためのビルディングブロックとして使用され得る。例として、超低速ニューロン変数‘w’とともに、たとえば、百万個(1M)のsimple_modelユニット(ニューロン)と、たとえば、一千個(1K)のニューロンとをもつニューロンモデルが、クラス継承メカニズムを使用して以下のように宣言され得る。
<unit_class of (simple_model)>
unit_class_id=’complex_model’
update_rule=’w+=0.001*(0.3*v−w); I−=w’
after_even_rule=’w+=1’
initialization=’float w=0’
[0133]専用ハードウェアに取り付けられた計算エンジン中のプロセッサ(たとえば、ARM(登録商標)チップ)は、変数‘w’のダイナミクスを評価し、それを変数Iの値に組み込むために、上記のタイプの1K個のユニットを処理し得る。次いで、ハードウェアアクセラレータ(アナログまたはデジタル)ハードウェアは、インスタンスのいくつかがより複雑なモデルに対応することを了解することさえなしに、simple_modelの1M+1K個のインスタンスを実行し得る。専用ハードウェアは、ニューロンモデルの最も一般的に使用される実装形態、シナプスダイナミクスを含んでいることがある。ユーザは、自由にこれらのカノニカル能力を混合し、整合させるか、または必要とされ得るどんな追加の機能をもそれらに加え得る。
[0134]スプネットはN=Ne+Ni=1000個のニューロンを備え得、ここで、Ne=800個の興奮性(excitatory)ニューロンであり、Ni=200個の抑制性(inhibitory)ニューロンである。個々のニューロンは、ニューロンごとにM=100個のシナプスを備え得る。一部または全部の興奮性シナプスは可塑性(STDP)であり得、ランダム遅延は1msとD=20msとの間にわたる。抑制性−>興奮性シナプスは非可塑性であり得、D=1msの遅延を伴う。inh−>inhシナプスはないことがある。このモデルの低レベルEND記述は以下のように表され得る。最初のNe個のユニットはNe個の興奮性ユニットによってポピュレートされ得る。
<unit of (exc)>
unit_id=1:800
[0135]次に、Ni個の抑制性ユニットがクラスのレコードであり得、以下のようにポピュレートされる。
<unit of (inh)>
unit_id=801:1000
[0136]スプネットクラスが、次いで、以下のリスティング1に示されているように宣言され得る。
<unit_class>
unit_class_id=’QIF2’
update_rule=’v+=0.5*((0.04*v+5).*v+140−u+I);
v+=0.5*((0.04*v+5).*v+140−u+I);’
event_condition=’v>30’
after_event_rule=’v=−65;’
initialization=’float v=−65; float u=0.2*v; float 1=0'
<unit_class of (QIF2)>
unit_class_id=’exc’
update_rule=’u+=0.02.*(0.2*v−u);’
after_event_rule=’u+=8; last_spike=now’
initialization=’int last_spike=−1000;’
<unit_class of (QIF2)>
unit_class_id=’inh’
update_rule=’u+=0.1.*(0.2*v−u);’
after_event_rule=’u+=2;’
Ne*M records of the class (exc−>exc)
<synapse of (GLU)>
pre=i // i=1:Ne
post=j //1とNとの間の乱数
delay //1とDとの間の乱数
クラスのNi*M個のレコード
<synapse of (GABA)>
pre=i //i=Ne+1:N
post=j //1とNeとの間の乱数
<synaptic_class>
synaptic_class_id=’GLU’
initialization=’float w=6; float sd=0; int last_active=−1000;’
delay=1 //デフォルト遅延(インスタンス中で指定されていない場合)
<synaptic_class>
synaptic_class id=’GABA’
delay=1 //すべてのシナプスについて同じ
<presynaptic_event of (EPSP_plus_LTD)>
synaptic_class=’GLU’
post_unit_class=’QIF2’ //すなわち、excおよびinh
<presynaptic_event of (Inhibition)>
synaptic_class=’GABA’
post_unit_class=’QIF2’ //すなわち、excおよびinh
<post−synaptic_event of (LTP)>
synaptic_class=’GLU’
post_unit_class=’exc’
<event_rule>
event_rule_id=’EPSP_plus_LTD’
rule=’I+=w; sd−=LTD(now−last_spike); last_event=now’
initialization=’LTD={array};’
//LTP_A=1.2から0への指数関数的減衰、ただしLTD_tau=20ms
<event_rule>
event_rule_id=’LTP’
rule=’sd+=LTP(now−last_active);’
initialization=’LTP={array};’
<event_rule>
event_rule_id=’Inhibition’
rule=’I−=5;’
initialization=’’
<background_process>
id=’Weight_update’;
execution_condition=’now%1000==0’
domain=’GLU’
update_rule=’w+=0.01+sd; if (w<0) w=0; if (w>10) w=10; sd*=0.9’
<background_process>
id=’randominput’
update_rule=’exc[int(floor(rand()/RAND_MAX*N))].v=30;’
リスティング 1
[0137](上記のリスティング1に示されたような)モデルの低レベル記述は、ネットワークアーキテクチャを一意に定義するのに必要である情報を含んでいることがある。リスティング1に示された記述は、個々のユニットのシナプス結合、プレシナプス結合、ポストシナプスターゲット、および/またはモデルシミュレーションを実施するために有用な他の情報のうちの1つまたは複数のための十分なレベルの詳細を与えないことがあるので、とりわけ、モデルシミュレーションを実施するのには好適でないことがある。リンカは、低レベルEND記述を使用し(たとえば、図1のリンカ108)、(i)ユニット間のリンクの一部または全部をポピュレートし、(ii)モデルシミュレーション中の計算エンジンによるデータおよびコードのローディングを可能にするように、コードおよびデータをバイナリまたは何らかの他の低レベル(機械)フォーマットで保存する。シミュレーション実行(ランタイム)中に、エンジンは、任意の保存ポイントからのモデル実行の高速再始動を可能にするために、同じ(または異なる)フォーマットで(たとえば、レジスタおよびメモリ内容、プログラムカウンタ、および/またはエンジン実行状態に関連する情報を備えるエンジン実行状態を保存している)保存ポイントを作成し得る。
[0138]一実装形態では、計算エンジンはシングルプロセッサコンピュータを備え得る。エンジンは、所定のタイムステップでいくつかの計算サイクルを(ネットワークを通してステップを)実施する。いくつかの実装形態では、タイムステップは1ミリ秒に設定され得る。
[0139]いくつかの実装形態では、計算エンジンは、マルチコア処理プラットフォーム、シングル/マルチコアプロセッサのアレイ、FPGA、あるいは1つまたは複数の組込みプロセッサコアをもつプログラマブル論理ファブリック上に実装され得る。
[0140]低レベルEND記述中の個人<_class>インスタンスは別個のループ実行ループに対応し得る。個々の実行ループ/サイクル内の計算は、マルチコア実装のために最適化された順序で並列に実施され得る。いくつかのサイクルは他のサイクルと並列に実施され得る。given_codeが「プリコンパイル」され、エンジン中の適切な場所に含められ得る。
[0141]モデルシミュレーション中に実行効率を達成するために、計算エンジンを実装する神経形態学的ハードウェアは、以下の特徴、すなわち、(i)シナプス放出など、ニューロンダイナミクスおよび基本シナプスイベントの高速特殊専門処理、(ii)低速シナプス更新、ターンオーバ、再配線、短期可塑性、および/または他のバックグラウンドプロセスなど、計算バックグラウンドプロセスを実施するための汎用プロセッサ(たとえば、ARMコア)、および/または他の特徴のうちの1つまたは複数を有し得る。そのような構成は、大部分のシナプスに対して(ユーザによる頻繁な変更を必要とする可能性が低い)基本シナプス処理の高速実行を可能にするが、より小さい部分のシナプスに対してプロプライエタリブティック処理(proprietary boutique processing)の実装を可能にする。
[0142]「最小命令セット」実装の1つの目的は、低レベル記述フォーマットを与えることであり得、(i)メモリ割振りを宣言するがアクションを含んでいない、ユニット(ニューロン)定義と、(ii)ユニットを結合するが、それら自体のメモリを割り振らない、接合と、(iii)アクションをユニットまたは接合とリンクする、ルールとを備え得る。いくつかの実装形態では、アクションはクロック駆動型であり得る(すなわち、ニューロンモードシミュレーション実行の個々のタイムステップで適切なユニットのために実行され得る)。いくつかの実装形態では、アクションはイベント駆動型であり得る(すなわち、アクションは、たとえば、ユニットがスパイクを発火させたときに実施されるアクションをシミュレータに通知する、ユニットクラスのために宣言されたイベント条件を介して、ユニットによってトリガされ得る。そのようなイベント(スパイク)は、したがって、他のユニットまたは接合に適用され得るイベントベースルールの実行をトリガする。
[0143]ENDフレームワーク内で、シナプスは、シナプス荷重、遅延、ターゲット宛先、および/またはシナプス機能に関連する他の情報など、シナプス機能に関連する様々な変数を記憶するように構成されたメモリを備えるユニットとして宣言され得る。シナプスは、伝達物質を放出する準備ができているプレシナプス機械と見なされ得る。ユニット更新の場合と同様に、シナプス更新ルール(たとえば、維持(maintenance)‘w+=sd;sd*=0.9’)はクロックベースまたはイベントベースであり得る。プレシナプスニューロンに対応するユニットにおいてスパイクイベントによってシナプスアクション(たとえば、神経伝達物質の放出)がトリガされ得る。放出を記述しているルールは、STDPの抑圧部分と、短期可塑性プロセスのいずれかとを実施することができる。STDPのLTP部分は、ポストシナプスニューロンに対応するユニットによってトリガされ得る別個の他のルールによって実現され得る。接合は、シナプスとポストシナプスユニットとの間の結合を指定する。
[0144]ENDの最小命令セットの例は、任意のニューラルネットワークを定義するのに十分な記述容量を有する単純イベントベースのコンピュータの構成を可能にする。
[0145]以下で説明するENDの最小命令セットの例のクラスおよび変数のシンタックスおよび構造は、END1.0フォーマットと同様であり得、上記で説明している。
<unit of unit_class>
unit_id
initialization
<unit_class (of unit_class)>
unit_class_id
initialization
<junction of junction_class>
junction_id
unit_1
unit_2
<junction_class (of junction_class)>
junction_class_id
unit_class_1
unit_class_2
<rule of rule_class>
subject_id
[0146]このルールに従わなければならないユニットまたは接合のid
trigger_id
[0147](イベントベースルールについて)対象に対してルールをトリガするユニットのid。省略された場合、このルールはクロックベースであり得る。
Delay
[0148]このルールが実行されるべき遅延。省略された場合、遅延なしであり得る
<rule_class (of rule_class)>
rule_class_id
execution_condition
[0149]たとえば、‘now%10−0’。省略された場合、ルールは個々のタイムステップで実行され得る
subject_class
[0150]このルールが適用され得るクラス。サブジェクトクラス(subject class)はユニットまたは接合であり得ることに気づかれたい
code
event_condition
initialization
例2:スプネット
//最初に、ニューロンのためにメモリを割り振る
<unit_class>
unit_class_id=’neuron’
initialization=’float v=−65; float u=0; float I=0; int last_spike=−1000;’
<unit_class of neuron>
unit_class_id=’exc’
<unit_class of neuron>
unit_class_id=’inh’
<unit of exc>
unit_id=1:800
<unit of inh>
unit_id=1:200
//ここで、ニューロンにダイナミクスを割り当てる(クロックベースルール)
<rule_class>
rule_class_id=’QIF’
subject_class=’neuron’
code=’v+=0.5*((0.04*v+5).*v+140−u+I); v+=0.5*((0.04*v+5).*v+140−u+I);’
event_condition=’v>30’
<rule_class of QIF>
rule_class_id=’RS’
subject_class=’exc’
code=’u+=0.02.*(0.2*v−u);’
<rule of RS>
subject_id=exc(1:800)
<rule_class of QIF>
rule_class_id=’FS’
subject_class=’inh’
code=’u+=0.1.*(0.2*v−u);’
<rule of FS>
subject_id=inh(1:200)
//スパイク後休止を指定する(イベントベースルール)
<rule_class>
rule_class_id=’reset’
code=’v=−65; last_spike=now;’
<rule_class of reset>
rule_class_id=’RS_reset’
subject_class=’exc’
code=’u+=8;’
<rule of RS_reset>
subject_id=exc(1:800)
trigger_id=exc(1:800)
<rule_class of reset>
rule_class_id=’FS_reset’
subject_class=’inh’
code=’u+=2;’
<rule of FS_reset>
subject_id=inh(1:200)
trigger_id=inh(1:200)
//シナプスを指定する。
//抑制性シナプスが可塑的でない。
<rule_class>
rule_class_id=’inhibition’
subject_class=’neuron’
rule=’I−=6’
//以下のフォームの200*100個のレコード、各々がinhシナプスを指定する
<rule of inhibition>
subject_id={excまたはinhユニット}
trigger_id={inhユニットのインデックス}
//興奮性シナプスが可塑的であり、したがってそれらの荷重が記憶される
<unit_class>
unit_class_id=’synapse’
initialization=’float w=5; float sd=0; int last_active=−1000;’
<unit of synapse>
unit_id=1:80000
//シナプスごとに、それのターゲットを指定する。これは接合を介して行われる
<junction_class>
junction_class_id=’GLU’
unit_class_1=’synapse’
unit_class_2=’neuron’
//シナプスを割り当てる、すなわち、フォームの80000個のレコードを作成する
<junction of GLU>
junction_id=1:80000
unit_1=1:80000
unit_2={ランダムニューロンインデックス}
//どのシナプス前ニューロンがどのシナプスをトリガするかを指定する
<rule_class>
rule_class_id=’EPSP_plus_LTD’
subject_class=’GLU’
code=’I+=w;sd−=LTD(now−last_spike); last_active=now;’
initialization=’LTD={array}’
<rule of EPSP_plus_LTD>
subject_id=1:80000
trigger_id=exc(rand(800))
delay=rand(20)
//ポストユニットが発火したとき、LTPを指定する
<rule_class>
rule_class_id=’LTP’
subject_class=’synapse’
rule=’sd+=LTP(now−last_active)’
initialization=’LTP={array}’
<rule of LTP>
subject_id=1:80000
trigger_id={対応するシナプス後ニューロン、ただし、これは原則として他のどんなものでもあり得る}
//sd更新を実施する(維持)
<rule_class>
rule_class_id=’synaptic_maintenance’
subject_class=’synapse’
execution_condition=’now%1000==0’
code=’w+=0.01+sd; if (w<0) w=0; if (w>10) w=10; sd*=0.9’
<rule of synaptic_maintenance>
subject_id=1:80000
//最後に、時間ステップのmsごとにニューロンを発火させるランダム視床入力
<rule_class>
rule_class_id=’input’
code=’fire({ランダムニューロン});’
<rule of input> //パラメータなし。これは入力をインスタンス化するためだけに必要である
リスティング 2
[0151]END2.0フォーマットは、上記で説明したEND1.0フォーマットと比較して以下の特徴を備え得る。
・継承なし(オブジェクトクラスなし)、
・バックグラウンドプロセスなし(代わりにグローバル変数が使用される)、
・別個のプレシナプス/ポストシナプスルールなし(一部または全部がシナプスタイプの一部であり得る)
・個々のルールが他のルールおよびコード文字列、ならびに実行条件を含み得る
<rule>
name
exec_condition
このルールを実行すべきか否かを決定するために個々のステップにおいて評価され得る条件。これは、ストリング、たとえば、‘now%10−0’または‘DA>0.1’であるか、あるいはルール名への参照であり得る(これは、条件がいくつかのグローバルテーブルを必要とする場合に有用である)。ない場合、ルールは個々の実行タイムステップについて適用される。この条件は、以下のコードにおいて定義されているどんな変数にもアクセスし得る。
Code
ルールが発生したときに何を行うべきかを指定するコードストリングまたは他のルール名。たとえば、‘I+=w’または‘v+=tau*(2*(v+70)*(v+50)−u+I)/20;u+=tau*0.1*(2*(v+70)−u);’。さらに、ルールの出力は、スパイク条件において使用され得る論理(真/偽)ステートメントであり得る。ここでは複数のルール名が与えられ得る。それらは与えられた順序で実行され得る。
init
このルールにおいて使用されるグローバル変数を宣言し、その値を設定する。たとえば、‘STDP=1,..,1;DA=0’または‘STP=1,...,1;LTD={...}’。任意のインスタンス変数がunit_typeおよびsynaptic_typeにおいて定義され得る。リンカは、異なるユニットタイプおよびsynaptic_typeにおいて定義されている個々のデータタイプがルールに関して整合し得ることを検査する。
<unit_type>
name
update_rule
個々のタイムステップで実行され得るコードストリングまたはルール名。ここでは複数のルールが与えられ得る。それらは指定された順序で実行され得る。
event_condition
個々のタイムステップで実行される、スパイクを検出するために必要とされる論理ステートメントまたはルール名、たとえば、‘v>30’
event_rule
スパイクが検出されたときに実行され得るコードまたはルール名。たとえば、‘v=−65;u=u−8;’。
Init
ユニットにおいて使用される個々の変数およびパラメータ(すなわち、インスタンス変数)を宣言し、それらの初期値を設定する。リンカ(コンパイラ)は、これらの変数が、同じルールを使用する個々のユニットタイプの間で整合するデータタイプを有することを検査する、たとえば、‘analog v=0;analog g_AMPA=0;’
<unit of unit_type>
unit_id
init
[0152]タイプの定義におけるデフォルト値とは異なり得るパラメータおよび変数値を設定する。これら、個々のものは、宣言され、unit_typeの定義におけるデフォルト値を用いてすでに初期化されている必要がある
<junction_type>
name
update_rule
init
<junction of junction_type>
unit_1
unit_2
init
<synaptic_type>
type
presynaptic_event_rule
プレシナプスニューロンが発火したときにトリガされ得るコードまたはルール名。これはLTPおよびPSPに対処する
post−synaptic_event_rule
[0153]ポストシナプスユニットの発火によってトリガされるコードまたはルール名。これはSTDPのLTD部分に対処する
update_rule
[0154]個々のタイムステップで実行され得るコードストリングまたはルール名(たとえば、execution_conditionを有し得、まれにしか実行されないことがある)。ここでは複数のルールが与えられ得る。それらは指定された順序で実行され得る。これは、バックグラウンドプロセスの代わりに、シナプス維持のために必要とされ得る。
<synapse of synaptic_type>
pre
post
delay
init
<global_variable>
update_rule
[0155]グローバル変数を初期化し、それらを更新するコードを実行するルール名。コードは、ユニット、接合、またはシナプスの特定のインスタンスへのアクセスを有し得る。最も単純な場合、ルールは、単にインスタンスの値に基づくグローバル変数の値の割当てであり得る。
[0156]インスタンス変数は<rules>において使用され得るが、それらは<unit_type>、<junction_type>、および<synaptic_type>において定義され得ることに気づかれたい。インスタンス変数の個々の宣言はルールの一部または全部に整合し得ると仮定され得る。以下の2つの問題があり得る。
[0157]変数がルールにおいて使用され得るが、unit_typeまたはjunction_typeまたはsynaptic_typeにおいて定義されていない状況は、以下のように処理され得る。
・リンカがエラーを発生し得る
・リンカが変数のデフォルトタイプ、たとえば、「analog」を使用する
・リンカはルールの他の使用を調べるように命令され得、変数がどこかで定義されている場合、リンカはそれの定義を拡張する。
[0158]いくつかの実装形態では、同じルールを使用する2つ以上のunit_typeにおいて、変数は別様に定義され得る。この場合も、以下のようにこれに対する複数の可能な解決策があり得る。
リンカがエラーを発生する
リンカが定義のうちの1つを他の定義に変換する。たとえば、定義の半順序集合、たとえば、int8<int16<int32<int64<analogがあり得、したがって、2つの定義は共通の1つの定義に変換され得る
リンカがルールを、異なるタイプの変数に作用する2つのルールrule_aおよびrule_bに分割する
例2:グローバル変数
<rule>
name=’DA_update’
code=’DA=exc[3].v+inh[1].u’
init=’analog DA=0’
<global_variable>
update_rule=’DA_update’
例3:スプネット
[0159]標準スプネットネットワークはN=1000個のニューロンを有する。それらの中にNe=800個の興奮性ニューロンとNi=200個の抑制性ニューロンとがあり得、ニューロンごとにM=100個のシナプスがある。一部または全部の興奮性シナプスは可塑性(STDP)であり得、ランダム遅延は1msとD=20msとの間である。抑制性−>興奮性シナプスは非可塑性であり得、遅延D=1msを伴う。inh−>inhシナプスはないことがある。モデルの低レベル記述は以下の通りである。
<rule>
name=’QIF2’//v式のみが定義される
code=’v+=(0.04*v+5).*v+140+I; I=4*rand()//MAX_RAND'
<rule>
name=’spike’
code=’v>30’
<unit_type>
name=’exc’
update_rule=’u+=0.02*(0.2*v−u); I−=u;’
update_rule=’QIF2’
event_condition=’spike’
after_event_rule=’v=−65; u+=8; last_spike=now’
init=’analog v=−70, u=−14, I=0; int last_spike=−1000’
<unit_type>
name=’inh’ //抑制性ニューロン
update_rule=’u+=0.1.*(0.2*v−u); I−=u;’
update_rule=’QIF2’
event_condition=’spike’
after_event_rule=’v=−65; u+=2;’
init=’analog v=−70, u=−14, I=0; int last_spike=−1000’
//クラスのNe個のレコード
<unit of exc>
unit_id=1:800 // i=1:Ne
//クラスのNi個のレコード
<unit of inh>
unit_id=1:200 // i=1:Ni
<rule>
name=’EPSP_plus_LTD’
code=’I+=w; sd−=LTD(now−last_spike); last_active=now’
init=’LTD={array};’
<rule>
name=’LTP’
code=’sd+=LTP(now−last_active);’
init=’LTP={array};’
<rule>
name=’Synaptic_maintenance’
execution_condition=’now%1000==0’
update_rule=’w+=0.01+sd; if (w<0) w=0; if (w>10) w=10; sd*=0.9’
<synaptic_type>
name=’GLU’
presynaptic_event_rule=’EPSP_plus_LTD’
post−synaptic_event_rule=’LTP’
update_rule=’Synaptic_maintenance’
init=’analog w=6, sd=0; int last_active=−1000;’
<synaptic_type>
name=’GABA’
presynaptic_event_rule=’I−=5’
delay=1 //デフォルト遅延、すべてのシナプスについて同じ
//クラス(exc−>excまたはinh)のNe*M個のレコード
<synapse of GLU>
pre=exc[i]// i=1:Ne
post=exc[j] または inh[j] //ランダム、1とNeとの間、または1:Ni
delay //1とDとの間の乱数
//1とDとの間の乱数
<synapse of GABA>
pre=inh[i]// i=1:Ni
post=exc[j] //1とNeとの間の乱数
[0160]ENDフォーマット3.0は、END2.0フォーマットと比較していくつかの大きい変更を実装する。これらは以下を含み得る。
・一方向接合の導入
・(接合変数を変更するように構成された)update_rule、および(ポストシナプスユニット変数を構成変更するための)delivery_ruleという、2つのルールへの接合update_ruleの分割
・post−synaptic_event_ruleの削除
・(STDPのLTP部分のための)prepost_ruleと、(STDPのLTD部分のための)postpre_ruleと、(PSPを送出するための)delivery_ruleとへの、presynaptic_event_ruleの分割
・(接合およびシナプスのための)delivery_ruleについてのアトミック加算
・クロックベースシナプス更新ルールの削除(それはpostpre_ruleを介して実装され得る)
・リンクを介してインスタンス変数にグローバル変数を実装すること
[0161]END3.0における個々の名前およびステートメントは、別段に記載されていない限り、END2.0におけるものと同様の意味を有し得る。END3.0では、タイプ‘exc’のインスタンス3を参照するためにシンタックスexc:3が使用され得る。
[0162]presynaptic_event_ruleは複数の独立したルールを備え得る。本明細書では、指示子t1およびt2は、ポストシナプスユニットに到着するプレシナプスニューロンのスパイクの時間を示し(すなわち、伝導遅延はすでにt1およびt2に組み込まれ得)、ここで、t2は、(‘now’とも呼ばれる)現在のシミュレーション時間に対応する。
[0163]t1において発火するプレシナプスニューロンと、t1の後だがt2の前またはt2において発火する後続のポストシナプスニューロンとをもつパルスのペアに対応するであろう、STDPのLTP部分を実装するために、prepost_ruleはt1の前の任意の時間に実行され得る。prepost_ruleルールは、システム変数prepre(now−t1)およびprepost(post_spike−t1)へのアクセスを有するが、このルールがいつ呼び出されるかが明らかでないことがあるので、このルールは、時間t2(‘now’)においていかなるポストユニット変数またはシステム変数へのアクセスをも有しない。prepost_mode=11(1対1)である場合、個々のプレシナプススパイクはprepost_ruleのために1の呼出しをトリガする。prepost_mode=1A(1対全部)である場合、個々のプレシナプススパイクは、次のプレシナプススパイクの瞬間まで、(それ自体のprepost変数とともに)後続のポストシナプススパイクのためにprepost_ruleをトリガする。(与えられれば)パラメータprepost_maxは、prepost_ruleについてその間にポストシナプススパイクを考察すべき、プレシナプススパイクの後の時間スパンを制限し得る。たとえば、STDPのLTPウィンドウがわずか50である場合、50よりも大きい間隔をもつ前後スパイクのペアを考察するポイントはないことがある。いくつかの実装形態では、t1の後の最も早いポストスパイクがt1+prepost_maxよりも後に発生したとき、prepost_ruleが呼び出され得る。いくつかの実装形態では、ポストスパイクがt1とt2との間の期間中に決して発生しない場合、ルールは呼び出されないことがある。
[0164]前のプレシナプススパイクのタイミング(prepre=t241)と最後のpost_synapticスパイクのタイミング(postpre)とに基づいてシナプス変数を更新するために、postpre_ruleは時間t1の直前に実行され得る。前のポストスパイクが発生してから長い時間期間が経過した場合でも、後者の変数は与えられ得る。変数‘now’は現在時間を指し、ポストシナプスユニットからの個々の変数が読取りのために利用可能であり得る。
[0165]時間t1において、しかしpostpre_ruleがシナプス荷重を更新した後に、delivery_ruleが呼び出され得る。delivery_ruleは、後者のルールの変数の個々の変数へのアクセスを有し、さらに、ポストユニットの変数へのアトミック加算のための書込みアクセスを有する。
<rule>
name
exec_condition
code
init
<unit_type>
name
update_rule
event_condition
after_event_rule
init
<unit of unit_type>
unit_id
init
<junction_type>
name
update_rule
delivery_rule
init
<junction of junction_type>
pre
post
init
<synaptic_type>
type
prepost_rule
リスティング 3
[0166]リスティング3に示されたコードの例では、ルールはt2の前にトリガされ得、それはシナプスを変更する。ルールは、シナプス変数の読取りおよび書込みを行うことができるが、ポストシナプスユニットからのいかなる変数へのアクセスをも有しない。ルールはprepre=t241およびprepost(post spike−t1)へのアクセスを有する。
prepost_mode
[0167]11(1対1)および1A(1対全部)という、2つのモードがサポートされ得る。前者はルールをせいぜい1回呼び出すが、後者は、プリユニットの最後のスパイクの後の個々のポストユニットスパイクについて複数回呼び出す。デフォルト:11
prepost_max
は、前後ペアを形成することを考察すべき、プリユニットスパイクの後の時間の範囲を制限する。t1+prepost_max後の一部または全部のポストスパイクは無視され得る。
postpre_rule
t2においてトリガされ得、シナプスを変更するコードまたはルール名。それは、シナプス変数の読取りおよび書込みを行うことができ、ポストシナプスユニットからの変数への読取りアクセスを有する。それはprepre、postpre、およびnow=t2へのアクセスを有する。
delivery_rule
t2においてトリガされ得、ポストユニットの変数を変更するコードまたはルール名。それはシナプス変数、prepre、postpre、およびnow=t2への読取りアクセスを有する。このコードはアトミック加算であり得る。
<synapse of synaptic_type>
pre
post
delay
init
[0168]いくつかの実装形態では、プレシナプススパイクによってトリガされ得る、短期シナプス可塑性をモデル化することが望ましいことがある。しばしば、これは、個々のプレシナプススパイクによって変更され得る変数または変数のベクトルを有することを必要とし得、次いで、何らかの式に従って発展するが、プリパルスの瞬間におけるこの変数の値のみが必要とされ得る。この場合、変数は個々のシナプスの一部であり得る。しかしながら、一部または全部のそのような変数の値がすべてのシナプスについて同じであるので、ENDからエンジンへのコンパイラ(リンカ)は、シナプスからこれらの変数を削除し、代わりに、「プリルール」(pre−rule)に従わなければならない、単一のプレシナプス変数を使用することができる。ENDフォーマットは、シナプスイベントルールまたはプレシナプスユニットイベントルールにおいてそのようなイベント前のトリガされる変数をコンパイラが識別するのを助け得る、特殊タグまたはラベル、またはステートメントを有し得る。
[0169]ENDプログラムが複数のエンジンの間で分散される場合、個々のエンジンは、そのような変数の値を個々のプレシナプススパイクを用いて転送することができる。いくつかの実装形態では、そのようなプレシナプスユニットからのシナプスを受容する個々のエンジンは、変数のローカルコピーを保持し、プレシナプスユニットをホストするエンジンにおいてそれが更新され得るのと同じ方法でそれを更新することができる。
[0170]スプネットネットワークはN=Ne+Ni=1000個のニューロンを備え得、ここで、Ne=800個の興奮性ニューロンであり、Ni=200個の抑制性ニューロンである。個々のニューロンは、ニューロンごとにM=100個のシナプスを備え得る。一部または全部の興奮性シナプスは可塑性(STDP)であり得、ランダム遅延は1msとD=20msとの間にわたる。抑制性−>興奮性シナプスは非可塑性であり得、D=1msの遅延を伴う。inh−>inhシナプスはないことがある。このモデルの低レベルEND3.0記述は以下のように表され得る。
<rule>
name=’QIF2’ //v式のみが定義される
code=’v+=(0.04*v+5).*v+140+I; I=4*rand()/MAX_RAND’
<rule>
name=’spike’
code=’v>30’
<unit_type>
name=’exc’
update_rule=’u+=0.02*(0.2*v−u); I−=u;’
update_rule=’QIF2’
event_condition=’spike’
after_event_rule=’v=−65; u+=8;’
init=’analog v=−70, u=−14, I=0;’
<unit_type>
name=’inh’ //抑制性ニューロン
update_rule=’u+=0.1.*(0.2*v−u); I−=u;’
update_rule=’QIF2’
event_condition=’spike’
after_event_rule=’v=−65; u+=2;’
init=’analog v=−70, u=−14, I=0;’
//クラスのNe個のレコード
<unit of exc>unit_id=i // i=1:Ne
//クラスのNi個のレコード
<unit of inh>
unit_id=i // i=1:Ni
<rule>
name=’LTD’
code=’sd−=LTD(postpre); w+=0.00001*prepre+sd*10*(1−0.9999^prepre); if (w<0) w=0; if (w>10) w=10; sd*=0.9999^prepre)’
init=’LTD={array};’
//sd’=−sd/10秒;0.9999^x=exp(−x/10000);ルールは0.9999^xが1回のみ計算されるように最適化され得る:w+10*sd;sd*=..;w−=10*sd;’それは、10*が削除されるようにさらに最適化され得る(しかし、LTPおよびLTDテーブルが10だけスケールアップされる)。
<rule>
name=’LTP’
code=’sd+=LTP(prepost);’
init=’LTP={array};’
<synaptic_type>
name=’GLU’
prepost_rule=’LTP’
postpre_rule=’LTD’
delivery_rule=’I+=w’
init=’analog w=6, sd=0;’
<synaptic_type>
name=’GABA’
delivery_rule=’I−=5’
delay=1 //デフォルト遅延、すべてのシナプスについて同じ
//クラス(exc−>excまたはinh)のNe*M個のレコード
<synapse of GLU>
pre=exc:i// i=1:Ne
post=exc:j または inh:j //ランダム、1とNeとの間、または1:Ni
delay //1とDとの間の乱数
//クラス(inh−>exc)のNi*M個のレコード
<synapse of GABA>
pre=inh:i// i=1:Ni
post=exc:j //1とNeとの間の乱数
リスティング 4
[0171]基本ネットワークインターフェース(ENI:elementary network interface)は、低レベル記述ENDフォーマットで記述される2つのシミュレーション、あるいはシミュレーションに/からデータを送信/受信することを必要とされ得る任意の他のエンティティ(たとえば、入力デバイス、可視化/デバッグツール、および/または他のエンティティ)間のデータ交換を実装する通信プロトコルとして実装され得る。ENIは、END自体と強固に組み合わせられ得、それは、大きいENDファイルをより小さい部片に区分して正しい結果を保証するために使用され得る。ENIのいくつかの部分は、通信イベントのENDエンジン処理の詳細な知識を必要とし得る。
[0172]次に図3を参照すると、2つの計算エンジン302(ENDモデルシミュレーションを実行している個々の計算エンジン)間の一般化された通信フレームワーク300が図示および説明されている。何らかの物理的通信手段(たとえば、周辺機器用のUSB/Bluetooth(登録商標)、またはより厳しい状況ではイーサネット(登録商標)/インフィニバンド)においてENI通信プロトコルが実装され得る。計算エンジン302のうちの個々は、利用可能なトランスポートレイヤ(図3では308として示された通信パイプ)の上でENI(図3では306として示された通信パイプ)を実装し得る。ENIは、エンジン302自体の間の通信のレイヤを形成するのではなく、ENDによって記述されたモデル間の通信のレイヤを形成することに留意されたい。
[0173]いくつかの実装形態では、エンジン302は、低レベルトランスポートレイヤによって結合され得、互いに発見し、自動的にペアリングし得る。(たとえば、IPプロトコルを介して接続されるエンジンについて)手動セットアップが可能であり得る。ENDファイルとともに通信仕様ファイル(ENIファイル)がエンジンに供給され得る。エンジンが、正しいENDファイルを実行する別のエンジンとペアリングされたことをそのエンジンが発見すると、ENIチャネルがネゴシエートされ、確立され得る(図1のグリーンパイプ)。ENI通信仕様ファイルは、双方が互いに理解し、正しいクラスの正しいユニットをターゲットにするのを助けるマッピングと見なされ得る。
[0174]図4に、図3のENI通信チャネル306のブロック図を示す。チャネル306は、それのエンドポイント(図3のEND AおよびEND Bなど、低レベルEND記述のID)と、通信がどのように実施されるのか、およびどんなタイプの情報が通信され得るのかを記述するパラメータのセットとによって定義され得る。通信チャネル306は、左から右方向に進む単方向であり得、送信エンティティ402と受信エンティティ404とによって定義され得る。データ転送は一方向であり得る(ただし、トランスポートレイヤにおけるネゴシエーションおよびメタ情報は制限されない)。
[0175]ENIチャネルパラメータは以下のうちの1つまたは複数を含み得る。
送信側および受信側のEND ID、ならびにチャネルを一意に識別する識別子、
送信側および受信側のクラス、
(クラス内のそれらの数によって数え上げられる)送信側および受信側のクラスインスタンス、
コンテンツ:いくつかのパラメータのイベント/スパイク通知または値、
送られるデータのフォーマット、
動作モード(同期、非同期)およびそれらのパラメータ(周波数、位相シフト、および/または他のパラメータ)、
および/または他のパラメータ
[0176]一実装形態では、ENI通信チャネルは、(i)スパイク(イベント)通知、および(ii)選択されたクラスパラメータ(変数)の値を交換するために使用され得る。これらの2つのコンテンツタイプは、チャネルを通して送られる異なるデータ、すなわち、以下を必要とし得る。
・(スパイク通知のための)ユニットインデックス
・(チャネルによって送信される一部または全部のインスタンスの)変数の実際値
[0177]一実装形態では、値変数でインターリーブされるネットワークユニットインデックス。そのような実装形態は、イベント(スパイク)を経験したユニットのために、ネットワークトラフィックを最小限に抑えるために値が送られる必要があるときに適用可能であり得る。要約すると、以下のデータフォーマットがサポートされ得る。
・値をもつかあるいは値をもたないインデックス(いくつかのユニット)。値が欠落している場合、データはスパイク通知として解釈され得る。
・インデックス(一部または全部のユニット)なしで、値のみ。(値が欠落している場合、データは、関係するユニットのうちの個々のスパイク通知として解釈され得る)。
[0178]これらの2つのコンテンツタイプ(すなわち、イベントおよびデータ)は単一のENIチャネルインスタンス中で混合されない。いくつかの実装形態では、ENIチャネルがイベント/スパイク通知を送信するように設定されたときはいつでも、ターゲットユニットは(「人工的に」)発火され得る。すなわち、イベントは受信側スパイクキュー上にスケジュールされ得るが、LTPまたはリセットのようないかなるイベント後アクションも実施されない。いくつかの実装形態では、外部で発火され得るユニットは、可塑性ルール(たとえば、LTP)に従わなければならないことがある局所着信シナプスを有しない。いくつかの実装形態では、ユニットが外部で発火され得るときはいつでもイベント後ルーが呼び出されないように、ユニットは外部発火トリガと可塑性ルールの両方に反応するように構成され得る。そのような構成は、シミュレーション整合性を保証し、分割されたシミュレーションが「単一のシミュレーション」と同じ結果を生成することを可能にする。したがって、適切に区分されたとき、(上記の制限を考慮すれば)分割シミュレーションを用いることで、単一のシミュレーションを用いたのと同じ結果を得ることが可能であり得る。いくつかの実装形態では、モデル区分は、必要に応じて特殊フェイク/受信ユニットの導入を介して可能にされ得る。
[0179]図4は、ENI通信チャネル中のコンテンツ、フォーマットおよび予想される挙動を示している。変数の値を送信する場合、チャネル記述は、送信側と受信側とのクラスの変数のセットを指定する。言い換えれば、ENIは、ソースクラス内のどの変数がターゲットクラス中のどの変数にマッピングされ得るかを指定する。整合性要件は、チャネルを通して送られる変数の内部表現が送信側と受信側との間で互換性があり得ること、または通信チャネルが必要な変換を実施することのいずれかであり得る。個々の通信イベントの後に、ターゲットクラス中の値は新しい値に更新され得る。
[0180]いくつかの実装形態では、ENIチャネルは、ENDフォーマットでユニットに関係するデータを送信する。いくつかの実装形態では、シナプスまたは接合に関係するデータ(たとえば、シナプス荷重または他の変数)が送信され得る。
[0181]ENIチャネルは、ENDフォーマットでのソースユニットクラスのいくつかの要素からターゲットクラスのいくつかの要素へのマッピングを導入することができる。個々のチャネルが、1つの送信側クラスと1つの受信側クラスとの間の通信を確立する。マッピングは、スパイク通知が送られている場合は、ワイヤ(図4参照)を通して送られ得るインデックスを確定するか、または、パラメータ値が通信され得る場合は、値の順序を確立する。
[0182]ENIチャネルは、個々のモデルシミュレーションサイクルにおいて情報を送る必要はない。ENIファイルは、送信/受信の(エンジンモデルシミュレーションサイクルで表される)周期T1、T2を指定する。指示子T1は送信側周期に対応し(したがって、データはT1サイクルごとにのみ送られ得る)、T2は受信側を記述する(データは、T2サイクルごとにシミュレーションに送出されていることが予想され得る)。データは任意のポイントにおいてエンジンに送出され得るが、エンジンは、それを保持(バッファ)し得、適切な受信ポイントにおいて、実行中のシミュレーションがそれを利用可能にし得る。
[0183]ENI通信チャネルは、同期および非同期という2つのモードで動作するように構成可能であり得る。同期モードでは、送信および送出は最も近いシミュレーションサイクルに同期させられ得る。非同期モードでは、(入力)データは、計算エンジンに連続的に与えられ、それが準備できたときはいつでもシミュレーションインスタンスのそれぞれのユニットに送出され得る。同期モードは、データのタイムリーな送出を保証するが、高い入力データレートでは深刻な性能ボトルネックを生じ得る。逆に、非同期モードは、変化するデータ送出時間により、定義されていないモデル挙動を生じ得る。
[0184]図5に、ENI(方式)の動作モードの例を提示する。組み合わせられた2つのフォーマットと、2つのコンテンツタイプと、2つの動作モードとが、実装形態の図6に示す立方体を形成する。いくつかの実装形態では、ENIは、可能なデータフォーマットに関して拡張され得、コンテンツアウェア圧縮を含み得る。
[0185]同期モードの一実装形態では、必要なデータが到着した(したがって、受信側が送信側と同期する)のでない限り、受信エンジンはデータ受信ポイントを通って進むことができないと仮定され得る。そのモードでのチャネルは、追加の特性、すなわち、位相シフトSを指定する。シフトS>0である場合、Sサイクル前に送られたデータパケットが到着している場合(エンジンは同期されているので、これらが送信側サイクルであるか受信側サイクルであるかは問題でない)、エンジンはシミュレーションを進め得る。位相シフトは、神経シミュレーションの実際の構造がそれを可能にするときはいつでも、通信チャネルのより良い利用を可能にする(すなわち、ENIチャネルを通して送られるいくつかの突起が、チャネルについての要件を緩和し、シフトを導入するために使用され得る、遅延を有する(図7Aおよび図7B参照))。基礎をなすトランスポートは、チャネルの位相シフト(データを送出するために必要とされる時間)に基づいてチャネルに優先度を導入し得る。
[0186]送信側は、送出通知を待つことなしに、データが送られ得た後に他のタスクを進めることができるが、メッセージが送出され得ない場合、チャネル上でデータを送るための次の試みは、シミュレーションを制止し得る。(位相シフトSで同期チャネルにおいてS回よりも多くの確証されない送出が発生した場合、送信エンジンは進み得ない)。
[0187]特に非同期(non-synchronous)(すなわち、非同期(asynchronous))モードに適用可能ないくつかの実装形態では、データを送信および受信する周波数が指定され得るが、エンジンは、データが送られ得るまでそれの実行を停止しない。受信側に対して、非同期モードはいかなるデータ送出タイミング制限をも課しない。いくつかの実装形態では、計算エンジンは、分割不可能なチャンクで到着するデータ(ブロック転送)を受信するように構成され得る。いくつかの実装形態では、データはストリームを介して転送され得る(ストリーミング転送)。たとえば、ブロック転送とストリーム転送との組合せなど、他の例が可能であり得る。ブロック転送サブモードでは、ブロック内のデータが受信側(たとえば、図4の受信側404)に送出され、通信トランザクションが完了し得た後に、送信メッセージが送出されると仮定され得る。ストリーミングサブモードでは、受信側において利用可能になるデータは、送信トランザクションが完了したか否かにかかわらず、エンジンに漸進的に送信され得る。
[0188]非同期ブロックモードでは、最新のメッセージは実際にエンジンに送出されるが、エンジンが受信ポイントに遭遇した前に受信された他のメッセージは廃棄され得ると仮定され得る(それは、(カメラのような)リアルタイム入力デバイスが、エンジンが処理可能であるよりも高速に非同期モードでデータを送っているときに有用であり得る)。非同期ストリーミングモードは、データを蓄積し、最も近い受信ポイントにおいてそれを送出する。
[0189]図7Aに、2つの計算エンジン702、704間の完全同期通信の一例を示す。図7Aの実装形態は、エンジン702、704間のタイムリーなデータ交換を保証することができ、通信遅延を低減することができ、それによって、大規模リアルタイムニューロンモデルシミュレーションランにおける、大量の一様でないデータフローに関連し得る遅延による潜在的通信チャネルジャミングを最小限に抑える。いくつかの実装形態では、通信帯域幅を著しく拡張する様々なデータ転送最適化が使用され得る。図7Bでは、イベントインデックスおよびデータ値は、(図7Aのそれぞれ太矢印706および細矢印708によって示される)別個のENIチャネルを通して送られ得、別個の受信ポイントを有する
[0190]図7Bに、1システムクロックサイクルの位相シフト(シミュレーションステップ)(両方向にS=1)を伴う同期通信の一例を示す。通信チャネルは、(図7Bの垂直矢印752、754によって示されるウィンドウ重複に起因してより一様に使用されるが、スパイクおよび値は1ms/ステップの遅延を伴って到着する。
[0191]送信ポイントは、計算エンジンによるモデル実行中のユニットの処理の直後に利用可能になるデータおよびイベントを記述するために使用され得るシミュレーションモデルの論理的収束を指す。同様に、受信ポイントは、個々のシミュレーションサイクル中に接合を処理する前に使用されるデータステージングコンテナを記述するために使用され得る。そのような構成は短い通信ウィンドウを出ることがあるが、以下の随意の最適化が可能であり得る。
[0192]送信ドライバは、ユニットを優先順に処理し、他のユニットがエンジンによってまだ並列に処理されている間、データが利用可能になると直ちにそのデータを送出する。
[0193]受信ドライバは、必要なデータが到着するのをまだ待っている間、局所接合を実行する。
[0194]チャネルがスパイク通知を送った場合、計算エンジンは、非局所ユニットからのスパイク上のデータを受信する前に、局所ユニットからのシナプスを処理することができる。そのような場合、通信ウィンドウは(図7Bの破線矢印によって示されるように)著しく拡張され得る。
[0195]リスティング7に、ENDを使用するネットワークシミュレーションにおいて有用な(送信側/受信側ドライバに知られる)ENI定義ファイルの一例を示す。以下の例はチャネルをセットアップするために必要とされ得るデータの一部または全部を示しているが、そのファイルの実際のフォーマットは、XMLまたは何らかの他のフォーマットに変更され得ることを当業者なら諒解されよう。例4:
[0196]例4は、‘Retina’ENDファイルが、発火したクラス‘RGC’から、‘LGN’ENDファイルを実行中のエンジンに、選択されたユニットのインデックスを送る、エンジンシミュレーションを記述している。クラス‘exc’の選択された要素が発火される。通信は同期式であり得、同期ポイントが送信側または受信側の一方または両方の上の個々のサイクルにおいて現れ、チャネルはシフト(遅延)を有しないことがある。
ENI_ID=’CommC’
SOURCE_ID=’Retina’
//ソースENDファイル(シミュレーション)のid
TARGET_ID=’LGN’
//ターゲットENDファイル(シミュレーション)のid
MODE=SYNC
T1=1
//送信側同期周波数 − データを(シミュレーションサイクルにおいて)いつ送るべきか
T2=1
//受信側同期周波数 − (シミュレーションサイクルにおいて)データをいつ予想すべきか
S=0
//受信側位相シフト
FORMAT=INDICES
//チャネルによってスパイキングユニットのみが観測される
SENDER_VALUES=NONE
//インデックスのみが送られる、すなわち、チャネルがターゲットユニットを発火する
target units
RECEIVER_VALUES=NONE
SENDER_CLASS=’RGC’
RECEIVER_CLASS=’exc’
NUMBER_OF_UNITS=500
//チャネルによっていくつのユニットが観測されるか?
SENDER_UNITS=84 23 395 39 201 34 ...
RECEIVER_UNITS=33 45 67 98 18 34 19 ...
リスティング 7
例5:
[0197]例5は、‘Camera’ENDが、クラスPixel中の‘R,G,B’変数の値を、Retina ENDファイル中のクラスRGCの変数‘Red,Green,Blue’に非同期的に送り得るエンジンシミュレーションを示している。
ENI_ID=’ENI2’
SOURCE_ID=’Camera’
//ソースENDファイル(シミュレーション)のid
TARGET_ID=’Retina’
//ターゲットENDファイル(シミュレーション)のid
MODE=ASYNC
STREAM=NO
//受信側がデータを蓄積しない(最新のデータのみがエンジンに送達される)
T1=1
//送信側同期周波数 − データを(シミュレーションサイクルにおいて)いつ送るべきか
T2=2
//受信側同期周波数 − データを(シミュレーションサイクルにおいて)いつ予想すべきか
FORMAT=NOINDICES
//すべての値が毎回送られる
SENDER_VALUES=’R,G,B’
//それらの変数の値が送られる
RECEIVER_VALUES=’Red,Green,Blue’
//それらの変数の値が更新される
SENDER_CLASS=’Pixel’
RECEIVER_CLASS=’RGC’
NUMBER_OF_UNITS=1024
//チャネルによっていくつのユニットが観測されるか?
SENDER_UNITS=1 2 3 4 5 6 7 8 9 10 11
RECEIVER_UNITS=33 45 67 98 18 34 19 .
リスティング 8
[0198]図13に示されているテーブルに、リスティング8において使用される通信パラメータの可能な値をリストする。
[0199]いくつかの実装形態では、(たとえば、高レベル記述フォーマットを使用して定義された)大規模神経シミュレーションモデルを扱うための多くの方法が存在する。いくつかの実装形態では、処理は単一の処理計算エンジンによって実施され得る。いくつかの実装形態では、処理はいくつかの計算エンジン(計算ノード)のセット内で分散され得る。効率的な作業負荷分散を達成するために、モデルは分割される必要がある。いくつかの実装形態では、モデルの1つの大きい低レベル記述(ENDファイル)が発生され得、分散型計算エンジンによって分割が実施され得る。この例は、リアルタイム負荷調整およびリバランシングの利益を提供するが、技術的により複雑であり、高度な分散負荷コントローラを必要とし得る。いくつかの実装形態では、モデルはENDファイルとENI通信チャネルとのセットに分割され得、それらは互いに別々に実行され得る。場合によっては追加の「フェイク」ユニットを導入することによって、ENIを使用して神経シミュレーションを複数の部分に分ける方法があり得る。
[0200]図8および図9に、本技術のいくつかの態様によるモデル区分の一例を示す。図8は、いくつかのユニット802と、シナプス804と、接合806とのを備え、ENDファイルEND0を使用して記述される、ENDモデル800を示している。シナプス804に沿った数字はシナプス遅延を示す。モデル800のシミュレーションは、単一の計算Engine0を使用して実行され得る。
[0201]図9は、それぞれENDファイルEND1、END2を使用して記述される、2つの分割910および920へのモデル800の分割を示している。分割910は、図9においてそれぞれ912、914、916として示された、ENI1、ENI2、ENI3という、3つのENIインターフェースを使用して相互結合され得る。いくつかの追加の「フェイク」ユニット(902とマークされた矩形)が導入されている。ENI 1チャネルは位相シフトS=2を有するので、チャネル通信遅延は、それぞれ図8および図9のシナプス804および904の比較によって示されるように、ターゲットシナプスのより小さい遅延を使用することによって補償され得る。そのような実装形態は、ENIチャネルで置き換えられ得る分割線(partition line)に沿って元のモデル(モデル800)中に最小遅延(たとえば、0)のシナプスがないときに可能であり得ることに留意されたい。高レベル定義言語からのコンパイラは、通信を最適化する(たとえば、通信ウィンドウを拡大する、送られるデータの量を平衡させる、および/または通信を最適化するための他の動作)ためにシミュレーションを分けながら、遅延を考慮に入れることができる。モデル900のシミュレーションは、図9に示されているEngine1およびEngine2という、2つの計算エンジンを使用して実行され得る。複数分割シミュレーション900は、分散型計算Engine1/Engine2が丸め誤差を回避するのに十分な数値精度を有するのならば、単一分割シミュレーション実装形態800と比較して、同じシミュレーション結果を生成することが可能であり得る。
[0202]分割されたモデル(図示せず)のいくつかの実装形態では、以下の特徴が実装され得る。
・(動的デバッギングおよび監視のための)オンザフライENIチャネルセットアップおよびリンクネゴシエーション、
・追加のデータフォーマット、たとえば、analogのサポート。
・ENIを実行するための専用ハードウェアインフラストラクチャのサポート、
・ENIフォーマットを指定するための便利で直観的な方法
[0203](図9の区分モード900などの)分散モデルシミュレーションに関して上記で説明したように、モデルはいくつかの分割(たとえば、分割910、920)に分けられ得る。個々の分割は単一の計算エンジン(図9のengine1、Engine2上で実行され得る。いくつかの実装形態では、計算エンジンは単一の処理ユニット(CPU)の実装形態を備え得る。個々の計算エンジンは、たとえば、CPU、FPGA、MCUなど、並列に動作する複数の処理ユニット(PU)を備え得る。そのような並列化は、(並列PUの数とともにスケーリングし得る)モデルシミュレーションスループットの大幅な増加を可能にする。並列モデル実行を可能にするために、シミュレーションドメインがいくつかの処理ブロック(処理ドメイン)に分割され得、個々のブロックは個々のPUに割り当てられる。個々の処理ブロックは、(i)局所コンパートメント、局所スパイクキュー、および/または他の局所情報を追跡することと、(ii)(END3.0では適用可能でない)着信「シナプス」のリスト(テーブル)を記憶することと、ロッキング(locking)なしに処理され得る局所接合のsリストを記憶することとを行うように構成され得る。コンペイトメント(compaitment)は、それらがスパイクするときはいつでも通知され得るドメインidでタグ付けされ得る。そのような外部から可視のコンパートメントがスパイクしたときは、適切な情報が隣接ドメインに送られ得、その隣接ドメインが処理の残り(たとえば、シナプスキュー)を行う。
[0204]個々のステップについて、外部(リモート)接合を介して結合されたコンパートメントの電位はそれらのターゲットドメインに送られ得る。それぞれ、受信された電位は、接合電流を計算するために使用され得る。
[0205]処理ドメインが交換していることがあるデータは、(i)スパイク、あるいは(ii)接合電位(または接合を越えて送信される何らかの他の変数)のうちの1つまたは複数である。多くの接合は樹状突起タイプ(局所)になるので、個々の交換におけるデータの量は、(ドメイン分割が樹状突起接合を考慮に入れる場合は)大きくならないことがある。
[0206]いくつかの実装形態では、マルチコア対称マルチプロセッサ(SMP:multi−core symmetric multiprocessor)ハードウェアを使用して異種並列化計算エンジンが実装され得る。いくつかの実装形態では、SMP実装形態は、実装すべきグラフィカル処理ユニットを含んでいることがある。
[0207]図10〜図12は、END言語のシンタックスに依存しない本技術の異なる例示的な実装形態を説明している。図10は、標準のCPU、GPU上に、または集積回路(たとえば、ASIC)において実装され得るENDエンジンの3つの基本構造を示している。これらは、「ユニット」1001と、「ダブレット」1011と、「トリプレット」1021とであり得る。ENDエンジンは、ユニット、ダブレット、およびトリプレットルールの実行と、これらの要素のメモリへのアクセスとを処理する。上記のENDフォーマットは、指定されたニューロンネットワークを実行するそのようなユニット、ダブレット、およびトリプレットを有する半導体回路を構成し得るハードウェア仕様言語として扱われ得る。
[0208]いくつかの実装形態では、個々の基本構造(ユニット、ダブレット、およびトリプレット)は、マルチスレッドプロセッサ上でシングルスレッドとして実装され得る。いくつかの実装形態では、個々の構造は、時間多重化を使用してそれぞれプロセスユニット、ダブレット、およびトリプレットに対して構成された専用回路(場合によっては、ユニット、ダブレットおよび、トリプレットのために3つの異なる回路)を備え得る、スーパーユニット、スーパーダブレット、およびスーパートリプレットとして実装され得る。
[0209]いくつかの実装形態では、ユニット1001は、ニューロンまたはニューロンの一部、たとえば、樹状突起コンペイトメントを表す。いくつかの実装形態では、ユニット1001はニューロンの集団を表し、ニューロンのアクティビティは、その集団の「平均発火レート」アクティビティ、またはその集団のアクティビティの何らかの他の平均場近似を表す。個々のユニットは、それら自体のメモリ変数と、それのメモリ上でどんな動作が実施され得るかを記述する更新ルールとを有し得る。動作はクロックベースであり得、すなわち、シミュレーションの個々のタイムステップで実行され得、またはそれらはイベントベースであり得、すなわち、いくつかのイベントがトリガされ得るときに実行され得る。ユニット更新ルールは他のユニットに属する変数を含まないことがある。したがって、ユニット更新ルールの実行は、他のユニットのユニット更新ルールの実行の順序とは無関係であり得、それにより、ユニット更新ルールの並行実行が可能になる。
[0210]ユニット変数の値に応じて、ユニットは、ダブレットを介して他のユニット中のシナプスイベントをトリガするイベント、すなわち、パルスまたはスパイクを発生し得る。たとえば、図10のユニット1002は、プレシナプスニューロン(プレシナプスユニット1002)からポストシナプスニューロン(ポストシナプスユニット1003)へのシナプスを表すダブレット1011を介してユニット1003に影響を及ぼすことができる。
[0211]ユニットは、イベントがトリガされた後にトリガされ得るイベント後更新ルールを有し得る。これらのルールは、イベントに起因するユニット変数の変更、たとえば、電位変数のスパイク後リセットを受け持ち得る。
[0212]個々のダブレットは、それら自体のメモリ変数を有し得、ポストシナプスユニットの変数にアクセスし得る。アクセスは読取りおよび書込みを含み得る。個々のダブレットは、シナプス可塑性を実装するためにダブレットメモリに変更を加え、パルスの送出を実装するためにポストシナプスユニットメモリに変更を加える、ダブレットイベントルールを有し得る。ダブレットイベントルールは、上記のENDフォーマットで記述されたシナプスルールを包含する。
[0213]複数のダブレット(たとえば、図10の1016〜1018)が、対応する複数のプレシナプスユニット1006〜1008を単一のポストシナプスユニット1009に結合することができるので、ダブレットがポストシナプスユニットメモリを並列にまたは任意の順序で変更し、結果が順序とは無関係であることが望ましいことがある。これは、ポストシナプスユニットメモリに対する動作が(GPUの場合のように)アトミック加算であるか、(対数変換を介した加算と等価である)アトミック乗算であるか、または(個々のダブレットが同じ値にリセットすることを試みる)値にリセットすることである場合、達成することが容易になり得る。いくつかの実装形態では、ダブレットイベントルールによって変更されているポストシナプスユニット変数は、ルールにおいて使用しないことがある。結果はダブレットイベントルールの実行の順序に依存し得る。
[0214]ニューラル計算のコンテキストでは、プレシナプスユニットによって生成されるイベントと、そのユニットによってトリガされるダブレットイベントルールの実行との間に時間遅延があり得るように、軸索伝導遅延を有することが望ましいことがある。個々のダブレットが何らかの遅延を伴ってイベントを受信するように、遅延はバッファとして実装され得る。すなわち、ENDエンジンは、プレシナプスユニットによって生成されたイベントを登録し、遅延の大きさに応じて遅延ラインキュー中に特殊マーカーを入れる。遅延はカウントダウンされ得、次いで、ダブレットイベントルールの実行のためにイベントがダブレットに送信され得る。
[0215]いくつかの実装形態では、ダブレットはプレシナプスユニット変数へのアクセスを有しない。しかしながら、いくつかの実装形態では、ダブレットはいくつかのプレシナプスユニット変数へのアクセスを有し得る。いくつかの実装形態では、プレシナプスユニットは、ユニット(すなわち、イベントベースメモリ)によってトリガされたイベント中に変更される変数を有し得、この変更は他のプレシナプスユニット変数の値に依存しない。そのような一例では、そのようなイベントベースメモリは、プレシナプスユニットメモリ中に常駐し得、あるいは等価的に、それは、イベントトリガされた変数のコピーが個々のダブレットにおいて常駐したかまたはダブレット間で共有されたかのように扱われ得る
[0216]ダブレットイベントルールは、図11に示すように、いくつかの実装形態ではイベント後ルールとダブレット更新ルールとを含み得る、ダブレットルールのクラスの一部であり得る。イベント後ルールは、ポストシナプスユニットによってトリガされ、そのポストシナプスユニットに結合しているダブレットのために実行されるルールであり得る。いくつかの実装形態では、ダブレットのイベント後ルールは、直前のプレシナプスイベントのタイミングに依存し得る。ダブレット更新ルールは、1つまたは複数のタイムステップで(たとえば、時間期間内のシステムクロックサイクルごとに)個々のダブレットについて実行されるクロックベースルールであり得る。
[0217]図12に示された実装形態では、ダブレットイベントルールは、(i)プレシナプスユニットとポストシナプスユニットとのイベントのタイミングに基づいて構成され、(ii)ダブレットメモリ変数の変更を制御する、タイミングイベントルールを備え得る。図12に示された更新ルールは、スパイクタイミング依存可塑性(STDP)、すなわち、スパイキングネットワークにおける可塑性の標準形式を実装することにある。
[0218]タイミングイベントルールは、最初に発火するプレシナプスニューロン(または最初にプレシナプスニューロンから到着するスパイク)と、次いで、その後に発火するポストシナプスニューロン、たとえば、パルス1213、1214の前に発生されたパルス1202とに対応するSTDPの一部分を実装するイベント前後ルールを備えることができる。古典的STDPでは、これはSTDP曲線の長期増強(LTP)部分に対応し得る。このルールは、プレシナプス発火、および少なくとも1つの後続のポストシナプス発火、たとえば、(ライン1223で示される)ペア1202、1213のタイミングに基づいてダブレットのメモリを変更し、それは時間差に依存し得る。
[0219]タイミングイベントルールは、たとえば、パルス1211、1212が発生し、その後にパルス1202が発生したように、最初にポストシナプスユニットが発火し、次いで、その後にプレシナプスユニットが発火したときに行われる、古典的STDPの長期抑圧部分を実装するイベント後前ルールを備えることができる。このルールは、プレシナプス発火とポストシナプス発火との相対的タイミングに基づいてダブレットメモリを変更し、それは時間差に、すなわち、パルス1212のタイミングとパルス1202のタイミングとの間の差に依存し得る。
[0220]イベント前後ルールとイベント後前ルールの両方は、ポストシナプスユニットメモリ中の変数の値に依存し得る。
[0221]いくつかの実装形態では、共通のプレシナプスユニットを有するダブレットが、一緒にグループ化され、したがってシステムメモリ中に割り振られ得るように、ダブレットのプレシナプスユニットに従ってダブレットのメモリを割り振ることが望ましいことがある。この手法はシステムメモリへのランダムアクセスを最小限に抑えることができる。
[0222]ダブレットイベントルールは、ダブレットメモリとポストシナプスユニットメモリとの値に基づいてポストシナプスユニットの変数の値を変更するパルス送出ルールを備えることができる。
[0223]ダブレットの記述は、ENDフォーマットでのシナプス変数とルールとの記述によって行われ得る。
[0224]上記の図10に示されているように、トリプレット1021は2つのユニット1004および1005を結合する。そのようなトリプレットはENDフォーマットで接合を表す。いくつかの実装形態では、トリプレット1021は2つのニューロン間のギャップ接合結合を備え得る。いくつかの実装形態では、トリプレット1021は、ニューロンの2つの隣接する樹状突起コンパートメントを結合する抵抗結合に対応する。いくつかの実装形態では、トリプレット1021は両方の接合タイプの組合せであり得る。トリプレットはそれ自体のメモリを備え得、それは両方のユニットのメモリへのアクセスを有する。トリプレットは、個々のシミュレーションタイムステップで実行されるトリプレット更新ルールを備え得る。トリプレット更新ルールは、個々のトリプレットのメモリと、少なくとも1つのユニットのメモリとを更新し得る。いくつかの実装形態では、トリプレット更新ルールは両方のユニットのメモリを更新することができる。そのような更新は順序とは無関係であることが望ましいことがあるので、少なくとも1つのユニットのメモリ更新は、トリプレット更新ルールに関与しないユニット変数へのアトミック加算を介して実施され得る。
[0225]トリプレットの記述は、ENDフォーマットでの接合の記述によって行われ得る。
[0226]いくつかの実装形態は、イベントがないが、個々のユニットがトリプレット更新ルールを介して他のユニットに信号を送信する、純粋平均発火レートモデルを実装し得る。
[0227]トリプレットは、共通のプレシナプスユニットから生起したトリプレットが一緒にグループ化されるように、プレシナプスユニットに従ってシステムメモリ中に割り振られ得る。トリプレットはポストシナプスユニットに従って割り振られ得る。いくつかの実装形態では、トリプレットは、ニューラルネットワークの構造に従ってシステムメモリ中に割り振られ得る。たとえば、ニューラルネットワークがマルチコンパートメント樹状突起を有する場合、樹状突起コンパートメントを結合することを受け持つトリプレットは、システムクロックサイクル中に樹状突起ツリー上のダイナミカル(dynamical)が評価されるときにメモリアクセスに影響を与えないように、最適に割り振られ得る。
[0228]いくつかの実装形態は、ダブレットを介してポストシナプスユニットにパルスを送出するイベントをユニットがトリガする、純粋イベント駆動型アーキテクチャを実装し得る。クロックサイクル中に少なくとも単一のパルスを受信したユニットはイベント条件についてテストされ得、そのイベント条件が満たされた場合、イベント後ルールが実行され、パルスが他のユニットに送出され得るように、対応するダブレットイベントルールが実行され得る。
[0229]イベント駆動型アーキテクチャ(EDA:Event Driven Architecture)は、モデルの神経科学記述から計算記述を分離するように構成されたアブストラクションレイヤとして働くENDフォーマットの一般化として定義され得る。EDAは、イベントによってトリガされるメモリ管理、並列処理、およびルールを定義し、EDAコードへのENDコードの直接コンパイルを可能にする。
[0230]ENDフォーマットおよびEDAアーキテクチャでのイベントは、物理的であるか仮想的であるかににかかわらず、パルス、パルスのソフトウェア表現、パルスのステレオタイプバースト、または他の離散的時間イベントに対応する。
[0231]EDAメモリ管理は、以下において(変数の所有権の観点から)ENDフレームワークとは異なる。
[0232]ユニットはそれら自体の変数を所有する。ユニットAのための更新ルールが実行されるとき、それは、ネットワークの他のユニットの変数へのアクセスを必要としないことがある。逆に、他のユニットによってルールが実行されないことは、ユニットAの変数へのアクセスを必要とし得る。
[0233]シナプスは、荷重、last_activeおよび/または他の変数などの変数など、それら自体の「シナプス」変数を所有し、シナプスはポストシナプスユニット中のいくつかの変数を参照し得る(それらから読み取り、それらに書き込み得る)。presynaptic_ruleまたはpost−synaptic_ruleのいずれかが実行されるとき、2つ以上のシナプスが、ポストシナプスユニットの同じ変数にアクセスし、それを変更することを試み得る。ただし、シナプスはそれら自体のシナプス変数については競合しない。
[0234]接合はそれらの「接合」変数を所有するが、接合はunit_1およびunit_2中の変数にアクセスし、それらを変更する。接合が実行されるとき、それらの接合変数への並列アクセスについて競合がないことがあるが、unit_1およびunit_2変数へのアクセスについて競合があり得る。
[0235]したがって、ユニット、シナプス、および接合は、変数の所有権に関してユニット、ダブレット、およびトリプレットとして扱われ得る。ユニットは変数のセットを所有し、シナプスは、変数の1セットを所有し、ユニットによって所有される別のセットを参照する。接合は、変数の1セットを所有し、2つのユニットによって所有される変数の2つの他のセットを参照する。この命名は、END1.0、2.0および3.0フォーマット、ならびに以下の例示的な実装形態を記述するために適用され得る。
[0236]クラスメンバーEvent_conditionは以下のルールの実行をトリガする。
・イベントをトリガしたユニット(トリガユニット)に作用するAfter_event_rule、
・トリガユニットから他のユニットにポイントするシナプス(ダブレット)に作用するpresynaptic_event_rule、
・他のユニットからそのユニットをポイントするシナプス(ダブレット)に作用するpost−synaptic_event_rule
[0237]クラスメンバーUpdate_ruleは、ネットワークシミュレーションの個々のタイムステップで実行され得、(場合によってはバックグラウンドプロセスを介して)ユニット、シナプス、および接合中の、すなわち、ユニット、ダブレット、およびトリプレット中の変数を更新する。
[0238]要素としてのユニット、ダブレット、およびトリプレットは、ネットワーク要素と呼ばれることがある。ENDフォーマットは、したがって、(i)要素と、(ii)要素に作用するルールと、(iii)要素によってトリガされ、他の(ターゲット)要素に作用する他のルールの実行を引き起こすイベントとを定義する。
[0239]本技術のいくつかの態様によるEDAフレームワークの開発の背後にある目的は以下を含む。
・それら自体の変数を有し、さらに他の要素中の変数を参照し得る、要素(たとえば、ユニット、ダブレット、トリプレット、および/または他の要素)、
・要素中の変数に作用するクロック駆動型ルール(ルール)、および
・いくつかの要素によってトリガされ、他の(ターゲット)要素中の変数に作用する、イベント駆動型ルール(イベント)
[0240]EDA命令セットは、抽象的(シンボル)変数に作用するルールを定義することから開始する。ルールは、サイクルなしでルールの有向グラフを形成するために、前に定義された他のルールを含み得る。要素は、同じまたは他の要素に作用するクロック駆動型ルールによって定義され得る。イベントは、他の要素に適用されるトリガ条件およびターゲットルールによって定義され得る。
[0241]EDA命令セットの一例をリスティング5において以下に示す。リスティング5中のボールドのキーワードはEND命令セットの構成要素を示すが、非ボールドのワードはユーザ定義の名前および値を示す。
rule_name=rule
code=’....’
code=another_rule_name
init=’....’
リスティング 5
[0242]リスティング5において、識別子「code」は、コードの任意の文字、または前に定義された別のルールの名前を参照することができる。リスティング5ではCコードシンタックスが使用されているが、任意の他の言語記述(たとえば、C#、Python、Perl、および/または他の言語)が本技術に等しく適用可能であることを当業者なら諒解されよう。ルール内に複数のコードおよびルールが含まれることがあり、それらは包含の順序で実行され得る。いくつかの実装形態では、複数の要素タイプにおいて使用されるルールは別々に定義され得、したがって、エンジンはそれのアクセラレーショントリックを使用してそのようなルールを並列に実行することができる。ステートメント「init」は、ルールを実行するために必要とされる静的(ルール内では大域)変数を定義し、たとえば、それはルックアップテーブルを定義する。「code」は、「init」において定義されている静的変数を、要素において定義されているインスタンス変数(下記参照)を、または他の要素タイプにおいて定義されている他のインスタンス変数を参照し得、たとえば、「I+=A.w+B.w」は、インスタンス変数Iを、ならびに要素AおよびBにおいて定義されている変数wを参照する。
element_name=element
rule=rule_name
rank=a number or range of numbers
init=’....’
[0243]上記は要素タイプの定義である。ここで、「rule」は、前に定義されているルールを、またはコードの文字を参照する。パラメータ「rank」は、クロックサイクル内のルールの実行のランク順序を指定する。それは間隔[0 1]からの固定小数点値を取る。たとえば、rank=0.45は、このルールが、より低いランクをもつ個々のルールの後に、およびより高いランクをもつ個々のルールの前に、しかしランク0.45を有するルールと並列に実行され得ることを意味する。ランクが間隔として与えられた、たとえば、rank=min:maxの場合、エンジンは、rank<minである個々のルールの後に、およびrank>maxである個々のルールの前に、任意の時間にこのルールを実行する自由を有する。「rank」が欠落している場合、それはデフォルト値rank=0:1と等価であり、すなわち、エンジンは、このルールをいつ実行すべきかを選択する完全な自由を有する。ランクが1よりも大きい場合、エンジンは、ルールを実行するサイクルをスキップする。たとえば、rank=2.45は、エンジンが、ルールの次の実行まで2サイクルをスキップすることを引き起こし得る。ストリング「init」は、要素のインスタンス(局所)変数の名前を定義し、それらのデフォルト初期値を設定する。
id=element_name
A=other_element_name.id
B=other_element_name.id
variable_name=value
[0244]上記は要素タイプのインスタンスの定義である。ここで、「element_name」は、前に定義されている要素タイプの名前である。ライン‘variable name=value’は、要素定義中の「init」ステートメントにおいて定義されているデフォルト値とは異なるインスタンス変数の値を設定し得る。要素定義中のrule_nameが他の要素を参照する場合(これはダブレットおよびトリプレットについて当てはまる)、これらの要素のidがここで指定され得る。他の要素を参照するために、必ずしもAおよびB(またはENDにおけるUnitiおよびUnit_2)ではなく、いかなる変数名をも使用することができることに気づかれたい。
event_name=event
trigger_condition=rule_name
trigger_rank=number or number range
target_code=rule_name
target_rank=number or number range
[0245]上記はイベントタイプの定義である。ここで、「trigger_condition」は、真/偽を戻すルールの名前またはストリングコードである。(要素に適用される、下記参照)この条件は、「trigger_rank」によって与えられるランクで評価され得る。条件が真であるとき、それは、ランク「target_rank」で(以下で定義される)ターゲット要素における「target_code」の実行をトリガする。
event_name
trigger=element_name.id
target=element_name.id
[0246]上記はイベントタイプのインスタンスの定義である。それは、どの要素が「trigger」であり、どの要素がイベントの「target」であるかを指定する。
例3:遅延なしのスプネット
[0247]ランダムに結合された800個の興奮性ニューロンと200個の抑制性ニューロンとのネットワーク(exc−>allおよびinh−>exc結合のうちの100個)が、STDPと伝導遅延なしとに従わなければならない興奮性シナプスで定義され得る(伝導遅延については、次の例を参照されたい)。
QIF=rule
code=’v+=0.5f*((0.04f*v+5.0f)*v+140.0f−u+I); v+=0.5f*((0.04f*v+5.0f)*v+140.0f−u+I); I=0.0f;’
exc=element
code=’u+=0.02f*(0.2f*v−u);’
code=QIF
rank=0
init=’float v=−65.0f; float u=−13.0f; float I=0.0f; int last_spike=−1000’
1:800=exc
inh=element
code=’u+=0.01f*(0.2f*v−u);’
code=QIF
rank=0
init=’float v=−65.0f; float u=−13.0f; float I=0.0f; int last_spike=−1000;’
1:200=inh
spike=rule
code=’v>30’
after_spike_reset_exc=event
trigger_condition=spike
trigger_rank=0.1
target_rule=’u+=8; last_spike=now’
target_rank=0.2
after_spike_reset_exc
trigger=exc.1:800
target=exc.1:800
after_spike_reset_inh=event
trigger_condition=spike
trigger_rank=0.1
target_rule=’u+=2; last_spike=now’
target_rank=0.2
after_spike_reset_inh
trigger=inh.1:200
target=inh.1:200
inh_syn_event=event
trigger_condition=spike
trigger_rank=0.1
target_rule=’I−=5.0f’
target_rank=0.3
//200*100個のそのようなエントリを作る
inh_syn_event
trigger=inh.<random number between 1 and 200>
target=exc.<random number between 1 and 800>
weight update=rule
code=’w+=0.01f+sd; if (w<0.0f) w=0.0f; if (w>10.0f) w=10.0f; sd*=0.9f’
exc_synapse=element
code=weight_update
rank=999:1000//そのサイクル内の任意の時間
init=’float w=6.0f; float sd=0.0f; int last_active−=1000’
id=exc_synapse
post=<either exc.id or inh.id with id=random>
PSP_LTD_rule=rule
code=’post.I+=w; sd−=LTD(now−post.last_spike);
last_active=now’
init=’float LTD={...}’
PSP_LTD_event=event
trigger_condition=spike
trigger_rank=0.1
target_rule=PSP_LTD_rule
target_rank=0.3
PSP_LTD_event
trigger=exc.<each id>
target=exc_synapse.<each corresponding id>
LTP_rule=rule
code=’sd+=LTD(now−last_active)’
init=’float LTP={...}’
LTP_event=event
trigger_condition=spike
trigger_rank=0.1
target_rule=LTP_rule
target_rank=0.4
LTP_event
trigger={各exc.idおよびinh.idについて}
target=exc_synapse.<each corresponding id>
リスティング 6
[0248]リンカは、計算エンジンが個々のユニットについてモデルシミュレーションステップごとに1回‘spike’条件を実行するように、(同じランクをもつ内にある)‘spike’ルールによってトリガされるイベントを単一のイベントにグループ化するように構成され得る。
[0249]いくつかの実装形態では、ルールの定義中で与えられる中のランク情報。このようにして、イベントの定義においてランクを繰り返す必要がなくなり得る。
[0250]スパイキングニューロンネットワークの1つまたは複数の実装形態(たとえば、強化学習)では、ニューロンによるポストシナプス反応発生から可塑性適応を分離することが有益であり得る。
[0251]図14に、1つまたは複数の実装形態によるイベント駆動型ネットワーク更新メカニズムを示す。ネットワーク1400は、たとえば、スパイク反応プロセス(SRP:Spike Response Process)1422に従って動作可能な、少なくとも1つのスパイキングニューロン1420を備え得る。ニューロン1420は、M−入力結合1404を介してM次元入力スパイキングストリームX(t)1402を受信し得る。いくつかの実装形態では、M次元スパイクストリームはニューロン1420へのM−入力シナプス結合に対応し得る。図14に示されているように、個々の入力結合は、学習中に調整されるように構成され得る結合パラメータ1406wijによって特徴づけられ得る。1つまたは複数の実装形態では、結合パラメータは結合有効性(たとえば、荷重)を備え得る。いくつかの実装形態では、パラメータ1406はシナプス遅延を備え得る。いくつかの実装形態では、パラメータ1406はシナプス伝達の確率を備え得る。
[0252]いくつかの実装形態では、ニューロン1420は、結合1408を介して外部入力を受信するように構成され得る。1つまたは複数の実装形態では、入力1408は、図14の中にr+、r、として示された、トレーニング入力、たとえば、正および/または負の強化信号を備え得る。以下のように表され得る、強化信号スパイクストリームを示す。
ここで、
は、それぞれ、たとえば、正および負の強化に関連するスパイク時間を示す。
[0253]教師あり学習のいくつかの実装形態では、ニューロンポストシナプス反応をトリガするために教師スパイクが使用され得る。
[0254]強化学習のいくつかの実装形態では、外部信号(たとえば、強化スパイク)が、(たとえば、一実装形態では、短い時間期間の間、シナプス荷重を増加させることによって)ニューロンを探究的レジームに入りさせ得る。
[0255]ニューロン1420は、出力Y(t)(たとえば、ポストシナプススパイク)を発生するように構成され得、この出力は、出力結合1414を介して所望のターゲット(たとえば、他のニューロン1420_1、1420_2、1420_3)に送出され得る。図14に示されているように、個々の出力結合1414は、学習中に調整され得る結合パラメータ1416によって特徴づけられ得る。1つまたは複数の実装形態では、結合パラメータ1416は結合有効性(たとえば、荷重)を備え得る。いくつかの実装形態では、パラメータ1416はシナプス遅延を備え得る。いくつかの実装形態では、パラメータ1416はシナプス伝達確率を備え得る。
[0256]ニューロン1420は、たとえば、ロボットアームを制御するために、たとえば、上記に組み込まれる、「STOCHASTIC SPIKING NETWORK LEARNING APPARATUS AND METHODS」と題する米国特許出願第13/487,533号などに記載されている、コントローラ機能を実装するように構成され得る。出力信号yは、所望の軌道に沿ってロボットアームを移動するように構成されたモーター制御コマンドを含み得る。プロセス1422はプロセス内部状態qによって特徴づけられ得る。内部状態qは、たとえば、ニューロンの膜電位、膜のコンダクタンス、および/または他のパラメータを備え得る。プロセス1422は、ニューロンのシナプス荷重1406、1416、反応発生(発火)しきい値、静止電位、および/または他のパラメータを備え得る、1つまたは複数の学習パラメータによって特徴づけられ得る。1つまたは複数の実装形態では、パラメータwは、ネットワークのユニット(たとえば、ニューロン)間の信号伝達の確率を備え得る。
[0257]入力信号x(t)は、特定の制御タスクを解決するために使用されるデータを備え得る。ロボットアームまたは自律ロボットを伴うものなど、1つまたは複数の実装形態では、信号x(t)は、生センサーデータ(たとえば、近接度、慣性、および/または地形イメージング)、および/または前処理されたデータ(たとえば、加速度計から抽出された速度、障害物までの距離、および/または位置)のストリームを備え得る。オブジェクト認識を伴うものなど、いくつかの実装形態では、信号x(t)は、入力画像中のピクセル値のアレイ(たとえば、RGB、CMYK、HSV、HSL、および/またはグレースケール)、あるいは前処理されたデータ(たとえば、顔認識のためのガボールフィルタのアクティブ化のレベル、輪郭、および/または他の前処理されたデータ)を備え得る。1つまたは複数の実装形態では、入力信号x(t)は、たとえば、現在の状態と所望の動きとに基づいてロボットの将来の状態を予測するために、所望の動き軌道を備え得る。
[0258]1つまたは複数の実装形態では、そのうえ、ネットワーク1400は、たとえば、その全体が参照により本明細書に組み込まれる、2012年3月15日に出願された「TAG-BASED APPARATUS AND METHODS FOR NEURAL NETWORKS」と題する米国特許出願第13/385,938号に記載されている、高レベル神経形態学的記述(HLND:High Level Neuromorphic Description)フレームワークを使用して実装され得る。1つまたは複数の実装形態では、HLNDフレームワークは、本明細書で説明するイベントベース更新方法を扱うために増補され得る。
[0259]ニューロンプロセス1422は、イベントベース更新を実現するように構成され得る。1つまたは複数の実装形態では、イベントベース更新は、以下で詳細に説明するイベントベース機能の様々な態様を実現するように構成された複数のイベントタイプ(たとえば、樹状、軸索、カスタム、および/または、他のイベントタイプ)を備え得る。
[0260]いくつかの実装形態では、イベントベース更新機能を可能にするために、END2.0実装形態が、図19に関して以下で説明するように拡張され得る。いくつかの実装形態では、END2.0フォーマット1900はPOST−SYNAPTIC_EVENT(PE)を備え得る。拡張ENDフレームワークの1つまたは複数の実装形態(たとえば、図19のEND2.1実装形態1902)では、POST−SYNAPTIC_EVENTを離れている間、以下で詳細に説明する図15A〜図15Bの例によって示されるように、現行のEND2.0フォーマットとの後方互換性を可能にするために、追加の単一のDENRITIC_EVENTが実装され得る。
[0261]いくつかの実装形態(たとえば、図19のEND2.1実装形態1904)では、たとえば、上記で詳細に説明したように、ポストシナプス反応を発生することなしにプレシナプスおよび/またはイベントトリガ更新を処理するために、CUSTOM _EVENT APIが与えられ得る。END2.1実装形態1904は、以下で詳細に説明する図15Cのリスティングに示されている。END2.1実装形態1904はEND2.0フォーマットとの後方互換性がある。
[0262]いくつかの実装形態(たとえば、図19のEND2.1実装形態1906)では、たとえば、上記で説明したプレおよび/またはポスト更新を処理するために、POST−SYNAPTIC_EVENTが削除され得、CUSTOM _EVENT APIが与えられ得る。END2.1実装形態1906は、以下で詳細に説明する図15D〜図15Fのリスティングに示されている。END2.1実装形態1906は現行のEND2.0フォーマットとの後方互換性がないが、それは、イベント処理のための統合されたフレキシブルな手法を提供し、有利には、たとえば、より少数の論理条件の処理により、より高速なコード実行を生じ得る。ただし、特にユニットごとに可変数のイベントを実装するとき、開発者によって特別な注意が払われる必要がある。
[0263]ユニットタイプ定義は以下のように樹状および/または軸索イベント条件を備え得る。
<unit_type>
... members of END 2.0 unit_type definition (e.g. name, update_rule)
dendritic_event_condition
after_dendritic_event_rule
ここで、
dendritic_event_condition
は、樹状突起イベント、たとえば、‘denritic_event_flag==true’を検出するように構成された論理ステートメントを定義する。いくつかの実装形態では、イベントルールは個々のクロックサイクル(モデルタイムステップ)で実行され得る。クラスがベースクラスから派生されたとき、サブクラスの樹状突起イベント条件がベースクラスの樹状突起イベント条件に取って代わる。ユニット定義メンバー
after_dendritic_event_rule
は、樹状突起イベントが検出されたときに実行され得るコードを備え得る。派生サブクラスについて、サブクラスafter_dendritic_event_ruleはベースクラスのafter_dendritic_event_ruleの前に実行され得る。
[0264]シナプスクラスは以下のように樹状突起イベントによって増補され得る。
<synaptic_type>
... members of END 2.0 synapse type (e.g. presynaptic_event_rule)
dendritic_event_rule
ここで、ポストシナプスユニットのdendritic eventを発生することによってトリガされるdendritic_event_ruleのコード。いくつかの実装形態では、それは、調節されたSTDPを実行することができる。
[0265]いくつかの実装形態では、たとえば、図14の破線の矢印1426によって示されるように、ニューロン1420の入力結合を変更する(たとえば、シナプス荷重1406を調整する)ために、内部(樹状突起とも呼ばれる)イベントが定義され得る。
[0266]1つまたは複数の実装形態では、樹状突起イベントは外部トリガによってトリガされ得る。そのような一実装形態では、外部トリガは、図14に示された強化信号1408を備え得る。いくつかの実装形態では、外部信号1408は、たとえば、タイマーなど、別のネットワークエンティティによって生成される信号を備え得る。1つまたは複数の実装形態では、信号1408は、ネットワークの入力および/または出力スパイキングアクティビティ(たとえば、スパイクタイミング)を記憶するように構成された、バッファに関連付けられたオーバーフローアラームを備え得る。バッファオーバーフローイベント発生の一実装形態は、その全体が参照により本明細書に組み込まれる、「APPARATUS AND METHODS FOR SYNAPTIC UPDATE IN A PULSE-CODED NETWORK」と題する、2011年9月21日に出願された、同一出願人が所有する米国特許出願第13/239,255号に記載されている。
[0267]いくつかの実装形態では、樹状突起イベントは、図14のニューロン1420のプロセス1422によって内部でトリガされ得る。1つまたは複数の実装形態では、内部イベントは、内部時間満了、ニューロンスパイキング履歴(プレシナプスおよび/またはポストシナプス)を記憶し得る内部バッファに関連するオーバーフローインジケータを備え得る。たとえば、プロセス1422の状態に関係するものなど、内部および/または外部イベントトリガの多くの他のソースが存在し得ることを当業者なら諒解されよう。
[0268]本開示の原理によれば、ターゲット(たとえば、図14のニューロン1420_1、1420_2、1420_3)へのポストシナプス反応伝搬を引き起こすことなしにシナプス更新を実装するために、内部イベントが使用され得る。例として、1つまたは複数の実装形態では、ニューロン前実行に基づいて1つまたは複数の入力結合1404の可塑性の更新をトリガする(たとえば、荷重1406を変更する)ために、外部強化信号1408が使用され得る。
[0269]1つまたは複数の実装形態では、ポストシナプス反応なしのシナプス更新は、望ましくないネットワークスパイキングアクティビティ(たとえば、ノイズ)を低減し得る。そのような望ましくないスパイキングは、しばしば、プラント(たとえば、モーター)の機能不全を引き起こし得る。たとえば、不要な(たとえば、繰返し)モーター制御コマンドを生じることなしにモーターコントローラの学習収束を改善するために、樹状突起イベントとともにより高速な報酬信号(たとえば、1Hz〜100Hz)が使用され得る。学習誤りが十分に小さいとき、モーター制御出力を引き起こすために軸索イベントが使用され得、それによってプラント寿命を増加させる。
[0270]いくつかの実装形態では、内部でトリガされた樹状突起イベント(たとえば、プレシナプスバッファオーバーフロー)は、バッファコンテンツがクリアされ、ニューロンプロセス1422の完全性が維持され得るようなシナプス更新を引き起こし得る。
[0271]いくつかの実装形態では、樹状突起イベントは、図14の破線の矢印1424によって示されるように、外部信号結合1408の可塑性の更新を引き起こし得る。
[0272]図15Aに、外部でトリガされた内部(すなわち、樹状)イベントを使用する可塑性の更新の例示的な一実装形態を提示する。図15Aの樹状更新実装形態は、DENDRITIC_EVENT_RULEを備えるENDおよび/またはHLND拡張の使用を示している。
[0273]図15Bに、内部でトリガされた内部(すなわち、樹状突起)イベントを使用する可塑性の更新の例示的な一実装形態を示す。図15Bの樹状突起更新実装形態は、DENDRITIC_EVENT_RULEを備えるEND拡張の使用を示している。図15Bの更新ルールは、ルールを誘発するために内部条件を利用する。
[0274]図15Bの実装形態は恒常的メカニズムを示し、ニューロンアクティビティがしきい値を超えた(たとえば、ニューロンがあまりに多くのスパイクを発生した)ときの興奮性を減少させる(個々の荷重を減少させる)ように構成され得る
[0275]いくつかの実装形態では、入力結合の可塑性の更新は、2011年6月2日に出願された、「SENSORY INPUT PROCESSING APPARATUS AND METHODS」と題する、同一出願人が所有する同時係属米国特許出願第13/152,119号、2012年5月7日に出願された、「SPIKING NEURAL NETWORK FEEDBACK APPARATUS AND METHODS」と題する、同一出願人が所有する同時係属米国特許出願第13/465,924号、2012年5月7日に出願された、「SENSORY INPUT PROCESSING APPARATUS IN A SPIKING NEURAL NETWORK」と題する、同一出願人が所有する同時係属米国特許出願第13/465,903号、2012年5月7日に出願された、「SPIKING NEURAL NETWORK OBJECT RECOGNITION APPARATUS AND METHODS」と題する、同一出願人が所有する米国特許出願第13/465,918号、および2012年6月4日に出願された、「SPIKING NEURON NETWORK APPARATUS AND METHODS」と題する、同一出願人が所有する米国特許出願第13/488,106号に記載されているものなどのSTDPルールを使用して実現され得、上記の各々の全文は参照により本明細書に組み込まれる。
[0276]いくつかの実装形態では、結合更新のために使用される可塑性ルールは、たとえば、2012年1月24日に発行された米国特許第8,103,602号に記載されているように、外部信号1408のタイミングによって調節され得る。そのような一実装形態では、j番目の結合1404の荷重1406が以下のように調整され得る。
ここで、
out − ニューロンによって生成された直近の出力(ポストシナプススパイク)の時間を示し、
in j − 結合jを介してニューロンによって受信された1つまたは複数の入力直近の入力((1つまたは複数の)プレシナプススパイク)の時間を示し、
ext − 外部(トリガ)信号の時間を示す。
[0277]1つまたは複数の実装形態では、ネットワークによる強化学習を可能にするために樹状突起イベントが利用され得る。例として、強化入力(「樹状突起スパイク)を受信すると、ポストシナプスターゲットにポストシナプス反応を送出することなしに、ニューロンの着信シナプスの可塑性が調整され得る。その後、次いでニューロン状態が超しきい値条件に達し、所望の宛先にニューロンポストシナプス反応を送出するために軸索イベントが使用され得る。
[0278]いくつかの実装形態では、内部イベントは、プロセスの状態(たとえば、図14のプロセス1422の電位)への入力結合(たとえば、結合1404)の読取りアクセスを与え得る。
[0279]いくつかの実装形態では、内部イベントの実行中に、入力結合は、ニューロンのプレシナプスおよび/またはポストシナプスアクティビティ履歴を記憶しているバッファのコンテンツへの読取りアクセスを与えられ得る。
[0280]図15Aの実装形態は、たとえば、ロボット制御適用例における強化学習とともに使用するための調節されたSTDPを示している。
[0281]いくつかの実装形態では、たとえば、入力結合1404の更新を必要とすることなしに、所望のターゲット(ニューロン1420_1)にニューロン(たとえば、図14のニューロン1420)の出力(ポストシナプススパイク)を送出するために、外部(軸索とも呼ばれる)イベントが定義され得る。1つまたは複数の実装形態では、軸索イベントはニューロンスパイク反応プロセス(たとえば、超しきい値条件)によってトリガされ得る。
[0282]確率的ニューロンのいくつかの実装形態では、軸索イベントは、(i)乱数発生器の出力がしきい値よりも大きいとき、および/または、(ii)時間カウンタが、たとえば、最大非アクティビティ間隔に関連し得るある値を超えるとき(たとえば、ニューロンが100msを超えてサイレントであるとき)にトリガされ得る。
[0283]いくつかの実装形態では、軸索イベントは、図14の破線の矢印1426によって示されるように、出力1416の可塑性の更新を引き起こし得る。
[0284]いくつかの実装形態では、内部イベントおよび外部イベントは、可塑性の更新およびポストシナプス出力送出を実現するために、単一の合成イベントに組み合わせられ得、それによって、上記のEND v1、END 2によって記述される通常更新イベントのための互換性が与えられる。
[0285]いくつかの実装形態では、樹状突起イベントの実行中に軸索イベントの実行が一時的に中断され得る。
[0286]いくつかの実装形態では、樹状突起イベントはカウンタをセットアップし得、軸索は、スパイク送出イベントをトリガするためにそのカウンタを検査し得る。
[0287]いくつかの実装形態では、ニューロンプロセス(たとえばプロセス1422)は、樹状突起イベント(トリガ可塑性の更新)、およびシナプス更新とスパイク送出とを誘発する共通ENDスパイクイベントという、2つのイベントタイプを備え得る。
[0288]いくつかの実装形態では、ユニット記述は、(i)着信シナプスの可塑性に影響を及ぼし得るが、軸索に沿ってポストシナプスターゲットに伝搬されるシグナリングを生じない「樹状突起」スパイク、および(ii)ポストシナプスターゲットに伝搬するが、ニューロン上への着信シナプスに対して何も行わない「軸索」スパイクという、2つのタイプのイベントを備え得る。単に樹状突起スパイクと軸索スパイクとの組合せでの、END1、2、3において使用される標準「スパイク」。
[0289]図15Cに、外部でトリガされた外部(すなわち、樹状突起)イベントを使用する可塑性の更新の例示的な一実装形態を提示する。図15Cの実装形態はニューロン反応条件(たとえば、メソッドspike())を備え得る。所望のターゲット(OutputNeuron)へのスパイク伝搬を引き起こすために、明示的に定義されたAxonicEvent(図15C、28〜40行目)が使用され得る。
[0290]いくつかの実装形態では、ENDフォーマットが以下のように拡張され得る。ユニットタイプ定義は以下のように樹状突起および/または軸索イベント条件を備え得る。
<unit_class>
unit_class_id
initialization
execution_condition
update_rule
list of
custom_event_type_id
custom_event_condition
after_custom_event_rule
ここで、
[0291]シナプスクラスは以下のように樹状突起イベントによって増補され得る。
<synaptic_class>
synapse_class_id
initialization
presynaptic_event_rule
update_rule
list of
custom_event_type_id
custom_event_rule
ここで、何らかのidをもつカスタムイベントルールのコードが、同じidをもつポストシナプスユニットのカスタムイベントを発生することによってトリガされる。シナプスは、異なるidをもついくつかのイベントルールを定義することができる。いくつかの実装形態では、それは、調節されたSTDPを実行することができる。
[0292]1つまたは複数の実装形態では、ユーザは、イベントHLND拡張およびENDフレームワークを使用してスパイキングネットワークを定義するとき、カスタムイベントを定義し得る。いくつかの実装形態では、カスタムイベントは、入力結合1404の一部の更新をトリガするために使用され得る。例として、そのようなカスタムイベントを使用して、ニューロンへの1つのタイプの入力(たとえば、アーム位置)を与える結合が更新され得る。残りの結合(たとえば、視覚入力を与える結合)は、1つまたは複数の実装形態では、異なる可塑性メカニズムに従って動作可能であり、同じカスタムイベントによって更新されないことがある。
[0293]いくつかの実装形態では、ユーザは、複数のイベントと、それらのイベントによって誘発され得るルールとを定義し得る。このようにして、ユーザは複数のタイプのイベントを定義することができ、そのうちのいくつかは‘樹状突起’イベントとして働くことができ、他のものは「軸索」イベントとして働くことができ、他のものは「緑」、「青」、および/または他のイベントとして働くことができる。
[0294]図15D〜図15Eに、カスタムイベントを使用する可塑性の更新の例示的な実装形態を提示する。図15Dの実装形態はルールトリガ条件(たとえば、状態パラメータv>1)を示している。図15Dの実装形態は、状態変数と反応アクティビティとに基づく複数のルールトリガ条件を備え得る。
図15Fに、複数のカスタムイベントを備える可塑性の更新の例示的な実装形態を提示する。図15Fの実装形態、ニューロンのシナプスは、特殊関数Unit.event(event id)とともに(図15Aの場合のような)条件フラグを定義することなしに、ポストシナプスニューロンのTeacherEventを発生するように構成され得る。いくつかの実装形態では、リスティング(たとえば、図15Fのリスティング)は1つまたは複数のユーザ定義タグを備え得る。
[0295]いくつかの実装形態では、ENDフォーマットが以下のように拡張され得る。ユニットタイプ定義は以下のように樹状突起および/または軸索イベント条件を備え得る。
<unit_class>
unit_class_id
initialization
execution_condition
update_rule
event_condition
after_event_rule
list of
custom_event_type_id
custom_event_condition
after_custom_event_rule
ここで、
[0296]シナプスクラスは以下のように樹状突起イベントによって増補され得る。
<synaptic_class>
synapse_class_id
initialization
presynaptic_event_rule
post−synaptic_event_rule
update_rule
list of
custom_event_type_id
custom_event_rule
ここで、何らかのidをもつカスタムイベントルールのコードが、同じIDをもつポストシナプスユニットのカスタムイベントを発生することによってトリガされる。シナプスは、異なるidをもついくつかのイベントルールを定義することができる。シナプスクラスは、END2.0との後方互換性のために、(ポストシナプスユニットにおけるカスタムイベントルールではなく)通常通りトリガされるpost−synaptic_event_ruleを依然として有することに気づかれたい。いくつかの実装形態では、それは、調節されたSTDPを実行することができる。
[0297]図15Gのリスティングに、ニューロン出力を引き起こすことなしにはシナプス更新を実施しないように構成された樹状突起イベントを備えるネットワーク更新を示す。
[0298]図15Hのリスティングに、シナプス更新を実行するように構成された、CUSTOM_EVENT_RULEメソッドを備える、カスタムイベントの使用を示す。
[0299]図16A〜図16Cに、本開示のイベント駆動型更新を実装する例示的な方法を示す。いくつかの実装形態では、図16A〜図16Cの方法は、たとえば、図14のニューロン1420を動作させるために使用され得る。その上、図16A〜図16Cの方法はネットワーク装置(たとえば、図11Cの装置1130)において実装され得る。図16A〜図16Cの方法は、たとえば、以下の図17に関して説明する感覚処理装置のネットワークなど、スパイキングニューロンネットワークにおける感覚処理において実装され得、それによって、とりわけ、感覚入力を処理するときの強化学習を有利に助け得る。
[0300]次に図16Aに戻ると、方法1600のステップ1602において、イベントがトリガされたかどうかの検査が実施される。検出されると、ステップ1604において、イベントタイプがステップ決定される。
[0301]内部(すなわち、樹状突起)イベントが検出されたとき、本方法はステップ1606に進み得、ここで、検出されたイベントタイプをサポートする1つまたは複数の入力結合を選択する。1つまたは複数の実装形態では、1つまたは複数の入力結合によって1つまたは複数の異なる樹状突起イベントタイプがサポートされ得る。
[0302]ステップ1608において、ステップ1606において選択された1つまたは複数の入力結合のために適切な内部イベントルールを誘発する。
[0303]外部(すなわち、軸索)イベントが検出されたとき、本方法はステップ1610に進み得、ここで、検出された出力イベントタイプをそのサポートし得る1つまたは複数の出力ターゲットを選択する。
[0304]ステップ1612において、ステップ1610において選択された1つまたは複数のターゲットのために適切な外部イベントルール(たとえば、図15AのPRESYNAPTICルール)を誘発する。
[0305]図16Bに、たとえば、上記で説明した図16Aの方法1600とともに使用する、内部イベントルールの例示的な一実装形態を示す。
[0306]方法1620のステップ1622において、結合更新のタイプを選択する。1つまたは複数の実装形態では、ネットワーク(たとえば、図14のネットワーク1400)は1つまたは複数の異なる可塑性ルールをサポートし得る。
[0307]いくつかの実装形態では、可塑性ルールは、方法1620のステップ1624における荷重調整によって示されるように、ニューロンの状態(たとえば、図14のニューロン1420の膜電位)に基づく荷重調整を備え得る。
[0308]いくつかの実装形態では、可塑性ルールは、方法1620のステップ1626における荷重調整によって示されるように、結合によって送出される入力スパイク(tin)と、ニューロン(すなわち、STDPルール)によって生成される出力反応(スパイクされた出力)のタイミングtoutとの間のタイミングに基づく荷重調整を備え得る。
[0309]いくつかの実装形態では、可塑性ルールは、方法1620のステップ1628における荷重調整によって示されるように、結合によって送出される入力スパイク(tin)と、ニューロン(すなわち、STDPルール)によって生成される出力反応(スパイクされた出力)のタイミングtoutと、樹状突起イベントに関連するトリガのタイミングとの間のタイミングに基づく荷重調整を備え得る。1つまたは複数の実装形態では、樹状突起イベントトリガは、図14の結合1408を介してニューロン1420に送出される外部信号(たとえば、強化スパイク)を備え得る。いくつかの実装形態では、ステップ1628の可塑性は、式2の方法を使用して実現され得る。
[0310]ステップ1630において、(たとえば、図16Aのステップ1606において選択された結合などの)結合に適切な調整が適用される。
[0311]図16Cに、たとえば、上記で説明した図16Aの方法1600とともに使用する、外部イベントルールの例示的な一実装形態を示す。
[0312]方法1640のステップ1642において、1つまたは複数のターゲット(たとえば、図14のニューロン1420_1、1420_2、1420_3)のための出力送出ルールを選択する。1つまたは複数の実装形態では、ネットワーク(たとえば、図14のネットワーク1400)は、1つまたは複数の異なる出力(たとえば、スパイク送出)ルールをサポートし得る。
[0313]1つまたは複数の実装形態では、ターゲット選択は、コンパイル時間においてHLNDフレームワークを介して実現され得る。
[0314]いくつかの実装形態では、反応送出ルールは、方法1640のステップ1644のルールによって示されるように、適切なターゲットへのニューロンポストシナプス反応を伝搬することを備え得る。1つまたは複数の実装形態では、ポストシナプス反応伝搬は、ターゲットへの出力信号(たとえば、モーターへの駆動電流、またはモーターコントローラへの制御信号(たとえば、パルス幅変調電位))を印加することを備え得る。
[0315]いくつかの実装形態では、反応送出ルールは、方法1620のステップ1626における荷重調整によって示されるように、結合によって送出される入力スパイク(tin)と、ニューロン(すなわち、STDPルール)によって生成される出力反応(スパイクされた出力)のタイミングtoutとの間のタイミングに基づき得る荷重調整をポスティングすることを備え得る。
[0316]いくつかの実装形態では、反応送出ルールは、方法1620のステップ1628における荷重調整によって示されるように、結合によって送出される入力スパイク(tin)と、ニューロン(すなわち、STDPルール)によって生成される出力反応(スパイクされた出力)のタイミングtoutと、樹状突起イベントに関連するトリガのタイミングとの間のタイミングに基づき得る荷重調整をポスティングすることを備え得る。1つまたは複数の実装形態では、樹状突起イベントトリガは、図14の結合1408を介してニューロン1420に送出される外部信号(たとえば、強化スパイク)を備え得る。いくつかの実装形態では、ステップ1628の可塑性は、式3の方法を使用して実現され得る。
[0317]ステップ1630において、(たとえば、図16Aのステップ1606において選択された結合などの)結合に適切な調整が適用される。
[0318]いくつかの実装形態(図示せず)では、可塑性ルールは、結合遅延、および/または送信確率調整を備え得る。
[0319](たとえば、上記で説明した例示的なイベント駆動型更新メカニズムを使用する)本明細書に記載する方法のうちの1つまたは複数を実装する様々な例示的なスパイキングネットワーク装置について、今度は図17および図11A〜図11Dに関して説明する。
[0320](本明細書で説明するイベント駆動型更新メカニズムのうちの1つまたは複数を含む)スパイキングニューラルネットワークを使用する感覚信号情報(たとえば、視覚、音響、体性感覚)の処理のための1つの装置が図17に示されている。図示した処理装置1700は、入力感覚信号1720を受信するように構成された入力インターフェースを含み得る。いくつかの実装形態では、この感覚入力は、(RGC、電荷結合デバイス(CCD)、CMOSデバイス、またはアクティブピクセルセンサー(APS)を備える)イメージングセンサーアレイに入る電磁波(たとえば、可視光、IR、UV、および/または他の波長)を備え得る。この場合の入力信号は、受信側装置を介してCCDまたはCMOSカメラから受信されるか、あるいはファイルからダウンロードされる画像(画像フレーム)のシーケンスである。画像は、24HzフレームレートでリフレッシュされるRGB値の2次元行列を備え得る。上記の画像パラメータおよび構成要素は例示にすぎず、多くの他の画像表現(たとえば、ビットマップ、CMYK、グレースケール、および/または他の画像表現)および/またはフレームレートが本技術とともに等しく有用であり得ることを、当業者なら諒解されよう。
[0321]装置1700は、符号化された信号1726を形成するために、入力信号を変換する(符号化する)ように構成されたエンコーダ1724を含み得る。いくつかの実装形態では、符号化された信号は、ニューロン挙動をモデル化するように構成された複数のパルス(パルスのグループとも呼ばれる)を備え得る。符号化された信号1726は、エンコーダ1724から複数の結合(送信チャネル、通信チャネル、またはシナプス結合とも呼ばれる)1704を介して1つまたは複数のニューロンノード(検出器とも呼ばれる)1702に通信され得る。
[0322]図17の実装形態では、たとえば、指示子1702_1がレイヤ1702の第1の検出器を示すように、同じ階層レイヤの異なる検出器は「_n」指示子で示され得る。図17では明快のためにただ2つの検出器(1702_1、1702_n)が示されているが、エンコーダは、検出装置ハードウェアおよびソフトウェア制限との互換性があり得る任意の数の検出器ノードに結合され得ることを諒解されたい。単一の検出器ノードは任意の実際的な数のエンコーダに結合され得る。
[0323]一実装形態では、検出器1702_1、1702_nのうちの個々は、通信チャネル1708を介して送信されるポストシナプス検出信号を生成するために、たとえば、その各々の全体が参照により本明細書に組み込まれる、2010年8月26日に出願された「SYSTEMS AND METHODS FOR INVARIANT PULSE LATENCY CODING」と題する米国特許出願第12/869,573号、2010年8月26日に出願された「INVARIANT PULSE LATENCY CODING SYSTEMS AND METHODS」と題する米国特許出願第12/869,583号、2011年5月26日に出願された「APPARATUS AND METHODS FOR POLYCHRONOUS ENCODING AND MULTIPLEXING IN NEURONAL PROSTHETIC DEVICES」と題する米国特許出願第13/117,048号、2011年6月2日に出願された「APPARATUS AND METHODS FOR PULSE-CODE INVARIANT OBJECT RECOGNITION」と題する米国特許出願第13/152,084号に記載されているメカニズムのいずれかを使用して、符号化された信号1704中でパルスの所定のパターンを認識するように構成された(ソフトウェアコード、ハードウェア論理、またはそれらの組合せとして実装され得る)論理を含んでいることがある。図17において、指示子1708_1、1708_nは、それぞれ検出器1702_1、1702_nの出力を示す。
[0324]一実装形態では、検出信号は、その全体が参照により本明細書に組み込まれる、2011年6月2日に出願された「APPARATUS AND METHODS FOR PULSE-CODE INVARIANT OBJECT RECOGNITION」と題する、同一出願人が所有する同時係属米国特許出願第13/152,084号に記載されている例示的な構成と同様の、複雑なオブジェクト特徴およびオブジェクトの認識のための(検出器1712_1、1712_m、1712_kを備える)検出器1712の次のレイヤに送出され得る。この構成では、検出器の個々の後続のレイヤは、前の検出器レイヤからの信号を受信し、(先行する検出器レイヤによって検出された特徴と比較して)より複雑な特徴およびオブジェクトを検出するように構成され得る。たとえば、エッジ検出器のバンクの後にバー検出器のバンクが続き、その後にコーナー検出器のバンクが続き、その後も同様であり得、それにより、装置によるアルファベット認識が可能になる。
[0325]検出器1702のうちの個々は、(適切なレイテンシとともに)通信チャネル1708_1、1708_n上で検出(ポストシナプス)信号を出力し得、それらの信号は異なる伝導遅延で検出器1712に伝搬し得る。図17の装置の検出器カスケードは、とりわけ、検出装置のソフトウェア/ハードウェアリソースと、検出されるオブジェクトの複雑さとによって決定される、任意の実際的な数の検出器ノードおよび検出器バンクを含んでいることがある。
[0326]いくつかの実装形態では、装置1700は、結合1734を介して、外部入力を1つまたは複数のニューロン1702、1712に与えるように構成され得る。1つまたは複数の実装形態では、入力1734は、上記の図14に関して説明したように、トレーニング入力、たとえば、正および/または負の強化信号を備え得る。
[0327]図17に示された信号処理装置実装形態はラテラル結合1706を備え得る。いくつかの実装形態では、結合1706は、図17の結合1706_1によって示されるように、同じ階層レベルの隣接ニューロン間でポストシナプスアクティビティ指示を通信するように構成され得る。いくつかの実装形態では、隣接ニューロンは、重複する入力(たとえば、図17の入力1704_1、1704_n)を有するニューロンを備え得、したがって、ニューロンは、同じ入力特徴を学習しないために競合し得る。1つまたは複数の実装形態では、隣接ニューロンは、3次元(3D)およびまたは2次元(2D)空間上で互いに一定のボリューム/エリア内に配置されたものなど、空間的に近接したニューロンを備え得る。
[0328]装置1700はまた、図17のフィードバック結合1714_1によって示されるように、1つの階層レイヤ内の検出器から前のレイヤにコンテキスト情報を通信するように構成された、フィードバック結合1714を備え得る。いくつかの実装形態では、フィードバック結合1714_2は、上記に組み込まれる、2011年6月2日に出願された「APPARATUS AND METHODS FOR PULSE-CODE INVARIANT OBJECT RECOGNITION」と題する、同一出願人が所有する同時係属米国特許出願第13/152,084号に詳細に記載されているように、エンコーダ1724にフィードバックを与えるように構成され得、それによって感覚入力符号化を可能にする。
コンピュータ化神経形態学的システム
[0329]コンピュータ化スパイキングネットワークを動作させるように(および上記で説明した例示的なイベント駆動型更新方法を実装するように)適応された、コンピュータ化神経形態学的処理システムの特定の一実装形態を図11Aに示す。図11Aのコンピュータ化システム1100は、たとえば、画像センサー、コンピュータ化スパイキング網膜、オーディオアレイ、タッチセンシティブ入力デバイス、および/または他の構成要素など、入力インターフェース1110を備え得る。入力インターフェース1110は、入力通信インターフェース1114を介して処理ブロック(たとえば、シングルまたはマルチプロセッサブロック)に結合され得る。システム1100は、ニューロン状態および結合パラメータ(たとえば、図14の荷重1406)を記憶し、シナプス更新を可能にするように構成された、ランダムアクセスメモリ(RAM)1108を備え得る。いくつかの実装形態では、シナプス更新は、たとえば、参照によって上記に組み込まれる、2011年9月21日に出願された「APPARATUS AND METHODS FOR SYNAPTIC UPDATE IN A PULSE-CODED NETWORK」と題する米国特許出願第13/239,255号において与えられている記載に従って実施され得る。
[0330]いくつかの実装形態では、メモリ1108は、直接接続(メモリバス)1116を介してプロセッサ1102に結合され得る。メモリ1108は、高速プロセッサバス1112を介してプロセッサ1102に結合され得る)。
[0331]システム1100は、とりわけ、スパイキングニューロンネットワーク動作の様々な態様(たとえば、感覚入力符号化、結合可塑性、ニューロンの動作モデル、および/またはスパイキングニューロンネットワーク動作の他の態様)を実装するように構成されたコンピュータ可読命令を備える、不揮発性記憶デバイス1106を備え得る。不揮発性記憶装置1106は、たとえば、ネットワーク状態スナップショットを保存/ロードするとき、あるいはコンテキスト切替え(たとえば、後での使用のために(とりわけ、結合荷重および更新ルール、ニューロン状態および学習ルール、および/または他の情報を備える)現在のネットワーク構成を保存すること、ならびに前に記憶されたネットワーク構成のローディング、を実装するとき、たとえば、ニューロンと結合との状態情報を記憶するために使用され得る。
[0332]いくつかの実装形態では、コンピュータ化装置1100は、コンピュータI/Oバス(PCI−E)、ワイヤード(たとえば、イーサネット)またはワイヤレス(たとえば、Wi−Fi(登録商標))ネットワーク接続など、I/Oインターフェース1120を介して1つまたは複数の外部処理/ストレージ/入力デバイスに結合され得る。
[0333]いくつかの実装形態では、装置1100は、ニューラルネットワークを動作させているプロセッサに外部入力を与えるように構成され得る。1つまたは複数の実装形態では、この入力は、たとえばインターフェース1114を介して与えられるトレーニング入力、たとえば、正および/または負の強化信号を備え得る。
[0334]いくつかの実装形態では、入出力インターフェースは、ユーザーコマンドを受信し、認識するように構成された音声入力(たとえば、マイクロフォン)および音声認識モジュールを備え得る。
[0335]様々な処理デバイスは、限定はしないが、シングルコア/マルチコアCPU、DSP、FPGA、GPU、ASIC、それらの組合せ、および/または他のプロセッサを含む、コンピュータ化システム1100とともに使用され得ることを当業者なら諒解されよう。様々なユーザ入出力インターフェースは、たとえば、LCD/LEDモニタ、タッチスクリーン入力およびディスプレイデバイス、音声入力デバイス、スタイラス、ライトペン、トラックボール、終了その他を含む、本技術の実装形態に同様に適用可能であり得る。
[0336]次に図11Bを参照すると、スパイキングネットワークにおいてイベント駆動型更新メカニズムを実装するように構成された神経形態学的コンピュータ化システムの一実装形態について、詳細に説明する。図11Bの神経形態学的処理システム1130は、複数の処理ブロック(マイクロブロック)1140を備え得、ここで、個々のマイクロブロックは、計算論理コア1132と、メモリブロック1134とを備え得る。論理コア1132は、ノードモデル、およびシナプス更新ルール(たとえば、I−STDP)および/またはネットワーク運用に関係する他のタスクなど、ニューロンノード動作の様々な態様を実装するように構成され得る。メモリブロックは、とりわけ、ニューロン状態変数と、結合1138の結合パラメータ(たとえば、荷重、遅延、I/Oマッピング)とを記憶するように構成され得る。
[0337]マイクロブロック1140は、結合1138とルータ1136とを使用して互いに相互結合され得る。当業者なら諒解されるように、図11Bの結合レイアウトは例示的であり、多くの他の結合実装形態(たとえば、1対全部、全部対全部、および/または他の結合実装形態)が本開示に適合し得る。
[0338]神経形態学的装置1130は、インターフェース1142を介して入力(たとえば、視覚入力)を受信するように構成され得る。たとえば、コンピュータ化スパイキング網膜または画像アレイとインターフェースするために適用可能な、1つまたは複数の実装形態では、装置1130は、入力信号の符号化を可能にするために、インターフェース1142を介してフィードバック情報を与え得る。
[0339]神経形態学的装置1130は、インターフェース1144を介して出力(たとえば、認識されたオブジェクトまたは特徴の指示、あるいは、たとえば、画像アレイをズーム/パンするための、モーターコマンド)を与えるように構成され得る。
[0340]いくつかの実装形態では、装置1130は、1つまたは複数のブロック1132に外部入力を与えるように構成され得る。1つまたは複数の実装形態では、外部信号は、インターフェース1142を介して1つまたは複数のブロックに与えられるトレーニング入力を備え得る。
[0341]装置1130は、1つまたは複数の実装形態では、高帯域幅メモリインターフェース1148を介して外部高速応答メモリ(たとえば、RAM)にインターフェースし、それによって、中間ネットワーク動作パラメータ(たとえば、スパイクタイミング)の記憶を可能にし得る。装置1130は、プログラムローディングと、動作モード変更と、リターゲッティングとを可能にするために、より低い帯域幅のメモリインターフェース1146を介してより低速な外部メモリ(たとえば、フラッシュ、または磁気(ハードドライブ))にインターフェースし得、そこで、現在のタスクのためのネットワークノードおよび接続情報が将来の使用のために保存およびフラッシュされ得、前に記憶されたネットワーク構成がそれの場所にロードされ得る。
[0342]図11Cに、共有相互接続に結合された、上記の図11Bに関して説明したマイクロブロック1140を備える共有バス神経形態学的コンピュータ化システムの実装形態を示す。図11Cの装置1145は、マイクロブロック1140を互いに相互接続するために1つ(または複数)の共有バス1146を利用する。
[0343]図11Dに、スパイキングネットワークにおいてイベント駆動型更新メカニズムを実装するように構成されたセルベース神経形態学的コンピュータ化システムアーキテクチャの一実装形態を示す。図11Dの神経形態学的システム1150は処理ブロック(セルブロック)の階層を備え得る。いくつかの実装形態では、装置1150の最低レベルL1セル1152は、論理およびメモリを備え得、図11Bに示された装置のマイクロブロック1140と同様に構成され得る。いくつかのセルブロックは、クラスタの配列であり、ローカル相互接続1162、1164を互いに通信し得る。そのようなクラスタのうちの個々は、図11dにおいて1154として示されたより高レベルのセル、たとえば、セルL2を形成し得る。同様に、いくつかのL2クラスタは、第2レベル相互接続1166を介して互いに通信し、図11Dにおいて1156として示されたスーパークラスタL3を形成し得る。スーパークラスタ1154は、たとえば第3レベル相互接続1168を介して通信し得、次のレベルクラスタを形成し得、以下同様である。レベルごとに所与の数(たとえば、4つ)のセルを備える装置1150の階層構造は例示的な一実装形態にすぎず、他の実装形態は、レベルごとに、および/またはより少ないもしくはより多いレベルごとに、より多いまたはより少ないセルを備え得、ならびにさらに他のタイプのアーキテクチャを備え得ることを当業者なら諒解されよう。
[0344]図11Dの例示的な装置1150の異なるセルレベル(たとえば、L1、L2、L3)は、様々な複雑さレベルで機能を実施するように構成され得る。一実装形態では、異なるL1セルは、並列に視覚入力の異なる部分を処理し得(たとえば、異なるフレームマクロブロックを符号化し得)、L2、L3セルは、漸進的により高いレベルの機能(たとえば、エッジ検出、オブジェクト検出)を実施する。異なるL2、L3セルは、たとえばロボットを動作させる異なる態様を実施し得、1つまたは複数のL2/L3セルは、カメラからの視覚データを処理し、他のL2/L3セルは、たとえば、オブジェクトを追跡するとき、またはレンズ安定化機能を実施するときのレンズの動きを実装するためにモーター制御ブロックを動作させる。
[0345]神経形態学的装置1150は、インターフェース1160を介して入力(たとえば、視覚入力)を受信し得る。たとえばコンピュータ化スパイキング網膜または画像アレイとインターフェースするために適用可能な、1つまたは複数の実装形態では、装置1150は、入力信号の符号化を可能にするために、インターフェース1160を介してフィードバック情報を与え得る。
[0346]神経形態学的装置1150は、インターフェース1170を介して出力(たとえば、認識されたオブジェクトまたは特徴の指示、あるいは、たとえば、画像アレイをズーム/パンするための、モーターコマンド)を与え得る。いくつかの実装形態では、装置1150は、単一のI/Oブロック(図示せず)を使用してI/O機能の一部または全部を実施し得る。
[0347]いくつかの実装形態では、装置1150は、1つまたは複数のブロック1152、1154、1156に外部入力を与えるように構成され得る。1つまたは複数の実装形態では、外部信号は、インターフェース1160を介して装置によって受信されるトレーニング入力を備え得る。
[0348]1つまたは複数の実装形態では、装置1150の1つまたは複数の部分は、たとえば、その全体が参照により本明細書に組み込まれる、2012年6月4日に出願された「DYNAMICALLY RECONFIGURABLE STOCHASTIC LEARNING APPARATUS AND METHODS」と題する、出願人が所有する米国特許出願第13/487,576号に記載されているように、1つまたは複数の学習ルールを動作させるように構成され得る。そのような一実装形態では、1つのブロック(たとえば、L3ブロック1156)は、インターフェース1160を介して受信される入力を処理し、区間相互接続1166、1168を介して別のブロック(たとえば、L2ブロック1156)に強化信号を与えるために使用され得る。
[0349]装置1150は、1つまたは複数の実装形態では、高帯域幅メモリインターフェース(図示せず)を介して外部高速応答メモリ(たとえば、RAM)にインターフェースし、それによって、中間ネットワーク動作パラメータ(たとえば、スパイクタイミングおよび/または他のパラメータ)の記憶を可能にし得る。装置1150は、プログラムローディングと、動作モード変更と、リターゲッティングとを可能にするために、より低い帯域幅のメモリインターフェース(図示せず)を介してより低速な外部メモリ(たとえば、フラッシュ、または磁気(ハードドライブ))にインターフェースし得、ここで、現在のタスクのためのネットワークノードおよび接続情報が将来の使用のために保存およびフラッシュされ得、前に記憶されたネットワーク構成がそれの場所にロードされ得る。
[0350]本開示のイベント駆動型更新メカニズムは、有利には、とりわけ、フレキシブルなネットワーク更新を可能にし得る。いくつかの実装形態では、報酬信号に反応して、強化学習適用例における入力結合のタイムリーな可塑性の更新を実施するために、樹状突起イベントが使用され得る。いくつかの実装形態では、所望のターゲットへのポストシナプス反応送出および/または出射結合更新を実施するために、軸索イベントが使用され得る。いくつかの実装形態では、カスタムイベントは、たとえば、ロボット装置のモーター制御部分にインターフェースする結合の樹状突起更新を使用して、たとえば、ニューロン結合の一部分の更新を可能にしながら、(たとえば視覚センサーデータを処理する)他の結合が標準のスパイク反応イベントに従って更新されることを可能にするなど、カスタム更新ルールを可能にし得る。
[0351]従来技術の手法とは対照的に、たとえば、本開示の樹状突起イベントと軸索イベントとの使用により、ポストシナプス反応送出から可塑性の更新が分離され得る。したがって、ニューロンが教示スパイクを受信すると、ニューロンの内部状態(興奮性)および/または出力に影響を及ぼすことなしに、着信シナプスの荷重が変更され得る。
[0352]そのような機能は、有利には、ネットワーク学習のより正確な制御を可能にし得る。1つのモーター制御適用例における例として、コントローラ再学習速度を増加させるために、頻度が高い(たとえば、1〜100Hz)樹状突起イベントが利用され得る。(たとえば、性能測度によって特徴づけられる)所望のレベルにコントローラ性能が達すると、モーターにモーターコマンドを発行するために軸索イベントが使用され得る。報酬駆動型更新と性能駆動型反応とのそのような分離は、有利には、プラント(たとえば、モーターコントローラ)への過大なネットワーク出力をなくし、プラント寿命を増加させ得る。
[0353]上記の実装形態は例示的であり、本技術のフレームワークは、たとえば、データベースを使用する情報分類など、他の情報の処理に等しく互換性があり、適用可能であり得、ここで、特定のパターンの検出は、スパイクと同様の離散信号として識別され得、他のパターンの一致検出は、例示的なスパイキングニューラルネットワークの動作と同様の方法で、前の検出の履歴に基づいて特定の1つのパターンの検出に影響を及ぼすことを当業者なら諒解されたい。
[0354]有利には、本発明の例示的な実装形態は、限定はしないが、プロスセティックデバイス、自律ロボット装置、および感覚処理機能を必要とする他の電気機械デバイスを含む、様々なデバイスにおいて有用であり得る。そのようなロボティックデバイスの例としては、ロボット(たとえば、自動車)の製造、軍事、医療(たとえば、顕微鏡検査、X線、超音波検査、トモグラフィーの処理)のうちの1つまたは複数がある。自律車両の例としては、ローバ、無人飛行体、水中車両、スマートアプライアンス(たとえばROOMBAO)、および/または他のロボティックデバイスがある。
[0355]本開示の原理の実装形態は、たとえば、スマートフォン、ポータブル通信デバイス、ノートブック、ネットブックおよびタブレットコンピュータ、監視カメラシステム、ならびに視覚データを処理するように構成された実際的に任意の他のコンピュータ化デバイスなど、多種多様な固定デバイスおよびポータブルデバイスにおけるビデオデータ圧縮および処理に適用可能である
[0356]本開示の原理の実装形態は、コンピュータと人間の対話(たとえば、ジェスチャー、音声、姿勢、顔の認識、および/または他の適用例)、加工の制御(たとえば、工業用ロボット、自律車両および他の車両)、拡張現実適用例、(たとえば、画像および画像シーケンスのデータベースをインデックス付けするための)情報の編成、アクセス制御(たとえば、ジェスチャーに基づいてドアを開くこと、許可された人物の検出に基づいてアクセス方法を開くこと)、(たとえば、視覚的監視あるいは人間または動物の計数、追跡のための)イベントの検出、データ入力、金融取引(人物または特殊支払いシンボルの認識に基づく支払い処理)、ならびにその他多数を含む、広い組合せの適用例に適用可能であり得る。
[0357]有利には、本開示は、画像中または3Dシーン中の個々のポイントにおけるオブジェクト位置(したがって速度)、さらには画像を生成するカメラのオブジェクト位置(したがって速度)の推定値を生成するために画像シーケンスが処理され得る場合など、動き推定に関係するタスクを簡略化するために使用され得る。そのようなタスクの例としては、自己動き、すなわち、カメラによって生成された画像シーケンスからカメラの3次元剛性動き(回転および並進)を決定すること、画像シーケンス中で画像平面に関して関心ポイントまたはオブジェクト(たとえば、車両または人間)のセットの移動に追従することがあり得る。
[0358]いくつかの実装形態では、オブジェクト認識システムの部分は、科学的、地球物理学的探査、監視、ナビゲーション、データマイニング(たとえば、コンテンツベース画像検索)など、様々な適用例のためにデータストリーム中のパターン認識を実施するように構成されたコンピュータ実行可能命令を記憶したコンピュータ可読装置を備える、リモートサーバにおいて実施され得る。本開示を与えられた当業者によって認識され得る、無数の他の適用例が存在する。
[0359]本技術のいくつかの態様について、方法のステップの特定のシーケンスに関して説明することがあるが、これらの説明は、本技術のより広い方法を例示するものにすぎず、特定の適用例の要求に応じて変更され得ることを認識されよう。いくつかのステップは、いくつかの状況では不要または随意であるとされ得る。さらに、いくつかのステップまたは機能が開示する実装形態に追加されるか、または2つ以上のステップの実施の順序が置換され得る。すべてのそのような変形形態は、本明細書で開示し、請求する技術の内に包含されると見なされる。
[0360]上記の詳細な説明では、様々な実装形態に適用されるように本技術の新規の特徴を示し、説明し、指摘したが、当業者によって、本技術から逸脱することなく、示されたデバイスまたはプロセスの形態および詳細において様々な省略、置換、および変更が行われ得ることを理解されよう。上記の説明は、本技術を実施することについて現在企図される最良の様式である。この説明は、決して限定的であるように意図されず、むしろ、本技術の一般的原理を例示するものとして理解されるべきである。本技術の範囲は、特許請求の範囲を参照して決定されるべきである。

Claims (28)

  1. 入力結合と出力結合とを有する人工スパイキングニューロンを動作させるコンピュータ実装方法であって、前記方法が、コンピュータプログラムモジュールを実行するように構成された1つまたは複数のプロセッサによって実施され、前記方法は、
    第1のイベントを含む第1のイベントタイプの1つまたは複数のイベントを与えることと、前記第1のイベントが、前記入力結合の可塑性の更新を実現するように構成され、前記入力結合の前記可塑性が、前記入力結合に関連するパラメータを調整することが可能であり、前記調整が時間期間によって特徴づけられる、
    第2のイベントを含む第2のイベントタイプの1つまたは複数のイベントを与えることと、前記第2のイベントが、前記出力結合を介して前記ニューロンの反応の送出を実現するように構成された、
    を備える、コンピュータ実装方法。
  2. 前記第1のイベントが、前記ニューロンに与えられる外部信号に基づき、
    前記パラメータが入力結合荷重を備えた、
    請求項1に記載の方法。
  3. 前記入力結合が、前記ニューロンにフィードフォワード刺激を与えるように構成され、
    前記ニューロンが、ターゲット結果を生成するように構成された学習プロセスに従って動作可能であり、
    前記外部信号が、前記ターゲット結果からの所定の範囲内の前記反応かどうかに基づいて構成された強化信号を備える、
    請求項2に記載の方法。
  4. 前記フィードフォワード刺激が、複数のスパイクの個々の間の間隔を備えるスパイク間間隔(ISI)によって特徴づけられる前記複数のスパイクを備え、
    前記タイ期間が、前記複数のスパイクのうちの連続する個々のスパイクについて決定された前記ISIを超える、
    請求項3に記載の方法。
  5. 前記外部信号が、前記第2のイベントタイプの前記1つまたは複数のイベントとは無関係に前記第1のイベントタイプの前記1つまたは複数のイベントを引き起こすように構成された、請求項2に記載の方法。
  6. 前記第1のイベントタイプの所与のイベントは、前記第1のイベントタイプの前記所与のイベントがトリガされた後に反応なし時間間隔を可能にするために、前記第2のイベントタイプの所与のイベントとは無関係にトリガされるように構成された、請求項2に記載の方法。
  7. 荷重の前記変更が可塑性時間ウィンドウによって特徴づけられ、前記反応なし時間間隔が、前記可塑性時間ウィンドウを超えて構成された、
    請求項2に記載の方法。
  8. 前記入力結合が、前記ニューロンにフィードフォワード刺激を与えることが可能であり、
    前記外部信号が、前記入力結合とは別個に構成されたインターフェースを介して与えられる、
    請求項2に記載の方法。
  9. 前記入力結合の前記可塑性の更新は、前記外部信号が与えられる時間に基づいて構成された、請求項8に記載の方法。
  10. 前記フィードフォワード刺激が少なくとも1つのスパイクを備え、
    前記可塑性の更新が、前記少なくとも1つのスパイクに関連する時間に基づいてさらに構成された、
    請求項9に記載の方法。
  11. 前記可塑性の更新が、前記入力結合を通るデータ送信の確率を調整することを備え、前記調整することが、(i)前記外部信号を前記与えることとニューロン反応時間との間の時間間隔、または(ii)前記少なくとも1つのスパイク前記反応時間の間の時間間隔の一方または両方に基づき、
    前記反応時間は、前記外部信号が与えられる前に発生された前記ニューロンの反応に関連付けられる、
    請求項9に記載の方法。
  12. 前記可塑性の更新が、(i)前記外部信号を前記与えることとニューロン反応時間との間の時間間隔、または(ii)前記少なくとも1つのスパイク前記反応時間の間の時間間隔の一方または両方に基づいて決定された前記入力結合に関連する有効性を調整することを備え、
    前記反応時間は、前記外部信号が与えられる前に発生された前記ニューロンの反応に関連付けられる、
    請求項9に記載の方法。
  13. 前記可塑性の更新が、(a)通信遅延と、b)前記入力結合に関連する荷重とのいずれかを調整することを備え、前記調整することが、(i)前記外部信号を前記与えることとニューロン反応時間との間の時間間隔、または(ii)前記少なくとも1つのスパイク前記反応時間の間の時間間隔の一方または両方に基づいて決定される、
    前記反応時間は、前記外部信号が与えられる前に発生された前記ニューロンの反応に関連付けられる、
    請求項9に記載の方法。
  14. 前記ニューロンが、状態によって特徴づけられるニューロンプロセスに従って動作するように構成され、前記状態が、それに関連付けられた反応発生しきい値を有し、前記反応発生しきい値が、前記反応を発生する前記ニューロンに関連付けられ、
    前記反応が、前記ニューロンへの前記入力結合を介して前記ニューロンに与えられる1つまたは複数の入力スパイクに基づき、
    前記反応が、前記反応発生しきい値を突破する前記状態によって特徴づけられる、
    請求項1に記載の方法。
  15. 前記ニューロンに関連するメモリロケーションに前記状態の現在値を記憶すること
    をさらに備え、
    前記第1のイベントタイプの前記1つまたは複数のイベントが、前記入力結合に前記メモリロケーションへの読取り専用アクセスを与えるように構成された、
    請求項14に記載の方法。
  16. 前記第1のイベントが、(i)タイマー満了、(ii)バッファオーバーフロー信号、または(iii)前記ニューロンプロセスに関連するトリガのうちの1つまたは複数に基づいて構成され、
    前記バッファが、前記1つまたは複数の入力スパイクの時間履歴を記憶するように構成された、
    請求項14に記載の方法。
  17. 前記第1のイベントタイプの前記1つまたは複数のイベントが、前記入力結合に前記1つまたは複数の入力スパイクの前記時間履歴への読取り専用アクセスを与えるように構成された、請求項14に記載の方法。
  18. 前記第1のイベントタイプの前記1つまたは複数のイベントが、前記入力結合に前記ニューロンの前記反応のうちの1つまたは複数の時間履歴への読取り専用アクセスを与えるようにさらに構成された、請求項17に記載の方法。
  19. 前記第1のイベントタイプに関連する供与は、前記可塑性の更新が、前記反応を引き起こすことおよび/または前記反応に関連付けられることなしに実現されることが可能であるように、前記第2のイベントタイプとは無関係に構成された、請求項1に記載の方法。
  20. 第3のイベントを含む第3のイベントタイプの1つまたは複数のイベントを与えることをさらに備え、前記第3のイベントがプレシナプスイベントに関連付けられ、前記プレシナプスイベントが、前記入力結合の前記可塑性の更新を引き起こすことが可能である、請求項1に記載の方法。
  21. 前記第1のイベントと前記第2のイベントとが、互いに同時に与えられるように構成された、請求項1に記載の方法。
  22. 前記第2のイベントが、前記出力結合の可塑性の更新を引き起こすことが可能である、請求項1に記載の方法。
  23. 人工スパイキングニューロンネットワークのための強化学習のコンピュータ実装方法であって、前記方法が、コンピュータプログラムモジュールを実行するように構成された1つまたは複数のプロセッサによって実施され、前記方法は、
    強化学習プロセスに従って前記ニューロンを動作させることと、前記強化学習プロセスが、入力信号と強化信号とに基づいて出力を発生するように構成された、
    前記強化信号に基づいて、第1のイベントタイプの第1のイベントを選択的にトリガすることと、前記第1のイベントが、前記ニューロンの結合の可塑性の更新を引き起こすように構成され、ここにおいて、
    前記選択的にトリガすることが、前記出力の前記発生とは無関係な前記可塑性の更新の適用を可能にするように構成され、
    前記入力信号が、前記ニューロンの外部の環境に関する情報を搬送する、
    を備える、コンピュータ実装方法。
  24. 前記結合が、前記ニューロンに前記入力を与えるように構成され、
    前記強化学習プロセスが、ターゲット結果を達成するように構成され、
    前記強化信号が、前記所望の結果と前記出力との間の不一致を特徴づける測定に基づく、
    請求項23に記載の方法。
  25. 前記強化信号は、前記不一致が所定の値の外部にあることに基づいて決定された負の報酬を備える、請求項24に記載の方法。
  26. ネットワークにおいてイベントベース更新を実装するように構成されたコンピュータ化スパイキングニューロンネットワークシステムであって、前記システムが、
    コンピュータプログラムモジュールを実行するように構成された1つまたは複数のプロセッサを備え、前記コンピュータプログラムモジュールの前記実行が、前記1つまたは複数のプロセッサに、第1のイベントに基づいて、前記ネットワークの第1のスパイキングニューロンと第2のスパイキングニューロンとにそれぞれ関連する第1のインターフェースと第2のインターフェースとを更新させ、
    ここにおいて、前記第1のイベントが、前記イベントに反応して前記第1のスパイキングニューロンと前記第2のスパイキングニューロンとによってそれぞれ発生される第1の出力と第2の出力との不在によって特徴づけられる、
    コンピュータ化スパイキングニューロンネットワークシステム。
  27. 前記コンピュータプログラムモジュールの前記実行が、前記1つまたは複数のプロセッサに、前記第1のスパイキングニューロンと前記第2のスパイキングニューロンとにそれぞれ関連する前記第1の出力のインターフェースまたは前記第2の出力のインターフェースの一方または両方を介して、前記第1の出力または前記第2の出力の一方または両方の送出を引き起こすように構成された第2のイベントを発生させる、請求項26に記載のシステム。
  28. 前記コンピュータプログラムモジュールの前記実行が、前記1つまたは複数のプロセッサに、前記第1のスパイキングニューロンまたは前記第2のスパイキングニューロンの一方または両方のユーザ定義更新を実行するように構成されたカスタムイベントを発生させる、請求項26に記載のシステム。
JP2015527661A 2012-08-17 2013-08-16 スパイキングニューロンネットワーク学習のための装置および方法 Active JP6169697B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/588,774 US9460387B2 (en) 2011-09-21 2012-08-17 Apparatus and methods for implementing event-based updates in neuron networks
US13/588,774 2012-08-17
PCT/US2013/055381 WO2014028855A1 (en) 2012-08-17 2013-08-16 Apparatus and methods for spiking neuron network learning

Publications (3)

Publication Number Publication Date
JP2015529357A true JP2015529357A (ja) 2015-10-05
JP2015529357A5 JP2015529357A5 (ja) 2017-01-05
JP6169697B2 JP6169697B2 (ja) 2017-07-26

Family

ID=50100807

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015527661A Active JP6169697B2 (ja) 2012-08-17 2013-08-16 スパイキングニューロンネットワーク学習のための装置および方法

Country Status (5)

Country Link
US (1) US9460387B2 (ja)
EP (1) EP2885745A4 (ja)
JP (1) JP6169697B2 (ja)
CN (1) CN104685516B (ja)
WO (1) WO2014028855A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2022538694A (ja) * 2019-07-02 2022-09-05 深▲セン▼▲憶▼▲海▼原▲識▼科技有限公司 脳型知能とコグニティブコンピューティングに使用されるスパイキングニューラルネットワーク演算システムおよび方法
KR20230004899A (ko) * 2015-10-23 2023-01-06 가부시키가이샤 한도오따이 에네루기 켄큐쇼 모듈 및 전자 기기

Families Citing this family (114)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8648867B2 (en) 2006-09-25 2014-02-11 Neurala Llc Graphic processor based accelerator system and method
US8467623B2 (en) 2010-03-26 2013-06-18 Brain Corporation Invariant pulse latency coding systems and methods systems and methods
US9405975B2 (en) 2010-03-26 2016-08-02 Brain Corporation Apparatus and methods for pulse-code invariant object recognition
US9122994B2 (en) 2010-03-26 2015-09-01 Brain Corporation Apparatus and methods for temporally proximate object recognition
US9311593B2 (en) 2010-03-26 2016-04-12 Brain Corporation Apparatus and methods for polychronous encoding and multiplexing in neuronal prosthetic devices
US9152915B1 (en) 2010-08-26 2015-10-06 Brain Corporation Apparatus and methods for encoding vector into pulse-code output
US8775341B1 (en) 2010-10-26 2014-07-08 Michael Lamport Commons Intelligent control with hierarchical stacked neural networks
US9015093B1 (en) 2010-10-26 2015-04-21 Michael Lamport Commons Intelligent control with hierarchical stacked neural networks
US9566710B2 (en) 2011-06-02 2017-02-14 Brain Corporation Apparatus and methods for operating robotic devices using selective state space training
US9070039B2 (en) 2013-02-01 2015-06-30 Brian Corporation Temporal winner takes all spiking neuron network sensory processing apparatus and methods
US9147156B2 (en) 2011-09-21 2015-09-29 Qualcomm Technologies Inc. Apparatus and methods for synaptic update in a pulse-coded network
US20150127154A1 (en) * 2011-06-02 2015-05-07 Brain Corporation Reduced degree of freedom robotic controller apparatus and methods
US9047568B1 (en) 2012-09-20 2015-06-02 Brain Corporation Apparatus and methods for encoding of sensory data using artificial spiking neurons
US8725658B2 (en) 2011-09-21 2014-05-13 Brain Corporation Elementary network description for efficient memory management in neuromorphic systems
US9104973B2 (en) 2011-09-21 2015-08-11 Qualcomm Technologies Inc. Elementary network description for neuromorphic systems with plurality of doublets wherein doublet events rules are executed in parallel
US8725662B2 (en) 2011-09-21 2014-05-13 Brain Corporation Apparatus and method for partial evaluation of synaptic updates based on system events
US8719199B2 (en) * 2011-09-21 2014-05-06 Brain Corporation Systems and methods for providing a neural network having an elementary network description for efficient implementation of event-triggered plasticity rules
US9098811B2 (en) 2012-06-04 2015-08-04 Brain Corporation Spiking neuron network apparatus and methods
US9117176B2 (en) 2011-09-21 2015-08-25 Qualcomm Technologies Inc. Round-trip engineering apparatus and methods for neural networks
US10210452B2 (en) 2011-09-21 2019-02-19 Qualcomm Incorporated High level neuromorphic network description apparatus and methods
US9224090B2 (en) 2012-05-07 2015-12-29 Brain Corporation Sensory input processing apparatus in a spiking neural network
US9129221B2 (en) 2012-05-07 2015-09-08 Brain Corporation Spiking neural network feedback apparatus and methods
US9208432B2 (en) 2012-06-01 2015-12-08 Brain Corporation Neural network learning and collaboration apparatus and methods
US9412041B1 (en) 2012-06-29 2016-08-09 Brain Corporation Retinal apparatus and methods
US9311594B1 (en) 2012-09-20 2016-04-12 Brain Corporation Spiking neuron network apparatus and methods for encoding of sensory data
US9183493B2 (en) 2012-10-25 2015-11-10 Brain Corporation Adaptive plasticity apparatus and methods for spiking neuron network
US9111226B2 (en) 2012-10-25 2015-08-18 Brain Corporation Modulated plasticity apparatus and methods for spiking neuron network
US9218563B2 (en) 2012-10-25 2015-12-22 Brain Corporation Spiking neuron sensory processing apparatus and methods for saliency detection
US9275326B2 (en) 2012-11-30 2016-03-01 Brain Corporation Rate stabilization through plasticity in spiking neuron network
US9123127B2 (en) 2012-12-10 2015-09-01 Brain Corporation Contrast enhancement spiking neuron network sensory processing apparatus and methods
US9177245B2 (en) 2013-02-08 2015-11-03 Qualcomm Technologies Inc. Spiking network apparatus and method with bimodal spike-timing dependent plasticity
US9262712B2 (en) 2013-03-08 2016-02-16 International Business Machines Corporation Structural descriptions for neurosynaptic networks
US9764468B2 (en) 2013-03-15 2017-09-19 Brain Corporation Adaptive predictor apparatus and methods
US9542643B2 (en) * 2013-05-21 2017-01-10 Qualcomm Incorporated Efficient hardware implementation of spiking networks
EP3000030A4 (en) 2013-05-22 2017-07-05 Neurala Inc. Methods and apparatus for iterative nonspecific distributed runtime architecture and its application to cloud intelligence
EP2999940A4 (en) 2013-05-22 2017-11-15 Neurala Inc. Methods and apparatus for early sensory integration and robust acquisition of real world knowledge
US9242372B2 (en) 2013-05-31 2016-01-26 Brain Corporation Adaptive robotic interface apparatus and methods
US9792546B2 (en) 2013-06-14 2017-10-17 Brain Corporation Hierarchical robotic controller apparatus and methods
US9314924B1 (en) 2013-06-14 2016-04-19 Brain Corporation Predictive robotic controller apparatus and methods
US9239985B2 (en) * 2013-06-19 2016-01-19 Brain Corporation Apparatus and methods for processing inputs in an artificial neuron network
US9436909B2 (en) 2013-06-19 2016-09-06 Brain Corporation Increased dynamic range artificial neuron network apparatus and methods
US9552546B1 (en) 2013-07-30 2017-01-24 Brain Corporation Apparatus and methods for efficacy balancing in a spiking neuron network
US9330355B2 (en) 2013-08-06 2016-05-03 Qualcomm Incorporated Computed synapses for neuromorphic systems
US9579789B2 (en) 2013-09-27 2017-02-28 Brain Corporation Apparatus and methods for training of robotic control arbitration
US10339041B2 (en) 2013-10-11 2019-07-02 Qualcomm Incorporated Shared memory architecture for a neural simulator
US9489623B1 (en) 2013-10-15 2016-11-08 Brain Corporation Apparatus and methods for backward propagation of errors in a spiking neuron network
US9463571B2 (en) 2013-11-01 2016-10-11 Brian Corporation Apparatus and methods for online training of robots
US9597797B2 (en) 2013-11-01 2017-03-21 Brain Corporation Apparatus and methods for haptic training of robots
US9248569B2 (en) 2013-11-22 2016-02-02 Brain Corporation Discrepancy detection apparatus and methods for machine learning
US9460382B2 (en) * 2013-12-23 2016-10-04 Qualcomm Incorporated Neural watchdog
US9358685B2 (en) 2014-02-03 2016-06-07 Brain Corporation Apparatus and methods for control of robot actions based on corrective user inputs
US10552734B2 (en) * 2014-02-21 2020-02-04 Qualcomm Incorporated Dynamic spatial target selection
US9626566B2 (en) 2014-03-19 2017-04-18 Neurala, Inc. Methods and apparatus for autonomous robotic control
EP3120300A4 (en) 2014-03-19 2017-11-22 Neurala Inc. Methods and apparatus for autonomous robotic control
US20150278685A1 (en) * 2014-03-31 2015-10-01 Qualcomm Incorporated Probabilistic representation of large sequences using spiking neural network
US9346167B2 (en) 2014-04-29 2016-05-24 Brain Corporation Trainable convolutional network apparatus and methods for operating a robotic vehicle
WO2016014137A2 (en) * 2014-05-06 2016-01-28 Neurala, Inc. Apparatuses, methods, and systems for defining hardware-agnostic brains for autonomous robots
US9713982B2 (en) 2014-05-22 2017-07-25 Brain Corporation Apparatus and methods for robotic operation using video imagery
US10417554B2 (en) 2014-05-22 2019-09-17 Lee J. Scheffler Methods and systems for neural and cognitive processing
US9939253B2 (en) 2014-05-22 2018-04-10 Brain Corporation Apparatus and methods for distance estimation using multiple image sensors
US10194163B2 (en) 2014-05-22 2019-01-29 Brain Corporation Apparatus and methods for real time estimation of differential motion in live video
US9848112B2 (en) 2014-07-01 2017-12-19 Brain Corporation Optical detection apparatus and methods
US10057593B2 (en) 2014-07-08 2018-08-21 Brain Corporation Apparatus and methods for distance estimation using stereo imagery
US10055850B2 (en) 2014-09-19 2018-08-21 Brain Corporation Salient features tracking apparatus and methods using visual initialization
US9630318B2 (en) 2014-10-02 2017-04-25 Brain Corporation Feature detection apparatus and methods for training of robotic navigation
US9881349B1 (en) 2014-10-24 2018-01-30 Gopro, Inc. Apparatus and methods for computerized object identification
US9852370B2 (en) 2014-10-30 2017-12-26 International Business Machines Corporation Mapping graphs onto core-based neuromorphic architectures
US10679120B2 (en) * 2014-11-10 2020-06-09 International Business Machines Corporation Power driven synaptic network synthesis
RU2598298C2 (ru) * 2015-02-09 2016-09-20 Михаил Ефимович Мазуров Импульсный нейрон, близкий к реальному
US9704094B2 (en) 2015-02-19 2017-07-11 International Business Machines Corporation Mapping of algorithms to neurosynaptic hardware
US9717387B1 (en) 2015-02-26 2017-08-01 Brain Corporation Apparatus and methods for programming and training of robotic household appliances
US9971965B2 (en) 2015-03-18 2018-05-15 International Business Machines Corporation Implementing a neural network algorithm on a neurosynaptic substrate based on metadata associated with the neural network algorithm
US10204301B2 (en) 2015-03-18 2019-02-12 International Business Machines Corporation Implementing a neural network algorithm on a neurosynaptic substrate based on criteria related to the neurosynaptic substrate
US9984323B2 (en) 2015-03-26 2018-05-29 International Business Machines Corporation Compositional prototypes for scalable neurosynaptic networks
US10474948B2 (en) 2015-03-27 2019-11-12 University Of Dayton Analog neuromorphic circuit implemented using resistive memories
CN106250981B (zh) * 2015-06-10 2022-04-01 三星电子株式会社 减少存储器访问和网络内带宽消耗的脉冲神经网络
US10217046B2 (en) * 2015-06-29 2019-02-26 International Business Machines Corporation Neuromorphic processing devices
US10885429B2 (en) 2015-07-06 2021-01-05 University Of Dayton On-chip training of memristor crossbar neuromorphic processing systems
US10197664B2 (en) 2015-07-20 2019-02-05 Brain Corporation Apparatus and methods for detection of objects using broadband signals
US10268949B2 (en) 2016-03-21 2019-04-23 International Business Machines Corporation Artificial neuron apparatus
US10949737B2 (en) 2016-07-13 2021-03-16 Samsung Electronics Co., Ltd. Method for neural network and apparatus performing same method
KR102399548B1 (ko) * 2016-07-13 2022-05-19 삼성전자주식회사 뉴럴 네트워크를 위한 방법 및 그 방법을 수행하는 장치
US10176425B2 (en) 2016-07-14 2019-01-08 University Of Dayton Analog neuromorphic circuits for dot-product operation implementing resistive memories
US11295203B2 (en) 2016-07-27 2022-04-05 International Business Machines Corporation Optimizing neuron placement in a neuromorphic system
EP3516592A4 (en) * 2016-09-19 2020-05-20 HRL Laboratories, LLC METHOD FOR OBJECT DETECTION IN DIGITAL IMAGES AND VIDEOS USING PULSED NEURONAL NETWORKS
US20180144244A1 (en) * 2016-11-23 2018-05-24 Vital Images, Inc. Distributed clinical workflow training of deep learning neural networks
US10679118B2 (en) * 2016-12-20 2020-06-09 Intel Corporation Solving matrix inverse problems using neuromorphic computing
US10878313B2 (en) * 2017-05-02 2020-12-29 Intel Corporation Post synaptic potential-based learning rule
TWI625681B (zh) * 2017-05-11 2018-06-01 國立交通大學 神經網路處理系統
US10540189B2 (en) * 2017-05-22 2020-01-21 Analytical Graphics Inc. Formalized execution of model integrated descriptive architecture languages
CN107612968B (zh) * 2017-08-15 2019-06-18 北京小蓦机器人技术有限公司 通过智能终端控制其所连接设备的方法、设备与系统
TWI684141B (zh) * 2017-10-12 2020-02-01 英屬開曼群島商意騰科技股份有限公司 人工神經元中以非零封包加速乘法運算的裝置及方法
CN111465945B (zh) * 2018-01-23 2024-02-02 赫尔实验室有限公司 应用于神经形态硬件的用于模式识别的系统、方法与介质
US11645501B2 (en) * 2018-02-28 2023-05-09 International Business Machines Corporation Distributed, event-based computation using neuromorphic cores
US11954576B2 (en) 2018-04-17 2024-04-09 Shenzhen Corerain Technologies Co., Ltd. Method for implementing and developing network model and related product
CN108805289B (zh) * 2018-05-08 2020-11-13 南京理工大学 一种基于基底神经节的电机故障诊断方法
US10853725B2 (en) * 2018-05-18 2020-12-01 Deepmind Technologies Limited Neural networks with relational memory
CN108846349A (zh) * 2018-06-08 2018-11-20 电子科技大学 一种基于动态Spiking神经网络的人脸识别方法
WO2019240868A1 (en) * 2018-06-13 2019-12-19 Hrl Laboratories, Llc Neuromorphic system for authorized user detection
CN108920582A (zh) * 2018-06-25 2018-11-30 郑州云海信息技术有限公司 一种目标服务器绑定存储卷的方法及系统
EP3605401A1 (en) * 2018-07-31 2020-02-05 GrAl Matter Labs S.A.S. Data processing module, data processing system and data processing method
EP3640862A1 (en) * 2018-10-15 2020-04-22 GrAl Matter Labs S.A.S. Neural network evaluation tool and method
CN109461173B (zh) * 2018-10-25 2022-03-04 天津师范大学 一种用于时域视觉传感器信号处理的快速角点检测方法
CN111417963B (zh) 2018-11-01 2021-06-22 P·A·范德梅德 改进的尖峰神经网络
CN113875156A (zh) 2019-03-17 2021-12-31 恩帕博尔有限公司 用于交叉相关的方法及设备
WO2020247309A1 (en) * 2019-06-02 2020-12-10 Barton David Carl Method and apparatus for shared cross-stream event detection
CN110598847B (zh) * 2019-08-15 2020-08-28 阿里巴巴集团控股有限公司 处理交互序列数据的方法及装置
US10970350B2 (en) 2019-08-15 2021-04-06 Advanced New Technologies Co., Ltd. Method and apparatus for processing user interaction sequence data
US11481627B2 (en) * 2019-10-30 2022-10-25 Microsoft Technology Licensing, Llc Distributed learning of composite machine learning models
WO2021114133A1 (en) * 2019-12-11 2021-06-17 Autonym Pte. Ltd. Method and system for informed decision making
CN111506540B (zh) * 2020-04-24 2021-11-30 中国电子科技集团公司第五十八研究所 一种硬件可编程异构多核片上系统
US11520576B1 (en) * 2022-01-07 2022-12-06 Plusai, Inc. Methods and apparatus for automatically labeling data processing events in autonomous driving vehicles via machine learning
CN114708639B (zh) * 2022-04-07 2024-05-14 重庆大学 一种基于异构脉冲神经网络的人脸识别的fpga芯片
TWI813419B (zh) * 2022-08-18 2023-08-21 瑞昱半導體股份有限公司 神經網路系統以及神經網路系統運行方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001051968A (ja) * 1999-08-05 2001-02-23 Fuji Xerox Co Ltd ニューラルネットワーク構築方法及びニューラルネットワーク処理装置

Family Cites Families (71)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5063603A (en) 1989-11-06 1991-11-05 David Sarnoff Research Center, Inc. Dynamic method for recognizing objects and image processing system therefor
US5875108A (en) 1991-12-23 1999-02-23 Hoffberg; Steven M. Ergonomic man-machine interface incorporating adaptive pattern recognition based control system
US5355435A (en) 1992-05-18 1994-10-11 New Mexico State University Technology Transfer Corp. Asynchronous temporal neural processing element
US5673367A (en) 1992-10-01 1997-09-30 Buckley; Theresa M. Method for neural network control of motion using real-time environmental feedback
FI92361C (fi) 1992-12-14 1994-10-25 Nokia Telecommunications Oy Menetelmä kehysvälitysverkon ylikuormitustilanteiden hallitsemiseksi sekä kehysvälitysverkon solmu
RU2108612C1 (ru) 1994-09-14 1998-04-10 Круглов Сергей Петрович Адаптивная система управления с идентификатором и неявной эталонной моделью
US5845271A (en) 1996-01-26 1998-12-01 Thaler; Stephen L. Non-algorithmically implemented artificial neural networks and components thereof
US6009418A (en) 1996-05-02 1999-12-28 Cooper; David L. Method and apparatus for neural networking using semantic attractor architecture
EP0988585A4 (en) 1997-06-11 2007-12-26 Univ Southern California DYNAMIC SYNAPSE FOR PROCESSING SIGNALS IN NEURONAL NETWORKS
JP4131340B2 (ja) 1997-07-11 2008-08-13 ソニー株式会社 制御装置、制御方法、および受信装置
US6458157B1 (en) 1997-08-04 2002-10-01 Suaning Gregg Joergen Retinal stimulator
US6581046B1 (en) 1997-10-10 2003-06-17 Yeda Research And Development Co. Ltd. Neuronal phase-locked loops
US6545705B1 (en) 1998-04-10 2003-04-08 Lynx System Developers, Inc. Camera with object recognition/data output
US7526466B2 (en) 1998-05-28 2009-04-28 Qps Tech Limited Liability Company Method and system for analysis of intended meaning of natural language
US6546291B2 (en) 2000-02-16 2003-04-08 Massachusetts Eye & Ear Infirmary Balance prosthesis
US7054850B2 (en) 2000-06-16 2006-05-30 Canon Kabushiki Kaisha Apparatus and method for detecting or recognizing pattern by employing a plurality of feature detecting elements
US6910060B2 (en) 2001-05-21 2005-06-21 Computational Sensor Corp. Spatio-temporal filter and method
US7369686B2 (en) 2001-08-23 2008-05-06 Sony Corporation Robot apparatus, face recognition method, and face recognition apparatus
US8156057B2 (en) * 2003-03-27 2012-04-10 Knowm Tech, Llc Adaptive neural network utilizing nanotechnology-based components
US7426501B2 (en) 2003-07-18 2008-09-16 Knowntech, Llc Nanotechnology neural network methods and systems
US20060161218A1 (en) 2003-11-26 2006-07-20 Wicab, Inc. Systems and methods for treating traumatic brain injury
JP4780921B2 (ja) 2004-03-17 2011-09-28 キヤノン株式会社 並列パルス信号処理装置、及びその制御方法
JP2005352900A (ja) 2004-06-11 2005-12-22 Canon Inc 情報処理装置、情報処理方法、パターン認識装置、及びパターン認識方法
US20060224533A1 (en) 2005-03-14 2006-10-05 Thaler Stephen L Neural network development and data analysis tool
US7420396B2 (en) 2005-06-17 2008-09-02 Knowmtech, Llc Universal logic gate utilizing nanotechnology
US7747070B2 (en) 2005-08-31 2010-06-29 Microsoft Corporation Training convolutional neural networks on graphics processing units
WO2007071070A1 (en) 2005-12-23 2007-06-28 Universite De Sherbrooke Spatio-temporal pattern recognition using a spiking neural network and processing thereof on a portable and/or distributed computer
US7849030B2 (en) 2006-05-31 2010-12-07 Hartford Fire Insurance Company Method and system for classifying documents
RU2406105C2 (ru) 2006-06-13 2010-12-10 Филипп Геннадьевич Нестерук Способ обработки информации в нейронных сетях
JP4087423B2 (ja) 2006-10-17 2008-05-21 京セラミタ株式会社 携帯通信装置
US8103602B2 (en) 2006-12-29 2012-01-24 Neurosciences Research Foundation, Inc. Solving the distal reward problem through linkage of STDP and dopamine signaling
RU2459254C2 (ru) 2007-04-27 2012-08-20 Сименс Акциенгезелльшафт Способ компьютеризованного обучения одной или более нейронных сетей
JPWO2009150920A1 (ja) 2008-06-09 2011-11-10 株式会社パイオラックスメディカルデバイス 管状器官の治療具
US20100084472A1 (en) 2008-10-02 2010-04-08 Silverbrook Research Pty Ltd Method of distinguishing first coding pattern from second coding pattern
US8160354B2 (en) 2008-12-26 2012-04-17 Five Apes, Inc. Multi-stage image pattern recognizer
US8250010B2 (en) * 2009-05-21 2012-08-21 International Business Machines Corporation Electronic learning synapse with spike-timing dependent plasticity using unipolar memory-switching elements
US8447714B2 (en) * 2009-05-21 2013-05-21 International Business Machines Corporation System for electronic learning synapse with spike-timing dependent plasticity using phase change memory
US8200593B2 (en) 2009-07-20 2012-06-12 Corticaldb Inc Method for efficiently simulating the information processing in cells and tissues of the nervous system with a temporal series compressed encoding neural network
US8429107B2 (en) 2009-11-04 2013-04-23 International Business Machines Corporation System for address-event-representation network simulation
US8275727B2 (en) 2009-11-13 2012-09-25 International Business Machines Corporation Hardware analog-digital neural networks
US8311965B2 (en) * 2009-11-18 2012-11-13 International Business Machines Corporation Area efficient neuromorphic circuits using field effect transistors (FET) and variable resistance material
US9405975B2 (en) 2010-03-26 2016-08-02 Brain Corporation Apparatus and methods for pulse-code invariant object recognition
US9122994B2 (en) 2010-03-26 2015-09-01 Brain Corporation Apparatus and methods for temporally proximate object recognition
US8467623B2 (en) 2010-03-26 2013-06-18 Brain Corporation Invariant pulse latency coding systems and methods systems and methods
US9311593B2 (en) 2010-03-26 2016-04-12 Brain Corporation Apparatus and methods for polychronous encoding and multiplexing in neuronal prosthetic devices
US9129220B2 (en) * 2010-07-07 2015-09-08 Qualcomm Incorporated Methods and systems for digital neural processing with discrete-level synapes and probabilistic STDP
US8433665B2 (en) 2010-07-07 2013-04-30 Qualcomm Incorporated Methods and systems for three-memristor synapse with STDP and dopamine signaling
US9269042B2 (en) * 2010-09-30 2016-02-23 International Business Machines Corporation Producing spike-timing dependent plasticity in a neuromorphic network utilizing phase change synaptic devices
US20120084240A1 (en) * 2010-09-30 2012-04-05 International Business Machines Corporation Phase change memory synaptronic circuit for spiking computation, association and recall
US8510239B2 (en) 2010-10-29 2013-08-13 International Business Machines Corporation Compact cognitive synaptic computing circuits with crossbar arrays spatially in a staggered pattern
CN102226740B (zh) 2011-04-18 2013-05-22 中国计量学院 基于外加周期信号控制随机共振的轴承故障检测方法
US9147156B2 (en) 2011-09-21 2015-09-29 Qualcomm Technologies Inc. Apparatus and methods for synaptic update in a pulse-coded network
US9104973B2 (en) 2011-09-21 2015-08-11 Qualcomm Technologies Inc. Elementary network description for neuromorphic systems with plurality of doublets wherein doublet events rules are executed in parallel
US8725662B2 (en) 2011-09-21 2014-05-13 Brain Corporation Apparatus and method for partial evaluation of synaptic updates based on system events
US8712941B2 (en) 2011-09-21 2014-04-29 Brain Corporation Elementary network description for efficient link between neuronal models and neuromorphic systems
US8719199B2 (en) 2011-09-21 2014-05-06 Brain Corporation Systems and methods for providing a neural network having an elementary network description for efficient implementation of event-triggered plasticity rules
US8725658B2 (en) 2011-09-21 2014-05-13 Brain Corporation Elementary network description for efficient memory management in neuromorphic systems
US9117176B2 (en) 2011-09-21 2015-08-25 Qualcomm Technologies Inc. Round-trip engineering apparatus and methods for neural networks
US10210452B2 (en) 2011-09-21 2019-02-19 Qualcomm Incorporated High level neuromorphic network description apparatus and methods
US9015092B2 (en) 2012-06-04 2015-04-21 Brain Corporation Dynamically reconfigurable stochastic learning apparatus and methods
US20130151449A1 (en) 2011-12-07 2013-06-13 Filip Ponulak Apparatus and methods for implementing learning for analog and spiking signals in artificial neural networks
US9146546B2 (en) 2012-06-04 2015-09-29 Brain Corporation Systems and apparatus for implementing task-specific learning using spiking neurons
US20130325774A1 (en) 2012-06-04 2013-12-05 Brain Corporation Learning stochastic apparatus and methods
US8712939B2 (en) 2011-09-21 2014-04-29 Brain Corporation Tag-based apparatus and methods for neural networks
US9104186B2 (en) 2012-06-04 2015-08-11 Brain Corporation Stochastic apparatus and methods for implementing generalized learning rules
US9098811B2 (en) 2012-06-04 2015-08-04 Brain Corporation Spiking neuron network apparatus and methods
US9129221B2 (en) 2012-05-07 2015-09-08 Brain Corporation Spiking neural network feedback apparatus and methods
US20130297539A1 (en) 2012-05-07 2013-11-07 Filip Piekniewski Spiking neural network object recognition apparatus and methods
US9224090B2 (en) 2012-05-07 2015-12-29 Brain Corporation Sensory input processing apparatus in a spiking neural network
US9256215B2 (en) 2012-07-27 2016-02-09 Brain Corporation Apparatus and methods for generalized state-dependent learning in spiking neuron networks
US9256823B2 (en) 2012-07-27 2016-02-09 Qualcomm Technologies Inc. Apparatus and methods for efficient updates in spiking neuron network

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001051968A (ja) * 1999-08-05 2001-02-23 Fuji Xerox Co Ltd ニューラルネットワーク構築方法及びニューラルネットワーク処理装置

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20230004899A (ko) * 2015-10-23 2023-01-06 가부시키가이샤 한도오따이 에네루기 켄큐쇼 모듈 및 전자 기기
KR102609997B1 (ko) 2015-10-23 2023-12-06 가부시키가이샤 한도오따이 에네루기 켄큐쇼 모듈 및 전자 기기
US11893474B2 (en) 2015-10-23 2024-02-06 Semiconductor Energy Laboratory Co., Ltd. Semiconductor device and electronic device
JP2022538694A (ja) * 2019-07-02 2022-09-05 深▲セン▼▲憶▼▲海▼原▲識▼科技有限公司 脳型知能とコグニティブコンピューティングに使用されるスパイキングニューラルネットワーク演算システムおよび方法
JP7322273B2 (ja) 2019-07-02 2023-08-07 深▲セン▼▲憶▼▲海▼原▲識▼科技有限公司 脳型知能とコグニティブコンピューティングに使用されるスパイキングニューラルネットワーク演算システムおよび方法

Also Published As

Publication number Publication date
US20140052679A1 (en) 2014-02-20
EP2885745A4 (en) 2017-05-17
CN104685516A (zh) 2015-06-03
EP2885745A1 (en) 2015-06-24
CN104685516B (zh) 2018-03-30
WO2014028855A1 (en) 2014-02-20
US9460387B2 (en) 2016-10-04
JP6169697B2 (ja) 2017-07-26

Similar Documents

Publication Publication Date Title
JP6169697B2 (ja) スパイキングニューロンネットワーク学習のための装置および方法
US9412064B2 (en) Event-based communication in spiking neuron networks communicating a neural activity payload with an efficacy update
US9311596B2 (en) Methods for memory management in parallel networks
US9092738B2 (en) Apparatus and methods for event-triggered updates in parallel networks
US8712941B2 (en) Elementary network description for efficient link between neuronal models and neuromorphic systems
US9104973B2 (en) Elementary network description for neuromorphic systems with plurality of doublets wherein doublet events rules are executed in parallel
US11481621B2 (en) Unsupervised, supervised and reinforced learning via spiking computation
US10891544B2 (en) Event-driven universal neural network circuit
US10282661B2 (en) Multi-modal neural network for universal, online learning
US11070623B2 (en) Methods and apparatus for iterative nonspecific distributed runtime architecture and its application to cloud intelligence
Yu Concurrent Execution of Spiking Neuron Networks on Neuromorphic Hardware
Le Martelot et al. Exploiting natural asynchrony and local knowledge within systemic computation to enable generic neural structures

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160719

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160719

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20161006

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161117

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20161117

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20161130

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170110

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170410

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20170530

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170628

R150 Certificate of patent or registration of utility model

Ref document number: 6169697

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250