IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ チェンドゥ シンセンス テクノロジー シーオー エルティーディーの特許一覧

特表2022-536579イベント駆動型スパイキング畳み込みニューラルネットワーク
<>
  • 特表-イベント駆動型スパイキング畳み込みニューラルネットワーク 図1
  • 特表-イベント駆動型スパイキング畳み込みニューラルネットワーク 図2
  • 特表-イベント駆動型スパイキング畳み込みニューラルネットワーク 図3
  • 特表-イベント駆動型スパイキング畳み込みニューラルネットワーク 図4
  • 特表-イベント駆動型スパイキング畳み込みニューラルネットワーク 図5
  • 特表-イベント駆動型スパイキング畳み込みニューラルネットワーク 図6
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2022-08-18
(54)【発明の名称】イベント駆動型スパイキング畳み込みニューラルネットワーク
(51)【国際特許分類】
   G06N 3/063 20060101AFI20220810BHJP
   G06N 3/04 20060101ALI20220810BHJP
【FI】
G06N3/063
G06N3/04 190
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2021560600
(86)(22)【出願日】2020-04-06
(85)【翻訳文提出日】2021-12-07
(86)【国際出願番号】 EP2020059798
(87)【国際公開番号】W WO2020207982
(87)【国際公開日】2020-10-15
(31)【優先権主張番号】19168271.5
(32)【優先日】2019-04-09
(33)【優先権主張国・地域又は機関】EP
(31)【優先権主張番号】19180569.6
(32)【優先日】2019-06-17
(33)【優先権主張国・地域又は機関】EP
(81)【指定国・地域】
(71)【出願人】
【識別番号】521444273
【氏名又は名称】チェンドゥ シンセンス テクノロジー シーオー エルティーディー
(74)【代理人】
【識別番号】100149032
【弁理士】
【氏名又は名称】森本 敏明
(74)【代理人】
【識別番号】100181906
【弁理士】
【氏名又は名称】河村 一乃
(72)【発明者】
【氏名】リヒター,オレ,ジュリ
(72)【発明者】
【氏名】キアオ,ニン
(72)【発明者】
【氏名】リュー,キアン
(72)【発明者】
【氏名】シェイク,サディーク,ウル アミーン
(57)【要約】
本発明は、複数の層を備えるイベント駆動型スパイキング畳み込みニューラルネットワークであって、各層は、- 少なくとも1つの畳み込みカーネルのカーネル値をイベント駆動方式で格納及び処理するように構成されたカーネルモジュール、- 前記ニューラルネットワークのニューロンのニューロン状態をイベント駆動方式で格納及び処理し、更新されたニューロンから生成されたスパイクイベントを出力するように構成されたニューロンモジュール、- ソース層からの着信スパイクイベントが少なくとも1つの畳み込みカーネルとの畳み込みによって投影するニューロンを決定するように構成されるメモリマッパーを備え、ここで前記決定されたニューロンのニューロン状態は、少なくとも1つの畳み込みカーネルの適用可能なカーネル値で更新されるようになり、前記メモリマッパー(130)は、イベント駆動方式で着信スパイクイベントを処理するように構成されている、前記イベント駆動型スパイキング畳み込みニューラルネットワークに関する。
【選択図】図1
【特許請求の範囲】
【請求項1】
イベント駆動型スパイキング畳み込みニューラルネットワーク(1)であって、複数の層(10)を備え、各層は:
- 少なくとも1つの畳み込みカーネル(410)のカーネル値をイベント駆動方式で格納及び処理するように構成されたカーネルモジュール(110)、
- 前記ネットワーク(1)のニューロンのニューロン状態をイベント駆動方式で格納及び更新し、かつ更新されたニューロン(420)から生成されたスパイクイベント(150)を出力するように構成されたニューロンモジュール(120)、
- ソース層(10’)からの着信スパイクイベント(140)が少なくとも1つの畳み込みカーネル(410)との畳み込みによって投影するニューロン(420)を決定するように構成されたメモリマッパー(130)であり、前記決定されたニューロン(420)のニューロン状態は、前記少なくとも1つの畳み込みカーネル(410)の適用可能なカーネル値で更新されるようになり、前記メモリマッパー(130)は、イベント駆動方式で着信スパイクイベント(140)を処理するように構成されている、前記メモリマッパー(130)、
を備える、前記イベント駆動型スパイキング畳み込みニューラルネットワーク(1)。
【請求項2】
前記カーネルモジュール(110)は、関連付けられたカーネルメモリ(112)に接続されたカーネルインターフェース(111)を備え、前記関連付けられたカーネルメモリ(112)は、カーネルアドレスに、前記少なくとも1つの畳み込みカーネル(110)の、特に複数の畳み込みカーネル(410)のカーネル値を格納するように構成され、前記カーネルモジュール(110)は、前記ニューロンモジュール(120)に電子的に接続されている、請求項1に記載のイベント駆動型スパイキング畳み込みニューラルネットワーク(1)。
【請求項3】
前記メモリマッパー(130)は、前記カーネルモジュール(110)に、特に前記カーネルインターフェース(111)に電子的に接続され、前記メモリマッパー(130)は:
a)前記ネットワーク(1)のソース層(10’)からの着信スパイクイベント(140)を受信し、前記着信スパイクイベント(140)は、前記ソース層においてニューロン座標(421)の情報を含み、そして前記受信したスパイクイベント(140)に応答して、
b)前記少なくとも1つの畳み込みカーネル(110)との前記受信したスパイクイベント(140)の畳み込みが投影するニューロン(420)のニューロン座標(422)及び対応するニューロンアドレスを決定し、
c)前記決定されたニューロンアドレスのニューロン状態に適用可能な前記カーネル値の対応するカーネルアドレスを用いてカーネル座標(411)を決定し、ここで前記決定されたニューロンアドレスの前記ニューロン状態は、前記適用可能なカーネル値で更新されるようになり、
d)前記決定されたカーネルアドレス、及び特に前記決定されたニューロンアドレスを前記カーネルモジュール(110)に、特に前記カーネルインターフェース(111)に提供するように、
構成及び配置されている、請求項1又は2に記載のイベント駆動型スパイキング畳み込みニューラルネットワーク(1)。
【請求項4】
前記カーネルモジュール(110)は、前記決定されたカーネルアドレスを受信し、かつ前記決定されたカーネルアドレスに格納された前記適用可能なカーネル値を、特に前記決定されたニューロンアドレスと共に、前記ニューロンモジュール(120)へ提供するように構成及び配置されている、請求項4に記載のイベント駆動型スパイキング畳み込みニューラルネットワーク(1)。
【請求項5】
前記ニューロンモジュール(120)は:
a)前記決定されたニューロンアドレス(142n)及び前記適用可能なカーネル値(142k)を受信し、
b)受信したニューロンアドレス(142n)ごとに、前記適用可能なカーネル値(142k)に基づくニューロン(420)の更新されたニューロン状態を決定し、
c)少なくとも1つの所定の閾値(502)に到達する更新されたニューロン(420)の発信スパイクイベント(150)を出力するように、
構成及び配置されている、請求項1~4のいずれか一項に記載のイベント駆動型スパイキング畳み込みニューラルネットワーク(1)。
【請求項6】
前記メモリマッパー(130)は、受信されたスパイクイベント(140)ごとに、出力特徴マップ(430)に割り当てられるニューロンからなる少なくとも1つの出力特徴マップ(430)を決定するように構成され、前記出力特徴マップ(430)の数は、現在層(10)の畳み込みカーネル(410)の数に等しい、請求項1~5のいずれか一項に記載のイベント駆動型スパイキング畳み込みニューラルネットワーク(1)。
【請求項7】
各層(10、10’)は、関連付けられたバイアスメモリ(162)、及び特に前記関連付けられたバイアスメモリ(162)に接続されたバイアスインターフェース(161)を備えるバイアスモジュール(160)をさらに備え、前記関連付けられたバイアスメモリ(162)は、バイアスアドレスにバイアス値を格納するように構成され、前記バイアスモジュール(160)は、前記ニューロンモジュール(120)に接続され、かつ前記バイアスモジュール(160)は、前記ニューロンモジュール(120)に、特に所定の時間間隔でバイアス値を提供するように構成され、前記ニューロンモジュール(120)は、前記受信したバイアス値に基づく少なくとも1つの出力特徴マップ(430)内のすべてのニューロン(431)のニューロン状態を更新するように構成されている、請求項1~6のいずれか一項に記載のイベント駆動型スパイキング畳み込みニューラルネットワーク(1)。
【請求項8】
前記ニューロンモジュール(120)は、受信したニューロンアドレス(142n)及びカーネル値(142k)、及び特に受信したバイアス値(142b)を処理し、かつ更新されたニューロン状態及びスパイクイベント(150)を生成する(501、502)ように構成された複数の並列動作ニューロンサブインターフェース(121s)を備え、各ニューロンサブインターフェース(121s)は、前記受信したニューロンアドレスのニューロン状態を読み取るため、及び更新されたニューロン状態を前記関連付けられたニューロンメモリ(506)の前記受信したニューロンアドレスに書き込むための関連付けられたニューロンメモリ(506)を備え、それにより前記ニューロンサブインターフェース及びそれらの関連付けられたニューロンメモリ(506)によってニューロン状態の並列処理が達成されるようになる、請求項1~7のいずれか一項に記載のイベント駆動型スパイキング畳み込みニューラルネットワーク(1)。
【請求項9】
前記ニューロンモジュール(120)は、決定されたニューロンアドレス(142n)及びカーネル値(142k)、及び特にバイアス値(142b)を、特に前記カーネルモジュール(110)及び/又は前記バイアスモジュール(160)から受信し、かつ前記受信したニューロンアドレス(142n)及びカーネル値(142k)、及び特にバイアス値(142b)を、前記受信したニューロンアドレス(142n)及びカーネル値(142k)、及び特にバイアス値(142b)を並列に処理するように構成された前記複数の並列動作ニューロンサブインターフェース(121s)に送信するように構成かつ適応されたルータモジュール(601)を備え、ここで前記ニューロンモジュールは、前記複数のニューロンサブインターフェース(121s)から生成されたスパイクイベント(150)を受信し、かつニューロンサブインターフェースよりも少ないチャンネルを有する特にバスにシリアル処理のためにスパイクイベントを送るように構成及び適応されるマージモジュール(603)をさらに備え、特に、ここで前記バスは、単一の伝送チャンネルのみを有している、請求項10に記載のイベント駆動型スパイキング畳み込みニューラルネットワーク(1)。
【請求項10】
前記ニューロンモジュール(120)は:
- ニューロンアドレス(142n)及びカーネル値(142k)、及び特にバイアス値(142b)を受信し、特に前記カーネルモジュール(110)及び/又は前記バイアスモジュール(160)から、特に前記ルータモジュールにて受信し、
- 前記受信したニューロンアドレス(142n)のニューロン状態を読み取り(500)、特に前記ニューロンサブインターフェース(複数)(121s)のうちの1つの前記関連付けられたニューロンメモリ(506)から読み取り(500)、
- 前記受信したカーネル値(142k)及び/又は特に前記受信したバイアス値(142b)で、前記読み取ったニューロン状態を更新し(501)、特に前記ニューロンサブインターフェース(複数)(121s)上で更新し(501)、
- 前記更新されたニューロン状態を少なくとも1つの閾値と比較し(502)、特に前記ニューロンサブインターフェース(複数)(121s)上の、特に閾値レジスタ(504)に格納され、かつそこからアクセス可能な、前記少なくとも1つの閾値と比較し(502)、
- 前記少なくとも1つの閾値に到達する場合(502)、スパイクイベントを生成し(503)、特に宛先マッパー(170)に提供されるスパイクイベントを生成し(503)、かつ前記更新されたニューロン状態をリセットして、リセットされたニューロン状態にし、
- 前記更新されたニューロン状態を、前記関連付けられたニューロンメモリ(506)の前記受信したニューロンアドレス(142n)に書き込む(505)、
ように構成される、請求項1~9のいずれか一項に記載のイベント駆動型スパイキング畳み込みニューラルネットワーク(1)。
【請求項11】
前記メモリマッパー(130)は、前記メモリマッパー(130)によってスパイクイベント(140)が受信される場合に、前記適用可能なカーネル値(142k)の前記カーネルアドレス、及び更新すべき対応するニューロンアドレス(142n)を有する前記ニューロン座標(421)を決定するために、以下の一連の動作を実行するように構成されており、ここで前記スパイクイベント(140)は、座標(x,y)、特にソース特徴マップ(440)において前記スパイクイベント(140)を生成したニューロン(423)の座標(x,y)及び特にチャンネル識別子(c)、特にx及びy識別子を含む座標(x,y)に関する情報を含むか、又はそれからなり、前記以下の一連の動作は:
- 特に、レジスタによって提供及び格納される所定のオフセット(p,p)で前記スパイクイベント(140)の前記座標(x,y)を、ゼロパディング(x+p,y+p)し、
- 前記座標(x,y)から、特に前記ゼロパディングされた座標(x+p,y+p)から、前記スパイクイベントが投影するニューロンアンカー座標(x,y)、及び少なくとも1つのカーネル(f)の対応するカーネルアンカー座標(x ,y )を計算し、ここで前記カーネルアンカー座標(x ,y )は、前記少なくとも1つのカーネル(f)のそれぞれのカーネル座標(f,x ,y )を示し、特に、前記ニューロンアンカー座標は、出力特徴マップ(430)に関連付けられており、
- 前記ニューロンアンカー座標及び前記カーネルアンカー座標から開始して、更新すべきすべてのニューロン座標(f,x,y)及び前記適用可能なカーネル値(142k)のすべてのカーネル座標(c,f,x,y)を決定し、特に、レジスタにより提供される出力特徴マップ(430)のサイズ(H,W)、ストライドサイズ(sx,sy)及び/又はカーネルサイズ(Hk,Wk)における情報を処理することによって決定し、
- 前記決定されたニューロン座標(f,x,y)及び前記適用可能なカーネル値(142k)を持つ前記カーネル座標から、特に圧縮されたニューロンアドレス及びカーネルアドレスを決定し、
- 前記決定されたニューロンアドレス(142n)及びカーネルアドレスを、前記カーネルモジュール(110)及び/又は前記ニューロンモジュール(120)に提供すること、
である、請求項1~10のいずれか一項に記載のイベント駆動型スパイキング畳み込みニューラルネットワーク(1)。
【請求項12】
前記関連付けられたニューロンメモリ(122)は、すべてのニューロン状態が連続するニューロンアドレスに格納されるように組織され、前記メモリマッパー(130)は、圧縮されたニューロンアドレスを生成するなど、すべてのニューロン座標の連続するニューロンアドレスを生成するように構成され、かつ前記メモリマッパー(130)は、前記圧縮されたニューロンアドレスを前記ニューロンモジュール(120)に提供するように構成される、請求項8に記載のイベント駆動型スパイキング畳み込みニューラルネットワーク(1)。
【請求項13】
前記イベント駆動型スパイキング畳み込みニューラルネットワーク(1)は、ソース層(10’)から受信した発信スパイクイベントを少なくとも1つの宛先層(10’’)にルーティングするように構成されたスパイクイベントルータ(20)と接続される複数の層(10、10’、10’’)を備え、特に、前記ルータ(20)は、前記発信スパイクイベント(150)に関連付けられた宛先情報にアクセスし、ここで、前記宛先層(10’’)は前記ソース層(10’)になり得る、請求項1~12のいずれか一項に記載のイベント駆動型スパイキング畳み込みニューラルネットワーク(1)。
【請求項14】
命令を含むコンピュータプログラムであって、前記コンピュータプログラムが、請求項1~13のいずれか一項に記載のイベント駆動型スパイキング畳み込みニューラルネットワーク(1)の前記メモリマッパー(130)、前記ニューロンモジュール(120)、前記カーネルモジュール(110)、前記宛先マッパー(130)、及び/又は前記スパイクイベントルータ(20)などのコンポーネントに対し実行される場合に、前記コンピュータプログラムは、それぞれの前記コンポーネント(130、120、110、20)に、着信スパイクイベント(140)を処理するために構成及び配置される前記コンポーネントのための工程を実行させる、前記コンピュータプログラム。
【請求項15】
スパイクイベント(140)がメモリマッパー(130)によって受信される場合に、イベント駆動方式で更新されるべきカーネルアドレス及びニューロンアドレス(142n)を決定するように構成されたイベント駆動型スパイキング畳み込みニューラルネットワークのためのメモリマッパー(130)であって、前記スパイクイベント(140)は、前記スパイクイベント(140)の座標(x,y)、及び特にチャンネル識別子(c)に関する情報を含むか、又はそれからなり、特に前記座標は、x及びy識別子を含み、前記スパイクイベント(140)が前記メモリマッパー(130)によって受信される場合に、前記メモリマッパー(130)は、以下の一連の動作は:
- 特に、レジスタ(300r)によって提供及び格納される所定のオフセット(p,p)で前記スパイクイベント(140)の前記座標(x,y)を、ゼロパディングし(300)(x+p,y+p)、
- 前記座標(x,y)から、特に前記ゼロパディングされた座標(x+p,y+p)から、前記スパイクイベントが投影するニューロンアンカー座標(x,y)、及び少なくとも1つのカーネル(410,f)の対応するカーネルアンカー座標(x ,y )を計算し(301)、ここで前記カーネルアンカー座標(x ,y )は、前記少なくとも1つのカーネル(410,f)のそれぞれのカーネル座標(f,x ,y )を示し、特に、前記ニューロンアンカー座標は、出力特徴マップ(430)に関連付けられており、
- 前記ニューロンアンカー座標及び前記カーネルアンカー座標から開始して(302)、更新すべきすべてのニューロン座標(f,x,y)及び前記適用可能なカーネル値のすべてのカーネル座標(c,f,x,y)を決定し、特に、レジスタにより提供される出力特徴マップサイズ(H,W)、ストライドサイズ(sx,sy)及び/又はカーネルサイズ(Hk,Wk)における情報を処理することによって決定し、
- 前記決定されたニューロン座標(f,x,y)及び前記適用可能なカーネル値を持つ前記カーネル座標から、特に圧縮されたニューロンアドレス及びカーネルアドレスを決定し(303)、
- 前記決定されたニューロンアドレス及びカーネルアドレスを、前記ニューロンアドレス及びカーネルアドレスを処理するために、カーネルモジュール(110)及び/又はニューロンモジュール(120)に提供すること、
を実行する、前記イベント駆動型スパイキング畳み込みニューラルネットワークのためのメモリマッパー(130)。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、イベント駆動型スパイキング畳み込みニューラルネットワーク、前記イベント駆動型スパイキング畳み込みネットワークを制御するためのコンピュータプログラム、及び前記イベント駆動型畳み込みニューラルネットワークのためのメモリマッパーに関するものである。
【背景技術】
【0002】
畳み込みニューラルネットワーク(CNN:Convolutional neural network)、及びCNNのタスクを効率的に実行するための対応するチップアーキテクチャは、当技術分野で知られている。
【0003】
特定のクラスのCNNには、スパイキング畳み込みネットワーク(sCNN:spiking convolutional network)を含み、これはニューロンの特定の膜電位が達したときに生成される電気スパイクの形態の不連続な信号挙動に関して、生物学的ニューロンの機能を模倣し、sCNNよりもエネルギー効率が低くなる任意の入力に対して連続出力を提供する従来のCNNに対して対照的である。
【0004】
次いで、sCNNは数学的に十分に説明されているが、専用ハードウェアでの実装は知られていない。汎用プロセッサに実装されたsCNNは、データ処理の特定のモードの利点を失うため、比較的低速であるか、特に高いメモリ要件を伴うかである。
【0005】
ただし、現時点では、sCNNを動作するために特別に設計された専用の電子回路は存在しない。
【0006】
一般的な(必ずしも畳み込みではない)ニューラルネットワークは、ニューラルネットワークの各ニューロンを互いにほぼ任意の方式で相互接続する能力を提供する、いわゆるクロスバーアーキテクチャに基づくIBMらの「トゥルーノース(true north)」チップアーキテクチャ(米国特許第2014/0032465 A1号)により教示される。ただし、ニューロン間の各接続には関連付けられた重みを有しているため、これには非常に大きなメモリ要件がかかるようになる。したがって、各ニューロンが他のすべてのニューロンと相互接続されているため、すべての重みを含む重み行列のメモリ要件は、ニューロンの数の2乗にほぼ比例し、すぐに実行不可能になる。
【0007】
さらに、トゥルーノースアーキテクチャーは別として、CNN用の既知のプロセッサはフレームベース式で動作し、これはsCNNを扱うときに有利な信号処理のモードとは反対のものである(フレームベース対イベントベース)。
【0008】
現在のところ、sCNNを効率的かつ高速に実行するために特別に設計された電子回路アーキテクチャはない。
【先行技術文献】
【特許文献】
【0009】
【特許文献1】米国特許第2014/0032465 A1号
【発明の概要】
【発明が解決しようとする課題】
【0010】
本発明の目的は、エネルギー及びメモリ効率の高い方法でスパイキング畳み込みネットワークを実行するためのシステムを提供することである。該目的は、請求項1の特徴を有する装置によって達成される。
【課題を解決するための手段】
【0011】
有利な実施形態は、従属請求項に記載されている。
【図面の簡単な説明】
【0012】
図1】本発明によるsCNNの1つの層の模式的なレイアウトである。
図2】複数の層を含むsCNNの模式的なレイアウトである。
図3】メモリマッパーの模式的なデータフロー図である。
図4】ニューロン座標と適用可能なカーネル値とがどのように決定されるかを示す模式図である。
図5】ニューロンの更新処理を示す模式的なデータフロー図である。
図6】並列化されたニューロンモジュールアーキテクチャの図である。
【発明を実施するための形態】
【0013】
以下では、「スパイキング畳み込みニューラルネットワーク」という用語及び類似の用語は、別段の記載又は示唆がない場合、スパイキング畳み込みニューラルネットワークを動作させるために構成及び配置された少なくとも1つの電子回路を指す。
【0014】
請求項1によれば、イベント駆動型スパイキング畳み込みニューラルネットワーク(sCNN)は、複数の層を備え、各層は以下を備える:
- 少なくとも1つの畳み込みカーネルのカーネル値をイベント駆動方式で格納及び処理するように構成されたカーネルモジュール、
- 前記ネットワークのニューロンのニューロン状態をイベント駆動方式で格納及び処理するように、特に更新し、かつ特に処理されたもの、例えば、更新されたニューロンから生成されたスパイクイベントを出力するように構成されたニューロンモジュール、
- ソース層からの着信スパイクイベントが少なくとも1つの畳み込みカーネルとの畳み込みによって投影するニューロンを決定するように構成されたメモリマッパーであり、ここで前記決定されたニューロンのニューロン状態は、少なくとも1つの畳み込みカーネルの適用可能なカーネル値での更新されるようになり、前記メモリマッパーは、イベント駆動方式で着信スパイクイベントを処理するように構成されている、前記メモリマッパー。
【0015】
イベント駆動型sCNNは、特に、メモリマッパー、ニューロンモジュール、及びカーネルモジュールなどのコンポーネントを備える電子回路及び/又は少なくとも1つのコンピュータチップである。各コンポーネントは、特に、電子回路又は少なくとも1つのコンピュータチップに配線での通信を有する。
【0016】
すなわち、sCNNのいくつかのコンポーネントはプログラム可能であり得るが、前記コンポーネントは、例えば、一般的な多目的チップ上でその後実行されるコンピュータプログラム又はソフトウェアに反映又は実装されるだけでなく(すなわち、sCNNの前記コンポーネントは、仮想ではなく、かつ一般的なコンピュータチップでは機能しない)、sCNNの電子回路の物理的な実体である。
【0017】
「層」という用語は、特に、sCNNの層、特にCNNの一般的な用語における層を表す少なくとも1つの電子回路を指す。
【0018】
本発明によるイベント駆動型sCNNは、特に、限定され、かつ所定の数の層を備える。
【0019】
従来のCNNとは異なり、イベント駆動型sCNNのコンポーネントは、イベント駆動方式で情報を処理するように構成されている。
【0020】
sCNNを駆動するイベントは、特に、sCNNの層の1つによって受信されるスパイクイベントによって与えられる。
【0021】
スパイクイベントは、特に、そのイベントに関する構造化された情報を含むデジタルデータである。
【0022】
したがって、他のCNNとは対照的に、イベント駆動型sCNNは、特にフレームベース又はクロックベースではなく動作するため、例えば、イベント生成ダイナミックビジョンカメラ及び他のイベント生成デバイスによって提供されるようなデータストリームに準拠することに適している。
【0023】
カーネルモジュールは、すべての着信スパイクイベントに特に適用することができる、少なくとも単一の畳み込みカーネル(本明細書では「カーネル」だけで呼ばれることもある)のカーネル値を格納する。
【0024】
これにより、カーネルモジュールが、少なくとも1つの畳み込みカーネルのカーネル値を格納するために、同程度の小さな関連付けられたカーネルメモリを保持できるようになる。
【0025】
特に一般的なニューラルネットワークとは対照的に、少なくとも1つの畳み込みカーネルを設けることで、sCNNのニューロン接続がより小さな重みのセットを特徴とするため、sCNNのメモリ要件が軽減される。
【0026】
イベント駆動型sCNNでは、カーネルモジュールに複数の畳み込みカーネルが格納されているのが一般的である。
【0027】
ニューロンモジュールは、本質的に層のすべてのニューロンを格納しており、前記ニューロンは層の出力特徴マップに特に関連付けられている。
【0028】
各ニューロンは、特に出力特徴マップに含まれ、出力特徴マップにおける1つのニューロンの位置は、特にニューロン座標によって与えられる。
【0029】
出力特徴マップは、特に値の2次元配列で、前記値はニューロンのニューロン状態に対応している。
【0030】
「ニューロン」という用語は、特に、sCNNが、調整可能なニューロンの状態を含むことを特徴とするsCNNの実体を指し、前記ニューロンの状態とは、ニューロンがいつ、どのようにスパイクイベントを出力するかを特徴づける機能を対象とする。
【0031】
また、ニューロンモジュールは、イベント駆動方式で動作する。
【0032】
特に、各着信スパイクイベントで、ニューロンモジュールの少なくともいくつかのニューロンが特定のカーネル値で更新(つまり処理)され、ニューロンの状態(当技術分野では膜電位と呼ばれることもある)に応じて、スパイクイベント自体が出力される。
【0033】
前記更新プロセスは、特に、それぞれのニューロンアドレスに格納されているニューロン状態の、適用可能なカーネル値、及び特にバイアス値を含む計算値との加算又は減算を含む。
【0034】
ニューロンモジュールは、ネットワークのニューロンのニューロン状態を格納及び処理するように構成され、更新されたニューロンの状態に応じて、ニューロンモジュールは、更新されたニューロンから生成された1つ又は複数のスパイクイベントを出力し得ることに留意されたい。
【0035】
一般的に、更新された各ニューロンがスパイクイベントを出力するとは限らない。
【0036】
本発明の別の実施形態によれば、カーネルモジュールは、関連付けられたカーネルメモリに接続されたカーネルインターフェースを備え、前記関連付けられたカーネルメモリは、少なくとも1つの畳み込みカーネルのカーネル値を、特に複数の畳み込みカーネルをカーネルアドレスに格納するように構成されており、前記カーネルモジュールは、ニューロンモジュールに電子的に接続されている。
【0037】
関連付けられたカーネルメモリは、各層によって物理的に備えられる、例えば、各層上に配置されるメモリを備えるか、又は特にそれである。これは、各層は同一に製造することができ、そして自律的なユニットとして動作するという利点がある。
【0038】
或いは、又はさらに、関連付けられたカーネルメモリは、前記層に割り当てられ、かつ接続されているメモリを備えるか、又はそれであるが、特に前記層によって備えられる必要はない。関連付けられたカーネルメモリは、前記層のカーネルモジュールに接続されるグローバルな、特に外部のカーネルメモリに備えることができる。
【0039】
一実施形態では、sCNNのすべての層がグローバルカーネルメモリに接続されており、前記グローバルカーネルメモリは、各層ごとに関連付けられたカーネルメモリを備える。
【0040】
カーネルアドレスとは、特に、単一のカーネル値が格納されているカーネルメモリアドレスを指す。
【0041】
本発明の別の実施形態によれば、ニューロンモジュールは、ニューロンメモリを備えており、前記ニューロンメモリは、ニューロンの状態をニューロンアドレスに格納するように構成されている。
【0042】
別の実施形態によれば、ニューロンメモリは、並列方式にアクセス可能な複数のニューロンメモリユニットを備える。このようなニューロンメモリユニットは、本明細書では関連付けられたニューロンメモリとも呼ばれる。
【0043】
ニューロンメモリ、特に関連付けられた各ニューロンメモリは、各層に物理的に備えられている、例えば、それに配置されているメモリストレージ、又は前記層に割り当てられ、かつ接続されているが、特に前記層によって備えられる必要のないメモリを備えるか、又は特にそれである。更に又は或いは、関連付けられたニューロンメモリは、層のニューロンモジュールに接続されたグローバルな、特に外部のニューロンメモリに備えられている場合もある。
【0044】
一実施形態では、sCNNのすべての層がグローバルニューロンメモリに接続されており、前記グローバルニューロンメモリは、各層ごとに関連付けられたニューロンメモリを備える。
【0045】
また、グローバルカーネルメモリとグローバルニューロンメモリとを単一のメモリコンポーネントによって備えられることが可能である。
【0046】
ニューロンアドレスは、特に、あるニューロンのニューロン状態が格納されているニューロンメモリのアドレスを指す。
【0047】
本発明の別の実施形態によれば、メモリマッパーは、カーネルモジュール、特にカーネルインターフェースに電子的に接続されており、前記メモリマッパーは:
a)電子接続を介してsCNNのソース層からの着信の特に単一のスパイクイベントを受信し、ここで前記着信スパイクイベントは、ソース層内の特に単一のニューロンの座標に関する情報を含み、そして、前記受信したスパイクイベントに応答して、
b)特に、前記受信した着信スパイクイベントと少なくとも1つの畳み込みカーネルとの畳み込みが投影する前記ニューロンの前記関連付けられたニューロンメモリにおいて、ニューロン座標及び対応するニューロンアドレスを決定し、
c)前記決定されたニューロンアドレスの前記ニューロン状態に適用可能なカーネル値の対応するカーネルアドレスを用いてカーネル座標を決定し、ここで前記決定されたニューロンアドレスの前記ニューロン状態は、特に前記少なくとも1つの畳み込みカーネルから、又は前記複数の畳み込みカーネルからの前記適用可能なカーネル値で更新されるようになり、
d)前記適用可能なカーネル値のための前記決定されたカーネルアドレス、及び特に前記決定されたニューロンアドレスを前記カーネルモジュールに、特に前記カーネルインターフェースに提供する、
ように構成及び配置されている。
【0048】
メモリマッパーは、特に電子回路又は電子回路システムである。
【0049】
特にメモリマッパーは、着信スパイクイベントがどこに投影するかを計算する。この計算は、メモリマッパーが更新すべきニューロンアドレス及び適切なカーネル値を有するカーネルアドレスを決定できるようにする特に完全にハードウェアに組み込まれている式(hard-wired formula)に特に基づいている。
【0050】
ニューロンアドレス及びカーネルアドレスを決定するために、メモリマッパーは、前記決定のための式を指定するプログラム可能なレジスタ値が提供され得る。
【0051】
メモリマッパーは、特にイベント駆動型、特に、少なくとも1つのスパイクイベントを一度に処理できるように、所定の帯域幅のパラレルインターフェースを備える非同期シリアルインターフェース回路である。
【0052】
メモリマッパーは、特にSRAMモジュール、フラッシュメモリなどである。
【0053】
ソース層は特にsCNNによって備えられる。ソース層は、例えば、ニューロンモジュールによって生成されたスパイクイベントが層のメモリマッパーに再ルーティングされる場合、現在層にすることもできる。
【0054】
「投影する(projects to)」という用語及び同様の用語は、特に、本質的にCNNの受容野の逆元(inverse)を指す。
【0055】
sCNNはイベント駆動型であるため、畳み込み演算は単一スパイクイベントに対して特に効率的に実行できる。
【0056】
本発明の別の実施形態によれば、カーネルモジュールは、特に関連付けられたカーネルメモリからの決定されたカーネルアドレスを受信し、特に、決定されたカーネルアドレスに格納された適用可能なカーネル値を、特に決定されたニューロンアドレスと共に、ニューロンモジュールに出力するように構成及び配置される。
【0057】
本発明の別の実施形態によれば、ニューロンモジュールは:
a) 決定されたニューロンアドレス及び適用可能なカーネル値を受信し、
b) 受信した各ニューロンアドレスに対して、前記適用可能なカーネル値に基づくこのニューロンの更新されたニューロン状態を決定し、
c) 特に前記ニューロン状態が更新された後に、更新されたニューロンが少なくとも1つの所定の閾値に到達する、すなわち、特にそれを超えるか、又は下回るかした場合に、発信スパイクイベントを出力する、
ように、構成かつ配置されている。
【0058】
つまり、ニューロン状態が所定の閾値に達した場合、スパイクイベントが発生する。
【0059】
前記ニューロン状態は、特に数字で表される。
【0060】
「到達」という用語は、特に、ニューロン状態が閾値を下回ること、又は上回ることを指す。
【0061】
本発明の別の実施形態によれば、メモリマッパーは、受信された着信スパイクイベントごとに、出力特徴マップに割り当てられたニューロンからなる少なくとも1つの出力特徴マップを決定するように構成及び配置され、前記出力特徴マップの数は、現在層の畳み込みカーネルの数に等しい。
【0062】
特徴マップは、そのニューロン座標によってアドレス指定可能なニューロンの2次元配列として表すことができる。各ニューロンは、ニューロン状態を持っている。
【0063】
着信スパイクイベントが、層内のカーネルと同じ数の特徴マップに投影する。
【0064】
この実施形態によれば、各カーネルは、それに関連付けられる出力特徴マップを生じさせる。
【0065】
本発明の別の実施形態によれば、sCNNの各層は、宛先マッパーをさらに含み、前記宛先マッパーは、出力、特にニューロンモジュールのバスに接続され、ここで前記宛先マッパーは、発信スパイクイベントを放出(dump)し、及び/又は現在層のニューロンモジュールから受信した発信スパイクイベントの発信宛先情報を生成し、かつ、特に前記宛先情報を前記発信スパイクイベントに関連付けるように構成及び配置され、特にここで、前記発信宛先情報は、発信スパイクイベントが配信される複数の層によって備えられる少なくとも1つの宛先層の情報を含み、特に前記宛先情報は、スパイクイベントが生成される出力特徴マップの情報、出力特徴マップにおけるスパイクイベントのニューロン座標、及び/又は特徴マップの指標に関するオフセット値を含む。
【0066】
本実施形態では、各層が、モジュール式にさらに層を追加してsCNNを拡張することができるように自律的に宛先情報を決定することができる。
【0067】
本発明の別の実施形態によれば、ニューロンモジュールは、受信したニューロンアドレス及びカーネル値、及び特に受信したバイアス値を処理し、更新されたニューロン状態及びスパイクイベントを生成するように構成されている複数の並列動作ニューロンサブインターフェースを備え、ここで各ニューロンサブインターフェースは、受信したニューロンアドレスに対するニューロン状態を読み出し、かつ更新されたニューロン状態を関連付けられたニューロンメモリ内の受信したニューロンアドレスに書き込むための関連付けられたニューロンメモリを備え、前記ニューロンサブインターフェースとその関連付けられたニューロンメモリによってニューロン状態の並列処理が達成されるようになっている。
【0068】
メモリ上での読み取り及び書き込み処理は通常、同等程度、低速で時間のかかる処理であるため、この実施形態は、該ネットワークの処理速度の潜在的なボトルネックを回避し、前の層からのスパイクイベントの効率的かつ高速な処理を可能にする。この実施形態によれば、決定されたニューロンアドレス及び適用可能なカーネル値は、並列方式で処理されるために複数のニューロンサブインターフェースに分配される。
【0069】
本発明の別の実施形態によれば、ニューロンモジュールは、決定されたニューロンアドレス及び適用可能なカーネル値、及び特にバイアス値を、特にカーネルモジュール及び/又はバイアスモジュールから受信し、かつ受信したニューロンアドレス及びカーネル値、及び特にバイアス値を、受信したニューロンアドレス及びカーネル値、及び特にバイアス値を平行して処理するように構成された複数の並列動作ニューロンサブインターフェースへ送信するように構成、適合、及び接続されたルータモジュールを備え、ここで前記ニューロンモジュールは、複数のニューロンサブインターフェースから生成されたスパイクイベントを受信し、特にニューロンサブインターフェースよりもチャンネルが少ないバスにおいて、シリアル処理のためにスパイクイベントを送る(funnel)ように構成及び適合されたマージモジュールをさらに備え、特にここで、前記バスは単一の伝送チャンネルのみを有する。
【0070】
この実施形態は、ニューロンモジュールでは、並列処理を容易にしながら、ニューロンモジュールへのシリアルバス接続及びニューロンモジュールからのシリアルバス接続を適合することを可能にする。
【0071】
本発明の別の実施形態によれば、各層は、関連付けられたバイアスメモリ、及び特に関連付けられたバイアスメモリに接続されたバイアスインターフェースを備えるバイアスモジュールをさらに備え、ここで前記関連付けられたバイアスメモリは、バイアスアドレスにバイアス値を格納するように構成され、前記バイアスモジュールはニューロンモジュールに接続され、かつ前記バイアスモジュールは、ニューロンモジュールに特に所定の時間間隔のバイアス値を提供するように構成され、前記ニューロンモジュールは、受信したバイアス値に基づく少なくとも1つの出力特徴マップにおいてすべてのニューロンのニューロン状態を更新するように構成される。
【0072】
カーネルインターフェースと同様のバイアスインターフェースは、バイアス値を受信して特に処理するためにメモリをアドレス指定するように構成されている。
【0073】
バイアスモジュールは、特にメモリマッパーに接続されるわけではない。したがって、バイアスメモリは、着信スパイクイベントに含まれる情報とは無関係に、ニューロンモジュール、及び特に少なくとも1つの出力特徴マップにバイアス値を提供する。
【0074】
本発明の別の実施形態によれば、ニューロンモジュールは:
- ニューロンアドレス及びカーネル値、及び特にバイアス値を、特にカーネルモジュール及び/又はバイアスモジュールから受信し、かつ特に前記ニューロンアドレス、前記カーネル値、及び前記バイアス値をニューロンサブインターフェースのうちの1つに分配し、
- 特に関連付けられたニューロンメモリから、受信したニューロンアドレスのニューロン状態を読み取り、
- 特に前記ニューロンサブインターフェースで、前記受信したカーネル値及び/又は特に前記受信したバイアス値で読み取ったニューロン状態を更新し、
- 前記更新されたニューロン状態を、特に閾値レジスタに格納かつアクセス可能な少なくとも1つの閾値と比較し、特にここで前記レジスタは、少なくとも1つの閾値を有してプログラム可能であり、
- 前記少なくとも1つの閾値に到達する場合、特にマージモジュールを介して宛先マッパーに特に提供されるスパイクイベントを生成し、かつ前記更新されたニューロン状態をリセットして、リセットされたニューロン状態にし、
- 前記更新された、つまり特に前記リセットされたニューロン状態を、関連付けられたニューロンメモリの前記受信したニューロンアドレスに書き込む、
ように構成されている。
【0075】
sCNNは、各ニューロンに対して、例えば、下限閾値と上限閾値の2つの閾値を含むことができる。
【0076】
ニューロンによりスパイクイベントが発生すると、前記ニューロン状態がリセットニューロン状態に設定される。リセットされたニューロン状態は、例えば、更新されたニューロン状態と閾値との差がゼロ又はそれに等しくなり得る。
【0077】
したがって、ニューロンモジュール、特にニューロンサブインターフェースは、着信スパイクイベントが投影するニューロンのニューロン状態を、特に並列様式で適用可能なカーネル値で更新するために必要な計算を実行するように構成されている。したがって、ニューロンモジュールは、そのようなタスクを実行するために必要な電子回路を備える。
【0078】
本発明の別の実施形態によれば、ニューロンモジュールは、決定されたニューロンアドレスに並列アクセスするための関連付けられたニューロンメモリを有する複数のニューロンサブインターフェースを備え、ここで前記ニューロンモジュールは、複数の受信ニューロンアドレスを、特にニューロンルータモジュールによって、複数のニューロンサブインターフェースへ分配するように構成され、その関連付けられたメモリのサブブロックと接続する各ニューロンサブインターフェースは、受信したニューロンアドレスとカーネル値とを処理するように構成されている。
【0079】
この実施形態は、カーネル値で更新すべきニューロンの並列処理を可能にする。
【0080】
特に関連付けられたニューロンメモリからの読み取り及び書き込みは同等程度の遅い処理であるため、例えばランダムアクセスメモリなどの従来のメモリストレージを使用する場合、この工程を並列化することで処理時間が短縮される。
【0081】
この実施形態は、特に、データ速度が高い場合であっても、着信スパイクイベントのリアルタイム処理を可能にする。
【0082】
本発明の別の実施形態によれば、カーネルインターフェースは、関連付けられたカーネルメモリに含まれるカーネルメモリのサブブロックに並列アクセスするための複数のカーネル読み取り/書き込みインターフェースを備え、ここで前記カーネルインターフェースは、受信されたカーネルアドレスを、特にカーネルインターフェースルーターシステムによって、複数のカーネル読み取り/書き込みインターフェースへ分配し、かつカーネルメモリのサブブロックから受信したカーネル値を収集するように構成されている。
【0083】
この実施形態は、従来のメモリストレージにおける同等の低速の読み取り及び書き込み処理を加速する問題を解決し、sCNNは、高いデータ速度であっても、特にリアルタイム処理が可能になる。
【0084】
「リアルタイム」処理又は動作という用語は、sCNNによる着信スパイクイベントの平均処理速度がsCNNの着信スパイクイベントの平均速度に等しく、メモリオーバーフローが回避されるようになることを特に特徴としている。
【0085】
本発明の別の実施形態によれば、メモリマッパーは、スパイクイベントがメモリマッパーによって受信される場合に、適用可能なカーネル値のカーネルアドレス及び更新すべき対応するニューロンアドレスを有するニューロン座標を決定するために、以下の一連の動作を実行するように構成され、前記スパイクイベントは、ソース特徴マップ内の前記スパイクイベントの座標(x,y)、特にチャンネル識別子(c)、特にx識別子とy識別子とを含むニューロン座標に関する情報を含むか、又はそれからなる:
- 特に、レジスタによって提供及び格納される所定のオフセット(p,p)でスパイクイベントの前記座標(x,y)を、ゼロパディング(x+p,y+p)し、
- 前記座標(x,y)から、特に前記ゼロパディングされた座標(x+p,y+p)から、スパイクイベントが投影するニューロンアンカー座標(x,y)と、対応する少なくとも1つのカーネル(f)のカーネルアンカー座標(x ,y )とを計算し、ここで、前記カーネルアンカー座標(x ,y )は、少なくとも1つのカーネル(f)のそれぞれのカーネル座標(f,x ,y )を示し、特に、前記ニューロンアンカー座標は、出力特徴マップに関連付けられており、
- 前記ニューロンアンカー座標及び前記カーネルアンカー座標から開始して、更新すべきすべてのニューロン座標(f,x,y)、及び適用可能なカーネル値のすべてのカーネル座標(c,f,x,y)を決定し、特に、レジスタによって提供される出力特徴マップサイズ(H、W)、ストライドサイズ(s,s)、及び/又はカーネルサイズ(H,W)において情報を処理することによって決定し、
- 前記決定されたニューロン座標(f,x,y)及び前記適用可能なカーネル値を有するカーネル座標から、特に圧縮されたニューロンアドレス及びカーネルアドレスを決定し、
- 前記決定されたニューロンアドレス及びカーネルアドレスをカーネルモジュール及び/又はニューロンモジュールに提供すること。
【0086】
ソース特徴マップは、特にスパイクイベントが受信されたsCNNの層の出力特徴マップである。
【0087】
着信スパイクイベントから座標をパディングすると、特徴マップの境界でスパイクイベントが畳み込まれる問題が特に解決される。オフセット(p,p)は、特に、プログラム可能なレジスタに含まれる。
【0088】
本明細書の文脈におけるレジスタとは、特に、ニューロンメモリ又はカーネルメモリなどのメモリと比較して、格納されたデータのより高速な読み取り及び書き込みを提供するメモリデバイスを指す。したがって、本発明によるsCNNは、特に頻繁にアクセスされる情報を格納するためのレジスタを備える。
【0089】
オフセット値は、スパイクイベントが層によって受信されるたびにアクセスされる。そのため、前記オフセット値は、メモリマッパーに電子的に接続されるか、或いは、メモリマッパーによって備えられるレジスタに格納される。
【0090】
ニューロンアンカー座標は、例えば、スパイクイベントが出力特徴マップで投影する投影ウィンドウの角に位置するニューロンに対応する。投影ウィンドウは、特にカーネルサイズ、例えばxとyの寸法、畳み込みのストライドサイズ及び可能な他の要因によって与えられる。ニューロンアンカー座標は、畳み込みのために、特にニューロンのニューロン状態を更新するための決定されたニューロンアドレスでカーネルをスイープするスイープ動作のために、出力特徴マップにおける開始点を定義する目的を果たす。出力特徴マップでのカーネルのスイープは、特に畳み込みのストライドサイズに依存する。
【0091】
カーネルアンカー座標は、特にカーネルの角又は角の近くに位置するカーネル値の座標である。カーネルアンカー座標は、適用可能なすべてのカーネル値を決定するための開始点を定義する目的で果たす。これは、ストライドサイズが1より大きい場合に特に重要である。
【0092】
カーネルアンカー座標は、特にストライドサイズ、カーネルサイズ、及び可能な他の要因に依存する。
【0093】
ニューロンアンカー座標とカーネルアンカー座標とが決定されると、適用可能なカーネル値との畳み込みによって影響を受けるニューロンを計算するための開始点が生成される。
【0094】
ニューロンアンカー座標とカーネルアンカー座標とによって定義された開始点から、更新すべきすべてのニューロン座標(f,x,y)、つまりスパイクイベントが投影するすべてのニューロン、及び適用可能なカーネル値のすべてのカーネル座標(c,f,x,y)は、特にレジスタによって提供される出力特徴マップサイズ(H,W)、ストライドサイズ(s,s)、及び/又はカーネルサイズ(H,W)において情報を処理することによって決定される。
【0095】
更新すべきニューロン座標を決定するために必要なパラメータは、特に、従来のメモリストレージと比較して高速の読み取り及び書き込み速度を提供するレジスタに格納されている。
【0096】
出力特徴マップ内の位置を特に指すニューロン座標から、ニューロンアドレスが決定され、この後者は特にニューロンメモリ内のメモリアドレスを指す。
【0097】
ニューロンアドレスとカーネルアドレスとがメモリマッパーによって決定されると、これらのアドレスはカーネルモジュール、特にカーネルインターフェースに提供され、そこで適用可能なカーネル値が受信され、ニューロンモジュールに送信され、そこで決定されたニューロンのニューロン状態は、適用可能なカーネル値で更新される。
【0098】
メモリマッパーは、これらすべての動作を実行するように構成及び配置されている。この目的のために、メモリマッパーは、更新すべきニューロンアドレス及び適用可能なカーネル値のカーネルアドレスを計算する式を実行するように特に構成及び配置されている。この式は、メモリマッパーに特に組み込まれており、プログラム可能ではない。ただし、前記式へ、例えばストライドサイズ、カーネルサイズなどを提供するためにレジスタに格納されている値は、それぞれのレジスタを適切な値でプログラムすることによってプログラム及び調整することができる。
【0099】
本発明の別の実施形態によれば、関連付けられたニューロンメモリは、すべてのニューロン状態が連続するニューロンアドレスに格納されるように組織され、特に、前記関連付けられたニューロンメモリは、動作中に連続するニューロンアドレスに格納されるすべてのニューロン状態を有し、前記メモリマッパーは、圧縮されたニューロンアドレスを生成することなど、すべてのニューロン座標に対して連続するニューロンアドレスを生成するように構成され、かつ前記メモリマッパーは、前記圧縮されたニューロンアドレスをニューロンモジュールに提供するように構成される。
【0100】
本実施形態では、関連付けられたニューロンメモリのメモリ空間的効率のよい使用を可能にする。
【0101】
本発明の別の実施形態によれば、関連付けられたカーネルメモリは、すべてのカーネル値が連続するカーネルアドレスに格納されるように組織され、特に、前記関連付けられたカーネルメモリは、動作中に連続するカーネルアドレスに格納されるすべてのカーネル値を有し、前記メモリマッパーは、圧縮されたカーネルアドレスを生成することなど、すべてのカーネル座標に対して連続するカーネルアドレスを生成するように構成され、かつ前記メモリマッパーは圧縮されたカーネルアドレスをカーネルモジュールに提供するように構成されている。
【0102】
この実施形態は、関連付けられたカーネルメモリのメモリ空間効率のよい使用を可能にする。
【0103】
本発明の別の実施形態によれば、イベント駆動型スパイキング畳み込みネットワークは、ソース層から受信した発信スパイクイベントを少なくとも1つの宛先層へ転送するように構成されるスパイクイベントルータと接続されている複数の層を含み、特に前記ルータは、発信スパイクイベントに関連付けられた宛先情報にアクセスし、前記宛先層は、前記ソース層であることが可能である。
【0104】
この実施形態は、スパイクイベントルータによって電子的に接続及び組織された複数の層をsCNNに提供する。スパイクイベントルータは、様々なsCNN構成とルーティングオプションとを可能にするようにプログラムすることができる。
【0105】
イベント駆動型スパイクを生成するように構成されたダイナミックビジョンセンサは、スパイクイベントルータの入力又は第1のソース層として機能することができる。
【0106】
本発明の別の実施形態によれば、イベント駆動型畳み込みニューラルネットワークは、イベント駆動型、特にスパイクイベントの非同期処理のために構成及び配置され、ここで、前記sCNNは、非同期スパイクイベントを受信し、特に受信時に各スパイクイベントを処理するように構成され。特にここでメモリマッパーはイベント駆動型、特に非同期電子回路であり、特に関連付けられたメモリモジュールはイベント駆動型、特に非同期モジュールであり、特にカーネルモジュールは、イベント駆動型、特に非同期モジュールであり、特に宛先マッパーは、イベント駆動型、特に非同期電子回路である。
【0107】
本発明の別の実施形態によれば、sCNNは、ダイナミックビジョンセンサからスパイクイベントを受信かつ処理するように構成され、特にここで、前記sCNNはダイナミックビジョンセンサを備える。
【0108】
本発明による問題は、コンピュータプログラムによってさらに解決される。コンピュータプログラムは、特に、sCNN、より特に、本発明によるsCNNのコンポーネントを動作するように構成される。
【0109】
sCNNの実施形態の文脈で導入されるような用語及び定義は、コンピュータプログラムにも適用される。
【0110】
コンピュータプログラムは、コンピュータプログラムを、メモリマッパー、ニューロンモジュール、カーネルモジュール、宛先マッパー、及び/又はスパイクイベントルータなどのsCNNの少なくとも1つのコンポーネント上で実行する命令、実行する場合の命令を含み、本発明によるイベント駆動型スパイキング畳み込みネットワークの前記コンピュータプログラムは、それぞれのコンポーネントに、着信スパイクイベントを特に非同期的に処理するために、コンポーネントが構成及び配置される工程を実行させる。
【0111】
コンピュータプログラムは、特にsCNNのレジスタにプログラム可能なレジスタ値を提供する。
【0112】
コンピュータプログラムの別の実施形態によれば、コンピュータプログラムは、メモリマッパーに:
a)電子接続を介してネットワークのソース層から着信する特に単一のスパイクイベントを受信し、前記着信スパイクイベントは、前記ソース層内の特に単一のニューロンの座標に関する情報を含み、そして受信したスパイクイベントに応答し、
b)前記受信した着信スパイクイベントと少なくとも1つの畳み込みカーネルとの畳み込みが投影するニューロンの関連付けられたニューロンメモリのニューロン座標及び対応するニューロンアドレスを決定し、
c)前記決定されたニューロンアドレスのニューロン状態に適用可能なカーネル値の対応するカーネルアドレスを有するカーネル座標を決定し、ここで前記決定されたニューロンアドレスのニューロン状態は、特に少なくとも1つの畳み込みカーネルから、又は複数の畳み込みカーネルから、前記適用可能なカーネル値で更新されるようになり、
d)適用可能なカーネル値の前記決定されたカーネルアドレス、及び特に決定された前記ニューロンアドレスをカーネルモジュール、特にカーネルインターフェースに提供する、
ことをさせる。
【0113】
コンピュータプログラムの別の実施形態によれば、コンピュータプログラムはニューロンモジュールに:
a)決定されたニューロンアドレスと適用可能なカーネル値とを、特にニューロンサブインターフェースの1つで受信し、
b)受信した各ニューロンアドレスのために、適用可能なカーネル値に基づくニューロンのための更新されたニューロン状態を決定し、
c)特に前記ニューロン状態が更新された後に、更新されたニューロンが少なくとも1つの所定の閾値に到達する、すなわち、特にそれを超えるか、又はそれを下回るかした場合に、発信スパイクイベントを出力する、
ことをさせる。
【0114】
コンピュータプログラムの別の実施形態によれば、コンピュータプログラムは、宛先マッパーに発信スパイクイベントを放出させ、及び/又はニューロンモジュールから受信した発信スパイクイベントの発信宛先情報を生成させ、かつ前記宛先情報を発信スパイクイベントに関連させ、特にここで、前記発信宛先情報は、前記発信スパイクイベントが配信すべき少なくとも1つの宛先層に関する情報を含み、特にここで、前記宛先情報は、前記スパイクイベントが生成された出力特徴マップ、前記出力特徴マップにおける前記スパイクイベントのニューロン座標、及び/又は特徴マップインデックスに関するオフセット値において情報を含む。
【0115】
コンピュータプログラムの別の実施形態によれば、コンピュータプログラムはニューロンサブインターフェースに:
- ニューロンアドレス及びカーネル値、及び特にバイアス値を、カーネルモジュール及び/又はバイアスモジュールから受信し、
- 前記受信したニューロンアドレスのニューロン状態を読み取り、
- 前記受信したカーネル値及び/又は特に前記受信したバイアス値で前記読み取りニューロン状態を更新し、
- 前記更新されたニューロン状態を、特に閾値レジスタに格納及びアクセス可能な少なくとも1つの閾値と比較し、特にここで前記レジスタは少なくとも1つの閾値でプログラム可能であり、
- 前記少なくとも1つの閾値に達すると、宛先マッパーに特に提供されるスパイクイベントを生成し、前記更新された前記ニューロン状態をリセットして、リセットされたニューロン状態にし、
- 前記更新された、つまり特に前記リセットされたニューロン状態を、関連付けられたニューロンメモリの前記受信した前記ニューロンアドレスに書き込む、
ことをさせる。
【0116】
コンピュータプログラムの別の実施形態によれば、コンピュータプログラムは、ニューロンモジュールに、特にニューロンルータモジュールによって複数の受信ニューロンアドレスを複数のニューロンサブインターフェースに分配させ、ここで前記コンピュータプログラムはさらに関連付けられたメモリに接続している各ニューロンサブインターフェースに、受信したニューロンアドレスとカーネル値とを処理させる。
【0117】
コンピュータプログラムの別の実施形態によれば、コンピュータプログラムは、カーネルインターフェースに、特にカーネルインターフェースルータシステムによって受信されたカーネルアドレスを複数のカーネル読み取り/書き込みインターフェースに分配させ、カーネルメモリのサブブロックから受信されたカーネル値を収集させる。
【0118】
コンピュータプログラムの別の実施形態によれば、コンピュータプログラムは、スパイクイベントが、メモリマッパーによって受信される場合に、適用可能なカーネル値のカーネルアドレス及び更新される対応するニューロンアドレスとのニューロン座標を決定するために、メモリマッパーに以下の一連の動作を実行させ、ここで前記スパイクイベントは、ソース特徴マップ内のスパイクイベントの座標(x,y)、及び特にチャンネル識別子(c)に関する情報を含むか、又はそれからなり、前記ニューロン座標は、特に、x識別子とy識別子とを含み、前記以下の一連の動作は:
- 特に、レジスタによって提供され、かつレジスタに格納される所定のオフセット(p,p)で前記スパイクイベントの前記座標(x,y)を、ゼロパディング(x+p,y+p)し、
- 前記座標(x,y)から、特に前記ゼロパディングされた座標(x+p,y+p)から、前記スパイクイベントが投影するニューロンアンカー座標(x,y)と、対応する少なくとも1つのカーネル(f)の対応するカーネルアンカー座標(x ,y )を計算し、ここで、前記カーネルアンカー座標(x ,y )は、少なくとも1つのカーネル(f)のそれぞれのカーネル座標(f,x ,y )を示し、特に、前記ニューロンアンカー座標は、出力特徴マップに関連付けられており、
- 前記ニューロンアンカー座標と前記カーネルアンカー座標から開始して、更新すべきすべてのニューロン座標(f,x,y)(すなわち前記スパイクイベントがそれに投影する)、及び適用可能なカーネル値のすべてのカーネル座標(c,f,x,y)を決定し、特に、レジスタによって提供される出力特徴マップサイズ(H,W)、ストライドサイズ(s,s)、及び/又はカーネルサイズ(H,W)において情報を処理することによって決定し、
- 決定された前記ニューロン座標(f,x,y)及び適用可能なカーネル値を有するカーネル座標から、特に圧縮されたニューロンアドレス及びカーネルアドレスを決定し、
- 前記決定されたニューロンアドレス及びカーネルアドレスをカーネルモジュール及び/又はニューロンモジュールに提供すること、
である。
【0119】
コンピュータプログラムの別の実施形態によれば、コンピュータプログラムは、すべてのニューロン状態が連続するニューロンアドレスに格納されるように関連付けられたニューロンメモリを組織し、ここで前記コンピュータプログラムは、メモリマッパーに、圧縮されたニューロンアドレスを生成させるなど、連続するニューロンアドレスをすべてのニューロン座標に対して生成させ、かつここで前記コンピュータプログラムはさらに、前記メモリマッパーに前記圧縮されたニューロンアドレスをニューロンモジュールに提供させる。
【0120】
コンピュータプログラムの別の実施形態によれば、コンピュータプログラムは、すべてのカーネル値が連続するカーネルアドレスに格納されるように関連付けられたカーネルメモリを組織し、ここで前記コンピュータプログラムは、メモリマッパーに、圧縮されたカーネルアドレスを生成させるなど、連続するカーネルアドレスをすべてのカーネル座標に対して生成させ、かつここで前記コンピュータプログラムはさらに、前記メモリマッパーに前記圧縮されたカーネルアドレスをカーネルモジュールに提供させる。
【0121】
コンピュータプログラムの別の実施形態によれば、コンピュータプログラムは、スパイクイベントルータに、ソース層から受信した発信スパイクイベントを少なくとも1つの宛先層にルーティングさせ、特にここで前記ルータは、前記発信スパイクイベントに関連付けられた宛先情報にアクセスし、ここで前記宛先層は前記ソース層であることが可能である。
【0122】
本発明による問題は、コンピュータ実行方法によってさらに解決される。前記コンピュータ実行方法は、特に、本発明によるsCNN、より特に、sCNNのコンポーネントを動作するように構成される。前記コンピュータ実行方法は、さらに、前記コンピュータプログラムについて開示されるような少なくともいくつかの特徴及び/又は方法の工程をさらに特に含む。
【0123】
この問題は、イベント駆動型sCNNのメモリマッパーによってさらに解決される。
【0124】
sCNNの実施形態の文脈で導入されるような用語及び定義は、メモリマッパーにも適用される。
【0125】
本発明によるメモリマッパーは、スパイクイベントが前記メモリマッパーによって受信される場合に、イベント駆動方式で更新されるカーネルアドレス及びニューロンアドレスを決定するように構成されており、前記スパイクイベントは、スパイクイベントの座標(x,y)及び特にチャンネル識別子(c)に関する情報を含むか、又はそれからなり、前記座標は、特にx-及びy-識別子を含み、前記メモリマッパーによってスパイクイベントが受信される場合、前記メモリマッパーは、以下の一連の動作を実行する:
- 特に、レジスタによって提供かつ格納される所定のオフセット(p,p)で、スパイクイベントの座標(x,y)をゼロパディング(x+p,y+p)すること、
- 前記座標(x,y)から、特に前記ゼロパディングされた座標(x+p,y+p)から、前記スパイクイベントが投影するニューロンアンカー座標(x,y)、及び対応する少なくとも1つのカーネル(f)の対応するカーネルアンカー座標(x ,y )を計算することであり、ここで、前記カーネルアンカー座標(x ,y )は、少なくとも1つのカーネル(f)のそれぞれのカーネル座標(f,x ,y )を示し、特に、前記ニューロンアンカー座標は、出力特徴マップに関連付けられている、
- 前記ニューロンアンカー座標と前記カーネルアンカー座標とから開始して、更新すべきすべてのニューロン座標(f,x,y)(すなわち前記スパイクイベントが投影する)、及び適用可能なカーネル値のすべてのカーネル座標(c,f,x,y)を、特に、レジスタによって提供される出力特徴マップサイズ(H、W)、ストライドサイズ(s,s)、及び/又はカーネルサイズ(H,W)において情報を処理することによって、決定すること、
- 前記決定されたニューロン座標(f,x,y)及び前記適用可能なカーネル値を有するカーネル座標から、特に圧縮されたニューロンアドレス及びカーネルアドレスを決定すること、
- 決定された前記ニューロンアドレス及びカーネルアドレスを、前記ニューロンアドレス及びカーネルアドレスを処理するために、カーネルモジュール及び/又はニューロンモジュールに提供すること。
【0126】
メモリマッパーの別の実施形態によれば、メモリマッパーは、すべてのニューロン座標に対して、圧縮されたニューロンアドレスを生成するなど、連続したニューロンアドレスを生成するように構成され、かつここで前記メモリマッパーは、前記圧縮されたニューロンアドレスをニューロンモジュールに提供するように構成されている。
【0127】
メモリマッパーの別の実施形態によれば、メモリマッパーは、すべてのカーネル座標に対して、圧縮されたカーネルアドレスを生成するなど、連続したカーネルアドレスを生成するように構成され、かつここで前記メモリマッパーは、前記圧縮されたカーネルアドレスをカーネルモジュールに提供するように構成されている。
【0128】
特に、例示的な実施形態について、図と併せて以下に説明する。図は、特許請求の範囲に添付され、示される本発明の実施形態及び態様の個々の特徴の説明テキストを伴っている。図に示された、及び/又は、図の前記テキストで言及された各個別の特徴は、本発明による装置に関する請求項に(分離した形でも)組み込むことができる。
【0129】
図1は、本発明によるsCNN 1の1つの層10の模式的図を示す。層10は様々なコンポーネントを備える電子モジュールであり、かつsCNN内の複数のコピーと典型的に統合される。
【0130】
ボックスで囲まれた領域はユニット又はモジュールを表し、矢印はコンポーネント間の電子データ接続と関連付けられたデータフローの方向とを示す。
【0131】
sCNN 1は、{c,x,y}で示される着信スパイクイベント140を受信するように構成されたメモリマッパー130を備えている。着信スパイクイベント140は、特に、着信スパイクイベント140が生成された位置に関する情報と、スパイクイベント140が関連付けられているチャンネルを示すチャンネルインデックスとを含むデジタルデータである。前記位置情報は、xとyの識別子を持った、ソース層の出力特徴マップにおける座標、又はダイナミックビジョンセンサの座標(図2参照)の形態である。前記チャンネルには、例えば、ダイナミックビジョンセンサなどのスパイクイベント生成デバイスからのカラーチャンネルを示すことができる。しかし、他のチャンネルマーカーも可能である。
【0132】
メモリマッパーのタスクは、(現在)層10が畳み込み(複数可)を実行するための必要な情報をすべて決定することである。したがって、メモリマッパー130は、着信スパイクイベント140が投影するニューロンアドレス142nを決定する必要があり、すなわち、前記層内のどのニューロンがスパイクイベント140と少なくとも1つの畳み込みカーネル410との畳み込みによって影響を受けるかを決定する必要がある。
【0133】
一旦、メモリマッパー130がスパイクイベント140を受信すると、メモリマッパー130はこのスパイクイベント140の処理を開始する。メモリマッパー130は、イベント駆動型のメモリマッパー130であり、例えば、複数のバッファステージを有する処理パイプライン、及びスパイクイベントc、x、yの各種ビットを加算、乗算、多重化する電子コンビナートロジスティック回路を備える。
【0134】
メモリマッパー130は、適用可能なカーネル値142kによって更新すべきニューロンアドレス142nを決定するように構成された、所定の式を実行するように配線されている。着信スパイクイベント140が入ってくる特徴マップの寸法、現在層10における出力特徴マップの寸法と数、カーネルの数、畳み込みのストライドサイズなどのパラメータが変化する可能性があるため、メモリマッパー130が備える連結レジスタ又はレジスタ131によって、前記式にこれらの値が提供される。図1に示したすべてのレジスタ131、163、123は、高速な読み書き動作が可能なように構成された比較的高速なメモリ記憶装置である。
【0135】
なお、本明細書では、すべてのレジスタがプログラム可能であり、特にsCNNのトレーニング可能でない又はトレーニングしないパラメータを格納するように構成されている。
【0136】
次いで、カーネル値142k及びバイアス値は、当技術分野でよく知られているように、通常、sCNN 1の訓練手順の間に決定される。
【0137】
メモリマッパー130に接続されたレジスタ131は、少なくとも1つのカーネルのカーネルサイズ、ストライド、xとyのゼロパディング、カーネルfの数、及び出力特徴マップ430の数に関する数値を格納する。
【0138】
さらに、レジスタ131は、出力特徴マップ430のサイズ、例えばその高さ及び幅(例えばピクセル単位で測定される)の値を格納することができる。
【0139】
メモリマッパー130の例示的な実施形態と、メモリマッパーによってニューロンアドレスとカーネル値とがどのように決定されるかを図3に示す。
【0140】
決定されたニューロンのアドレスncomp及びカーネルアドレスkcompは、無駄な関連付けられたニューロン及びカーネルメモリのメモリ空間はないように、特に圧縮されている。
【0141】
メモリマッパー130は、ニューロン142n及びカーネルアドレスを、カーネルインターフェース111及び関連付けられたカーネルメモリ112を備えるカーネルモジュール110に出力する。カーネルインターフェース111は、カーネルメモリインターフェースである。
【0142】
カーネルインターフェース111では、カーネルアドレスが受信され、カーネルインターフェース111は、関連付けられたカーネルメモリ112からカーネルアドレスを読み出す。
【0143】
カーネルメモリ112は、RAM(Random Access Memory)、フラッシュメモリなどの従来のメモリである。関連付けられたカーネルメモリ112は、層10の他の部分と同じ回路基板上に配置することもでき、又は層10に接続して外部メモリデバイスを構成することもできる。
【0144】
スパイクイベント140ごとに、複数のカーネル値142kをカーネルメモリ112から読み出す必要があり、SRAMなどの従来のメモリデバイスは比較的に遅いため、カーネルモジュール110は、関連付けられたカーネルメモリ112との間でカーネル値142kを並列に読み書きするように構成及び配置されている(図6参照)。
【0145】
関連付けられたカーネル及び/又は関連付けられたニューロンメモリ112、122の読み取り及び書き込み動作を並列化することで、この問題に対処する例示的な実施形態を図6に示す。
【0146】
現在層10において、畳み込みカーネルの数がNであるとすると、カーネルインターフェース111は、ニューロンアドレスに関連付けられたN個の畳み込みカーネルのカーネル重みを出力し、前記ニューロンアドレスは、N個の畳み込みカーネルの値で更新されることになる。
【0147】
各畳み込みカーネル410(番号は図4を参照)は、関連付けられる出力特徴マップ430に投影するため、N個の畳み込みカーネル410は、現在層10のN個の出力特徴マップ430に投影し、カーネルの寸法をN×M×H×Wであると仮定し、ここで、Mは入力チャンネルの数、Hは各カーネルの高さ、Wは幅である。したがって、各出力特徴マップ430は、適用可能なカーネル値(w)で更新すべきいくつかのニューロン420を含む。これらのニューロン420のニューロンアドレスは、適用可能なカーネル値142kに関連付けられた前記ニューロンアドレス142nを含む出力データセット内にカーネルインターフェース111によって提供される。更新すべきニューロンのニューロンアドレスは、カーネルインターフェース111によって提供されるが、上記のようにメモリマッパー130によって計算される。
【0148】
カーネルモジュール110は、ニューロンのニューロン状態を処理するように構成及び配置されたニューロンモジュール120に電子的に接続されている。カーネルモジュール110からの出力データセットは、ニューロンモジュール120によって受信される。ニューロンモジュール120は、出力データセットを受信すると、前記データセットの処理を開始する。すなわち、ニューロンモジュール120は、イベント駆動型である。
【0149】
出力特徴マップ430内のいくつかのニューロン420の更新に加えて、出力特徴マップ430内のすべてのニューロン431は、バイアス値142bを用いて繰り返される時間間隔で更新することができる。
【0150】
この目的のために、各層10、10’、10’’は、バイアスインターフェース161及び関連付けられたバイアスメモリ162を有するバイアスモジュール160を備える。関連付けられたバイアスメモリ162は、従来のメモリデバイスであり、ニューロン431に適用対象であるバイアス値を格納するように構成されている。
【0151】
バイアスインターフェース161は、バイアス関連メモリ162に接続又は統合され、前記関連バイアスメモリ162からバイアス値を読み書きするように構成されている。さらに、バイアスインターフェース161は、前記バイアス値を出力し、前記バイアス値で更新されるニューロンアドレスと共にニューロンモジュール120に前記バイアス値を提供するように構成されている。
【0152】
バイアス値142bは通常、特定の出力特徴マップ430内のすべてのニューロン431に拡張されるが、一方で、カーネル値142kで更新されるべきニューロン420は、メモリマッパー130が受信した特定のスパイクイベント140に依存することに注意することが重要である。
【0153】
したがって、バイアスモジュール160は、データを交換するように、及び/又は同期的に動作するようにメモリマッパー130に接続されず、処理される入力イベントに対して独立して、かついずれのイベントと並行して動作するようになる。バイアスモジュールの動作は、クロッキングデバイスに基づくことができるが、ユーザーが選択した任意のトリガーによって動作することもできる。
【0154】
バイアスモジュール160は、バイアスレジスタ163、すなわち、バイアス値142bで更新されるべき現在層10内の出力特徴マップ430のために示す出力特徴マップインデックスを格納する高速読み取り/書き込みメモリコンポーネントを備える。
【0155】
ニューロンモジュール120は、バイアスモジュール160及びカーネルモジュール110に接続され、前記モジュール160、110からの出力を受信するように構成されている。
【0156】
ニューロンモジュール120は、ニューロンレジスタ123に接続されている。ニューロンモジュール120は、複数のニューロンサブインターフェース121sを含み、各ニューロンサブインターフェース121sは、ニューロン状態の読み取り、処理、及び書き込みのために、ニューロンのニューロン状態(図6を参照)を格納する関連付けられたニューロンメモリ506(図5を参照)を有する。ニューロンサブインターフェースの一実施形態を図5に示す。
【0157】
ニューロンモジュール120がカーネルモジュール110から出力データセットを受信するか、バイアスモジュール160からバイアス値142bを受信するたびに、ニューロンモジュールは、前記出力データセットを、適用可能なカーネル値142k及び/又はバイアス値142bで更新されるべきニューロンからニューロン状態を読み取る1つ又は複数のニューロンサブインターフェース601に分配する。
【0158】
スパイクイベント140又は受信バイアス値142bに従って、複数のニューロン状態を関連付けられたニューロンメモリ506から読み取る必要があり、SRAMなどの従来のメモリデバイスは比較的遅いため、ニューロンモジュール120は、並列化されたニューロンサブインターフェース121s(複数)及びそれらの関連付けられたニューロンメモリ506(複数)を用いて、関連付けられたニューロンメモリ506(図6を参照)との間でニューロン状態を並列に読み取り及び書き込みするように構成及び配置される。
【0159】
ニューロン状態は、例えば次式に従ってカーネル値142kで更新される:
s(n+1)=mod(s(n)+wb,tr)
式中、s(n)は、関連付けられたニューロンメモリ506に格納されているニューロンのニューロン状態を表し、wbは、適用可能なカーネル値142k又はバイアス値142bのいずれかに対応する。新しいニューロンの状態s(n+1)は、例えば、上限と下限の閾値trを用いたモジュロ演算によって与えられる。
【0160】
s(n)+wbが閾値を超える場合、ニューロン状態は、前記モジュール演算によってリセットされたニューロン状態へリセットされ、発信スパイクイベント150が、ニューロンサブインターフェース121s(複数)によって生成される。ニューロンサブインターフェース121s(複数)は、新しいニューロン状態を、受信されたのと同じニューロンアドレスの下で、関連付けられたニューロンメモリ506に格納する。このプロセスは、図5にも示されており、詳細に説明されている。なお、図5は、ニューロンモジュール120についての機能的な図を提供し、図6は、ニューロンモジュール120の構造的な構成の概略図を提供することに留意されたい。
【0161】
リセットされたニューロン状態を定義する他の方法が可能であり、図5の状況で詳しく説明されている。
【0162】
下限又は上限の閾値502のいずれかに到達したすべてのニューロンについて、ニューロンインターフェース601は、発信スパイクイベント150を出力する。この発信スパイクイベント150は、前記ニューロンを含む出力特徴マップ内のニューロンの座標と、さらに、前記出力特徴マップを示すための出力特徴マップインデックスとを含むデータ構造である。このデータ構造は、本明細書の文脈では宛先マッパーとも呼ばれる宛先マッパー170(図1を参照)コンポーネントに電子的に送信される。
【0163】
宛先マッパーは、例えば、宛先マッパーに接続されたレジスタ171及び発信スパイクイベント150から受信した情報をマージするためのマージバッファである。
【0164】
宛先マッパー170は、本明細書の文脈において宛先層とも呼ばれる適切な層10、10’、10’’にルーティングされることが可能なように、発信スパイクイベント150、503の情報を加えるように構成及び配置されている。
【0165】
この目的のために、宛先マッパー170は、発信スパイクイベント150、503がルーティング対象である宛先層10、10’、10”に関する情報を提供する関連付けられたレジスタ171を備える。
【0166】
宛先マッパー170は、スパイキングニューロンが位置する出力特徴マップ430の座標のx,y、及びインデックスを含むように、発信スパイクイベント150の情報を加える。さらに、出力特徴マップのインデックスは、スパイキングニューロンが位置する出力特徴マップを示す前記追加情報に含まれる。さらに、発信スパイクイベント150は、複数の宛先層10’、10’’にルーティングされることが可能である。したがって、宛先マッパー170は、発信スパイクイベントが宛先層において所定の出力特徴マップにマップされるように、sCNN 1によって備えられる別の層10’、10’’を示す宛先層のインデックス、及び特徴マップインデックスに関するオフセット値を含むように、情報を加える。オフセット値を付加することで、sCNN 1において層スタッキングが可能になる。
【0167】
前述のように情報が付加された発信スパイクイベント150を、次いで、図2に描かれているように、sCNNのスパイクイベントルータ200に提供することができる。
【0168】
図2は、本発明によるsCNN 1の一般的なレイアウトを示しており、スパイクイベントルータ200と複数の層10、10’、10’’(図1で説明した通り)とを備える。
【0169】
スパイクイベントルータ200は、層10、10’、10’’から、又はダイナミックビジョンセンサなどのイベント発生装置220から、スパイクイベント210を受信する。
【0170】
スパイクイベントルータ200は、次いで、スパイクイベント210をさらに処理するために、その付加された宛先層10’、10’’の情報に基づくようなスパイクイベント210を提供する(230)。
【0171】
スパイクイベントルータ200は、例えば、ストリームマルチプレクサ/デマルチプレクサ回路である。
【0172】
スパイクイベントルータ200はプログラム可能で、かつスパイクイベントをバックワード方式、フォワード方式、又はリカレント方式で宛先層にルーティングするように構成されており、特に深層学習ネットワークの要件に関して、sCNN 1に高いフレキシビリティを提供している。
【0173】
スパイクイベントルータ200は、複数のsCNN 1がネットワークとして協調して配置されている場合に、層間のデータフローを提供するとともに、チップ間の通信(「チップアウト」及び「チップイン」と示す)を行うように構成されている。
【0174】
この目的のために、スパイクイベントルータ200は、外部デバイス(第2のsCNNからのスパイクイベントルータであってもよい)からの信号及びデータをチップ間で受信するための入力ポート240を備える。スパイクイベントルータ200はまた、スパイクイベントルータ200に接続されたダイナミックビジョンセンサ220によって生成されたデータ、すなわちスパイクイベントを受信するように構成されている。ダイナミックビジョンセンサ220は、リカレント又はバックワードの伝搬ができないことを除いて、sCNN 1のソース層として扱うことができる。
【0175】
スパイクイベントルータ200は、スパイクイベントを他のチップに出力、又は結果として出力するための出力ポート250を有している。
【0176】
sCNN 1は特に、sCNN 1の層10,10’,10’’及び出力特徴マップ430に割り当てられるプログラム可能な100.000個を超えるニューロンを備える。
【0177】
層10,10’,10’’、特に前記層10,10’,10’’のレジスタ131,163,123,171は、各層10,10’,10’’の特定のレイアウト、すなわち、各層に含まれる畳み込みカーネルの数、各層の出力特徴マップの寸法などを反映するために、適宜プログラムされている。
【0178】
ダイナミックビジョンセンサ220は、例えば、アレイ状に配置された光受容性ピクセルを有するデバイスである。各ピクセルは、検出された光の強度が変化した場合にスパイクイベントを出力するように構成されている。つまり、ダイナミックビジョンセンサ220のピクセルは、検出された光束の変化に感受性がある。
【0179】
ダイナミックビジョンセンサ220は、イベント駆動型デバイスであり、すなわち、ピクセルは、フレームベースのカメラの読み出しとは異なり、スパイクイベントが発生したときにそれらを出力する。このようなダイナミックビジョンセンサは、非常に高速な動的イメージングである利点を提供する。本発明によるsCNN 1と組み合わせると、リアルタイムの超高速データ処理の可能性を、sCNN 1を利用することで最大限に引き出すことができる。
【0180】
図3には、メモリマッパー130内のデータフローが概略的に示されている。メモリマッパー130の目的は、着信スパイクイベント140が投影するニューロン420を決定することである。これは、図4にも示されている。
【0181】
着信スパイクイベント140は、メモリマッパー130によって以下のように処理される:
【0182】
着信スパイクイベント140は、例えば、チャンネル及び座標{c,x,y}の情報を有する。第1に、受信した着信スパイクイベント140のゼロパディング300が実行され、ここでスパイクイベント140の座標がオフセット値p,pによって変換される:
{c,x,y}→{c,x+p,y+p
【0183】
ゼロパディング300は、座標が特徴マップ430の境界に近すぎる場合にエッジ効果を回避する目的を果たす。
【0184】
オフセット値は、メモリマッパー130に関連付けられたレジスタ300r、131によって提供される。
【0185】
次の工程では、カーネルマッパー301と呼ばれるモジュールによって、少なくとも1つのカーネルの適用可能なカーネル値のカーネルアドレスが決定される。カーネルマッパー301は、着信スパイクイベント140が投影する各特徴マップ430のニューロンアンカー座標を計算するように構成されている。
【0186】
前記ニューロンアンカー座標は、例えば、イベントが投影するそれぞれの出力特徴マップ430内のアレイの右下隅に位置するニューロンによって与えられる。この工程には、出力特徴マップサイズ、畳み込みカーネルサイズ、及び畳み込みのストライドの処理が含まれる。さらに、前記ニューロンアンカー座標に対応するカーネルアンカー座標が計算される。ニューロンアンカー座標及びカーネルアンカー座標は、更新されるべき出力特徴マップ430内のすべてのニューロン420、及びカーネルメモリ112から受信する必要のあるすべての適用可能なカーネル値142kを決定するための開始点として機能する。
【0187】
明らかに、前記2つのアンカー座標に基づく開始点は、右下隅にあるニューロンのニューロン座標である必要はないが、スパイクイベントの投影との関係がわかる限り、任意のニューロンにすることができる。
【0188】
ニューロンアンカー座標及びカーネルアンカー座標は、次に、スパイクイベント140が投影するニューロン420及びそれらに関連付けられたニューロンアドレス142nの残りのニューロン座標を計算するように構成されるアドレススイープモジュール302に送信される。
【0189】
さらに、適用可能なカーネル値142kのすべてのカーネルアドレスは、スイープモジュール302によって決定される。
【0190】
ニューロン座標422及び適用可能なカーネル座標411の計算は、例えば図4に示すように、出力特徴マップ430上で、ストライドサイズ、及び決定されたアンカー座標に従って、畳み込みカーネル410を「スイープ」、すなわちシフトすることによって行われる。
【0191】
ニューロン座標422及びカーネル座標411から、ニューロンアドレス142n及びカーネルアドレスは、スイープモジュール302によって決定される。この目的のために、スイープモジュールはプログラム可能なレジスタ302rにアクセスし得る。
【0192】
ニューロンアドレス及びカーネルアドレスは、メモリ空間がニューロンメモリ506及びカーネルメモリ112に最適に保存されるように、上記のとおり圧縮される。
【0193】
次に、圧縮されたニューロンアドレス及びカーネルアドレスは、上で説明したとおり、メモリマッパー130からカーネルモジュール110に提供される。
【0194】
図4には、着信スパイクイベント140が投影するニューロンアドレス及び適用可能なカーネル値142kを決定する手順が概略的に示されている。
【0195】
スパイクイベント140は、ソース特徴マップ440、特に図4の左の列に示されている前記ソース層における出力特徴マップ430から来る。左の列のそれぞれの四角は、ソース層の特徴マップ440、SFM内の関連付けられた座標{x,y}を有するニューロンを示し、ここでスパイクイベント140が発生したニューロン421は黒色に着色されている。例えば、図4のパネルAに目を向けると、スパイクイベント140が受信される現在層10は、2つのカーネル410K1、K2を含み、それぞれは、3×3のカーネル値(3×3の正方形を持つ行列)のカーネルサイズ(H,W)を有する。したがって、現在層10はまた、2つの出力特徴マップ430 OFM1、OFM2を含む。この例では、出力特徴マップOFM1、OFM2のサイズ(H,W)はそれぞれ3x3のニューロンである(各ニューロンは正方形で示されている)。図4のパネルB~Hは、畳み込みの異なる処理工程での同じ状況を示している。
【0196】
ストライドs=sは、2方向のx方向とy方向とに設定されており、つまり、畳み込みカーネルK1、K2は、出力特徴マップOFM1及びOFM2上で2段階にシフトされる。
【0197】
ニューロンアンカー座標x,y及び第1のカーネルK1に対応するカーネルアンカー座標は、図4のパネルAに見られるとおり、前記ニューロンアンカー座標x,yが、スパイクイベント140/421が投影する投影部分の右下隅に位置するように決定される。続いて、スイープモジュールは、図4のパネルBに示すように、出力特徴マップOFM1上のストライドサイズsに従って、第1の畳み込みカーネルK1を「スイープ」し、別のカーネル座標、及びスパイクイベント140が投影する別のニューロン座標(ニューロン421として示される)を決定する。前記スイープは、ソース特徴マップ440 SFMの9つのニューロンを含むボックス領域(及び常にニューロン421)によって示されている。
【0198】
次の工程(パネルC)では、第1の畳み込みカーネルK1がy方向に沿ってスイープされ(ストライド2で)、第1の出力特徴マップOFM1のニューロン座標422及びカーネル座標が決定される。
【0199】
図4のパネルDでは、第1の畳み込みカーネルK1がxに沿ってシフトされ、第1の出力特徴マップOFM1の4つのうちの最後のニューロン座標と第1の出力特徴マップOFM1のカーネル座標とが決定される。
【0200】
次に、同じ手順(パネルGとHを比較)を第2のカーネルK2に対して行う。このようにして、2つの出力特徴マップOFM1及びOFM2における2つのカーネルK1、K2から、合計8つのニューロン座標と8つのカーネル座標がスイープモジュールによって決定される。
【0201】
決定されたニューロン座標422及びカーネル座標411に対して、適用可能なカーネル値142kを有する対応する(8つの)ニューロンアドレス142n及び(8つの)カーネルアドレスが決定され、ニューロンモジュール120によって畳み込みが実行されるようになる。
【0202】
図5は、ニューロンモジュール120上で、特にニューロンサブインターフェース121s(複数)上で、畳み込みがどのように実行されるかを詳細かつ模式的に示したものである。
【0203】
ニューロンサブインターフェースがニューロンアドレス142n及び適用可能なカーネル値142kを例えばニューロンルータモジュール601から受信すると、ニューロンサブインターフェース121s(複数)は、関連付けられたニューロンメモリ506から受信したニューロンアドレス142nの下に格納されているニューロン状態を読み取る(500)。適用可能なカーネル値142kがニューロン状態に追加される(501)。次に、結果として生じるニューロン状態が、少なくとも1つの閾値502、通常は2つの閾値、すなわち、下限及び上限の閾値502と比較される。
【0204】
結果として生じるニューロン状態が閾値502の1つを超える場合(上限閾値を超えるか、又は下限閾値を下回るかのいずれか)、発信スパイクイベント150がニューロンサブインターフェース121s(複数)によって生成され、ニューロン状態はリセットされたニューロン状態にリセットされる。この例では、リセットされたニューロン状態はゼロ又はモジュロ演算の余りのいずれかになり得る。
【0205】
リセットされたニューロン状態は、ニューロンサブインターフェース121s(複数)の関連付けられたニューロンメモリ506に書き戻される(505)。スパイクイベントが生成されない場合、結果として生じるニューロン状態は、関連付けられたニューロンメモリ506に書き戻される(505)。
【0206】
図5の概略図は、バイアス値142b及びニューロンサブインターフェース121s(複数)で受信された対応するニューロンアドレスに同じ方法で適用され、ここでは適用可能なカーネル値142kの代わりに、バイアス値142bがニューロン状態に追加される。残りの処理は、カーネル値142kの受信について説明したのと同じように処理される。
【0207】
図6は、関連付けられたカーネル112、又はニューロンメモリ506の並列アクセス及びパイプライン処理がどのように促進されるかを概略的に示している。図6では、ニューロンモジュール120が複数のニューロンサブインターフェース121sをアドレス指定するように構成され、ここで各ニューロンサブインターフェース121は、前述のとおりニューロンアドレス及びニューロン状態を読み取り、書き込み、及び処理するように構成されていることが示されている。この目的のために、ニューロンモジュール120は、適用可能なカーネル値及び決定された更新すべきニューロンアドレスを受信するニューロンルータモジュール601を備える。ニューロンモジュールは、決定されたニューロンアドレスに分配するためのバイアス値を受信することもある。ルータモジュール601は、受信したカーネル値及び適用可能なニューロンアドレスを、複数の並列に組織されたニューロンサブインターフェース121の対応するニューロンサブインターフェース121s(複数)に送信する。ニューロンサブインターフェース121s(複数)で、適用可能なニューロンアドレスが関連付けられたメモリ506から読み取られ、カーネル値142k、特にバイアス値142で更新される(図5を参照)。一度、決定されたニューロンアドレスのニューロン状態が更新されると、更新されたニューロン状態が書き戻される、すなわち、関連付けられたメモリ506に格納される。更新されたニューロンの状態に応じて、ニューロンのサブインターフェースがスパイクイベントを生成し、そのスパイクイベントを出力する場合がある。ニューロンインターフェースは並列に動作するように構成されているため、処理速度が維持されるように、ニューロンメモリでの比較的遅い読み取り及び書き込みプロセスが補正される。ニューロンモジュールは、共通の特にシリアル接続でさらに処理するために、複数のニューロンサブインターフェース121sから生成されたスパイクイベントをマージするマージモジュール602をさらに備える。各ニューロンサブインターフェース121sがそれ自身のアクセス可能な関連メモリ506を有するニューロンモジュール120は、層10の処理速度が、非並列処理と比較して増加するように、複数のニューロン状態の読み取り、書き込み、及び更新の効果的に並列化された処理を可能にする。
【0208】
同様のアーキテクチャがカーネルモジュール110にも実装され得え、前記カーネルモジュールでのカーネル値の読み取り及び書き込みがそれに応じて並列化されるようになる。
【0209】
したがって、カーネルモジュール100は、カーネル値を読み書きするための関連付けられたカーネルメモリをそれぞれ備える複数のカーネルサブインターフェースを備える。複数のカーネルサブインターフェースは、カーネルアドレスをカーネルサブインターフェースに分配するように構成されたカーネルルーターモジュールに接続され、カーネルアドレスに関連付けられたカーネル値が関連付けられたカーネルメモリから読み取られるようになる。さらに、カーネルモジュールは、複数のカーネルサブインターフェースからシリアルバスに提供されたカーネル値を送る(funnel)ように構成されたカーネルマージモジュールを備え得る。
【0210】
本発明によるスパイキング畳み込みニューラルネットワークは、メモリ及びエネルギー効率の良い方法で最新のスパイキング畳み込みニューラルネットワークを動作するための専用の電子回路を提供する。
【符号の説明】
【0211】
符号の一覧
1 イベント駆動型スパイキング畳み込みニューラルネットワーク
10、10’、10’’ 層
110 カーネルモジュール
111 カーネルインターフェース
112 カーネルメモリ
120 ニューロンモジュール
121s ニューロンサブインターフェース
123 ニューロンモジュールのレジスタ
130 メモリマッパー
131 メモリマッパーのレジスタ
140 着信スパイクイベント
141 カーネルアドレス及びニューロンアドレス
142b バイアス値
142n 更新されるべきニューロンのアドレス(複数可)
142k 適用可能なカーネル値
150 発信スパイク
160 バイアスモジュール
161 バイアスインターフェース
162 バイアスメモリ
163 バイアスモジュールのレジスタ
170 宛先マッパー
171 宛先マッパーのレジスタ
200 イベントルーター
210 発信スパイクイベント
220 DVSセンサー
230 入来スパイクイベント
240 入力/チップ間入力ポート
250 出力/チップ間出力ポート
300 ゼロパディングモジュール/動作
300r 関連付けられたレジスタ
301 カーネルマッピングモジュール/動作
302 アドレススイープモジュール/動作
302r 関連付けられたレジスタ
410 畳み込みカーネル
411 カーネル座標、K1,K2
420 決定/更新されたニューロン
421 ソース層のニューロン座標
422 決定されたニューロンのニューロン座標
430 出力特徴マップ、OFM1,OFM2
431 出力特徴マップのニューロン
440,SFM ソース特徴マップ
500 ニューロン状態を読み取り
501 ニューロン状態を更新
502 閾値
504 閾値用レジスタ
505 ニューロン状態を書き込み
601 ニューロンルータモジュール
602 ニューロンマージモジュール
図1
図2
図3
図4
図5
図6
【手続補正書】
【提出日】2021-12-28
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
イベント駆動型スパイキングニューラルネットワーク(1)であって、複数の層を備え、各層は:
- 少なくとも1つの畳み込みカーネル(410)のカーネル値をイベント駆動方式で格納及び処理するように構成されたカーネルモジュール(110)、
- 前記スパイキングニューラルネットワーク(1)のニューロンのニューロン状態をイベント駆動方式で格納及び更新し、かつ更新されたニューロン(420)から生成されたスパイクイベント(150)を出力するように構成されたニューロンモジュール(120)、
ソース層からの着信スパイクイベント(140)が少なくとも1つの畳み込みカーネル(410)との畳み込みによって投影するニューロン(420)を決定するように構成されたメモリマッパー(130)であり、前記決定されたニューロン(420)のニューロン状態は、前記少なくとも1つの畳み込みカーネル(410)の適用可能なカーネル値で更新されるようになり、前記メモリマッパー(130)は、イベント駆動方式で着信 パイクイベントを処理するように構成されている、前記メモリマッパー(130)、
を備える、前記イベント駆動型スパイキングニューラルネットワーク(1)。
【請求項3】
前記メモリマッパー(130)は、前記カーネルモジュール(110)に電子的に接続され、前記メモリマッパー(130)は:
a)前記スパイキングニューラルネットワーク(1)のソース層からの着信スパイクイベント(140)を受信し、前記着信スパイクイベント(140)は、前記ソース層においてニューロン座標(421)の情報を含み
そして前記受信したスパイクイベント(140)に応答して、
b)前記少なくとも1つの畳み込みカーネル(110)との前記受信したスパイクイベント(140)の畳み込みが投影するニューロン(420)のニューロン座標(422)及び対応するニューロンアドレスを決定し、
c)前記決定されたニューロンアドレスのニューロン状態に適用可能な前記カーネル値の対応するカーネルアドレスを用いてカーネル座標(411)を決定し、ここで前記決定されたニューロンアドレスの前記ニューロン状態は、前記適用可能なカーネル値で更新されるようになり、
d)前記決定されたニューロンアドレスを前記カーネルモジュールに提供するように、構成及び配置されている、請求項1に記載のイベント駆動型スパイキングニューラルネッ トワーク(1)。
【請求項5】
前記ニューロンモジュール(120)は:
a)前記決定されたニューロンアドレス(142n)及び前記適用可能なカーネル値(142k)を受信し、
b)受信したニューロンアドレス(142n)ごとに、前記適用可能なカーネル値(142k)に基づくニューロン(420)の更新されたニューロン状態を決定し、
c)少なくとも1つの所定の閾値(502)に到達する更新されたニューロン(420)の発信スパイクイベント(150)を出力するように、
構成及び配置されている、請求項に記載のイベント駆動型スパイキングニューラルネッ トワーク(1)。
【請求項8】
前記ニューロンモジュール(120)は、受信したニューロンアドレス(142n)及びカーネル値(142k)、及び受信したバイアス値(142b)を処理し、かつ更新されたニューロン状態及びスパイクイベント(150)を生成する(501、502)ように構成された複数の並列動作ニューロンサブインターフェース(121s)を備え、各ニューロンサブインターフェース(121s)は、前記受信したニューロンアドレスのニューロン状態を読み取るため、及び更新されたニューロン状態を前記関連付けられたニューロンメモリ(506)の前記受信したニューロンアドレスに書き込むための関連付けられたニューロンメモリ(506)を有し、それにより前記ニューロンサブインターフェース及びそれらの関連付けられたニューロンメモリ(506)によってニューロン状態の並列処理が達成されるようになる、請求項に記載のイベント駆動型スパイキングニューラルネ ットワーク(1)。
【請求項9】
前記ニューロンモジュール(120)は、決定されたニューロンアドレス(142n)及びカーネル値(142k)、及びバイアス値(142b)を、前記カーネルモジュール(110)及び/又は前記バイアスモジュール(160)から受信し、かつ前記受信したニューロンアドレス(142n)及びカーネル値(142k)、及びバイアス値(142b)を、前記受信したニューロンアドレス(142n)及びカーネル値(142k)、及びバイアス値(142b)を並列に処理するように構成された前記複数の並列動作ニューロンサブインターフェース(121s)に送信するように構成かつ適応されたルータモジュール(601)を備える、
請求項に記載のイベント駆動型スパイキングニューラルネットワーク(1)。
【請求項10】
前記ニューロンモジュールは、前記複数のニューロンサブインターフェース(121s) から生成されたスパイクイベント(150)を受信し、かつニューロンサブインターフェ ースよりも少ないチャンネルを有するバスにシリアル処理のためにスパイクイベントを送 るように構成及び適応されるマージモジュール(602)をさらに備え、ここで前記バス は、単一の伝送チャンネルのみを有している、請求項8に記載のイベント駆動型スパイキ ングニューラルネットワーク(1)。
【請求項11】
前記ニューロンモジュール(120)は:
- ニューロンアドレス(142n)及びカーネル値(142k)、及びバイアス値(142b)を、前記カーネルモジュール(110)及び/又は前記バイアスモジュール(160)から、前記ルータモジュールにて受信し、
- 前記受信したニューロンアドレス(142n)のニューロン状態を前記ニューロンサブインターフェース(複数)(121s)のうちの1つにおいて前記関連付けられたニューロンメモリ(506)から読み取り(500)、
- 前記受信したカーネル値(142k)及び/又は前記受信したバイアス値(142b)で、前記読み取ったニューロン状態を前記ニューロンサブインターフェース(複数)(121s)上で更新し(501)、
- 前記更新されたニューロン状態を少なくとも1つの閾値と前記ニューロンサブインターフェース(複数)(121s)上閾値レジスタ(504)に格納され、かつそこからアクセス可能な、前記少なくとも1つの閾値と比較し(502)、
- 前記少なくとも1つの閾値に到達する場合(502)宛先マッパー(170)に提供されるスパイクイベントを生成し(503)、かつ前記更新されたニューロン状態をリセットして、リセットされたニューロン状態にし、
- 前記更新されたニューロン状態を、前記関連付けられたニューロンメモリ(506)の前記受信したニューロンアドレス(142n)に書き込む(505)、
ように構成される、請求項に記載のイベント駆動型スパイキングニューラルネットワー (1)。
【請求項12】
前記メモリマッパー(130)は、前記メモリマッパー(130)によってスパイクイベント(140)が受信される場合に、前記適用可能なカーネル値(142k)の前記カーネルアドレス、及び更新すべき対応するニューロンアドレス(142n)を有する前記ニューロン座標(421)を決定するために、以下の一連の動作を実行するように構成されており、ここで前記スパイクイベント(140)は、ソース特徴マップ(440)において前記スパイクイベント(140)を生成したニューロン(42)の座標(x,y) チャンネル識別子(c)、x識別子及びy識別子を含む座標(x,y)に関する情報を含むか、又はそれからなり、前記以下の一連の動作は:
レジスタによって提供及び格納される所定のオフセット(p,p)で前記スパイクイベント(140)の前記座標(x,y)を、ゼロパディング(x+p,y+p)し、
- 前記座標(x,y)から、前記ゼロパディングされた座標(x+p,y+p)から、前記スパイクイベントが投影するニューロンアンカー座標(x,y)、及び少なくとも1つのカーネル(f)の対応するカーネルアンカー座標(x ,y )を計算し、ここで前記カーネルアンカー座標(x ,y )は、前記少なくとも1つのカーネル(f)のそれぞれのカーネル座標(f,x ,y )を示し、前記ニューロンアンカー座標(x ,y は、出力特徴マップ(430)に関連付けられており、
- 前記ニューロンアンカー座標及び前記カーネルアンカー座標から開始して、更新すべきすべてのニューロン座標(f,x,y)及び前記適用可能なカーネル値(142k)のすべてのカーネル座標(c,f,x,y)を決定し、レジスタにより提供される出力特徴マップ(430)のサイズストライドサイズ及び/又はカーネルサイズおける情報を処理することによって決定し、
- 前記決定されたすべてのニューロン座標(f,x,y)及び前記適用可能なカーネル値(142k)前記すべてのカーネル座標(c,f,x ,y から、圧縮されたニューロンアドレス及び圧縮されたカーネルアドレスを決定し、
- 前記決定され圧縮されたニューロンアドレス及び圧縮されたカーネルアドレスを、前記カーネルモジュール(110)及び/又は前記ニューロンモジュール(120)に提供すること、
である、請求項に記載のイベント駆動型スパイキングニューラルネットワーク(1)。
【請求項13】
前記関連付けられたニューロンメモリ(506)は、すべてのニューロン状態が連続するニューロンアドレスに格納されるように組織され、前記メモリマッパー(130)は、圧縮されたニューロンアドレスを生成するなど、すべてのニューロン座標(f,x,y)の ために、連続するニューロンアドレス生成するように構成され、かつ前記メモリマッパー(130)は、前記圧縮されたニューロンアドレスを前記ニューロンモジュール(120)に提供するように構成される、請求項8に記載のイベント駆動型スパイキングニュー ラルネットワーク(1)。
【請求項15】
スパイクイベント(140)がメモリマッパー(130)によって受信される場合に、イベント駆動方式で更新されるべきカーネルアドレス及びニューロンアドレス(142n)を決定するように構成されたイベント駆動型スパイキング畳み込みニューラルネットワークのためのメモリマッパー(130)装置であって、前記スパイクイベント(140)は、前記スパイクイベント(140)の座標(x,y)、及びチャンネル識別子(c)に関する情報を含むか、又はそれからなり、前記座標は、x識別子及びy識別子を含み、前記スパイクイベント(140)が前記メモリマッパー(130)によって受信される場合に、前記メモリマッパー(130)は、以下の一連の動作は:
レジスタ(300r)によって提供及び格納される所定のオフセット(p,p)で前記スパイクイベント(140)の前記座標(x,y)を、ゼロパディングし(300)(x+p,y+p)、
- 前記座標(x,y)から、前記スパイクイベントが投影するニューロンアンカー座標(x,y)、及び少なくとも1つのカーネル(410,f)の対応するカーネルアンカー座標(x ,y )を計算し(301)、ここで前記カーネルアンカー座標(x ,y )は、前記少なくとも1つのカーネル(410,f)のそれぞれのカーネル座標(f,x ,y )を示し、前記ニューロンアンカー座標は、出力特徴マップ(430)に関連付けられており、
- 前記ニューロンアンカー座標及び前記カーネルアンカー座標から開始して(302)、更新すべきすべてのニューロン座標(f,x,y)及び前記適用可能なカーネル値のすべてのカーネル座標(c,f,x,y)を決定し、レジスタにより提供される出力特徴マップサイズストライドサイズ及び/又はカーネルサイズおける情報を処理することによって決定し、
- 前記決定されたすべてのニューロン座標(f,x,y)及び前記適用可能なカーネル値前記すべてのカーネル座標(c,f,x ,y から、圧縮されたニューロンアドレス及び圧縮されたカーネルアドレスを決定し(303)、
- 前記決定され圧縮されたニューロンアドレス及び圧縮されたカーネルアドレスを、前記圧縮されたニューロンアドレス及び圧縮されたカーネルアドレスを処理するために、カーネルモジュール(110)及び/又はニューロンモジュール(120)に提供すること、
を実行する、前記イベント駆動型スパイキング畳み込みニューラルネットワークのためのメモリマッパー(130)装置
【請求項16】
電子回路であって、複数の層(10、10’、10’’)を備え、前記層の少なくとも1 つ(10)は:
着信スパイクイベント(140)を受信し、かつ前記着信スパイクイベントが投影するニ ューロン(420)を決定するように構成されているメモリマッパー(130);
少なくとも1つの畳み込みカーネル(410)の適用可能なカーネル値を提供するように 構成されているカーネルモジュール(110);
前記決定されたニューロン(420)のニューロン状態を前記適用可能なカーネル値で更 新するように構成されているニューロンモジュール(120)、
を備える、前記電子回路。
【請求項17】
前記メモリマッパー(130)はまた、更新されるべき前記ニューロンアドレス及び前記 適用可能なカーネル値の前記カーネルアドレスを計算する式を実行するように構成され、 前記メモリマッパー(130)によって決定された前記ニューロンアドレス及び前記カー ネルアドレスは、前記カーネルモジュール(110)に提供される、請求項16に記載の 電子回路。
【請求項18】
前記適用可能なカーネル値は、前記ニューロンモジュール(120)に送信され、そこで 前記決定されたニューロン(420)のニューロン状態は、前記適用可能なカーネル値で 更新される、請求項16又は17に記載の電子回路。
【請求項19】
前記決定されたニューロン(420)のニューロンアドレス(142n)は、前記適用可 能なカーネル値(142k)に関連付けられた前記ニューロンアドレス(142n)を含 む出力データセット内に、前記カーネルモジュール(110)のカーネルインターフェー ス(111)によって提供される、請求項16又は17に記載の電子回路。
【請求項20】
前記ニューロンモジュール(120)は、バイアスモジュール(160)からバイアス値 (142b)を受信する、請求項16又は17に記載の電子回路。
【請求項21】
前記決定されたニューロン(420)のニューロン状態は、前記適用可能なカーネル値( 142k)及び/又は前記バイアス値(142b)で更新されるようになる、請求項20 に記載の電子回路。
【請求項22】
前記メモリマッパー(130)は、圧縮されたニューロンアドレスを前記ニューロンモジ ュール(120)に提供するように構成され、
前記メモリマッパー(130)は、圧縮されたカーネルアドレスを前記カーネルモジュー ル(110)に提供するように構成されている、請求項16、17、又は21に記載の記 載の電子回路。
【請求項23】
前記メモリマッパー(130)によって受信されるスパイクイベント(140)は、座標 (x,y)及びチャンネル識別子(c)に関する情報を含むか、又はそれらからなる、請 求項16、17、又は21に記載の電子回路。
【請求項24】
前記メモリマッパー(130)は、レジスタ(300r)によって提供及び格納される所 定のオフセット(p ,p )で前記スパイクイベントの前記座標(x,y)をゼロパデ ィング(x+p ,y+p )するように構成されている、請求項23に記載の電子回路
【請求項25】
前記メモリマッパー(130)は、前記スパイクイベント(140)が投影するニューロ ンアンカー座標(x ,y )を、前記座標(x,y)から、又は前記ゼロパディングさ れた座標(x+p ,y+p )から計算し、かつ少なくとも1つのカーネル(410、 f)の対応するカーネルアンカー座標(x ,y )を計算するように構成され、こ こで、前記カーネルアンカー座標(x ,y )は、前記少なくとも1つのカーネル (410、f)のそれぞれのカーネル座標(f,x ,y )を示し、かつ更新され るべきすべてのニューロン座標、及び前記ニューロンアンカー座標及び前記カーネルアン カー座標から開始する適用可能なカーネル値のすべてのカーネル座標を決定する、請求項 16、17、21、又は24に記載の電子回路。
【請求項26】
前記ニューロンアンカー座標は、前記スパイクイベント(140)が出力特徴マップに投 影する投影ウィンドウの角に位置するニューロンの座標であり;前記ニューロンアンカー 座標は、畳み込みのために前記出力特徴マップで開始点を定義する目的を果たし;
前記カーネルアンカー座標は、前記カーネル(410)の角又は角の近くに位置する前記 カーネル値の座標であり;
前記カーネルアンカー座標は、すべての前記適用可能なカーネル値を決定するために開始 点を定義する目的を果たす、請求項25に記載の電子回路。
【請求項27】
前記ニューロンモジュール(120)は、ルータモジュール(601)を備え、前記ルー タモジュール(601)は、前記決定されたニューロン(420)のニューロンアドレス (142n)及び前記カーネルモジュール(110)からの前記適用可能なカーネル値( 142k)を受信し、かつ
前記決定されたニューロン(420)の前記受信したニューロンアドレス(142n)及 び前記適用可能なカーネル値(142k)を、前記決定されたニューロン(420)の前 記受信したニューロンアドレス(142n)及び前記適用可能なカーネル値(142k) を並列に処理するように構成されている複数の並列動作ニューロンサブインターフェース (121s)へ送信し、かつ
前記バイアスモジュール(160)から前記バイアス値(142b)を受信し、かつ前記 受信したバイアス値(142b)を、前記バイアス値(142b)を並列に処理するよう に構成されている前記複数の並列動作ニューロンサブインターフェース(121s)に送 信するように
構成及び適合されている、ルータモジュール(601)である、請求項16、17、21 、24、又は26に記載の電子回路。
【請求項28】
1つのニューロンサブインターフェースが、前記決定されたニューロン(420)の前記 ニューロンアドレス(142n)から1つのニューロンアドレスを受信し、かつ前記適用 可能なカーネル値(142k)から1つの適用可能なカーネル値を受信する場合、前記ニ ューロンサブインターフェース(121s)は、関連付けられたニューロンメモリ(50 6)から前記受信したニューロンアドレスの下に保存されているニューロン状態を読み取 り、次いで、
前記適用可能なカーネル値は、前記ニューロン状態に追加され、結果として生じるニュー ロン状態が取得される、請求項27に記載の電子回路。
【請求項29】
前記結果として生じるニューロン状態は、次いで、少なくとも1つの閾値(502)と比 較されて、前記結果として生じるニューロン状態が前記閾値の1つを超える場合に、発信 スパイクイベント(150)を生成し、次いで、
前記ニューロン状態はリセットされて、リセットされたニューロン状態になる、
請求項28に記載の電子回路。
【請求項30】
前記層のうちの少なくとも1つ(10)はまた;
宛先マッパー(170)を備え、前記宛先マッパー(170)は、前記発信スパイクイベ ント(150)の情報を追加して、それが宛先層にルーティングされることが可能なよう に構成及び配置される、請求項29に記載の電子回路。
【国際調査報告】