(57)【特許請求の範囲】
【請求項１】
ニューラル・ネットワークのための方法であって、
イベントの単一レベル、順序付きリストと比較し、前記イベントのより高速な処理のためのマルチレベル・スキームを使用してニューラル・ネットワークにおける複数のノードに関する複数の前記イベントをスケジュールすることと、ここにおいて、
前記マルチレベル・スキームの第１のレベルは前記複数のノードのインデックス付け可能リストを備え、
前記マルチレベル・スキームの第２のレベルが、前記複数のノードの各ノードに関して、前記ノードの同時未決定のイベントのスケジュールを備える、
前記スケジュールされた複数のイベントを実行することと、
を備える方法。
【請求項２】
前記スケジュールされた複数のイベントを実行することは、
前記スケジュールされた複数のイベントにおける次のイベントを見つけることと、
前記次のイベントに基づき、前記次のイベントに関連付けられたノードの状態を前進させること、ここにおいて、前記ノードは前記複数のノードの１つである、と、
あるのであれば、前記ノードに関する出力イベントが、前記ノードの前記前進した状態に基づきいつ起きると予期されるか決定することと、
を備える、請求項１に記載の方法。
【請求項３】
前記決定に基づき前記ノードに関する前記出力イベントを再スケジュールすることをさらに備え、ここにおいて前記再スケジュールは前記マルチレベル・スキームの使用を備える、請求項２に記載の方法。
【請求項４】
前記スケジュールされた複数のイベントを実行することが前記スケジュールされた複数のイベントにおける次のイベントを見つけることを備え、前記次のイベントを見つけることは、
前記マルチレベル・スキームにおける複数のレベルのそれぞれで最も早いイベントを決定するために前記複数のレベルをトラバースすることと、
前記レベルのトラバースの後に前記次のイベントをすべての前記イベントの最も早いものと決定することと、
を備える、請求項１に記載の方法。
【請求項５】
前記第１のレベルでノードをアドレス指定することによって、前記複数のノードにおける前記ノードに関する前記同時未決定のイベントの前記スケジュールを決定することをさらに備える、請求項１に記載の方法。
【請求項６】
前記ノードに関する前記同時未決定のイベントの前記スケジュールは、前記同時未決定のイベントの最も早いものが最初にスケジュールされるように、少なくとも部分的にソートされる、請求項１に記載の方法。
【請求項７】
前記同時未決定のイベントの前記スケジュールは、多くても、前記ノードに関する１つのみの出力イベントを備える、請求項１に記載の方法。
【請求項８】
前記複数のノードを１または複数のユニットに編成することをさらに備える、請求項１に記載の方法。
【請求項９】
前記編成は、前記ユニットの間の第１の結合遅延が前記ユニット内の第２の結合遅延より長いように、結合遅延に基づき前記複数のノードを前記ユニットに編成することを備える、請求項８に記載の方法。
【請求項１０】
前記マルチレベル・スキームの第３のレベルが、前記ユニットのそれぞれに関して、前記ユニットにおける前記ノードのそれぞれからの前記同時未決定のイベントの最も早いものを備える、請求項８に記載の方法。
【請求項１１】
前記マルチレベル・スキームの第４のレベルが、前記ユニットのそれぞれから前記同時未決定のイベントの最も早いものに基づく編成を備える、請求項１０に記載の方法。
【請求項１２】
前記編成は、バイナリ・ツリーを備え、そして前記バイナリ・ツリーのルートがすべての前記スケジュールされた複数のイベントから最も早い同時未決定のイベントを備える、請求項１１に記載の方法。
【請求項１３】
前記マルチレベル・スキームの前記第３のレベルにおいて、前記ユニットのそれぞれに関して、前記ユニットにおける前記ノードのそれぞれからの前記同時未決定のイベントの前記最も早いものはリンクされたリストとして編成され、前記マルチレベル・スキームの第５のレベルは、前記ユニットのそれぞれに関して、前記リンクされたリストを参照するベクトルを備える、請求項１１に記載の方法。
【請求項１４】
前記スケジュールされた複数のイベントの再スケジュールをさらに備え、ここにおいて、前記再スケジュールは、
前記スケジュールされた複数のイベントからの挿入または削除のための所望のエントリに最も近い前記リンクされたリストにおける１または複数のエントリを見つけるために前記ベクトルを使用することと、
見つけられた前記最も近い１または複数のエントリに基づき前記所望のエントリの位置を見つけるために前記リンクされたリストを使用することと、
を備える、請求項１３に記載の方法。
【請求項１５】
前記複数のノードは複数のニューロンまたは複数のシナプスの少なくとも１つを備える、請求項１に記載の方法。
【請求項１６】
ニューラル・ネットワークのための装置であって、
処理システムが、
イベントの単一レベル、順序付きリストと比較し、前記イベントのより高速な処理のためのマルチレベル・スキームを使用してニューラル・ネットワークにおける複数のノードに関する複数の前記イベントをスケジュールすることと、ここにおいて、
前記マルチレベル・スキームの第１のレベルは前記複数のノードのインデックス付け可能リストを備え、
前記マルチレベル・スキームの第２のレベルが、前記複数のノードの各ノードに関して、前記ノードの同時未決定のイベントのスケジュールを備える、
前記スケジュールされた複数のイベントを実行することと、
を行うように構成された処理システムを備える装置。
【請求項１７】
前記処理システムは、
前記スケジュールされた複数のイベントにおける次のイベントを見つけることと、
前記次のイベントに基づき、前記次のイベントに関連付けられたノードの状態を前進させること、ここにおいて前記ノードは前記複数のノードの１つである、と、
あるのであれば、前記ノードに関する出力イベントが、前記ノードの前記前進した状態に基づきいつ起きると予期されるか決定することと、
によって前記スケジュールされた複数のイベントを実行するように構成されている、請求項１６に記載の装置。
【請求項１８】
前記処理システムは、前記決定に基づき前記ノードに関する前記出力イベントを再スケジュールするようにさらに構成され、ここにおいて前記再スケジュールは前記マルチレベル・スキームの使用を備える、請求項１７に記載の装置。
【請求項１９】
前記処理システムは、前記スケジュールされた複数のイベントにおける次のイベントを見つけることによって、前記スケジュールされた複数のイベントを実行するように構成され、前記次のイベントを見つけることは、
前記マルチレベル・スキームにおける複数のレベルのそれぞれで最も早いイベントを決定するために前記複数のレベルをトラバースすることと、
前記レベルのトラバースの後に前記次のイベントをすべての前記イベントの最も早いものと決定することと、
を備える、請求項１６に記載の装置。
【請求項２０】
前記処理システムはさらに、前記第１のレベルでノードをアドレス指定することによって、前記複数のノードにおける前記ノードに関する前記同時未決定のイベントの前記スケジュールを決定するように構成された、請求項１６に記載の装置。
【請求項２１】
前記ノードに関する前記同時未決定のイベントの前記スケジュールは、前記同時未決定のイベントの最も早いものが最初にスケジュールされるように、少なくとも部分的にソートされる、請求項１６に記載の装置。
【請求項２２】
前記同時未決定のイベントの前記スケジュールは、多くても、前記ノードに関する１つのみの出力イベントを備える、請求項１６に記載の装置。
【請求項２３】
前記処理システムはさらに、前記複数のノードを１または複数のユニットに編成するように構成された、請求項１６に記載の装置。
【請求項２４】
前記処理システムは、前記ユニットの間の第１の結合遅延が前記ユニット内の第２の結合遅延より長いように、結合遅延に基づき前記複数のノードを前記ユニットに編成するように構成された、請求項２３に記載の装置。
【請求項２５】
第３のレベルの前記マルチレベル・スキームが、前記ユニットのそれぞれに関して、前記ユニットにおける前記ノードのそれぞれからの前記同時未決定のイベントの最も早いものを備える、請求項２３に記載の装置。
【請求項２６】
第４のレベルの前記マルチレベル・スキームが、前記ユニットのそれぞれから前記同時未決定のイベントの最も早いものに基づく編成を備える、請求項２５に記載の装置。
【請求項２７】
前記編成は、バイナリ・ツリーを備え、そして前記バイナリ・ツリーのルートがすべての前記スケジュールされた複数のイベントから最も早い同時未決定のイベントを備える、請求項２６に記載の装置。
【請求項２８】
前記第３のレベルの前記マルチレベル・スキームにおいて、前記ユニットのそれぞれに関して、前記ユニットにおける前記ノードのそれぞれからの前記同時未決定のイベントの前記最も早いものはリンクされたリストとして編成され、第５のレベルの前記マルチレベル・スキームは、前記ユニットのそれぞれに関して、前記リンクされたリストを参照するベクトルを備える、請求項２６に記載の装置。
【請求項２９】
前記処理システムはさらに、
前記スケジュールされた複数のイベントからの挿入または削除のための所望のエントリに最も近い前記リンクされたリストにおける１または複数のエントリを見つけるために前記ベクトルを使用することと、
見つけられた前記最も近い１または複数のエントリに基づき前記所望のエントリの位置を見つけるために前記リンクされたリストを使用することと、
によって前記スケジュールされた複数のイベントを再スケジュールするように構成された、請求項２８に記載の装置。
【請求項３０】
前記複数のノードは複数のニューロンまたは複数のシナプスの少なくとも１つを備える、請求項１６に記載の装置。
【請求項３１】
ニューラル・ネットワークのための装置であって、
イベントの単一レベル、順序付きリストと比較し、前記イベントのより高速な処理のためのマルチレベル・スキームを使用してニューラル・ネットワークにおける複数のノードに関する複数の前記イベントをスケジュールするための手段と、ここにおいて、
前記マルチレベル・スキームの第１のレベルは前記複数のノードのインデックス付け可能リストを備え、
前記マルチレベル・スキームの第２のレベルが、前記複数のノードの各ノードに関して、前記ノードの同時未決定のイベントのスケジュールを備える、
前記スケジュールされた複数のイベントを実行するための手段と、
を備える装置。
【請求項３２】
前記スケジュールされた複数のイベントを実行するための前記手段は、
前記スケジュールされた複数のイベントにおける次のイベントを見つけることと、
前記次のイベントに基づき、前記次のイベントに関連付けられたノードの状態を前進させること、ここにおいて前記ノードは前記複数のノードの１つである、と、
あるのであれば、前記ノードに関する出力イベントが、前記ノードの前記前進した状態に基づきいつ起きると予期されるか決定することとを行うように構成された、請求項３１に記載の装置。
【請求項３３】
前記決定に基づき前記ノードに関する前記出力イベントを再スケジュールするための手段をさらに備え、ここにおいて前記再スケジュールのための手段は前記マルチレベル・スキームを使用するように構成される、請求項３２に記載の装置。
【請求項３４】
前記スケジュールされた複数のイベントを実行するための前記手段は、
前記マルチレベル・スキームにおける複数のレベルのそれぞれで最も早いイベントを決定するために前記複数のレベルをトラバースすることと、
前記レベルのトラバースの後に次のイベントをすべての前記イベントの最も早いものと決定することと、
によって、前記スケジュールされた複数のイベントにおける前記次のイベントを見つけるように構成された、請求項３１に記載の装置。
【請求項３５】
前記第１のレベルでノードをアドレス指定することによって、前記複数のノードにおける前記ノードに関する前記同時未決定のイベントの前記スケジュールを決定するための手段をさらに備える、請求項３１に記載の装置。
【請求項３６】
前記ノードに関する前記同時未決定のイベントの前記スケジュールは、前記同時未決定のイベントの最も早いものが最初にスケジュールされるように、少なくとも部分的にソートされる、請求項３１に記載の装置。
【請求項３７】
前記同時未決定のイベントの前記スケジュールは、多くても、前記ノードに関する１つのみの出力イベントを備える、請求項３１に記載の装置。
【請求項３８】
前記複数のノードを１または複数のユニットに編成するための手段をさらに備える、請求項３１に記載の装置。
【請求項３９】
編成のための前記手段は、前記ユニットの間の第１の結合遅延が前記ユニット内の第２の結合遅延より長いように、結合遅延に基づき前記複数のノードを前記ユニットに編成するように構成された、請求項３８に記載の装置。
【請求項４０】
第３のレベルの前記マルチレベル・スキームが、前記ユニットのそれぞれに関して、前記ユニットにおける前記ノードのそれぞれからの前記同時未決定のイベントの最も早いものを備える、請求項３８に記載の装置。
【請求項４１】
第４のレベルの前記マルチレベル・スキームが、前記ユニットのそれぞれからの前記同時未決定のイベントの最も早いものに基づく編成を備える、請求項４０に記載の装置。
【請求項４２】
前記編成は、バイナリ・ツリーを備え、そして前記バイナリ・ツリーのルートがすべての前記スケジュールされた複数のイベントから最も早い同時未決定のイベントを備える、請求項４１に記載の装置。
【請求項４３】
前記第３のレベルの前記マルチレベル・スキームにおいて、前記ユニットのそれぞれに関して、前記ユニットにおける前記ノードのそれぞれからの前記同時未決定のイベントの前記最も早いものはリンクされたリストとして編成され、第５のレベルの前記マルチレベル・スキームは、前記ユニットのそれぞれに関して、前記リンクされたリストを参照するベクトルを備える、請求項４１に記載の装置。
【請求項４４】
前記スケジュールされた複数のイベントからの挿入または削除のための所望のエントリに最も近い前記リンクされたリストにおける１または複数のエントリを見つけるために前記ベクトルを使用することと、
見つけられた前記最も近い１または複数のエントリに基づき前記所望のエントリの位置を見つけるために前記リンクされたリストを使用することと、
によって前記スケジュールされた複数のイベントを再スケジュールするための手段をさらに備える、請求項４３に記載の装置。
【請求項４５】
前記複数のノードは複数のニューロンまたは複数のシナプスの少なくとも１つを備える、請求項３１に記載の装置。
【請求項４６】
ニューラル・ネットワークのための１または複数のプロセッサーによって実行可能な命令を備えるコンピュータ読取可能な記憶媒体であって、
イベントの単一レベル、順序付きリストと比較し、前記イベントのより高速な処理のためのマルチレベル・スキームを使用してニューラル・ネットワークにおける複数のノードに関する複数の前記イベントをスケジュールすることと、ここにおいて、
前記マルチレベル・スキームの第１のレベルは前記複数のノードのインデックス付け可能リストを備え、
前記マルチレベル・スキームの第２のレベルが、前記複数のノードの各ノードに関して、前記ノードの同時未決定のイベントのスケジュールを備える、
前記スケジュールされた複数のイベントを実行することと、
を実行可能な命令を備えるコンピュータ読取可能な記憶媒体。
【請求項４７】
前記スケジュールされた複数のイベントを実行することは、
前記スケジュールされた複数のイベントにおける次のイベントを見つけることと、
前記次のイベントに基づき、前記次のイベントに関連付けられたノードの状態を前進させること、ここにおいて前記ノードは前記複数のノードの１つである、と、
あるのであれば、前記ノードに関する出力イベントが、前記ノードの前記前進した状態に基づきいつ起きると予期されるか決定することと、
を備える、請求項４６に記載のコンピュータ読取可能な記憶媒体。
【請求項４８】
前記マルチレベル・スキームの使用によって前記決定に基づき前記ノードに関する前記出力イベントを再スケジュールするために実行可能な命令をさらに備える、請求項４７に記載のコンピュータ読取可能な記憶媒体。
【請求項４９】
前記スケジュールされた複数のイベントを実行することが前記スケジュールされた複数のイベントにおける次のイベントを見つけることを備え、前記次のイベントを見つけることは、
前記マルチレベル・スキームにおける複数のレベルのそれぞれで最も早いイベントを決定するために前記複数のレベルをトラバースすることと、
前記レベルのトラバースの後に前記次のイベントをすべての前記イベントの最も早いものと決定することと、
を備える、請求項４６に記載のコンピュータ読取可能な記憶媒体。
【請求項５０】
前記第１のレベルでノードをアドレス指定することによって、前記複数のノードにおける前記ノードに関する前記同時未決定のイベントの前記スケジュールを決定するために実行可能な命令をさらに備える、請求項４６に記載のコンピュータ読取可能な記憶媒体。
【請求項５１】
前記ノードに関する前記同時未決定のイベントの前記スケジュールは、前記同時未決定のイベントの最も早いものが最初にスケジュールされるように、少なくとも部分的にソートされる、請求項４６に記載のコンピュータ読取可能な記憶媒体。
【請求項５２】
前記同時未決定のイベントの前記スケジュールは、多くても、前記ノードに関する１つのみの出力イベントを備える、請求項４６に記載のコンピュータ読取可能な記憶媒体。
【請求項５３】
前記複数のノードを１または複数のユニットに編成するために実行可能な命令をさらに備える、請求項４６に記載のコンピュータ読取可能な記憶媒体。
【請求項５４】
前記編成は、前記ユニットの間の第１の結合遅延が前記ユニット内の第２の結合遅延より長いように、結合遅延に基づき前記複数のノードを前記ユニットに編成することを備える、請求項５３に記載のコンピュータ読取可能な記憶媒体。
【請求項５５】
第３のレベルの前記マルチレベル・スキームが、前記ユニットのそれぞれに関して、前記ユニットにおける前記ノードのそれぞれからの前記同時未決定のイベントの最も早いものを備える、請求項５３に記載のコンピュータ読取可能な記憶媒体。
【請求項５６】
第４のレベルの前記マルチレベル・スキームが、前記ユニットのそれぞれからの前記同時未決定のイベントの最も早いものに基づく編成を備える、請求項５５に記載のコンピュータ読取可能な記憶媒体。
【請求項５７】
前記編成は、バイナリ・ツリーを備え、そして前記バイナリ・ツリーのルートがすべての前記スケジュールされた複数のイベントからの最も早い同時未決定のイベントを備える、請求項５６に記載のコンピュータ読取可能な記憶媒体。
【請求項５８】
前記第３のレベルの前記マルチレベル・スキームにおいて、前記ユニットのそれぞれに関して、前記ユニットにおける前記ノードのそれぞれからの前記同時未決定のイベントの前記最も早いものはリンクされたリストとして編成され、第５のレベルの前記マルチレベル・スキームは、前記ユニットのそれぞれに関して、前記リンクされたリストを参照するベクトルを備える、請求項５６に記載のコンピュータ読取可能な記憶媒体。
【請求項５９】
前記スケジュールされた複数のイベントからの挿入または削除のための所望のエントリに最も近い前記リンクされたリストにおける１または複数のエントリを見つけるために前記ベクトルを使用することと、
見つけられた前記最も近い１または複数のエントリに基づき前記所望のエントリの位置を見つけるために前記リンクされたリストを使用することと、
によって前記スケジュールされた複数のイベントを再スケジュールするために実行可能な命令をさらに備える、請求項５８に記載のコンピュータ読取可能な記憶媒体。
【請求項６０】
前記複数のノードは複数のニューロンまたは複数のシナプスの少なくとも１つを備える、請求項４６に記載のコンピュータ読取可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
[0001]本開示の特定の態様は一般的に、ニューラル・ネットワークに関し、より詳細には、連続時間ニューラル・ネットワークのイベントベースのシミュレーションに関する。
【背景技術】
【０００２】
[0002]人工ニューラル・ネットワークとは、人工ニューロン（すなわち、神経細胞モデル）の相互接続された１つのグループから構成される数学または計算モデルである。人工ニューラル・ネットワークは、人間の脳に見られるものなどの、生物の神経回路網の構造および／または機能から（または、少なくとも大ざっぱに基づき）得られうる。人工ニューラル・ネットワークは、観察から機能を推測できるので、このようなネットワークは特に、タスクまたはデータの複雑さのために、手動でのこの機能の設計が実用的ではないアプリケーションで特に有用である。
【０００３】
[0003]１つのタイプの人工ニューラル・ネットワークはスパイキング・ニューラル・ネットワークで、これは時間の概念を動作モデル、並びにニューロンおよびシナプス状態に組み込んでいる。スパイキング・ニューラル・ネットワークは、膜電位がしきい値に達した時の概念に基づくものである。ニューロンが発火する時、他のニューロンに移動するスパイクを生成し、今度は、この受け取ったスパイクに基づいて膜電位の上昇または低下が生じる。
【発明の概要】
【０００４】
[0004]本開示の特定の態様は一般的に、連続時間ニューラル・ネットワークのイベントベースのシミュレーションに関する。特に、特定の態様には、順序付きおよび非順序のスケジュールおよびアクセラレータを伴う多次元、マルチスケジュール・アーキテクチャ並びに予測（将来）および更新（先回り／キャッチアップ）ルールまたは方法としてイベントオペレーションのモデリングの形成を含んでいる。したがって、利点には、スパイキング・ニューラル・ネットワークのより（桁違いに）高速なシミュレーション並びに連続時間ニューロン、シナプス、および一般的なニューロンネットワークの動作を記述およびモデリングするための方法がある。
【０００５】
[0005]本開示の特定の態様は、ニューラル・ネットワークのための方法を提供する。本方法には一般的に、イベントの単一レベル、順序付きリストと比較し、イベントのより高速な処理のためのマルチレベル・スキームを使用してニューラル・ネットワークにおける複数のノードに関する複数のイベントのスケジュール、およびスケジュールされた複数のイベントの実行が含まれる。
【０００６】
[0006]本開示の特定の態様は、ニューラル・ネットワークのための装置を提供する。本装置には一般的に、イベントの単一レベル、順序付きリストと比較し、イベントのより高速な処理のためのマルチレベル・スキームを使用してニューラル・ネットワークにおける複数のノードに関する複数のイベントのスケジュール、およびスケジュールされた複数のイベントの実行を行うように構成された処理システムが含まれる。
【０００７】
[0007]本開示の特定の態様は、ニューラル・ネットワークのための装置を提供する。本装置には一般的に、イベントの単一レベル、順序付きリストと比較し、イベントのより高速な処理のためのマルチレベル・スキームを使用してニューラル・ネットワークにおける複数のノードに関する複数のイベントをスケジュールするための手段、およびスケジュールされた複数のイベントを実行するための手段が含まれる。
【０００８】
[0008]本開示の特定の態様は、ニューラル・ネットワークのためのコンピュータ・プログラム製品を提供する。本コンピュータ・プログラム製品には一般的に、イベントの単一レベル、順序付きリストと比較し、イベントのより高速な処理のためのマルチレベル・スキームを使用してニューラル・ネットワークにおける複数のノードに関する複数のイベントのスケジュール、およびスケジュールされた複数のイベントの実行を行うために実行可能な命令を有するコンピュータ読取可能な媒体が含まれる。
【０００９】
[0009]本開示の特定の態様は、ニューラル・ネットワークのための方法を提供する。本方法には一般的に、ニューラル・ネットワークの第１のノードで第１の入力イベントを受信し、受信した第１の入力イベントに基づき第１のノードの状態を前進させ、あるのであれば、第１のノードに関する第１の出力イベントが、第１のノードの前進した状態に基づきいつ起きると予期されるか決定することが含まれる。
【００１０】
[0010]本開示の特定の態様は、ニューラル・ネットワークのための装置を提供する。本装置には一般的に、ニューラル・ネットワークの第１のノードで第１の入力イベントを受信し、受信した第１の入力イベントに基づき第１のノードの状態を前進させ、あるのであれば、第１のノードに関する第１の出力イベントが、第１のノードの前進した状態に基づきいつ起きると予期されるか決定するために構成された処理システムが含まれる。
【００１１】
[0011]本開示の特定の態様は、ニューラル・ネットワークのための装置を提供する。本装置には一般的に、ニューラル・ネットワークの第１のノードで第１の入力イベントを受信するための手段、受信した第１の入力イベントに基づき第１のノードの状態を前進させるための手段、およびあるのであれば、第１のノードに関する第１の出力イベントが、第１のノードの前進した状態に基づきいつ起きると予期されるか決定するための手段が含まれる。
【００１２】
[0012]本開示の特定の態様は、ニューラル・ネットワークのためのコンピュータ・プログラム製品を提供する。本コンピュータ・プログラム製品には一般的に、ニューラル・ネットワークの第１のノードで第１の入力イベントを受信し、受信した第１の入力イベントに基づき第１のノードの状態を前進させ、あるのであれば、第１のノードに関する第１の出力イベントが、第１のノードの前進した状態に基づきいつ起きると予期されるか決定するために実行可能な命令を有するコンピュータ読取可能な媒体が含まれる。
【００１３】
[0013]本開示の特定の態様は、ニューラル・ネットワークのための方法を提供する。本方法には一般的に、ニューラル・ネットワークにおける複数のノードに関するイベントのリストを参照するベクトルを生成すること、ここにおいて、当該リストは最も早いイベントから最も遅いイベントに一時的に順序付けされている、と、リストをトラバース（traverse）することなく、ベクトルを使用しターゲットに最も近い１または複数のイベントをリストにおいて見つけることとが含まれる。
【００１４】
[0014]本開示の特定の態様は、ニューラル・ネットワークのための装置を提供する。本装置には一般的に、ニューラル・ネットワークにおける複数のノードに関するイベントのリストを参照するベクトルを生成し、ここにおいて、当該リストは最も早いイベントから最も遅いイベントに一時的に順序付けされている、、リストをトラバースすることなく、ベクトルを使用しターゲットに最も近い１または複数のイベントをリストにおいて見つけるように構成された処理システムが含まれる。
【００１５】
[0015]本開示の特定の態様は、ニューラル・ネットワークのための装置を提供する。本装置には一般的に、ニューラル・ネットワークにおける複数のノードに関するイベントのリストを参照するベクトルを生成する手段、ここにおいて、当該リストは最も早いイベントから最も遅いイベントに一時的に順序付けされている、と、およびリストをトラバースすることなく、ベクトルを使用しターゲットに最も近い１または複数のイベントをリストにおいて見つけるための手段とが含まれる。
【００１６】
[0016]本開示の特定の態様は、ニューラル・ネットワークのためのコンピュータ・プログラム製品を提供する。本コンピュータ・プログラム製品には一般的に、ニューラル・ネットワークにおける複数のノードに関するイベントのリストを参照するベクトルを生成するため、ここにおいて、当該リストは最も早いイベントから最も遅いイベントに一時的に順序付けされている、と、リストをトラバースすることなく、ベクトルを使用しターゲットに最も近い１または複数のイベントをリストにおいて見つけるためと、に実行可能な命令を有数するコンピュータ読取可能な媒体が含まれる。
【００１７】
[0017]本開示の上述の特徴が詳細に理解されることができるような仕方で、上記で要約された、より詳細な制御説明が、一部は添付図面で例示されている、態様を参照することによって有しうる。しかしながら、添付図面はこの開示の特定のタイプの態様のみを例示しており、したがって、範囲を限定するものと見なされるべきではないことに留意されたい。なぜならば、当該説明は同様の他の効果的な態様を認めうるからである。
【図面の簡単な説明】
【００１８】
【図１】[0018]  図１は、本開示の特定の態様によるニューロンのネットワーク例を示す。
【図２】[0019]  図２は、本開示の特定の態様に従い、状態の更新、イベント処理、およびイベントの順序付けに関して、離散時間および連続時間ニューラル・ネットワーク・シミュレーションの比較を示す。
【図３】[0020]  図３は、本開示の特定の態様による、３つのニューラル・ネットワーク・ノードのイベントのスケジュール例を示す。
【図４】[0021]  図４は、本開示の特定の態様による、ポストシナプス・ニューロンの入力イベントおよび出力イベントの例を示す。
【図５】[0022]  図５は、本開示の特定の態様による、単一のノードに関する予測前進サイクル（anticipate-advance cycle）を例示する。
【図６】[0023]  図６は、本開示の特定の態様による、シナプスおよびニューロンのための予測前進サイクル間の関係の例を示す。
【図７】[0024]  図７は、本開示の特定の態様に従い、設計者が各ノードの動作を記述できる、各ノードに関連付けられた予測および前進のルールを例示する。
【図８】[0025]  図８は、本開示の特定の態様に従い、ニューラル・ネットワークのための完全なイベント処理の例を示す流れ図である。
【図９】[0026]  図９は、本開示の特定の態様に従い、インターユニット遅延がイントラユニット遅延と比較し実質的であるような、ユニットに編成されるノードを例示する。
【図１０】[0027]  図１０は、本開示の特定の態様に従い、マルチレベル・スキームの様々なレベルで使用される種々のイベント・スケジュール方法を例示する。
【図１１】[0028]  図１１は、本開示の特定の態様に従い、図１０のマルチレベル・スキームを使用する例示的ノードを見つけることを示す。
【図１２】[0029]  図１２は、本開示の特定の態様に従い、図１０のマルチレベル・スキームを使用する最も早いイベントを見つけることを示す。
【図１３】[0030]  図１３は、本開示の特定の態様に従い、図１０のマルチレベル・スキームを使用する例示的な処理済みイベントの削除を示す。
【図１４】[0031]  図１４は、本開示の特定の態様に従い、図１０のマルチレベル・スキームを使用する例示的な非リード・イベント（non-lead event）の削除を示す。
【図１５】[0032]  図１５は、本開示の特定の態様に従い、図１０のマルチレベル・スキームを使用する例示的なリード・イベントの削除を示す。
【図１６】図１６は、本開示の特定の態様に従い、図１０のマルチレベル・スキームを使用する例示的なリード・イベントの削除を示す。
【図１７】図１７は、本開示の特定の態様に従い、図１０のマルチレベル・スキームを使用する例示的なリード・イベントの削除を示す。
【図１８】[0033]  図１８は、本開示の特定の態様に従い、図１０のマルチレベル・スキームを使用する例示的なヘッド・リード・イベント（head lead event）の挿入を示す。
【図１９】[0034]  図１９は、本開示の特定の態様に従い、リンクされたリスト・スケジュールを参照するスケジュール・ベクトルの例を示す。
【図２０】[0035]  図２０は、本開示の特定の態様に従い、１つのノードのリード・イベントが変更された後の図１９のスケジュール・ベクトルを例示する。
【図２１】[0036]  図２１は、本開示の特定の態様による例示的なスパース・スケジュール・ベクトル（sparse scheduling vector）を示す。
【図２２】[0037]  図２２は、本開示の特定の態様に従い、プレシナプス・ニューロンとポストシナプス・ニューロン間のシナプスの遅延を概念的に例示する。
【図２３】[0038]  図２３は、本開示の特定の態様に従い、事実上スケジュールされたポストシナプス・ニューロン入力イベントに続いて、プレシナプス・ニューロンの出力イベントとポストシナプス・ニューロンに対して対応する入力イベント間で事前に合間のイベントがどのように発生しうるかを例示する。
【図２４】[0039]  図２４は、本開示の特定の態様に従い、失敗のないシナプスのモデリングとシナプスの失敗を伴うシナプスのモデリング間の比較である。
【図２５】[0040]  図２５は、本開示の特定の態様に従い、ニューロン、シナプス、およびコネクタ・モデルを含むニュートラル・ネットワーク・モデルの例を示す。
【図２６】[0041]  図２６は、本開示の特定の態様に従い、ニューラル・ネットワークでのイベントベースのスケジュールの例示的なオペレーションの流れ図である。
【図２６Ａ】[0042]  図２６Ａは、図２６で示されたオペレーションを行うことのできる例示的な手段を示す。
【図２７】[0043]  図２７は、本開示の特定の態様に従い、ニューラル・ネットワークでの連続時間、イベントベースのモデリングの例示的なオペレーションの流れ図である。
【図２７Ａ】[0044]  図２７Ａは、図２７で示されたオペレーションを行うことのできる例示的な手段を示す。
【図２８】[0045]  図２８は、本開示の特定の態様に従い、イベント・リストで１または複数のイベントを見つけるためにベクトルを使用するための例示的なオペレーションの流れ図である。
【図２８Ａ】[0046]  図２８Ａは、図２８で示されたオペレーションを行うことのできる例示的な手段を示す。
【発明を実施するための形態】
【００１９】
[0047]開示の種々の態様がこれ以後、添付図面を参照してさらに十分記述される。しかしながら、ながら、この開示は、多くの様々な形で具現化されうるもので、この開示全体で提示される特定の何らかの構造または機能に限定されるものとして解釈されるべきではない。むしろ、これらの態様は、この開示が徹底的かつ完全であり、当業者に開示の範囲を十分に伝えるように提供される。本明細書の教示に基づき、当業者ならば、開示の範囲は、開示と関係なく実装されても、開示の他のいずれかの態様と組み合わせられていても、本明細書で開示された開示のいずれかの態様をカバーすることが意図されていることを認識すべきである。例えば、本明細書で述べられる任意の数の態様を使用して、装置が実装されたり、方法が実施されたりされうる。さらに、開示の範囲は、他の構造、機能、並びに本明細書で述べられた開示の種々の態様に加えたり、または以外の構造および機能を使用して実施されるような装置または方法をカバーすることが意図されている。本明細書で開示された開示のいずれかの態様は、請求項の１または複数の要素によって具現化されうることを理解されたい。
【００２０】
[0048]本明細書で使用される「例示的」という用語は、「例、実例、または例証としての役割を果たす」ものを意味する。「例示的」として本明細書で記述されたいずれかの態様は必ずしも、他の態様を超えて好適または利点があると解釈されない。
【００２１】
[0049]特定の態様が本明細書で記述されるが、これらの態様の多くの変化形態および置換形態も本開示の範囲内に当たる。好適な態様の一部の利点およびメリットが述べられるが、開示の範囲が特定の利点、用途、および目的に限定されることは意図されていない。むしろ、開示の態様は、一部が図面および好適な態様の続く説明で例として例示されている、様々な技術、システム、構成、ネットワーク、およびプロトコルに広く適用可能であることが意図されている。詳細な説明および図面は、本開示の範囲が添付請求項および当該同等物により定義される開示の範囲を限定するものではなく、開示の単なる例示である。
【００２２】
ニューラル・システムの一例
[0050]図１は、本開示の特定の態様によるニューロンの複数のレベルを伴う例示的なニューラル・システム１００を例示する。ニューラル・システム１００は、シナプス結合１０４のネットワークを通じて別のレベルのニューロン１０６に接続されたあるレベルのニューロン１０２を備えうる。簡単にするために、ニューロンの２つのレベルのみが図１に説明されており、しかしながら、より少ないまたはより多いレベルのニューロンが一般的なニューラル・システムに存在しうる。
【００２３】
[0051]図１に例示されているように、レベル１０２の各ニューロンは、前のレベルの複数のニューロンによって生成されうる入力信号１０８を受信しうる。信号１０８はレベル１０２への入力（例えば、入力電流）を表しうる。このような入力は、膜電位を変更するためにニューロン膜に蓄積されうる。膜電位がしきい値に到達すると、ニューロンは発火して、ニューロンの次のレベル（例えば、レベル１０６）に転送される出力スパイクを生成しうる。
【００２４】
[0052]ひとつのレベルから他のレベルへのスパイクの転送は、、図１で例示されているように、シナプス結合のネットワーク（または単に「シナプス」）１０４によって達成されうる。シナプス１０４はレベル１０２ニューロン（シナプス１０４に対してプレシナプス・ニューロン）から出力信号（すなわち、スパイク）を受信しうる。特定の態様では、これらの信号は調整可能なシナプス荷重
【数１】
0005934439.tif 000002
【００２５】
（Ｐはレベル１０２および１０６のニューロン間のシナプス結合の総数）に従ってスケール変更されうる。他の態様では、シナプス１０４がシナプス荷重を全く加えない場合もある。さらに、（スケール変更された）信号は、レベル１０６（シナプス１０４に対してポストシナプス・ニューロン）の各ニューロンの入力信号として組み合わせられうる。レベル１０６の各ニューロンは、対応する組み合わせられた入力信号に基づきスパイク１１０を生成しうる。次に、出力スパイク１１０は、シナプス結合の別のネットワークを使用して別のレベルのニューロンに転送されうる（図１には図示せず）。
【００２６】
[0053]ニューラル・システム１００はソフトウェアまたはハードウェアで（例えば、電気回路によって）エミュレートされ、イメージおよびパターン認識、マシン学習、モータ制御などの幅広い用途で活用されうる。ニューラル・システム１００の各ニューロン（またはニューロン・モデル）はニューロン回路として実装されうる。出力スパイクを点火するしきい値に帯電するニューロン膜は、例えば、当該物を通して流れる電流をまとめるコンデンサとして実装されうる。
【００２７】
連続時間スパイキング・ニューラル・ネットワークのイベントベースのシミュレーションの例
[0054]ニューラル・ネットワークのイベントベースのシミュレーションは、複雑さのために問題となっている。主な問題はイベントを順序良く実行することである。ニューラル・ネットワークのノード（例えば、シナプスおよび／またはニューロン）の数が多く、そして同時未決定（copending）の（スケジュールされた）イベントの数も多い場合、スケジュールのソートは主要な計算的に負担となるタスクとなる。また、伝統的／従来のニューロン／シナプス・モデルは、これ自体がイベントベースのシミュレーションにあまり適しておらず、しばしば、安定した解を計算するために、反復（速度および安定度を制限する）またはテーブル・ルックアップ（正確さおよび精度を制限する）を含む。結果として、しばしばイベントベース方式がステップベースのシミュレーションよりも桁違いに遅い。本開示の特定の態様では、上述の問題の両方を克服する連続時間ニューラル・ネットワークのイベント・シミュレーション（モデル）の形成を提供する。つまり、（１）順序付きおよび非順序のスケジュールおよびアクセラレータを伴う多次元、マルチスケジュール・アーキテクチャがソートの問題を克服し、（２）予測（将来）および前進（先回り／キャッチアップ）ルールまたは方法としてイベントオペレーションのモデリングの形成が連続時間モデリング問題を克服する。利点には、スパイキング・ニューラル・ネットワークのより高速なシミュレーション（桁違いにより高速）並びに連続時間ニューロン、シナプス、および一般的なニューロンネットワークの動作を記述およびモデリングするための方法を含んでいる。
【００２８】
[0055]ニューラル・ネットワークの従来のシミュレーションは、ステップごとに固定された量の時間だけ前進し、時間ステップで動作する。状態の更新（すなわち、ニューラル・ネットワークのノードの状態に対する更新）は通常、次のステップへ出力を伝える前に、一括して行われる。微分方程式によって記述されるニューロン・モデルは、オイラー法などの数値的な方法で計算される。これに関する問題は、このようなモデルがしばしば、時間ステップそのものを含むパラメータに敏感なために不安定であるということである。さらに、結果はシミュレータの時間分解能（時間ステップ）でのみ入手可能である。このことは、伝達されうる情報量が制限されていることを意味する。例えば、スパイクの時間が１ｍｓの分解能に制限される場合には、最大通信レートは１ｋｂｐｓである。さらにこのことにより、２つのスパイクが同じ時間ステップで起きる場合、１つのスパイクが別のものを引き起こすかどうかを決定することができない。いくつかのニューロン・モデルでは、固定された時間の分析に与えられた異なった入力を区別することさえ不可能である。言い換えれば、出力は異なるタイミングの入力に関係なく同じである。さらに、モデルはしばしば、不安定度を（必ずしも避けるためではなく）制限するために、より短い時間ステップで反復されうる。その結果、シミュレーションは一般的に、多くの場合より遅く動く。
【００２９】
[0056]イベントベースのシミュレーションが提案されている。しかしながら、いくつかの問題、すなわち、モデリングの困難さおよび／または速度／複雑さの問題によって、これらが好転することはできていない。
【００３０】
[0057]第１に、豊富な動作を伴うニューロン・モデルはしばしば、閉形式では直接解き得ない微分方程式を有している。このようなモデルの動作は、イベントベースのシミュレーションの反復するオペレーションによって記述されうる。このことは、目的を挫くだけではなく、実行も遅くなる結果となる。一般的に、モデルが記述されるやり方はシミュレーションに制限を設ける。ニューロン・モデルは通常、所定の時間ステップで実行されるルールによって記述される。イベントベースのシミュレーションが単に、異なる順序で時間ステップの更新を実行するなら、利点はない。したがって、必要とされるのは、ニューロンの動作を考慮して記述する異なる方法である。
【００３１】
[0058]第２に、イベントの順序付けは多くの場合、主なボトルネックである。イベントの順序付けまたはソートは、同時未決定のイベントの数が多い場合、解決が困難になる。３つの要素、状態の更新、イベント処理、およびイベントの順序付けによって、ニューラル・ネットワーク・シミュレーションの速度が決まる。これらの要素、図２の従来の離散時間シミュレーション２０２と連続時間シミュレーション２０４との比較で図示されている。
【００３２】
[0059]従来の離散時間またはステップのシミュレーションでは、状態の更新がボトルネックである（左上の陰影黒色）。イベントベースのシミュレーションでは、イベントの順序付けが多くの場合、重要な（すなわち、小さくない）ネットワークでボトルネックである（右下の陰影黒色）。
【００３３】
[0060]通常（前）のイベントベースのシミュレーションは、イベントをソートする複雑さのために遅い。スケジュールでのイベントの挿入、削除、および再スケジュールが、イベントに従って指数的に増大する問題となる。問題の一例が図３のノード３０２で例示されている。例えば、ノードｉからノードｋへの接続はノードｉからノードｊより長いので、ノードｊよりノードｋに到達する方がノードｉからのイベントではより時間がかかる。結果として、ノードｉから出力イベントがあると、次のようにスケジュールされうる。つまり、ノードｊのための入力イベント１、および後で起きる、ノードｋのための入力イベント２。入力イベント１を受信した結果として、次にノードｊは、ノードｋのための入力イベント３という結果になる出力イベントを生成することを想定する。この入力イベント３は、ノードｊからノードｋへの遅延が少ない場合、ノードｋのための入力イベント２前であっても起きうる。その上、ノードｋのための（ノードｊへの）出力イベント４は、入力イベント３のための追加の入力が、ノードｋがスパイク（すなわち、出力イベントの生成）するために要する時間量を削減しうるので、再スケジュールされる必要がありうる。
【００３４】
[0061]これらのスケジュールオペレーション例は、通常のイベントベースのシミュレーションが負担となるスケジュールのソート／順序付けオペレーションを必要とするという事実を強調している。この負担は、ノードおよび接続の数が増大すると、これによってイベントの数も増大するので、劇的（指数的）に増大する。
【００３５】
[0062]通常の強化の試みには、スケジュールの前面のみがソートされることが含まれる。しかしながら、ネットワークのノード間の遅延が変化する場合、イベントは広い時間ウィンドウ全体で混合され、この強化の利点は限定される。別のアプローチは、一部の時間マージン内で、順序付け制約を緩和することである。しかしながら、これはネットワークの動作を変える。要約すれば、提案されている強化策を使っても、通常のイベントベースのシミュレーションは多くの場合、改善のための望みを限定する。
【００３６】
[0063]したがって、必要とされるのは、とりわけ大規模なネットワークでは、状態の更新およびイベントの順序付けのボトルネックなしに、ニューラル・ネットワークをモデリングするための技術および装置である。
【００３７】
[0064]本開示の特定の態様には、スケジュール方法、スケジュール加速方法、およびモデリング方法が含まれる。これらの方法は相互に関係されているが、個別にも使用されうる。スケジュール（加速）およびモデリング方法はイベントとともに機能する。このことは、本開示の態様のすべての入力および出力は離散的瞬間に起きることを意味してはいない。例えば、抑制性ポストシナプス電位（ＩＰＳＰ）は増大し、徐々に減少する形状を有しうる。しかしながら、例えば、ＩＰＳＰを含む、各動作は、ＩＰＳＰが開始またはピークに達する時などの特定の時間を有する関連イベントを有している。
【００３８】
同時未決定（co-pending）のイベント
[0065]本開示の態様にとって中心的な要素はイベントである。シナプスまたはニューロンなどの各ノードは、入力および出力イベントを有しうる。本開示では、入力および出力イベントは未決定またはスケジュール済みと記述され、一般的にまとめて扱われる。しかしながら、入力および出力イベントは、同様に、別々に処理されうることを理解されたい（特定の態様のための別々のスケジュールの場合など）。さらに、入力および出力イベントは、以下で記述されるように、異なる仕方で扱われうる。シナプスおよびニューロンは両方とも、入力および出力イベントを有しうるノードの例である。ニューロンに関する入力イベントはシナプスからの出力イベントの結果であり、逆も同様である。
【００３９】
[0066]例えば、図４では、３つのシナプス４０４、各プレシナプス／ポストシナプス・ニューロン結合に対して１つのシナプス４０４、を介して、３つの別々なプレシナプス・ニューロン４０６（ニューロンｉ、ｊ、およびｋ）と接続されるプレシナプス・ニューロン４０２（ニューロンＸ）を例示している。ポストシナプス・ニューロン４０２の観点から、ポストシナプス・ニューロン４０２は、シナプス４０４から１または複数の入力イベント４０８を受信しうる。入力イベント４０８はポストシナプス・ニューロン４０２にスケジュール、再スケジュール、および／または最終的な出力イベント４１０を出力させうる。ポストシナプス・ニューロン４０２が入力イベント４１０を生成する前に、入力イベント４０８が挿入および／またはスケジュールから削除され、複数の入力イベントが同じシナプス４０４を介して受信されうる。
【００４０】
[0067]特に、本開示は「同時未決定のイベント」と関係している。本明細書で使用されているように、イベントはスケジューリングのオペレーションが２つのイベントの順序の決定を処理しなければならない場合であっても、別のイベントと同時未決定である。必ずしもすべてのイベントが同時未決定のイベントとは限らない。スケジュールされているイベントのみが同時未決定になりうる。
【００４１】
[0068]例えば、特定のニューロンへの２つの入力イベントが将来に起きるようにスケジュールされている場合を考慮する。これら２つのイベントは同時未決定である。受信しているニューロンがまだスパイクしていないが、将来の特定の時間にスパイクするようにスケジュールされている場合には、当該出力スパイク・イベントも入力と同時未決定である。しかしながら、ニューロンがまだスパイクしていない場合には、ニューロンがスパイクすると発生する可能性のある入力イベントはまだスケジュールされておらず、したがって同時未決定ではない。
【００４２】
[0069]同じ時間を有するイベントの順序は、本開示の特定の態様によって決定される。特定の態様では、順序は、最少の検索が行われるようなイベント・スケジュール挿入メカニズムにより決定される。しかしながら、同時イベントは、例えば、ノード識別子、決定の順序、またはスケジュールに対する影響に基づき順序付けされうる。
【００４３】
イベントベースのシミュレーションのモデル例
予測前進サイクル
[0070]出力イベントが予測される。出力イベントが起きると、当該イベントは入力イベントを生成する。次に、入力イベントは状態の前進を招きうる（本明細書で使用されているように、用語「前進」は一般的に更新を指すが、「更新」の代わりに、離散時間システムのステップベースの更新と区別するために使用される）。状態の前進は、出力イベントが起きることが予測される場合に変えうる。単一ノードのこのループ（「予測前進サイクル」と呼ぶ）が図５に例示されており、すべてのノードに当てはまる（シナプスまたはニューロンのいずれでも）。５０２で、イベントが起き（例えば、入力イベントが別のノードから特定のノードで受信される）、これによってノードは、５０４でノードの状態を前進させる。ノードの状態が５０４で前進しているので、ノードの出力イベントの予期される時間が変わる場合があり、それによってノードは、５０６で、この予期される時間を予測する。次に、ノードが５０２での予期される時間に従って出力イベントを出力するか、または予期される時間の前に新しい入力イベントが、５０２で受信され、予測前進サイクルは反復する。
【００４４】
[0071]上述のとおり、このループは各ノードに当てはまる。そのため、接続されたノードを伴うニューラル・ネットワークでは、ニューロン（またはシナプス）からの出力がシナプス（またはニューロン）への入力を生成し、したがって、各ノードのループが結合される。
【００４５】
[0072]図６は、シナプスとニューロン（ポストシナプス・ニューロン）のための予測前進サイクル間のこの結合された関係の例を例示している。６０２で、イベントが起き（例えば、入力イベントがプレシナプス・ニューロン（図示せず）からシナプスで受信されるか、または出力イベントが起き、シナプスから出力される）、これによってシナプスは、６０４で、自らの状態を前進させる。シナプスの状態が６０４で前進するので、シナプスの出力イベントの予期される時間が変わる場合があり、それによってシナプスは、６０６で、この予期される時間を予測する。次に、シナプスが６０２での予期される時間に従って出力イベントを出力するか、または予期される時間の前に新しい入力イベントが、６０２で受信され、予測前進サイクルは反復する。
【００４６】
[0073]その上、シナプス出力イベントが起きると、イベントは、６０８で入力イベントとしてポストシナプス・ニューロンによって受信され、これによってニューロンは、６１０で自らの状態を前進させる。ニューロンの状態が６１０で前進するので、ニューロンの出力イベントの予期される時間が変わる場合があり、それによってニューロンは、６１２で、この予期される時間を予測する。次に、ニューロンが６０８での予期される時間に従って出力イベントを出力するか、または予期される時間の前に新しい入力イベントが、６０８で受信され、予測前進サイクルは反復する。
【００４７】
[0074]別の例として、次のシーケンスを考慮する。
【００４８】
１．プレシナプス・ニューロンＡからの出力がシナプスＸへの入力で、時間ｄｔ１後に着信する。
【００４９】
２．シナプス状態が時間ｄｔ１の量だけ先回りする（前進される）（オペレーションしない、または時間経過量および最後の状態に応じての場合がある）。シナプスの状態はさらに、入力を反映するために調整される（オペレーションしない、またはオペレーションを学習したりする場合があったり、あるいはシナプスの１または複数の状態変数を変更する場合がある）。
【００５０】
３．シナプスは時間ｄｔ２後、入力をポストシナプス・ニューロンＢに伝える。
【００５１】
４．シナプス出力イベントが時間ｄｔ２後に起きる。
【００５２】
５．出力イベントがポストシナプス・ニューロンＢへの入力イベントを生成する。
【００５３】
６．ポストシナプス・ニューロンＢの状態が時間ｄｔ１＋ｄｔ２の量だけ先回りする（前進される）。ニューロンＢの状態が入力を反映するように調整される。
【００５４】
７．ポストシナプス・ニューロンＢが遅延ｄｔ３後の発火を予測する。
【００５５】
８．ポストシナプス・ニューロンＢが遅延ｄｔ３後に発火する。
【００５６】
９．出力イベントがシナプスＹの入力イベントを生成する。
【００５７】
１０．ポストシナプス・ニューロンＢの状態が量ｄｔ３だけ先回りする。
【００５８】
１１．他など．．．
[0075]本開示の特定の開示は、モデル設計者（例えば、ニューロンまたはシナプス・モデルの設計者）が将来のイベントの予測方法（これが起きるかどうかおよびいつまたはどのくらいの時間か）の決定（および／または記述）できるようにする。モデル設計者はさらに、所定の時間量だけ前進（先回りまたはキャッチアップ）する方法も決定（および／または記述）しうる。これらは、本開示との関連で、ノード（例えば、ニューロンまたはシナプス）の動作を記述する主な要素である。
【００５９】
[0076]例えば、図７は、本開示の特定の態様に従い、設計者が各ノードの動作を記述できる、各ノードに関連付けられた予測および前進のルールを例示する。図７では、設計者は、予測ルール７０６および１または複数の前進ルール７０８を有するニューロン・モデル７０４を使用して、ニューロン７０２の動作を記述しうる。このニューロン・モデル７０４の予測ルール７０６（および／または前進ルール７０８）は、同じニューラル・ネットワークあるいは別のものにおいて、別のニューロン・モデルの予測ルール（および／または前進ルール）と同じまたは異なるものとしうる。設計者はさらに、予測ルール７１６および１または複数の前進ルール７１８を有するシナプス・モデル７１４を使用して、シナプス７１２の動作も記述しうる。同様に、このシナプス・モデル７１４の予測ルール７１６（および／または前進ルール７１８）は、同じまたは異なるニューラル・ネットワークにおいて、別のシナプス・モデルの予測ルール（および／または前進ルール）と同じまたは異なるものとしうる。
【００６０】
[0077]本開示の特定の態様では、モデリング／シミュレーション全体の目的のためにこれらのオペレーションを抽象化する。例えば、設計者は異なる仕方で動作する多様なニューロンを所望する可能性がある。これらの相違は、ノード・モデルで記述されうるが、シミュレーションによって実装されうる。この抽象的概念は、以下でさらに詳細に説明される。
【００６１】
将来のイベントの予測
[0078]本開示の特定の態様によると、イベントは予測される。イベントの予測は、将来、いつイベントが起きると予期されるかを決定することを構成する。このことは、イベントが実際に発生することを要求しない。さらに、イベントが起きることが予測される時間は、イベントが実際に起きるまで（すなわち、シミュレーションでイベント時間に到達される）、いつでも変更しうる。特定の態様では、出力イベントのみが予測される。しかしながら、入力イベントおよび出力イベントが混同されるべきではない。１つのノードの出力が別のノードの入力になる。入力イベントは出力イベントの結果である。入力イベントはさらに、将来に起きるようにスケジュールされるが、スケジュールされたなら、通常、変更（異なる時間で再スケジュール）されない。
【００６２】
シナプスの出力イベントをどのように予測するか
[0079]シナプスとは、それぞれ、入力と出力のニューロン間、またはプレシナプスとポストシナプスのニューロン間の結合である。通常、結合は遅延を有している。遅延は、信号がプレシナプス・ニューロンの軸索（axon）に伝わる、シナプスをアクティブ化する、または細胞体（soma）へのポストシナプス・ニューロンの樹状突起（dendrite）に伝わるために必要な時間のためである。特定の抽象的概念は重要ではない。短期的には、これらの遅延は比較的一定（固定され、または事前定義される）になりうる。したがって、シナプス・イベントの予測は、次の２つの場合の問題となる。入力イベント（プレシナプス・スパイク）がない場合、中継する予測されたシナプス・イベントはない、、また、入力イベント（プレシナプス・スパイク）がある場合、シナプス出力イベントは、同時に事前定義される遅延を伴って将来発生するすることが予測される。これらの決定はノード・モデルで行われる。
【００６３】
[0080]このフレームワークでは、可変遅延をモデリングすることが簡単な問題になることに注意すべきである。生体ネットワークの遅延は、突起または枝などの樹枝状構造の形成または動きなどのダイナミクスまたは構造的変化、あるいはこのような構造の形状または表面領域の物理的変化のために変化しうる。これらの作用は、遅延を変えることによってモデリングされうる。
【００６４】
[0081]例えば、第１の入力は第１の遅延を伴いスケジュールされうる。次に、当該遅延は、構造的塑性アルゴリズムのために変えられうる。次に、第２の入力は第２の遅延を伴いスケジュールされうる。両方の入力イベントは、同じまたは異なるポストシナプス・ニューロンに対して同じ時間に同時未決定でありうる。
【００６５】
ニューロンの出力イベントをどのように予測するか
[0082]ニューロン・モデルは通常、状態変数に関係するダイナミクスによって記述される。特定の態様では、ニューロンの出力タイミングは、状態変数の関数として決定的であり計算可能である。異なる言い方をすれば、ニューロン・スパイクまでの残り時間は、スパイクの前の時点での状態変数値から計算されうる。しかしながら、留意すべき重要なことは、ニューロンはスパイクする前により多くの入力を受信する可能性があるということである。当該入力は興奮性でありえ、残りの時間を減少させうる。あるいは、当該入力は抑制性でありえ、残りの時間を増加させうる（多分、無限大に、つまり、ニューロンの発火は全く予測されない）。このようなわけで、ニューロンの予測された出力イベント時間は、状態変数の軌跡が変わる時に変化する。したがって、本開示の特定の態様には、イベントがニューロンに対して処理されるたびごとにニューロン出力イベントを（再）予測することが含まれる。他の態様では、ニューロン出力イベントを予測することは、条件（例えば、第１のイベントからの経過時間）に応じて、２つ以上のイベントがニューロンに対して処理された後にのみ、なされる。
【００６６】
状態の前進（先回りおよびイベントの処理）
[0083]本開示の特定の態様では、前進は、入力イベントが処理されるか、出力イベントが処理されるか、または両方の時に決定される。前進は通常、次の２つのオペレーションである。（１）状態の先回りすること、および（２）イベントを処理すること。先回りすること（またはキャッチアップ、当人の観点に応じて異なる）は、処理されるイベントの時点に状態を前進させることである。イベントを処理することは、イベントに従って状態を変更することである。例えば、イベントがニューロンへの入力の場合、入力電流が新しい膜電位（電圧）を計算するために印加されうる。イベントがニューロンからの出力の場合、状態は休止状態（例えば、休止電位）に戻るために前進（変更）させられうる。
【００６７】
[0084]一般に、２つ以上のイベントが同じ時間を有している場合、状態は通常、第１のイベントの処理する前にのみ前進される必要がある。モデルによっては、入力の考慮の前に、状態の前進を必要としない場合もある（これらの２つのオペレーションの順序は厳密に必要とはされない場合がある）。
【００６８】
出力イベントのアルゴリズム
[0085]特定の態様では、各ニューロンは所定の時間にスケジュールされた１つの出力イベントのみを有している。特定の態様では、出力イベントは必ずスケジュールされる（または、スケジュールに挿入されない場合でも、少なくとも必ず定義または追跡される）。その上、出力イベントの時間は変化しうる（例えば、前進されうるもので、そしてこれは効果的な再スケジュールである）。このことは、一度スケジュールされると、一般的に時間が変わらず、（特定のノードから別の特定のノードへの）同じ接続に対して保留中の複数の入力イベントがありうる入力イベントとは対照的である。
【００６９】
[0086]一例として、出力イベントは次のように処理されうる（ここで出力イベントを発するニューロンはプレシナプス・ニューロンである）。
【００７０】
１．プレシナプス・ニューロンの出力に接続された各シナプスに関して
ａ．シナプス出力イベントを予測する
ｉ．イベントがあるかどうか
ｉｉ．いつ起きるか（すなわち、どのくらいの相対的な時間で）
ｂ．シナプス出力イベントがない場合
ｉ．シナプス・モデルを前進させる（先回りおよび入力の処理、例えば、学習）
ｃ．そうでなく、イベントがある場合、起きる相対的な時間は０またはより少ない
ｉ．シナプス・モデルを前進させる（先回りおよび入力の処理、例えば、学習）
ｉｉ．ポストシナプス・ニューロン・モデルを前進させる（シナプスから入力を先回りおよび処理する）
ｉｉｉ．次のポストシナプス・ニューロン・イベントを予測する。
【００７１】
１．予測された出力イベントがある場合、イベントを再スケジュールする。
【００７２】
２．そうでない場合、イベントの除去または無限の遅延のために再スケジュールする。
【００７３】
ｄ．以上でない場合
ｉ．（上から）決定した遅延を伴い起きる、ポストシナプス・ニューロンに関する新しい入力イベントを提示する。
【００７４】
２．入力としてプレシナプス・ニューロンに接続された各シナプスに関して
ａ．シナプス・モデルを前進させる（先回りおよび入力の処理、例えば、学習）
３．プレシナプス・ニューロンの状態を前進させる（先回りおよびイベントの処理）
４．次のプレシナプス・ニューロン・イベントを予測
ａ．予測された出力イベントがある場合、イベントを再スケジュールする。
【００７５】
ｂ．そうでない場合、イベントの除去または無限の遅延に関してそれを再スケジュールする。
【００７６】
[0087]ニューロンとニューロンのモデルの間（さらに、シナプスとシナプスのモデルの間）に相違があることに留意されたい。モデルとは、モデル設計者（シミュレータ・ユーザ）が動作を（例えば、予測および前進のルールにより）定義するためのものである。ニューロン（またはシナプス）はシミュレーション・エンティティで、関連イベントを有している。本開示ではこれらの用語を（ノードとモデルの間で）区別なく使用しても良いが、ノードまたはノードのモデルのどちらを意味するかは文脈から明らかになるべきである。
【００７７】
[0088]さらに、シナプスがゼロ遅延を有する場合、入力イベントはスケジュールされる必要がないことにも注意されたい。代わりに、ポストシナプス・ニューロンによって直ちに処理されうる。このことは、ゼロ・シナプス遅延に関するものとして、以下の「モデルオペレーション（予測および前進）実行方法」と題するセクションで詳細に記述される。
【００７８】
入力イベントのアルゴリズム
[0089]入力イベントは次のように処理されうる（ここで、シナプスの入力を受信したニューロンはポストシナプス・ニューロンと呼ばれる）。
【００７９】
１．シナプスを前進させる（先回りおよび入力の処理、例えば、学習）
２．ポストシナプス・ニューロン・モデルを前進させる。
【００８０】
３．次のポストシナプス・ニューロン・イベントを予測する。
【００８１】
ａ．予測された出力イベントがある場合、イベントを再スケジュールする。
【００８２】
ｂ．そうでない場合、イベントの除去または無限の遅延に関してそれを再スケジュールする。
【００８３】
[0090]このシミュレーションでは、シナプスの入力イベントおよびシナプスの出力イベントがスケジュールされる必要はない。これらのイベントは（事実上）直ちに処理されうる。シナプスの入力イベントはニューロンの出力イベントにより生成される（これらは、シミュレーションの目的で同じものとして考えられうる）。シナプスの出力イベントはニューロンの入力イベントをより生成する（再度これらは、シミュレーションの目的で同じものとして考えられうる）。
【００８４】
完全なイベント処理の例
[0091]図８は、前進のためのモデル・ルール（縦横の網掛け）、予測のためのルール（車線の網掛け）、およびネットワークのルール（ハチの巣状の網掛け）の実行を含むイベント処理全体を示す。
【００８５】
ユニット
[0092]特定の態様によると、ノード（例えば、ニューロン）はユニットに編成されうる。特定の態様では、ユニットは接続の遅延に応じて編成されうる。例えば、図９で示されているように、ノードは、ユニット間の接続の遅延（インターユニット遅延９０２）がユニット内の遅延（イントラユニット遅延９０４）より長いようにユニット９００にグループ化されうる、しかしながら、ながら、反対も考慮されうる。
【００８６】
[0093]一般に、ユニット・サイズはほぼ比較的小さいものに保たれうる。この理由は、スケジューリングのオペレーションから明らかになるであろう。特定の態様では、ユニット・サイズは上限に限定されうるもので、ニューラル・ネットワーク・モデルは自動的に、この上限を超過しないように分割されうる。
【００８７】
[0094]特定の態様では、ネットワーク・モデルの設計者はさらに、ユニットに属するニューロンおよび／または異なる（新しい）ユニットにニューロンを割り当てるタイミングを指定するオプションも有しうる。モデル設計者はイベントの分配についての事前情報を知りうるので（結合、アクティビティ、および遅延のため）、これによってソフトウェアまたはハードウェアの実行速度のために、ニューロンをユニットに計画的に割り当てまたは割り振りすることが可能である。
【００８８】
スケジュール
[0095]本開示の特定の態様では、イベントでの予測および前進のオペレーションの実行を含んでいる。イベントを処理する順序を決定するために、特定の態様では様々なレベルでいくつかのスケジュール方法を使用する。図１０は、本開示の特定の態様に従い、マルチレベル・スキーム１０００の様々なレベルで使用される種々のイベント・スケジュール方法を例示する。実装形態では、必ずしもこれらすべての方法を使用する必要があるわけではないが、特定の形態ではこれらすべてを含みうる。
【００８９】
レベル０
[0096]マルチレベル・スキーム１０００の最低レベル（レベル０）で、ノード・クラスが保持されうる。これらのノード１００２はインデックスが付けられ、直接アクセスされうる（すなわち、直接インデックス可能なノード）。各ノード１００２はニューラル・ネットワークでニューロンまたはシナプスを表しうる。
【００９０】
[0097]最低レベルでの高速化は、以下で別々に記述されるモデリングおよびモデルオペレーション（予測および前進）の実行方法によって達成されうる。
【００９１】
レベル１
[0098]次のレベル（レベル１）で、各ノード・クラスは、ノード１００２（当該ノードに対してのみ）の同時未決定の入力および出力イベントのすべてを含むスケジュールを有している。各ノード１００２のメンバ・ノード・スケジュールは、ソートされた順序で保持されうるか、または部分的にソートされた順序（例えば、時間的に最も早いイベント１００６が最初にリスト表示される）で保持されうるリスト１００４（例えば、リンクされたリスト）である。特定の態様では、（多くても）１つの出力イベントのみがありうる。最も早いイベント１００６は「リード」イベントと呼ばれる。
【００９２】
[0099]このレベルでの挿入点の検索またはイベント（リスト１００４のエントリ）の削除の高速化は、リスト１００４の前部、リスト１００４の後部、および最後の挿入点（あるいは時間的に最も近いものまたは所望の時間点に向かって最も速くまたは最も近くに集束するものなら何でも）からの並列検索によって達成されうる。
【００９３】
レベル２
[0100]次のレベル（レベル２）で、ニューロンの各ユニット９００は（レベル２ａで）リード・イベントのスケジュール１００８を有しうる。このスケジュール１００８は、レベル１からのリード・イベント（すなわち、ユニット９００の各ニューロンの最も早いイベント）のみを含み、これらのリード・イベント・スケジュールは、特定の態様では、ソートされ、リンクされたリストで実装されうる。ユニットごとのニューロンの数が固定されている場合、スケジュール１００８のエントリの数は固定される。最低でも、１つのニューロンは、無限の未来で起きる（すなわち、決して起きない）ようにスケジュールされた１つの出力イベントを有している。
【００９４】
[0101]このレベルでの挿入点の検索またはイベント（スケジュール１００８のエントリ）の削除の高速化は、スケジュール１００８の前面、スケジュール１００８の後面、および最後の挿入点（あるいは時間的に最も近いもの、または所望の時間点に向かって最も速くまたは最も近くに集束するものなら何でも）の並列検索によって達成されうる。
【００９５】
[0102]しかしながら、このレベルでより大きな高速化は、１または複数の参照ベクトル（例えば、実際のベクトル１０１２および仮想ベクトル１０１４）を使用して達成されうる。各ユニット９００はさらに、（レベル２ｂで）対応する非ソート・ベクトルを有しうる。各ベクトルには、対応するスケジュール１００８への参照を含みうる。ベクトル・エントリは、時間までにスケジュール１００８を高速検索するために使用されうる。特定の態様によると、ベクトル・エントリは、状況に応じてオンザフライで再構築されうる。このレベル２の高速化方法は、「スパース・スケジュールの条件付き再生成」と呼ばれ、以下で別々に記述される。
【００９６】
レベル３
[0103]次のレベル（レベル３）で、ユニット９００は、ユニット・レベルでヘッド・リード・イベントに従って編成されうる。これは、各ユニット９００の最も早いリード・イベントである。一例は、図１０に例示されているように、バイナリ・ツリー１０１０を使用することである。
【００９７】
[0104]このレベルでのオペレーションも、同様に、高速化されうる。編成は、最も早いヘッド・リード・イベントが直接見つけられる限り、必ずしも全部ソートされる（さらに、部分的にもソートされる）必要はない。別の高速化方法は、ユニット・サイズの決定を含んでいる。ユニット・サイズを減らすことによって、より低レベルでのオペレーションの複雑さはユニットを編成するという代償を払って減らされうる。ノードの数が増大すると、ユニット・サイズは、レベル３での保持オペレーションのトレードオフを打ち消すために増大されうる。
【００９８】
スケジュールのオペレーション
ノードを見つける
[0105]ノードのスケジュール（例えば、リスト１００４）は、最低レベル（レベル０）でノード１００２をアドレス指定することによって見つけられうる。図１１は、図１０のマルチレベル・スキーム１０００を使用して１１０２でノード１００２を直接アドレス指定することによって、ノード１００２に関するリスト例１００４を見つけることを例示している。
【００９９】
最も早いイベントを見つける
[0106]最も早いイベント（すなわち、次のイベント）は、図１２で提示されているように、トップから下へマルチレベル・スキーム１０００のレベルをトラバースすることによって見つけられうる。レベル３のバイナリ・ツリー１０１０のルートから、バイナリ・ツリー１０１０をトラバースし、単一ユニット９００に関するリード・イベント・スケジュール１００８におけるヘッド・リード・イベントを決定し、およびヘッド・リード・イベントと関連付けられたノード１００２に関するリスト１００４において最も早いイベント１００６を決定する時に、左側を維持することによって次のイベントは１２０２において見つけられうる。各レベルでの最も早いイベントは既に決定されているので、次のイベントを見つけることに計算はほとんど必要ない。次のイベントが何かを決定することは、バイナリ・ツリー１０１０からのルートを調べることから直ちに見つけられうることに留意されたい。
【０１００】
処理されたイベントの削除
[0107]イベントが処理されると、イベントは最低レベル（レベル０）のノードのスケジュールからの除去によって削除されうる。図１３では、図１２の１２０２で、以前、次のイベントであった斜線の網掛けのイベントが除去されている。結果として、ノード・スケジュールのリード・イベントが変わっている（すなわち、１２０２で斜線の網掛けのイベントは、新しいリード・イベント（図１３では陰影をつけられていない）があるように、リスト１００４から除去されている）。この例では、異なるノード１００２に関するイベント（すなわち、右下がりの斜線陰影イベント）はユニット・レベル（レベル２ａ）およびネットワーク・レベル全体（レベル３）でも次の最も早いイベントで、したがって、次のイベントになる。この更新は、処理されたイベントが削除された後に、マルチレベル・スキーム１０００の種々レベルを通して伝達され、結果的に、図１３で示される図示になる。
【０１０１】
非リード・イベントの挿入または削除
[0108]しかしながら、イベントが次のイベントではない場合、イベントが（例えば、再スケジュールされるように）挿入されたり、または削除される場合がある。結果として、図１４で表示されているように、より少ない変更が関係されうる。図１４では、イベント１４０２が第２のユニット９００の特定のノード１００２に関するリスト１００４に挿入される。挿入されたイベント１４０２はノード１００２に関する最も早いイベント１００６（リード・イベント）ではないので、挿入されたイベント１４０２のためにマルチレベル・スキーム１０００の他のレベルいずれかへの更新がこの時に起きる必要はない。
【０１０２】
リード・イベントの削除
[0109]リード・イベントの削除はより複雑である。図１５の状態から開始して、第１のユニット９００の第２のノードにおけるリード・イベント１５０２を削除することを説明する。
【０１０３】
[0110]最初にリード・イベント１５０２は、この特定のノードのスケジュール（ノード１００２に関するリスト１００４）から削除される。これは、仮に削除されたイベントがリード・イベントではなかった場合には、オペレーションの終了となる。削除されたイベントがリード・イベントなので、このレベルおよび次のレベル（すなわち、レベル１および２）で更新されることがが最もありうる。
【０１０４】
[0111]このレベルを更新するには、削除されたリード・イベント１５０２が、図１６で示されているように、新しいリード・イベント１５０４で置き換えられる。当該リード・イベント１５０４は異なるので、図１７に例示されているように、次のレベルのスケジュール１００８はこの時にもソートされうる。その上、ベクトル１０１２からスケジュール・エントリ１７０２への参照もあるので、ベクトル・エントリは無効にされる（参照が除去され、効果的に参照をスケジュール１００８に対して右側にシフトする）。これは、ベクトル１０１２を使用して（以下で記述されるように、少なくともベクトルが再生成されるまで）スケジュール１００８のエントリを見つけることの効果性をわずかに悪化させうる。
【０１０５】
[0112]リード・イベントはユニット９００に関するヘッド・リード・イベントになっていないので、ユニット・レベルの編成（レベル３で）はこのオペレーションでは更新される必要はない。
【０１０６】
ヘッド・リード・イベントの挿入
[0113]挿入されたイベントがユニット９００に関する新しいヘッド・リード・イベントになる場合、ユニット・レベルの編成（レベル３で）が更新されうる。例えば、図１８は、図１０のマルチレベル・スキーム１０００を使用した例示的なヘッド・リード・イベントの挿入を示しており、これによって、バイナリ・ツリー１０１０の右部分の再編成が行われる。
【０１０７】
[0114]図１８では、新しいイベント１８０２が特定のノード１００２に関してスケジュールされる。このイベント１８０２はこのノード１００２に関する最も早いイベント１００６なので、リスト１００４は、挿入されたイベント１８０２が新しい最も早いイベントであるように再ソートされる。このノードに関するリード・イベントは現時点では、挿入されたイベント１８０２が原因で異なるので、このノードを含むユニット９００に関するスケジュール１００８も再ソートされる。新しいイベント１８０２は別のノードに関する最も早いイベント１８０４（以前はこのユニット９００に関するヘッド・リード・イベントであった）より早く起きるので、スケジュール１００８は、エントリ１８０６（新しいイベント１８０２に対応）が、エントリ１８０８（以前のヘッド・リード・イベント（イベント１８０４）に対応）の前の新しいヘッド・リード・イベントになるように再ソートされる。ベクトル・エントリは、スケジュール１００８のソートと一致するようにシフトされうる。
【０１０８】
[0115]その上、新しいイベント１８０２がこのユニットに関するヘッド・リード・イベントであり、バイナリ・ツリー１０１０のこの枝における別のユニットに関するヘッド・リード・イベント（エントリ１８１０に対応）より早く起きるので、バイナリ・ツリーの右部分は再ソートされる。このことは、１８１２で示されているように（図１０から更新され、図１８で既に行われているように）、枝を交換し、エントリ１８１０ではなくて、エントリ１８０６（２つのユニット間の最も早いヘッド・リード・イベントを表す）に対応するように、バイナリ・ツリー１０１０の要素１８１４を変更することによって達成される。
【０１０９】
ソート／部分的ソート／最も早いもののみの追跡／ソートなし
[0116]上述のように、様々なレベルでのスケジュールがソートされた状態を保たれている必要はない。１または複数が部分的にソートされたり、またはソートされない状態を保ちうる。部分的ソートは、スケジュールの最も早い部分をソートされた状態に保ったり、またはイベントが起きそうになるまでの時間のマージン内にイベントをソートされた状態に保つこととなる。ベクトルは時間と共に劣化するので、ソートされていないベクトルを使用する時、この後者のオペレーションは、レベル２で好ましい。スケジュールのソート時間のマージンの量は、ベクトルの参照の劣化量に対応して保持されうる。
【０１１０】
スパース・スケジュールの条件付き再生成（非ソート）
[0117]スケジュールには、イベントの挿入および削除のほか、イベントの再スケジュール（削除してから再挿入）も含まれる。これらのタスクは、挿入または削除点の決定を必要とする。後者の場合、削除される項目の場所が見つけられることが最もありうる。前者の場合、挿入の地点がほぼ見つけられうる。この地点は、スケジュールがソートされる項目の正しい位置に対応している（挿入の前後および削除の前）。
【０１１１】
[0118]リンクされたリストは、イベントの容易な挿入および削除に便利である。しかしながら、従来の手段で挿入または削除点のために、リンクされたリストを検索することには通常、最初から開始して、所望の地点が見つかるまで、各項目全体を移動することを含んでいる。これは、極めて遅くなりうる。
【０１１２】
[0119]本開示の一態様は、前部、後部、および最後の挿入点からの並列検索を含んでいる。しかしながら、検索時間は、スパース・スケジュール・ベクトルでさらに減らされうる。
【０１１３】
[0120]スパース・スケジュール・ベクトルには、ユニットにおけるニューロンのリンクされたリストが固定長であるという利点がある（しかしながら、このことは、本開示の特定の態様では厳密に必要とされない）。ベクトルは、リンクされたリストのエントリへの直接の参照を含んでいる（ソフトウェアでは、これは、Ｃ＋＋イテレータまたはポインタとされうる）。ベクトルは、ベクトルのｉｔｈエントリがリンクされたリストのｉｔｈエントリを参照するように初期化されうる。この参照の状況は、図１９では矢印で図示されており、ここで、一番上の行ははスケジュール１００８（例えば、リンクされたリストのスケジュール）を表し、下の複数の行ははベクトルを表している。下にはベクトル表している２つの行があり、１つは実際のベクトル１０１２に関し、１つは仮想ベクトル１０１４に関する。しかしながら、当面、２つの下の行は同じものとみなす。相違は以下でさらに説明される。
【０１１４】
[0121]スケジュール１００８におけるエントリの検索には、次が含まれる、ユニットにおける各ニューロンに関するリード・イベントに対応するスケジュール１００８におけるエントリ。エントリは、発生の時間に従って順序付けされうる（例えば、最も早いものが最初）。リード・イベントは特定のニューロンに関するものなので、エントリは基本的にニューロン（またはニューロンに属するイベント）である。削除に関して、検索は特定のニューロンを対象としている。ニューロンが知られているために、ニューロンのリード・イベントの時間も知られている。リード・イベント（すなわち、ニューロン）の挿入に関して、検索は、挿入されるリード・イベントの時間をまたぐリード・イベント時間を有する２つのニューロン間の点を対象としている（すなわち、ｔ１≦ｔ≦ｔ２、ここでｔ１およびｔ２は、２つのまたがるニューロンのリード・イベント時間で、ｔは挿入される新しいリード・イベントの時間である）。挿入点がｔ１＝０で開始する場合、および挿入点が最後である場合、ｔ２＝∞であることに留意されたい。
【０１１５】
[0122]スケジュールのニューロン（リード・イベント）の検索を高速化するために、スパース・ベクトルが使用されうる。ニューロンのリード・タイムの時間は知られているので、ベクトルのハッシュまたは高速検索（例えば、インデックス付きバイナリ検索）は、リンクされたリスト全体をトラバースする必要なく、所定の時間でベクトル・エントリを直接見つけるのに使用されうる。
【０１１６】
[0123]スケジュールのニューロン（リード・イベント）の挿入点を検索するために、スパース・ベクトルが使用されうる。リード・イベントの時間は知られているので、検索は当該時間でのエントリを対象とするか、または当該時間をまたぐ時間でのエントリの検索を対象としている。再度、ベクトルのハッシュまたは高速検索は、リンクされたリスト全体をトラバースする必要なく、またいでいるエントリを直接見つけるのに使用されうる。高速検索は、ベクトルにおけるイベントの時間の変化のレートから位置を外挿または内挿することによって、特定の時間を持つエントリが見つけられるベクトルの中の位置の近似値の計算からなりうる。第１のステップは、ベクトルの始まりで始め、第１の２つのエントリを調べることを含みうる。第１の２つのエントリ間の時間差が２ｍｓの場合には、１つは時間１０ｍｓでエントリを見つけ、１つはさらに５つ先のエントリを調べるべきであるとみなしうる。したがって、１つは直接当該エントリにジャンプしうる。第２のステップは、到達したエントリが所望するエントリではない場合（すなわち、異なる時間を有する）に行われうる。第２のステップは、５番目のエントリと所望の時間の方向における次のエントリ（すなわち、４つ目または６つ目のエントリ）の間の変化のレート（時間差）を調べることを含む。次に、当該差は、ジャンプする次の位置を外挿するために使用されうる。
【０１１７】
[0124]所望する時間のエントリが見つかり、または２つのまたがるエントリが見つかった後、１つはポインタを使用してリンクされたリストに移動しうる。ベクトル全体の時間の経過を推定するために必ずしも隣接する２つのエントリのみを使用する必要がないことに留意されたい。例えば、複数のエントリが使用される得、隣接していないエントリが使用され得、平均レートが追跡され使用され得、またはレートが、検索された前のエントリを見つけた結果に基づいて、逆に決定され得る。レート（ｒ）は、Ｍエントリ離れた時間ｔ１およびｔ２を有する任意の２つのエントリ１および２を用いて、ｒ＝（ｔ２−ｔ１）／Ｍのように決定され得る。次に、時間ｔのエントリへの所望のジャンプはエントリ１からＮベクトル・エントリとなるように決定され、ここで、Ｎ＝ｒ（ｔ−ｔ１）である。
【０１１８】
[0125]しかしながら、高速化は、エントリが挿入または削除され、スケジュールが変わるにつれ、さらに大幅に複雑になる。このために、ベクトルも同様に変えられる。１つのニューロンのリード・イベントが変わる場合を考慮する（処理された、再スケジュールされた、より早いイベントが当該ニューロンのためにスケジュールされたなどのためのいずれか）。この場合、スケジュールは、当該ニューロンに関する新しいリード・イベントが発生の異なる時間（例えば、より早いまたはより遅い）を有しうるので、再配列されうる。
【０１１９】
[0126]図１９および２０の例では、図１９の古いリード・イベント１６０２が図２０で同じニューロンに関する新しいリード・イベント１７０４に置き換えられているが、新しいリード・イベント１７０４は置き換えられたイベント１６０２より遅い時間を有している。古いリード・イベント１６０２はスケジュール１００８から削除され、新しいリード・イベント１７０４がスケジュール１００８に後で挿入されている。このため、ベクトル参照は、図２０で例示されているように、リンクされたリスト・エントリと完全には対応しなくなる。実際のベクトル１０１２は現在、スケジュール１００８に対して、右（中心位置）にシフトされた参照を有している。さらに、削除された古いリード・イベント１６０２を指すエントリもほぼ訂正されうる（このため、存在しないエントリを指さない）。特定の態様では、これはリンクされたリストの前または後続のエントリへの参照の設定の問題である（前のエントリへの参照は図２０で示されている）。いずれにせよ、効果は、結果となる仮想ベクトル１０１４は以前よりの１つ少ないエントリを有することである。
【０１２０】
[0127]リード・イベントが変わると、ベクトルはますますスパースになる。スパース・ベクトルの意味はいかなるものか。スケジュール１００８における新しいリード・イベント１７０４に関するエントリはベクトルからの直接の参照を有していないことに留意されたい。ベクトルベースの検索またはハッシュで所望のエントリに到達できる最も近いものは、いずれかの側の最も近い参照されたエントリである。これが意味することは、ベクトルベースの検索またはハッシュはエントリ付近に到達できるが、リンクされたリスト・スケジュール（短いものではあるが）の最終検索も関連しうるということである。しばらく後に、ベクトルは、図２１の例で例示されているように、かなりスパースになりうるもので、したがって、検索において限られた支援を提供しうる。
【０１２１】
[0128]一般的に、挿入／削除にはスケジュールにおいて１つまたは複数のエントリを見つけることを含んでおり、これは次の２つのタスクを含んでいる。（１）リンクされたリストにおいて最も近い１つまたは複数のエントリを迅速に見つけるためにベクトルを使用する、および（２）（第１のステップにおいて見つけられた最も近い１つまたは複数の近くの）エントリの位置を見つけるためにリンクされたリストを使用する。第１のステップは一般的に、リンクされたリストが検索されなければならないとしても、ベクトルがスパースである場合であっても、さらに非常に高速である。しかしながら、ベクトルが非常にスパースになるにつれ、高速化は限定されうる。
【０１２２】
[0129]本開示の特定の態様ではさらに、ベクトルを条件付きで再生成（ベクトルを全体に復元）することをさらに含んでいる。例えば、ベクトルがスパース性の特定のレベルに到達する場合である。しかしながら、特定の態様によれば、ベクトルは、挿入／削除検索（すなわち、リンクされたリストにおける検索）の第２の部分のコストに応じて再生成される。代替として、ベクトルは、リンクされたリストにおける関連した（すなわち、ベクトルを使用するエントリの近くを見つけた後）追加の検索の確率、頻度、数に応じて再生成されうる。
【０１２３】
[0130]さらに、特定の態様では、高速化が適応され得る。特定の態様によると、ベクトルの再構築のためのしきい値（検索の数、スパースさ、または他の何らかの適した条件のいずれか）は、同時未決定のイベント・レートまたは複雑さのような、シミュレーションまたはネットワーク動作によりオンザフライで調整されうる。特定の態様では、次のより抽象な適応が使用される。
【０１２４】
１．再生成のために第１の（参照）条件を使用する。
【０１２５】
２．ランタイム・パフォーマンスを測定する。
【０１２６】
３．再生成のために第２の（異なる）条件を使用する。
【０１２７】
４．ランタイム・パフォーマンスを測定する。
【０１２８】
５．第１の（参照）条件のパフォーマンスを第２の（異なる）条件のパフォーマンスと比較する。
【０１２９】
６．参照条件を最高のパフォーマンスを有する条件に設定する。
【０１３０】
[0131]特定の態様では、条件はスカラしきい値を超える量である。したがって、第１の条件は１つのしきい値であり得、第２の条件は異なるしきい値であり得る。この適合アルゴリズムのバリエーションは、方向の変化を含む。例えば、パフォーマンスが、しきい値の減少で増大する場合には、さらなる減少が試みられ得、その反対も同様である。
【０１３１】
[0132]適した量の例には、削除の数、リンクされたリストの検索の数、リンクされたリストで検索された距離などを含んでいる。これらの数はさらにユニット（またはスケジュール）におけるエントリまたはニューロンの数に対する比として（または別の場合、に応じて）も表現されうる。
【０１３２】
モデルオペレーション（予測＆前進）実行の方法
[0133]このセクションでは、本開示の特定の態様による実行方法を記述する。一般に、前の時間から、新しいイベントを予測することおよび更新（先回り）することに関するモデルオペレーションは、上述のアルゴリズムに従って実行される。しかしながら、いくつかの最適化または向上が可能である。
【０１３３】
仮想遅延シナプス
[0134]図２２は、本開示の特定の態様に従い、プレシナプス・ニューロン４０６とポストシナプス・ニューロン４０２間のシナプスの遅延２２０２を概念的に例示する。シナプスの遅延２２０２がゼロである第１の場合を考慮する。この場合、上述のアルゴリズムを考慮すると、ポストシナプス・ニューロン４０２に関する入力イベントのスケジュールは完全に無視されうる。アルゴリズムはポストシナプス・ニューロン４０２の更新および次のイベントの予測に直接ジャンプしうる（シナプスに同じ）。
【０１３４】
[0135]しかしながら、シナプスがゼロではない遅延を有する場合はどうか。いくつかの例を考察する。第１に、遅延２２０２が小さい場合、本開示の特定の態様では遅延を無視し、遅延がゼロの場合のように続行しうる。イベントは、タイミング・エラーを有しうるが、このエラーは「許容される」。第２に、遅延の大きさまたは接続の過去の履歴またはポストシナプス・ニューロンの状態に応じて遅延を無視する可能性がある場合を考察する。これらおよび他のバリエーションが可能である。第３に、シナプスの遅延２２０２が無視される（ゼロと見なす）が、この遅延がポストシナプス・ニューロン・モデルの前進において補われることを考察する。第３の場合は重要である。
【０１３５】
いかにゼロ・シナプス遅延の仮定がポストシナプス・ニューロン・モデルの前進において補われうるか。
【０１３６】
[0136]シミュレータは、モデルの前進が、前進は実際の時間より後の時間に関すると見せかけうる。違いはシナプスの遅延である。この見せかけによって、モデル設計者は、時間を進め、および戻す、モデルに関する前進および予測のルールを設計することができる（例えば、細胞体へのスパイクまたは伝達するための予測される遅延、あるいは所定の時間だけ先回りすることによる前進モデル状態など）。しかしながら、シミュレーションは、プレシナプス・ニューロンの出力イベント時間（現在のシミュレーション時間）の時間に関してではなく、現在の時間たすシナプスの遅延に等しい将来の時間のために前進を実行する。これで、当該将来の時間の前に次のシミュレーション・イベントが起き、次に当該イベントが順不同に実行されることが可能である。しかしながら、これは許容されうる。イベントが相互に関係していない場合、相違はない。イベントがニューロン単独の受信に影響をほとんど有していない場合、相違はほとんどなく、小さなオーダーでのタイミングの相違はほとんど重要ではない仮想スケジュール（スケジュールを回避するためにシナリオの遅延をゼロと処理するが、モデルを見せかけることにより補う）の一例は、図２３に示されている。技術的には、合間のイベントが、仮想的にスケジュールされたイベント前にかわり後に、起こりうることが可能である。しかしながら、この合間のイベントは別のニューロンに関するもの、あるいは別の場合、結果全体に影響を有し得ないか、あるいは影響は「許容される」と思われうる。
【０１３７】
[0137]図２３は、普通にスケジュールされたオペレーション２３００と仮想的にスケジュールされたオペレーション２３１０間の比較を例示する。普通にスケジュールされたオペレーション２３００では、プレシナプス・ニューロンの出力イベント２３０２はｔで起きうるもので、ポストシナプス・ニューロンの入力イベント２３０４はΔｔのシナプスの遅延２３０６のためにｔ＋Δｔで起きうる。シナプスの遅延２３０６の間、合間のイベント２３０８は起きうる。仮想的にスケジュールされたオペレーション２３１０では、仮想的にスケジュールされたポストシナプス・ニューロンの入力イベント２３１２はｔで評価されうるが、時刻がｔ＋Δｔであるように更新される。したがって、合間のイベント２３０８は、普通にスケジュールされたオペレーション２３００のポストシナプス・ニューロンの入力イベント２３０４の前に起きる場合であっても、仮想的にスケジュールされたポストシナプス・ニューロンの入力イベント２３１２の後に起きうる。
【０１３８】
[0138]次に、特殊な場合も考慮する。同じニューロンに対して合間のイベントがある場合には、当該イベントに関するモデルの前進は最後の前進に対して負の時間差を有しうる。これに対処するには、モデルの前進は、時間においてモデルの状態を過去へ戻すこと（先回りではなく、後ろへジャンプすること）が可能であるか、または違いが無視されうる（例えば、ゼロ時間経過と見なされる）のいずれかありうる。この後者の方法は、スケジュールに関してゼロと処理される最大シナプスの遅延が制限される時に採用されうる。
【０１３９】
[0139]特定の態様のための別のバリエーションには、すべてのシナプスの遅延をゼロと見なすオプションを含んでいる。
【０１４０】
前進遅れ
[0140]シナプスの遅延を補うための別の方法は、次の（ある程度遅い）のイベントが起きる場合に、複数の入力が共に処理されうるように、モデルの前進に将来のイベント（入力）を保存させることである。利点はスケジューリングが回避されることである。しかしながら、この代替方法は、モデル設計がこれを明示的に処理することを意味しうるのに対し、上の方法ではしない。
【０１４１】
[0141]微妙なバリエーションは、更新のためのイベントを列に並べて、一括して処理することである。この理由は以下で説明される。
【０１４２】
予測遅れ
[0142]ニューロンがスパイクする前に複数の入力を受信する場合を考察する。上のイベント・アルゴリズムにおいて、将来のニューロンのイベントのモデル予測がモデルの前進の後に実行される。これは、各入力が出力の予測された時間を変えることができるためである。これは一般に、すべてのニューロン・モデルで言えることである。確かに、一部の単純なニューロン・モデルでは、入力は予測された出力時間を変えることはできない。例えば、リーキー・インテグレイト・アンド・ファイア（ｌｅａｋｙ−ｉｎｔｅｇｒａｔｅ−ａｎｄ−ｆｉｒｅ）（ＬＩＦ）ニューロンは多入力を受信しうるもので、すべてが発火のしきい値未満の場合、予測された出力時間（すなわち、決して無限ではない）は変わらない。しかしながら、一例として、Ｉｚｈｉｋｅｖｉｃｈのシンプル・モデル（Ｓｉｍｐｌｅ  Ｍｏｄｅｌ）では、ニューロンは、電圧がしきい値を超えた後に、ある程度遅延してスパイクする。さらに、スパイクまでの時間遅延は、入力の量およびそれがいつ起きるかに依存する。したがって、ニューロン電圧がしきい値を超過した後、スパイクする前の各入力は予測されたスパイク（出力）時間を変える。
【０１４３】
[0143]上のイベント・アルゴリズムで述べたように、将来のニューロンのモデル予測が各モデルの前進の後に実行される。本開示の特定の態様では、オプションの予測遅れ機能を含みうる。この機能によると、モデルの前進が実行されるが、モデル予測ステップが遅らされる。あるバリエーションによると、予測ステップは、いくつかの条件下でのみ遅らされる。さらに、第２または後続のモデルの前進が（同じニューロンで）第１のモデルの前進に関する予測ステップの前に起きる場合には、１つの予測ステップのみが行われうる。これは、イベントの起こり得る遅れた予測を犠牲にして、モデルの計算を節約する。更なる向上は、前進ステップを列に並べ、遅らされた予測の時間に一括して実行することを含んでいる。
【０１４４】
いつ遅らされた予測の決定が起きるか
[0144]出力イベント時間を決定するには、シミュレーションはモデル予測のルールを実行しなければならない。予測はニューロン（あるいは、場合によってはシナプス）の現在の状態に基づいて行われる。したがって、複数のモデルの前進が予測の前に起きる場合、予測は、最後の前進としての最終状態に基づいてほぼ行われうる。したがって、予測遅れ機能オプションは、モデル・ルールがこの態様と一貫していることを示唆する。
【０１４５】
シナプスの失敗および学習
[0145]本開示の特定の態様では、シナプスの失敗のための備えを含んでおり、これは、シナプスの出力イベント（ニューロンの入力イベント）に帰着するシナプスの入力イベントの失敗に対応する。特定の態様によると、この機能は予測方法の対応する決定である。例えば、シナプス予測のルールは一般的に、（現在の時間に対して）将来、いつシナプスがイベントを出力するか決定する。しかしながら、この決定はさらに、入力に対応する出力が決してないことも決定しうる。
【０１４６】
[0146]シナプスの失敗の決定の詳細（確率的な失敗または条件、ファクタ、またはパラメータに基づく決定論的な失敗など）は、この開示の範囲外である。しかしながら、シナプスの失敗および学習に関連された本開示の追加の重要な態様がある。これらの態様を理解するために、スパイクタイミング依存性可塑性（ｓｐｉｋｅ−ｔｉｍｉｎｇ−ｄｅｐｅｎｄｅｎｔ  ｐｌａｓｔｉｃｉｔｙ）（ＳＴＤＰ）を考慮する。ＳＴＤＰを実装するための１つの方法は、ポストシナプスのイベントに基づく長期増強（ＬＴＰ）およびプレシナプスのイベントに基づく長期抑圧（ＬＴＤ）をトリガすることである。ＬＴＰとＬＴＤの両方は、プレおよびポストシナプスのスパイク間の時間差に依存する。しかしながら、シナプスの失敗が起こり、ポストシナプスのイベントがない場合には、ＬＴＰのためのトリガはない可能性があり、したがってＬＴＰは減少されうる。または、最後のポストシナプスのタイム・スタンプがＬＴＤに対して不適当である可能性があり、したがって、ＬＴＤの作用も不適当でありうる。ポストシナプスのタイム・スタンプ問題は、シナプス・モデルではなくニューロン・モデルのタイム・スタンプを追跡し、ＳＴＤＰを決定するシナプス・ルールからタイム・スタンプにアクセスするか、ニューロン・モデルからＳＴＤＰを決定するかのいずれかによって回避されうる。
【０１４７】
[0147]本開示の特定の態様によると、いくつかの他のオプションが利用可能である。第１に、シミュレーションは、予測ルールが、出力イベントが起こらないと決定する場合でも、シナプスの前進ルール・イベントを実行しうる。代替において、特殊な前進ルールが実行されうる。この特殊な目的のために別のイベントのスケジュールを回避するには、特殊な前進ルール（またはゴースト・ルール）が、現在の時間が（失敗した）出力イベント時間であるかのように、または（失敗した）出力イベントの時間が前進ルールに伝達されうるように、のいずれかで実行されうる。（失敗した）出力イベントのシナプスの前進ルールの後者の実行は、入力イベント（プレシナプス・ニューロンの出力）のためのシナプスの前進ルールの実行と混同されるべきではない。
【０１４８】
[0148]図２４は、本開示の特定の態様に従い、失敗のないシナプスのモデリングに関するオペレーション２４００とシナプスの失敗を伴うシナプスのモデリングに関するオペレーション２４２０間の比較である。オペレーション２４００では、２４０２で入力イベントに関するシナプスの状態を前進させた後に、予測ルールが出力イベントが起きないという（すなわち、シナプスの失敗がない）ことを決定しても、、シノプシスは、２４０４で出力イベントに関する予期された時間を予測しうる。シナプスの遅延は、シナプスが出力イベントを出力し出力イベントに応じて２４０８でシナプスの状態を前進させる前に、２４０６で起きる。２４０８で決定された前進した状態であるとするならば、２４１０で、シナプスは再度、出力イベントに関する予期された時間を予測しうる。
【０１４９】
[0149]対照的に、オペレーション２４２０の２４０２で入力イベントのシナプスの状態を前進させた後、シナプスは、シナプスの失敗機能を伴う２４２２で出力イベントに関する予期された時間を予測しうる。この場合、予測ルールが、出力イベントが起きないということを決定する場合、ゴースト・ルールが２４２４で実行されうる。
【０１５０】
なぜ失敗したシナプスのイベントから学習するモデルを必要するのか。
【０１５１】
[0150]シナプスの失敗のモデリングと計算的に有利な目的のためのシナプスの失敗の決定との間には相違がある。前者の場合、モデリングされたシナプスの失敗に基づき（シナプスの入力が生物学では効果を有しないかのように）学習する必要とされない可能性がある。後者の場合、シナプスは生物学において成功した可能性があるが、計算の複雑さを軽減するために、イベントに関連付けられたイベントのスケジューリングおよび処理をスキップするように動機付けられうる。例えば、同じ高レベル・ネットワークの結果が確率的なシナプスの失敗を伴い達成されうる場合、シミュレーションを加速するための方法としてこれを使用するように動機付けられうる。
【０１５２】
人為的なイベント（将来）
[0151]本開示の特定の態様では、最小間隔でノードを前進させるための機能を提供する。このようにすると、イベントベースのモデルが、イベントがない場合であっても、最小間隔で更新されることが確実になる。
【０１５３】
[0152]この機能は、種々の適した方法のいずれかを使用して実装されうる。第１の方法では、例えば、人為的なイベントが、特定の遅延を伴う各入力または出力イベントの後に（再）スケジュールされうる。別の入力または出力イベントがより早く起きる場合、人為的なイベントは再スケジュールされる。別の場合、人為的なイベントは処理され（すなわち、シナプスまたはニューロン・ノードが前進される）、より遅い時間のために再スケジュールされる。第２の実装技術を使用すると、人為的なイベントは定期的に起きうる。第３の方法では、人為的なイベントは、第２のノードがイベントを有する時に、第１のノードに関してトリガされうる。「プロキシ・イベント技巧」と呼ばれ、これは、第１および第２のノードが接続されていない状態でも起こりうる。
【０１５４】
イベント・タイミングおよび分解能の例
[0153]本開示の特定の態様では、追加のコストなし（または無視できるほど）で任意の優れたタイミング分解能を可能にする。しかしながら、このことはステップベースのシミュレーションは、同じ優れたタイミング分解能で動作できる場合、同じ機能的結果を必ず達成することを意味しない。２つの理由がある。第１に、本開示の特定の態様に従うモデルダイナミクスは、ステップの更新によってではなく、イベント時間で決定される。第２に、同じ処理スレットによって処理されるイベントが同時に処理されることはない。ステーションベースのシミュレーションでは、通常、すべての更新は、結果となるイベントの一括した伝達の前に一括処理される。特定の態様では、イベントは、前進がこのようなイベントに帰着する場合、直ちにスケジュールされる。したがって、イベントの実行の順序も潜在的に異なる。他の態様では、これは、同時に起きるイベントが、例えば、ニューロンまたはシナプスのインデックスにより順序付けされるように変えられうる。
【０１５５】
モデルおよびオペレーションの例
[0154]本開示の特定の態様によると、ニューロンおよびシナプス・モデル７０４、７１４は、図２５で例示されているように、それぞれ、共有ニューロン・パラメータ・モデル２５０６および共有シナプス・パラメータ・モデル２５０４も有しうる。これらのパラメータ・モデル２５０４、２５０６はデータ（定数および変数）のほか、方法（ルール）の両方を含みうる。このようなパラメータ・モデルは、ニューロンまたはシナプスのグループ（レイヤまたは共通タイプ）の中で共有されうるパラメータに依存する方法を定義するために使用されうる。本開示の特定の態様では、ネットワーク・モデル（または単に「モデル」）２５００を含んでおり、コネクタ・モデル２５０２（ニューロンをシナプスと接続する方法を決定する）を含みうる。モデルはさらに、互いからも得られうる（継承）。
【０１５６】
[0155]図２６は、本開示の特定の態様に従い、スパイク・ニューラル・ネットワークでのイベントベースのスケジュールに関するオペレーション例２６００の流れ図である。オペレーション２６００は、ハードウェア（例えば、１または複数の処理ユニットによって）、ソフトウェア、またはファームウェアで行いうる。
【０１５７】
[0156]オペレーション２６００は、ニューラル・ネットワークにおける複数のノードに関する複数のイベントのスケジュールによって、２６０２で開始しうる。このスケジュールは、イベントの単一レベル、順序付きリストと比較してイベントのより高速な処理のためのマルチレベル・スキームを使用して行われうる。特定の態様では、複数のノードは複数のニューロンまたは複数のシナプスの少なくとも１つを含みうる。２６０４で、スケジュールされた複数のイベントが実行されうる。
【０１５８】
[0157]特定の態様では、スケジュールされた複数のイベントの実行は、スケジュールされた複数のイベントで次のイベントを見つけること、次のイベントに基づき、次のイベントに関連付けられたノードの状態を前進させることを含んでおり、ここで、ノードは複数のノードの１つで、あるのであれば、ノードに関する出力イベントがノードの前進した状態に基づきいつ起きると予期されるかを決定する。特定の態様では、オペレーション２６００にはさらに、決定に基づきノードに関する出力イベントの再スケジュールも含まれる。この再スケジュールには、マルチレベル・スキーム（すなわち、マルチレベルの処理／（再）スケジュール・スキーム）の使用を含んでいる。
【０１５９】
[0158]特定の態様では、２６０４でのスケジュールされた複数のイベントの実行には、スケジュールされた複数のイベントで次のイベントを見つけることを含んでいる。次のイベントを見つけることには、レベルのそれぞれで最も早いイベントを決定するためにマルチレベル・レベルにおけるレベルのトラバースおよびレベルのトラバースの後に次のイベントをすべてのイベントの最も早いものと決定することを含みうる。
【０１６０】
[0159]特定の態様によると、マルチレベル・スキームの第１のレベルは複数のノードのインデックス付け可能リストを備える。マルチレベル・スキームの第２のレベルは、複数のノードの各ノードに関して、ノードに関する同時未決定のイベントのスケジュールを備えうる。特定の態様では、オペレーション２６００はさらに、第１のレベルでノードをアドレス指定することによって、複数のノードの１つのノードに関する同時未決定のイベントのスケジュールを決定することも含みうる。ノードに関する同時未決定のイベントのスケジュールは、最初にスケジュールされた同時未決定のイベントの最も早いもので、少なくとも部分的にソートされうる。特定の態様では、同時未決定のイベントのスケジュールは、多くても、ノードに関するただ１つの出力イベントを備えうる。
【０１６１】
[0160]特定の態様では、オペレーション２６００はさらに、複数のノードを１または複数のユニットに編成することを含みうる。この編成には、ユニットの間の第１の結合遅延がユニット内の第２の結合遅延より長いように、結合遅延に基づき複数のノードをユニットに編成することを含みうる。
【０１６２】
[0161]特定の態様では、第３のレベルのマルチレベル・スキームは、ユニットのそれぞれで、ユニットのノードのそれぞれから同時未決定のイベントの最も早いものを含んでいる。特定の態様では、第４のレベルのマルチレベル・スキームは、ユニットのそれぞれから同時未決定のイベントの最も早いものに基づく編成を備えている。この編成には、バイナリ・ツリーを必要としうる。このバイナリ・ツリーのルートは、すべてのスケジュールされた複数のイベントからの最も早いイベントでありうる。特定の態様では、第３のレベルのマルチレベル・スキームにおいて、ユニットのそれぞれに関して、ユニットのノードのそれぞれから同時未決定のイベントの最も早いものがリンクされたリストとして編成されうる。第５のレベルのマルチレベル・スキームは、ユニットのそれぞれに関して、リンクされたリストを参照するベクトルを含みうる。特定の態様では、オペレーション２６００はさらに、スケジュールされた複数のイベントの再スケジュールを含みうる。この再スケジュールには、ベクトルを使用してスケジュールされた複数のイベントに対する挿入または削除のための所望のエントリに最も近いリンクされたリストの１または複数のエントリを見つけること、およびリンクされたリストを使用して見つけられた最も近い１または複数のエントリに基づき所望のエントリの位置を見つけることを含みうる。
【０１６３】
[0162]図２７は、本開示の特定の態様に従い、ニューラル・ネットワークでの連続時間、イベントベースのモデリングのオペレーション例２７００の流れ図である。オペレーション２７００は、ハードウェア（例えば、１または複数の処理ユニットによって）、ソフトウェア、またはファームウェアで行いうる。
【０１６４】
[0163]オペレーション２７００は、ニューラル・ネットワークの第１のノードで第１の入力イベントを受信することによって、２７０２で開始しうる。２７０４で、第１のノードの状態は、２７０２から受信された第１の入力イベントに基づき、前進されうる。第１のノードの状態は、第１のノードの膜電位および回復電流によって定義されうる。特定の態様によると、第１のノードの状態の前進には、第１のノードの状態を調整するための受信された第１の入力イベントの処理および受信された第１の入力イベントの時間への先回りを含んでいる。
【０１６５】
[0164]あるのであれば、第１のノードに関する第１の出力イベントがいつ起きると予期されるかが、２７０４からの第１のノードの前進した状態に基づき、２７０６で決定されうる。特定の態様では、この決定は、第１のノードの状態が前進された後にそのたびに行われる。他の態様では、この決定は遅らされうる。この場合、第２の入力イベントは第１のノードで受信されうるもので、ここで、第２の入力イベントは、第１の入力イベントの後で遅らされた決定の前に起きる。第１のノードの状態は、第１のノードの状態が受信された第１の入力イベントに基づき前進された後、しかしながら、遅らされた決定の前に、受信された第２の入力イベントに基づき前進されうる。特定の態様では、受信された第１および第２の入力イベントに基づく第１のノードの状態の前進には、次を含んでいる。（１）受信した第１の入力イベントに基づき第１のノードの状態を前進させることと、および受信した第２の入力イベントに基づき第１のノードの状態を前進させることとを列に並べること、並びに（２）遅らされた決定の時間において列に並べられた前進を実行すること。
【０１６６】
[0165]第１のノードがポストシナプス・ニューロンである特定の態様では、２７０２での第１の入力イベントの受信が第２のノードからの第２の出力イベントの受信を含んでいる。特定の態様では、第２のノードは遅延を有するシナプスである。この場合、２７０４での第１のノードの状態の前進には、第１のノードの状態を調整するための受信された第１の入力イベントの処理および受信された第１の入力イベントの時間への先回りプラス遅延を含んでいる。他の態様では、第２のノードはシナプスを介してポストシナプス・ニューロンに接続されたプレシナプス・ニューロンである。シナプスがゼロ遅延を有する場合、シナプスに関する第３の出力イベントはスケジュールされていない。シナプスがゼロではない遅延を有する他の場合では、遅延は、ゼロ遅延の場合と同様に、シナプスに関する第３の出力イベントがスケジュールされないように、遅延が無視されうる。特定の態様では、シナプスは第１の遅延を有し、第１の遅延の少なくとも一部は、シナプスの第３の出力イベントが第２の遅延でスケジュールされるように、無視される。これは、第１の例として、シナプスが、スケジュールされた処理が当該遅延に限定されるように、ゼロではない一定の遅延特性を有する場合、または第２の例として、処理のスケジューリングに関して既にスケジュールされた他の処理があり、特定の遅延が所望される場合に、遅延の相違が別々に説明される（すなわち、それが起きる時に処理されることによって）場合、をカバーする。
【０１６７】
[0166]特定の態様では、オペレーション２７００はさらに、２７０４での状態を前進させる前に、受信した第１の入力イベントを保存することを含みうる。次に、第１のノードは第１のイベントの後の第２の入力イベントを受信しうる。この場合、２７０４での状態を前進させることには、受信した第１の入力イベントおよび受信した第２の入力イベントを共に処理することを備えうる。
【０１６８】
[0167]特定の態様によると、オペレーション２７００はさらに、決定従った第１のノードからの第１の出力イベントの出力を含んでいる。次に、第２のノードは、第２の入力イベントとして第１の出力イベントを受信し得、第２のノードの状態は受信した第２の入力イベントに基づき前進されうる。あるのであれば、第２のノードに関する第２の出力イベントがいつ起きると予期されるかが、次に第２のノードの前進した状態に基づき決定されうる。
【０１６９】
[0168]第１のノードがシナプスである特定の態様では、決定は、第１の出力イベントが決して起きないことを示す。この場合、オペレーション２７００はさらに、決して起きない第１の出力イベントに基づきシナプスの状態を前進させることを含みうる。現在の時間は、決して起きない第１の出力イベントの時間として使用されうる。
【０１７０】
[0169]特定の態様によると、第１の入力イベントには第１のノードに関する人為的なイベントを含んでいる。特定の態様では、オペレーション２７００はさらに、人為的なイベントが定期的に起きるようにスケジュールすることを含みうる。他の態様では、オペレーション２７００はさらに、第１のノードに関するイベントなしで一定の時間量が経過する場合、人為的なイベントが起きるようにスケジュールすることを含みうる。特定の態様では、オペレーション２７００はさらに、各入力または出力イベントの発生後の遅延の後に、その遅延内に入力または出力イベントが起きない場合に人為的なイベントが起きるように、人為的なイベントが起きるようにスケジュールすることを含みうる。この場合、オペレーションはさらに、人為的なイベントが発生した後の別の遅延で別の人為的なイベントが起きるように（再）スケジュールすることも含みうる。
【０１７１】
[0170]図２８は、本開示の特定の態様に従い、イベント・リストで１または複数のイベントを見つけるためにベクトルを使用するためのオペレーション例２８００の流れ図である。オペレーション２８００は、ハードウェア（例えば、１または複数の処理ユニットによって）、ソフトウェア、またはファームウェアで行いうる。
【０１７２】
[0171]オペレーション２８００は、ニューラル・ネットワークにおける複数のノードに関するイベントのリストを参照するベクトルを生成することによって、２８０２で開始しうる。リストは、最も早いイベントから最も遅いイベントに一時的に順序付けされうる。特定の態様では、リストには、最も早いイベントから最も遅いイベントに配列された、複数のノードの各ノードに関する最も早いイベントを含んでいる。特定の態様によると、ベクトルのｉｔｈエントリはリストのｉｔｈエントリを参照する。特定の態様によると、リストはリンクされたリストを備え、ベクトルは、ポインタでリンクされたリストのエントリに実装されうる。
【０１７３】
[0172]２８０４で、ターゲットに最も近い１または複数のイベントがベクトルを使用してイベントのリストで見つけられうる。この検索は、イベントのリストをトラバースすることなく行われうる。ターゲットは、例えば、ターゲット時間またはターゲット・イベントを備えうる。特定の態様では、ベクトルの使用には、ベクトルのインデックス付きバイナリ検索を行うことを含みうる。他の態様では、ベクトルの使用には、ベクトルの時間エントリに基づき内挿または外挿を行うことを含みうる。
【０１７４】
[0173]特定の態様によると、オペレーション２８００にはさらに、ターゲットでリストからイベントを削除すること、またはターゲットに最も近い１または複数のイベント間のリストにイベントを挿入することを含みうる。次に、ベクトルは削除された、または挿入されたイベントに基づき更新されうる。特定の態様では、削除されたイベントに基づくベクトルの更新には、リストの削除されたイベントの前の（または後の）エントリを参照することを含んでいる。
【０１７５】
[0174]オペレーション２８００はさらに、しきい値が満たされる場合、ベクトルを再生成することを含みうる。特定の態様では、しきい値は動的に調整されうる（すなわち、オンザフライで調整される）。しきい値は、例えば、ターゲットのためのいくつかの検索、ベクトルへのいくつかの更新、リストからのいくつかの削除、最も近い１または複数のイベントを見つけた後のリストの検索のコスト、あるいは仮想ベクトルのスパース性でありうる。この仮想ベクトルは生成されたベクトルをミラーリング（初期化または再生成の後にベクトルをミラーリング）しうるもので、リストから削除されたイベントに対応する仮想ベクトルのエントリを除去することによって形成されうる。
【０１７６】
[0175]上述の方法の種々のオペレーションは、対応する機能を行うことが可能ないずれかの適した手段により行われうる。手段には、回路、特定用途向け集積回路（ＡＳＩＣ）、またはプロセッサーを含むがこれに限定されるものではない、種々のハードウェアおよび／またはソフトウェア・コンポーネントおよび／またはモジュールを含みうる。一般に、図面で例示されているオペレーションがあるところでは、当該オペレーションは、同様に番号付けされた対応するもう一方の手段プラス機能のコンポーネントを有しうる。例えば、図２６で例示されたオペレーション２６００は図２６Ａで例示された手段２６００Ａに対応する。
【０１７７】
[0176]例えば、表示するための手段は、ディスプレイ（例えば、モニタ、フラット・スクリーン、タッチ・スクリーンなど）、プリンタ、あるいは表、チャート、またはグラフなどの視覚的図示のためにデータを使用するための他のいずれかの適した手段を備えうる。処理するための手段、受信するための手段、スケジュールするための手段、再スケジュールするための手段、実行するための手段、前進するための手段、更新するための手段、生成するための手段、再生成するための手段、見つけるための手段、調整するための手段、削除するための手段、編成するための手段、遅延するための手段、出力するための手段、提供するための手段、または決定するための手段は、処理システムを備え、１または複数のプロセッサーまたは処理ユニットを含みうる。保存するための手段は、メモリまたは他のいずれかの適したストレージ・デバイス（例えば、ＲＡＭ）を備えうるもので、処理システムからアクセスされうる。
【０１７８】
[0177]本明細書で使用されているように、用語「決定する（ｄｅｔｅｒｍｉｎｉｎｇ）」は幅広い多様なアクションを包含する。例えば、「決定する」には、計算する、コンピューティング、処理する、引き出す、調査する、調べる（例えば、表、データベース、または別のデータ構造を調べる）、確認するなどを含みうる。さらに、「決定する」には、受信する（例えば、情報を受信する）、アクセスする（例えば、メモリのデータにアクセスする）などを含みうる。さらに、「決定する」には、解決する、選択する、選ぶ、確立するなどを含みうる。
【０１７９】
[0178]本明細書で使用されているように、項目のリストの「少なくとも１つ（ａｔ  ｌｅａｓｔ  ｏｎｅ  ｏｆ）」を指すフレーズは、単一の要素を含む、当該項目のいずれかの組み合わせを指す。一例として、「ａ、ｂ、またはｃの少なくとも１つ」は、ａ、ｂ、ｃ、ａ−ｂ、ａ−ｃ、ｂ−ｃ、ａ−ｂ−ｃをカバーすることが意図されている。
【０１８０】
[0179]本開示に関連して記述された種々の例示的論理ブロック、モジュール、および回路は、汎用目的プロセッサー、デジタル信号プロセッサー（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールド・プログラマブル・ゲート・アレイ信号（ＦＰＧＡ）または他のプログラム可能な論理デバイス（ＰＬＤ）、ディスクリート・ゲートまたはトランジスター・ゲート、ディスクリート・ハードウェア・コンポーネント、あるいは本明細書に記述された機能を行うために設計されたいずれかのこれらの組み合わせを使って実装または実行されうる。汎用目的プロセッサーはマイクロプロセッサーとしうるが、代替として、プロセッサーは市販されている任意のプロセッサー、コントローラー、マイクロコントローラー、または状態マシンとしうる。プロセッサーはさらに、例えば、ＤＳＰとマイクロプロセッサーの組み合わせ、複数のマイクロプロセッサー、ＤＳＰコアと併用する１または複数のマイクロプロセッサー、またはいずれか他のこのような構成などのコンピューティング・デバイスの組み合わせとして実装されうる。
【０１８１】
[0180]本開示に関連して記述された方法またはアルゴリズムの各ステップは、ハードウェア、プロセッサーによって実行されるソフトウェア・モジュール、または２つの組み合わせに直接、具現化されうる。ソフトウェア・モジュールは当技術分野で知られている記憶媒体のいずれかの形で存在しうる。使用されうる記憶媒体の一部の例には、ランダム・アクセス・メモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、フラッシュ・メモリ、ＥＰＲＯＭメモリ、ＥＥＰＲＯＭメモリ、レジスタ、ハード・ディスク、リムーバブル・ディスク、ＣＤ−ＲＯＭなどを含んでいる。ソフトウェア・モジュールは単一の命令、または多くの命令を備えうるもので、様々なプログラム、および複数の記憶媒体全体のいくつかの異なるコード・セグメントに分配されうる。記憶媒体は、プロセッサーが、記憶媒体からの情報の読み取りおよび情報の書き込みを行うことができるようなプロセッサーと結合されうる。代替として、記憶媒体はプロセッサーに内蔵することができる。
【０１８２】
[0181]本明細書で開示された方法には、上述の方法を達成するための１または複数のステップまたはアクションを備えている。方法ステップおよび／またはアクションは、請求項の範囲を逸脱することなく、相互に入れ替えられうる。言い換えれば、ステップまたはアクションの特定の順序が指定されていない限り、特定のステップおよび／またはアクションの順序および／または使用は、請求項の範囲を逸脱することなく、変更されうる。
【０１８３】
[0182]記述された機能は、ハードウェア、ソフトウェア、ファームウェア、またはこれらの任意の組み合わせで実装されうる。ハードウェアに実装される場合、ハードウェアの構成例はデバイスに処理システムを備えうる。処理システムは、バス・アーキテクチャを伴い実装されうる。バスは、処理システムの特定の適用および全体的な設計制約に応じて、任意の数の相互接続バスおよびブリッジを含めうる。バスは、プロセッサー、マシン読取可能な媒体、およびバス・インターフェイスを含む、種々の回路を共にリンクしうる。バス・インターフェイスは、とりわけ、ネットワーク・アダプターを、バスを介して処理システムに接続するために使用されうる。ネットワーク・アダプターは、信号処理機能を実装するために使用されうる。特定の態様では、ユーザ・インターフェイス（キーパッド、ディスプレイ、マウス、ジョイスティックなど）もバスに接続されうる。バスはさらに、タイミング・ソース、周辺機器、電圧調整器、電源管理回路などの他の種々回路もリンクしうるが、これらは当業者によく知られているので、これ以上は記述されない。
【０１８４】
[0183]プロセッサーは、マシン読取可能な媒体に保存されたソフトウェアの実行を含む、バスおよび汎用処理を管理する役割がありうる。プロセッサーは、１または複数の汎用目的および／または特殊目的プロセッサーを伴い実装されうる。例には、マイクロプロセッサー、マイクロコントローラー、ＤＳＰプロセッサー、およびソフトウェアを実行できる他の回路を含んでいる。ソフトウェアは、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語、または別の方法で呼ばれるかどうかに関係なく、命令、データ、またはこれらのいずれかの組み合わせを意味するものとして幅広く解釈されるべきである。マシン読取可能な媒体には、例示的に、ＲＡＭ（ランダム・アクセス・メモリ）、フラッシュ・メモリ、ＲＯＭ（読み取り専用メモリ）、ＰＲＯＭ（プログラマブル読み取り専用メモリ）、ＥＰＲＯＭ（消去可能プログラマブル読み取り専用メモリ）、ＥＥＰＲＯＭ（電気的消去可能プログラマブル読み取り専用メモリ）、レジスタ、磁気ディスク、光ディスク、ハード・ドライブ、または他のいずれかの適した記憶媒体、あるいはこれらの組み合わせを含みうる。マシン読取可能な媒体は、コンピュータ・プログラム製品に組み込みうる。コンピュータ・プログラム製品は包装材料を含みうる。
【０１８５】
[0184]ハードウェアの実装では、マシン読取可能な媒体はプロセッサーとは別個の処理システムの一部としうる。しかしながら、当業者ならばすぐに認識するように、マシン読取可能な媒体、またはこのいずれかの部分は処理システムの外部にありうる。例示的な方法で、マシン読取可能な媒体には、伝送回線、データによって変調された搬送波、および／またはデバイスとは別個のコンピュータ製品を含みうるもので、これらすべては、バス・インターフェイスを通じてプロセッサーからアクセスされうる。代替として、または加えて、マシン読取可能な媒体、またはこのいずれかの部分は、プロセッサーに組み込まれうるもので、このような場合は、キャッシュおよび／または汎用レジスタ・ファイルを伴いうる。
【０１８６】
[0185]処理システムは、プロセッサー機能を提供する１または複数のマイクロプロセッサー並びにマシン読取可能な媒体の少なくとも一部を提供する外部メモリを伴う汎用目的処理システムとして構成しうるもので、すべては、外部バス・アーキテクチャを通して他のサポート回路と共にリンクされている。代替として、処理システムは、プロセッサー、バス・インターフェイス、ユーザ・インターフェイス、サポート回路、およびシングル・チップに組み込まれたマシン読取可能な媒体の少なくとも一部を伴うＡＳＩＣ（特定用途向け集積回路）、あるいは１または複数のＦＰＧＡ（フィールド・プログラマブル・ゲート・アレイ）、ＰＬＤ（プログラマブル・ロジック・デバイス）、コントローラー、状態マシン、ゲート・ロジック、ディスクリート・ハードウェア・コンポーネント、または他のいずれかの適した回路、あるいはこの開示全体で記述された種々の機能を行える回路のいずれかの組み合わせで実装されうる。当業者ならば、特定の用途およびシステム全体に課された全体の設計制約に応じて、処理システムのための記述された機能を実装するための最善の方法を認識されるであろう。
【０１８７】
[0186]マシン読取可能な媒体はいくつかのソフトウェア・モジュールを備えうる。ソフトウェア・モジュールは、プロセッサーによる実行時に、処理システムが種々の機能を行えるような命令を含んでいる。ソフトウェア・モジュールは伝送モジュールおよび受信モジュールを含みうる。各ソフトウェア・モジュールは、単一の記憶装置または複数の記憶装置全体に分散されたものに存在しうる。例示的な方法で、ソフトウェア・モジュールは、トリガするイベントが起きる時、ハード・ドライブからＲＡＭへ読み込まれうる。ソフトウェア・モジュールの実行中、プロセッサーは、アクセス速度を増大するために、一部の命令をキャッシュに読み込みうる。次に、１または複数のキャッシュ・ラインがプロセッサーによる実行のために汎用レジスタ・ファイルに読み込まれうる。以下のソフトウェア・モジュールの機能を参照すると、このような機能は、当該ソフトウェア・モジュールからの命令の実行時に、プロセッサーによって実装されると理解されたい。
【０１８８】
[0187]ソフトウェアで実装されるのであれば、これら機能は、コンピュータ読取可能な媒体におけるコードまたは１または複数の命令群で送信されるか保存されうる。コンピュータ読取可能な媒体は、１つの場所から別へコンピュータ・プログラムの転送を容易にするいずれかの媒体を含む、コンピュータ記憶媒体と通信媒体の両方を含む。記憶媒体は、コンピュータからアクセスされうるいずれかの利用可能な媒体としうる。限定するわけではなく、例示的な方法で、このようなコンピュータ読取可能な媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭ、またはその他の光ディスク記憶装置、磁気ディスク記憶装置、またはその他の磁気記憶デバイス、あるいは命令群またはデータ構造の形式でかつコンピュータによってアクセスされうる所望のプログラム・コードを搬送または格納するために使用されうる他のいずれかの媒体を備えうる。さらに、いかなる接続も、コンピュータ読取可能な媒体として適切に称される。例えば、同軸ケーブル、光ファイバ・ケーブル、対より線・ペア、デジタル加入者線（ＤＳＬ）、または、例えば赤外線や無線やマイクロ波のような無線技術を用いて、ウェブサイト、サーバ、またはその他の遠隔ソースからソフトウェアが送信されるのであれば、同軸ケーブル、光ファイバ・ケーブル、対より線、ＤＳＬ、あるいは、赤外線（ＩＲ）や無線やマイクロ波のような無線技術が、媒体の定義に含まれる。本明細書で使用されるディスク（ｄｉｓｋおよびｄｉｓｃ）は、コンパクト・ディスク（ｄｉｓｃ）（ＣＤ）、レーザーディスク（登録商標）（ｄｉｓｃ）、光ディスク（ｄｉｓｃ）、デジタル多用途ディスク（ｄｉｓｃ）（ＤＶＤ）、フロッピー（登録商標）ディスク（ｄｉｓｋ）、およびＢｌｕ−ｒａｙ（登録商標）ディスク（ｄｉｓｃ）を含む。これらｄｉｓｃは、レーザーを用いてデータを光学的に再生する。それに対して、ｄｉｓｋは、通常、データを磁気的に再生する。したがって一部の態様では、コンピュータ読取可能な媒体は、非一時的コンピュータ読取可能な媒体（例えば、有形的表現媒体）を備えうる。加えて他の態様では、コンピュータ読取可能な媒体は、非一時的コンピュータ読取可能な媒体（例えば、信号）を備えうる。上記の組み合わせもまた、コンピュータ読取可能な媒体の範囲内に含まれるべきである。
【０１８９】
[0188]したがって、特定の態様では、本明細書で提示されたオペレーションを行うためのコンピュータ・プログラム製品を備えうる。例えば、このようなコンピュータ・プログラム製品は、当該箇所に保存（および／またはコード化）された命令を有するコンピュータ読取可能な媒体を備えうるもので、命令は本明細書で記述されたオペレーションを行うために１または複数のプロセッサーによって実行可能である。特定の態様では、コンピュータ・プログラム製品は包装材料を含みうる。
【０１９０】
[0189]さらに、本明細書で記述された方法および技術を行うためのモジュールおよび／または他の適切な手段は、ダウンロードおよび／または別の適用可能なデバイスによって取得されうることを認識されたい。例えば、このようなデバイスは、本明細書で記述された方法を行うための手段の転送を容易にするサーバに結合されうる。代替として、本明細書で記述された種々方法は、記憶手段（例えば、ＲＡＭ、ＲＯＭ、コンパクト・ディスク（ＣＤ）、フロッピー（登録商標）ディスクなどの物理記憶媒体など）を介して提供されうるもので、デバイスは記憶手段をデバイスに結合または提供する際に、種々の手段を取得できる。さらに、本明細書で記述された方法および技術をデバイスに提供するための他のいずれかの適した技術が活用されうる。
【０１９１】
[0190]請求項は、上部で例示された正確な構成およびコンポーネントに限定されるわけではないことを理解されたい。種々の修正形態、変更形態、および変化形態は、請求項の範囲を逸脱することなく、上述の方法および装置の配列、オペレーション（operation）、および詳細で行われうる。
以下に本願発明の当初の特許請求の範囲に記載された発明を付記する。
［Ｃ１］
ニューラル・ネットワークのための方法であって、
イベントの単一レベル、順序付きリストと比較し、前記イベントのより高速な処理のためのマルチレベル・スキームを使用してニューラル・ネットワークにおける複数のノードに関する複数の前記イベントをスケジュールすることと、
前記スケジュールされた複数のイベントを実行することと、
を備える方法。
［Ｃ２］
前記スケジュールされた複数のイベントを実行することは、
前記スケジュールされた複数のイベントにおける次のイベントを見つけることと、
前記次のイベントに基づき、前記次のイベントに関連付けられたノードの状態を前進させること、ここにおいて、前記ノードは前記複数のノードの１つである、と、
あるのであれば、前記ノードに関する出力イベントが、前記ノードの前記前進した状態に基づきいつ起きると予期されるか決定することと、
を備える、Ｃ１に記載の方法。
［Ｃ３］
前記決定に基づき前記ノードに関する前記出力イベントを再スケジュールすること、ここにおいて前記再スケジュールは前記マルチレベル・スキームの使用を備える、をさらに備えるＣ２に記載の方法。
［Ｃ４］
前記スケジュールされた複数のイベントを実行することが前記スケジュールされた複数のイベントにおける次のイベントを見つけることを備え、前記次のイベントを見つけることは、
前記マルチレベル・スキームにおける複数のレベルのそれぞれで最も早いイベントを決定するために前記複数のレベルをトラバースすることと、
前記レベルのトラバースの後に前記次のイベントを前記すべてのイベントの最も早いものと決定することと、
を備える、Ｃ１に記載の方法。
［Ｃ５］
前記マルチレベル・スキームの第１のレベルは前記複数のノードのインデックス付け可能リストを備える、Ｃ１に記載の方法。
［Ｃ６］
前記マルチレベル・スキームの第２のレベルが、前記複数のノードの各ノードに関して、前記ノードの同時未決定のイベントのスケジュールを備える、Ｃ５に記載の方法。
［Ｃ７］
前記第１のレベルでノードをアドレス指定することによって、前記複数のノードにおける前記ノードに関する前記同時未決定のイベントの前記スケジュールを決定することを備える、Ｃ６に記載の方法。
［Ｃ８］
前記ノードに関する前記同時未決定のイベントの前記スケジュールは、前記同時未決定のイベントの最も早いものが最初にスケジュールされるように、少なくとも部分的にソートされる、Ｃ６に記載の方法。
［Ｃ９］
前記同時未決定のイベントの前記スケジュールは、多くても、前記ノードに関する１つのみの出力イベントを備える、Ｃ６に記載の方法。
［Ｃ１０］
前記複数のノードを１または複数のユニットに編成することをさらに備える、Ｃ６に記載の方法。
［Ｃ１１］
前記編成は、前記ユニットの間の第１の結合遅延が前記ユニット内の第２の結合遅延より長いように、結合遅延に基づき前記複数のノードを前記ユニットに編成することを備える、Ｃ１０に記載の方法。
［Ｃ１２］
第３のレベルの前記マルチレベル・スキームが、前記ユニットのそれぞれに関して、前記ユニットにおける前記ノードのそれぞれからの前記同時未決定のイベントの最も早いものを備える、Ｃ１０に記載の方法。
［Ｃ１３］
第４のレベルの前記マルチレベル・スキームが、前記ユニットのそれぞれから前記同時未決定のイベントの最も早いものに基づく編成を備える、Ｃ１２に記載の方法。
［Ｃ１４］
前記編成は、バイナリ・ツリーを備え、そして前記バイナリ・ツリーのルートがすべての前記スケジュールされた複数のイベントから最も早いイベントを備える、Ｃ１３に記載の方法。
［Ｃ１５］
前記第３のレベルの前記マルチレベル・スキームにおいて、前記ユニットのそれぞれに関して、前記ユニットにおける前記ノードのそれぞれからの前記同時未決定のイベントの前記最も早いものはリンクされたリストとして編成され、第５のレベルの前記マルチレベル・スキームは、前記ユニットのそれぞれに関して、前記リンクされたリストを参照するベクトルを備える、Ｃ１３に記載の方法。
［Ｃ１６］
前記スケジュールされた複数のイベントの再スケジュールをさらに備え、ここにおいて、前記再スケジュールは、
前記スケジュールされた複数のイベントからの挿入または削除のための所望のエントリに最も近い前記リンクされたリストにおける１または複数のエントリを見つけるために前記ベクトルを使用することと、
見つけられた前記最も近い１または複数のエントリに基づき前記所望のエントリの位置を見つけるために前記リンクされたリストを使用することと、
を備える、Ｃ１５に記載の方法。
［Ｃ１７］
前記複数のノードは複数のニューロンまたは複数のシナプスの少なくとも１つを備える、Ｃ１に記載の方法。
［Ｃ１８］
ニューラル・ネットワークのための装置であって、
処理システムが、
イベントの単一レベル、順序付きリストと比較し、前記イベントのより高速な処理のためのマルチレベル・スキームを使用してニューラル・ネットワークにおける複数のノードに関する複数の前記イベントをスケジュールすることと、
前記スケジュールされた複数のイベントを実行することと、
を行うように構成された処理システムを備える装置。
［Ｃ１９］
前記処理システムは、
前記スケジュールされた複数のイベントにおける次のイベントを見つけることと、
前記次のイベントに基づき、前記次のイベントに関連付けられたノードの状態を前進させること、ここにおいて前記ノードは前記複数のノードの１つである、と、
あるのであれば、前記ノードに関する出力イベントが、前記ノードの前記前進した状態に基づきいつ起きると予期されるか決定することと、
によって前記スケジュールされた複数のイベントを実行するように構成されている、Ｃ１８に記載の装置。
［Ｃ２０］
前記処理システムは、前記決定に基づき前記ノードに関する前記出力イベントを再スケジュールするようにさらに構成され、ここにおいて前記再スケジュールは前記マルチレベル・スキームの使用を備える、Ｃ１９に記載の装置。
［Ｃ２１］
前記処理システムは、前記スケジュールされた複数のイベントにおける次のイベントを見つけることによって、前記スケジュールされた複数のイベントを実行するように構成され、前記次のイベントを見つけることは、
前記マルチレベル・レベルにおける複数のレベルのそれぞれで最も早いイベントを決定するために前記複数のレベルをトラバースすることと、
前記レベルのトラバースの後に前記次のイベントをすべての前記イベントの最も早いものと決定することと、
を備える、Ｃ１８に記載の装置。
［Ｃ２２］
前記マルチレベル・スキームの第１のレベルは前記複数のノードのインデックス付け可能リストを備える、Ｃ１８に記載の装置。
［Ｃ２３］
前記マルチレベル・スキームの第２のレベルが、前記複数のノードの各ノードに関して、前記ノードの同時未決定のイベントのスケジュールを備える、Ｃ２２に記載の装置。
［Ｃ２４］
前記処理システムはさらに、前記第１のレベルでノードをアドレス指定することによって、前記複数のノードにおける前記ノードに関する前記同時未決定のイベントの前記スケジュールを決定するように構成された、Ｃ２３に記載の装置。
［Ｃ２５］
前記ノードに関する前記同時未決定のイベントの前記スケジュールは、前記同時未決定のイベントの最も早いものが最初にスケジュールされるように、少なくとも部分的にソートされる、Ｃ２３に記載の装置。
［Ｃ２６］
前記同時未決定のイベントの前記スケジュールは、多くても、前記ノードに関する１つのみの出力イベントを備える、Ｃ２３に記載の装置。
［Ｃ２７］
前記処理システムはさらに、前記複数のノードを１または複数のユニットに編成するように構成された、Ｃ２３に記載の装置。
［Ｃ２８］
前記処理システムは、前記ユニットの間の第１の結合遅延が前記ユニット内の第２の結合遅延より長いように、結合遅延に基づき前記複数のノードを前記ユニットに編成するように構成された、Ｃ２７に記載の装置。
［Ｃ２９］
第３のレベルの前記マルチレベル・スキームが、前記ユニットのそれぞれに関して、前記ユニットにおける前記ノードのそれぞれからの前記同時未決定のイベントの最も早いものを備える、Ｃ２７に記載の装置。
［Ｃ３０］
第４のレベルの前記マルチレベル・スキームが、前記ユニットのそれぞれから前記同時未決定のイベントの最も早いものに基づく編成を備える、Ｃ２９に記載の装置。
［Ｃ３１］
前記編成は、バイナリ・ツリーを備え、そして前記バイナリ・ツリーのルートがすべての前記スケジュールされた複数のイベントから最も早いイベントを備える、Ｃ３０に記載の装置。
［Ｃ３２］
前記第３のレベルの前記マルチレベル・スキームにおいて、前記ユニットのそれぞれに関して、前記ユニットにおける前記ノードのそれぞれからの前記同時未決定のイベントの前記最も早いものはリンクされたリストとして編成され、第５のレベルの前記マルチレベル・スキームは、前記ユニットのそれぞれに関して、前記リンクされたリストを参照するベクトルを備える、Ｃ３０に記載の装置。
［Ｃ３３］
前記処理システムはさらに、
前記スケジュールされた複数のイベントからの挿入または削除のための所望のエントリに最も近い前記リンクされたリストにおける１または複数のエントリを見つけるために前記ベクトルを使用することと、
見つけられた前記最も近い１または複数のエントリに基づき前記所望のエントリの位置を見つけるために前記リンクされたリストを使用することと、
によって前記スケジュールされた複数のイベントを再スケジュールするように構成された、Ｃ３２に記載の装置。
［Ｃ３４］
前記複数のノードは複数のニューロンまたは複数のシナプスの少なくとも１つを備える、Ｃ１８に記載の装置。
［Ｃ３５］
ニューラル・ネットワークのための装置であって、
イベントの単一レベル、順序付きリストと比較し、前記イベントのより高速な処理のためのマルチレベル・スキームを使用してニューラル・ネットワークにおける複数のノードに関する複数の前記イベントをスケジュールするための手段と、
前記スケジュールされた複数のイベントを実行するための手段と、
を備える装置。
［Ｃ３６］
前記スケジュールされた複数のイベントを実行するための前記手段は、
前記スケジュールされた複数のイベントにおける次のイベントを見つけることと、
前記次のイベントに基づき、前記次のイベントに関連付けられたノードの状態を前進させること、ここにおいて前記ノードは前記複数のノードの１つである、と、
あるのであれば、前記ノードに関する出力イベントが、前記ノードの前記前進した状態に基づきいつ起きると予期されるか決定することとを行うように構成された、Ｃ３５に記載の装置。
［Ｃ３７］
前記決定に基づき前記ノードに関する前記出力イベントを再スケジュールするための手段、ここにおいて前記再スケジュールのための前記手段は前記マルチレベル・スキームを使用するように構成される、をさらに備えるＣ３６に記載の装置。
［Ｃ３８］
前記スケジュールされた複数のイベントを実行するための前記手段は、
前記マルチレベル・レベルにおける複数のレベルのそれぞれで最も早いイベントを決定するために前記複数のレベルをトラバースすることと、
前記レベルのトラバースの後に前記次のイベントをすべての前記イベントの最も早いものと決定することと、
によって、前記スケジュールされた複数のイベントにおける次のイベントを見つけるように構成された、Ｃ３５に記載の装置。
［Ｃ３９］
前記マルチレベル・スキームの第１のレベルは前記複数のノードのインデックス付け可能リストを備える、Ｃ３５に記載の装置。
［Ｃ４０］
前記マルチレベル・スキームの第２のレベルが、前記複数のノードの各ノードに関して、前記ノードの同時未決定のイベントのスケジュールを備える、Ｃ３９に記載の装置。
［Ｃ４１］
前記第１のレベルでノードをアドレス指定することによって、前記複数のノードにおける前記ノードに関する前記同時未決定のイベントの前記スケジュールを決定するための手段をさらに備える、Ｃ４０に記載の装置。
［Ｃ４２］
前記ノードに関する前記同時未決定のイベントの前記スケジュールは、前記同時未決定のイベントの最も早いものが最初にスケジュールされるように、少なくとも部分的にソートされる、Ｃ４０に記載の装置。
［Ｃ４３］
前記同時未決定のイベントの前記スケジュールは、多くても、前記ノードに関する１つのみの出力イベントを備える、Ｃ４０に記載の装置。
［Ｃ４４］
前記複数のノードを１または複数のユニットに編成するための手段をさらに備える、Ｃ４０に記載の装置。
［Ｃ４５］
編成のための前記手段は、前記ユニットの間の第１の結合遅延が前記ユニット内の第２の結合遅延より長いように、結合遅延に基づき前記複数のノードを前記ユニットに編成するように構成された、Ｃ４４に記載の装置。
［Ｃ４６］
第３のレベルの前記マルチレベル・スキームが、前記ユニットのそれぞれに関して、前記ユニットにおける前記ノードのそれぞれからの前記同時未決定のイベントの最も早いものを備える、Ｃ４４に記載の装置。
［Ｃ４７］
第４のレベルの前記マルチレベル・スキームが、前記ユニットのそれぞれからの前記同時未決定のイベントの最も早いものに基づく編成を備える、Ｃ４６に記載の装置。
［Ｃ４８］
前記編成は、バイナリ・ツリーを備え、そして前記バイナリ・ツリーのルートがすべての前記スケジュールされた複数のイベントから最も早いイベントを備える、Ｃ４７に記載の装置。
［Ｃ４９］
前記第３のレベルの前記マルチレベル・スキームにおいて、前記ユニットのそれぞれに関して、前記ユニットにおける前記ノードのそれぞれからの前記同時未決定のイベントの前記最も早いものはリンクされたリストとして編成され、第５のレベルの前記マルチレベル・スキームは、前記ユニットのそれぞれに関して、前記リンクされたリストを参照するベクトルを備える、Ｃ４７に記載の装置。
［Ｃ５０］
前記スケジュールされた複数のイベントからの挿入または削除のための所望のエントリに最も近い前記リンクされたリストにおける１または複数のエントリを見つけるために前記ベクトルを使用することと、
見つけられた前記最も近い１または複数のエントリに基づき前記所望のエントリの位置を見つけるために前記リンクされたリストを使用することと、
によって前記スケジュールされた複数のイベントを再スケジュールするための手段をさらに備える、Ｃ４９に記載の装置。
［Ｃ５１］
前記複数のノードは複数のニューロンまたは複数のシナプスの少なくとも１つを備える、Ｃ３５に記載の装置。
［Ｃ５２］
ニューラル・ネットワークのためのコンピュータ・プログラム製品であって、
イベントの単一レベル、順序付きリストと比較し、前記イベントのより高速な処理のためのマルチレベル・スキームを使用してニューラル・ネットワークにおける複数のノードに関する複数の前記イベントをスケジュールすることと、
前記スケジュールされた複数のイベントを実行することと、
を行うための命令を備えるコンピュータ読取可能な媒体を備えるコンピュータ・プログラム製品。
［Ｃ５３］
前記スケジュールされた複数のイベントを実行することは、
前記スケジュールされた複数のイベントにおける次のイベントを見つけることと、
前記次のイベントに基づき、前記次のイベントに関連付けられたノードの状態を前進させること、ここにおいて前記ノードは前記複数のノードの１つである、と、
あるのであれば、前記ノードに関する出力イベントが、前記ノードの前記前進した状態に基づきいつ起きると予期されるか決定することと、
を備える、Ｃ５２に記載のコンピュータ・プログラム製品。
［Ｃ５４］
前記マルチレベル・スキームの使用によって前記決定に基づき前記ノードに関する前記出力イベントを再スケジュールするために実行可能な命令をさらに備える、Ｃ５３に記載のコンピュータ・プログラム製品。
［Ｃ５５］
前記スケジュールされた複数のイベントを実行することが前記スケジュールされた複数のイベントにおける次のイベントを見つけることを備え、前記次のイベントを見つけることは、
前記マルチレベル・レベルにおける複数のレベルのそれぞれで最も早いイベントを決定するために前記複数のレベルをトラバースすることと、
前記レベルのトラバースの後に前記次のイベントをすべての前記イベントの最も早いものと決定することと、
を備える、Ｃ５２に記載のコンピュータ・プログラム製品。
［Ｃ５６］
前記マルチレベル・スキームの第１のレベルは前記複数のノードのインデックス付け可能リストを備える、Ｃ５２に記載のコンピュータ・プログラム製品。
［Ｃ５７］
前記マルチレベル・スキームの第２のレベルが、前記複数のノードの各ノードに関して、前記ノードの同時未決定のイベントのスケジュールを備える、Ｃ５６に記載のコンピュータ・プログラム製品。
［Ｃ５８］
前記第１のレベルでノードをアドレス指定することによって、前記複数のノードにおける前記ノードに関する前記同時未決定のイベントの前記スケジュールを決定するために実行可能な命令をさらに備える、Ｃ５７に記載のコンピュータ・プログラム製品。
［Ｃ５９］
前記ノードに関する前記同時未決定のイベントの前記スケジュールは、前記同時未決定のイベントの最も早いものが最初にスケジュールされるように、少なくとも部分的にソートされる、Ｃ５７に記載のコンピュータ・プログラム製品。
［Ｃ６０］
前記同時未決定のイベントの前記スケジュールは、多くても、前記ノードに関する１つのみの出力イベントを備える、Ｃ５７に記載のコンピュータ・プログラム製品。
［Ｃ６１］
前記複数のノードを１または複数のユニットに編成するために実行可能な命令をさらに備える、Ｃ５７に記載のコンピュータ・プログラム製品。
［Ｃ６２］
前記編成は、前記ユニットの間の第１の結合遅延が前記ユニット内の第２の結合遅延より長いように、結合遅延に基づき前記複数のノードを前記ユニットに編成することを備える、Ｃ６１に記載のコンピュータ・プログラム製品。
［Ｃ６３］
第３のレベルの前記マルチレベル・スキームが、前記ユニットのそれぞれに関して、前記ユニットにおける前記ノードのそれぞれからの前記同時未決定のイベントの最も早いものを備える、Ｃ６１に記載のコンピュータ・プログラム製品。
［Ｃ６４］
第４のレベルの前記マルチレベル・スキームが、前記ユニットのそれぞれからの前記同時未決定のイベントの最も早いものに基づく編成を備える、Ｃ６３に記載のコンピュータ・プログラム製品。
［Ｃ６５］
前記編成は、バイナリ・ツリーを備え、そして前記バイナリ・ツリーのルートがすべての前記スケジュールされた複数のイベントからの最も早いイベントを備える、Ｃ６４に記載のコンピュータ・プログラム製品。
［Ｃ６６］
前記第３のレベルの前記マルチレベル・スキームにおいて、前記ユニットのそれぞれに関して、前記ユニットにおける前記ノードのそれぞれからの前記同時未決定のイベントの前記最も早いものはリンクされたリストとして編成され、第５のレベルの前記マルチレベル・スキームは、前記ユニットのそれぞれに関して、前記リンクされたリストを参照するベクトルを備える、Ｃ６４に記載のコンピュータ・プログラム製品。
［Ｃ６７］
前記スケジュールされた複数のイベントからの挿入または削除のための所望のエントリに最も近い前記リンクされたリストにおける１または複数のエントリを見つけるために前記ベクトルを使用することと、
見つけられた前記最も近い１または複数のエントリに基づき前記所望のエントリの位置を見つけるために前記リンクされたリストを使用することと、
によって前記スケジュールされた複数のイベントを再スケジュールするために実行可能な命令をさらに備える、Ｃ６６に記載のコンピュータ・プログラム製品。
［Ｃ６８］
前記複数のノードは複数のニューロンまたは複数のシナプスの少なくとも１つを備える、Ｃ５２に記載のコンピュータ・プログラム製品。
［Ｃ６９］
ニューラル・ネットワークのための方法であって、
ニューラル・ネットワークの第１のノードで第１の入力イベントを受信することと、
前記受信した第１の入力イベントに基づき前記第１のノードの状態を前進させることと、
あるのであれば、前記第１のノードに関する第１の出力イベントが、前記第１のノードの前記前進した状態に基づきいつ起きると予期されか決定することと、
を備える方法。
［Ｃ７０］
前記第１のノードの前記状態は、前記第１のノードの膜電位および回復電流によって定義される、Ｃ６９に記載の方法。
［Ｃ７１］
前記前進させることは、
前記第１のノードの前記状態を調整するために前記受信された第１の入力イベントを処理することと、
前記受信された第１の入力イベントの時間へ先回りすることと、
を備えるＣ６９に記載の方法。
［Ｃ７２］
前記第１のノードはポストシナプス・ニューロンを備え、そして前記第１の入力イベントの受信は第２のノードからの第２の出力イベントの受信を備える、Ｃ６９に記載の方法。
［Ｃ７３］
前記第２のノードは遅延を有するシナプスを備え、そして前記前進させることは、
前記第１のノードの前記状態を調整するために前記受信された第１の入力イベントを処理することと、
前記受信された第１の入力イベントの時間プラス前記遅延へ先回りすることと、
を備えるＣ７２に記載の方法。
［Ｃ７４］
前記第２のノードはゼロではない遅延を伴うシナプスを介して前記ポストシナプス・ニューロンと接続されたプレシナプス・ニューロンを備え、そして前記遅延は前記シナプスの第３の出力イベントがスケジュールされないように無視される、Ｃ７２に記載の方法。
［Ｃ７５］
前記第２のノードは、シナプスの第３の出力イベントがスケジュールされないように、ゼロ遅延を伴う前記シナプスを介して前記ポストシナプス・ニューロンと接続されたプレシナプス・ニューロンを備える、Ｃ７２に記載の方法。
［Ｃ７６］
前記第２のノードは第１の遅延を伴うシナプスを介して前記ポストシナプス・ニューロンと接続されたプレシナプス・ニューロンを備え、そして前記第１の遅延の少なくとも一部が前記シナプスの第３の出力イベントが第２の遅延でスケジュールされるように無視される、Ｃ７２に記載の方法。
［Ｃ７７］
前記決定は、前記第１のノードの前記状態が前進された後に行われる、Ｃ６９に記載の方法。
［Ｃ７８］
前記決定を遅らせることをさらに備える、Ｃ６９に記載の方法。
［Ｃ７９］
前記第１のノードで第２の入力イベントを受信すること、ここにおいて前記第２の入力イベントは前記第１の入力イベントに続き、前記遅らされた決定の前に起きる、と、
前記受信した第１の入力イベントに基づき前記第１のノードの前記状態を前進させた後であって、前記遅らされた決定の前に、前記受信した第２の入力イベントに基づき前記第１のノードの前記状態を前進させることと、
をさらに備えるＣ７８に記載の方法。
［Ｃ８０］
前記受信した第１および第２の入力イベントに基づき前記第１のノードの前記状態を前進させることは、
前記受信した第１の入力イベントに基づき前記第１のノードの前記状態を前進させることとおよび前記受信した第２の入力イベントに基づき前記第１のノードの前記状態を前進させることとを列に並べることと、
前記遅らされた決定の時間に前記列に並べられた前進を実行することと、
を備えるＣ７９に記載の方法。
［Ｃ８１］
前記前進の前に前記受信した第１の入力イベントを保存することと、
前記第１のノードで第２の入力イベントを受信すること、ここにおいて前記第２の入力イベントは前記第１の入力イベントに続いて起き、ここにおいて前記前進させることは、前記受信した第１の入力イベントおよび前記受信した第２の入力イベントを共に処理することを備えることと、
をさらに備えるＣ６９に記載の方法。
［Ｃ８２］
前記決定に従って前記第１のノードから前記第１の出力イベントを出力することと、
第２のノードへの第２の入力イベントとして前記第１の出力イベントを受信することと、
前記受信した第２の入力イベントに基づき前記第２のノードの状態を前進させることと、
あるのであれば、前記第２のノードに関する第２の出力イベントが、前記第２のノードの前記前進した状態に基づきいつ起きると予期されるか決定することと、
をさらに備えるＣ６９に記載の方法。
［Ｃ８３］
前記第１のノードはシナプスを備え、そして前記決定は前記第１の出力イベントは決して起きないことを示す、Ｃ６９に記載の方法。
［Ｃ８４］
決して起きない前記第１の出力イベントに基づき前記シナプスの前記状態を前進させること、ここにおいて前記シナプスの前記状態を前進させることは、決して起きない前記第１の出力イベントの時間として現在の時間を使用することを備える、をさらに備える、Ｃ８３に記載の方法。
［Ｃ８５］
前記第１の入力イベントは前記第１のノードに関する人為的なイベントを備える、Ｃ６９に記載の方法。
［Ｃ８６］
前記人為的なイベントが定期的に起きるようにスケジュールすることをさらに備える、Ｃ８５に記載の方法。
［Ｃ８７］
前記第１のノードに関するイベントなしで一定の時間量が経過する場合、前記人為的なイベントが起きるようにスケジュールすることをさらに備える、Ｃ８５に記載の方法。
［Ｃ８８］
各入力または出力イベントの発生後の遅延の後に、前記遅延内に入力または出力イベントが起きない場合、前記人為的なイベントが起きるように、前記人為的なイベントが起きるようにスケジュールすることをさらに備える、Ｃ８５に記載の方法。
［Ｃ８９］
前記人為的なイベントが発生した後の別の遅延を伴う別の人為的なイベントが起きるようにスケジュールすることをさらに備える、Ｃ８８に記載の方法。
［Ｃ９０］
ニューラル・ネットワークのための装置であって、
処理システムが、
ニューラル・ネットワークの第１のノードで第１の入力イベントを受信することと、
前記受信した第１の入力イベントに基づき前記第１のノードの状態を前進させることと、
あるのであれば、前記第１のノードに関する第１の出力イベントが、前記第１のノードの前記前進した状態に基づきいつ起きると予期されるかを決定することと、
を行うように構成された処理システムを備える装置。
［Ｃ９１］
前記第１のノードの前記状態は、前記第１のノードの膜電位および回復電流によって定義される、Ｃ９０に記載の装置。
［Ｃ９２］
前記処理システムは、
前記第１のノードの前記状態を調整するために前記受信された第１の入力イベントを処理することと、
前記受信された第１の入力イベントの時間へ先回りすることと、
によって前記第１のノードの前記状態を前進させるように構成された、Ｃ９０に記載の装置。
［Ｃ９３］
前記第１のノードはポストシナプス・ニューロンを備え、そして前記処理システムは、第２のノードからの第２の出力イベントの受信によって前記第１の入力イベントを受信するように構成された、Ｃ９０に記載の装置。
［Ｃ９４］
前記第２のノードは遅延を有するシナプスを備え、そして前記処理システムは、
前記第１のノードの前記状態を調整するために前記受信された第１の入力イベントを処理することと、
前記受信された第１の入力イベントの時間プラス前記遅延へ先回りすることと、
によって前記第１のノードの前記状態を前進させるように構成された、Ｃ９３に記載の装置。
［Ｃ９５］
前記第２のノードはゼロではない遅延を伴うシナプスを介して前記ポストシナプス・ニューロンと接続されたプレシナプス・ニューロンを備え、そして前記遅延は前記シナプスの第３の出力イベントがスケジュールされないように無視される、Ｃ９３に記載の装置。
［Ｃ９６］
前記第２のノードは、シナプスの第３の出力イベントがスケジュールされないように、ゼロ遅延を伴う前記シナプスを介して前記ポストシナプス・ニューロンと接続されたプレシナプス・ニューロンを備える、Ｃ９３に記載の装置。
［Ｃ９７］
前記第２のノードは第１の遅延を伴うシナプスを介して前記ポストシナプス・ニューロンと接続されたプレシナプス・ニューロンを備え、そして前記第１の遅延の少なくとも一部が前記シナプスの第３の出力イベントが第２の遅延でスケジュールされるように無視される、Ｃ９３に記載の装置。
［Ｃ９８］
前記決定は、前記第１のノードの前記状態が前進された後にそのたびに行われる、Ｃ９０に記載の装置。
［Ｃ９９］
前記決定を遅らせることをさらに備える、Ｃ９０に記載の装置。
［Ｃ１００］
前記処理システムはさらに、
前記第１のノードで第２の入力イベントを受信すること、ここにおいて前記第２の入力イベントは前記第１の入力イベントに続き、前記遅らされた決定の前に起きる、と、
前記受信した第１の入力イベントに基づき前記第１のノードの前記状態を前進させた後であって、前記遅らされた決定の前に、前記受信した第２の入力イベントに基づき前記第１のノードの前記状態を前進させることと
を行うように構成されたＣ９９に記載の装置。
［Ｃ１０１］
前記処理システムは、
前記受信した第１の入力イベントに基づき前記第１のノードの前記状態を前進させることおよび前記受信した第２の入力イベントに基づき前記第１のノードの前記状態を前進させることを列に並べることと、
前記遅らされた決定の時間に前記列に並べられた前進を実行することと、
によって前記受信した第１および第２の入力イベントに基づき前記第１のノードの前記状態を前進させるように構成された、Ｃ１００に記載の装置。
［Ｃ１０２］
前記処理システムはさらに、
前記前進の前に前記受信した第１の入力イベントを保存することと、
前記第１のノードで第２の入力イベントを受信すること、ここにおいて前記第２の入力イベントは前記第１の入力イベントに続いて起き、ここにおいて前記前進させることは前記受信した第１の入力イベントおよび前記受信した第２の入力イベントを共に処理することを備える、と、
を行うように構成された、Ｃ９０に記載の装置。
［Ｃ１０３］
前記処理システムはさらに、
前記決定に従って前記第１のノードから前記第１の出力イベントを出力することと、
第２のノードへの第２の入力イベントとして前記第１の出力イベントを受信することと、
前記受信した第２の入力イベントに基づき前記第２のノードの状態を前進させることと、
あるのであれば、前記第２のノードに関する第２の出力イベントが、前記第２のノードの前記前進した状態に基づいていつ起きると予期されるかを決定することとを行うように構成された、Ｃ９０に記載の装置。
［Ｃ１０４］
前記第１のノードはシナプスを備え、そして前記決定は前記第１の出力イベントは決して起きないことを示す、Ｃ９０に記載の装置。
［Ｃ１０５］
前記処理システムはさらに、決して起きない前記第１の出力イベントに基づき前記シナプスの前記状態を前進させるようにさらに構成され、ここにおいて前記処理システムは、決して起きない前記第１の出力イベントの時間として現在の時間を使用することによって前記シナプスの前記状態を前進させるように構成される、、Ｃ１０４に記載の装置。
［Ｃ１０６］
前記第１の入力イベントは前記第１のノードに関する人為的なイベントを備える、Ｃ９０に記載の装置。
［Ｃ１０７］
前記処理システムはさらに、前記人為的なイベントが定期的に起きるようにスケジュールするように構成された、Ｃ１０６に記載の装置。
［Ｃ１０８］
前記処理システムはさらに、前記第１のノードに関するイベントなしで一定の時間量が経過する場合、前記人為的なイベントが起きるようにスケジュールするように構成された、Ｃ１０６に記載の装置。
［Ｃ１０９］
前記処理システムはさらに、各入力または出力イベントの発生後の遅延の後に、前記遅延内に入力または出力イベントが起きない場合、前記人為的なイベントが起きるように、前記人為的なイベントが起きるようにスケジュールするように構成された、Ｃ１０６に記載の装置。
［Ｃ１１０］
前記処理システムはさらに、前記人為的なイベントが発生した後の別の遅延を伴う別の人為的なイベントが起きるようにスケジュールするように構成された、Ｃ１０９に記載の装置。
［Ｃ１１１］
ニューラル・ネットワークのための装置であって、
ニューラル・ネットワークの第１のノードで第１の入力イベントを受信するための手段と、
前記受信した第１の入力イベントに基づき前記第１のノードの状態を前進させるための手段と、
あるのであれば、前記第１のノードの第１の出力イベントが、前記第１のノードの前記前進した状態に基づきいつ起きると予期されるかを決定するための手段とを備える装置。
［Ｃ１１２］
前記第１のノードの前記状態は、前記第１のノードの膜電位および回復電流によって定義される、Ｃ１１１に記載の装置。
［Ｃ１１３］
前進のための前記手段は、
前記第１のノードの前記状態を調整するために前記受信された第１の入力イベントを処理することと、
前記受信された第１の入力イベントの時間へ先回りすることと、
を行うように構成された、Ｃ１１１に記載の装置。
［Ｃ１１４］
前記第１のノードはポストシナプス・ニューロンを備え、そして前記第１の入力イベントを受信するための前記手段は第２のノードからの第２の出力イベントを受信するように構成された、Ｃ１１１に記載の装置。
［Ｃ１１５］
前記第２のノードは遅延を有するシナプスを備え、そして前進のための手段は、
前記第１のノードの前記状態を調整するために前記受信された第１の入力イベントを処理することと、
前記受信された第１の入力イベントの時間プラス前記遅延へ先回りすることとを行うように構成された、Ｃ１１４に記載の装置。
［Ｃ１１６］
前記第２のノードはゼロではない遅延を伴うシナプスを介して前記ポストシナプス・ニューロンと接続されたプレシナプス・ニューロンを備え、そしてここにおいて前記遅延は前記シナプスの第３の出力イベントがスケジュールされないように無視される、Ｃ１１４に記載の装置。
［Ｃ１１７］
前記第２のノードは、シナプスの第３の出力イベントがスケジュールされないように、ゼロ遅延を伴う前記シナプスを介して前記ポストシナプス・ニューロンと接続されたプレシナプス・ニューロンを備える、Ｃ１１４に記載の装置。
［Ｃ１１８］
前記第２のノードは第１の遅延を伴うシナプスを介して前記ポストシナプス・ニューロンと接続されたプレシナプス・ニューロンを備え、そして前記第１の遅延の少なくとも一部が前記シナプスの第３の出力イベントが第２の遅延でスケジュールされるように無視される、Ｃ１１４に記載の装置。
［Ｃ１１９］
前記決定は、前記第１のノードの前記状態が前進された後に行われる、Ｃ１１１に記載の装置。
［Ｃ１２０］
前記決定を遅らせるための手段をさらに備える、Ｃ１１１に記載の装置。
［Ｃ１２１］
前記第１のノードで第２の入力イベントを受信する手段、ここにおいて前記第２の入力イベント、前記第１の入力イベントに続いて、前記遅らされた決定の前に起きる、と、
前記受信した第１の入力イベントに基づき前記第１のノードの前記状態を前進させた後であって、前記遅らされた決定の前に、前記受信した第２の入力イベントに基づき前記第１のノードの前記状態を前進させるための手段と、
をさらに備えるＣ１２０に記載の装置。
［Ｃ１２２］
前記受信した第１および第２の入力イベントに基づき前記第１のノードの前記状態を前進させるための手段は、
前記受信した第１の入力イベントに基づき前記第１のノードの前記状態を前進させることとおよび前記受信した第２の入力イベントに基づき前記第１のノードの前記状態を前進させることとを列に並べることと、
前記遅らされた決定の時間に前記列に並べられた前進を実行すること、
を行うように構成された、Ｃ１２１に記載の装置。
［Ｃ１２３］
前記前進させることの前に前記受信した第１の入力イベントを保存するための手段と、
前記第１のノードで第２の入力イベントを受信する手段、ここにおいて前記第２の入力イベントは前記第１の入力イベントに続いて起き、ここにおいて前記前進させることは、前記受信した第１の入力イベントおよび前記受信した第２の入力イベントを共に処理する、と、
をさらに備えるＣ１１１に記載の装置。
［Ｃ１２４］
前記決定に従って前記第１のノードから前記第１の出力イベントを出力するための手段と、
第２のノードへの第２の入力イベントとして前記第１の出力イベントを受信するための手段と、
前記受信した第２の入力イベントに基づき前記第２のノードの状態を前進させるための手段と、
あるのであれば、前記第２のノードに関する第２の出力イベントが、前記第２のノードの前記前進した状態に基づきいつ起きると予期されるか決定するための手段と、
をさらに備えるＣ１１１に記載の装置。
［Ｃ１２５］
前記第１のノードはシナプスを備え、そして前記決定は前記第１の出力イベントは決して起きないことを示す、Ｃ１１１に記載の装置。
［Ｃ１２６］
決して起きない前記第１の出力イベントに基づき前記シナプスの前記状態を前進させるための手段、ここにおいて前記シナプスの前記状態を前進させるための手段は決して起きない前記第１の出力イベントの時間として現在の時間を使用するように構成される、をさらに備えるＣ１２５に記載の装置。
［Ｃ１２７］
前記第１の入力イベントは前記第１のノードに関する人為的なイベントを備える、Ｃ１１１に記載の装置。
［Ｃ１２８］
前記人為的なイベントが定期的に起きるようにスケジュールするための手段をさらに備える、Ｃ１２７に記載の装置。
［Ｃ１２９］
前記第１のノードに関するイベントなしで一定の時間量が経過する場合、前記人為的なイベントが起きるようにスケジュールするための手段をさらに備える、Ｃ１２７に記載の装置。
［Ｃ１３０］
各入力または出力イベントの発生後の遅延の後に、前記遅延内に入力または出力イベントが起きない場合、前記人為的なイベントが起きるように、前記人為的なイベントが起きるようにスケジュールするための手段をさらに備える、Ｃ１２７に記載の装置。
［Ｃ１３１］
前記スケジュールするための前記手段は、前記人為的なイベントが発生した後の別の遅延を伴う別の人為的なイベントが起きるようにスケジュールするように構成された、Ｃ１３０に記載の装置。
［Ｃ１３２］
ニューラル・ネットワークのためのコンピュータ・プログラム製品であって、
ニューラル・ネットワークの第１のノードで第１の入力イベントを受信することと、
前記受信した第１の入力イベントに基づき前記第１のノードの状態を前進させることと、
あるのであれば、前記第１のノードの第１の出力イベントが、前記第１のノードの前記前進した状態に基づきいつ起きると予期されるかを決定することと、
を行うために実行可能な命令を備えるコンピュータ読取可能な媒体を備える、コンピュータ・プログラム製品。
［Ｃ１３３］
前記第１のノードの前記状態は、前記第１のノードの膜電位および回復電流によって定義される、Ｃ１３２に記載のコンピュータ・プログラム製品。
［Ｃ１３４］
前記前進させることは、
前記第１のノードの前記状態を調整するために前記受信された第１の入力イベントを処理することと、
前記受信された第１の入力イベントの時間へ先回りすることと、
を備えるＣ１３２に記載のコンピュータ・プログラム製品。
［Ｃ１３５］
前記第１のノードはポストシナプス・ニューロンを備え、そして前記第１の入力イベントの受信は第２のノードからの第２の出力イベントの受信を備える、Ｃ１３２に記載のコンピュータ・プログラム製品。
［Ｃ１３６］
前記第２のノードは遅延を有するシナプスを備え、そして前記前進させることは、
前記第１のノードの前記状態を調整するために前記受信された第１の入力イベントを処理することと、
前記受信された第１の入力イベントの時間プラス前記遅延へ先回りすることと、
を備えるＣ１３５に記載のコンピュータ・プログラム製品。
［Ｃ１３７］
前記第２のノードはゼロではない遅延を伴うシナプスを介して前記ポストシナプス・ニューロンと接続されたプレシナプス・ニューロンを備え、そしてここにおいて前記遅延は前記シナプスの第３の出力イベントがスケジュールされないように無視される、Ｃ１３５に記載のコンピュータ・プログラム製品。
［Ｃ１３８］
前記第２のノードは、シナプスの第３の出力イベントがスケジュールされないように、ゼロ遅延を伴う前記シナプスを介して前記ポストシナプス・ニューロンと接続されたプレシナプス・ニューロンを備える、Ｃ１３５に記載のコンピュータ・プログラム製品。
［Ｃ１３９］
前記第２のノードは第１の遅延を伴うシナプスを介して前記ポストシナプス・ニューロンと接続されたプレシナプス・ニューロンを備え、そして前記第１の遅延の少なくとも一部が前記シナプスの第３の出力イベントが第２の遅延でスケジュールされるように無視される、Ｃ１３５に記載のコンピュータ・プログラム製品。
［Ｃ１４０］
前記決定は、前記第１のノードの前記状態が前進された後にそのたびに行われる、Ｃ１３２に記載のコンピュータ・プログラム製品。
［Ｃ１４１］
前記決定を遅らせるために実行可能な命令をさらに備える、Ｃ１３２に記載のコンピュータ・プログラム製品。
［Ｃ１４２］
前記第１のノードで第２の入力イベントを受信すること、ここにおいて前記第２の入力イベントは前記第１の入力イベントに続き、前記遅らされた決定の前に起きる、と、
前記受信した第１の入力イベントに基づき前記第１のノードの前記状態を前進させた後であって、前記遅らされた決定の前に、前記受信した第２の入力イベントに基づき前記第１のノードの前記状態を前進させることと、
を行うために実行可能な命令をさらに備えるＣ１４１に記載のコンピュータ・プログラム製品。
［Ｃ１４３］
前記受信した第１および第２の入力イベントに基づき前記第１のノードの前記状態を前進させることは、
前記受信した第１の入力イベントに基づき前記第１のノードの前記状態を前進させることとおよび前記受信した第２の入力イベントに基づき前記第１のノードの前記状態を前進させることとを列に並べることと、
前記遅らされた決定の時間に前記列に並べられた前進を実行することと、
を備えるＣ１４２に記載のコンピュータ・プログラム製品。
［Ｃ１４４］
前記前進の前に前記受信した第１の入力イベントを保存することと、
前記第１のノードで第２の入力イベントを受信すること、ここにおいて前記第２の入力イベントは前記第１の入力イベントに続いて起き、ここにおいて前記前進させることは、前記受信した第１の入力イベントおよび前記受信した第２の入力イベントを共に処理することを備える、と、
を行うために実行可能な命令をさらに備えるＣ１３２に記載のコンピュータ・プログラム製品。
［Ｃ１４５］
前記決定に従って前記第１のノードから前記第１の出力イベントを出力することと、
第２のノードへの第２の入力イベントとして前記第１の出力イベントを受信することと、
前記受信した第２の入力イベントに基づき前記第２のノードの状態を前進させることと、
あるのであれば、前記第２のノードに関する第２の出力イベントが、前記第２のノードの前記前進した状態に基づきいつ起きると予期されるか決定することと、
を行うために実行可能な命令をさらに備えるＣ１３２に記載のコンピュータ・プログラム製品。
［Ｃ１４６］
前記第１のノードはシナプスを備え、そして前記決定は前記第１の出力イベントは決して起きないことを示す、Ｃ１３２に記載のコンピュータ・プログラム製品。
［Ｃ１４７］
決して起きない前記第１の出力イベントに基づき前記シナプスの前記状態を前進させる、ここにおいて前記シナプスの前記状態を前進させることは、決して起きない前記第１の出力イベントの時間として現在の時間を使用することを備える、ために実行可能な命令をさらに備える、Ｃ１４６に記載のコンピュータ・プログラム製品。
［Ｃ１４８］
前記第１の入力イベントは前記第１のノードに関する人為的なイベントを備える、Ｃ１３２に記載のコンピュータ・プログラム製品。
［Ｃ１４９］
前記人為的なイベントが定期的に起きるようにスケジュールするために実行可能な命令をさらに備える、Ｃ１４８に記載のコンピュータ・プログラム製品。
［Ｃ１５０］
前記第１のノードに関するイベントなしで一定の時間量が経過する場合、前記人為的なイベントが起きるようにスケジュールするために実行可能な命令をさらに備える、Ｃ１４８に記載のコンピュータ・プログラム製品。
［Ｃ１５１］
各入力または出力イベントの発生後の遅延の後に、前記遅延内に入力または出力イベントが起きない場合、前記人為的なイベントが起きるように、前記人為的なイベントが起きるようにスケジュールするために実行可能な命令をさらに備える、Ｃ１４８に記載のコンピュータ・プログラム製品。
［Ｃ１５２］
前記人為的なイベントが発生した後の別の遅延を伴う別の人為的なイベントが起きるようにスケジュールするために実行可能な命令をさらに備える、Ｃ１５１に記載のコンピュータ・プログラム製品。
［Ｃ１５３］
ニューラル・ネットワークのための方法であって、
ニューラル・ネットワークにおける複数のノードに関するイベントのリストを参照するベクトルを生成し、前記リストは最も早いイベントから最も遅いイベントに一時的に順序付けされていることと、
前記リストをトラバースすることなく、前記ベクトルを使用してターゲットに最も近い１または複数のイベントを前記リストにおいて見つけることと、
を備える方法。
［Ｃ１５４］
前記リストは、前記最も早いイベントから前記最も遅いイベントに配列された、前記複数のノードにおける各ノードに関する最も早いイベントを備える、Ｃ１５３に記載の方法。
［Ｃ１５５］
前記ベクトルの前記ｉｔｈエントリは前記リストの前記ｉｔｈエントリを参照する、Ｃ１５３に記載の方法。
［Ｃ１５６］
前記リストはリンクされたリストを備え、そして前記ベクトルはポインタで前記リンクされたリストのエントリに実装される、Ｃ１５３に記載の方法。
［Ｃ１５７］
前記ベクトルを使用することが前記ベクトルのインデックス付きバイナリ検索を行うことを備える、Ｃ１５３に記載の方法。
［Ｃ１５８］
前記ベクトルを使用することが前記ベクトルにおける時間エントリに基づき内挿または外挿を行うことを備える、Ｃ１５３に記載の方法。
［Ｃ１５９］
前記ターゲットで前記リストからイベントを削除すること、または前記リストに前記ターゲットに最も近い前記１または複数のイベントの間にイベントを挿入することと、
削除された、または挿入されたイベントに基づいて前記ベクトルを更新することと、
をさらに備えるＣ１５３に記載の方法。
［Ｃ１６０］
前記削除されたイベントに基づいて前記ベクトルを更新することは、前記リストの前記削除されたイベントの前のまたは後に続くエントリを参照することを備える、Ｃ１５９に記載の方法。
［Ｃ１６１］
しきい値が満たされる場合、前記ベクトルを再生成することをさらに備える、Ｃ１６０に記載の方法。
［Ｃ１６２］
前記しきい値を動的に調整することをさらに備える、Ｃ１６１に記載の方法。
［Ｃ１６３］
前記しきい値は、前記ターゲットのためのいくつかの検索、前記ベクトルへのいくつかの更新、前記リストからのいくつかの削除、前記最も近い１または複数のイベントを見つけた後の前記リストの検索のコスト、あるいは前記リストから削除されたイベントに対応する仮想ベクトルのエントリを除去することによって形成され、前記生成されたベクトルをミラーリングする前記仮想ベクトルのスパース性を備える、Ｃ１６１に記載の方法。
［Ｃ１６４］
ニューラル・ネットワークのための装置であって、
処理システムは、
ニューラル・ネットワークにおける複数のノードに関するイベントのリストを参照するベクトルを生成すること、ここにおいて前記リストは最も早いイベントから最も遅いイベントに一時的に順序付けされる、と、
前記リストをトラバースすることなく、前記ベクトルを使用するターゲットに最も近い１または複数のイベントを前記リストにおいて見つけることと、
を行うように構成された装置。
［Ｃ１６５］
前記リストは、前記最も早いイベントから前記最も遅いイベントに配列された、前記複数のノードの各ノードに関する最も早いイベントを備える、Ｃ１６４に記載の装置。
［Ｃ１６６］
前記ベクトルの前記ｉｔｈエントリは前記リストの前記ｉｔｈエントリを参照する、Ｃ１６４に記載の装置。
［Ｃ１６７］
前記リストはリンクされたリストを備え、そして前記ベクトルはポインタで前記リンクされたリストのエントリに実装される、Ｃ１６４に記載の装置。
［Ｃ１６８］
前記ベクトルを使用することが前記ベクトルのインデックス付きバイナリ検索を行うことを備える、Ｃ１６４に記載の装置。
［Ｃ１６９］
前記ベクトルを使用することが前記ベクトルにおける時間エントリに基づき内挿または外挿を行うことを備える、Ｃ１６４に記載の装置。
［Ｃ１７０］
前記処理システムはさらに、
前記ターゲットで前記リストからイベントを削除すること、または前記リストに前記ターゲットに最も近い前記１または複数のイベントの間にイベントを挿入することと、
削除された、または挿入されたイベントに基づいて前記ベクトルを更新することと、
を行うように構成された、Ｃ１６４に記載の装置。
［Ｃ１７１］
前記処理システムは、前記リストの前記削除されたイベントの前のまたは後に続くエントリを参照することによって前記削除されたイベントに基づき前記ベクトルを更新するように構成された、Ｃ１７０に記載の装置。
［Ｃ１７２］
前記処理システムはさらに、しきい値が満たされる場合、前記ベクトルを再生成するように構成された、Ｃ１７１に記載の装置。
［Ｃ１７３］
前記処理システムはさらに、前記しきい値を動的に調整するように構成された、Ｃ１７２に記載の装置。
［Ｃ１７４］
前記しきい値は、前記ターゲットのためのいくつかの検索、前記ベクトルへのいくつかの更新、前記リストからのいくつかの削除、前記最も近い１または複数のイベントを見つけた後の前記リストの検索のコスト、あるいは前記リストから削除されたイベントに対応する仮想ベクトルのエントリを除去することによって形成され、前記生成されたベクトルをミラーリングする前記仮想ベクトルのスパース性を備える、Ｃ１７２に記載の装置。
［Ｃ１７５］
ニューラル・ネットワークのための装置であって、
ニューラル・ネットワークにおける複数のノードに関するイベントのリストを参照するベクトルを生成する手段、ここにおいて前記リストは最も早いイベントから最も遅いイベントに一時的に順序付けされる、と、
前記リストをトラバースすることなく、前記ベクトルを使用するターゲットに最も近い１または複数のイベントを前記リストにおいて見つけるための手段と、
を備える装置。
［Ｃ１７６］
前記リストは、前記最も早いイベントから前記最も遅いイベントに配列された、前記複数のノードの各ノードに関する最も早いイベントを備える、Ｃ１７５に記載の装置。
［Ｃ１７７］
前記ベクトルの前記ｉｔｈエントリは前記リストの前記ｉｔｈエントリを参照する、Ｃ１７５に記載の装置。
［Ｃ１７８］
前記リストはリンクされたリストを備え、そして前記ベクトルはポインタで前記リンクされたリストのエントリに実装される、Ｃ１７５に記載の装置。
［Ｃ１７９］
前記ベクトルを使用することが前記ベクトルのインデックス付きバイナリ検索を行うことを備える、Ｃ１７５に記載の装置。
［Ｃ１８０］
前記ベクトルを使用することが前記ベクトルにおける時間エントリに基づき内挿または外挿を行うことを備える、Ｃ１７５に記載の装置。
［Ｃ１８１］
前記ターゲットで前記リストからイベントを削除すること、または前記リストに前記ターゲットに最も近い前記１または複数のイベントの間にイベントを挿入するための手段と、
削除された、または挿入されたイベントに基づいて前記ベクトルを更新するための手段と、
をさらに備えるＣ１７５に記載の装置。
［Ｃ１８２］
前記削除されたイベントに基づき前記ベクトルを更新するための手段は、前記リストの前記削除されたイベントの前のまたは後に続くエントリを参照するように構成された、Ｃ１８１に記載の装置。
［Ｃ１８３］
しきい値が満たされる場合、前記ベクトルを再生成するための手段をさらに備える、Ｃ１８２に記載の装置。
［Ｃ１８４］
前記しきい値を動的に調整するための手段をさらに備える、Ｃ１８３に記載の装置。
［Ｃ１８５］
前記しきい値は、前記ターゲットのためのいくつかの検索、前記ベクトルへのいくつかの更新、前記リストからのいくつかの削除、前記最も近い１または複数のイベントを見つけた後の前記リストの検索のコスト、あるいは前記リストから削除されたイベントに対応する仮想ベクトルのエントリを除去することによって形成され、前記生成されたベクトルをミラーリングする前記仮想ベクトルのスパース性を備える、Ｃ１８３に記載の装置。
［Ｃ１８６］
ニューラル・ネットワークのためのコンピュータ・プログラム製品であって、
ニューラル・ネットワークにおける複数のノードに関するイベントのリストを参照するベクトルを生成こと、ここにおいて前記リストは最も早いイベントから最も遅いイベントに一時的に順序付けされている、と、
前記リストをトラバースすることなく、前記ベクトルを使用するターゲットに最も近い１または複数のイベントを前記リストにおいて見つけることと、
を行うために実行可能な命令を備えるコンピュータ読取可能な媒体を備えるニューラルネットワークのためのコンピュータ・プログラム製品。
［Ｃ１８７］
前記リストは、前記最も早いイベントから前記最も遅いイベントに配列された、前記複数のノードの各ノードに関する最も早いイベントを備える、Ｃ１８６に記載のコンピュータ・プログラム製品。
［Ｃ１８８］
前記ベクトルの前記ｉｔｈエントリは前記リストの前記ｉｔｈエントリを参照する、Ｃ１８６に記載のコンピュータ・プログラム製品。
［Ｃ１８９］
前記リストはリンクされたリストを備え、そして前記ベクトルはポインタで前記リンクされたリストのエントリに実装される、Ｃ１８６に記載のコンピュータ・プログラム製品。
［Ｃ１９０］
前記ベクトルを使用することが前記ベクトルのインデックス付きバイナリ検索を行うことを備える、Ｃ１８６に記載のコンピュータ・プログラム製品。
［Ｃ１９１］
前記ベクトルを使用することが前記ベクトルにおける時間エントリに基づき内挿または外挿を行うことを備える、Ｃ１８６に記載のコンピュータ・プログラム製品。
［Ｃ１９２］
前記ターゲットで前記リストからイベントを削除すること、または前記リストに前記ターゲットに最も近い前記１または複数のイベントの間にイベントを挿入することと、
削除された、または挿入されたイベントに基づいて前記ベクトルを更新することと、
を行うために実行可能な命令をさらに備えるＣ１８６に記載のコンピュータ・プログラム製品。
［Ｃ１９３］
前記削除されたイベントに基づく前記ベクトルの更新は、前記リストの前記削除されたイベントの前のまたは後に続くエントリを参照することを備える、Ｃ１９２に記載のコンピュータ・プログラム製品。
［Ｃ１９４］
しきい値が満たされる場合、前記ベクトルを再生成するために実行可能な命令をさらに備える、Ｃ１９３に記載のコンピュータ・プログラム製品。
［Ｃ１９５］
前記しきい値を動的に調整するために実行可能な命令をさらに備える、Ｃ１９４に記載のコンピュータ・プログラム製品。
［Ｃ１９６］
前記しきい値は、前記ターゲットのためのいくつかの検索、前記ベクトルへのいくつかの更新、前記リストからのいくつかの削除、前記最も近い１または複数のイベントを見つけた後の前記リストの検索のコスト、あるいは前記リストから削除されたイベントに対応する仮想ベクトルのエントリを除去することによって形成され、前記生成されたベクトルをミラーリングする前記仮想ベクトルのスパース性を備える、Ｃ１９４に記載のコンピュータ・プログラム製品。
【図１】
0005934439.tif 000003
【図２】
0005934439.tif 000004
【図３】
0005934439.tif 000005
【図４】
0005934439.tif 000006
【図５】
0005934439.tif 000007
【図６】
0005934439.tif 000008
【図７】
0005934439.tif 000009
【図８】
0005934439.tif 000010
【図９】
0005934439.tif 000011
【図１０】
0005934439.tif 000012
【図１１】
0005934439.tif 000013
【図１２】
0005934439.tif 000014
【図１３】
0005934439.tif 000015
【図１４】
0005934439.tif 000016
【図１５】
0005934439.tif 000017
【図１６】
0005934439.tif 000018
【図１７】
0005934439.tif 000019
【図１８】
0005934439.tif 000020
【図１９】
0005934439.tif 000021
【図２０】
0005934439.tif 000022
【図２１】
0005934439.tif 000023
【図２２】
0005934439.tif 000024
【図２３】
0005934439.tif 000025
【図２４】
0005934439.tif 000026
【図２５】
0005934439.tif 000027
【図２６】
0005934439.tif 000028
【図２６Ａ】
0005934439.tif 000029
【図２７】
0005934439.tif 000030
【図２７Ａ】
0005934439.tif 000031
【図２８】
0005934439.tif 000032
【図２８Ａ】
0005934439.tif 000033