(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-09-03
(45)【発行日】2024-09-11
(54)【発明の名称】再構成可能な時間符号化畳み込みスパイキングニューラルネットワークにおける特徴のイベントベースの分類
(51)【国際特許分類】
G06N 3/049 20230101AFI20240904BHJP
G06N 3/063 20230101ALI20240904BHJP
G06T 7/00 20170101ALI20240904BHJP
【FI】
G06N3/049
G06N3/063
G06T7/00 350C
(21)【出願番号】P 2022503896
(86)(22)【出願日】2020-07-24
(86)【国際出願番号】 US2020043456
(87)【国際公開番号】W WO2021016544
(87)【国際公開日】2021-01-28
【審査請求日】2023-07-18
(32)【優先日】2019-07-25
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】521190303
【氏名又は名称】ブレインチップ,インコーポレイテッド
(74)【代理人】
【識別番号】100079108
【氏名又は名称】稲葉 良幸
(74)【代理人】
【識別番号】100109346
【氏名又は名称】大貫 敏史
(74)【代理人】
【識別番号】100117189
【氏名又は名称】江口 昭彦
(74)【代理人】
【識別番号】100134120
【氏名又は名称】内藤 和彦
(72)【発明者】
【氏名】ヴァン デル メイド,ピーター エージェイ
(72)【発明者】
【氏名】マンカー,アニル エス.
(72)【発明者】
【氏名】カールソン,クリストフォー ディー.
(72)【発明者】
【氏名】チェン,マルコ
【審査官】佐藤 直樹
(56)【参考文献】
【文献】米国特許出願公開第2017/0300788(US,A1)
【文献】Charlotte FRENKEL et al.,MorphIC: A 65-nm 738k-Synapse/mm2 Quad-Core Binary-Weight Digital Neuromorphic Processor with Stochastic Spike-Driven Online Learning,arXiv[online],2019年07月16日,[検索日2024.07.26],インターネット:<URL:https://arxiv.org/pdf/1904.08513v2>
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/049
G06N 3/063
G06T 7/00
(57)【特許請求の範囲】
【請求項1】
デジタル入力データからスパイクを生成するように構成されたスパイクコンバータと、
前記生成されたスパイクから関連スパイクを選択するように構成されたインバウンドフィルタであって、前記関連スパイクは、ニューロンに関連する、インバウンドフィルタと、
カーネルを反転形式で記憶するように構成され、及びチャネルによって索引付けられた重みを記憶するように更に構成されたメモリと、
メモリにおいてパケット内で所定数の関連スパイクが収集されるまで、前記関連スパイクを収集し、及び前記パケットにおけるチャネル及び空間座標により、前記収集された関連スパイクを編成するように構成されたパケット収集モジュールと、
前記メモリにおいて行ごとのストライドを実行するように構成された畳み込みニューラルプロセッサであって、前記メモリ内のスクラッチパッドメモリを使用する畳み込みニューラルプロセッサと
を含むシステムであって、前記インバウンドフィルタは、前記畳み込みニューラルプロセッサの範囲外のイベントを除去する、システム。
【請求項2】
プーリング層を更に含み、行プーリング及び列プーリングは、別個に実行される、請求項1に記載のシステム。
【請求項3】
学習をフィルタごとに1つのニューロンに制限する学習アルゴリズムを実行する、請求項1に記載のシステム。
【請求項4】
学習を層ごとに1つのニューロンに制限する学習アルゴリズムを実行する、請求項1に記載のシステム。
【請求項5】
勝者総取り方式アルゴリズムを含む学習アルゴリズムを実行する、請求項1に記載のシステム。
【請求項6】
メモリビットに対するニューロンの比率は、0.10~0.81の範囲である、請求項1に記載のシステム。
【請求項7】
1つのシナプス動作(SO)当たりで使用されるエネルギーの比率は、7pJ/SO未満である、請求項1に記載のシステム。
【請求項8】
1つのシナプス動作(SO)当たりで使用されるエネルギーの比率は、3.5pJ/SO未満である、請求項1に記載のシステム。
【請求項9】
前記メモリは、SRAMである、請求項1に記載のシステム。
【請求項10】
前記デジタル入力データは、デジタル画像データである、請求項1に記載のシステム。
【請求項11】
デジタル入力データを受信することと、
スパイクコンバータにより、前記デジタル入力データからスパイクを生成することと、
インバウンドフィルタにより、前記生成されたスパイクから関連スパイクを選択することと、
カーネルを反転形式でメモリに記憶することであって、チャネルによって索引付けられた重みを記憶することを更に含む、記憶することと、
メモリにおいてパケット内で所定数の関連スパイクが収集されるまで、前記関連スパイクを収集することと、
前記パケットにおけるチャネル及び空間座標により、前記収集された関連スパイクを編成することと、
畳み込みニューラルプロセッサ及びスクラッチパッドメモリを使用して、前記メモリにおいて行ごとのストライドを使用してハードウェアにおいて畳み込みを実行することと
を含む方法。
【請求項12】
プーリング層においてプーリングすることを更に含み、行プーリング及び列プーリングは、別個に実行される、請求項11に記載の方法。
【請求項13】
学習をフィルタごとに1つのニューロンに制限する学習アルゴリズムを実行することを更に含む、請求項11に記載の方法。
【請求項14】
学習を層ごとに1つのニューロンに制限する学習アルゴリズムを実行することを更に含む、請求項11に記載の方法。
【請求項15】
勝者総取り方式アルゴリズムを含む学習アルゴリズムを実行することを更に含む、請求項11に記載の方法。
【請求項16】
メモリビットに対するニューロンの比率は、0.10~0.81の範囲である、請求項11に記載の方法。
【請求項17】
1つのシナプス動作(SO)当たりで使用されるエネルギーの比率は、7pJ/SO未満である、請求項11に記載の方法。
【請求項18】
1つのシナプス動作(SO)当たりで使用されるエネルギーの比率は、3.5pJ/SO未満である、請求項11に記載の方法。
【請求項19】
前記メモリは、SRAMである、請求項11に記載の方法。
【請求項20】
前記デジタル入力データは、デジタル画像データである、請求項11に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
[0001] 本願は、2019年7月25日付けで出願された「Event-based Classification of Features in a Reconfigurable and Temporally Coded Convolutional Spiking Neural Network」という名称の米国仮特許出願第62/878,426号の利益を主張するものであり、これは、あらゆる目的のためにその全体が参照により本明細書に援用される。
【0002】
[0002] 本願は、2019年10月31日付けで出願された米国特許出願公開第16/670,368号及び2018年11月1日付けで出願された米国仮特許出願第62/754,348号に関連し、これらの各々は、その全体が参照により本明細書に援用される。
【0003】
背景
分野
[0003] 本明細書における実施形態は、分類及び物体認識に関し、特に深層スパイキングニューラルネットワーク内のニューラル時間符号化を使用することによる分類方法に関する。
【背景技術】
【0004】
背景
[0004] 従来の深層畳み込みニューラルネットワークは、計算された関数で構成されるニューロンの多くの層で構成され、それにより、入力値及び出力値は、浮動小数点数である。畳み込みニューラルネットワークの最大の用途は、デジタル画像における物体分類での用途である。ニューラルネットワークの最初の層への入力値は、分類が望まれるシグナルのサンプルである。典型的なシグナルは、視覚シグナル、聴覚シグナル等の感覚シグナルである。視覚シグナルのサンプルは、画像内の色強度を表すピクセル値を含む一方、聴覚シグナルのサンプルは、入力値として周波数成分値を含む。深層畳み込みニューラルネットワークは、3つ以上の層のニューロンを有する。各層は、前の層から入力を受け取る。各入力値は、一般に、32ビット整数又は浮動小数点数である接続の重みを表す値で乗算される。ニューラルネットワークにおける各ニューロンは、多くの入力を有することができ、これらの乗算の結果を合算して合算値を作成することができる。正規化線形関数(ReLU)等の非線形関数が合算値に適用されて、出力値を生成する。畳み込みとは、浮動小数点データに計算的に適用されて、前層の定義されたエリアから特徴を抽出する関数である。プーリング層は、一般に、畳み込み層間に挿入されて、データをダウンサイジングする。プーリング層は、前層からの定義されたデータブロックに対して動作して、最大、平均又は平均プーリングを実行して次元を低減する。
【0005】
[0005] 深層畳み込みニューラルネットワークは、画像データセットを使用した物体分類作業で非常に成功してきた。典型的な深層畳み込みニューラルネットワークは、画像における単一の物体を分類するために、30億を超える乗累算関数を実行する必要があり得る。汎用コンピュータで使用される処理ノードは、通常、分類に必要な数十億の演算を妥当な時間内で実行するのに十分に高速ではない。専用乗累算デバイス、グラフィックス処理ユニット(GPU)、ベクトルプロセッサ、アナログ乗算器及びデジタル信号プロセッサのアレイは、深層畳み込みニューラルネットワークのスループットの増大及び待ち時間の削減のために使用されてきた。これらの全てのデバイスには、計算コアを並列で実行し、データのプロセスシーケンスを高速で連続して実行し、それにより大きいデータセットを短時間で処理することが可能であるという共通点がある。しかしながら、大きい計算力には、大きい消費電力が伴う。典型的なグラフィックス処理ユニットは、200~300ワットという大きい量を消費し得る。同じ原理によって機能し、消費電力がより小さいデバイスを作成しようと試みられてきたが、処理コアの数に限りがあることに起因して、これらは、画像データを同じ速度で処理することが可能ではない。画像内の物体を高速且つ低消費電力で分類することができるデバイスが必要とされている。
【0006】
[0006] スパイキングニューラルネットワークには、ニューラル回路が切り替えているとき、すなわちスパイク生成時にのみ電力を消費するという利点がある。スパースネットワークでは、スパイク数は、最小と指定される。そのような回路の消費電力は、非常に低く、典型的には、同様のニューラルネットワーク関数の実行に使用されるグラフィックス処理ユニットによって消費される電力の数千分の一である。しかしながら、これまで、時間スパイキングニューラルネットワークは、画像分類の精度需要を満たすことが可能ではなかった。スパイキングニューラルネットワークは、閾値ユニットのネットワークと、加法的積分されて1つ又は複数の閾値と比較される値を作成する重みに接続されたスパイク入力とを含む。乗算関数は、使用されない。分類作業でスパイキングニューラルネットワークを使用する従来の試みは、誤った仮定並びに従来の畳み込みニューラルネットワーク及びアーキテクチャの続く非効率的なスパイクレート近似により失敗してきた。スパイクレート符号化法では、従来の畳み込みニューラルネットワークにおいてニューラル間を伝達される値は、代わりにスパイクトレインとして近似され、それにより、スパイク数は、精度利得又はスパース性の恩恵を期待することができない浮動小数点値又は整数値を表す。そのようなレート符号化システムはまた、レート符号化システムにおいて数を伝達するのに十分なスパイクを処理するのに時間がかかるため、時間符号化システムよりもはるかに遅い。本発明は、それらの誤りを回避し、複雑なデータセット及びフレームベースの画像で優れた結果を返す。
【発明の概要】
【課題を解決するための手段】
【0007】
発明の概要
[0007] 実施形態は、デジタル入力データからスパイクを生成するように構成されたスパイクコンバータと、生成されたスパイクから関連スパイクを選択するように構成されたインバウンドフィルタとを含むシステムを含む。実施形態は、カーネルを反転形式で記憶するように構成され、及びチャネルによって索引付けられた重みを記憶するように更に構成されたメモリを更に含む。実施形態は、メモリにおいてパケット内で所定数の関連スパイクが収集されるまで、関連スパイクを収集し、及びパケットにおけるチャネル及び空間座標により、収集された関連スパイクを編成するように構成されたパケット収集モジュールも含む。最後に、実施形態は、メモリにおいて行ごとのストライドを実行するように構成された畳み込みニューラルプロセッサを含み、畳み込みニューラルプロセッサは、メモリ内のスクラッチパッドメモリを使用する。
【0008】
[0008] 実施形態は、デジタル入力データを受信することと、スパイクコンバータにより、デジタル入力データからスパイクを生成することとを含む方法も含む。実施形態は、インバウンドフィルタにより、生成されたスパイクから関連スパイクを選択することと、カーネルを反転形式でメモリに記憶することであって、チャネルによって索引付けられた重みを記憶することを更に含む、記憶することとを更に含む。実施形態は、メモリにおいてパケット内で所定数の関連スパイクが収集されるまで、関連スパイクを収集することと、パケットにおけるチャネル及び空間座標により、収集された関連スパイクを編成することとも含む。最後に、実施形態は、畳み込みニューラルプロセッサ及びスクラッチパッドメモリを使用して、メモリにおいて行ごとのストライドを使用してハードウェアにおいて畳み込みを実行することを更に含む。
【0009】
[0009] 更なる特徴及び利点並びに種々の実施形態の構造及び動作は、添付図面を参照して以下で詳細に説明される。本明細書に記載の特定の実施形態は、限定を意図していないことに留意されたい。そのような実施形態は、本明細書では例示のみを目的として提示される。本明細書に含まれる教示に基づいて、追加の実施形態は、関連する技術分野の当業者に明らかになるであろう。
【0010】
図面/図の簡単な説明
[0010] 添付図面は、本明細書に組み込まれて本明細書の一部をなし、本発明を示し、説明と一緒に本発明の原理を説明すると共に、関連する技術分野の当業者が本発明を作成し、使用できるようにする役割を更に果たす。
【図面の簡単な説明】
【0011】
【
図1】[0011]3チャネル(赤、緑及び青)畳み込みが従来の畳み込みニューラルネットワークでどのように実行されるかの図を示す。
【
図2】[0012]単一の5×5×1フィルタでの1チャネル畳み込みの一例を示す。
【
図3】[0013]レート符号化とイベントベースランク符号化との間の違いを示す。
【
図4】[0014]全結合層及び畳み込み層での学習プロセスを示す。
【
図5】[0015]畳み込みニューラルプロセッサ及び全結合ニューラルネットワークの3つの異なるユーザ構成可能なモードを示す。
【
図6】[0016]本手法の特定の実施形態の革新的なニューロン状態記憶手法と対比し得る従来のニューロン状態記憶手法の高レベル記述である。
【
図7】[0017]各CNPがイベントを処理する例示的な手法を示す。
【
図8】[0018]従来の畳み込みアルゴリズムと、新しいイベントベースの畳み込みアルゴリズムとの比較を示す。
【
図9】[0019]イベントベースの畳み込みに従ってパケット内のスパイクを処理する主要ステップを示す。
【
図10】[0020]ターナリフィルタ又はバイナリフィルタ構成のフィルタSRAMレイアウト例を示す。
【
図12】[0022]最大プーリング演算が実行中であるステップを示す。
【
図13】[0023]フィルタ及びニューロン項を使用するイベントベースの畳み込みを説明する。
【
図14】[0024]例示的なK-WTAハードウェア実装の状況を示す。
【
図15】[0025]グループのサイズがサイズにおいて様々であり得ることを示す。
【
図16】[0026]勝者が「ベストオファー」形態でどのように選択されるかを示す。
【
図17】[0027]「ファーストグッドオファー」モードでのK-WTAの一例を示す。
【
図18】[0028]この方式の一実施形態がSNNにどのように適合することができるかを示す。
【
図19】[0029]WTAブロックへのフィルタ結果入力を生成する一実施形態のブロック図を示す。
【発明を実施するための形態】
【0012】
[0030] 本発明の特徴及び利点は、図面と併せて解釈される場合、以下に記載の詳細な説明からより明白になり、図面中、同様の参照文字は全体を通して対応する要素を識別する。図面では、同様の参照番号は、一般に、同一の、機能的に同様の及び/又は構造的に同様の要素を示す。要素が最初に現れた図面は、対応する参照番号における一番左の桁によって示される。
【0013】
発明の詳細な説明
用語集
[0031] この説明では、ニューロンの電位がイベント単位で増分又は減分されるメモリロケーションは、電位として示される。各ニューロンは、20ビット符号付き電位を有する。ニューロンは、完全に処理された後、ニューロン活性化を出力する。この活性化は、1ビット~4ビットであり、符号がない。これらの活性化は、次の層に送られるイベントであり、異なるCNPに記憶される。ニューロン電位は、未処理ニューロン状態であると解釈することができる一方、活性化は、処理済みニューロン状態として見ることができる。
【0014】
[0032] 活性化:活性化とは、処理済みニューロン状態である。ニューロンは、イベントのパケット内の複数のイベントを処理する。全てのイベントは、処理された後、20ビット符号付き電位が1~4ビット活性化にどのように変換されるかを定義する変換を介して電位(未処理ニューロン状態)から活性化に変換される。この変換は、活性化関数と呼ばれる。
【0015】
[0033] DVSカメラ:DVSは、動的視覚センサを表す。DVSカメラは、本手法の実施形態のようなイベントベースのプロセッサが直接処理するイベントを生成する。大半のカメラは、フレームベースの画像を生成する。DVSカメラの主な利点は、待ち時間が短く、極めて低電力の動作の潜在性である。
【0016】
[0034] CNP:畳み込みニューラルプロセッサ。各NPは、本手法を実施するチップにおける処理コアである。各々は、ユーザ構成に応じてCNP又はFNPの何れかであり得るが、両方であることはできない。CNPは、イベントベースの畳み込み又は分離可能畳み込み演算を実行する。
【0017】
[0035] FNP:全結合ニューラルプロセッサ。これらの処理コアは、全結合トポロジによって入力に接続される。
【0018】
[0036] 入力イベントバッファ/入力イベントバッファメモリ:入力イベントバッファメモリは、現在層による処理の準備ができるまで入力イベントを保持する。入力イベントバッファメモリは、シングルバッファ又はダブルピンポンバッファとして使用することができる。
【0019】
[0037] 反転カーネル形式:反転カーネル形式とは、個々のフィルタカーネルが記憶される形式である。カーネルは、元のフィルタカーネルを180°回転させたものである。反転カーネル形式は、CNPハードウェアが、イベント重み積を送るべき電位のアドレスを迅速に計算できるようにする。
【0020】
[0038] 最大プーリング:最大プーリングとは、N個の入力であり、最大入力の値を有する単一の出力を生成する演算である。空間プーリングは、多くの場合、畳み込みの空間成分のみに対して行われる。最大プーリングが言及される場合、それは、特に2×2最大プーリング実装を指す。2×2最大プーリング実装は、2×2=4個の入力値及び単一の出力値を有する。最大プーリングは、多くの場合、ネットワーク入力の次元を低減し、したがって必要とされるパラメータ数及び計算量を低減するために使用される。
【0021】
[0039] NP:ニューラルプロセッサ。ニューラルプロセッサは、FNP又はCNPの何れかであるように構成することができる。本手法を実施するチップは、複数のNP(現在80)を有する。
【0022】
[0040] ピンポンバッファ:ピンポンバッファとは、2つの別個のバッファに分割されるバッファである。第1のバッファ(捕捉バッファ)は、入力が非同期で到着するにつれて入力を捕捉する一方、第2のバッファ(処理バッファ)は、NPによって現在処理中の入力を含む。ピンポンバッファは、イベントが到着するにつれてCNPがイベントを非同期で収集できるようにするため、入力イベントの保持に使用される。全ての現在イベントが処理バッファにおいて処理され、捕捉バッファが全てのイベントをパケット内に有した後、捕捉バッファは、全てのイベントを処理に向けて処理バッファに転送する。
【0023】
[0041] 電位:電位は、未処理ニューラル状態である。NPでは、電位は、20ビット符号付き整数として記憶される。全てのイベントが処理された後、ニューロンは、活性化関数を使用して電位をイベントに変換する。電位が、活性化イベントになるための閾値を超えないことも起こり得る。この場合、イベントは、送信されない。
【0024】
[0042] 処理済みニューロン状態:活性化又はニューラル活性化の別名。
【0025】
[0043] スクラッチパッドメモリ:8つのニューラル処理エンジンの各々が、イベントが処理されるにつれてニューロン電位を記憶する必要があるCNPメモリの部分。スクラッチパッドメモリは、ニューラル処理エンジンごとに512の20ビットニューロン電位を記憶するのに十分に大きい。各ニューラル処理エンジンは、それ自体のスクラッチパッドを有する。
【0026】
[0044] 未処理ニューロン状態:電位又はニューロン電位の別名。
【0027】
序文
[0045] 本明細書は、本発明の特徴を組み込んだ1つ又は複数の実施形態を開示する。開示される実施形態は、単に本発明を例示するものである。本発明の範囲は、開示される実施形態に限定されない。
【0028】
[0046] 記載の実施形態及び「一実施形態」、「実施形態」、「実施形態例」等への本明細書での言及は、記載の実施形態が特定の特徴、構造又は特性を含み得るが、あらゆる実施形態が必ずしもその特定の特徴、構造又は特性を含むわけではないことを示す。更に、そのような句は、必ずしも同じ実施形態を指すわけではない。更に、特定の特長、構造又は特性が一実施形態に関連して記載される場合、明確に記載されるか否かに関係なく、そのような特徴、構造又は特性を他の実施形態と関連して行うことは、当業者の知識内であることが理解される。
【0029】
[0047] 本発明の実施形態は、ハードウェア、ファームウェア、ソフトウェア又はそれらの任意の組合せで実施され得る。本発明の実施形態は、1つ又は複数のプロセッサによって読み出して実行し得る機械可読媒体に記憶される命令として実施することもできる。機械可読媒体は、機械(例えば、計算デバイス)によって可読の形態の情報を記憶又は送信する任意の機構を含み得る。例えば、機械可読媒体は、読み取り専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、磁気ディスク記憶媒体、光学記憶媒体、フラッシュメモリデバイス、電気、光学、音響又は他の形態の伝播信号(例えば、搬送波、赤外線信号、デジタル信号等)等を含み得る。更に、ファームウェア、ソフトウェア、ルーチン、命令は、特定の行為を実行するものとして本明細書に記載され得る。しかしながら、そのような記載は、単に便宜上のものであり、そのような行為は、実際には、計算デバイス、プロセッサ、コントローラ又はファームウェア、ソフトウェア、ルーチン、命令等を実行する他のデバイスから生じることを理解されたい。
【0030】
[0048] しかしながら、そのような実施形態をより詳細に説明する前に、本発明の実施形態を実施し得る環境例を提示することが有益である。
【0031】
[0049] 深層ニューラルネットワーク(DNN)は、入力層と出力層との間に複数の隠れ層を有する人工ニューラルネットワークとして定義され、各層は、パーセプトロンを含む。畳み込みニューラルネットワーク(CNN)は、畳み込みを実行し、視覚処理に主に使用されるDNNの一種である。CNNは、シナプス重みをニューロン間で共有する。重み値を共有するパーセプトロン内のニューロンは、フィルタ(別称カーネル)と呼ばれる。従来のCNNにおける各層は、パーセプトロンである。本実施形態では、イベントベースの畳み込みは、パーセプトロンではなく、イベントベースのランク符号化を使用してスパイキングニューラルネットワーク(SNN)において実施され、これは、速度及びかなり低い消費電力という利点を有する。ランク符号化は、値が、送信されたスパイクの順に符号化される点でスパイクイベントのレート符号化と異なる。レート符号化では、送信されるスパイクの繰り返し率は、実数を表す。CNNは、imageWidth(画像幅)×imageHeight(画像高さ)×channelNumber(チャネル数)として定義されるカラー画像を処理する。カラー画像は、一般に3チャネル(赤、緑及び青)を有する。CNNは、多くの場合、多くの層を有し、したがって、畳み込み層の出力は、次の畳み込み層への入力である。本発明で実施されるイベントベースの畳み込み法を論考するために、パーセプトロンベースのCNNで畳み込みがどのように行われるかについての説明を提供し、CNNでの畳み込みの結果及び本発明でのイベントベースの畳み込みの結果が同じ結果を返すことを示す。
【0032】
畳み込み
[0050]
図1は、畳み込み法100を示す。複数のフィルタからの2つの5×5フィルタ120、130が示される。フィルタ#1(120)及び#2(130)は、各入力チャネル140、150、160からの各色である赤、緑及び青ごとに1つずつ、3つのカラーチャネルカーネル170a、170b、170cを有する。フィルタの幅及び高さは、画像よりも小さく、3×3、5×5及び7×7が最も一般的なサイズである。フィルタアレイは、画像エリアにわたって移動する。畳み込みの結果は、ニューラル電位を記憶するアレイにおいて1つの値に合算される。点線の輪郭線は、フィルタ#1の畳み込みが入力にわたって行われる場所を示す。フィルタ#1(120)の3×3電位アレイでのより小さい点線の枠は、これらの入力が合算される場所を示す。
【0033】
[0051] 本発明の1つの独自の特徴は、入力、重み又は入力及び重みの両方がターナリ又は1ビット値として表される場合、乗算がないことである。値は、合算され、変数閾値と比較され、閾値に達するか又は閾値を超える場合、スパイクイベントが生じる。スパイクイベントは、内部バスを経由してネットワークの次の層に送られる。乗算がないことにより、従来技術を上回る注目すべき速度利点が生じる。
【0034】
[0052]
図2は、ランク符号化を使用して本発明の実施形態で実施される3つの畳み込み法を示す。有効な畳み込みでは、フィルタ領域が画像の中心の周りを移動し、エッジを考慮しないため、結果としての画像エリアは、元の画像エリアよりも小さくなる。完全畳み込みでは、画像領域は、ゼロでパディングされ、エッジを含む全画像領域を畳み込みに含めることができる。同じ畳み込みで、エッジは、含まれるが、畳み込まれる領域は、元の画像領域と同じである。
【0035】
[0053]
図3は、コンピュータシステムにおける文字のニューラルネットワークスパイクレート符号化、従来のパーセプトロンニューロン乗累算演算(MAC)及び従来のバイナリ符号化間の違いを示す。本発明では、スパイクランク符号化を使用して、畳み込みニューラルネットワークの関数を実行する。
【0036】
[0054] レート符号化は、上部パネル310に示されている。多数のシナプスのうちの2つの入力シナプス320、330によって受け取られたスパイクは、複数の積分期間においてt1と記される1つの完全積分期間にわたり示される。この積分期間中、最初のシナプスは、25個のスパイクを受け取る一方、2番目のシナプスは、27個のスパイクを受け取った。全てのシナプスの和は、52であり、これは、ニューロンのシミュレートされた膜電位である。続けて、Tanh(n)等の非線形関数又は線形整流器(ReLU)関数が、シミュレートされた出力値に適用される。その結果としての出力値は、一連のスパイクとして次のニューラル層内の1つ又は複数のシナプスに送られる。積分時間は、値を受け取るのに十分なスパイクが発生できるような長さである。左下パネル330では、ランク符号化が示されている。多数のシナプスのうちの4つによって受け取られたスパイクが、t0~t5と記された6つの積分期間にわたって示されている。積分時間は、短く、各積分期間内で繰り返しているスパイクは、無視される。最初の積分期間の積分値は、3であり、続く4つの積分期間では4である。最後の積分期間は、値2を有する。これらの値は、ニューロンのシミュレートされた膜電位である。シミュレートされた膜電位が閾値に達するか又は閾値を超える場合、スパイクは、次のニューラル層内の1つ又は複数のシナプスに送られる。中央右側パネル350では、従来のパーセプトロンにおける複数のニューロンのうちのニューロンのセクションの積分法が示されている。W11~W95と記された重み値の集合が入力値I0~I9で乗算される。結果値は、累積されて、ニューロンのシミュレートされた膜電位を形成する。続けて、Tanh(n)等の非線形関数又は線形整流器(ReLU)関数が、シミュレートされた出力値に適用される。結果としての出力値は、整数又は浮動小数点値として次のニューラル層内の1つ又は複数のシナプスに送られる。右下パネル370では、従来のバイナリ符号化法が参照のために示されている。バイナリ符号化方式は、文字及び数字を符号化するために従来のコンピュータシステムで広く使用されている。バイナリ符号化された数字及び文字を用いた計算にブール代数が適用される。
【0037】
[0055]
図4は、本発明の実施形態で使用される学習法を示す。2つのオンチップメモリブロック及びその内容物が示される。(1)値5、1、0、3及び4を有する5つのニューロンのシミュレートされた膜電位のアレイがメモリ内のデータ構造から作業メモリにロードされる。これらの値は、ゼロ以外の重み値を含むシナプスにおけるニューロンによって受け取られたスパイクから導出される。(2)学習閾値を上回る電位を有するニューロンが選択される。図では、これは、5である。(3)イベントパケットが低い方から高い方の順にソートされる。(4)そのニューロンのイベントのパケットは、関連する重みベクトルと一緒にメモリにロードされる。(5)重みベクトルがイベントパケット値と一致しない場合には常に、未使用重みエントリがアレイに作成され、入力イベントが、関連付けられたゼロ重み値を有する場合には常に、未使用入力エントリが第2のエントリに作成される。(6)未使用入力及び未使用重みアレイの両方がシャッフルされて、学習ルールにランダム性をもたらす。(7)未使用入力及び未使用重みにおける最初の位置が選択される。(8)その後、未使用重み及び未使用入力アレイにおける次のエントリが選択され、全てのエントリが反復されるまで、このプロセスが繰り返される。(9)接続リストアレイが作業メモリにロードされ、(10~11)接続リストアレイが反復されて、最大電位を有するニューロンのIDを除去する。(12)未使用スパイクは、関連付けられた重み値0を有するスパイクである。(13)ニューロンIDが接続リストに追加された後、未使用スパイクロケーションは、未使用重み値と交換される(14~15)。重みベクトルは、ソートされた形式で記憶される(16)。
【0038】
[0056]
図5は、ニューラルプロセッサ(NP)の編成を示す。各ニューラルプロセッサは、複数のニューロンと、第2の複数のシナプスとで構成される。(A)4つのニューラルプロセッサは、3つの畳み込みニューラルプロセッサ(CNP1~CNP3)と、初期化中、4番目のCNP(CNP4)として又は(B)限られた接続性を有する(タイプ2)全結合ニューラルプロセッサとして構成され得る1つの全結合ニューラルプロセッサ(FNP1)とからなるグループにある。タイプ2FNP接続性は、オフチップDRAMを使用して増大させることができる。更に別の構成(C)(タイプ3)では、FNPは、同じグループ内のCNPの全てのリソースを使用する。この場合、FNPは、いかなる外部メモリも使用する必要がなく、これは、スタンドアロン用途で有益である。複数のグループは、(D)に示されるメッシュと呼ばれるチップ上の共通ネットワークを経由して通信する。入力イベントは、デュアルバッファ(ピンポンバッファ)に配置され、それにより、一方のバッファが処理され、その間、他方のバッファが充填される。各NPは、複数のニューロン及び複数のシナプスを並列して更新する8つの並列エンジンを有する。シナプス重みは、オンチップである重みSRAMに記憶される。8つの並列エンジンの各々は、共通メッシュバスとも通信する。ニューロンがスパイクを生成するか又は電位を次のNPに送るとき、パケットにおけるニューロンのアドレスをバスに配置する。受け取り側NPにおいて、パケットが受け取られて、そのNPによる処理に向けてピンポンバッファとも呼ばれる入力イベントバッファSRAMに入れられる。画像におけるt+n(ここで、nは、値である)は、イベントのタイミングを示し、t+30は、情報が時間t+30サイクルでバッファにおいて受け取られることを示し、値は、時間tにおいてバッファに記憶される。
【0039】
[0057] 当技術分野で既知のように、深層ニューラルネットワーク(DNN)は、画像分類、顔認識等の作業のための一般的な選択肢になった。しかしながら、典型的な実装は、相当なエネルギーを使用し、広い面積を必要とするフォンノイマンアーキテクチャでの膨大な計算を必要とすることになる。したがって、取り組みは、種々のタイプの専用ハードウェアを含む従来のデジタルハードウェアからニューラルアルゴリズムの実施へのシフトを見せた。しかしながら、専用ハードウェアの問題の中でも顕著なのは、スケーラビリティ、効率及び消費電力の必要性である。
【0040】
[0058] これらの問題を受けて革新的なアーキテクチャを導出するに当たり、本発明者らは、少なくとも3つの寄与を割り出した:(a)イベントベースの演算、(b)プッシュスルーされる情報量を制御し、それによりプロセスの精度及び消費電力を制御するハードウェアの設計、並びに(c)使用されるメモリ空間がより少ないようなニューラルネットワークにおける実際の手順及び重み及び活性化の精度/ビット数の設計。
【0041】
[0059] ビット数の選択は、ニューラルネットワークアーキテクチャでの層の設計における1つの重要な考慮事項である。ニューラルネットワークに一般に使用されるデフォルトビット数は、32ビットであり、乗算器は、32ビット×32ビットである。使用されるビットが少ないほど、その結果として、必要とされる消費電力及びチップ面積が小さくなるが、精度損失を伴う。したがって、1ビット×1ビット乗算器は、ビット選択への最低限度を表す。初期実験は、ターナリ重みを使用して92%精度が達成可能であることを示した。本発明者らによる実験は、4×4ビット乗算器が、1ビット×1ビット解決策で必要とされるよりも消費電力及びチップ面積要件をそれほど増大させずに、精度低下が比較的低い(従来の32ビット×32ビット手法と比較して)という点でスイートスポットを提供することも示した。スイートスポット選択は、使用される全体パラメータ数を1/3~1/4に削減することになる。種々の実施形態では、使用されるビット数は、異なる層で異なり得、すなわち、これらの実施形態では、使用するビット数(1×1、2×2、4×4等)の層ごとの選択を行い得る。
【0042】
[0060] スパイキングニューラルネットワークのハードウェアのみの実装で進歩するために、本発明者らは、演算カウントを低減しようとした。種々の実施形態では、手法は、イベントベースであり、あらゆる畳み込みストライドではなく、スパイクが符号化される。スパイクは、活性化があるときにのみ発生し、イベントは、スパイクが発生するときのみ(あらゆる畳み込みストライド時ではなく)処理されるため、イベント数は、はるかに少ない。イベント数がはるかに少ないため、これは、演算数の低下に繋がる。本開示の典型的な実施形態では、革新的な手法を採用することにより、演算カウントは、1/3又は1/4に低減され得る。
【0043】
[0061] 更なる革新的な進歩において、本発明者らは、必要とするパラメータ(例えば、重み)がより少ない特定の畳み込みタイプを使用しようとした。これらのパラメータは、必要なニューラル計算を実行するために記憶を必要とするため、物理的なメモリエントリ要件が低減することになる。そのような別個の畳み込みに関わる計算は、関わりがより深くなるが、追加の計算は、対処可能であり、パラメータ数及び関連付けられた物理的なメモリエントリの大幅な低減に繋がる。物理的なメモリエントリ数のそのような低減により、はるかに大きいニューラル計算容量が特定のチップの所与のRAMエリア内に収まることができる。
【0044】
[0062] 畳み込みニューラルネットワーク実装は、典型的には、各ニューロンにおける電位値の保存にかなりのメモリ(例えば、SRAM)を必要とする。典型的なニューラルネットワークでは、多数のニューロンがあるため、利用可能なメモリ(例えば、SRAM)の大半は、ニューロンに関連付けられた電位の保存に使用される。したがって、SNNニューラルネットワークのハードウェア実装で利用可能なニューロンの総数は、最終的に、利用可能なメモリ(例えば、SRAM)によって制限される。スパイキングニューラルネットワークのハードウェアのみの実装で進歩するために、本発明者らは、電位ではなく、活性化レベルを保存することによってメモリを別様に使用しようとした。活性化レベルの大きさは、典型的には、値の捕捉に12ビット~20ビットを必要とする一方、スパイクは、1、2又は4ビットのみで捕捉され得る。これは、ビット要件を1/6に低減し、有効記憶能力を実質的に増大させる。
【0045】
[0063] ニューラルネットワークの従来の実施は、一度に1層ずつ、その構造に従うことによってネットワークにおいて計算を実行する。この手法は、計算が進むにつれて着実にメモリに出力される大量の中間データを生成する。層の計算時、中間データは、同じ計算ハードウェアに戻され、全ての層での計算が終わるまでプロセスが繰り返される。計算ハードウェアとメモリとの間で輸送しなければならない中間データ量は、ニューラルネットワークサイズの増大に伴って増大する。追加の利点において、本発明者らは、複数の層にわたる計算の融合を利用した。各層を処理し、完了してから次の層に進むのではなく、本発明者らは、複数の層が一緒に計算されるように計算を再構築し、中間データを記憶するか又はメモリから中間データを検索する必要性を回避する。要するに、融合は、2つ以上の層の演算をとり、それらを融合して1つの演算にする。
【0046】
新しい手法の定量的メトリック
[0064] ここで、改良の定量的評価を参照して、定量的改善の3つのエリアの説明を提供する:(1)畳み込みニューラルプロセッサ(CNP)内の「ニューロン電位」表現の記憶効率、(2)イベントベースの畳み込みアルゴリズムへの手法、すなわちイベントのフィルタリング、フィルタの順序付け及びニューロン電位への増分又は減分の個々の適用、並びに(3)ニューラルネットワークにおける畳み込み演算の新しい教師なし学習アルゴリズム。
【0047】
CNPへの効率的なニューロン状態記憶の性能指数
[0065] ニューロンがCNPにどのように記憶されるかの詳細を説明する前に、種々の用語及びCNPがイベントを処理する手法について説明する。ニューロン電位の値が記憶されるメモリロケーションは、イベントごとに増分又は減分され、単に電位として知られている。例として、各ニューロンは、20ビット符号付き電位を有し得る。ニューロンは、完全に処理された後、ニューロン活性化を出力する。ここでも、例として、この活性化は、1ビット~4ビットであり得、符号なしである。これらの活性化は、異なるCNPに記憶されるニューラルネットワーク内の次の層に送られるイベントである。ニューロン電位は、未処理ニューロン状態として解釈することができる一方、活性化は、処理済みニューロン状態として見ることができる。特定のCNN層への入力が次元M×N×Cを有し、ここで、Mは、入力の高さであり、Nは、入力の幅であり、Cは、入力の入力チャネルの数であり、フィルタの次元がH×W×Cであり(H及びWは、フィルタの高さ及び幅である)、層内にF個のフィルタがある場合、その結果としての電位(したがって活性化)の総数は、M×N×Fである。本発明者らによる1つの重要な革新は、少数の20ビット符号付き電位が、層が常駐するCNPに一時的に記憶される一方、全ての活性化が、これらの活性化がイベントとしてターゲット層に送られるCNPに記憶されることである。20ビット電位の小さいサブセットのみが記憶されるため、ニューロン状態は、非常に高密度で記憶され得る。
【0048】
[0066]
図6は、本手法の特定の実施形態の革新的なニューロン状態記憶手法と対比し得る従来のニューロン状態記憶手法の高レベル記述である。大まかに言えば、単一の入力を処理する際、未処理ニューロン状態の全体は、一度に記憶されず、むしろその小さいサブセットが一度に記憶される。記憶される未処理ニューロン状態のサブセットは、次いで、入力データに関連付けられた全ての計算が完了するまで、新しい未処理ニューロン状態で上書きされる。この手法をとることにより、
図6Bにおける本手法を用いて未処理ニューロン状態を記憶するために使用されるメモリ量は、
図6Aにおける従来の手法で使用されるメモリ量よりも少ない。本手法のハードウェア実装を使用して同数の未処理ニューロン状態を処理することができる。
【0049】
[0067] ニューロン状態メモリ管理手法の説明を更に詳細にここで参照すると、完全に処理すべきパケット、すなわちイベントの集合に対して実行しなければならない3つの主な動作がある。最初の2つの動作は、各イベントに対して行われる。3番目の動作は、各ニューロンに対して行われる。処理前、イベントは、ニューロンによってソートされる。イベントごとに、重み値又は活性化が両方ともターナリよりも大きい場合、イベント値をまず重み値で乗算しなければならず(ステップ1)(1ビット又はターナリビットが使用される場合、乗算演算は、必要ない)、その結果生成される積を、次いで、計算中のニューロンに対応する電位に加算しなければならない(ステップ2)。第3に、各電位値は、20ビット符号付き電位を1~4ビット符号なし活性化(ターナリ活性化の場合、符号付き)に変換するユニーク関数に露出させる。次は、各ステップのニューロン状態が記憶される場合及び場所の説明である。
【0050】
[0068]
図7Aは、各CNPがイベントを処理する例示的な手法である。特定の例では、各CNPは、並列で実行される8つのニューラル処理エンジンを有する。これらのニューラル処理エンジン内のメモリは、電位の記憶に使用され、再使用される。ステップ1~3は、CNPごとに8つのニューラル処理エンジンにわたり行われる。合計イベントの小さいサブセットは、8つのニューラル処理エンジンにわたって同時に処理される。この時間中、8つのニューラル処理エンジンの各々は、512の20ビット符号付き電位を記憶するのに十分なメモリを有する。このメモリは、ニューラル処理エンジンのスクラッチパッドメモリと呼ばれる。その場合、8つ全てのニューラル処理エンジンにわたる結合スクラッチパッドメモリ(
図2Bにおける緑色矩形)は、512
*20
*8=81,920ビットである。これは、各ニューラル処理エンジンが一度に512のニューロンを処理することを意味する。512のニューロンが処理された後、ニューラル処理エンジンは、これらのイベントが接続された層を実行中のCNPに送られるメッシュに1~4ビット活性化イベントを配置する。1~4ビット活性化イベントは、ターゲットCNPにルーティングされ、このCNPの入力イベントバッファメモリ(
図2Bにおける青色矩形)に記憶される。入力イベントバッファメモリのサイズは、344,064ビットである。したがって、全てのニューロン状態の記憶に使用されるCNPごとのメモリの総量は、81,920ビット+344,064ビット=425,984ビットである。当業者が理解するように、上記の数は、本発明の実施形態の値の限定ではなく、例示である。
【0051】
[0069]
図7は、CNPがイベントをどのように処理するか(ピンポンバッファモードで)の一例でもある。ピンポンバッファの外に面するバッファ(入力イベントRAM内の上部ボックス)は、入力イベント(青い矢印)がメッシュから到来するにつれて、バッファの対応する場所に配置する。「パケット終了信号」(赤色矢印)が最終的に受信され、イベント(黒い矢印)を、外に面するバッファから内に面するバッファ(入力イベントRAM内の下部ボックス)に移動させる。これらのイベントは、8つのNPエンジンによって処理される。出力イベント(緑色矢印)は、計算されると直ちにメッシュに配置されて、次のNPにルーティングされ、したがって20ビット電位を記憶する必要がない。時間の単位は、任意であり、物事が発生する順序を示すことのみを意図する。
【0052】
[0070] 有用な性能指数である、単位メモリ当たりで表すことができるニューロンの総数を使用して、本手法の種々の実施形態の進歩の定量的恩恵を捕捉し得る。未処理状態(電位)及び処理済み状態(活性化)の両方がイベント処理計算中のある時点でメモリ(例えば、オンチップメモリ)に記憶される場合、ニューロンは、表現されるように定義される。メモリにより、ニューロン状態の保持専用のメモリのみが参照され、オンチップメモリ全体は、参照されない。
【0053】
[0071] 性能指数の種々のシナリオを計算するに当たり、性能指数の計算の一環として2つの考慮事項を認めるべきである。第1に、これらの例示的な計算では、活性化イベントのサイズは、1~4ビットの範囲であり得る。第2に、CNPは、シングルバッファ入力イベントバッファ又はダブルバッファ(別称ピンポン)入力イベントバッファを使用するように構成され得る。シングルバッファは、待ち時間の増大を犠牲にして、ダブルバッファが扱うことができるイベント数の2倍を扱うことができる。これらの2つの考慮事項を念頭に置き、ハイエンドニューロン密度シナリオ及びローエンドニューロン密度シナリオについて系統的に説明し得る。
【0054】
[0072] ハイエンドニューロン密度シナリオでは、活性化イベントは、1ビットのみであり、シングルバッファ入力イベントバッファが使用されている。これは、入力イベントバッファメモリ全体が1ビット活性化イベントの記憶専用であり得ることを意味し、これは、344,064個のニューロンを表し得ることを意味する。しかしながら、使用されている合計メモリが計算される際、スクラッチパッドメモリのコストを含める必要がある。そうすると、ハイエンドニューロン密度シナリオでのメモリに対するニューロンの比率は、
表されるニューロン/単位メモリ=(344,064ニューロン)/(425,984ビット)=(344,064ニューロン)/(425,984ビット)=0.81ニューロン/ビット
である。
【0055】
[0073] ローエンドニューロン密度シナリオでは、活性化イベントは、4ビットであり、ダブルバッファ入力イベントバッファが使用されている。ダブルバッファは、シングルバッファの場合と同様に、入力イベントバッファメモリ量の半分のみが利用可能であることを意味する。1ビット活性化を4ビット活性化で置換することは、1ビットの代わりに、各活性化に4ビット記憶が必要とされることも意味し、これは、記憶することができる活性化の総数を1/4に低減する。単位メモリ当たり表すことが可能なニューロンの総数は、1/8に低減する。
表されるニューロン/単位メモリ=(344,064ニューロン)/(8*425,984ビット)=(43,008ニューロン)/(425,984ビット)=0.10ニューロン/ビット
【0056】
[0074] これらの2つのシナリオでの値の範囲は、0.81~0.10ニューロン/ビットである。より小さいスクラッチパッドメモリ及び/又は1ビット活性化と共に20ビットよりも小さい電位を使用することが可能である場合、恐らく更に高い密度を達成することが可能である。活性化の記憶に圧縮が使用されない場合、実施形態の実際的なニューロン密度限界が1ニューロン/ビットに近いように思われる。このシナリオでは、ニューロンの電位を一度に1つずつ計算し、スクラッチパッドメモリとして単一のレジスタを有する。何らかのタイプの圧縮が利用された場合、理論上の限界は、1よりも大きい値であり得る。しかしながら、活性化の符号化又は復号化の計算コストは、潜在的に恩恵を上回る。
【0057】
[0075] 種々の実施形態では、メモリは、揮発性SRAM及び不揮発性メモリ技術を含む種々のタイプのメモリによって実現され得る。
【0058】
イベントベースの畳み込みの性能指数
[0076] 次の性能指数は、CNPにおけるイベントベースの畳み込みの進歩を捕捉する。CNPは、効率的にイベントを処理し、各ニューラル処理エンジンのスクラッチパッドメモリにおける対応する電位を増分(又は減分)するように設計される。ニューラル処理エンジンによってイベントを迅速に並列に処理できることを保証するために、幾つかの最適化を本手法の種々の実施形態に統合した。
【0059】
[0077]
図8は、従来の畳み込みアルゴリズムと、新しいイベントベースの畳み込みアルゴリズムとの比較を示す。
図8Aでは、値がゼロであっても、全てのエントリを計算しなければならない。畳み込みフィルタ(青)は、入力にわたって「スライド」する。従来の畳み込みアルゴリズムでは、所与の電位エントリへの全ての寄与が一度に計算されることに留意されたい。
図8Bは、イベントベースの畳み込み手法を示す。フレームベースの画像をイベントベースの画像にまず変換しなければならない。これは、事前処理によって又は新しいイベントベースの畳み込みアルゴリズムを使用してチップ上の専用スパイク専用エリアによって行うことができる。DVSカメラからのイベントベースの画像は、アルゴリズムによって直接処理することができる。事前処理された入力におけるグレーエントリは、処理しなければならないイベントである。イベントベースの畳み込みが実行しなければならない計算数は、イベント(グレーの正方形)数に正比例することに留意されたい。イベントスパース性という用語は、イベントスパース性としてのピクセルに対するイベントの比率である。所与のニューロンの電位への全ての寄与が同時に計算されるわけではないことに留意されたい。2つのイベントが同じニューロンに影響し得、したがってイベントベースの畳み込み計算が完了したと呼び得るには、先に全てのイベントを処理しなければならない。
【0060】
[0078]
図8では、入力がフレームベースの画像であると仮定される。グレーの入力正方形は、計算しなければならないエントリを示す。単一の入力チャネルについての計算のみが示されている。部分Aは、従来の畳み込みが重みカーネル(青色)を入力画像にわたってスライドすることにより、入力におけるあらゆるエントリを計算しなければならないことを示す。明るいオレンジ色の正方形は、電位アレイ内のエントリを示し、暗いオレンジ色のエントリは、現在計算中のエントリに対応する。部分Bは、イベントベースの畳み込みを有する。まず、フレームベースの画像は、事前処理を介してイベントベースの画像に変換しなければならないことに留意されたい。フィルタは、180°回転しなければならない。これにより、ハードウェアは、重みと入力との積を現在の電位ロケーションに送ることができる。この絵では、イベントベースの畳み込みには、図に示される計算の4つのみが必要とされる。
【0061】
[0079] 次に、イベントベースの畳み込みが実行されるプロセスを提供し、次いで主要な革新について説明する。この説明では、「イベント」及び「スパイク」という用語は、同義で使用されることに留意されたい。また、イベントが4つの情報:イベントのxロケーション、イベントのyロケーション、イベントのチャネル及びイベントの1~4ビット値で構成されることを想起する。イベントは、パケットと呼ばれるイベントグループに編成される。
【0062】
イベントベースの畳み込み
[0080] 例示的な畳み込みニューラルプロセッサ(処理の基本単位)のアーキテクチャの概説は、以下のブロックを含む:(1)インバウンドフィルタブロック、(2)パケット収集ブロック、(3)フィルタメモリ及びカーネル、並びに(4)畳み込み演算。これらのブロックに先立ち、入力データをネイティブ形式でとり、続くブロックによって処理し得るスパイクにそれを変換するスパイクコンバータがある。
【0063】
[0081] 最初のブロックであるインバウンドフィルタブロックの目的は、各ニューロンの関心のあるスパイクを選択することである。各ニューロンは、関心のある入力の特定の部分を有し、したがってスパイクがその関心ゾーン内にあるときのみ活性化する。カラー画像では、各ニューロンのフィルタの一実施形態は、3つのRGBチャネルを有し得る。
【0064】
[0082] パケット収集ブロックは、処理するパケットを形成するのに十分なスパイクが存在するまで入力スパイクを経時蓄積する。パケットは、固定の一定サイズのイベント(スパイク)の集合である。パケット収集ブロックと共にメモリが含まれ、メモリは、SRAM又は他のメモリの形態であり得、パケットが形成されているとき、パケットを記憶する。パケットは、予め定義された固定サイズのイベントの集合である。メモリ内において、イベント(スパイク)は、チャネル(例えば、カラー画像データの場合、RGB)によって編成され、二次元座標によってソートされる。換言すれば、イベント(スパイク)は、C、I、Jインデックスに基づいてアクセス可能であり、ここで、Cは、チャネルを表し、I、Jは、画像データの二次元空間座標へのインデックスを表す。
【0065】
[0083] 次のブロックは、フィルタメモリ及びカーネルを有し、フィルタメモリは、畳み込み演算の重み(パラメータ)を記憶する。
【0066】
[0084] 次のブロックは、合算を含む畳み込み演算を実行して、最終結果を提供する。一実施形態では、畳み込みは、効率的なハードウェア実装を使用し、結果としてメモリ要件が低下すると共に、ニューラルネットワーク内の層で必要なニューロン数も低下する。そのような低下は、ネットワークの全体制限を形成する論理入力数及びフィルタ数に綱がる。
【0067】
[0085] 効率的なハードウェア実装は、入力パケットからのデータが提供される順序によって可能になる。この順序は、各計算が行ごとの計算に集中できるようにする。したがって、この効率的な順序付けの正味の効果は、1行の完了に続けて、演算での次のストライドが1行下であることである。したがって、行を次の入力行スパイクに再使用し得る。正味の効果は、最上行がもはや計算に必要ではなく、したがって電位の記憶に必要なメモリが小量のみでよいことである。要するに、電位セット全体を記憶する必要がある代わりに、順序付けは、1つのバッファでの記憶のみでよいことを意味し、これは、各畳み込みニューラルプロセッサでのメモリ要件の大きい低減である。1つの計算からの結果は、次いで、次の畳み込みニューラルプロセッサに転送される。
【0068】
[0086] 更なる詳細が
図9に示され、
図9は、イベントベースの畳み込みを実行する主要ステップを示す。ステップ1において、インバウンド(IB)メッシュがイベントを他のコアから送る。x、yロケーションが現在のCNPで見つからない場合、ステップ2において、イベントは、フィルタリングされる。イベントのx、yロケーションがそのCNPに属する場合、必要に応じて、x及びy座標は、局所CNP座標に変換される。ステップ3において、パケット終了(EOP)信号が受信されるまで、全てのイベントが収集される。EOP信号が受信された場合、入力イベントバッファが交換される(ピンポンバッファである場合)。プーリング演算の第2の部分(行プーリング)もこのステップで行われることに留意されたい。列プーリングは、イベントが送られる前に実行された。行プーリング及び列プーリングの両方は、最大プーリング演算が特定の層の出力に関連付けられている場合のみ行われる。したがって、一部の層は、プーリング演算を実行する一方、他のものは、実行しない。
【0069】
[0087] ステップ4において、イベントのチャネルが読み取られ、フィルタSRAM(重みが記憶されている)へのインデックスへのオフセットアドレスとして使用される。次に、イベントのチャネルに対応する全てのフィルタカーネルがフィルタSRAMメモリからコピーされる。これは、フィルタがフィルタSRAMに配置されている方式によって行うことができる。これは、
図10に示されている。
【0070】
[0088]
図10では、ターナリフィルタ又はバイナリフィルタ構成のフィルタSRAMレイアウト例がある。ターナリ及びバイナリフィルタの両方で、正の値及び負の値は、異なるフィルタに分けられる。同じことがマルチビットフィルタ値(図示せず)にも当てはまる。留意すべき重要なことは、ニューラルネットワークの重みを含むフィルタがフィルタSRAMメモリにチャネルによって配置されることである。この構成により、ハードウェアは、入力チャネルのみに基づいて正しいフィルタカーネルを迅速に索引付ける(見つける)ことができる。フィルタカーネルは、メモリに連続して配置されるため、畳み込み計算に向けてニューラル処理エンジンに効率的にコピーすることができる。
【0071】
[0089] フィルタは、複数のCNPに拡散するため、開始及び終了フィルタインデックスが計算される。各ニューラル処理エンジンは、一度に1つのフィルタを処理する。したがって、CNP内の最初の8つのフィルタが8つのニューラル処理エンジンによって処理される。8つのニューラル処理エンジンは、ここで、適切なフィルタカーネルアドレスを有し、以下の演算をステップ5において実行することができる。
1)各ニューラルプロセッサは、スクラッチパッドメモリにおいて電位を初期化する(ゼロにする)。スクラッチパッドメモリは、8行64列に配置され、512の20ビット電位の一時的記憶に繋がる。スクラッチパッドメモリ内の電位は、行優先順に配置され、したがって、列エントリは、メモリにおいて連続する。
2)入力イベントが入力イベントバッファからx、ch、y順に読み取られる。これにより、ニューラル処理エンジンは、1つの電位に関連する全てのイベントを一度に処理することができる。
3)ニューラルプロセッサは、イベントの処理を開始する。各エンジンは、
a.最初のイベントのチャネルを取得し、
i.現在のニューラル処理エンジンが作業中のフィルタ、
ii.イベントからのチャネル
に対応する1×1、3×3、5×5又は7×7カーネルをロードする。
b.次いで、非ゼロのカーネルの行を見つける。
c.単一の非ゼロカーネル行をロードする。
d.電位を計算し、反転カーネル形式を使用して各行のイベントSRAMアドレスを出力する(
図6を参照されたい)。
e.全てのカーネル行要素をイベント値(1~4ビット値)で乗算する。
f.パートdからのアドレスを使用して、積により、対応する電位を増分する。
g.現在のフィルタの全てのイベントが処理された後、電位を出力活性化(イベント)に変換する。
h.出力活性化が非ゼロである場合、真のエントリ又は1エントリを用いてステータス発火アレイを更新する。このアレイは、発火済みであり、活性化値が次の層に送られなければならないニューロンのリストである。
【0072】
[0090]
図11は、反転カーネルを示す。ニューラル処理エンジンは、イベントの局所x、y座標と共に反転カーネル要素位置を使用して、更新しなければならない電位のアドレスを見つける。フィルタカーネルは、ニューラル処理コアが電位のアドレスを迅速に計算できるようにするために、反転カーネル形式で記憶されなければならない。
【0073】
[0091] ステップ6は、ステータス発火アレイをチェックして、ニューロンが発火したか否かを調べ、ニューロンのx、y、chを計算することからなる。プーリングがこの層でイネーブルされる場合、このときにプーリングの列単位構成要素が行われる。ここで、2ステップでの最大プーリング演算(用語集を参照されたい)の実施は、計算の視点から効率的であることに留意することが重要である。
図12は、最大プーリング演算が実行中のステップを示す。ステップ7は、CNPにローカルな活性化イベントのx、y、ch座標をグローバルなネットワーク座標に変換し、イベントを送る全てのNPを見つける。最後に、ステップ8において、イベントは、ルーティングメッシュを通して関連するNPに送られる。
【0074】
[0092]
図12は、実行中の2×2最大プーリング演算の例である。ステップ3において、行プーリングが1×2活性化アレイで実行されて、1つの1×1活性化を生成し、これは、ステップ4中、畳み込みを計算するために使用される。ステップ5は、新しい2×2活性化アレイを生成する。ステップ6は、列プーリングを実行して、2×2活性化アレイを1×2活性化アレイに低減する。
【0075】
イベントベースの畳み込み実装の主要革新
[0093] イベントベースの畳み込み実装の主要革新は、以下を行う。
【0076】
[0094] 2×2最大プーリング演算を2つの部分で実行すること、ここで、行プーリングは、イベントベースの畳み込みアルゴリズムのステップ3で行われ、列プーリングは、ステップ6で行われる。
【0077】
[0095] 行プーリングをステップ3で実行することは、行の両要素(活性化)が計算される場合には常に送られるため、効率的である。要素の一方が入力イベントバッファに既に存在する場合、第2の要素は、それ自体を現在の要素と比較して、現在の要素よりも大きいか否かを調べるのみでよい。現在の要素よりも大きい場合、第2の要素は、単に現在の要素をそれ自体の値で上書きする。これにより、ハードウェアは、行プーリングを非同期で実行することができる。
【0078】
[0096] 列プーリングをステップ6で実行することにより、CNPは、メッシュネットワークにわたり4つの可能な要素の半分のみを送信することができる。これは、メッシュネットワーク上のイベントトラフィックを低減する。
【0079】
[0097] フィルタは、ニューラルネットワークの重みを含み、フィルタのSRAMメモリ内のチャネルによって配置される。この構成により、ハードウェアは、入力チャネルのみに基づいて正しいカーネルを迅速に索引付ける(見つける)ことができる。チャネルによるカーネルフィルタの連続ソートにより、フィルタSRAMから、畳み込み演算を実行する8つのニューラルプロセッサエンジンに効率的にコピーすることもできる。
【0080】
[0098] ステップ5中、畳み込みが各ニューラルプロセッサエンジン内で計算されているとき、フィルタカーネルは、反転カーネル形式で記憶され、したがって影響されるニューロン(すなわちそれらの電位)の座標を迅速に計算することができる。
【0081】
[0099] 説明では、次に、CNPでのイベントベースの畳み込みの設計についての幾つかの可能な性能指数(又は場合により性能指数を計算する方法)について論考する。性能指数の初期概念は、寸法M×N×Cを有する入力画像のサイズであって、ここで、Mは、画像の高さであり、Nは、画像の幅であり、Cは、画像のチャネル数(これは、通常、カラー画像では3である)である、入力画像のサイズ、画像にわたるイベントの総数及び畳み込み演算を画像にわたって実行することができる速度間の関係に基づいた。以下の基本概念を用いて論考を開始する:ピクセルごとに非常に少ないイベントを有する(別称高イベントスパース性)大きい(M、N及びC)画像の場合、イベントベースの畳み込み実装は、いかなる従来の畳み込み手法よりもはるかに高速に畳み込みを計算する。
【0082】
[0100] しかしながら、この手法に関連する幾つかの問題がある。第1に、実装は、特有であるため、一部の人々は、同様に実行することができる異なるイベントベースの畳み込み実装を使用する可能性が高いことがある。これは、本特許が、所与の性能指数をもたらす全てのイベントベースの畳み込み実装を包含するのに十分広くなかった場合にのみ問題である。第2に、カメラ技術及び画像処理手法の大半は、フレームベースであり(イベントベースではない)、したがってそれ自体イベントスパース性を持たない。フレームベースの画像を性能指数の論考に含めるには、追加の仮定を行う必要がある。第3に、計算における現在関心がある問題では、画像サイズとイベントスパース性との間の関係は、従来の畳み込み手法がイベントベースの手法よりも高速である(しかし、効率がより下がり、電力がより高い)ようなものである。これは、GPU及び他の専用ハードウェアデバイスを使用して従来の畳み込み演算を並列化することが可能であるためである。
【0083】
[0101] 効率又は消費電力を中心とした性能指数を開発する方がより適切であるように思われる。これを行うために、まず、ニューロン電位を表す整数の別の整数への追加又は減分としてシナプス演算(SO)を定義する。電力計算(図示せず)は、ハードウェアが5pJ/SO(1つのシナプス演算当たりのピコジュール数)を費やすことを示唆する。これは、効率の尺度であり、ネットワーク構造又は入力データから独立しているが、CNP設計に特有である。ハードウェアが効率的であるほど、この数が小さくなる。この数は、異なる畳み込みカーネルサイズでわずかに変化するが、選択は、最悪事例に近いものである。したがって、この性能指数は、5pJ/SOの効率でイベントベースの畳み込みを実行するシステムのものである。この性能指数を先の性能指数と対にすることが可能であり得、なぜなら、両方ともイベントベースの畳み込みの性能指数であるためである。
【0084】
新規の教師なし学習ルールの性能指数
[0102] 提案される新規の教師なし学習ルールは、従来の学習ルールへの単純であるが、大きい変更の集合で構成される。要するに、新規の教師なし学習ルールは、同じパターンの学習が頻繁になりすぎないことを保証するための変更を追加して、従来の学習ルールを、従来の学習ルールが開発された全結合層トポロジの代わりに畳み込み結合トポロジに適用することである。元の従来のアルゴリズムについてまず説明し、次いで従来の学習ルールを畳み込み結合トポロジに適用できるようにする変更について説明する。
【0085】
[0103] 従来の教師なし学習ルールは、データにおける繰り返しパターンを見つける。ノイズにロバストであり、多くの場合、パターンは、2~5回繰り返されるのみでよい。従来のルールは、1つのパターンのみに敏感になるようにニューロンが学習し、したがって特定のパターンが検出されたか否かを示す少数のイベントのみを送るため、次元低減を実行することができる。従来の学習ルールは、時間的に互いに近いイベントの集合であるパケット内でのみパターンを検出することができるため、パターンを検出する。従来の学習ルールは、0又は1の何れかであり得るバイナリシナプス(重み)並びに0、1のいずれか及びターナリの場合にはそれらに加えて-1の値を有することができるバイナリ又はターナリ活性化を仮定する。説明は、バイナリ重み/バイナリ活性化の場合を考える。
【0086】
[0104] コアにおいて、従来の学習ルールは、長さNのイベントのパケットに配置されたMクラスの入力からなる。Nは、M未満でなければならない。次に、P個のニューロンをM個全ての入力に接続する。但し、各ニューロンが値1のW個のみの接続(重み)及び値0のM-W個の接続を有し得る。パケットを形成するために、N個のユニークイベントを長さMのビットアレイに配置し、表1に示すように、「1」エントリを用いてイベントの存在を表し、「0」エントリを用いてイベントの不在を表すことができる。
【0087】
【0088】
[0105] 各ニューロンは、W(ニューロンの重み)と入力パケットとの間の共通イベント数を計算することによってパケットを「処理」する。この計算は、ビット単位論理AND関数を使用して行うことができるため、効率的である。マッチ数は、ニューロン電位である。表2は、見つけられたマッチを赤で示す。各ニューロンは、電位をバイナリ活性化に変換するため、活性化関数としての役割を果たす異なる発火閾値(TFire)を有する。
【0089】
【0090】
[0106] 従来の学習アルゴリズムは、以下の通りである。全てのニューロンが電位を計算した後、各ニューロンは、電位をTFire及び学習閾値TLearnの両方と比較する。先に述べたように、電位がTFireを超える場合、ニューロンの出力は、1に設定される。ニューロンの電位がTLearnを超える場合には常に、「重み交換ルール」が開始される。このルールによれば、特定数の未使用重みnswapは、活性であるが、未使用の入力に移される。未使用重み及び未使用重みは、両方ともランダムに選択される。未使用重みは、対応する「0」を入力パケットに有する位置に「1」を有する重みとして定義される。未使用入力は、重みアレイにおいて対応する「0」を有する位置に「1」を有する入力として定義される。例えば、表2では、ニューロン1は、重みアレイに「1」エントリがあるが、対応する入力パケットエントリが「0」であるため、未使用重みを位置2に有する。更に、入力イベント5は、ニューロン1の重みアレイと比較した場合、未使用入力である。この学習の効果は、ニューロンの重みアレイを経時反復される入力パターンに徐々により似るようにすることである。ニューロンの重みは、ランダムに初期化される。これにより、異なるニューロンは、異なるパターンを探すことができる。等しく重要なことは、非ゼロ重みの数Wが学習プロセス中に一定のままであることである。ホメオスタシスプロセス(すなわちWの一貫性)なしでは、学習ルールは、容易に不安定になり得、使用がはるかに難しくなり得るため、これは、教師なし学習ルールにとって極めて重要である。
【0091】
[0107] 学習率nswap及び学習閾値TLearnは、各ニューロンで独立して変化する。学習が開始されると、重みの移動を開始するために、低いTLearnが必要である。学習が進むにつれて、反復パターンによって生じる電位は、増大する傾向がある。これは、TLearnがゆっくりと増大して、パターンを見逃さずに誤警報率を下げ得ることを意味する。この時点で、nswap=0になるまでnswapを増大させることも有用である。この時点で、ニューロンは、もはや新しいパターンを学習しない。TLearn及びnswapの調整に使用される式は、以下である。
TLearn=min(Tmax,電位)
nswap=min(nmin,nswap-dnswap
*(電位-TLearn))
式中、dnswapは、学習率がどの程度迅速に低減するかを調整するパラメータである。
【0092】
[0108] 新規の教師なし学習ルールを説明する前に、少数の項を定義する必要がある。
図13は、フィルタ項及びニューロン項を使用してイベントベースの畳み込みを説明している。フィルタは、重みの3D集合(青で示される)である一方、ニューロンは、入力の特定の空間ロケーションへの単一フィルタの特定の適用である。単一フィルタは、入力のあらゆる空間ロケーションに適用され、ニューロン電位エントリの全平面を生成する。新規の教師なし学習ルールの論考中、これらの2つの概念間の区別を理解することが重要である。
【0093】
[0109] フィルタは、空間及びチャネルの広がりを有する重みの3D集合である。各フィルタは、異なる重みセットを有する。フィルタは、青で示され、次元3×3×3(高さ=3、幅=3、チャネル=3)を有する。ニューロンは、下半分に示される入力の特定のx、yロケーションに適用されるフィルタとして定義することができる。単一のニューロンは、明るいオレンジで示される電位アレイ内に単一エントリを有する。電位アレイの各平面は、単一フィルタが入力のあらゆる空間ロケーションに適用される(センタリングされる)ときに生成される。電位アレイ内のグレーの単一ニューロンエントリは、入力の左下表示に示される入力のロケーションに適用されたフィルタ1の重みから計算された。赤い点線は、イベントにセンタリングされたニューロンの各フィールドを示す。
【0094】
[0110] 新規の教師なし学習ルールは、従来の学習ルールに基づくものとして説明することができ、以下の主要な変更を有する。(1)従来の学習ルールでは、学習閾値TLearnを超える任意のニューロンは、学習することが許される。新規の教師なし学習ルールは、フィルタごとに1つのニューロンのみが学習を許される。追加の改変は、学習することができる層内のニューロン数を1つのみに制限する。(2)重み交換中、入力イベントは、学習を受けている特定のニューロンに関連するイベントのみを含むようにフィルタリングされる。(3)アルゴリズムは、ここで、疑似教師あり学習をサポートして、ニューロンが異なるパターンを学習できるようにする。
【0095】
[0111] 変更1(学習を許すニューロンを制限する):単一フィルタが入力のあらゆる空間ロケーションに適用されることを想起する。単一のイベントパケットで学習が許される1フィルタ当たりのニューロン数は、ゼロに低減しなければならない。これは、単一フィルタの全ニューロンが単一のフィルタ重みセットを共有するためである。畳み込み演算は、システムがあらゆる空間入力ロケーションで同じパターンを探せるようにするものである。アルゴリズムが任意の空間入力ロケーションでパターンを見つけることができる場合、アルゴリズムは、並進不変であると言える。並進不変を保つために、1フィルタ当たり1つのみの空間ロケーション(ニューロン)が入力パケットごとに学習することを許されるべきである。
【0096】
[0112] 本実装形態は、単一のイベントパケットで学習が許されるニューロン数を1CNP当たり1つに更に制限することに更に留意されたい。幾つかの実験後、ニューロンが依然として反復パターンをかなり高速に学習したことが分かった。学習ルールの重み交換構成要素は、単純ではあるが、依然として実装に比較的コストがかかるため、本ハードウェア設計は、この制限を使用する。しかし、明確に言えば、本発明者らは、両方のバージョンの特許権を取得することを望む。
【0097】
[0113] 変更2(学習中の入力イベントのフィルタリング):ニューロンが学習に選択されると、重み交換ルールは、(1)ニューロンのフィルタに対応する重み、及び(2)ニューロンの位置の各フィールドと重なる入力イベントのサブセットのみに適用される。
【0098】
[0114] ニューロンの位置の各フィールドと重なる入力イベントのサブセットを
図13に示す。赤い点線内に入るイベントは、学習ルール重み交換中に使用されるイベントである。
図13における赤い点線は、現在のチャネルのみならず、全てのチャネルに拡張されることに留意されたい。
図13では、例えば、これは、サイズ3×3×3を有するフィルタ1が27個の重みを有し、学習ルールの重み交換部分中、27個の対応する入力イベントが使用されることを意味する。ここで、3×3×3重み及び入力を2つの1×1×27線形ビットアレイに平坦化できることが分かる。元の従来の学習ルール重み交換アルゴリズムは、ここで、これらのビットアレイに適用することができる。
【0099】
[0115] 変更3(疑似教師あり学習及び競争):教師なし学習アルゴリズムは、多くの場合、冗長性問題を有する。類似パターンを統合するか、又は類似パターンを表すニューロンを互いに競争させるか若しくは互いを阻止できるようにするメカニズムなしでは、同じパターンを見つけて学習する多くのニューロンを容易に有する可能性がある。これは、無駄であり、避けるべきである。従来の学習ルールは、これを避けるメカニズムを有さなかった。疑似教師あり学習は、フィルタを異なるグループに分け、グループラベルを各フィルタグループと関連付けることによってこの問題を解決する。入力イベントパケットが提示される場合、グループラベルは、入力イベントパケットと共に提示される。入力イベントパケットと同じラベルを有するグループ内のフィルタのみが入力イベントパケットからの学習に適格である。これにより、異なるフィルタグループを異なる入力イベントパケットラベルに割り当てることができる。グループ内のフィルタ(及びニューロン)が同じパターンを学習することが依然として可能であることに留意されたい。しかしながら、ユーザは、ここで、所与の入力イベントパケットセットに許す冗長量を計画するメカニズムを有する。これは、従来のアルゴリズムの効率からの大きい改善である。
【0100】
[0116] 革新は、教師なし学習をイベントベースの畳み込みニューラルネットワークアーキテクチャに対して実行するシステム及び方法である。結合されて独自のシステム及び方法になる2つの構成要素は、(1)教師なし学習アルゴリズムをデバイスで使用すること、及び(2)イベントベースの畳み込みニューラルネットワークを学習アルゴリズムと共に同時にそれと同じデバイスに使用することである。
【0101】
[0117] 本発明者らの手法は、ニューロモルフィックエンジニアリング及び機械学習の2つの研究コミュニティ間で行われた研究のタイプにより、独自である。ニューロモルフィックエンジニアリングの研究者は、一般に、教師なし学習アルゴリズムをイベントベースのシステムと共に利用する。しかしながら、このような研究者は、イベントベースの畳み込みを非常に希にのみ利用する。機械学習の研究者は、教師あり及び教師なし学習アルゴリズムの両方を畳み込み演算と共に定常的に利用する。しかしながら、このような研究者は、イベントベースのアルゴリズムに踏み込むことが非常に希である。本手法の独自性は、システムが2つの異なる研究コミュニティ間のギャップを橋渡ししたことに起因する。
【0102】
勝者総取り
[0118] 勝者総取り(WTA)は、各ロケーションにおいて最大で1つの勝者特徴を選択する。大きい特徴フィールドでは、多すぎる関連情報が破棄され得る。WTAなしでは、ロケーションにおける最良適合特徴は、依然として急上昇するが、適合度がより低い特徴のスパイクが付随もする。それらの適合度がより低い特徴は、電力及び処理時間という負担を掛ける。WTAを、戦略的に選択されたグループにおいて適用することにより、全ての最良適合を保持しながら、適合度のより低い特徴をなくすことができる。
【0103】
[0119] SNNの消費電力及び処理速度は、SNNにおけるスパイクのスパース性に強く結び付いている。本発明の目的は、入力ストリーム内の各ロケーションからのフィルタを戦略的にグループ化し、WTA技法をそれらのグループに適用することにより、伝播されるスパイク数を低減することである。K-WTAハードウェア実装の状況を
図14に示す。カーネルが予め定義される構造である場合、WTAグループ化は、ハンド設計することができるか、又はアルゴリズムのクラスタ化を使用して、同様若しくは非同様の特徴を有するグループを定義することができる。グループのサイズは、サイズ可変であり得る(
図15)。
【0104】
[0120] K-WTAは、複数のモードをとり、それらで動作することができる。
図16は、「ベストオファー」形態で勝者がどのように選択されるかを示す。
【0105】
[0121] 幾つかの特徴では、グループ内の電位の何れか1つが閾値を超えることを知るのみでよい。これは、特徴の1つのみが閾値を超えることが予期される非類似特徴の場合である。この場合、グループ内のフィルタの何れか1つが閾値を超えるまでのみフィルタを処理することにより、処理速度を増大させ、電力を低減することができる。バイアスを低減するために、各グループ内の電位の順序は、各パスで変えられる。
図17は、「ファーストグッドオファー」モードでのK-WTAの一例である。
【0106】
[0122] これに関して、
図18は、この方式の一実施形態がスパイキングニューラルネットワークアーキテクチャにどのように適合することができるかを示す。WTAブロックに入力されるフィルタ結果を生成する一実施形態のブロック図を
図19に示す。
【0107】
[0123] 特定の実施形態の上記の説明は、当技術分野の技能内の知識(引用され、参照により本明細書に援用される文献の内容を含む)を適用することにより、本発明の一般概念から逸脱せずに、過度の実験なしで他者がそのような特定の実施形態を容易に変更し、及び/又は種々の用途に向けて適合できるようにするのに十分に本発明の一般性質を明らかにしている。したがって、そのような適合形態及び改変形態は、本明細書に記載の教示及び指針に基づいて、開示される実施形態の意味及び均等物の範囲内であることが意図される。本明細書での句及び用語は、限定ではなく、説明を目的とし、したがって、本明細書の用語又は句は、当業者の知識と組み合わせて、本明細書に提示された教示及び指針に照らして当業者によって解釈されるべきであることを理解されたい。
【0108】
[0124] 本発明の種々の実施形態を先に説明したが、限定ではなく、例として提示されたことを理解されたい。本発明の趣旨及び範囲から逸脱せずに形態及び詳細における種々の変更形態がなされ得ることは、関連する技術分野の当業者に明らかになるであろう。したがって、本発明は、上記の例示的な実施形態のいずれによっても限定されるべきではなく、以下の特許請求の範囲及びそれらの均等物に従ってのみ規定されるべきである。