(57)【要約】【課題】ニューロモーフィック・システムにおける重み付きポピュレーション・コードが提供される。【解決手段】１つの実施形態によれば、複数の入力値が受信される。複数の値のそれぞれに対して、複数のスパイクが生成される。複数のスパイクのそれぞれは、関連付けられた重みを有する。複数のスパイクのそれぞれに関して消費時間が決定される。複数のスパイクのそれぞれは、その消費時間に消費のために送信される。【選択図】図１
2017126332.tif 000002
【特許請求の範囲】
【請求項１】
複数の入力値を受信するステップと、
前記複数の値のそれぞれに対して、複数のスパイクを生成するステップであって、前記複数のスパイクのそれぞれは、関連付けられた重みを有する、前記ステップと、
前記複数のスパイクのそれぞれのための消費時間を決定するステップと、
前記複数のスパイクのそれぞれをその消費時間に消費のために送信するステップと
を備える、方法。
【請求項２】
前記関連付けられた重みのそれぞれは、重みの予め決定されたセットから選択される、請求項１に記載の方法。
【請求項３】
前記複数のスパイクのそれぞれのための前記消費時間は、消費時間の予め決定されたセットから選択される、請求項１に記載の方法。
【請求項４】
前記複数のスパイクのそれぞれを送信するステップは、その消費時間に対応する遅延命令を送信するステップを備える、請求項１に記載の方法。
【請求項５】
前記複数の入力値の範囲に基づいて重みの前記セットを決定するステップ
をさらに備える、請求項２に記載の方法。
【請求項６】
重みの前記セットは、前記複数のスパイクの基数を最小化するように決定される、請求項５に記載の方法。
【請求項７】
重みの前記セットは、前記複数の値のそれらに関して予め決定された範囲内で前記複数のスパイクの基数を最小化するように決定される、請求項５に記載の方法。
【請求項８】
前記複数のスパイクの前記消費時間は、予め決定されたセットアップ期間内にある、請求項１に記載の方法。
【請求項９】
第１のニューロモーフィック・システムで第１の複数のスパイクを受信するステップであって、前記第１の複数のスパイクは、第１のエンコーディングに従って第１の値をエンコードする、前記ステップと、
前記第１の複数のスパイクから第２の複数のスパイクを生成するステップであって、前記第２の複数のスパイクは、第２のエンコーディングに従って前記第１の値をエンコードする、前記ステップと、
前記第２の複数のスパイクを第２のニューロモーフィック・システムへ供給するステップと
を備える、方法。
【請求項１０】
前記第１のニューロモーフィック・システムで複数の遅延を受信するステップであって、前記複数の遅延のそれぞれは、前記第１の複数のスパイクのうちの１つと関連付けられた、前記ステップと、
前記第１の複数のスパイクのそれぞれをその関連付けられた遅延によって遅延させるステップと
をさらに備える、請求項９に記載の方法。
【請求項１１】
前記第１の複数のスパイクを受信するステップは、
前記第１の複数のスパイクの第１のサブセットを第１の時間ウィンドウの間に受信するステップと、
前記第１の複数のスパイクの第２のサブセットを第２の時間ウィンドウの間に受信するステップと
を備える、請求項９に記載の方法。
【請求項１２】
前記第１のエンコーディングは、重みを前記第１の複数のスパイクのそれぞれと関連付ける、請求項９に記載の方法。
【請求項１３】
前記第２の複数のスパイクを生成するステップは、
前記第１のエンコーディングの前記重みを前記第１の複数のスパイクに適用するステップ
を備える、請求項１２に記載の方法。
【請求項１４】
前記第１の複数のスパイクのそれぞれは、予め決定された数の時間ウィンドウのうちの１つで受信される、請求項９に記載の方法。
【請求項１５】
前記複数のスパイクのそれぞれは、離散値を表す、請求項９に記載の方法。
【請求項１６】
前記複数のスパイクのそれぞれは、連続値を表す、請求項９に記載の方法。
【請求項１７】
前記第２の複数のスパイクを生成するステップは、
前記第１のエンコーディングの前記重みおよび前記第１の複数のスパイクからある１つの確率を決定するステップ
を備える、請求項１２に記載の方法。
【請求項１８】
出力を前記第２のニューロモーフィック・システムへ供給するステップと、それと同時に、前記第１のニューロモーフィック・システムで第３の複数のスパイクを受信するステップであって、前記第３の複数のスパイクは、前記第１のエンコーディングに従って第２の値をエンコードする、前記ステップと
をさらに備える、請求項９に記載の方法。
【請求項１９】
前記第１のニューロモーフィック・システムで第３の複数のスパイクを受信するステップであって、前記第３の複数のスパイクは、前記第１のエンコーディングに従って第２の値と前記第１の値との差をエンコードする、前記ステップと、
前記第３の複数のスパイクから第４の複数のスパイクを生成するステップであって、前記第４の複数のスパイクは、前記第２のエンコーディングに従って前記第２の値をエンコードする、前記ステップと、
前記第４の複数のスパイクを前記第２のニューロモーフィック・システムへ供給するステップと
をさらに備える、請求項９に記載の方法。
【請求項２０】
前記第２のニューロモーフィック・システムは、分類器を備える、請求項９に記載の方法。
【請求項２１】
ある１つのニューロモーフィック・システムで第１の複数のスパイクを受信するステップであって、前記第１の複数のスパイクは、第１のエンコーディングに従って第１の値をエンコードする、前記ステップと、
前記第１の複数のスパイクからスパイクの複数のセットを生成するステップであって、スパイクの前記複数のセットのそれぞれは、第２のエンコーディングに従って前記第１の値をエンコードする、前記ステップと、
スパイクの前記複数のセットのそれぞれを前記ニューロモーフィック・システムにおける複数の分類器のうちの１つへ供給するステップと
を備える、方法。
【請求項２２】
複数の入力軸索、およびそれらに接続された複数の確率的ニューロンを備えるあるひとつのニューロモーフィック・ネットワークと、
前記複数の入力軸索に作動的に結合されたエンコーダであって、前記エンコーダは、前記入力軸索へ第１の複数のスパイクを送信するように構成され、前記第１の複数のスパイクは、第１のエンコーディングに従って第１の値をエンコードし、前記ニューロモーフィック・ネットワークは、前記第１の複数のスパイクから第２の複数のスパイクを生成するように構成され、前記第２の複数のスパイクは、第２のエンコーディングに従って前記第１の値をエンコードする、前記エンコーダと
を備える、システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コア・ベース・ニューロモーフィック・システムにおける確率的(stochastic)スパイク・パターンの効率的な生成に関し、より具体的には、重み付きポピュレーション・コード(weighted populationcode)・ニューロモーフィック・システムの使用に関する。
【背景技術】
【０００２】
デジタル・スパイキング・ニューロモーフィック・システムにおいては、情報は、スパイクによって表現かつ配信され、各スパイクが１つ以上のビットを運ぶ情報のデジタル・パケットである。例えば、ＩＢＭ（Ｒ）ＴｒｕｅＮｏｒｔｈチップは、各スパイクが情報の単一ビット（バイナリ・スパイク）を運ぶデジタル・スパイキング・ニューロモーフィック・システムである。ＴｒｕｅＮｏｒｔｈのようなスパイキング・ニューラルネットワークは、情報のパケットを交換通信線を介して配信することに基づき、それによって必要な配線を著しく削減する。ある１つのスパイクの存在が１を受信することとして取り扱われ、その欠如が０を表す。いくつかの異なるスパイク・コーディング・スキーマを用いて、より多くの値をバイナリ・スパイクにコード化することができる。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
ニューロモーフィック・システムにおける重み付きポピュレーション・コードが提供される。
【課題を解決するための手段】
【０００４】
本発明のある１つの実施形態によれば、確率的スパイク・パターンの生成の方法および生成のためのコンピュータ・プログラムが提供される。複数の入力値が受信される。複数の値のそれぞれに対して、複数のスパイクが生成される。複数のスパイクのそれぞれは、関連付けられた重みを有する。複数のスパイクのそれぞれに対して、消費時間が決定される。複数のスパイクのそれぞれは、その消費時間に消費のために送信される。
【０００５】
本発明の別の実施形態によれば、確率的スパイク・パターンの生成の方法および生成のためのコンピュータ・プログラムが提供される。第１の複数のスパイクが第１のニューロモーフィック・システムで受信される。第１の複数のスパイクは、第１のエンコーディングに従って第１の値をエンコードする。第２の複数のスパイクが第１の複数のスパイクから生成される。第２の複数のスパイクは、第２のエンコーディングに従って第１の値をエンコードする。第２の複数のスパイクは、第２のニューロモーフィック・システムへ供給される。
【０００６】
本発明の別の実施形態によれば、確率的スパイク・パターンの生成の方法および生成のためのコンピュータ・プログラムが提供される。第１の複数のスパイクがある１つのニューロモーフィック・システムで受信される。第１の複数のスパイクは、第１のエンコーディングに従って第１の値をエンコードする。スパイクの複数のセットが第１の複数のスパイクから生成される。スパイクの複数のセットのそれぞれは、第２のエンコーディングに従って第１の値をエンコードする。スパイクの複数のセットのそれぞれは、このニューロモーフィック・システムにおける複数の分類器のうちの１つへ供給される。
【０００７】
本発明の別の実施形態によれば、確率的スパイク・パターンの生成のためのシステムが提供される。ある１つのニューロモーフィック・ネットワークが提供される。このニューロモーフィック・ネットワークは、複数の入力軸索(input axon)およびそれらに接続された複数の確率的ニューロンを含む。ある１つのエンコーダが複数の入力軸索に作動的に結合される。この画像エンコーダは、入力軸索へ第１の複数のスパイクを送信するように構成される。第１の複数のスパイクは、第１のエンコーディングに従って第１の値をエンコードする。このニューロモーフィック・ネットワークは、第１の複数のスパイクから第２の複数のスパイクを生成するように構成される。第２の複数のスパイクは、第２のエンコーディングに従って第１の値をエンコードする。
【図面の簡単な説明】
【０００８】
【図１】本開示の実施形態による例示的なアンサンブル分類器を図示する。
【図２】本開示の実施形態による別のアンサンブル分類器を図示する。
【図３】本開示の実施形態による例示的なシステム処理サイクルを示す。
【図４】本開示の実施形態による別の例示的なシステム処理サイクルを示す。
【図５】本開示の実施形態による例示的なクロスバーを図示する。
【図６】本開示の実施形態によるニューロモーフィック・システムの例示的な入力および出力を図示する。
【図７】本開示の実施形態による帯域幅削減を示す。
【図８】本開示の実施形態によるシステム精度を示す。
【図９】本開示の実施形態によるコンピューティング・ノードを図示する。
【発明を実施するための形態】
【０００９】
デジタル・スパイキング・ニューロモーフィック・システムにおいては、情報は、スパイクによって表現かつ配信され、各スパイクが１つ以上のビットを運ぶ情報のデジタル・パケットである。例えば、ＩＢＭ（Ｒ）ＴｒｕｅＮｏｒｔｈチップは、各スパイクが情報の単一ビット（バイナリ・スパイク）を運ぶデジタル・スパイキング・ニューロモーフィック・システムである。ＴｒｕｅＮｏｒｔｈのようなスパイキング・ニューラルネットワークは、情報のパケットを交換通信線を介して配信することに基づき、それによって必要な配線を著しく削減する。ある１つのスパイクの存在が１を受信することとして取り扱われ、その欠如が０を表す。いくつかの異なるスパイク・コーディング・スキーマを用いて、より多くの値をバイナリ・スパイクにコード化することができる。
【００１０】
かかるコーディング・スキーマは、レート・コード、タイム・ツー・スパイク(time to spike)、ポピュレーション・コードおよび確率的コードを含む。これらのコーディング・スキーマは、ある１つの値を表すために必要なスパイクの数、必要な軸索（入力）チャネルの数、およびデータを表すために要する期間（または時間ウィンドウ）が異なる。
【００１１】
ある一定のタイプのニューロモーフィック計算については、いくつかのコーディング・スキーマが他より効率的である。然るべきコーディング・スキーマは、従って、ニューロシナプティック・アーキテクチャ上に展開されるネットワークにとって重要な設計上の特徴である。かかるシステムにおいて重要な２つの考慮事項は、低電力消費および高情報帯域幅である。しかしながら、電力および帯域幅は、しばしばトレードオフの対象となる。
【００１２】
システムがその計算を行うためには、入力データを受信しなければならない。この入力データは、カメラ、マイクロフォン、データ・ファイルまたは任意の他のセンサおよび情報源によって作成されてもよい。このデータは、最初に、スパイク・コーディング・スキーマを用いてスパイクにトランスコードされなければならない。これらのスパイクは、次に、通信回線を経由してニューロシナプティック・チップへ配信される。ニューロシナプティック・チップによって計算が行われた後、結果は、再びスパイクの形態で、ニューロシナプティック・チップから送り出され、それらをトランスコードして値またはシンボル表現に戻す回路またはＣＰＵによって受信される。従って、スパイク変換および通信は、ニューロシナプティック・チップへの入力およびそれからの出力上の両方で発生する。出力データの最終的な表現は、伝達される情報のタイプに依存しうる。例えば、様々な実施形態において、出力は、クラス・ラベル、信頼水準、またはアクチュエータへの動作コマンドを含みうる。
【００１３】
所定のニューロシナプティック・チップの通信帯域幅は、チップ特性およびそれに接続する回路、ならびにトランスコードおよびデコード用コンポーネントの特性によって制限される。効率的な帯域幅利用を達成するために、データは、帯域幅内に収まるようにコード化される。そのうえ、一般に、スパイク・レートが高いほど、チップがより多くのエネルギーを消費する。それゆえに、本開示は、少数のスパイクで情報を表現し、従って、電力消費を削減して、なおかつニューロシナプティック・チップ上の効率的な計算をサポートする効率的なスパイク・コーディング・スキーマを提供する。
【００１４】
１つの例示的なコーディング・スキーマは、確率的コーディングである。確率的コーディングでは、０．０と１．０の間の実数値が所定のティック(tick)ごとのスパイキングの確率によって表される。別の例示的なコーディング方式は、この値がスパイキング・レートによってコード化されるレート・コーディングである。レート・コーディングでは、スパイキング・レートは、経時的に規則的であると推定される。従って、レート・コーディングは、確率的コーディングとほぼ同じエンコーディングをもたらす。
【００１５】
コンピュテーショナル・ニューラルネットワーク、例えば、ＩＢＭ（Ｒ）ＴｒｕｅＮｏｒｔｈシステムにおいて、この表現は、ＴＥＡ分類器およびコンボリューション・ネットワーク、スパイク演算、ならびに信号フィルタリングを含む様々な分類器に適する。確率的またはレート・コーディングは、複雑な非線形ネットワークの設計を可能にする簡単な数学的モデルを提供する。しかしながら、確率的レート・コードは、しばしば非効率的である。確率的レート・コードは、ある１つの値を表すために比較的多数のスパイクを必要とする。例えば、０．５（５０％）の値を表すことが意味するのは、平均して、ある１つのスパイクが１ティック置きに送信されるべきであるということである。毎秒１０００スパイク・サイクル（ティック）で作動する例示的なシステムでは、これは、入力当たり５００Ｈｚの高スパイキング・レートを示唆する。ある１つの入力フレーム中の画素の数のような、データの次元数も、フレーム当たり数千から数百万画素と、同様に高くなりうる。
【００１６】
次元の数に毎秒のサンプルの数を乗じてサンプル当たりのスパイクを乗じると総所要帯域幅を与える。上記の例に従って、フレーム当たり１００ティックを用いた毎秒１０フレームの１メガ画素の画像は、平均して１，０００，０００＊１０＊１００＊０．５＝５億スパイクを必要とするであろう。ＩＢＭ（Ｒ）ＴｒｕｅＮｏｒｔｈのようなニューロモーフィック・チップは、高内部レートのスパイク・トラフィックを維持するように設計できるが、チップの入出力帯域幅が上述の要因によってさらに制限される。それゆえに、確率的レート・コーディングは、計算には望ましいかもしれないが、帯域幅および電力消費に費用がかかる。
【００１７】
本明細書では確率的またはレート・コーディングに対して様々な比較が示される。しかし、当然のことながら、本開示による重み付きポピュレーション・コード方式は、代わりのコーディング方式、例えば、タイム・ツー・スパイク・コード、バースト長コード、タイム・ツー・スパイクおよびバースト長コード間の変換、サーモメータ・コード(thermometer code)、ならびにレートおよびバースト長コード間の変換を凌ぐある一定の利点を有する。サーモメータ・コードは、とりわけ、ある１つの値をコード化するために必要なスパイクおよび軸索線の数についてポピュレーション・コードと同じコーディング効率を有する。本開示による重み付きポピュレーション・コードは、これらの代わりのコードに比べて、同じダイナミック・レンジを表すためにより少ないスパイクおよびティックを必要とする。
【００１８】
スパイク・コーディング・スキーマ間で変化する別の属性は、同じ値に対していくつの表現があるかである。サーモメータ・コード、バースト長コード、およびタイム・ツー・スパイクでは、各値が１つのユニークな表現またはコーディングを有する。しかしながら、レート・コード、確率的コード、およびしばしば重み付きポピュレーション・コードでは、同じ値に対して複数の表現があってもよい。上記の例に従って、１００ティックのウィンドウ内においてレート・コードで表された０．５の値は、（５０スパイクを１００ティックにわたって置く）多くの異なるコードを有してもよく、（各ティックにおけるスパイキングの確率が他のティックに依存しない）確率的コードではなおさらそうである。表現の多様性が確率的ネットワークの性能の要因である。
【００１９】
ある一定のシステムにおいては、入力が２つ以上のコピーで提供されてもよい。これが当てはまるケースは、ネットワークが複数の分類器からなり、それぞれが（例えば、精度向上のために用いられる分類器のアンサンブルで）異なるクラスまたは同じクラスのいずれかを計算するとき、もしくは、シナプス加重におけるより高いダイナミック・レンジをサポートするために入力がコアごとにいくつかの軸索上に到達することをネットワーク・トポロジーが要求する（ＴｒｕｅＮｏｒｔｈチップにおいて複数のコピー、例えば２〜４つのコピーを必要とする）とき、または、システムがいくつかのサブシステムからなり、それぞれのサブシステムが入力の別個のコピーを必要とするときであろう。
【００２０】
次に図１を参照すると、例示的なアンサンブル分類器が示される。入力画像１０１は、プリプロセッサ１０２へ供給される。プリプロセッサ１０２は、画像前処理を行い、結果として生じた画像をエンコードして、確率的コードを出力する。確率的コードの複数のインスタンス１０３ａ…ｎは、いくつかの実施形態ではＴｒｕｅＮｏｒｔｈチップである、ニューロモーフィック・チップ１０５中に存在する複数の分類器１０４ａ…ｎへ供給される。この例では総入力帯域幅が非アンサンブル、単一分類器のケースに比べてｎ倍大きいであろう。
【００２１】
図２を参照すると、本開示によるコーディング方式が示される。入力画像２０１は、プリプロセッサ２０２へ供給される。プリプロセッサ２０２は、画像前処理を行い、結果として生じた画像を本明細書において提供される重み付きポピュレーション・コードに従ってエンコードして、重み付きポピュレーション・コードを出力する。結果として生じた重み付きポピュレーション・コードは、ニューロモーフィック・チップ２０５中の確率的コード・コアレット２０６へ供給される。確率的コード・コアレット２０６は、順次、重み付きポピュレーション・コードを分類器への取り込みに適した確率的コードに変換する。確率的コードの複数のインスタンス２０３ａ…ｎは、確率的コード・コアレット２０６によって、いくつかの実施形態ではＴｒｕｅＮｏｒｔｈチップである、ニューロモーフィック・チップ２０５中にやはり存在する複数の分類器２０４ａ…ｎへ供給される。各インスタンスは、確率的コードにおける同じ入力値の独立したコーディングである。
【００２２】
図２の方式は、より少ない数のスパイクを用いてデータをチップ中に取り込み、効率的なネットワーク計算のためにそれを確率的コードに変換するオンチップ変換ネットワークを含む。それゆえに、データ取り込みのための効率的な重み付きポピュレーション・コード・スキーマが重み付きポピュレーション・コードを効率的なネットワーク計算のために確率的コードに変換するオンチップ変換ネットワークと併せて提供される。
【００２３】
アンサンブル分類器を取り扱うためのある１つの代替手段は、チップ上のスプリッタ・コアレットを用いることである。スプリッタ・コアレットは、まったく同じ入力スパイクを複数回コピーする。しかしながら、かかるプロセスは、分類器間またはサブシステム間の依存性を作り出す。とりわけ、確率的コードが独立同一分布（ＩＩＤ：ｉｎｄｅｐｅｎｄｅｎｔ，ｉｄｅｎｔｉｃａｌｌｙ  ｄｉｓｔｒｉｂｕｔｅｄ）であることが予期される。すべての分類器へ同じコードが供給された場合、それらの結果も同様に相関し、延いてはアンサンブルからの分類ゲインを減少させる。本開示による重み付きポピュレーション・コードは、同じ数のコアを消費し、分類器アンサンブルへの独立同一分布（ＩＩＤ）入力を生成する利点を有する。
【００２４】
ＴｒｕｅＮｏｒｔｈ  ＮＳ１ｅボード上に実装された、図２によるシステムのテスト結果は、毎秒１０００ティックのリアルタイム作動を示し、一方では８個の分類器のアンサンブルを用いた画像分類デモおよび１６個の分類器のアンサンブルを用いたＭＮＩＳＴ文字認識デモに関して分類結果を生じさせた。
【００２５】
様々な実施形態について以下にさらに記載されるように、所定のダイナミック・レンジおよび時間ウィンドウをもつ所定のタスクに対して、重み付きポピュレーション・コードの重みは、予期されるスパイク数（入力帯域幅）を最小化するように最適化される。いくつかの実施形態では、アンサンブル中の分類器の数が増大するときに、入力帯域幅は変化しない。入力帯域幅は、従って、システムによって入力データのいくつのコピーが要求されるかには依存しない。
【００２６】
いくつかの実施形態において、入力の重み付きポピュレーション・コード帯域幅は、変換ネットワークからの確率的コード出力の全期間には依存しない。一般に、この出力が長いほど、分類結果がより正確であろう。フレーム当たりの入力スパイク数を一定にすることによって、より長い時間ウィンドウが実際には入力における所要平均帯域幅を削減する。従来の研究を凌ぐ別の重要な利点である。
【００２７】
いくつかの実施形態では、ネットワークが前のフレームからの確率的コードの出力スパイクを依然として生成している間に入力スパイクが取り込まれる。次のフレームへの遷移は、最小数、例えば、１〜３ティックにわたって行うことができる。これは、フレーム間のセットアップ時間を削減して、時間的なチップ稼働率を向上させる。
【００２８】
本開示による重み付きポピュレーション・コードは、スパイク・コーディング・スキーマであり、ダイナミック・レンジＤにおける値ｘは、式１によって表され、ここでｋは、軸索入力線の数であり、ｗｉは、ｉ番目の軸索入力と関連付けられた重みであり、Ｓｉ（ｔ）は、ｎティックの時間ウィンドウにわたるｉ番目の入力スパイク・シーケンスである。
【００２９】
【数１】
2017126332.tif 000003
【００３０】
例えば、ｋ＝３、ｗ＝［１，３，９］およびｎ＝２であるとしよう。ｘの値は、表１に示されるようなスパイクの数によって表すことができる。
【００３１】
【表１】
2017126332.tif 000004
【００３２】
例えば、ｘ＝１４の値は、２つのスパイクを第１の軸索（重みｓ１＝１）へ、１つのスパイクを第２の軸索（重みｓ２＝３）へ、および１つのスパイクを第３の軸索（重みｓ３＝９）へ送信することによって表される。結果として、１＋１＋３＋９＝１４が４スパイクによって表される。一般に、入力レンジは、等しいかまたは異なる重みをもつより多くの軸索を追加することによって、かつ時間ウィンドウをより多くのティック（より大きいｎ）へ拡張することによって拡張できる。両方の組み合わせが入力レンジを構成する。
【００３３】
ｘの最大値は、式２によって与えられる。
【００３４】
【数２】
2017126332.tif 000005
【００３５】
本開示による重み付きポピュレーション・コードは、整数値を表す。それを用いて確率的コードを変換するためには、整数値を用いて０．０と１．０との間の確率をコード化しなければならない。ダイナミック・レンジＤは、１とｘｍａｘとの間の数として定義され、例えば、Ｄ＝１６である。結果として生じた確率的コードが次にｙ＝ｘ／Ｄとして定義される。確率は、Ｄ値に対して量子化される。Ｄがｘによって表すことができる最高値でないときに、Ｄより高いｘ値は省略される。結果として生じた確率的コードｙが表２に示される。
【００３６】
【表２】
2017126332.tif 000006
【００３７】
結果として生じた確率的コードのダイナミック・レンジＤは、入力レンジと同じか、またはそれより小さくなければならない。そうでない場合には、入力ｘにおけるスパイクでは表すことができない高確率値があるであろう。従って、Ｄ≦ｘｍａｘである。
【００３８】
次に図３を参照すると、本開示による例示的なシステム処理サイクルが示される。リセットは、リセット期間３０１中に行われる。いくつかの実施形態において、リセット機能は、高い負の重みをもつ軸索へ送信されたスパイクを用いて実装され、それによってニューロン電位を低下させる。ニューロン電位のゼロへの完全なリセットを確実にするためにいくつかのスパイクが必要とされてもよい。そえゆえに、リセット期間３０１に複数のティック、例えば、示されるように２つが含まれてもよい。
【００３９】
重み付きポピュレーション・スパイクは、セットアップ期間３０２中に送信される。この期間内に、ニューロンは、それらの膜電位を入力データによって示された値へビルドアップする。確率的出力期間３０３中に、ニューロンは、それらのスパイキング確率に従って確率的にスパイクを生じる。この期間は、一般に、確率的コーディング・システムの出力が送られる分類器または他のシステムによって決定される。
【００４０】
まとめると、リセット期間３０１、セットアップ期間３０２、および確率的出力期間３０３が、入力フレームを処理するために要する時間の組み合わせをカバーする単一処理サイクル３１０を形成する。さらなるリセット期間３０４、セットアップ期間３０５などを備える追加の処理サイクルが後に続くことができる。
【００４１】
確率的出力時間３０３と、リセット・セットアップ時間３０１、３０２の合計との間の比率がシステムのデューティ・サイクルである。一般に、リセットおよびセットアップ時間が非生産的である（分類器が入力を何も有さない）ため、デューティ・サイクルを最大化することが望しいであろう。示されるように、図３の例示的なデューティ・サイクルは、１６：１０である。
【００４２】
３つの入力線および３つの重みだけを用いた、上記の例では、（値０：１５に対する）値当たりの平均スパイクは、２．２５である。これは、平均すると値当たり２．０スパイクの自然な４ビット２進表現より高いが、ハードウェア実装された軸索タイプのルックアップ・テーブルにおいてある１つの軸索およびある１つの重みを節約する。それゆえに、このコーディングは、スパイク・ベース表現に関して大きな利益を有する。
【００４３】
入力スパイク・レートは、システムへの入力におけるティック当たりの平均スパイクとして定義される。基礎をなすニューロモーフィック・システムのいくつかの実施形態において、最大入力スパイク・レートは、実際のシステム特性によって制限されることがある。従って、システム中に最多数のスパイクが送信されたティックは、興味深い特性である。
【００４４】
別の例示的な実施形態では、重み付きポピュレーション・コードがｗ＝［１，１，３，３，９］をもつ５つの軸索を用いて提供される。この実施形態では、１４の値の構成が同じまま、すなわち、１＋１＋３＋９＝１４であってもよい。しかしながら、コーディングは、２つではなく単一のティック中に収められる。利用可能な軸索の数がより多いときには、より少ない時間を用いてニューロンを所望の膜電位にセットアップすること、またはダイナミック・レンジ（精度）を向上させることが可能である。画素当たりの確率的出力の数が大きいときには、システム中のコアの数を増加させることも追加のコストを生じることもなく、より多くの軸索を用いてもよい。
【００４５】
先に指摘されたように、システム処理時間は、重要な設計基準である。一般に、最少のリソース（例えば、電力、コア）を用いて、データをできるだけ速く処理することが望ましい。いくつかの実施形態において、処理サイクルは、ニューロンを所望の膜電位にセットアップするために指定されたティックの数を削減することにより、そのセットアップに要する時間を減少させることによって削減できる。これは、システムのデューティ・サイクルを増加させるであろう。しかしながら、これがさらに示唆するのは、すべての重み付きポピュレーション・コード・スパイクをより短い期間にわたって送信する必要があり、それによってその期間中の通信帯域幅が増加するということである。
【００４６】
いくつかの実施形態において、ニューロン膜電位は、セットアップ期間とセットアップ期間との間にゼロにはセットされない。それゆえに、リセット期間が省略される。新しい値をセットするためには、差動コーディング(differential coding)が用いられる。後続のセットアップ期間３０５におけるエンコード値は、前のフレームにおける入力３０２の値と新しい入力との間の差である。この差を現在の膜電位に追加することによって、膜電位が新しい値に変化するであろう。かかる実施形態では、ポピュレーション・コードにおける重みのうちの少なくとも１つが負である。
【００４７】
次に図４を参照すると、最大入力スパイク・レートの増加を克服するための本開示による方法が示される。いくつかの実施形態では、ニューロンによる各スパイクの消費がセットアップ時間ウィンドウ内であるように、スパイクのうちのいくつかが予め遅延を伴ってより長い時間ウィンドウにわたって送信される。
【００４８】
プリロード期間４０１中に、スパイクが遅延を伴って送信される。プリロード期間は、前の確率的出力の時間に重なる。リセット期間４０２後には、スパイクがセットアップ期間４０３中のニューロンに影響を及ぼす。このようにして、セットアップ期間４０３が８ティックから３ティックに削減される。確率的出力４０４中に、後続のプリロード４０５が行われて、順次、リセットおよびセットアップ期間４０６、４０７につながる。
【００４９】
上記のことから理解されるように、本開示による重み付きポピュレーション・コード方式を２つのサブコンポーネントの観点から見ることができる。１つのコンポーネントは、入力を重み付きポピュレーション・コードで受信して、出力スパイクを確率的コードで生成するネットワークを備える。このネットワークは、構成可能であり、入力ピンごとに任意の重みのセットおよび任意の数の出力コピーとともに用いることができる。他のコンポーネントは、入力の整数データを重み付きポピュレーション・コードにおけるスパイクのシーケンスに変換する重み付きポピュレーション・コードのためのトランスデューサを備える。
【００５０】
いくつかの実施形態において、本開示による重み付きポピュレーション・コードは、コアレットとして実装される。コアレットは、０から１までの値をもつ情報単位（例えば、ある１つの画素または確率）ごとの入力値を所与として、確率的レート・コードを生成する。コアレットは、入力情報単位の１つ以上のコピーを作り出す。いくつかの実施形態において、確率的レート・コードの各コピーは、入力確率に従ってセットされた確率的閾値をもつＴｒｕｅＮｏｒｔｈニューロンを用いて生成される。
【００５１】
例示的な実施形態において、コアレットは、確率的コードにおける画像をＴｅａ分類器コアレットに変換するために用いられる。図１に関して先に指摘されたように、１つのアプローチは、ｔｎ信号プロセッサ・ツールのようなプリプロセッサを用いて、確率的レート・コードにおける画像の複数のコピーを作り出すことである。これらのコピーは、次に、Ｔｅａ分類器のアンサンブルに送り込むためにチップへ送信される。これらのコピーがチップへ同時に送信されるので、チップへの入力帯域幅が増して飽和しかねない。帯域幅の消費は、より大きな画像がより多くのチャネルを伴って用いられるときに特に重要である。
【００５２】
図２に関して先に考察されたように、本開示の実施形態による確率的コード・コアレットの使用は、帯域幅をデータの単一コピーのみの帯域幅に削減する。確率的コード・コアレットへの変換は、重み付きポピュレーション・コードを用いて行われる。このコードは、（図３〜４に示されるセットアップ期間中に）いくつかのティックにわたって、１回変換される。このセットアップ後に、コアレットは、リセット・スパイクをそれが受信するまで、確率的コード出力を生じさせる。その時間中に、入力は、まったく必要とされない。結果として、平均入力帯域幅は、セットアップ期間中に供給される入力をセットアップ時間および確率的出力時間の合計で除したものである。出力期間が長いほど、平均入力レートは低い。これは、出力ウィンドウの全期間にわたってアクティブでなければならない外部確率的コード変換とは対照的である。それゆえに、コアレットは、特に出力ウィンドウが長いケースで、平均入力スパイク・レートを削減する。
【００５３】
本開示の実施形態によるコアレット(corelet)は、スパイクを生成するために確率的閾値をもつニューロンをピュア・インテグレータ(Pure Integrator)・モード（ガンマ＝２）で用いる。動作は、図３〜４に示されるように、３つのステージ、すなわちリセット、セットアップおよび生成からなるサイクルで進む。いくつかの実施形態において、リセット・ステージは、１または２ティックの長さであり、その間に確率的ニューロンの膜電位がゼロにセットされる。セットアップ・ステージは、入力スパイクがニューロンへ積分されるときに、膜電位を確率的コードの確率に対応するレベルまで高める。いくつかの実施形態では１から３ティックにわたって続くこのステージ中に、ニューロンは、膜電位がニューロン閾値（アルファ）を通過するにつれてスパイキングを開始できるが、しかし出力レートは、まだ入力確率に一致しないであろう。セットアップ・ステージの終わりには、ニューロンが所望の確率的レートでスパイクを生じる。
【００５４】
いくつかの実施形態において、コアレットは、いくつかの実施形態では外部コネクタとしてセットされるコネクタを通じて他のコアレットに接続される。第１の入力は、レート・コードを用いてエンコードされたデータである。第２の入力は、コアレット中のコアのためのリセット信号であり、ニューロン電位をリセットするために用いられる。
【００５５】
コアレットの状態をリセットするためにインターフェースを用いてもよく、リセットは、いくつかの実施形態では各フレーム（例えば、画像）の始めに行われる。リセット軸索として定義された各コアレット中の軸索に各リセット・ピンが接続され、これは、各リセット・ピンが各フレーム後にニューロンをリセットするように予約されなければならないことを示唆する。リセット・ピンは、必要ならば、コアレットをリセットするために用いることもできる。
【００５６】
表３は、例示的なコアレットのための入力パラメータを説明および数値例とともに示す。
【００５７】
【表３】
2017126332.tif 000007
【００５８】
例示的なコアレットは、確率的ピュア・インテグレータ・ニューロンに基づく。コアレット中のすべてのニューロンは、同様にセットされる。ニューロンは、必要とされるｄｙｎａｍｉｃＲａｎｇｅに従って閾値＝１およびＴＭにセットされる。ニューロンは、ガンマ＝２（スパイキング後にリセットしない）、イプシロン＝０、カッパ＝１およびベータ＝０にセットされる。
【００５９】
リセット期間中には、スパイクがシナプシスの重み−２５５をもつ軸索０へ送信される。これは、ニューロンの電位をゼロに低下させる。入力データは、ａｘｏｎＷｅｉｇｈｔｓベクトルによって定義された重みをもつｎＡｘｏｎＰｅｒＰｒｏｂ個の軸索のグループにわたって入力ごとに重み付きポピュレーション・コードで供給される。これらのスパイクは、膜電圧をある値ｖにセットする。ニューロンは、ｐ＝ｖ／２ＴＭの確率で自発的スパイキングを開始する。ニューロンは、リセット・スパイクがその膜電位を元のゼロに低下させるまで自発的にスパイキングを継続する。
【００６０】
いくつかの実施形態では、出力ピンごとに１つのニューロンがある。しかしながら、１つ以上のニューロンを同じ値ｖにセットアップするために、その入力に必要とされるコピーの数に依存して、入力軸索のグループを用いてもよい。
【００６１】
図５を参照すると、４つの入力軸索および画素当たり４つの出力コピーをもつケースについて例示的なクロスバー５０１が示される。割り当てられた重みは、［１，１，３，９］である。図６を参照すると、この例示的なクロスバーのための例示的な入出力が示される。入力６０１は、重み付きポピュレーション・コードで供給される。出力６０２は、先に記載されたように、４つの出力コピーを含む。
【００６２】
いくつかの実施形態、例えば、ＴｒｕｅＮｏｒｔｈ上に構築される実施形態では、データをチップへ送信できるレートは、毎秒１０００スパイクである。いくつかの実施形態において、コアレットは、ティック当たりの最大スパイク数を見つけるためにコアレットがデータセット中のすべての可能な例にわたって繰り返す検証ステップを行う。最大スパイク数がｍａｘＳｐｉｋｅｓＰｅｒＴｉｃｋより大きければ、コアレットは、エラー・メッセージを生成するであろう。
【００６３】
データにアクセスすることが可能でなければ、コアレットは、平均スパイクを入力データのｐｄｆ（確率密度関数：ｐｒｏｂａｂｉｌｉｔｙ  ｄｅｎｓｉｔｙ  ｆｕｎｃｔｉｏｎ）に従って計算し、最大スパイクをシミュレートすることができる。以下の変換例に従って、スパイクの平均数が式３によって提供され、ここでｐｉは、入力ｉごとの確率である。この例では、均一な分布が仮定されてもよく、ｐｉ＝１／１７である。Ｓｐｉｋｅｉは、入力値ｉをエンコードするために必要なスパイクの数である。この例では、０から１６まで、１７個の可能な入力値が仮定される。
【００６４】
【数３】
2017126332.tif 000008
【００６５】
ｎＩｎｐｕｔＴｉｃｋｓを用いて、スパイクを各入力ティックに均等に割り当てることが可能である。入力データ・サイズＮ（例えば、２８＊２８＝７８４）を考慮すると、各入力ティックにおける平均スパイクは、式４によって与えられる。
【００６６】
【数４】
2017126332.tif 000009
【００６７】
この例では、ａｖｇＳｐｉｋｅｓＰｅｒＴｉｃｋ＝９２２．３５であり、上限として９２３に切り上げることができる。
【００６８】
ｎＡｘｏｎＰｅｒＰｒｏｂおよびａｘｏｎＷｅｉｇｈｔは、ユーザによって手作業でセットできるが、コアレットは、最高精度およびティック当たりの最小スパイク数を有しうる最適値、ならびにコアを素早く選ぶことができる。ｇｅｎｅｒａｔｅＯｐｔｉｍａｌＰａｒａ．ｍは、パラメータの最適化されたセットを生成するために用いられる。ｒｅｓｅｔＤｅｌａｙは、コアレットのための構成可能なパラメータではないが、リセット後に有効な入力をいつ開始すべきかを定義するために用いられる。基礎をなすチップのいくかの実施形態において、リセットの完了を確実にするための最小値は２である。より高いダイナミック・レンジが必要な場合、リセットをトリガするために、２ティックを用いてより大きい負の値を生成することが可能である。
【００６９】
出力ピンの数は、ＴＥＡ構成ではｉｎＣｏｏｒｄパラメータによって予め決定され、一方で出力ピンの数は、可変長スプリッタ構成についてはｓｐｌｉｔＣｏｕｎｔベクトルに基づいて算出される必要がある。
【００７０】
ＴＥＡ構成では、ｎＣｏｐｉｅｓで指定されたコピーの数と同数の出力コネクタがあってもよい。これが意味するのは、各ＴＥＡインスタンスがこのコアレットの出力コネクタの各１つに接続するであろうということである。ＶＬＳのケースでは１つだけの出力コネクタがある。
【００７１】
いくつかの実施形態において、コアレットは、２つの構成を有する。第１の構成は、コピーをＴＥＡレイヤ・インスタンスへ供給するために用意された。第２の構成は、可変長スプリッタ（ＶＬＳ：Ｖａｒｉａｂｌｅ  Ｌｅｎｇｔｈ  Ｓｐｌｉｔｔｅｒ）コアレットと名付けられ、よりフレキシブルに定義されたスプリッタ・コアレットの機能性を提供する。次の２つのセクションは、コアレットをこれらのフォーマットのいずれかでセットアップするために必要なパラメータを提示する。
【００７２】
表４は、ある１つの画像に関するｉｎＣｏｏｒｄ定義の例を示す。この画像が１つのチャネルから次へラスタスキャンを用いて走査されると仮定する。表のインデックスは、出力コネクタにおけるピン番号を示す。このケースでは、コアレットによって生成された各コピーがコピーを提供するためにｉｎＣｏｏｒｄ表の定義に従うであろう。
【００７３】
【表４】
2017126332.tif 000010
【００７４】
表５は、ＶＬＳ構成のための例示的な入力パラメータを示す。
【００７５】
【表５】
2017126332.tif 000011
【００７６】
ｓｐｌｉｔＣｏｕｎｔのベクトルの例として、入力ピンの順序は、ｓｐｌｉｔＣｏｕｎｔのインデックスによって決定される。出力ピンの順序は、このベクトルで指定されるような入力ピンごとに必要とされるコピーの数に従ってインクリメントされるであろう。この例では、入力ピン番号１は、出力コネクタで２回コピーされることになり、一方で入力ピン番号４は、ベクトル中のその値がゼロなのでコピーされないであろう。
【００７７】
データは、入力パラメータで定義されるような、確率的レート・コードを用いてコアレットに入力される。ピン分布および入力ピンの数は、入力パラメータのセクションで指定されるように入力パラメータから導出される。ｇｅｎｅｒａｔｅＤａｔａＳｐｉｋｅｓ．ｍは、データのためのスパイクを生成するために用いられる。
【００７８】
いくつかの実施形態では、先に考察されたように、データがｔｎ信号プロセッサのようなＴｒｕｅＮｏｒｔｈツールを用いてスパイクに変換される。例示的な実施形態では、トランスデューサが設けられる。コアレットの構成を所与として、トランスデューサは、以下に示されるように最適な構成を識別して、画像のセットを複数のスパイクに変換する。
【００７９】
以下のパラメータを仮定する−ａｘｏｎＷｅｉｇｈｔ：［１，３，９］；入力レンジ：１６（入力データは、０から１６までの整数に変換されるであろう）；ｎＩｎｐｕｔＴｉｃｋｓ：２。コアレットは、表６に示されるように、入力データを変換するためのルックアップ・テーブルを生成する。
【００８０】
【表６】
2017126332.tif 000012
【００８１】
帯域幅削減レートは、（入力データを表すために複数のティックを用いる）必要とされるコピーおよび必要とされる入力時間ウィンドウに従って変化するであろう。図７は、入力データが０と１との間に均一に分布し、６４個のコピーおよび１６個の入力時間ウィンドウが必要とされる場合の異なる構成の下での改善を示す。ダイナミック・レンジは、浮動小数点数を表すための精度であり、例えば、１２８は、浮動小数点数０〜１を表すためにそれが０〜１２８の定数を用いるであろうことを意味する。ダイナミック・レンジが高いほど、より正確であり、より多くの入力スパイクも必要とされる。
【００８２】
本開示によるコアレットは、種々の精度、入力／出力時間ウィンドウ、およびコピー・カウントをサポートする。然るべき構成を用いると、最小帯域幅要件によって同じシステム性能が達成される。図８は、画像分類におけるコアレット有無の比較を示す。
【００８３】
当然のことながら、本開示の実施形態は、様々なニューロモーフィック・システムにおける用途に適する。本開示は、ＩＢＭ  ＴｒｕｅＮｏｒｔｈ実装の観点から様々な例示的な実施形態を提示するが、その教示は、他の非フォン・ノイマン・アーキテクチャに適用可能である。様々なかかるアーキテクチャにおいて、ニューロモーフィック基板は、電磁部品、メモリスタ、キャパシタ・ベース・システム、アナログ・デバイス、または他のニューロモーフィック・デバイスを用いてＶＬＳＩ技術上に構築されてもよい。いくつかのかかるアーキテクチャは、プログラム可能なシステムを提供し、一方で他は、専用システムを提供する。いくつかのかかるアーキテクチャは、オンチップ学習を提供し、一方で他は、オフチップ学習を提供する。いくつかのかかるアーキテクチャは、単一のチップ上に展開され、一方で他は、アレイまたは多層ニューロモーフィック・アーキテクチャにおけるように複数のチップ上に展開される。いくつかのかかるアーキテクチャは、パケット・ベースのスパイクに基づき、一方で他は、様々な他の電子信号に基づく。
【００８４】
例として、ニューロシナプティック・プログラムがニューロシナプティック・ネットワークを表してもよい。ニューロシナプティック・プログラムは、ニューロシナプティック・ネットワークに関連する情報を含む。この情報は、入力スパイクに対する電子的ニューロンの応答を決定するニューロン特性およびダイナミックスを含む。例えば、ニューロン特性およびダイナミックスは、閾値パラメータ、リーク・パラメータ、遅延パラメータ、またはリセット・パラメータを含むことができる。ニューロシナプティック・プログラム情報は、ニューロンのシナプス結合（例えば、シナプス・クロスバーを経由して行われるシナプス結合）を含みうる。ニューロシナプティック・プログラム情報は、軸索特性（例えば、軸索タイプ）を含みうる。ニューロシナプティック・プログラム情報は、ニューロンの出力スパイクが配信されるべき１つ以上のデスティネーション（例えば、ターゲット軸索）を含みうる。
【００８５】
ニューロシナプティック・ネットワークは、ニューロシナプティック・プログラムのインスタンス化を表す。ニューロシナプティック・ネットワークは、ハードウェア、シミュレーション、または両方でインスタンス化(instantiation)されてもよい。例えば、ニューロシナプティック・プログラムがニューロシナプティック・ネットワークの１つ以上のインスタンスをもたらしてもよく、これらのインスタンスが単一のコア、複数のコア、または複数のチップ上に存在してもよい。
【００８６】
ニューロモーフィック・コア回路は、ニューロシナプティック・プログラムによって記述されるニューロシナプティック・ネットワークの例を表す。
【００８７】
コアレットまたはコアレット・プログラム言語は、ニューロシナプティック・プログラムの抽象化を提供するソフトウェアを表してもよい。ニューロシナプティック・プログラムの構成は、コアレットを構成することによって作り出されてもよい。
【００８８】
ニューロシナプティック・コアのネットワークでは、各コア上のニューロンを（それ自体を含めて）任意の他のニューロシナプティック・コアの任意の軸索に接続できる。ニューロンがスパイクを生じたときに、そのニューロンは、デスティネーション・コア上のターゲット軸索へ配信されるスパイク・パケットを送信する。用途および構成されたニューロシナプティック・コアを所与として、バーチャルグラフ(virtual graph)Ｇを構築することができ、このグラフではあらゆるノードが単一のコアを表し、あらゆるエッジがソース・コア上のソース・ニューロンのセットからターゲット・コア上のデスティネーション軸索のセットへの接続を表す。任意の２つのコア間のエッジの重みは、２つのコア間で通信されるスパイクの総数を表す。（同じコア上のニューロンと軸索との間の）任意のセルフ・エッジは、無視されてもよい。ニューロシナプティック(neurosynaptic)・システムの物理的ハードウェアの実施形態では、各コアがチップ上の２Ｄグリッド中にユニークな物理アドレスを有してもよい。システム中には任意の数のチップが存在できる。
【００８９】
ソース・コア上のソース・ニューロンからデスティネーション・コア上のターゲット軸索へのスパイク通信は、水平方向もしくは垂直方向のいずれか、または両方の組み合わせで２Ｄグリッド中のルータを経由して、ある一定の数のホップを横切ってデスティネーション・コア上のターゲット軸索へ配信されてもよい。スパイク・パケットが横切る各ホップは、電力およびエネルギーを消費する。
【００９０】
次に図９を参照すると、コンピューティング・ノードの例の概略図が示される。コンピューティング・ノード１０は、適切なコンピューティング・ノードの一例に過ぎず、本明細書に記載される発明の実施形態の使用の範囲または機能性についてなにかの制限を提案するものではない。いずれにしても、コンピューティング・ノード１０は、先に提示された機能性のいずれかが実装されるかまたはそれを行うこと、あるいはその両方が可能である。
【００９１】
コンピューティング・ノード１０には多くの他の汎用もしくは専用コンピューティング・システム環境または構成により動作可能なコンピュータ・システム／サーバ１２がある。コンピュータ・システム／サーバ１２とともに用いるのに適しうる、よく知られたコンピューティング・システム、環境、もしくは構成またはそれらのいずれかの組み合わせの例は、以下には限定されないが、パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム、シンクライアント(thin client)、シッククライアント(thick client)、ハンドヘルドまたはラップトップ・デバイス、マルチプロセッサ・システム、マイクロプロセッサ・ベース・システム、セットトップ・ボックス、プログラム可能な民生用電子機器、ネットワークＰＣ、ミニコンピュータ・システム、メインフレーム・コンピュータ・システム、および上記のシステムまたはデバイスのいずれかを含む分散型クラウド・コンピューティング環境などを含む。
【００９２】
コンピュータ・システム／サーバ１２は、コンピュータ・システムによって実行されるプログラム・モジュールのような、コンピュータ・システムが実行しうる命令の一般的な文脈で記述されてもよい。一般に、プログラム・モジュールは、特定のタスクを行うか、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、ロジック、データ構造などを含みうる。コンピュータ・システム／サーバ１２は、分散型クラウド・コンピューティング環境で実施されてもよく、この環境では、タスクが通信ネットワークを通じてリンクされたリモート処理デバイスによって行われる。分散型クラウド・コンピューティング環境では、プログラム・モジュールがメモリ記憶デバイスを含んだローカルおよびリモート両方のコンピュータ・システム記憶媒体中に置かれてもよい。
【００９３】
図９に示されるように、コンピューティング・ノード１０におけるコンピュータ・システム／サーバ１２は、汎用コンピューティング・デバイスの形態で示される。コンピュータ・システム／サーバ１２のコンポーネントは、以下には限定されないが、１つ以上のプロセッサまたは処理ユニット１６、システム・メモリ２８、およびシステム・メモリ２８を含めて様々なシステム・コンポーネントをプロセッサ１６に結合するバス１８を含みうる。
【００９４】
バス１８は、様々なバス・アーキテクチャのいずれかを用いたメモリ・バスもしくはメモリ・コントローラ、周辺機器用バス、アクセラレイティッド・グラフィックス・ポート、およびプロセッサまたはローカル・バスを含めて、いくつかのタイプのバス構造のいずれかの１つ以上を表す。限定ではなく、例として、かかるアーキテクチャは、インダストリ・スタンダード・アーキテクチャ（ＩＳＡ：Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、マイクロ・チャネル・アーキテクチャ（ＭＣＡ：Ｍｉｃｒｏ  Ｃｈａｎｎｅｌ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、拡張ＩＳＡ（ＥＩＳＡ：Ｅｎｈａｎｃｅｄ  ＩＳＡ）バス、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション（ＶＥＳＡ：Ｖｉｄｅｏ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｓｔａｎｄａｒｄｓ  Ａｓｓｏｃｉａｔｉｏｎ）ローカル・バス、およびペリフェラル・コンポーネント・インターコネクト（ＰＣＩ：Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）バスを含む。
【００９５】
コンピュータ・システム／サーバ１２は、典型的に、様々なコンピュータ・システム可読媒体を含む。かかる媒体は、コンピュータ・システム／サーバ１２によってアクセスできる任意の利用可能な媒体であってもよく、揮発性および不揮発性媒体、取り外し可能および取り外し不可能な媒体の両方を含む。
【００９６】
システム・メモリ２８は、揮発性メモリの形態のコンピュータ・システム可読媒体、例えば、ランダム・アクセス・メモリ（ＲＡＭ：ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）３０もしくはキャッシュ・メモリ３２またはその両方を含むことができる。コンピュータ・システム／サーバ１２は、さらに、他の取り外し可能／取り外し不可能な、揮発性／不揮発性コンピュータ・システム記憶媒体を含みうる。例のみとして、（示されず、典型的に「ハードドライブ」と呼ばれる）取り外し不可能な不揮発性磁気媒体から読み出し、それに書き込むために記憶システム３４を設けることができる。示されないが、取り外し可能な不揮発性磁気ディスク（例えば、「フレキシブルディスク」）から読み出し、それに書き込むための磁気ディスク・ドライブ、および取り外し可能な不揮発性光ディスク、例えば、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭまたは他の光媒体から読み出し、それに書き込むための光ディスク・ドライブを設けることができる。かかる例では、それぞれを１つ以上のデータ媒体インターフェースによってバス１８に接続できる。以下にさらに図示され、記載されるように、メモリ２８は、本発明の実施形態の機能を実施するように構成されたプログラム・モジュールの（例えば、少なくとも１つの）セットを有する少なくとも１つのプログラムを含みうる。
【００９７】
プログラム・モジュール４２の（少なくとも１つの）セットを有するプログラム／ユーティリティ４０は、限定ではなく、例として、メモリ２８中に記憶されてもよく、ならびにオペレーティング・システム、１つ以上のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データ中に記憶されてもよい。オペレーティング・システム、１つ以上のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データのそれぞれまたはそれらのいくつかの組み合わせがネットワーキング環境の実装を含んでもよい。プログラム・モジュール４２は、一般に、本発明の実施形態の機能もしくは方法論またはその両方を本明細書に記載されるように実施する。
【００９８】
コンピュータ・システム／サーバ１２は、さらに、キーボード、ポインティング・デバイス、ディスプレイ２４などのような１つ以上の外部デバイス１４；ユーザがコンピュータ・システム／サーバ１２と相互作用することを可能にする１つ以上のデバイス；もしくは、コンピュータ・システム／サーバ１２が１つ以上の他のコンピューティング・デバイスと通信することを可能にする任意のデバイス（例えば、ネットワーク・カード、モデムなど）、または、それらのいずれかの組み合わせとも通信してもよい。かかる通信は、入力／出力（Ｉ／Ｏ）インターフェース２２を経由して発生することができる。さらにまた、コンピュータ・システム／サーバ１２は、ネットワーク・アダプタ２０を経由して１つ以上のネットワーク、例えば、ローカル・エリア・ネットワーク（ＬＡＮ：ｌｏｃａｌ  ａｒｅａ  ｎｅｔｗｏｒｋ）、一般的なワイド・エリア・ネットワーク（ＷＡＮ：ｗｉｄｅ  ａｒｅａ  ｎｅｔｗｏｒｋ）、もしくは公衆ネットワーク（例えば、インターネット）またはそれらのいずれかの組み合わせとも通信することができる。図示されるように、ネットワーク・アダプタ２０は、バス１８を経由してコンピュータ・システム／サーバ１２の他のコンポーネントと通信する。当然のことながら、示されないが、コンピュータ・システム／サーバ１２と併せて他のハードウェアもしくはソフトウェア・コンポーネントまたはその両方を用いることができるであろう。例は、以下には限定されないが、マイクロコード、デバイス・ドライバ、冗長処理ユニット、外部ディスク・ドライブ・アレイ、ＲＡＩＤシステム、テープ・ドライブ、およびデータ・アーカイブ記憶システムなどを含む。
【００９９】
本発明は、システム、方法、もしくはコンピュータ・プログラムまたはそれらのいずれかの組み合わせであってもよい。コンピュータ・プログラムは、プロセッサに本発明の態様を実施させるためのコンピュータ可読プログラム命令をその上に有するコンピュータ可読記憶媒体（単数または複数）を含みうる。
【０１００】
コンピュータ可読記憶媒体は、命令実行デバイスによる使用のための命令を保持して記憶できる有形のデバイスとすることができる。コンピュータ可読記憶媒体は、例えば、以下には限定されないが、電子記憶デバイス、磁気記憶デバイス、光記憶デバイス、電磁記憶デバイス、半導体記憶デバイス、または前述のものの任意の適切な組み合わせであってもよい。コンピュータ可読記憶媒体のより具体的な例の非網羅的リストは、ポータブル・コンピュータ・ディスケット、ハードディスク、ランダム・アクセス・メモリ（ＲＡＭ：ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）、リード・オンリ・メモリ（ＲＯＭ：ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）、消去可能プログラマブル・リード・オンリ・メモリ（ＥＰＲＯＭ：ｅｒａｓａｂｌｅ  ｐｒｏｇｒａｍｍａｂｌｅ  ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙまたはフラッシュ・メモリ）、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ：ｓｔａｔｉｃ  ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）、ポータブル・コンパクト・ディスク・リード・オンリ・メモリ（ＣＤ−ＲＯＭ：ｃｏｍｐａｃｔ  ｄｉｓｃ  ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）、デジタル・バーサタイル・ディスク（ＤＶＤ：ｄｉｇｉｔａｌ  ｖｅｒｓａｔｉｌｅ  ｄｉｓｋ）、メモリ・スティック、フレキシブルディスク、機械的にエンコードされたデバイス、例えば、記録された命令をその上に有するパンチ・カードもしくは溝中の凸構造、ならびに前述のものの任意の適切な組み合わせを含む。コンピュータ可読記憶媒体は、本明細書では、それ自体が一時的な信号、例えば、電波または他の自由空間を伝搬する電磁波、導波路もしくは他の伝送媒体を通して伝搬する電磁波（例えば、光ファイバ・ケーブルを通過する光パルス）、または電線を通して伝送される電気信号であると解釈されるべきではない。
【０１０１】
本明細書に記載されるコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング／処理デバイスへダウンロードできるか、あるいは、ネットワーク、例えば、インターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワークもしくは無線ネットワークまたはそれらのすべてを経由して外部コンピュータもしくは外部記憶デバイスへダウンロードできる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータもしくはエッジ・サーバまたはそれらのいずれかの組み合わせを備えてもよい。各コンピューティング／処理デバイスにおけるネットワーク・アダプタ・カードもしくはネットワーク・インターフェースは、コンピュータ可読プログラム命令をネットワークから受信するか、またはコンピュータ可読プログラム命令をそれぞれのコンピューティング／処理デバイス内のコンピュータ可読記憶媒体に記憶するために転送する。
【０１０２】
本発明の動作を実施するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ（ＩＳＡ：ｉｎｓｔｒｕｃｔｉｏｎ−ｓｅｔ−ａｒｃｈｉｔｅｃｔｕｒｅ）命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、あるいは、Ｓｍａｌｌｔａｌｋ、Ｃ＋＋などのようなオブジェクト指向プログラム言語、および「Ｃ」プログラム言語のような従来の手続き型プログラム言語、または同様のプログラム言語を含めて、１つ以上のプログラム言語の任意の組み合わせで書かれたソース・コードもしくはオブジェクト・コードのいずれかであってもよい。コンピュータ可読プログラム命令は、スタンドアロン・ソフトウェア・パッケージとして、専らユーザのコンピュータ上で、部分的にユーザのコンピュータ上で実行してもよく、部分的にユーザのコンピュータ上および部分的にリモート・コンピュータ上で実行してもよく、あるいは専らリモート・コンピュータまたはサーバ上で実行してもよい。後者のシナリオでは、リモート・コンピュータがユーザのコンピュータへローカル・エリア・ネットワーク（ＬＡＮ）もしくはワイド・エリア・ネットワーク（ＷＡＮ）を含めて、任意のタイプのネットワークを通して接続されてもよく、または（例えば、インターネット・サービス・プロバイダを用いたインターネットを通して）外部コンピュータへの接続が行われてもよい。いくつかの実施形態において、例えば、プログラマブル・ロジック回路素子、フィールド・プログラマブル・ゲートアレイ（ＦＰＧＡ：ｆｉｅｌｄ−ｐｒｏｇｒａｍｍａｂｌｅ  ｇａｔｅ  ａｒｒａｙ）またはプログラマブル・ロジック・アレイ（ＰＬＡ：ｐｒｏｇｒａｍｍａｂｌｅ  ｌｏｇｉｃ  ａｒｒａｙ）を含んだ電子回路素子が、本発明の態様を行うために、コンピュータ可読プログラム命令の状態情報を利用してその電子回路素子をパーソナライズすることによりコンピュータ可読プログラム命令を実行してもよい。
【０１０３】
本発明の態様は、本明細書において本発明の実施形態による方法、装置（システム）、およびコンピュータ・プログラムのフローチャート説明図もしくはブロック図またはその両方に関連して記載される。当然のことながら、フローチャート説明図もしくはブロック図またはその両方の各ブロック、およびフローチャート説明図もしくはブロック図またはその両方におけるブロックの組み合わせは、コンピュータ可読プログラム命令によって実装できる。
【０１０４】
これらのコンピュータ可読プログラム命令は、コンピュータのプロセッサもしくは他のプログラム可能なデータ処理装置を経由して実行する命令がフローチャートもしくはブロック図またはその両方のブロック（単数または複数）で指定された機能／動作を実装するための手段を作り出すような、機械をもたらすために汎用コンピュータ、専用コンピュータもしくは他のプログラム可能なデータ処理装置のプロセッサへ供給されてもよい。これらのコンピュータ可読プログラム命令は、さらに、記憶された命令を有するコンピュータ可読記憶媒体がフローチャートもしくはブロック図またはその両方のブロック（単数または複数）で指定された機能／動作の態様を実装する命令を含んだ製品を備えるような、特定の仕方でコンピュータ、プログラム可能なデータ処理装置もしくは他のデバイスまたはそれらのいずれかの組み合わせが機能するように管理できるコンピュータ可読記憶媒体中に記憶されてもよい。
【０１０５】
コンピュータ可読プログラム命令は、さらに、コンピュータ、他のプログラム可能な装置、または他のデバイス上で実行する命令がフローチャートもしくはブロック図またはその両方のブロック（単数または複数）で指定された機能／動作を実装するような、コンピュータ実装プロセスをもたらすために一連の動作ステップをコンピュータ、他のプログラム可能な装置または他のデバイス上で行わせるようにコンピュータ、他のプログラム可能なデータ処理装置、または他のデバイス上に読み込まれてもよい。
【０１０６】
図中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラムの可能な実装のアーキテクチャ、機能性および動作を示す。この点に関して、フローチャートもしくはブロック図中の各ブロックが指定されたロジック機能（単数または複数）を実装するための１つ以上の実行可能な命令を備える、モジュール、セグメント、または命令の一部分を表してもよい。いくつかの代わりの実装では、ブロック中に記された機能が図中に記された以外の順序で発生してもよい。例えば、連続して示される２つのブロックが、含まれる機能性に依存して、実際には、実質的に同時に実行されてもよく、またはこれらのブロックが時には逆の順序で実行されてもよい。同様に注目すべきは、ブロック図もしくはフローチャート説明図またはその両方の各ブロック、およびブロック図もしくはフローチャート説明図またはその両方におけるブロックの組み合わせを指定された機能もしくは動作を行うか、または専用ハードウェアおよびコンピュータ命令の組み合わせを実施する専用ハードウェア・ベース・システムによって実装できることである。
【０１０７】
本発明の様々な実施形態の記載が説明の目的で提示されたが、これらの記載は、網羅的であることも開示される実施形態に限定されることも意図されない。記載される実施形態の範囲および精神から逸脱することなく多くの修正およびバリエーションが当業者には明らかであろう。本明細書に用いられた用語法は、実施形態の原理、実際の用途、もしくは市場に見られる技術を凌ぐ技術的改良を最もよく説明するため、または本明細書に開示される実施形態を当業者が理解することを可能にするために選ばれた。
【符号の説明】
【０１０８】
１０１  入力画像
１０２  プリプロセッサ
１０３ａ  コピー１
１０３ｎ  コピー２
１０４ａ  分類器１
１０４ｎ  分類器ｎ
１０５  ニューロモーフィック・チップ
【図１】
2017126332.tif 000013
【図２】
2017126332.tif 000014
【図３】
2017126332.tif 000015
【図４】
2017126332.tif 000016
【図５】
2017126332.tif 000017
【図６】
2017126332.tif 000018
【図７】
2017126332.tif 000019
【図８】
2017126332.tif 000020
【図９】
2017126332.tif 000021