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

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

2023-92521改良されたスパイキングニューラルネットワーク
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023092521
(43)【公開日】2023-07-03
(54)【発明の名称】改良されたスパイキングニューラルネットワーク
(51)【国際特許分類】
   G06N 3/049 20230101AFI20230626BHJP
   G06N 3/063 20230101ALI20230626BHJP
【FI】
G06N3/049
G06N3/063
【審査請求】未請求
【請求項の数】19
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2022203844
(22)【出願日】2022-12-21
(31)【優先権主張番号】2021904165
(32)【優先日】2021-12-21
(33)【優先権主張国・地域又は機関】AU
(71)【出願人】
【識別番号】521190303
【氏名又は名称】ブレインチップ,インコーポレイテッド
(74)【代理人】
【識別番号】100079108
【弁理士】
【氏名又は名称】稲葉 良幸
(74)【代理人】
【識別番号】100109346
【弁理士】
【氏名又は名称】大貫 敏史
(74)【代理人】
【識別番号】100117189
【弁理士】
【氏名又は名称】江口 昭彦
(74)【代理人】
【識別番号】100134120
【弁理士】
【氏名又は名称】内藤 和彦
(72)【発明者】
【氏名】マクレランド,ダグラス
(72)【発明者】
【氏名】ジョンソン,キース ウィリアム
(72)【発明者】
【氏名】カールソン,クリストフォー ディー.
(72)【発明者】
【氏名】ジョシ,ミリンド
(57)【要約】      (修正有)
【課題】入力データセットから特徴を学習し、教師なし、半教師あり及び教師あり抽出を実行するスパイキングニューラルネットワークシステム、方法及びコンピュータプログラムを提供する。
【解決手段】方法は、一次トレーニングデータセットを使用してトレーニングされる、N個の層及び複数のスパイキングニューロンを有するベースニューラルネットワークを変更するための変更要求を受信することで動作し、ベースニューラルネットワークは、ベースニューラルネットワークのN番目又はN+1番目の層の中に補足的スパイキングニューロンを含むように変更し、該ニューロンを選択するために、二次トレーニングデータセットを受信し、それに基づいて特徴を学習する前記補足的スパイキングニューロンの膜電位値を決定し、ウィニングスパイキングニューロンに基づいて、変更済みニューラルネットワークの学習関数を実行する。
【選択図】図8
【特許請求の範囲】
【請求項1】
変更済みニューラルネットワークを実装するために、N個の層及び複数のスパイキングニューロンを有するベースニューラルネットワークを変更するための変更要求を受信するように構成されるニューラルプロセッサを含むシステムであって、前記ベースニューラルネットワークの前記変更は、前記変更済みニューラルネットワークが前記ベースニューラルネットワークのN番目又はN+1番目の層の中に1つ又は複数の補足的スパイキングニューロンを含むように行われ、前記ベースニューラルネットワークは一次トレーニングデータセットから生成される複数のスパイクを使用してトレーニングされ、
前記ニューラルプロセッサは、前記変更済みニューラルネットワークをトレーニングするために、
二次トレーニングデータセットから生成される複数のスパイク及び前記二次トレーニングデータセットに関係する1つ又は複数の特徴を学習する前記1つ又は複数の補足的スパイキングニューロンに関するユーザ入力を受信することであって、前記二次トレーニングデータセットは前記一次トレーニングデータセットと異なる、受信すること、
前記N番目又はN+1番目の層の中の1つ又は複数の補足的スパイキングニューロンの膜電位値を決定すること、
前記N番目又はN+1番目の層の中の少なくとも1つのスパイキングニューロンに関する前記膜電位値を考慮せずに、前記1つ又は複数の補足的スパイキングニューロンからウィニングスパイキングニューロンとして補足的スパイキングニューロンを選択すること、及び
前記ウィニングスパイキングニューロンに関連するシナプスのシナプス重み値の変更を行うことによって前記変更済みニューラルネットワークの学習関数を実行すること
を行うように構成される、
システム。
【請求項2】
前記複数のスパイク及びニューラルネットワーク構成に基づくタスクを実行するための、前記N個の層を有する前記ベースニューラルネットワークを実装するように構成される前記複数のスパイキングニューロンを含む前記ニューラルプロセッサを含む神経線維であって、前記Nの値は少なくとも2である、神経線維と、
前記ニューラルネットワーク構成を含むメモリであって、前記ニューラルネットワーク構成は電位アレイ及び複数のシナプスを含み、前記ニューラルネットワーク構成は前記複数のスパイキングニューロンと前記複数のシナプスとの間の接続を定め、前記電位アレイは前記複数のスパイキングニューロンの膜電位値を含み、前記複数のシナプスは対応するシナプス重みを有する、メモリと、
前記変更済みニューラルネットワークを実装するために、前記ニューラルネットワーク構成を変更し、前記ニューラルプロセッサに前記変更要求を送信するように構成される補足的プロセッサと
を更に含む、請求項1に記載のシステム。
【請求項3】
前記ベースニューラルネットワークの層の学習関数が、前記層内のスパイキングニューロンそれぞれの前記膜電位値を考慮しながら実行される、請求項1に記載のシステム。
【請求項4】
前記ニューラルプロセッサが、前記層内の前記1つ又は複数のスパイキングニューロンの前記膜電位値を考慮しながら、ウィニングスパイキングニューロンとして前記1つ又は複数のスパイキングニューロンから前記補足的スパイキングニューロンを選択する、請求項1乃至3の何れか一項に記載のシステム。
【請求項5】
前記ニューラルプロセッサが、
前記二次トレーニングデータセットが関係するクラス情報に関するユーザ入力、及び
1つ又は複数の補足的スパイキングニューロン情報に関するユーザ入力
の少なくとも1つの受信時に、前記ウィニングスパイキングニューロンを決定するとき前記層内の1つ又は複数のスパイキングニューロンの前記膜電位値を考慮しない、
請求項1乃至4の何れか一項に記載のシステム。
【請求項6】
前記補足的スパイキングニューロンの数が2つ以上であり、
前記補足的スパイキングニューロンの前記2つ以上に関する前記膜電位値の中で最も高い値である膜電位値を有する前記ウィニングスパイキングニューロンが選択され、
前記2つ以上の補足的スパイキングニューロンの前記補足的スパイキングニューロンの少なくとも2つが同じクラスに属する、
請求項1乃至5の何れか一項に記載のシステム。
【請求項7】
前記補足的スパイキングニューロンの数が2つ以上であり、
前記補足的スパイキングニューロンの前記2つ以上の前記膜電位値の中で最も高い値である膜電位値を有し、対応する学習閾値にその膜電位値が達した前記ウィニングスパイキングニューロンが選択される、
請求項1乃至6の何れか一項に記載のシステム。
【請求項8】
前記ニューラルプロセッサが、前記ベースニューラルネットワークの1つ又は複数の層をトレーニングするために、
前記一次トレーニングデータセットから生成される前記複数のスパイクを受信し、
前記層内の前記スパイキングニューロンそれぞれの前記膜電位値を考慮しながら、ウィニングスパイキングニューロンとして前記ベースニューラルネットワークの前記層内のスパイキングニューロンを選択し、
前記ベースニューラルネットワークの前記層の前記ウィニングスパイキングニューロンに関連するシナプスの前記シナプス重み値の変更を行うことによって学習関数を実行する
ように構成される、請求項1乃至7の何れか一項に記載のシステム。
【請求項9】
前記ウィニングスパイキングニューロンに関連する前記シナプスが複数のインデックス内に記憶され、各インデックスは1つ又は複数のシナプス重みビットを記憶し、前記1つ又は複数のシナプス重みビットのそれぞれはシナプス重み値を表す、請求項2に記載のシステム。
【請求項10】
N個の層を有するベースニューラルネットワークを実装することであって、前記Nの値は少なくとも2である、実装すること、
一次トレーニングデータセットから生成される複数のスパイクを使用して前記ベーススパイキングニューラルネットワークをトレーニングすること、
変更済みニューラルネットワークを実現するために前記ベースニューラルネットワークを変更するための変更要求を検出することに応答し、前記ベースニューラルネットワークのN番目又はN+1番目の層の中に1つ又は複数の補足的スパイキングニューロンを含めることによって前記ベースニューラルネットワークを変更すること、及び
前記変更済みニューラルネットワークをトレーニングすることであって、
二次トレーニングデータセットから生成される複数のスパイク及び前記二次トレーニングデータセットに関係する1つ又は複数の特徴を学習する1つ又は複数の補足的スパイキングニューロン情報に関するユーザ入力を受信することであって、前記二次トレーニングデータセットは前記一次トレーニングデータセットと異なる、受信すること、
前記N番目又はN+1番目の層の中の少なくとも1つのスパイキングニューロンの膜電位値を考慮せずに、前記変更済みニューラルネットワークの前記N番目又はN+1番目の層の中の補足的スパイキングニューロンをウィニングスパイキングニューロンとして選択すること、及び
前記ウィニングスパイキングニューロンに関連するシナプスのシナプス重み値の変更を行うことによって前記変更済みニューラルネットワークの学習関数を実行すること
を行うことにより、トレーニングすること
を含む、方法。
【請求項11】
前記ベースニューラルネットワークの層の学習関数が、前記層内のスパイキングニューロンそれぞれの前記膜電位値を考慮しながら実行される、請求項10に記載の方法。
【請求項12】
前記層内の前記1つ又は複数のスパイキングニューロンの前記膜電位値を考慮しながら、ウィニングスパイキングニューロンとして前記1つ又は複数のスパイキングニューロンから前記補足的スパイキングニューロンを前記ニューラルプロセッサによって選択することを更に含む、請求項10又は11に記載の方法。
【請求項13】
前記変更済みニューラルネットワークをトレーニングする前記ステップが、
前記層内の1つ又は複数のスパイキングニューロンの前記膜電位値を無視することができるように、
前記二次トレーニングデータセットが関係するクラス情報、及び
1つ又は複数の補足的スパイキングニューロン情報に関するユーザ入力
の少なくとも1つを受信することを更に含む、請求項10乃至12の何れか一項に記載の方法。
【請求項14】
前記補足的スパイキングニューロンの数が2つ以上であり、
前記補足的スパイキングニューロンの前記2つ以上に関する前記膜電位値の中で最も高い値である膜電位値を有する前記ウィニングスパイキングニューロンが選択され、
前記2つ以上の補足的スパイキングニューロンの前記補足的スパイキングニューロンの少なくとも2つが同じクラスに属する、
請求項10乃至13の何れか一項に記載の方法。
【請求項15】
前記補足的スパイキングニューロンの数が2つ以上であり、
前記補足的スパイキングニューロンの前記2つ以上の前記膜電位値の中で最も高い値である膜電位値を有し、対応する学習閾値にその膜電位値が達した前記ウィニングスパイキングニューロンが選択される、
請求項10乃至14の何れか一項に記載の方法。
【請求項16】
前記ベースニューラルネットワークが、
前記一次トレーニングデータセットから生成される前記複数のスパイクを受信し、
前記層内の前記スパイキングニューロンそれぞれの前記膜電位値を考慮しながら、ウィニングスパイキングニューロンとして前記ベースニューラルネットワークの前記層内のスパイキングニューロンを選択し、
前記ベースニューラルネットワークの前記層の前記ウィニングスパイキングニューロンに関連するシナプスの前記シナプス重み値の変更を行うことによる学習関数
によってトレーニングされる、請求項10乃至15の何れか一項に記載の方法。
【請求項17】
前記ウィニングスパイキングニューロンに関連する前記シナプスが複数のインデックス内に記憶され、各インデックスは1つ又は複数のシナプス重みビットを記憶し、前記1つ又は複数のシナプス重みビットのそれぞれはシナプス重み値を表す、請求項10に記載の方法。
【請求項18】
スパイキングニューラルネットワークを含むシステムであって、前記スパイキングニューラルネットワークは前記スパイキングニューラルネットワークの最後の層の中に2つ以上のスパイキングニューロンを含み、前記2つ以上のスパイキングニューロンは同じクラスを表し、
ニューラルプロセッサが、前記スパイキングニューラルネットワークをトレーニングするために、
トレーニングデータセットから生成される複数のスパイク及び前記トレーニングデータセットに関係する特徴を学習する前記2つ以上のスパイキングニューロンに関するユーザ入力を受信すること、
前記2つ以上のスパイキングニューロンの膜電位値を決定すること、
前記最後の層の中の少なくとも1つのスパイキングニューロンに関する前記膜電位値を考慮せずに、前記2つ以上のスパイキングニューロンからウィニングスパイキングニューロンとしてスパイキングニューロンを選択すること、及び
前記ウィニングスパイキングニューロンに関連するシナプスのシナプス重み値の変更を行うことによって前記スパイキングニューラルネットワークの学習関数を実装すること
を行うように構成される、システム。
【請求項19】
最後の層の中に2つ以上のスパイキングニューロンを含むスパイキングニューラルネットワークを実装することであって、前記2つ以上のスパイキングニューロンは同じクラスを表す、実装すること、
前記スパイキングニューラルネットワークをトレーニングすることであって、
トレーニングデータセットから生成される複数のスパイク及び前記トレーニングデータセットに関係する特徴を学習する前記2つ以上のスパイキングニューロンに関するユーザ入力を受信すること、
前記最後の層の中の少なくとも1つのスパイキングニューロンの膜電位値を考慮せずに、前記2つ以上のスパイキングニューロンのうちのスパイキングニューロンをウィニングスパイキングニューロンとして選択すること、及び
前記ウィニングスパイキングニューロンに関連するシナプスのシナプス重み値の変更を行うことによって前記スパイキングニューラルネットワークの学習関数を実装すること
により、トレーニングすること
を含む、方法。
【発明の詳細な説明】
【技術分野】
【0001】
分野
[1] 本手法は、一般的にはニューラル回路エンジニアリングに関し、より詳細には、人工ニューラルネットワークでの低電力学習のシステム及び方法に関する。
【背景技術】
【0002】
背景
[2] 人工ニューラルネットワークが生物学的神経回路網(脳)の機能を複製することが、長い間目標であったが、成功は限られてきた。人工ニューラルネットワークの設計へのブルートフォースハードウェア手法は、面倒で不適切であり、人間の脳の機能を複製するという所望の目標にはほど遠い。したがって、多種多様な可能な入力データ及び/又はセンサソースから高速で推論を行いながら、非常に大規模なネットワークにスケーリングすることができ、既にトレーニングされたスパイキングニューラルネットワークを更新するためにユーザ介入が行われることも可能にするスパイキングニューラルネットワークを実現できるようにする手法が必要とされている。
【発明の概要】
【0003】
概要
[3] 本明細書には、入力ストリームから特徴を学習し、教師なし、半教師あり、教師あり抽出を実行するように構成された、改良されたスパイキングニューラルネットワーク(SNN)のシステム、装置、製品、方法、及び/又はコンピュータプログラム製品の実施形態及び/又はその組合せ及び下位組合せが提供される。幾つかの実施形態は、スパイク変換器と、再構成可能神経線維と、メモリと、プロセッサとを備えたニューロモルフィックシステム(例:ニューロモルフィック集積回路)を含む。スパイク変換器は、入力データからスパイクを生成するように構成される。再構成可能神経線維は、複数のスパイキングニューロン回路を含むニューラルプロセッサを含む。スパイキングニューロン回路は、スパイク変換器から受信したスパイク及びニューラルネットワーク構成に基づいてタスクを実行するように構成される。メモリは、電位アレイ及び複数のシナプスを含むニューラルネットワーク構成を含む。ニューラルネットワーク構成は、複数のスパイキングニューロン回路と複数のシナプスとの間の接続を更に定義する。プロセッサは、複数のパラメータに基づいてニューラルネットワーク構成を変更するように構成される。
【0004】
[4] 本明細書には、入力ストリームから特徴を学習し、教師なし抽出を実行する実施形態も記載される。幾つかの実施形態は、ニューラルネットワークの層の複数のスパイキングニューロン回路において、1組のシナプスに対応する1組のスパイクビット(1ビット又はマルチビット)を受信するように動作する。ニューラルネットワークの層の複数のスパイキングニューロン回路によって第1のスパイクパケットが受信される。それに応答し、スパイキングニューロン回路のそれぞれに関連する膜電位が、各スパイキングニューロン回路に関連するスパイクパケット及びシナプスのシナプス重み値を処理することによって決定される。層のスパイキングニューロン回路ごとに膜電位が決定されると、ウィニングスパイキングニューロン回路が選択され、ウィニングスパイキングニューロン回路に関連するシナプスの1つ又は複数のシナプス重み値を変更することによってシナプス重み値の変更が行われる。その後のスパイクパケットはシナプス重み値が変更されるときにのみ処理される。層のウィニングニューロンは同期的に決定されるのに対し、層のスパイキングニューロン回路のスパイキングは非同期的に行われる。
【0005】
[5] 本明細書には、特徴を学習し、教師なし抽出を実行する実施形態も記載されており、それによりスパイキングニューラルネットワークの層の複数のスパイキングニューロン回路の中から決定されるウィニングニューロンに関連するシナプスのマルチビットシナプス重み値をインクリメント及び/又はデクリメントすることにより、スパイキングニューラルネットワークの段階的学習が実現される。
【0006】
[6] 本明細書には、受信されるスパイクパケットごとに2つ以上のスパイキングニューロン回路(ウィニングスパイキングニューロン回路及び1つ又は複数の追加のスパイキングニューロン回路)による集団学習によって特徴を学習し、教師なし抽出を実行する実施形態も記載されている。
【0007】
[7] 本発明によれば、変更済みニューラルネットワークを実装するために、N個の層及び複数のスパイキングニューロンを有するベースニューラルネットワークを変更するための変更要求を受信するように構成されるニューラルプロセッサを含むシステムが提供され、ベースニューラルネットワークの変更は、変更済みニューラルネットワークがベースニューラルネットワークのN番目又はN+1番目の層の中に1つ又は複数の補足的スパイキングニューロンを含むように行われ、ベースニューラルネットワークは一次トレーニングデータセットから生成される複数のスパイクを使用してトレーニングされ、ニューラルプロセッサは、変更済みニューラルネットワークをトレーニングするために、二次トレーニングデータセットから生成される複数のスパイク及び二次トレーニングデータセットに関係する1つ又は複数の特徴を学習する1つ又は複数の補足的スパイキングニューロンに関するユーザ入力を受信することであって、二次トレーニングデータセットは一次トレーニングデータセットと異なる、受信すること、N番目又はN+1番目の層の中の1つ又は複数の補足的スパイキングニューロンの膜電位値を決定すること、N番目又はN+1番目の層の中の少なくとも1つのスパイキングニューロンに関する膜電位値を考慮しない一方、ウィニングスパイキングニューロンとして1つ又は複数の補足的スパイキングニューロンから補足的スパイキングニューロンを選択すること、及びウィニングスパイキングニューロンに関連するシナプスのシナプス重み値の変更を行うことによって変更済みニューラルネットワークの学習関数を実行することを行うように構成される。
【0008】
[8] 本発明によれば、N個の層を有するベースニューラルネットワークを実装することであって、Nの値は少なくとも2である、実装すること、一次トレーニングデータセットから生成される複数のスパイクを使用してベーススパイキングニューラルネットワークをトレーニングすること、変更済みニューラルネットワークを実現するためにベースニューラルネットワークを変更するための変更要求を検出することに応答し、ベースニューラルネットワークのN番目又はN+1番目の層の中に1つ又は複数の補足的スパイキングニューロンを含めることによってベースニューラルネットワークを変更すること、及び変更済みニューラルネットワークをトレーニングすることであって、二次トレーニングデータセットから生成される複数のスパイク及び二次トレーニングデータセットに関係する1つ又は複数の特徴を学習する1つ又は複数の補足的スパイキングニューロン情報に関するユーザ入力を受信することであって、二次トレーニングデータセットは一次トレーニングデータセットと異なる、受信すること、N番目又はN+1番目の層の中の少なくとも1つのスパイキングニューロンの膜電位値を考慮しない一方、ウィニングスパイキングニューロンとして変更済みニューラルネットワークのN番目又はN+1番目の層の中の補足的スパイキングニューロンを選択すること、及びウィニングスパイキングニューロンに関連するシナプスのシナプス重み値の変更を行うことによって変更済みニューラルネットワークの学習関数を実行することを行うことにより、トレーニングすることを含む方法が提供される。
【0009】
[9] 本発明によれば、スパイキングニューラルネットワークを含むシステムが提供され、スパイキングニューラルネットワークはスパイキングニューラルネットワークの最後の層の中に2つ以上のスパイキングニューロンを含み、2つ以上のスパイキングニューロンは同じクラスを表し、ニューラルプロセッサが、スパイキングニューラルネットワークをトレーニングするために、トレーニングデータセットから生成される複数のスパイク及びトレーニングデータセットに関係する特徴を学習する2つ以上のスパイキングニューロンに関するユーザ入力を受信すること、2つ以上のスパイキングニューロンの膜電位値を決定すること、最後の層の中の少なくとも1つのスパイキングニューロンに関する膜電位値を考慮しない一方、ウィニングスパイキングニューロンとして2つ以上のスパイキングニューロンからスパイキングニューロンを選択すること、及びウィニングスパイキングニューロンに関連するシナプスのシナプス重み値の変更を行うことによってスパイキングニューラルネットワークの学習関数を実装することを行うように構成される。
【0010】
[10] 本発明によれば、最後の層の中に2つ以上のスパイキングニューロンを含むスパイキングニューラルネットワークを実装することであって、2つ以上のスパイキングニューロンは同じクラスを表す、実装すること、スパイキングニューラルネットワークをトレーニングすることであって、トレーニングデータセットから生成される複数のスパイク及びトレーニングデータセットに関係する特徴を学習する2つ以上のスパイキングニューロンに関するユーザ入力を受信すること、最後の層の中の少なくとも1つのスパイキングニューロンの膜電位値を考慮しない一方、ウィニングスパイキングニューロンとして2つ以上のスパイキングニューロンのうちのスパイキングニューロンを選択すること、及びウィニングスパイキングニューロンに関連するシナプスのシナプス重み値の変更を行うことによってスパイキングニューラルネットワークの学習関数を実装することにより、トレーニングすることを含む方法が提供される。
【0011】
[11] この概要は単に、本明細書に記載される趣旨の理解を提供するために幾つかの実施形態例を示す目的で提供されている。したがって、上記特徴は単なる例であり、本開示の趣旨の範囲又は精神を狭めるものとして解釈されるべきではない。本開示の他の特徴、態様、及び利点も以下の詳細な説明、図、及び特許請求の範囲から明かになろう。
【0012】
図面の簡単な説明
[12] 添付図面は、本明細書に組み込まれ、本明細書の一部をなす。
【図面の簡単な説明】
【0013】
図1】[13]幾つかの実施形態によるニューラルモデルのブロック図である。
図2A】[14]幾つかの実施形態によるニューロモルフィック集積回路のブロック図である。
図2B】[15]幾つかの実施形態による図2Aのニューロモルフィック集積回路のブロック図である。
図3】[16]幾つかの実施形態による、入力スパイクのバッファリング、パケット化、及び次の層への出力スパイクのバッファリングの流れ図である。
図4】[17]幾つかの実施形態によるスパイキング畳み込みニューラルプロセッサとして構成されたニューラルプロセッサのブロック図である。
図5】[18]幾つかの実施形態によるスパイキング全結合ニューラルプロセッサとして構成されたニューラルプロセッサのブロック図である。
図6A】[19]幾つかの実施形態によるスパイクをスパイクパケットにパケット化する一例である。
図6B】[20]幾つかの実施形態による図6Aのスパイクパケットの表現例である。
図7】[21]幾つかの実施形態による、ビットが膜電位カウンタをインクリメントするか、それともデクリメントするかを選択する方法の一例である。
図8】[22]幾つかの実施形態による学習法の重み交換ステップを示す。
図8i】[23]幾つかの実施形態による、SNN層に関する単一の入力インスタンス(スパイクパケットを処理すること)について学習関数がニューラルプロセッサによってどのように実装されるのかを示す。
図8ii】[24]幾つかの実施形態による、SNN層に関する複数の入力インスタンスについて学習関数がどのように実装されるのかを示す。
図8iii】[25]幾つかの実施形態による、各シナプスが1ビットシナプス重み値によって表されるとき、複数のシナプスにわたりシナプス後ニューロンによって入力スパイクパケット(1ビット)が受信される場合の学習の1つのインスタンスを示す。
図8iv】[26]幾つかの実施形態による、各シナプスがマルチビット(4ビット)のシナプス重み値によって表されるとき、複数のシナプスにわたりシナプス後ニューロンによって入力スパイクパケット(1ビット)が受信される場合の学習の1つのインスタンスを示す。
図8v】[27]幾つかの実施形態による、各シナプスがマルチビット(4ビット)のシナプス重み値によって表されるとき、複数のシナプスにわたりシナプス後ニューロンによってマルチビット(4ビット)の入力スパイクパケットが受信される場合の学習の1つのインスタンスを示す。
図9】[28]本発明の実施形態及び当技術分野で知られている他の任意の技法を使用して実装されトレーニングされるベーススパイキングニューラルネットワークを一例として示す。
図10】[29]図9に示すベーススパイキングニューラルネットワークを変更することによって実装される変更済みニューラルネットワークの一例を示す。
図11】[29]図9に示すベーススパイキングニューラルネットワークを変更することによって実装される変更済みニューラルネットワークの一例を示す。
図12】[30]補足的スパイキングニューロン回路が含まれる層のスパイキングニューロン回路に関する活性化/スパイク値のパケット化の変化を示す。
図13】[29]図9に示すベーススパイキングニューラルネットワークを変更することによって実装される変更済みニューラルネットワークの一例を示す。
図14】[29]図9に示すベーススパイキングニューラルネットワークを変更することによって実装される変更済みニューラルネットワークの一例を示す。
図15】[29]図9に示すベーススパイキングニューラルネットワークを変更することによって実装される変更済みニューラルネットワークの一例を示す。
図16】[31]マルチショット学習技法を使用して最初から実装されるスパイキングニューラルネットワークの一例を示す。
【発明を実施するための形態】
【0014】
[32] 図面中、同様の参照符号は一般に同一又は同様の要素を示す。
【0015】
詳細な説明
[33] 本明細書には、入力ストリームからの特徴を学習し、教師なし、半教師あり及び教師あり抽出を実行するように構成された、改良されたスパイキングニューラルネットワーク(SNN)のシステム、装置、デバイス、方法、及び/又はコンピュータプログラム製品の実施形態及び/又はその組合せ及び下位組合せが提供される。本明細書における実施形態は、改良されたSNNを提供するスタンドアロンニューロモルフィックシステム(例えば、集積回路又はクラウド/サーバ)を含む。ニューロモルフィック集積回路に実装されたニューロモルフィックシステムは、幾つかの利点を提供する。第1に、ニューロモルフィック集積回路はサイズがコンパクトである。例えば、ニューロモルフィック集積回路は、シリコンダイ上にプロセッサ複合体、1つ又は複数のセンサインターフェース、1つ又は複数のデータインターフェース、スパイク変換器、及びメモリを集積する。これは、ハードウェア実装でのシリコンエリアの効率的な使用を可能にする。第2に、ニューロモルフィック集積回路は、ユーザ定義の構成ファイルを使用して多くの異なるタスクに向けて再プログラムすることができる。例えば、ニューロモルフィック集積回路における層及びニューラルプロセッサ間の接続は、ユーザ定義の構成ファイルを使用して再プログラムすることができる。第3に、ニューロモルフィック集積回路は低待ち時間出力を提供する。最終的に、ニューロモルフィック集積回路の消費電力量は小さくなる。例えば、ニューロモルフィック集積回路は、同じタスクを実行する場合、同等の人工ニューラルネットワーク(ANN)よりも2桁低い電力を消費することができる。
【0016】
[34] Brainchip Inc.に譲渡されている米国特許出願第16/670,368号の中で、ANN、CNN、従来のSNNに関連する全般的な説明及び問題が論じられている。したがって簡潔にするために、ANN、CNN、従来のSNNに関連するかかる全般的な説明及び問題を本明細書で再び詳細に論じることはない。
【0017】
[35] 図1は、幾つかの実施形態によるニューラルネットワークモデルのブロック図である。図1では、スパイクはローカルバス101を介して通信することができる。例えば、ローカルバス101はネットワークオンチップ(NoC)バスであることができる。スパイクは、ネットワークパケットの形態で通信することができる。ネットワークパケットは、1つ又は複数のスパイクと、発信元及び宛先のアドレスを示すコードとを含むことができる。
【0018】
[36] 図1では、スパイクデコーダ102は、ネットワークパケット内のスパイクを復号化することができる。
【0019】
[37] 一実施形態では、スパイクデコーダ102が、入力スパイクをその対応する参照情報と共に受信する。例えばスパイクがカラー画像に関係する場合、そのスパイクは値情報、並びに位置情報(x,y)及びチャネル情報(例えばR、G、B)等のその対応する参照情報を含む。スパイクデコーダ102は位置情報及びチャネル情報を取り除き、高密度表現を形成するために値情報だけを使用し、スパイクデコーダ回路102にスパイク(高密度スパイク)を送信するように構成される。
【0020】
[38] 別の実施形態では、スパイクデコーダがスパース表現形式の全ての受信情報を使用し、スパイクデコーダ回路102にスパイク(スパーススパイク)を送信する。
【0021】
[39] スパイクデコーダ回路102は、ネットワークパケット内の発信元アドレスに基づいて、スパイク(高密度スパイク又はスパーススパイク)を特定のスパイキングニューロン回路に送信することができる。例えば、スパイクデコーダ回路102は、スパイクを対応するスパイキングニューロン回路のスパイク入力バッファ103に記憶することができる。スパイクデコーダ回路102はまた、対応するニューロン回路のスパイク入力バッファ103に、ビットが行き着くことになるアドレスを記憶することもできる。
【0022】
[40] スパイク入力バッファ103は、1つ又は複数のスパイクを記憶することができる。「1」ビットはスパイクの存在を表すことができ、0ビットはスパイクの不在を表すことができる。スパイク入力バッファ103は、ビットが行き着くことになるアドレスを含むこともできる。
【0023】
[41] 図1では、パケタイザ114は、スパイク入力バッファ103内のスパイクをソートして、1つ又は複数のスパイクパケットにすることができる。スパイクパケットは、パケットレジスタ104に記憶することができる。例えば、スパイキングニューロン回路が1024個のシナプスを有する場合、パケットレジスタ104は1024ビット長であることができる。パケタイザ114は、スパイク入力バッファ103内のビットを1024ビットパケットレジスタ104に沿った正確な位置にソートすることができる。このソートプロセスについて図6において更に説明する。
【0024】
[42] 図1では、シナプス重み値はシナプス重み記憶装置105に記憶することができる。幾つかの実施形態では、シナプス重み記憶装置105は、静的ランダムアクセスメモリ(SRAM)を使用して実施することができる。当業者ならば理解するように、シナプス重み記憶装置105は、種々の他のメモリ技術を使用して実施することもできる。
【0025】
[43] シナプス重み記憶装置105内のシナプス重み値は、正又は負であることができる。幾つかの実施形態では、シナプス重み記憶装置105内のシナプス重み値は、処理のために重みレジスタ106に転送することができる。
【0026】
[44] 一部の実施形態では、ニューロンの膜電位値が:1.AND回路107及び108並びにカウンタ109、又は論理演算ユニット(ALU)152を使用して決定される。
【0027】
[45] 一部の実施形態では、シナプス重み値の変更が:1.重み交換器113、又は2.重みインクリメンタ及びデクリメンタ150並びにALU152を任意選択的に使用して実行される。
【0028】
[46] 一部の実施形態では、膜電位値を決定するのに必要な計算を行うために又はシナプス重み値の変更を行うために、ALUを有する代わりにメモリ内に必要な全ての計算を有する状態表が使用される。
【0029】
[47] 一部の実施形態では、重みレジスタ106内の正のシナプス重み値は、論理AND回路107においてパケットレジスタ104内の対応するビットとAND演算することができる。その結果生成された論理AND回路107の出力は、AND関数の正の結果のそれぞれについて、カウンタ109をインクリメントすることができる。カウンタ109は、ニューロンの膜電位値を表すことができる。
【0030】
[48] 重みレジスタ106内の負のシナプス重み値は、論理AND回路108において、パケットレジスタ104内の対応するビットとAND演算することができる。その結果生成される論理AND回路108の出力は、カウンタ109をデクリメントすることができる。このプロセスは、パケットレジスタ104内の全てのビットが処理されるまで続けることができる。
【0031】
[49] パケットレジスタ104内の全てのビットが処理された後、カウンタ109は、重みレジスタ106内の正及び負のシナプス重み値に対応するパケットレジスタ104内のビット数を表す値を含むことができる。カウンタ109の値は、閾値比較器110を使用して少なくとも1つの閾値と比較することができる。
【0032】
[50] 幾つかの実施形態では、閾値比較器110は、カウンタ109の値を2つの閾値と比較することができる。例えば、閾値比較器回路110は、カウンタ109の値を学習閾値レジスタ111内の値及びスパイキング閾値レジスタ112内の値と比較することができる。
【0033】
[51] 幾つかの実施形態では、学習閾値レジスタ111内の値はまず低値に設定することができ、ニューロンが学習できるようにする。学習プロセス中、シナプス重みは、重み交換器113を使用して入力スパイクに割り当てることができる。この方法は図8に示される。幾つかの実施形態では、ニューロンが学習するにつれて、カウンタ109内の値は増大し、学習閾値レジスタ111内の値も同様に増大する。このプロセスは、ニューロンが特定の学習されたパターンに対して強力な応答を提示するまで続けることができる。
【0034】
[52] 図2Aは、幾つかの実施形態によるニューロモルフィック集積回路200のブロック図である。ニューロモルフィック集積回路200は、神経線維201、変換複合体202、センサインターフェース203、プロセッサ複合体204、1つ又は複数のデータインターフェース205、1つ又は複数のメモリインターフェース206、高速チップ間インターフェースを提供することができるマルチチップ拡張インターフェース207、電力管理ユニット213、及び1つ又は複数の直接メモリアクセス(DMA)エンジン214を含むことができる。
【0035】
[53] 幾つかの実施形態では、神経線維201は、複数の再構成可能なニューラルプロセッサ208を含むことができる。ニューラルプロセッサ208は、複数のニューロンを含むことができる。例えば、ニューラルプロセッサ208は、複数のスパイキングニューロン回路及び複数のシナプスを含むことができる。上述したように、スパイキングニューロン回路は、入力スパイクバッファ103、パケタイザ114、パケットレジスタ104、論理AND回路107、論理AND回路108、カウンタ109、閾値比較器110、学習閾値111、スパイキング閾値112を使用して実施することができる。複数のシナプスは、重みレジスタ106、シナプス重み記憶装置105、及び重み交換器113を使用して実施することができる。各ニューラルプロセッサ208は、神経線維201の任意の部分に接続することができる複数の再プログラム可能なスパイキングニューロン回路を含むことができる。
【0036】
[54] 幾つかの実施形態では、変換複合体202は、ピクセル/スパイク変換器209、オーディオ/スパイク変換器210、ダイナミックビジョンセンサ(DVS)/スパイク変換器211、及びデータ/スパイク変換器212の1つ又は複数を含むことができる。ピクセル/スパイク変換器209は、画像をスパイクイベントに変換することができる。
【0037】
[55] 幾つかの実施形態では、センサインターフェース203は、ピクセルデータ、オーディオデータ、アナログデータ、及びデジタルデータの1つ又は複数のインターフェースを含むことができる。センサインターフェース203は、DVSピクセルデータのAERインターフェースを含むこともできる。
【0038】
[56] 幾つかの実施形態では、プロセッサ複合体204は、少なくとも1つのプログラマブルプロセッサコア、メモリ、及び入出力周辺機器を含むことができる。プロセッサ複合体204は、ニューロモルフィック集積回路200と同じダイに実装することができる。
【0039】
[57] 幾つかの実施形態では、データインターフェース205は、入出力周辺機器の1つ又は複数のインターフェースを含むことができる。1つ又は複数のインターフェースは、ペリフェラルコンポーネントインターコネクトエクスプレス(PCIe)バス規格、ユニバーサルシリアルバス(USB)バス規格、イーサネットバス規格、コントローラエリアネットワーク(CAN)バス規格、及びリアルデータを送受信するための万能非同期送信受信機(UART)を使用することができる。
【0040】
[58] 幾つかの実施形態では、メモリインターフェース206は、ダイナミックランダムアクセスメモリ(RAM)拡張のための1つ又は複数のインターフェースを含むことができる。1つ又は複数のインターフェースは、ダブルデータレート同期ダイナミックランダムアクセスメモリ(DDR SDRAM)規格を使用することができる。例えば、1つ又は複数のメモリインターフェースは、DDR3又はDDR4規格を使用することができる。
【0041】
[59] 幾つかの実施形態では、マルチチップ拡張インターフェース207は、スパイク情報を搬送することができ、神経線維201を複数のチップに拡張できるようにする。マルチチップ拡張インターフェース207は、address event representation(AER)を使用してスパイク情報を搬送することができる。AERは、システムバスを介してスパイクイベントを送信する規格である。スパイクが発生時にスパイクする特定のニューロンのアドレスが送信される。
【0042】
[60] 幾つかの実施形態では、ニューロモルフィック集積回路200は、スパイク情報を入力としてとり、出力としてAERスパイクイベントを生成することができる。SCNNの最後の層からスパイクを出力することに加えて、AERスパイクイベントは、各スパイキングニューロン回路の膜電位値を送信することもできる。
【0043】
[61] 幾つかの実施形態では、神経線維201は、フィードフォワード様式でスパイクを処理することができる。スパイクは、AERフォーマットデータを使用して層間を送信することができる。各層は、入力スパイクバッファに記憶されたスパイクを1組のスパイクパケットに変換する入力スパイクバッファ(例えば、入力スパイクバッファ103)を有することができる。あらゆる層は、入力スパイクバッファ内の全てのスパイクを完全に処理してから、その出力スパイクを次の層に送信することができる。
【0044】
[62] 図2Bは、幾つかの実施形態による図2Aのニューロモルフィック集積回路200の別のブロック図を示す。図2Bは、ローカルバス220(例えば、NoCバス)を使用したニューロモルフィック集積回路200の構成要素の相互接続を示す。図2Bでは、ニューロモルフィック集積回路200は、図2Aに示されるように、神経線維201、プロセッサ複合体204、1つ又は複数のデータインターフェース205、ピクセル/スパイク変換器209、オーディオ/スパイク変換器210、及びDMAエンジン214を含むことができる。ニューロモルフィック集積回路200は、シナプス重み記憶装置222、メモリ224、シリアル読み取り専用メモリ(ROM)226、構成レジスタ228、PCIeインターフェースブロック230、PCIeバス232、UARTインターフェース234、CANインターフェース236、USBインターフェース238、及びイーサネットインターフェース240を含むこともできる。
【0045】
[63] 幾つかの実施形態では、シナプス重み記憶装置222は、図1のシナプス重み記憶装置105と同等であることができる。シナプス重み記憶装置222は、神経線維201に接続することができる。シナプス重み記憶装置222は、全てのシナプスの重み及び全てのスパイキングニューロン回路の膜電位値を記憶することができる。シナプス重み記憶装置222は、PCIeバス232に接続することができるPCIeインターフェースブロック230から1つ又は複数のDMAエンジン214を通して外部からアクセスすることができる。
【0046】
[64] 幾つかの実施形態では、構成レジスタ228は神経線維201に接続することができる。神経線維201の初期化中、プロセッサ複合体204はシリアルROM226を読み取り、値を構成レジスタ228及びシナプス重み記憶装置222に書き込むことにより、外部定義の機能に向けて神経線維201を構成することができる。
【0047】
[65] 幾つかの実施形態では、プロセッサ複合体204は、PCIeインターフェース230を通して外部から利用可能である。プログラムはメモリ224に記憶することができる。プログラムは、UARTインターフェース234、CANインターフェース236、USBインターフェース238、及びイーサネットインターフェース240の機能を決めることができる。これらのインターフェースの1つ又は複数は、神経線維201、プロセッサ複合体204、又は両方により処理されるデータを送出することができる。
【0048】
[66] 一部の実施形態では、メモリ224がバスを介して通信することができる。メモリ224は、これだけに限定されないがランダムアクセスメモリ、読み取り専用メモリ、プログラマブル読み取り専用メモリ、電気的プログラマブル読み取り専用メモリ、電気的消去可能読み取り専用メモリ、フラッシュメモリ、磁気テープ又はディスク、光学媒体等を含む、様々な種類の揮発性及び不揮発性記憶媒体等の、これだけに限定されないが非一時的コンピュータ可読記憶媒体を含むことができ又はかかる非一時的コンピュータ可読記憶媒体に結合され得る。一例では、メモリ224がプロセッサのためのキャッシュ又はランダムアクセスメモリを含み得る。代替例では、プロセッサのキャッシュメモリ、システムメモリ、又は他のメモリ等、メモリ224がプロセッサと切り離されている。メモリ224は、データを記憶するための外部の記憶装置又はデータベースであり得る。メモリ224は、プロセッサによって実行可能な命令を記憶するように動作可能であり得る。図示し又は記載する機能、行為、又はタスクは、メモリ224内に記憶される命令を実行するためのプログラムされたプロセッサによって実行され得る。機能、行為、又はタスクは特定の種類の命令セット、記憶媒体、プロセッサ、又は処理戦略から独立しており、単独で又は組み合わせで動作するソフトウェア、ハードウェア、集積回路、ファームウェア、マイクロコード等によって実行され得る。同様に、処理戦略はマルチプロセッシング、マルチタスキング、並列処理等を含み得る。
【0049】
[67] 一部の実施形態では、本発明は命令を含む、又は伝播信号に応答して命令を受信し実行するコンピュータ可読媒体も予期する。更に、命令は通信ポート若しくはインターフェースによって又はバスを使用してネットワーク上で伝送され又は受信され得る。通信ポート又はインターフェースは1つ又は複数のプロセッサの一部とすることができ、又は別個のコンポーネントであり得る。通信ポートはソフトウェアによって作成することができ、又はハードウェアによる物理接続であり得る。
【0050】
[68] オーディオ/スパイク変換器210は、神経線維201により処理されるべきスパイクをローカルバス220に直接送出することができる。ピクセル/スパイク変換器209は、外部画像センサに接続することができ、ピクセル情報をスパイクパケットに変換し、スパイクパケットは、神経線維201による処理のためにローカルバス220に配られる。処理されたスパイクはパケット化され(例えば、ネットワークパケットに挿入され)、ローカルバス220に配置される。
【0051】
[69] 図3は、幾つかの実施形態による、入力パケットバッファリング、パケット化、及び次の層への出力スパイクバッファリングの流れ図である。図3は、入力スパイクバッファ301、1つ又は複数のスパイクパケット302、神経線維303、及び出力スパイクバッファ304を含む。図3では、入力スパイクバッファ301内のスパイクは、神経線維303内の特定のニューロン(例えば、スパイキングニューロン回路)の1つ又は複数のスパイクパケット302にソートすることができる。神経線維303で処理された後、生成されたあらゆるスパイクは、後続層に送信される出力スパイクバッファ304に記憶することができる。出力スパイクバッファ304内の生成されたスパイクは、後続層による処理のためにパケット化することができる。
【0052】
[70] 幾つかの実施形態では、神経線維303内の層は、入力スパイクバッファ301の全体を処理することができる。層は、各スパイクパケット302を順次処理することができる。その結果生成された出力スパイクは、出力スパイクバッファ304に配置することができる。出力スパイクバッファ304は、全てのスパイクパケット302が処理されるまで、処理に向けて次の層に送信されないことがある。幾つかの実施形態では、神経線維303の全ての層はこの作業フローに従うことができる。
【0053】
[71] 幾つかの実施形態では、神経線維303は、同時に多くのスパイクを処理することができる。幾つかの実施形態では、異なるスパイクバッファタイプを神経線維303内の層に使用することができる。スパイク入力バッファのタイプは、入力データの性質に依存することができる。スパイクバッファタイプ間の違いは、入力スパイクバッファ301からスパイクパケットをいかに生成するかにあることができる。
【0054】
[72] 幾つかの実施形態では、パケット化バッファタイプを使用して、連続又は継続タイプのデータ(例えば、DVSカメラにより生成される一連のスパイク)を処理することができる。ユーザは、このバッファタイプを使用するように神経線維303の異なる層を構成することができる。パケット化バッファタイプは、一度に1つずつ又は非常に大きなバーストでの多くのスパイクの処理を可能にすることができる。パケット化バッファは、スパイク数が構成ファイル(例えば、YAMLファイル)において指定されるパラメータ(例えば、パケットサイズ)により定義されるサイズに達するまで、受信された順にスパイクを記憶することができる。パケット化バッファがそのサイズに達すると、スパイクパケットを処理に向けて神経線維303に渡すことができる。次に、パケット化バッファをクリアすることができる。次に、パケット化バッファはスパイクを引き続き記憶することができる。
【0055】
[73] 幾つかの実施形態では、フラッシュバッファタイプを使用して、定義されたサイズ(例えば、従来のビデオイメージフレーム又は定義された組の値)の形態のデータを処理することができる。例えば、ビデオフレームは、640×480ピクセル等の定義されたサイズを有することができる。しかしながら、この場合、一度に送信される多くのスパイクは、1つのパケットとして処理するために即時に送信し得る。スパイクパケットは異なる長さであることができる。
【0056】
[74] 幾つかの実施形態では、各層タイプは、まず、スパイク入力バッファからパケットを生成することにより、スパイク入力バッファ(例えば、スパイク入力バッファ301)全体を処理する関数を実施することができる。スパイク入力バッファ全体がパケット化された後、この関数は全てのスパイクパケットを処理することができる。次に、この関数は、処理されたスパイクパケットを削除し、出力スパイクをスパイクパケットから出力スパイクバッファ(例えば、出力スパイクバッファ304)にプッシュすることができる。次に、この関数は、処理する次のスパイクパケットを取得することができる。バッファタイプ間の違いは、入力スパイクバッファからスパイクパケットを生成する方法にあることができる。
【0057】
[75] 図4は、幾つかの実施形態による、スパイキング畳み込みニューラルプロセッサとして構成されたニューラルプロセッサ400のブロック図である。ニューラルプロセッサ400は、ローカルバス401(例えば、NoCバス)上のネットワーク、スパイクデコーダ402、シナプス重み記憶装置403、ニューロン位置生成器、プーリング回路404、神経線維405、電位更新及びチェック回路406、並びにスパイク生成器407を含むことができる。神経線維405は、図2の神経線維201と同等であることができる。シナプス重み記憶装置403は、シナプス重み値及びニューロンの膜電位値(例えば、電位アレイ)を記憶することができる。プーリング回路404は、当業者ならば理解するように、最大プーリング演算、平均プーリング演算、又は他のタイプのプーリング演算を実行することができる。1対多スパイク生成器回路407は、ローカルバス401を介して1対多で送信することができるスパイクパケットを生成することができる。
【0058】
[76] 図5は、幾つかの実施形態による、スパイキング全結合ニューラルプロセッサとして構成されたニューラルプロセッサ500のブロック図である。ニューラルプロセッサ500は、ローカルバス501(例えば、NoCバス)、スパイクデコーダ502、シナプス重み記憶装置503、ニューロン位置生成器、パケット形成器504、神経線維505、電位更新及びチェック回路506、並びに電位及びスパイク出力回路507を含む。神経線維505は、図2の神経線維201と同等であることができる。シナプス重み記憶装置503は、シナプス重み値及びニューロンの膜電位値(例えば、電位アレイ)を記憶することができる。図5では、スパイクは、スパイク入力バッファで受信し、スパイキングデコーダ502を使用してスパイクパケットとして分配される。
【0059】
[77] 幾つかの実施形態では、シナプス重みは三次重みであることができる。これらの三次シナプス重みは2ビット幅であることができる。これらの2ビット幅シナプス重みは、正の値及び負の値の両方を含むことができる。これは従来のSNNと異なる。2ビット幅シナプス重みの正の値は、ニューロンの膜電位値を増大させることができる。2ビット幅シナプス重みの負の値は、ニューロンの膜電位値を低減することができる。
【0060】
[78] 幾つかの実施形態では、スパイクパケット内のスパイクは、シナプス宛先数に従って分配することができる。幾つかの実施形態では、処理中、三次シナプス重みは、スパイクパケットにおいて表されるスパイクと論理AND演算される。スパイクパケット内のスパイクは、正のスパイクビットを使用して表すことができる。スパイクパケット内のスパイクの不在は、ゼロを使用して表すことができる。シナプス重みは負又は正であることができる。負のシナプス重みは、ニューロンのカウンタ109(例えば、膜電位レジスタ)をデクリメントすることができる。正のシナプス重みは、ニューロンのカウンタ109(例えば、膜電位レジスタ)をインクリメントすることができる。
【0061】
[79] 幾つかの実施形態では、学習プロセスは、ニューロンの学習閾値(例えば、学習閾値レジスタ111内の値)に達した場合、入力を調べることにより実施することができる。ニューロンの学習閾値はまず、非常に低い値に設定することができる。学習閾値は、ニューロンが学習し、より多くのシナプス重みがマッチするにつれて、増大することができる。幾つかの実施形態では、学習プロセスは、未使用シナプス重み(例えば、スパイクが発生しない場所における正のシナプス重み)と未使用スパイク(例えば、値0を有するシナプス重みに対する位置にあるスパイクパケット内のスパイク)の交換を含み得る。未使用シナプス重みは、未使用スパイクを含む場所と交換することができる。
【0062】
[80] 幾つかの実施形態では、ニューロン膜電位値(例えば、カウンタ109により表される)がスパイキング閾値(例えば、スパイキング閾値レジスタ112内の値)を超える場合、スパイクが生成される。スパイクはローカルバスに配置される。
【0063】
[81] 図6Aは、幾つかの実施形態による、スパイクをパケット化してスパイクパケットにすることの一例である。図6Aでは、スパイク入力バッファ601(例えば、スパイク入力バッファ103と同等)は、スパイク復号化回路により処理されたスパイクをローカルバスから受信する。パケタイザ602は、スパイクのシナプスインデックス数に従ってスパイク入力バッファ601内のスパイクをソートしてスパイクパケット603にすることができる。例えば、図6Aでは、受信されたスパイクシーケンスは1、6、23、1、19、18である。当業者なら理解するように、スパイクシーケンスは、図6Aに示される少数のスパイクよりもはるかに多数であり得る。例えば、スパイクシーケンスは、多数のシナプスに分配される数千のスパイクを含むことができる。
【0064】
[82] 図6Bでは、幾つかの実施形態による図6Aのスパイクパケット603の表現の一例である。図6Bでは、スパイクパケット603は、スパイク入力バッファ601からソートされたスパイクを含む。スパイクパケット603では、位置1、6、18、19、及び23は強調表示されて、論理「1」値を含むことを示す。スパイクパケット603内の残りの位置はゼロ(例えば、スパイクの不在を示す)を含む。
【0065】
[83] 幾つかの実施形態では、スパイクは、シナプス重みがメモリ(例えば、シナプス重み記憶装置105)に配置されたのと同じ順に編成することができる。これは、シナプス重み値と入力スパイクパケット内のスパイクとの間でAND演算を実行して、膜電位カウンタ(例えば、カウンタ109)がインクリメントされるか、それともデクリメントされるかを判断できるようにすることができる。スパイクが、シナプス重み値がゼロである位置で生じる場合、カウンタはそのビット位置について変更されない。
【0066】
[84] 図7は、幾つかの実施形態による、膜電位値(例えば、カウンタ109)がインクリメントされるか、それともデクリメントされるかを選択する方法の一例である。図7では、論理AND演算がスパイクパケット701と重みレジスタ702(例えば、重みレジスタ702は重みレジスタ106と同等である)との間で実行される。図7では、スパイクパケット701のスパイクビット1、6、18、19、及び23は強調表示されて、論理「1」値(例えば、スパイクの存在を示す)を含むことを示す。スパイクパケット701内の残りの位置はゼロ(例えば、スパイクの不在を示す)を含む。
【0067】
[85] 重みレジスタ702は、正の値又は負の値の何れか一方を示す論理ビットを含むことができる。図7では、ビット1、4、5、14、及び22は正の値を含み、一方、ビット18は負の値を含む。正の値は興奮作用を示すことができ、一方、負の値は抑制作用を示すことができる。重みレジスタ702内のビットは、興奮性重みの場合、EXCと記し、抑制性重みの場合、INHと記すことができる。論理ANDが、重みレジスタ702内のビットとスパイクパケット701内のビットとの間で実行される。したがって、位置1において生じたスパイクは、ニューロンの膜電位値(例えば、カウンタ109)をインクリメントする。これとは対照的に、位置18で生じたスパイクは、ニューロンの膜電位値(例えば、カウンタ109)をデクリメントする。
【0068】
[86] 図7は、幾つかの実施形態による、学習法の一例である。学習では、出力イベント/スパイクに寄与するスパイクは、強化された代表的なシナプス重みを有することができ、一方、出力イベント/スパイクに寄与しなかったスパイクは、弱化されたシナプス重みを有することができる。
【0069】
[87] 幾つかの実施形態では、学習法は、未使用シナプス重みが、未使用スパイクを含む場所と交換されるように変更される。例えば、ゼロであり、スパイクを受信したシナプス重みは、論理「1」であり、いかなるスパイクも受信しなかったシナプス重みと交換される。
【0070】
[88] 幾つかの実施形態では、論理AND演算が、「1」であるスパイクパケット内のスパイクビット及びゼロであるシナプス重みに対して実行される場合、結果はゼロである。これは、「未使用スパイク」と呼ぶことができる。論理AND演算が、「0」であるスパイクパケット内のスパイクビット及び「1」であるシナプス重みに対して実行される場合、結果はゼロである。これは「未使用シナプス重み」と呼ぶことができる。学習回路(例えば、重み交換器113)は、未使用スパイクが生じているランダムに選択された未使用シナプス重みを交換することができる。
【0071】
[89] 図7では、スパイクパケット701内の位置1は、使用済みスパイクを含む。シナプス重み702内の位置1は、使用済み重みを含む。これは、ニューロンの膜電位値(例えば、カウンタ109)をインクリメントさせることができる。
【0072】
[90] シナプス重み702内の位置4及び5は、未使用シナプス重みを含む。これらのシナプス重みは、交換の候補である。スパイクパケット701内の位置6は、未使用スパイクを含む。換言すれば、スパイクパケット701内の位置6は1を含むが、シナプス重み702の位置6はゼロを含む。未使用シナプス重みはこの位置と交換することができる。シナプス重み702の位置14は、未使用シナプス重みを含む。スパイクパケット701の位置18は、使用済みスパイクを含み、シナプス重み702の位置18は、使用済みシナプス重み(この場合、抑制性)を含む。これは、ニューロンの膜電位値(例えば、カウンタ109)をデクリメントさせることができる。スパイクパケット701の位置19は、未使用スパイクを含む。シナプス重み702の位置22は、未使用シナプス重みを含む。スパイクパケット701の位置23は、未使用スパイクを含む。
【0073】
[91] この学習法は、生物学的脳で行われる学習によりインスパイアされている。幾つかの実施形態では、変更された形態の学習法は、学習の実行に使用される。この変更された方法は、生物学的ニューロンが学習するメカニズムと同様である。
【0074】
[92] 幾つかの実施形態では、スパイキングニューロン回路は、入力が膜電位値(例えば、カウンタ109)を閾値まで駆動したとき、スパイクを発する。これは、ニューロンが閾値まで駆動され、スパイクを生成するとき、その最近活性化された入力からの接続は強化され、一方、幾つかのその他の接続は弱化されることを意味することができる。繰り返し見る入力のパターンに応答してニューロンが学習することになり、それにより、入力データセットを特徴付ける特徴を自動的に学習することができる。
【0075】
[93] 幾つかの実施形態では、学習閾値の変更により生じるニューロン間の自然な競合等のこの方法の他の属性に応じて、層内のニューロンの集団は、様々な入力特徴空間を学習する。したがって、所与の入力に対するニューロンの集団の応答は、存在する特徴についての情報を搬送する。
【0076】
[94] 脳では、感覚処理は通常、階層的であり、一連の層にわたって行われる。初期層は単純な特徴についての情報を抽出し、上位層ほど、応答がより複雑な形状又は物体に対してより選択的であるとともに、空間位置又は向きに対して不変であるという点でより一般的であるように、それらの特徴の組合せに応答するように学習する。
【0077】
[95] 幾つかの実施形態では、この変更された学習法は完全に教師なしである。これは、ニューラルネットワークで使用されている従来の多様な教師ありトレーニング法と異なる。これは、本明細書における実施形態にラベルなしデータセットを提示することができ、いかなる追加情報もなく、データに存在する異なる特徴に応答するように学習することができることを意味する。学習は進行中のプロセスであることができる。
【0078】
[96] 幾つかの実施形態では、新しいクラスが既にトレーニングされたデータセットに追加される場合、ニューラルネットワーク(例えば、神経線維201)全体を再トレーニングする必要がない。これは、破滅的な忘却性という技術的問題をなくすことができる。学習を継続できるようにすることにより、ネットワークにより既に認識されたネットワークに新しいクラスを追加することができる。
【0079】
[97] 教師なし学習は、特徴を抽出することができる。しかしながら、ラベル付きデータがない場合、教師なし学習は出力を直接「ラベル付け」することができない。分類タスクでは、ニューラルネットワーク(例えば、神経線維201)は、刺激データセットに存在するクラスを区別する1組の特徴を学習することができる。次に、特徴を表す応答を入力ラベルにリンクする方法を適用するのはユーザ次第であることができる。
【0080】
[98] 図8は、幾つかの実施形態による学習法の重み交換ステップを示す。図8は、「未使用シナプス重み」が「未使用入力」と交換され、それにより、将来、同じ又は同様の入力スパイクパターンへのニューロンの応答を強化する、変更された学習プロセスにおける次のステップの一例を示す。
【0081】
[99] 図8では、スパイクパケット801のスパイクビット1、6、18、19、及び23は強調表示されて、論理「1」値を含む(例えば、スパイクの存在を示す)ことを示す。スパイクパケット801内の残りの位置はゼロを含む(例えば、スパイクの不在を示す)。シナプス重み802のビット1、4、5、14、及び22は「+1」値を含み、一方、ビット18は「-1」値を含む。未使用スパイク801のビット19は、スパイクパケット801内の未使用スパイクを表す。未使用シナプス重み802のビット5及び14は、シナプス重み802内の未使用シナプス重みを表す。図8では、新しいシナプス重み805は、未使用シナプス重み(例えば、スパイクが生じなかった場所における正のシナプス重み)及び未使用スパイク(例えば、ゼロの値を有するシナプス重みに対する位置にあるスパイクパケット内のスパイク)を交換した結果を表す。例えば、新しいシナプス重み805のビット14は、シナプス重み802のビット18の値を含み、この逆も同様である。
【0082】
[100] 図8による上記の実施形態は、シナプスが+1、-1、又は0の対応するシナプス重み値を有する学習方法を記載する。「+1」のシナプス重み値は、入力スパイクが到達するときシナプス後ニューロンの電位を興奮させ又は増加させるのに対し、「-1」のシナプス重み値は入力スパイクが到達するときシナプス後ニューロンの膜電位を抑制し又は減少させる。「0」のシナプス重み値はシナプス後ニューロンの膜電位に影響しない。
【0083】
[101] より広いレベルで、ハードウェアによる実装は脳の機能から発想を得ている。この方法はより少ない計算及びメモリを必要とするので複雑でないことを理由に有利だが、このやり方で実装される学習は限られており、生物学的なシナプスの限られた機能的側面からのみ発想を得ている。このやり方で実装されるシナプスは、シナプスの不在又は存在しか表さない。不在は「0」ビットシナプス重み値によって反映されるのに対し、シナプスの存在は「+1」(興奮性)又は「-1」(抑制性)シナプス重み値によって反映される。
【0084】
[102] より重要なことに、脳内のシナプスの機能は上記で開示した実施形態よりも著しく複雑である。例えば脳内のシナプスのシナプス強度は様々な生物学的パラメータに依存し、その強度の点で大いに異なり、そのためシナプス後ニューロンから他のニューロンへの感覚入力の伝播はかなりの数の方法で影響を受ける。典型的には、生物学的な脳内のシナプス間隙における神経伝達物質及び神経受容体はシナプスの挙動及び強度を変える。
【0085】
[103] 図8による前の実施形態の中のより単純なデジタルシナプス実装は、比較的複雑でない感覚入力を認識すべきである、又は運動機能出力をデジタルで与えるべきであるシナリオにおいて役立ち得る。とりわけ、+1、0;-1、0、及び+1;-1、0等のシナプス重み値を有するより単純なデジタルシナプス重み構成は、ハードウェア内のより少ないメモリを消費するので役立つ。しかし、(例えば複雑なマルチ感覚入力等を有する)高度な人工知能タスクを実行するには、生物学に近いやり方で及びより多数の異なる強度を有することを可能にするやり方で、そのためニューロモルフィックハードウェア内で脳のような学習を実現することを助けるやり方でデジタルシナプスをハードウェアによって構成する必要がある。換言すれば、ニューロモルフィックハードウェア内でマルチビットシナプス重み値を実現することが求められる。このことは、高度なAIの応用を実現するためにネットワークの選択性と汎化との間のより優れた妥協点を見出すことを支援し得る。
【0086】
[104] 単に非常に明確な個々の例ではなく任意の種類の不変性を有するカテゴリ/クラスを認識することをネットワークが全体として学習する場合、ニューロンの選択性は入力内の様々な特徴/パターンに応答することをニューロンが学習できるようにするのに対し、汎化は同様のパターンの組にニューロンが応答することを可能にする。例えば、書かれた文字(例えばModified National Institute of Standards and Technologyデータセット)を認識することをネットワークに学習してほしい場合、学習する「パターン」は同一文字の異なる例に共通の特徴である。提示されるスパイクの実際のパターンは例の間で不十分に保たれることになり、そのためニューロンは自らが符号化するパターンに関して特定的になり過ぎることはできず、本発明の実施形態は各ニューロンがより複雑なパターンをネットワーク内で単独で又は集合的に認識することを有利に可能にする。
【0087】
[105] 更なる実施形態は、スパイキングニューロン回路(一部の箇所では簡単にするためにニューロンと呼ぶ)の膜電位値が閾値に達したと判断することに基づいて学習関数を実行することを開示する。
【0088】
[106] 具体的には、図8による先の実施形態の中で開示したシナプス重み値の交換技法の代わりに、更なる実施形態はより段階的なシナプス重みの変更方法を開示する。かかる方法はハードウェア内の追加の計算及びメモリを必要とし得るが、推論中に使用されるときモデルの精度を改良するのに有益である。これらの実施形態は、知的(パターン認識及び意思決定の点でよりスマート)で特化された(トレーニングに使用される同レベルの入力データについて強化された特化を得る)人工知能システムを設計することを助け得る。
【0089】
[107] 図8で開示した重み交換技法はマルチビットシナプスでは上手く機能しない。その理由は、シナプス重み値ごとに学習率が激しく変化又は急変するからである。モデルの学習率は非常に重要なパラメータであり、学習の安定性及び精度を実現するために注意深く制御されなければならない。これにより、ハードウェアによって(例えばニューロモルフィック集積チップ上で)実装されるスパイキングニューラルネットワークモデル内でマルチビットシナプス重み値が使用される場合、シナプス重み値の交換ではなく、より制御されたシナプス重みの変更技法が開示される。ウィニングニューロンが2つのシナプスにおいて入力を受信し、重みの変更が2つの手法、つまりa)重み交換を行うこと並びにb)インクリメント及びデクリメントを行うことにおいてシナプス重み値を補正することによって行われる例を用いてこの技法の利点を更に詳細に述べる。
【実施例0090】
[108] 実施例1)スパイク入力15、0が、ウィニングニューロンに関連するシナプス重み値2、12を有する対応するシナプスにおいて受信される。
入力までの総距離は13+12=25である(距離は入力と重みとの絶対差の和である)。
a)重み交換を使用し:重みを12、2に変更し、入力までの新たな距離は3+2=5である。総変化=20。
b)インクリメント及びデクリメントを使用し:重みを3、11に変更し、入力までの新たな距離は12+11=23である。総変化=2。
【0091】
[109] 実施例2)スパイク入力15、0が、ウィニングニューロンに関連するシナプス重み値4、5を有する対応するシナプスにおいて受信される。
入力までの総距離は11+5=16である。
a)重み交換を使用し:重みを5、4に変更し、入力までの新たな距離は10+4=14である。総変化=2。
b)インクリメント及びデクリメントを使用し:重みを5、4に変更し、入力までの新たな距離は10+4=14である。総変化=2。
【0092】
[110] 実施例3)スパイク入力15、0が、ウィニングニューロンに関連するシナプス重み値6、6を有する対応するシナプスにおいて受信される。
【0093】
[111] 入力までの総距離は9+6=15である。
a)重み交換を使用し:重みを6、6に変更し(変更なし!)、入力までの新たな距離は9+6=15である。総変化=0。
b)インクリメント及びデクリメントを使用し:重みを7、5に変更し、入力までの新たな距離は8+5=13である。総変化=2。
【0094】
[112] 上記の例から分かるように、(図8を用いて開示した)重み交換技法を使用し、(重みベクトルから入力ベクトルまでの距離の)総変化は極めて変わりやすいのに対し(20、2、及び0)、インクリメント及びデクリメント技法を使用し、総変化は限られている(この事例では常に2である)。インクリメントデクリメント技法が採用されるときの総変化は、より速い学習率を実現するためにユーザによって、具体的にはインクリメント又はデクリメントの刻みを2、4、6等に構成することによって構成可能とすることができ(例えば4、6、8等)、それによりモデルは有利には高度に制御可能であり続ける。
【0095】
[113] 典型的には、ニューラルネットワークがニューロモルフィックハードウェア上でトレーニングされるとき大量のスパイクパケットが処理される。
【0096】
[114] スパイキングニューロンネットワークは複数の層を有し得る。層のそれぞれは幾つかのニューロンを含み得る。それらのニューロン(スパイキングニューロン回路)は図1図2A、及び図2B等のニューロモルフィックハードウェア又は同様の任意のハードウェア上で実装される。
【0097】
[115] 一部の実施形態では、モデルがトレーニングされているとき入力スパイクパケットがシナプス後ニューロン(スパイキングニューロン回路)に到達すると、膜電位値を決定するために幾つかの数学関数を使用することができる。
【0098】
[116] 一部の実施形態では、ハードウェア内の計算要件を低減するために、又はハードウェア内の論理演算ユニット(ALU)の必要性を回避するために、(例えば膜電位値を計算するための)様々な数学的計算のために実行される必要があり得る全ての数学関数又は1組のあり得る全ての数学関数がメモリ内に参照表の形で記憶される。
【0099】
[117] 方法の種類1:一部の実施形態では、1組のスパイクビット/スパイク入力値(1ビット又はマルチビット)の中のスパイクビット/スパイク入力値と、1組のシナプスの中のシナプスのシナプス重み値との間の論理AND関数が実行される。スパイキングニューロン回路に関連する膜電位値が論理AND関数の結果に基づいてインクリメント又はデクリメントされる。典型的には、膜電位値を決定するために、各スパイク入力値とニューロンに関連するシナプスのその対応するシナプス重み値との間で論理AND関数が実行され、論理AND関数の結果を合算して膜電位値を決定する。層内の複数のニューロンのうちのウィニングニューロンがこの技法によって決定される場合、シナプス重みの変更による学習の1つ又は複数のイベント後に学習閾値が増加されるように構成される。
【0100】
[118] 方法の種類2:一部の実施形態では、2a)シナプス重み値と1組の対応する第1のスパイク入力値又は対応する第1の1組のスパイク入力値から導出される1組の第1の値との間の複数の差分値が生成される。2b)次のステップで複数の2乗値が生成され、各2乗値は差分値のそれぞれを2乗することによって生成される。2c)次のステップで、複数の2乗値を合算することによって合算値が生成される。2d)次のステップで、その合算値を2乗根することによって2乗根された値が生成される。2e)最後のステップで、1を2乗根された値で割ること又は2乗根された値を負の2乗根された値に変換することによって膜電位値が生成される。層内の複数のニューロンのうちのウィニングニューロンがこの技法によって決定される場合、シナプス重み値の変更によって実現される学習の1つ又は複数のイベント後に学習閾値が増加されるように構成される。
【0101】
[119] 一部の実施形態では、2a)対応する第1のスパイク入力値又は対応するスパイク入力値から導出される値からシナプス重み値を減算することによって複数の差分値が生成される。2b)次のステップで複数の2乗値が生成され、各2乗値は差分値のそれぞれを2乗することによって生成される。2c)次のステップで、複数の2乗値を合算することによって合算値が生成される。2d)最後のステップで、1を合算値で割ることによって膜電位値が生成される。ニューラルプロセッサは、決定した合算値を処理し、最も低い合算値/最も高い膜電位値を有するニューロンを決定し、層内の複数のニューロンのうちのウィニングニューロンを決定するように構成される。一部の実施形態では、最も低い合算値/最も高い膜電位値を有するニューロンがウィニングニューロンとして決定される。層内の複数のニューロンのうちのウィニングニューロンがこの技法によって決定される場合、シナプス重み値の変更による学習の1つ又は複数のイベント後に学習閾値が典型的には増加されるように構成される。
【0102】
[120] 方法の種類3:
【0103】
[121] 一部の実施形態では、3a)対応する第1のスパイク入力値又は対応するスパイク入力値から導出される値からシナプス重み値を減算することによって複数の差分値が生成される。3b)次のステップで、差分値それぞれの絶対値を決定することによって複数の絶対値が生成される。3c)次のステップで、複数の絶対値を合算することによって合算値が生成される。3d)最後のステップで、1を2乗根された値で割ること又は2乗根された値を負の2乗根された値に変換することによって膜電位値が生成される。層内の複数のニューロンのうちのウィニングニューロンがこの技法によって決定される場合、シナプス重みの変更による学習の1つ又は複数のイベント後に学習閾値が増加されるように構成される。
【0104】
[122] 一部の実施形態では、3a)対応する第1のスパイク入力値又は対応するスパイク入力値から導出される値からシナプス重み値を減算することによって複数の差分値が生成される。3b)次のステップで、差分値それぞれの絶対値を決定することによって複数の絶対値が生成される。3c)次のステップで、複数の絶対値を合算することによって合算値が生成される。ニューラルプロセッサは、決定した合算値を処理し、最も低い合算値/最も高い膜電位値を有するニューロンを決定し、層内にあるニューロンのうちのウィニングニューロンを決定するように構成される。一部の実施形態では、最も低い合算値/最も高い膜電位値を有するニューロンがウィニングニューロンとして決定される。層内の複数のニューロンのうちのウィニングニューロンがこの技法によって決定される場合、シナプス重みの変更による学習の1つ又は複数のイベント後に学習閾値が増加されるように構成される。
【0105】
[123] 方法の種類4:
【0106】
[124] ステップ4a:ステップ4aを実装するために以下に記載するステップ4a(i)又は4a(ii)の何れか1つを実装することができる。
【0107】
[125] ステップ4a(i):
【0108】
[126] 一部の実施形態では、ネットワークが最初に構成されるとき、シナプス後ニューロンのそれぞれについてシナプスベクトル長が所望のシナプスベクトル長と同じ又はほぼ同じであるように複数のシナプス後ニューロンに関連するシナプスのシナプス重み値がニューラルプロセッサによって選ばれる。シナプスベクトル長は、2乗されたシナプス重み値の和の平方根である。例えば所望のシナプスベクトル長が12である場合、4、2、6、3、0、6、及び7のシナプス重み値が選ばれる。この事例では、シナプスベクトル長は
√4+2+6+3+0+6+7=12.2
である。
【0109】
[127] これを実装するには予め構成された1組のシナプス重み値をメモリ内に記憶することができ、各組は所望のシナプスベクトル長を参照する。一部の実施形態では、シナプスベクトル長がユーザによって定められ、ニューラルネットワークの初期構成中に提供される。モデルが学習し始めると、ニューロンそれぞれのシナプスベクトル長が所望のシナプスベクトル長と同じ又はほぼ同じままであるように、ニューラルプロセッサがシナプス重み値の変更を可能にする。
【0110】
[128] ステップ4a(ii):
【0111】
[129] 一部の実施形態では、ネットワークがランダムシナプス重み値を用いて構成される。更に、構成されたランダムシナプス重み値に基づいてシナプスベクトル長が決定される。次のステップで、所望のシナプスベクトル長を決定されたシナプスベクトル長で割ることによってシナプススケール因子が決定される。次のステップで、シナプススケール因子をシナプス重み値と乗じることによってシナプス重み値のスケーリングが実行され、更新されたシナプス重み値が実現される。一部の実施形態では、シナプスベクトル長がユーザによって定められ、ニューラルネットワークの初期構成中に提供される。
【0112】
[130] ステップ4b:スパイクパケットをスケーリングするための任意選択的なステップが実行される。この方法によれば、受信されるスパイクパケットごとに入力ベクトル長が決定される。入力ベクトル長は、2乗されたシナプス入力値の和の平方根である。例えばスパイクパケットが2、3、1、2、0、3、及び6の入力値を含む場合、入力ベクトル長は
√2+3+1+2+0+3+6=7.94
である。
【0113】
[131] 次のステップで、所望のシナプス重み値が入力ベクトル長で割られ、入力スケール因子が決定される。12の所望のシナプスベクトル長では、入力スケール因子は12/7.94=1.51である。
【0114】
[132] 次のステップで、入力スケール因子を入力値と乗じることによって入力値(スパイクパケット)のスケーリングが実行され、更新された入力値が実現される。例えば2、3、1、2、0、3、及び6の入力値に1.51が掛けられ、スケールされた入力値である3.02、4.53、1.51、3.02、0、4.53、及び9.06が実現される。
【0115】
[133] ステップ4c:
【0116】
[134] 最後のステップでドット積が実行される。
【0117】
[135] ステップ4c(i):一実施形態によれば、複数のニューロンそれぞれの膜電位値を決定するために、複数のニューロンのスパイクパケットとシナプス重み値との間でドット積が実行される。
【0118】
[136] ステップ4c(ii):一実施形態によれば、複数のニューロンそれぞれの膜電位値を決定するために、複数のニューロンのスパイクパケットとスケールされたシナプス重み値との間でドット積が実行される。
【0119】
[137] ステップ4c(iii):一実施形態によれば、複数のニューロンそれぞれの膜電位値を決定するために、複数のニューロンのスケールされたスパイクパケットとスケールされたシナプス重み値との間でドット積が実行される。
【0120】
[138] 受信されるスパイクパケットに基づく学習を実現するために、ステップ4c(i)~4c(iii)の何れか1つに基づいて決定される膜電位値に基づいてウィニングニューロンが選択され、本発明で開示した技能の何れかに従ってシナプス重み値が変更される。一部の実施形態では、最も高い膜電位値を有するニューロンがウィニングニューロンとして選ばれる。一部の実施形態では、高い膜電位値を有する幾つかのニューロンが決定され、ランダムな/任意のニューロンがウィニングニューロンとして選ばれる。
【0121】
[139] 一実施形態では、方法の種類4が組み込まれる場合、本発明で開示する技法の何れか1つに従ってシナプス重みの変更を行うときに追加の制約が適用される。具体的には、更新されたシナプス重み値のシナプスベクトル長が所望のシナプスベクトル長と同じ又はほぼ同じであるようにシナプス重み値を変更するようニューラルプロセッサが構成される。
【0122】
[140] 一実施形態では、本発明で開示する技法の何れかに従ってシナプス重み値が変更されるが、重みを変更した後でシナプス重みスケーリングの更なるステップ(ステップ4a(ii)等)が実行される。スケールされたシナプス重み値は、その後のスパイクパケットを処理するとき使用される。
【0123】
[141] トレーニングされたモデルを実現するために、ステップ4aから4cが幾つかのスパイクパケットにわたって繰り返される。
【0124】
[142] 方法の種類4は、上記で開示したステップの任意の組み合わせを使用して実装され得ることを当業者なら理解されよう。例えば膜電位を決定するために:A)ステップ4a(i)及びステップ4c(i)、B)ステップ4a(ii)、ステップ4b、及びステップ4c(iii)、並びにC)ステップ4a(ii)、ステップ4c(ii)が実装され得る。
【0125】
[143] シナプス重み値及び入力値のそれぞれがバイナリビットとして表されるので、ハードウェア内で数学的計算を行うとき又は数学的計算(例えばドット積、2乗、2乗根、合算)の結果を求めるためにメモリ内に記憶された状態表を使用するとき、様々な近似が適用され得ることを当業者なら理解されよう。
【0126】
[144] 一部の実施形態では、方法の種類1を実装するためにAND回路107、108、及びカウンタ109が使用され、シナプス重みの変更を実装するために重み交換器113が使用される。
【0127】
[145] 一部の実施形態では、方法の種類1を実装するためにALU152の乗算器及び加算器機能を使用して膜電位値を決定する。その場合、シナプス重み値と対応するスパイク値とが乗算され、それらの結果を加算して膜電位を実現する。
【0128】
[146] 一部の実施形態では、方法の種類2~4を実装するために論理演算ユニット152を使用して膜電位を決定し、重みインクリメンタ及びデクリメンタ150を使用してシナプス重みの変更を実装する。一部の実施形態では、シナプス重みの変更を実装するために重み交換器113が使用される。
【0129】
[147] 開示した方法の種類1~4は、実現される正確さ、精度のレベル、及びハードウェア内で要求される計算のレベルの点で異なる。膜電位を決定するために、これらの方法の種類の何れのものも使用可能であることを当業者なら理解されよう。膜電位が決定されると、本発明の様々な実施形態で開示した、シナプス重みの開示した変更技法の何れもモデルをトレーニングするために組み込まれ得る。
【0130】
[148] 一部の実施形態では、学習率を変更することによってシナプス重みの変更のレベルがユーザによって構成可能である。学習率が高い場合、典型的には高い値の又はより多数のシナプス重みの変更が時間と共に行われる。
【0131】
[149] 典型的には、最も高い膜電位を有するニューロンがウィニングニューロンとしてニューラルプロセッサによって選択され、ウィニングニューロンに関連するシナプスについてシナプス重みの変更が行われる。シナプスを表すシナプス重み値は、本発明で開示する実施形態の何れかに基づいてインクリメント及び/又はデクリメントされる。好ましくは、この実施形態はシナプス重み値がマルチビットであるとき実装される。1つ又は複数のシナプス重みの変更イベント後に学習閾値がインクリメント又はデクリメントされる。
【0132】
[150] 一部の実施形態では、方法の種類2及び3によって決定される合算値が膜電位として見なされ、層内にあるニューロンの中で最も低い閾値を有するニューロンについてシナプス重みの変更が行われ、その場合、シナプス重みの変更による学習の1つ又は複数のイベント後に学習閾値が減少されるように構成される。
【0133】
[151] シナプス後ニューロン回路のそれぞれはSNN(スパイキングニューラルネットワーク)層内でスパイクビットを受信し、スパイキングニューロン回路の膜電位が関連する発火閾値に達するときシナプス後ニューロン回路それぞれのスパイキングが構成される。ニューロン回路のスパイキングは非同期的に構成され、これは同じ層内のニューロンが発火したかどうかを考慮することなしにスパイキングニューロン回路が発火することを意味する。発火の結果として、スパイキングニューラルネットワーク内の複数の層内で構成される複数のスパイキングニューロン回路間のシナプス結合に基づき、層のスパイキングニューロン回路からのスパイクがその後の層のスパイキングニューロン回路に伝播され、その後も同様に伝播は続く。
【0134】
[152] 発火閾値はモデルの学習中に固定されるように又は補正されるように構成され得る。但し、入力パケットに基づく学習を捕捉するためにシナプス重み値及び学習閾値は学習モード中に変更される。しかしモデルが推論モードで使用される場合、シナプス重み値及び発火閾値は変更されない。
【0135】
[153] 図8(i)に示す流れ図によって更に説明するように、シナプス重み値の変更によるモデルの学習は同期的に行われるように構成される。この流れ図は、単一のSNN層に関する単一の入力インスタンスについて(スパイクパケットを処理することにより)学習がニューラルプロセッサによってどのように実装されるのかを示す。SNNモデルをトレーニングするために複数の入力インスタンスも同様に使用され得ることを理解すべきである。応用にもよるが、スパイキングニューラルネットワークは1つ又は複数の層を有し得る。図16に示すように、ネットワークはニューラルネットワーク構成パラメータを使用して構成され得る。
【0136】
[154] 図8(i)において、ステップ80002は、スパイキングニューロン回路によってスパイクパケットが処理されるとき、スパイクパケットに対応するスパイキングニューラルネットワーク層の複数のスパイキングニューロン回路に関する膜電位値が決定されることを示す。膜電位値は本発明で開示する任意の方法によって決定され得る。重要なことに、ニューロンはスパイキングを非同期的に行うように構成される。しかし、シナプス重み値の変更による学習関数を実行するために、このプロセスは、ネットワークの層内にあるスパイキングニューロン回路それぞれの膜電位値が決定されるとき(受信されるスパイクパケットに対応する)、かかる場合にのみ更なるステップに進む(更なるステップを実装する)ように構成される。有利には、このことは受信されるスパイクパケットを学習するのにどのニューロンが特化すべきかの意思決定、及び2つ以上のニューロンが同じ入力パケットを学習しようと試みないことを助ける。提案する実施形態は、より少ないメモリと共にニューロモルフィックチップ上のネットワークのトレーニングを可能にし、そのためチップのサイズ及び製造コストの低減を実現することができる。
【0137】
[155] ステップ80004で、スパイキングニューロン回路ごとの膜電位値が受信されるスパイクパケットに基づいて決定されているかどうかを確認する。
【0138】
[156] 決定されていない場合、ステップ80006が示すように、ニューラルプロセッサはスパイキングニューラルネットワークの層内のスパイキングニューロン回路それぞれの膜電位の決定を待つ。
【0139】
[157] 先に進み、ステップ80008が示すように、膜電位値が対応する学習閾値に達したスパイキングニューロン回路を決定する。かかるスパイキングニューロン回路はウィニングニューロンの候補として選ばれるのに対し、残りのスパイキングニューロン回路は膜電位が対応する学習閾値に達する基準を満たさないことを理由に無視される。
【0140】
[158] ステップ80010が示すように、選ばれた候補に基づいてウィニングスパイキングニューロン回路が選択される。一実施形態では、選択された候補のうちで最も高い膜電位を有するスパイキングニューロン回路がウィニングスパイキングニューロン回路として選ばれる。一部の実施形態では、選択された候補のうちのランダムな/任意のスパイキングニューロン回路がウィニングスパイキングニューロン回路として選ばれる。2つ以上のスパイキングニューロン回路が選択基準に等しく一致している場合、それらの2つ以上のスパイキングニューロン回路のうちのランダムな/任意のスパイキングニューロン回路がウィニングスパイキングニューロン回路として選択される。
【0141】
[159] 最後にステップ80012で、受信されるスパイクパケットに基づく学習を実装するために、ウィニングスパイキングニューロンに関連するシナプスにシナプス重み値の変更が適用される。
【0142】
[160] 図8(iii)~図8(v)による実施形態は、学習を実装するために組み込むことができる様々なシナプス重み値の変更手法を開示する。
【0143】
[161] 図8(ii)は、複数の入力インスタンスについて学習関数がどのように実装されるのか、又は言い換えれば幾つかのスパイクパケットの処理がどのように行われるのかを示す流れ図を示す。図8(ii)は、複数のスパイキングニューラルネットワーク層にわたってスパイクがどのように生成されるのかも示す。
【0144】
[162] ステップ80014で、第1のスパイクパケットが、複数のシナプスにわたり1組のシナプス前スパイキングニューロン回路から1組のシナプス後スパイキングニューロン回路によって受信され、更に処理される。シナプスのそれぞれは関連する初期シナプス重み値を有する。ネットワークが最初に構成されるとき1つ又は複数の制約を適用した後、初期シナプス重み値には何らかの任意値又は所定値が割り当てられる。第1のスパイク入力値を受信するために、ネットワークの他の様々なパラメータが本発明の他の実施形態によって構成され得る。ネットワークの残りのパラメータは本発明の他の実施形態によって構成され得る。
【0145】
[163] ステップ80016で、本発明で開示する膜電位決定方法(方法の種類1~4)の何れかを採用することによってスパイク後ニューロン回路(post-spiking neuron circuits)それぞれの膜電位値が決定される。先に進み、スパイキングニューロン回路それぞれの膜電位値が(第1の/次の)受信されるスパイクパケット及び(初期の/更新された)シナプス重み値に基づいて対応する学習閾値に達したかどうかを判断する。受信されるスパイクパケットが第1のスパイクパケットである場合、膜電位を決定するために初期のシナプス重み値が使用される。受信されるスパイクパケットが次の又はその後のスパイクパケットである場合、膜電位値を決定するために更新されたシナプス重み値が使用される。シナプス重み値は、本発明の様々な実施形態の中で開示するシナプス重みの変更手法の何れかに基づいて更新される。
【0146】
[164] 一実施形態では、ニューラルネットワークのスパイキングニューラルネットワーク層内にある複数のスパイキングニューロンそれぞれの膜電位値が、複数のスパイキングニューロンのそれぞれに関連するシナプスの入力データ及びシナプス重み値に基づいてニューラルネットワークの1つ又は複数のスパイキングニューラルネットワーク層から決定される。シナプスは、複数のスパイキングニューロンのそれぞれに関連するプレシナプス又はポストシナプスであり得る。
【0147】
[165] ステップ80018で、関連する発火閾値に達するときシナプス後ニューロン回路によるスパイキングが非同期的に行われる。先に論じたように、SNN層のスパイキングニューロン回路間に非同期手法が組み込まれ、これはSNN層内のスパイキングニューロン回路のスパイキングがスパイキングニューロン回路の残りの部分のスパイキングに依存しないことを意味する。任意選択的に、スパイキングニューロン回路に関連する発火閾値は、各ニューロンがスパイク入力パターンを受信した後で(単独で又は集合的に)スパイクするようにインクリメント又はデクリメントすることができる。
【0148】
[166] ステップ80020で、シナプス後スパイキングニューロン回路に関連する膜電位がスパイキングを理由にリセットされる。ステップ80016及び80018は、受信される複数のスパイクパケットにわたりスパイキングニューロン回路にとって同じ順序で行われることに留意すべきである。自らの関連する発火閾値に達する複数のスパイキングニューロン回路がある場合、これらのステップはスパイキングニューロン回路のそれぞれについて同じ順序で繰り返されることを理解すべきである。
【0149】
[167] ステップ80021で、膜電位値が個々のスパイキングニューロン回路に関連する学習閾値に達した、層のスパイキングニューロン回路の1組のスパイキングニューロン回路が決定される。
【0150】
[168] ステップ80022で、1組のスパイキングニューロン回路からウィニングスパイキングニューロン回路が選択される。先に論じたように、膜電位を決定するとき同期手法が組み込まれ、これは全てのスパイキングニューロン回路が受信されるスパイクパケットに基づいて膜電位値を決定するまでウィニングスパイキングニューロン回路が選択されないことを意味する。
【0151】
[169] ステップ80024に進み、ウィニングスパイキングニューロン回路のためのシナプス重み値がスパイクパケットに基づく学習を反映するように更新される。
【0152】
[170] 一部の実施形態では、スパイキングニューロン回路のそれぞれについて発火閾値が学習閾値よりも低い。その場合、ウィニングスパイキングニューロン回路は典型的には層内のスパイキングニューロン回路のうちで最も高い膜電位を有する。
【0153】
[171] 一部の実施形態では、スパイキングニューロン回路のそれぞれについて発火閾値が学習閾値よりも高い。その場合、ウィニングスパイキングニューロン回路は典型的には層内のスパイキングニューロン回路のうちで最も低い膜電位を有するものである。
【0154】
[172] ネットワークが学習するにつれ、スパイキングニューロン回路それぞれの膜電位値が学習閾値に達する前に発火閾値に達し、それによりスパイキングニューロン回路による発火はスパイキングニューロン回路に関連するシナプス、即ちプレシナプス又はポストシナプスのシナプス重み値の変更前に生じる。
【0155】
[173] 一実施形態では、入力データに基づくニューラルネットワークの学習関数を反映するように、ウィニングスパイキングニューロンに関連する1つ又は複数のシナプスについてシナプス重み値の変更が行われ得る。更にシナプスは、シナプス重み値の変更が行われ得るウィニングスパイキングニューロンに関連するプレシナプスであり得る。
【0156】
[174] ステップ80026に進み、ウィニングニューロン回路に関連するシナプスについてシナプス重み値が変更されている確認をニューラルプロセッサが待つ。
【0157】
[175] 最後のステップ80028では、層の全てのスパイキングニューロン回路によるその後の(次の)スパイクパケットが複数のシナプスによって受信され、変更されたシナプス重み値を用いて処理される。次のスパイクパケットに基づく学習は、上記で説明した受信された以前のスパイクパケットと同様に行われる。
【0158】
[176] 様々な実施形態において、各シナプス重み値は
マルチビットデジタル値によってそれぞれ表されるゼロ及び正の整数値
マルチビットデジタル値によってそれぞれ表される正の整数値
マルチビットデジタル値によってそれぞれ表される正の整数値及び負の整数値、並びに
マルチビットデジタル値によってそれぞれ表される負の整数値、ゼロ、及び正の整数値
の1つを含む値の群から選択される。
【0159】
[177] 図8(iii)、図8(iv)、及び図8(v)の実施形態は、1つ又は複数の追加の発火ニューロン(非ウィニングニューロン)のシナプス重み値を考慮するときウィニングニューロンに関連するシナプスのシナプス重み値が変更される学習方法を記載する。この手法は、ウィニングニューロンに関連するシナプスの更新されたシナプス重み値を決定するとき、ウィニングニューロンとは別の他の任意のニューロンに関連するシナプスのシナプス重み値を考慮する。
【0160】
[178] 全ての発火ニューロン(即ちウィニングニューロン及びスパイクする1つ又は複数の追加のニューロン)のシナプス重み値を考慮することは、幾つかのスパイクパケットが処理されるとき、複数の発火ニューロンが個々にではなく集合的に入力に近づくようにシナプス重みの更新を導き、そのことは推論中のより優れた精度を有利にもたらす。かかる方法が使用されない場合(例えば先の実施形態)、ニューロンは(冗長性を招く(同じタスクにより多くのニューロンが必要である))同様の重みの組及びより高い再構築誤差(成功の測度)と共に個々に入力に近づく。但し、追加のニューロンのシナプス重み値を処理するために追加の計算が必要なので、これはチップのメモリ要件を高め、ことによるとチップのコストを上げる。
【0161】
[179] この実施形態の利益を示すための一例を示す。幾つかのオブジェクトを含む幾つかの入力画像が提供され、画像を集合的に再現するニューロンの層をネットワークが学習することを要求される例を検討されたい。1つの画像に3つのオブジェクト(ボール、猫、及び自転車)及びこの画像が見られるたびに発火する3つのニューロンがあると仮定する。3つのニューロンの理想的な表現は、それぞれがオブジェクトの1つを表すものである。本発明の他の実施形態を使用し、各ニューロンは他の発火ニューロンが何を表すのかを考慮しないので、ニューロンの重みは3つ全てのオブジェクトを巡って均等に分散される。したがって、3つ全てのニューロンが3つ全てのオブジェクトをそれぞれ表す。対照的に、提案する実施形態では他の発火ニューロンが何を表すのかをニューロンが学習時に考慮する。その結果、各ニューロンは入力画像の別々の部分を学習する。理想的には、それらのニューロンは他のオブジェクトを含む異なる画像内で同じオブジェクトを認める場合、それぞれ1つのオブジェクトの表現に収束する。したがって有利には、この技法を用いてパターン認識の成功をより少ないニューロンで実現することができる。
【0162】
[180] 図8(iii)、図8(iv)、及び図8(v)の提案する更なる実施形態は、この技法をより詳細に開示する。
【0163】
[181] 図8(iii)は、本発明の一実施形態による、1ビット入力及び1ビットシナプス重み値が学習に使用される場合の学習の1つのインスタンスの例を示す。モデルが一連の入力データ(スパイク入力/パケット)にさらされるとき、スパイクパケット及びシナプス重み値は広く変わることを理解すべきである。
【0164】
[182] この実施形態では、各シナプスが、不在状態である「0」若しくは存在状態である「1」又はその逆のシナプス重み値を有することによって2つの状態を有し得ることに留意すべきである。
【0165】
[183] ウィニングニューロンに関連するシナプスのシナプス重み値は、この実施形態ではネットワークの1つ又は複数の追加のニューロンのシナプス重み値を考慮して変更される。好ましくは、考慮される追加のニューロンはウィニングニューロンと同じ層からのものである。好ましくは、高い(例えば2番目に高い又は3番目に高い)膜電位値を受信し、受信したスパイクパケットに基づいてスパイクを生成する同じ層のニューロンが追加のニューロンとして考慮される。
【0166】
[184] この実施形態のニューロンのスパイキングは、好ましくはスパイキングニューロン回路が発火閾値に達するとき実装される。ウィニングニューロンは本発明の他の実施形態の中で開示する技法の何れか1つによって決定され得る。
【0167】
[185] 図8(iii)は、シナプス後ニューロンによって受信されるスパイクパケット8096を示す。好ましくは、シナプス後ニューロンは、受信される入力スパイクパケットが1組のニューロンによって処理されるとき最も高い膜電位値を有するウィニングニューロン、又はウィニングニューロンとしてランダム/任意に選ばれるニューロンである。ページの利用可能空間の最適な使用を実現するように、インデックス8092だけを示す。スパイク値、シナプス重み値、再構築入力、及び再構築誤差のそれぞれがインデックス8092等の別個のインデックス(不図示)上に記憶されることを理解すべきである。それらの別個のインデックスは、入力スパイクパケットインデックス(スパイクインデックス)、シナプス重みインデックス(重みインデックス)、再構築入力インデックス、及び再構築誤差インデックスと呼ぶ。
【0168】
[186] スパイクパケットは14個のフィールド(スパイク入力インデックス00から13)を含む。各インデックスは1ビット(0又は1)のスパイク入力値を記憶する。各スパイクビットは、ウィニングスパイキングニューロン回路の1ビットシナプス重み値、追加のスパイキングニューロン回路の1ビットシナプス重み値(追加のスパイキングニューロン回路が複数ある場合は複数の1ビットシナプス重み値)、マルチビット再構築入力、及びマルチビット再構築誤差(又はその逆)に対応する。スパイクインデックス00、01、03、05、06、07、09、10、及び12は強調表示されて、論理「1」値(例えば、スパイクの存在を示す)を含むことを示す。スパイクパケット8096内の残りの位置はゼロ(例えば、スパイクの不在を示す)を含む。
【0169】
[187] 図8(iii)を見ても分かるように、本実施形態はシナプス重みインデックス(0から13)ごとに1ビットシナプス重み値を組み込む。シナプス重み8098が、ウィニングニューロン(ニューロン1)のための14個のシナプス重みインデックスにおいて記憶される。各インデックスは1ビットシナプス重み値を記憶する。シナプス重みインデックス01、03、06、07、09、及び13がウィニングニューロンの「1」のシナプス重み値を記憶する。同様に、シナプス重み8100が、追加のニューロン(ニューロン2)のための14個のシナプス重みインデックスにおいて記憶される。追加のニューロンのためのシナプス重みインデックス01、02、03、06、07、及び08がウィニングニューロンの「1」のシナプス重み値を記憶するのに対し、残りのインデックスのシナプス重み値は「0」である。
【0170】
[188] ニューラルプロセッサがスパイクパケット及びシナプス重み値を処理し、受信された入力スパイクパケットに基づく学習を反映するようにシナプス重みインデックスの一部におけるシナプス重み値を変更することにより、ウィニングスパイキングニューロン回路(ニューロン1)の1ビットシナプス重み値の変更を開始する。
【0171】
[189] 学習は特定のインデックスにおけるシナプス重み値をインクリメント及び/又はデクリメントすることによって実装される。図8(iii)の所与の例では、プロセッサがウィニングスパイキングニューロン回路(ニューロン1)のシナプス重み値と追加のスパイキングニューロン回路(ニューロン2)のシナプス重み値とを合算することによって再構築入力を決定する。複数の追加のスパイキングニューロン回路も考慮することができ、同様に、2つ以上の追加のスパイキングニューロン回路のシナプス重み値のインデックス単位の加算演算により、ニューラルプロセッサによって再構築入力が決定され得ることに留意すべきである。
【0172】
[190] 先に進み、ニューラルプロセッサは、スパイク入力値から決定された再構築入力値を減算することによって再構築誤差を決定する。
【0173】
[191] 本発明の先の実施形態から逸脱し、ウィニングスパイキングニューロン回路(ニューロン1)のシナプス重み値を考慮することに加え、(スパイク入力値を直接にではなく)再構築誤差を考慮した後、十分使用されていないスパイク(8106)を決定する。
【0174】
[192] 十分使用されていないスパイクは、正の再構築誤差及び「0」のシナプス重み値に対応するものだと決定される。例えばこの例では、8120、8118、8116、及び8114が十分使用されていないスパイクとして決定される。十分使用されていない重み(8108)は、負の再構築誤差及び「1」のシナプス重み値に対応するものだと決定される。例えばこの例では、8122、8126、8128、8130、及び8132が十分使用されていない重みとして決定される。
【0175】
[193] 先に進み、シナプス重み値の1つ又は複数の対がランダム/任意に決定され、各対はウィニングニューロン(ニューロン1)に関連する2つのシナプス重み値、つまり1組の十分使用されていないスパイク(インデックス1、5、10、及び12内に示す8120、8118、8116、及び8114)から1つ、及び1組の十分使用されていない重み(インデックス1、3、6、7、及び13内に示す8122、8126、8128、8130、及び8132)から1つのシナプス重み値を含む。
【0176】
[194] 先に進み、入力スパイクパケットに基づく学習を実装するためにシナプス重み値が変更され、十分使用されていないスパイク/入力を引き起こしたシナプス重み値はインクリメントされるのに対し、十分使用されていない重みを引き起こしたシナプス重み値はデクリメントされる。その結果、シナプス重みインデックス0(8124)、5(8137)、10(8142)、及び12(8144)のシナプス重み値8110は「1」の値インクリメントされており、シナプス重みインデックス1(8134)、6(8138)、7(8140)、及び13(8146)のシナプス重み値は「1」の値デクリメントされている。十分使用されていないスパイク/入力に関連する4つのシナプス重み値はインクリメントされ、十分使用されていない4つのシナプス重み値はデクリメントされるので、合計のシナプス重み値はスパイクパケットの処理後も一定のままになる(この例では合計のシナプス重み値は6である)。インデックス3(8136)において記憶されるシナプス重み値は変更されない。
【0177】
[195] 学習の結果として、スパイクパケット(パターン)をよりよく捕捉するのに必要なシナプス重み値がスパイク重みインデックス内で(「1」を与えることによって)利用可能にされ、受信される入力スパイクパケットに鑑みて関連しないシナプス重み値はウィニングスパイキングニューロン回路のシナプス重み値を変えることによって(「0」を与えることによって)不在にされる。典型的には、これは生物学的な脳内に存在する学習のシナプス変化現象を表す。
【0178】
[196] 上記で開示した実施形態によれば、ニューラルプロセッサは以下の要約したステップによって学習を行うように構成される。
【0179】
[197] 第1のステップで、ニューラルプロセッサは、層のウィニングスパイキングニューロン回路に関連するシナプスの1ビットシナプス重み値と、少なくとも1つの追加のスパイキングニューロン回路に関連するシナプスの1ビットシナプス重み値とを合算することにより、複数の1ビット再構築入力値を決定する。
【0180】
[198] 次のステップで、ニューラルプロセッサは、最大シナプス値を1ビットスパイク入力値と乗じることから導出される値からマルチビット再構築入力値を減算することにより、複数のマルチビット再構築誤差値を決定する。
【0181】
[199] 次のステップで、ニューラルプロセッサは、十分使用されていないスパイクを表すスパイクパケット内の第1の1ビットスパイク入力値を決定し、第1の1ビットスパイク入力値は第1の正の再構築マルチビット誤差値及び「0」の第1の1ビットシナプス重み値に対応する。
【0182】
[200] 次のステップで、ニューラルプロセッサは、十分使用されていない重みを表すスパイクパケット内の第2の1ビットスパイク入力値を決定し、第2の1ビットスパイク入力値は第2の負の再構築マルチビット誤差値及びウィニングスパイキングニューロン回路の第2のシナプスの値「1」の1ビットシナプス重み値に対応する。
【0183】
[201] 最後のステップで、ニューラルプロセッサは、第1の1ビットシナプス重み値の値をインクリメントし、第2の1ビットシナプス重み値の値をデクリメントする。
【0184】
[202] 図8(iv)は、本発明の一実施形態による、1ビットスパイク入力及びマルチビットシナプス重み値が使用される場合の、シナプス重みの変更技法を使用する学習の1つのインスタンスの例を示す。図8(iv)が示すように、1ビットスパイク入力が各スパイク入力インデックス上に記憶されるのに対し、4ビットシナプス重み値が各スパイク入力インデックス上に記憶される。この例では、各シナプスが「0から15」までのシナプス重み値を有することによって16個の状態を有し得ることに留意すべきである。
【0185】
[203] 先の実施形態と同様に、この実施形態でのウィニングニューロンに関連するシナプスのシナプス重みの変更は、ネットワークの追加のニューロンに関連するシナプス重み値を考慮して実装される。好ましくは、追加のニューロンはウィニングニューロンが属するネットワークの同じ層から選ばれる。
【0186】
[204] 一部の事例では、受信されるスパイクパケットに基づいて高い膜電位を受信するニューロンが追加のニューロンとして考慮される。好ましくは、ウィニングニューロン及び追加のニューロンは受信されるスパイクパケットに基づいてスパイクしたニューロンである。この実施形態のニューロンのスパイキングは、好ましくはスパイキングニューロン回路が発火閾値に達するとき実装される。ウィニングニューロンは本発明の他の実施形態の中で開示する技法の何れか1つによって決定され得る。
【0187】
[205] 図8(iv)は、複数のシナプスを介してシナプス後ニューロンによって受信されるスパイクパケット8150を示す。好ましくは、シナプス後ニューロンは受信される入力スパイクパケットに関して最も高い膜電位を有するウィニングニューロン、又はウィニングニューロンとしてランダム/任意に選ばれるニューロンである。
【0188】
[206] スパイク値、シナプス重み値、再構築入力、及び再構築誤差のそれぞれが別個のインデックス(不図示)上に記憶されるのでインデックス8148を参照目的で示す。それらの別個のインデックスは、入力スパイクパケットインデックス(スパイクインデックス)、シナプス重みインデックス(重みインデックス)、再構築入力インデックス、及び再構築誤差インデックスと呼ぶ。
【0189】
[207] 好ましくは、ウィニングニューロンは最大の(1番高い)膜電位値を有するニューロンとして決定されるのに対し、第1の追加のニューロン、第2の追加のニューロン等は2番目に高い、3番目に高い等の膜電位値を有するニューロンである。閾値に達したニューロンについてシナプス重み値が変更される。
【0190】
[208] 各インデックスが1ビット(0又は1)のスパイク入力値を記憶するように、スパイクパケットは25個のスパイク入力インデックス(0から24)を含む。各スパイクビットは、ウィニングスパイキングニューロン回路のマルチビット(4ビット)シナプス重み値、追加のスパイキングニューロン回路のマルチビット(4ビット)シナプス重み値(追加のスパイキングニューロン回路が複数ある場合は複数の1ビットシナプス重み値)、マルチビット再構築入力、及びマルチビット再構築誤差又はその逆に対応する。スパイクインデックス01、08、09、15、16、18、19、及び23は強調表示されて、論理「1」値(例えば、スパイクの存在を示す)を含むことを示す。スパイクパケット8150内の残りの位置はゼロ(例えば、スパイクの不在を示す)を含む。
【0191】
[209] 本実施形態はシナプス重みインデックス(0から24)ごとにマルチビット(4ビット)シナプス重み値を組み込む。シナプス重み8152が、ウィニングニューロン(ニューロン1)のための25個(0から24)のシナプス重みインデックスを含む。シナプス重みインデックス01、05、06、12、14、16、18、21、及び23がウィニングニューロンに関連するシナプスのシナプス重み値12、15、2、7、9、4、15、9、及び12をそれぞれ記憶するのに対し、残りのインデックスのシナプス重み値は「0」である。同様に、シナプス重みインデックス8154が25個のシナプス重みインデックスを記憶し、01、03、05、06、09、11、12、14、15、16、及び23が追加のニューロン(ニューロン2)に関連するシナプスのシナプス重み値3、4、1、9、15、12、13、4、6、及び7をそれぞれ記憶するのに対し、残りのインデックスのシナプス重み値は「0」である。
【0192】
[210] ニューラルプロセッサが(ウィニングニューロン及び追加のニューロンに関連する)スパイクパケット及びシナプス重み値を処理し、受信された入力スパイクパケットに基づく学習を反映するようにシナプス重みインデックスの一部におけるシナプス重み値を変更することにより、ウィニングスパイキングニューロン回路(ニューロン1)の4ビットシナプス重み値(8152)の変更を開始する。
【0193】
[211] 図8(iv)の所与の例では、ニューラルプロセッサがウィニングスパイキングニューロン回路(ニューロン1)のシナプス重み値と追加のスパイキングニューロン回路(ニューロン2)のシナプス重み値とを合算することによって再構築入力(8156)を決定する。複数の追加のスパイキングニューロン回路も考慮することができ、同様に、2つ以上の追加のスパイキングニューロン回路のシナプス重み値とウィニングニューロンのシナプス重み値との加算演算により、ニューラルプロセッサによって再構築入力が決定され得ることに留意すべきである。図8(iv)で認めることができるように、インデックス単位の加算演算が行われる。
【0194】
[212] 先に進み、ニューラルプロセッサは、最大シナプス値とスパイク入力値とを乗じることによって実現される8150の値から、決定した再構築入力値を減算することによって再構築誤差を決定する。乗算演算及び減算演算の両方がインデックス単位で行われる。
【0195】
[213] ウィニングスパイキングニューロン回路(ニューロン1)のシナプス重み値に加え、(スパイク入力値を直接にではなく)再構築誤差を考慮した後、十分使用されていないスパイク8160を決定する。
【0196】
[214] 十分使用されていないスパイクは、正の再構築誤差及び最大シナプス重み値未満のシナプス重み値に対応するものだと決定される。例えばこの例では、8168、8170、8172、及び8174が十分使用されていないスパイクとして決定される。十分使用されていない重み8162は、負の再構築誤差及び正のシナプス重み値に対応するものだと決定される。例えばこの例では、8176、8178、8180、8182、8184、及び8186が十分使用されていない重みとして決定される。
【0197】
[215] 先に進み、シナプス重み値の4つの対がランダム/任意に決定され、各対はウィニングニューロン(ニューロン1)の2つのシナプス重み値、つまり1組の十分使用されていないスパイク(インデックス8、15、16、及び19内に示す8168、8170、8172、及び8174)から1つ、及び1組の十分使用されていない重み(インデックス5、6、12、14、21、及び23内に示す8176、8178、8180、8182、8184、及び8186)から1つのシナプス重み値を含む。
【0198】
[216] 先に進み、学習を実行するためにシナプス重み値が変更される。十分使用されていないスパイク/入力を引き起こしたシナプス重み値はインクリメントされるのに対し、十分使用されていない重みを引き起こしたシナプス重み値はデクリメントされる。その結果、シナプス重みインデックス8(8192)、15(8198)、16(8200)、及び19(8202)内に記憶されるシナプス重み値8164は「1」インクリメントされており、シナプス重みインデックス5(8188)、6(8190)、14(8196)、及び21(8204)のシナプス値は「1」デクリメントされている。4つのシナプス重み値がインクリメントされ、4つのシナプス重み値がデクリメントされるので、合計のシナプス重みはスパイクパケットの処理後も一定のままになる。インデックス12及び23(8194及び8206)において記憶されるシナプス重み値は変更されない。
【0199】
[217] 次のインスタンスで同じ入力スパイクパケット8150が更新されたシナプス重み値8164によって処理される場合、図面から認めることができるように、再構築誤差8166は先の再構築誤差8158と比較したとき低減する。これを総再構築誤差と述べることができ、総再構築誤差はシナプス重み値の絶対値の和であり、第1のインスタンスで入力スパイクを処理した後で136であり、同じスパイクパケットを処理した後の第2のインスタンスでは128であり、学習を明確に示している。
【0200】
[218] 上記で開示した実施形態によれば、ニューラルプロセッサは以下の要約したステップによって学習を行うように構成される。
【0201】
[219] 第1のステップで、ニューラルプロセッサは、層のウィニングスパイキングニューロン回路に関連するシナプスのマルチビットシナプス重み値と、ネットワークの少なくとも1つの追加のスパイキングニューロン回路に関連するシナプスのマルチビットシナプス重み値とを合算することにより、複数のマルチビット再構築入力値を決定する。好ましくは、追加のスパイキングニューロン回路はウィニングスパイキングニューロン回路とネットワークの同じ層のものである。
【0202】
[220] 次のステップで、ニューラルプロセッサは、層のウィニングスパイキングニューロン回路のシナプスのマルチビットシナプス重み値と、ネットワークの少なくとも1つの追加のスパイキングニューロン回路のシナプスのマルチビットシナプス重み値とを合算することにより、複数のマルチビット再構築入力値を決定する。
【0203】
[221] 次のステップで、ニューラルプロセッサは、マルチビットスパイク入力値からマルチビット再構築入力値を減算することにより、複数のマルチビット再構築誤差値を決定する。
【0204】
[222] 次のステップで、ニューラルプロセッサは、十分使用されていないスパイクを表すスパイクパケット内の第1のマルチビットスパイク入力値を決定し、第1のマルチビットスパイク入力値は第1の非ゼロの正の再構築マルチビット誤差値、及び最大シナプス値未満の値を有するウィニングスパイキングニューロン回路の第1のシナプスの第1のマルチビットシナプス重み値に対応する。
【0205】
[223] 次のステップで、ニューラルプロセッサは、十分使用されていない重みを表すスパイクパケット内の第2のマルチビットスパイク入力値を決定し、第2のマルチビットスパイク入力値は第2の非ゼロの負の再構築マルチビット誤差値、及びウィニングスパイキングニューロン回路の第2のシナプスの非ゼロの正の第2のマルチビットシナプス重み値に対応する。
【0206】
[224] 最後のステップで、ニューラルプロセッサは、第1のマルチビットシナプス重み値の値をインクリメントし、第2のマルチビットシナプス重み値の値をデクリメントする。
【0207】
[225] 図8(v)は、本発明の一実施形態による、マルチビットスパイク入力及びマルチビットシナプス重み値が使用される場合の、シナプス重みの変更技法を使用する学習の1つのインスタンスの例を示す。図8(v)が示すように、4ビットスパイク入力が各スパイク入力インデックス上に記憶されるのに対し、4ビットシナプス重み値が各スパイク入力インデックス上に記憶される。モデルが多くの異なる入力パケットにさらされるとき、入力パケット及びシナプス重みは広く変わる。この例では、各シナプスが「0から15」までのシナプス重み値を有することによって16個の状態を有し得ることに留意すべきである。同様に、入力は「0から15」までの値を有し得る。
【0208】
[226] 先の実施形態と同様に、この実施形態でのウィニングニューロンに関連するシナプスのシナプス重みの変更は、ネットワークの追加のニューロンに関連するシナプス重み値を考慮して実装される。但し、追加のニューロンはウィニングニューロンが属するネットワークの同じ層内にあることが好ましい。
【0209】
[227] 一部の事例では、受信されるスパイクパケットに基づいて高い膜電位を受信するニューロンが追加のニューロンとして考慮される。好ましくは、ウィニングニューロン及び追加のニューロンは受信されるスパイクパケットに基づいてスパイクしたニューロンである。この実施形態のニューロンのスパイキングは、好ましくはスパイキングニューロン回路が発火閾値に達するとき実装される。ウィニングニューロンは本発明の他の実施形態の中で開示する技法の何れか1つによって決定され得る。
【0210】
[228] 好ましくは、ウィニングニューロンは最大の(1番高い)膜電位値を有するニューロンとして決定されるのに対し、第1の追加のニューロン、第2の追加のニューロン等は2番目に高い、3番目に高い等の膜電位値を有するニューロンである。閾値に達したニューロンについてシナプス重み値が変更される。
【0211】
[229] 図8(v)は、複数のシナプスによりシナプス後ニューロンによって受信されるスパイクパケット8210を示す。
【0212】
[230] スパイク値、シナプス重み値、再構築入力、及び再構築誤差のそれぞれが別個のインデックス(不図示)上に記憶されるのでインデックス8208を参照目的で示す。それらの別個のインデックスは、入力スパイクパケットインデックス(スパイクインデックス)、シナプス重みインデックス(重みインデックス)、再構築入力インデックス、及び再構築誤差インデックスと呼ぶ。
【0213】
[231] 各インデックスがマルチビット(4ビット)のスパイク入力値を記憶するように、スパイクパケットは25個のスパイク入力インデックス(0から24)を含む。各マルチビットスパイク入力値は、ウィニングスパイキングニューロン回路のマルチビット(4ビット)シナプス重み値、追加のスパイキングニューロン回路のマルチビット(4ビット)シナプス重み値(追加のスパイキングニューロン回路が複数ある場合は複数の1ビットシナプス重み値)、マルチビット再構築入力、及びマルチビット再構築誤差に対応する。スパイクインデックス01、06、08、09、15、16、18、19、及び23は強調表示されて、スパイク値15、5、15、8、11、14、13、9、及び4を含むことを示す。スパイクパケット8210内の残りの位置はゼロ(例えば、スパイクの不在を示す)を含む。
【0214】
[232] 本実施形態はシナプス重みインデックス(0から24)ごとにマルチビット(4ビット)シナプス重み値を組み込む。シナプス重み8212が、ウィニングニューロン(ニューロン1)のための25個(0から24)のシナプス重みインデックスを含む。シナプス重みインデックス01、05、06、12、14、16、18、21、及び23がウィニングニューロンに関連するシナプスのシナプス重み値12、15、2、7、9、4、15、9、及び12をそれぞれ記憶するのに対し、残りのインデックスのシナプス重み値は「0」である。同様に、シナプス重みインデックス8214が25個のシナプス重みインデックスを記憶し、01、03、05、06、09、11、12、14、15、16、及び23が追加のニューロン(ニューロン2)に関連するシナプスのシナプス重み値3、4、1、9、15、12、13、4、6、7、及び11をそれぞれ記憶するのに対し、残りのインデックスのシナプス重み値は「0」である。
【0215】
[233] ニューラルプロセッサが(ウィニングニューロン及び追加のニューロンに関連する)スパイクパケット及びシナプス重み値を処理し、受信された入力スパイクパケット8210に基づく学習を反映するようにシナプス重みインデックスの一部におけるシナプス重み値を変更することにより、ウィニングスパイキングニューロン回路(ニューロン1)に関連するシナプスの4ビットシナプス重み値(8212)の変更を開始する。
【0216】
[234] 図8(v)の所与の例では、ニューラルプロセッサがウィニングスパイキングニューロン回路(ニューロン1)に関連するシナプスのシナプス重み値と追加のスパイキングニューロン回路(ニューロン2)に関連するシナプスのシナプス重み値とを合算することによって再構築入力(8216)を決定する。複数の追加のスパイキングニューロン回路も考慮することができ、同様に、2つ以上の追加のスパイキングニューロン回路のシナプス重み値とウィニングニューロンに関連するシナプスのシナプス重み値とを加算することにより、ニューラルプロセッサによって再構築入力が決定され得ることに留意すべきである。図8(v)で認めるべきであるように、加算演算はインデックス単位で行われる。
【0217】
[235] 先に進み、ニューラルプロセッサは、スパイク入力値8210から、決定した再構築入力値8216を減算することによって再構築誤差を決定する。図8(v)で認めるべきであるように、乗算演算及び減算演算の両方がインデックス単位で行われる。
【0218】
[236] ウィニングスパイキングニューロン回路(ニューロン1)のシナプス重み値に加え、(スパイク入力値を直接にではなく)再構築誤差を考慮した後、十分使用されていないスパイク8220を決定する。
【0219】
[237] 十分使用されていないスパイクは、正の再構築誤差及び最大シナプス重み値未満のシナプス重み値に対応するものだと決定される。例えばこの例では、8228、8230、8232、及び8234が十分使用されていないスパイクとして決定される。十分使用されていない重み8222は、負の再構築誤差及び正のシナプス重み値に対応するものだと決定される。例えばこの例では、8236、8238、8240、8242、8246、8248、及び8250が十分使用されていない重みとして決定される。
【0220】
[238] 先に進み、シナプス重み値の4つの対がランダム/任意に決定され、各対はウィニングニューロン(ニューロン1)の2つのシナプス重み値、つまり1組の十分使用されていないスパイク(インデックス8、15、16、及び19内に示す8228、8230、8232、及び8234)から1つ、及び1組の十分使用されていない重み(インデックス5、6、12、14、21、及び23内に示す8236、8238、8240、8242、8246、8248、及び8250)から1つのシナプス重み値を含む。
【0221】
[239] 先に進み、シナプス重み値の変更によるモデルの学習が実行される。十分使用されていないスパイク/入力を引き起こしたシナプス重み値はインクリメントされるのに対し、十分使用されていない重みを引き起こしたシナプス重み値はデクリメントされる。その結果、シナプス重みインデックス8(8256)、15(8262)、16(8264)、及び19(8268)内に記憶されるシナプス重み値8212は「1」インクリメントされており、シナプス重みインデックス1(8252)、6(8254)、14(8260)、及び21(8270)のシナプス値は「1」デクリメントされている。4つのシナプス重み値がインクリメントされ、4つのシナプス重み値がデクリメントされるので、合計のシナプス重み値はスパイクパケットの処理後も一定のままになる。インデックス13、18、及び24(8258、8266、及び8272)において記憶されるシナプス重み値は変更されない。
【0222】
[240] 次のインスタンスで同じ入力スパイクパケット8210が更新されたシナプス重み値8212によって処理される場合、図面から認めることができるように、再構築誤差8226は先の再構築誤差8218と比較したとき低減する。これを総再構築誤差と述べることができ、総再構築誤差はシナプス重み値の絶対値の和であり、第1のインスタンスで入力スパイクを処理した後で140であり、同じスパイクパケットを処理した後の第2のインスタンスでは132であり、学習を明確に示している。
【0223】
[241] 上記で開示した実施形態によれば、ニューラルプロセッサは以下のステップによって学習を行うように構成される。
【0224】
[242] 第1のステップで、ニューラルプロセッサは、層のウィニングスパイキングニューロン回路に関連するシナプスのマルチビットシナプス重み値と、層の少なくとも1つの追加のスパイキングニューロン回路に関連するシナプスのマルチビットシナプス重み値とを合算することにより、複数のマルチビット再構築入力値を決定する。
【0225】
[243] 次のステップで、ニューラルプロセッサは、層のウィニングスパイキングニューロン回路のシナプスのマルチビットシナプス重み値と、層の少なくとも1つの追加のスパイキングニューロン回路のシナプスのマルチビットシナプス重み値とを合算することにより、複数のマルチビット再構築入力値を決定する。
【0226】
[244] 次のステップで、ニューラルプロセッサは、マルチビットスパイク入力値からマルチビット再構築入力値を減算することにより、複数のマルチビット再構築誤差値を決定する。
【0227】
[245] 次のステップで、ニューラルプロセッサは、十分使用されていないスパイクを表すスパイクパケット内の第1のマルチビットスパイク入力値を決定し、第1のマルチビットスパイク入力値は第1の非ゼロの正の再構築マルチビット誤差値、及び最大シナプス値未満の値を有するウィニングスパイキングニューロン回路の第1のシナプスの第1のマルチビットシナプス重み値に対応する。
【0228】
[246] 次のステップで、ニューラルプロセッサは、十分使用されていない重みを表すスパイクパケット内の第2のマルチビットスパイク入力値を決定し、第2のマルチビットスパイク入力値は第2の非ゼロの負の再構築マルチビット誤差値、及びウィニングスパイキングニューロン回路の第2のシナプスの非ゼロの正の第2のマルチビットシナプス重み値に対応する。
【0229】
[247] 最後のステップで、ニューラルプロセッサは、第1のマルチビットシナプス重みの値をインクリメントし、第2のマルチビットシナプス重みの値をデクリメントする。
【0230】
[248]
【0231】
[249] 一部の実施形態では、ニューラルプロセッサは、それぞれの受信されるスパイクパケットに関してネットワークの層ごとに複数のニューロンが発火することを認めるように構成される。この構成は、ネットワークのニューロンに関して1つ又は複数の発火閾値を設定することによって実現される。受信される入力スパイクパケットに関してニューロンに関連する発火閾値が実現される場合は常に、ニューロンがスパイクするように構成される。
【0232】
[250] 図8(i)から図8(v)で開示した実施形態は、スパイクパケットの処理後にシナプス後ニューロン(又はウィニングニューロン)に関連するシナプスの総シナプス重み値が変わらないようなシナプス重みの変更技法を開示する。但し一部の実施形態では、ニューラルプロセッサはシナプス重みの変更を如何なる制約もなしに実装するように構成される。より詳細には、シナプス後ニューロン(又はウィニングニューロン)に関連するシナプスの総シナプス重み値が変わらないかどうかを考慮することなしに実装され得る。好ましくは、かかる手法はシナプス重み値がマルチビットである場合、及び膜電位が先に開示した方法2~4の何れかを使用して決定される場合に組み込まれる。
【0233】
[251] 一部の実施形態では、ネットワーク内のマルチビットシナプス重みを定め、ネットワークの学習時のその進化を定めるために以下のパラメータを使用する:
max-最大シナプス重み値(シナプスに割り当てられるビットの数によって、及びシナプス重みインデックスのそれぞれにおいて4ビット必要であることを定めるために設定される。他の例は、5ビットで32個までの最大シナプス重み値を定めることができ、6ビットで64個までの最大シナプス重み値を定めることができるものであり得る)
delta-各学習イベント時のシナプス重みの変化
init-初期シナプス重み(好ましくはこれらはランダム/任意に選ばれる重みである)
【0234】
[252] シナプス重みの変更についての上記で説明した技法は、関連する学習閾値に達した全てのニューロンについて行われ得る。但し、受信される入力スパイクパケットに関して複数のニューロンが関連する学習閾値に達する場合にシナプス重み値が複数のニューロンについて変更されるとき、かかる変更は複数のニューロンが同じ入力パケットを学習し、それによりネットワークの効率を下げることを引き起こす。このことから、1つのニューロンだけが特定のスパイクパケットを学習することをもたらす、1つのニューロンだけのシナプス重みの変更が好ましい。
【0235】
[253] 図8(iii)、図8(iv)、及び図8(v)による実施形態等の一部の実施形態では、シナプス重み値のインクリメント及び/又はデクリメントが2以上の整数値によるものであり得る。
【0236】
[254] 一部の実施形態では、スパイクパケットのバッチが処理されるとき総シナプス強度値が一定に保たれる。例えば複数のスパイクパケットが処理されるとき(正又は負の)追加の負荷値(debt value)が保たれ、処理の終了時にその負荷値は閾値(例えば0、20、-10)未満に保たれる。
【0237】
[255] 上記の実施形態では、ウィニングニューロンがスパイク入力を受信する元であるウィニングニューロンに関連するシナプスだけが、学習を反映するようにシナプス重みの変更についてのみ考慮される。
【0238】
[256] 一部の実施形態では、スパイク入力及びシナプス重み値が同じ範囲内にない場合、それらを同じ範囲内に導くために追加のステップが行われる。先の実施形態による図面はスパイク及びシナプス重みインデックス内の10進値を表すが、それらはハードウェア内ではバイナリ値として記憶され処理されることを当業者なら理解されよう。0と1の様々な種類の入力データを受信し、教師なし学習を行うことができるハードウェア内で学習が実装されるとき本発明は利点を提供する。
【0239】
[257] 図8(iii)による実施形態等の一部の実施形態では、層内のスパイキングニューロン回路それぞれの膜電位を決定するために先に開示した方法の種類1が使用される。
【0240】
[258] 図8図8(iii)から図8(v)による実施形態の中で記載した数学的演算は、神経線維上で利用可能な専用ハードウェアを使用して又はプロセッサ複合体上で実行されるソフトウェアにより、重み交換器113、重みインクリメンタ及びデクリメンタ150、ALU152、及びAND回路(107、108)、並びにカウンタ109の1つ又は複数を使用して実行され得ることを理解すべきである。
【0241】
[259] 好ましくは、図8(iii)~図8(v)による実施形態を実装するために、ALU152並びに重みインクリメンタ及びデクリメンタ150が使用される。
【0242】
[260] 好ましくは、図8による実施形態を実装するために、AND回路(107、108)、カウンタ109、及び重み交換器113が使用される。
【0243】
[261] 更なる実施形態は、ワンショット/低ショット/マルチショット学習を実現するために、教師あり又は半教師ありの学習モードで入力ストリームから特徴を学習し、かかる特徴の抽出を実行するように構成された、改良されたスパイキングニューラルネットワーク(SNN)のシステム、装置、デバイス、方法、及び/又はコンピュータプログラム製品の実施形態及び/又はその組み合わせ及び下位組み合わせを提供する。
【0244】
[262] ワンショット/低ショット学習は、ネットワークが非常に少ないトレーニングサンプルから新たなクラスを学習しようと試みるタスクである。有利には、開示する実施形態は一部の応用(例えば顔認識)においてスパイキングニューラルネットワークが5個未満のサンプルでさえ学習することを可能にする。
【0245】
[263] ワンショット/低ショット学習技法に関して開示する学習プロセスは、低電力の及び計算的に効率的でないデバイス上でローカルに(エッジ上で)実行され得るので計算的に軽量である。推論中の素晴らしい精度を実現することに完全に集中するのではなく、開示するワンショット/低ショット学習方法は制約された状況において妥当な精度を実現することに集中する。制約された状況は、信頼できるインターネットを利用できないこと、より単純なアルゴリズムしか実装することができないハードウェア、電池寿命が短いデバイス、低レイテンシを必要とするアプリケーション(自動走行車両における事故回避状況)等により得る。
【0246】
[264] 図9は、本発明の実施形態又は当技術分野で知られている他の任意の技法を使用して実装されトレーニングされる、4つの層を有するベーススパイキングニューラルネットワークを示す。
【0247】
[265] 本発明の実施形態を使用してネットワークを実装するために、神経線維がスパイキングニューロン回路L11、L12、L13、L14、L15、L21、L22、L23、L24、L31、L32、L33、L41、L42、及びL43を実装し、それらの関連するシナプスが図示の接続として実現されるようにニューラルネットワーク構成が定められる。
【0248】
[266] ニューロモルフィックシステム(例えばチップ)上にネットワークが実装されると、そのネットワークは一次トレーニングデータセットを使用してトレーニングされる。一次トレーニングデータセットはスパイクに変換され、そのスパイクが更にパケット化され、入力ソースI11、I12、I13、I14、I15、及びI16による入力としてシナプスを介して第1の層(L1)のスパイキングニューロン回路(L11、L12、L13、L14、L15)に提供される。第1の層(L1)のスパイキングニューロン回路(L11、L12、L13、L14、L15)は、発火要件(例えば関連する膜電位値が発火閾値に達すること)が満たされる場合に発火する。発火の結果として、第1の層(L1)のスパイキングニューロン回路(L11、L12、L13、L14、L15)からのスパイクが第2の層(L2)のスパイキングニューロン回路(L21、L22、L23、L24)によって受信される。同様に、スパイクは更なる層のスパイキングニューロン回路によって受信される。ネットワークのシナプス重み値は、先の実施形態の中で開示したシナプス重み値の変更技法の何れか1つを用いて変更される。シナプス重み値は1ビット又はマルチビットであり得る。
【0249】
[267] ベースニューラルネットワークが完全にトレーニングされると、そのベースニューラルネットワークは受信される入力データからのパターンを認識し、ネットワークの第4の(最後の)層内のニューロンによって実装される分類操作によって実現されるタスクを実行する。第1の層、第2の層、及び第3の層の中の各スパイキングニューロン回路がパターンを検出する。例えばL32は、自らがスパイクを受信する元である前のスパイキングニューロン回路L21、L22、L23、及びL24によって検出される少数の特徴に基づいてより広範なレベルの特徴を検出する。スパイキングニューロン回路L21、L22、L23、及びL24のそれぞれが第1の層(L1)内の前のスパイキングニューロン回路L11、L12、L13、及びL14からスパイクを受信するので、スパイキングニューロン回路L32によって検出される特徴は第1の層及び第2の層の全てのスパイキングニューロン回路によって認識される特徴に依存する。
【0250】
[268] 先の実施形態(図8(i)及び図8(ii))で記載したように、層の全てのスパイキングニューロン回路の膜電位値に基づき、受信されるパケットごとにネットワークの各層のウィニングスパイキングニューロン回路を選択した後でシナプス重み値の変更が行われる。図8(i)の80004の図面要素及び図8(ii)の80016/80022の図面要素がこの点に関するプロセスを例示する。
【0251】
[269] ベーススパイキングニューラルネットワークが実装され、完全にトレーニングされ、ユーザが一次トレーニングデータセットと異なる二次トレーニングデータセットを使用して追加のトレーニングを行う必要がある場合、(図10図15による)以下のトレーニング方法が提案される。これらの方法は半教師ありの及び教師ありの学習方法を利用する。
【0252】
[270] 更なる実施形態で使用される一次トレーニングデータ及び二次トレーニングデータは異なるが、幾らかの共通の特性を有する。例えば一次データセットは人間の顔を有する画像を有することができ、二次データセットは一次データセット内になかった人間の顔を有することができる。
【0253】
[271] 図10は、図9に示すベーススパイキングニューラルネットワークを変更することによって実装される変更済みニューラルネットワークを示す。ベースニューラルネットワークは、プロセッサ複合体(204)等の補足的プロセッサによって伝達される更新済みネットワーク構成パラメータをユーザによってニューラルプロセッサに与えることによって変更される。
【0254】
[272] 図示のように、変更済みニューラルネットワークは2つの補足的ニューロン(L44及びL45)を含み、各ニューロンは固有のクラスを表すことを学習する。図10に示すように最後の層内の追加のクラス(例えばL44(1002)及びL45(1004))と共に新たなネットワークを最初から実装し、それを完全なデータセット(一次トレーニングデータセット及び二次トレーニングデータセット)でトレーニングするのではなく、ベーススパイキングニューラルネットワークは2つの補足的スパイキングニューロン回路(L44及びL45)を含む変更済みスパイキングニューラルネットワークを実装するためにベースニューラルネットワークを使用して変更され、二次トレーニングデータセットだけを使用して更にトレーニングされる。有利には、このことはユーザの時間及び労力を節約し、継続的な学習を促進する。
【0255】
[273] この技法により、ニューロンL44及びL45に関連するシナプス(点線として示す)のシナプス重み値は、二次データセットを供給することによって実現される学習に基づいてのみ決定される。シナプス重み値は、先の実施形態の中で開示したシナプス重みの変更技法を使用して決定される。前のニューロンに関連するシナプスのシナプス重み値は保持/再利用される。この技法により、有利には更なるタスクを実行するために、一次トレーニングデータセットを使用してトレーニングされた層L1~L3の既存のニューロンによって実現される高レベル学習が、二次トレーニングデータセットを使用して補足的ニューロン(L44及びL45)によって実現される補足的学習と組み合わせられる。
【0256】
[274] 学習プロセスの間、二次トレーニングデータセットが、教師なし学習モードではなく教師ありモードの変更済みスパイキングニューラルネットワーク内に供給される。例えばユーザは、教師ありモード内で新たなクラスに関係する二次データをネットワークに供給する。ニューラルプロセッサが二次データを受信し、そのデータをスパイクに変換する。複数のスパイクパケットが形成され、更に処理される。各層は複数のスパイクパケットを受信する。第1の層は入力層からスパイクパケットを受信するのに対し、その後の層は前の層内のニューロンの発火によって生成されるスパイクの結果としてスパイクパケットを受信する。各層において、スパイクパケットのそれぞれを処理するとき、ウィニングスパイキングニューロン回路(ウィニングニューロン)としてスパイキングニューロン回路が1つだけ選択され、それに関連するシナプスについてシナプス重み値の変更が実行される。
【0257】
[275] この例では、ウィニングスパイキングニューロン回路がL44及びL45のニューロンから、層内の残りのニューロンの膜電位値を考慮せずに選択される。ウィニングスパイキングニューロン回路を選択するとき、ニューロンL41、L42、及びL43の膜電位値は決定されないか又は無視される。好ましくは、ニューラルプロセッサは、入力としての二次データ及び二次データが関係するクラス情報を受信する。ニューラルプロセッサが新たなクラスに関係する二次データを受信する場合、ニューラルプロセッサは学習のための補足的ニューロンをランダムに又は任意に選択する。学習中に層の1つ又は複数のスパイキングニューロンの膜電位値を考慮しない(無視する)ために、ユーザが典型的には二次トレーニングデータセットに関するクラス情報及び1つ又は複数の補足的スパイキングニューロン情報の少なくとも1つを提供する。
【0258】
[276] 一部の実施形態では、二次データセットの1つ又は複数の初期パケットを処理した後でニューロンが二次データの異なるクラスに割り当てられる。二次データセットの特定のクラスについて高い膜電位値を受信するニューロンはそのクラスに割り当てられる。
【0259】
[277] 一部の実施形態では、ネットワークに供給される二次データのクラスに関する補足的ニューロンがユーザによって選択される。
【0260】
[278] ワンショット学習の場合、その後のデータはモデルに供給されず、受信された第1のデータ(例えば顔を有する画像)に基づいて変更されるシナプス重み値が推論中に使用されるために確定(決定)される。
【0261】
[279] マルチショット学習の場合、同じクラスのための複数のデータ入力(例えば複数の画像)が補足的ニューロンをトレーニングするために供給される。
【0262】
[280] この実施形態で実行される学習方法は教師あり学習方法と呼ばれ、それはニューラルプロセッサが二次データ、二次データに関するクラス情報、及びそのクラスを認識するための1つだけの補足的ニューロンの学習の結果を受信するからである。
【0263】
[281] 図10に記載した実施形態は、最後の層内のベースネットワークのニューロン(例えばL41、L42、L43)が変更済みニューラルネットワーク内に保持されない場合も同様に実装できることを当業者なら理解されよう。
【0264】
[282] 図11は、図9に示すベーススパイキングニューラルネットワークを変更することによって実装される変更済みニューラルネットワークを示す。ベースニューラルネットワークは、更新済みネットワーク構成パラメータをユーザによってニューラルプロセッサに与えることによって変更される。
【0265】
[283] 図示のように、変更済みネットワークは同じクラス(換言すれば同じクラスの2つの下位クラス)を表すことを学習する2つの補足的ニューロンを含むのに対し、先のスパイキングニューロン回路L41、L42、及びL43は3つの固有のクラスを表す。図面が示すように、2つのスパイキングニューロン回路L44(1102)及びL44(1104)がベースニューラルネットワークを変更することによって変更済みスパイキングニューラルネットワーク内に追加で含められる。
【0266】
[284] 本実施形態では、ニューロンL44(1102)及びL44(1104)をトレーニングするために、図10による実施形態で記載した教師あり学習モードの代わりに半教師ありモードの学習方法を実行する。
【0267】
[285] この方法は半教師あり学習方法と呼ばれ、それはニューラルプロセッサが二次データ、二次データのクラス情報、及び同じクラスを認識するための2つ以上の補足的ニューロンの学習の更なる結果を受信するからである。
【0268】
[286] 学習中、前のスパイキングニューロン回路に関連するシナプスのシナプス重み値は変更されないのに対し、補足的スパイキングニューロン回路に関連するシナプスのシナプス重み値は変わることを認められる。ニューラルプロセッサは、二次データから生成されるスパイク、クラス情報、及びそのクラスを認識するための2つ以上の補足的ニューロンの学習の更なる結果を受信する。
【0269】
[287] 二次データに関係するスパイク(スパイクパケット)が処理されると、二次データに関係するスパイクに基づく学習を実現するためにスパイキングニューロン回路L44(1102)又はL44(1104)の1つだけがウィニングニューロンとして選択され、ウィニングニューロンについてシナプス重み値が変更される。マルチショット学習の場合、スパイキングニューロン回路L44(1102)及びL44(1104)のそれぞれが典型的には同じクラスの下位クラスを認識することを学習する。
【0270】
[288] 一部の実施形態では、例えばあるクラスに関係する二次データセットが多様であり、限られた共通の特徴を含まない場合、ニューラルプロセッサはユーザの関与なしに補足的スパイキングニューロン回路を採用するように構成される。例えば手書きの7の数字は中ほどの横棒ありで又はなしで書かれる場合があり、そのためどちらも見た目が異なり得る。どちらも同じクラス内の「7」として分類される必要があるので、そのような7の両方の外観を集合的に認識するように2つのニューロンL44(1002)及びL44(1104)をトレーニングすることができる。この使用事例は図10による実施形態でも実装できるが、本実施形態で実現可能な精度を提供しない可能性があることを理解すべきである。
【0271】
[289] 一部の実施形態では、プロセッサ複合体が、変更済みニューラルネットワークを実装するための構成パラメータを受信する。構成パラメータは、含められる補足的ニューロンの数及びクラスの認識を学習することを許可される補足的ニューロンの数を含み得る。
【0272】
[290] 一部の実施形態では、更に変更されたネットワークを実現するために、補足的スパイキングニューロン回路を既に存在する層内に含めることにより、又はそれらを1つ若しくは複数の追加の層内に与えることにより、図10及び図11に示す変更済みベーススパイキングニューロン回路を更に変更しトレーニングすることができる。更に変更されたネットワークをトレーニングするために半教師あり又は教師あり学習技法が使用される。
【0273】
[291] 補足的スパイキングニューロン回路がベースネットワークのN番目の(最後の)層内に含められる場合、パケタイザがN-1層のスパイキングニューロン回路のパケット化操作を変更する。例えば図12に示すように、各ニューロンL31、L32、及びL33が2つの追加のニューロンに接続されるので、層L3(N-1層)の各スパイキングニューロンL31、L32、及びL33のパケット化操作が1202から1204に変更される。重要なことに、学習を実装するために、各スパイク値はシナプス重み値に1対1のマッピングによってマップされる。したがってパケタイザは、パケット内に3つのスパイク値(換言すれば活性化)ではなく5つのスパイク値(換言すれば活性化)を有するようにパケット化操作を変更する。例えば更新されたパケットのスパイク値(活性化)0、12、3、4、及び2が、シナプス重み値0、5、10、13、及び0をそれぞれ有するシナプスにわたって送信される。図面要素1206及び1208から見て取れるように、追加のシナプス重み値がメモリ内に記憶される必要がある。
【0274】
[292] 図13は、図9に示すベーススパイキングニューラルネットワークを変更することによって実装される変更済みニューラルネットワークを示す。この変更済みネットワークは、5つの補足的ニューロンL44(1302)、L45(1304)、L46(1306)、L46(1308)、及びL46(1310)を含む。既存の1つのニューロンL41が保持され、2つのニューロンL42及びL43がベースネットワークから除去される。ニューロンL46(1306)、L46(1308)、及びL46(1310)は同じクラス(換言すれば同じクラスの3つの下位クラス)を表すようにトレーニングされるのに対し、ニューロンL41、L44、及びL45は固有のクラスを表すようにトレーニングされる。スパイキングニューロン回路L44及びL45に関連するシナプスのシナプス重み値は図10による実施形態で記載した教師あり学習を使用して決定され、スパイキングニューロン回路L46(1306)、L46(1308)、及びL46(1310)に関連するシナプスのシナプス重み値は図11による実施形態で記載した半教師あり学習を使用して決定される。残りのニューロンに関連するシナプスのシナプス重み値は変更されない。
【0275】
[293] 図14は、図9に示すベーススパイキングニューラルネットワークを変更することによって実装される変更済みニューラルネットワークを示す。この変更済みニューラルネットワークは、ベースネットワークからの最後の層内のスパイキングニューロン回路の何れも保持されない側面においてのみ図13の先の実施形態と異なる。ニューロンL44及びL45は図10で記載した教師あり学習モードを使用してトレーニングされるのに対し、ニューロンL46(1406)、L46(1408)、及びL46(1410)は図11で記載した半教師あり学習モードを使用してトレーニングされる。
【0276】
[294] 図15は、図9に示すベーススパイキングニューラルネットワークを変更することによって実装される変更済みニューラルネットワークを示す。この変更済みニューラルネットワークは、層L1~L4の全てのニューロンが保持され、ニューロンL51(1502)、L52(1504)、L52(1506)、L52(1508)、及びL53(1510)を含む補足的ニューロンが(L4の代わりに)層L5内に追加される側面において図10図14で記載した先の実施形態と異なる。ニューロンL51(1502)及びL53(1510)は図10で記載した教師あり学習モードを使用してトレーニングされるのに対し、ニューロンL52(1504)、L52(1506)、及びL52(1508)は図11で記載した半教師あり学習モードを使用してトレーニングされる。
【0277】
[295] 図10図15は簡単な例によって学習プロセスを記載することを当業者なら理解されよう。実際の応用では、各層内のニューロンの数、補足的ニューロンの数、及びクラスごとの補足的ニューロンの数は異なり、それらは好ましくはネットワーク構成パラメータを使用して定められる。
【0278】
[296] 一部の実施形態では、ベースニューラルネットワークが、層のスパイキングニューロン回路から別の層のスパイキングニューロン回路への1つ又は複数のフィードバック接続を含む。
【0279】
[297] 一部の実施形態では、ベースネットワークが本発明で開示していない技法を使用してトレーニングされる。例えば本発明の実施形態で開示する様々な技法による変更及びトレーニングの前に、従来の非スパイキング技法を使用して実装されトレーニングされる従来の非スパイキングベースネットワークが図9に示すスパイキングベースニューラルネットワークに変換され得る。
【0280】
[298] 一部の実施形態では、従来の非スパイキングベースネットワークが従来のトレーニング方法を使用してオフチップで実装されトレーニングされる。幾つかの非スパイキングベースネットワークパラメータが決定され、量子化プロセスを使用してスパイキングベースネットワークパラメータに変換される。更に進み、決定したベーススパイキングネットワークパラメータを使用してチップ上のベーススパイキングネットワークを実装する。最後に、ベーススパイキングネットワークが先の実施形態の中で開示した技法を使用して変更されトレーニングされる。
【0281】
[299] 図16は、マルチショット学習方法を使用して実装され、トレーニングデータセットを使用して更にトレーニングされるスパイキングニューラルネットワークを示す。先の実施形態の中で開示したワンショット/低ショット学習方法の目的はより少数のトレーニングデータを用いるベースニューラルネットワークの前の学習を利用する学習を実現することだが、本実施形態のスパイキングニューラルネットワークは最初からトレーニングされる。このスパイキングニューラルネットワークは、入力層及び出力(最後の)層L1を有する。出力層L1は、ニューロンC1(1602)、C2(1604)、C2(1606)、C2(1608)、及びC3(1610)を含む。ニューロンC1(1602)及びC3(1610)は、図10によって記載した実施形態のように教師あり学習方法を使用してトレーニングされる。ニューロンC2(1604)、C2(1606)、及びC2(1608)は、図11に記載した実施形態のように半教師あり学習方法を使用してトレーニングされる。
【0282】
[300] 対応するクラスのトレーニングデータセットに基づいてネットワークが学習するとき、全てのニューロンに関連するシナプス重み値が変更される。ネットワークが完全にトレーニングされると、推論中、ニューロンC1(1602)が第1のクラスに関係するデータを分類し、ニューロンC2(1604)、C2(1606)、及びC2(1608)が第2のクラスに関係するデータを分類し、C3(1610)が第3のクラスに関係するデータを分類することができる。
【0283】
[301] 図16に示すスパイキングニューラルネットワーク内に追加の層が加えられてもよく、本発明の実施形態を使用して更にトレーニングされ得ることを当業者なら理解すべきである。
【0284】
[302] 一部の実施形態では、ニューラルプロセッサは、トレーニング中にネットワーク内の更に多くの補足的ニューロンを構成することにより、又はネットワーク内の不要な補足的ニューロンを構成解除することにより、補足的ニューロンの数及びクラスごとの補足的ニューロンの数を動的に最適化する。
【0285】
[303] 補足的ニューロンに関連するシナプスのシナプス重み値は(1ビット又はマルチビットの)バイナリ値のものであり、浮動小数点(10進)値ではないことを理解すべきである。先の実施形態では、任意の浮動小数点値を便利に扱うことができるソフトウェアを使用してシナプス重み値又は特徴ベクトルを決定するのではなく、シナプス重み値がバイナリ(1ビット又はマルチビット値)によって設定され決定(変更)される。この実装のやり方は他のソフトウェアアルゴリズムの実装がハードウェア(又はチップ)上で実行されることを許可しないが、その低電力の要件を理由に有利である。
【0286】
[304] 本発明によれば、複数のスパイキングニューロンのそれぞれに関連するシナプスの入力データ及びシナプス重み値に基づき、ニューラルネットワークの1つ又は複数のスパイキングニューラルネットワーク層からのニューラルネットワークのスパイキングニューラルネットワーク層内にある複数のスパイキングニューロンのそれぞれについて膜電位値を決定し、ニューラルネットワークの学習関数を示す対応する学習閾値にその膜電位値が達したニューラルネットワークのスパイキングニューラルネットワーク層内の複数のスパイキングニューロンから1組のスパイキングニューロンを決定し、入力データに関してニューラルネットワークのスパイキングニューラルネットワーク層内の1組のスパイキングニューロンからウィニングスパイキングニューロンを決定し、入力データに基づくニューラルネットワークの学習関数を反映するように、ウィニングスパイキングニューロンに関連する1つ又は複数のシナプスについてシナプス重み値の変更を行うように構成される、ニューラルネットワークの1つ又は複数のスパイキングニューラルネットワーク層のためのニューラルプロセッサを含む、システムが提供される。
【0287】
[305] 1つ又は複数の実施形態では、このシステムは、入力データに基づいて生成される1つ又は複数のスパイクによって形成される複数のスパイク入力値を含むスパイクパケットを生成するように構成されるパケタイザであって、スパイクパケット内の各スパイク入力値は複数のシナプス内のシナプスのシナプス重み値に対応する、パケタイザと、1つ又は複数のスパイク及びニューラルネットワーク構成に基づくタスクを実行するための、複数のスパイキングニューロンに関連する複数のスパイキングニューロン回路を含むニューラルプロセッサを含む再構成可能神経線維と、ニューラルネットワーク構成を含むメモリであって、ニューラルネットワーク構成は電位アレイ及び複数のシナプスを含み、ニューラルネットワーク構成は1つ又は複数のスパイキングニューラルネットワーク層内の複数のスパイキングニューロン回路と複数のシナプスとの間の接続を定め、電位アレイは複数のスパイキングニューロン回路の膜電位値を含み、複数のシナプスは対応するシナプス重み値を有する、メモリとを更に含む。
【0288】
[306] 1つ又は複数の実施形態では、スパイクパケットが複数のインデックスを含むことができ、各インデックスは1つ又は複数のスパイクビットを記憶し、各スパイクビットはスパイク入力値を表し、スパイクビットのそれぞれは複数のシナプスの中のシナプスに対応する。
【0289】
[307] 1つ又は複数の実施形態では、ウィニングスパイキングニューロンに関連するシナプスが複数のインデックス内に記憶され、各インデックスは1つ又は複数のシナプス重みビットを記憶し、1つ又は複数のシナプス重みビットのそれぞれはシナプス重み値を表す。
【0290】
[308] 1つ又は複数の実施形態では、各シナプス重み値が、マルチビットデジタル値によってそれぞれ表されるゼロ及び正の整数値、マルチビットデジタル値によってそれぞれ表される正の整数値、マルチビットデジタル値によってそれぞれ表される正の整数値及び負の整数値、並びにマルチビットデジタル値によってそれぞれ表される負の整数値、ゼロ、及び正の整数値の1つを含む値の群から選択される。
【0291】
[309] 1つ又は複数の実施形態では、ニューラルプロセッサは、生成されるスパイクパケットに基づく学習を行うために、ウィニングスパイキングニューロンに関連する複数のシナプスからの第1のシナプスのシナプス重み値をインクリメントすること、及びウィニングスパイキングニューロンに関連する複数のシナプスからの第2のシナプスのシナプス重み値をデクリメントすることの少なくとも1つによってシナプス重み値の変更を行うように構成される。
【0292】
[310] 1つ又は複数の実施形態では、ニューラルプロセッサは、シナプス重み値の変更前に決定される第1のシナプスに関連する第1のシナプスベクトル長と、シナプス重み値の変更後に決定される第2のシナプスに関連する第2のシナプスベクトル長とが同様の値であるようにシナプス重み値の変更を行うよう構成される。
【0293】
[311] 本発明の様々な実施形態は、スパイキングニューラルネットワークを実装しトレーニングするための複数の選択肢をユーザに与えることを当業者なら理解されよう。但し、実装するための応用及び資源の可用性及び制約に応じて、ネットワークを実装するために本発明で開示した1つ又は複数の技法が組み込まれ得る。
【0294】
[312] 図9から図16を用いて記載した実施形態のシナプス重み値の変更は、本発明の先の実施形態の中で開示したシナプス重みの変更技法の何れか1つを使用して実行され得ることを当業者なら理解されよう。
【0295】
[313] 添付の特許請求の範囲及び本発明の先の説明において、表現される言語又は必然的推断により文脈上他の意味に解すべき場合を除き、「含む(comprise)」という言葉又は「含む(comprises)」若しくは「含んでいる(comprising)」等の異体は包含的な意味で、即ち本発明の様々な実施形態の中の更なる特徴の存在又は追加を除外するためではなく述べられた特徴の存在を指定するために使用される。
【0296】
[314] 本明細書で従来技術の任意の刊行物を参照するとき、かかる参照は豪州又は他の任意の国においてその刊行物が当技術分野における周知の一般知識の一部を形成することを容認することにはならないことを理解すべきである。
【0297】
[315] 本発明の趣旨及び範囲から逸脱することなしに多くの変更が加えられてもよいことを本発明の当業者なら理解されよう。
【符号の説明】
【0298】
102 スパイクデコーダ回路
107 AND回路
109 カウンタ
113 重み交換器
150 重みインクリメンタ及びデクリメンタ
152 論理演算ユニット
204 プロセッサ複合体
224 メモリ
8092 インデックス
8096 スパイクパケット
8098 シナプス重み
8100 シナプス重み
8106 十分使用されていないスパイク
8108 十分使用されていない重み
8110 シナプス重み値
8148 インデックス
8150 スパイクパケット
8152 シナプス重み
8154 シナプス重みインデックス
8156 構築入力
8158 構築誤差
8160 十分使用されていないスパイク
8162 十分使用されていない重み
8164 シナプス重み値
8166 構築誤差
8208 インデックス
8210 スパイクパケット
8212 シナプス重み
8214 シナプス重みインデックス
8216 構築入力
8218 構築誤差
8220 十分使用されていないスパイク
8222 十分使用されていない重み
8226 構築誤差
図1
図2A
図2B
図3
図4
図5
図6A
図6B
図7
図8
図8i
図8ii
図8iii
図8iv
図8v
図9
図10
図11
図12
図13
図14
図15
図16
【外国語明細書】