[0028]添付の図面に関連して以下に示される詳細な説明は、様々な構成の説明として意図されたものであり、本明細書において説明される概念が実現され得る唯一の構成を表すことを意図されるものではない。詳細な説明は、様々な概念の完全な理解を提供する目的で、具体的な詳細を含む。しかしながら、これらの概念がこれらの具体的な詳細なしで実施され得ることは、当業者にとっては明らかであろう。いくつかの事例では、よく知られている構造および構成要素が、そのような概念を曖昧にするのを避けるために、ブロック図形式で示される。
[0029]本教示に基づいて、本開示の範囲は、本開示の任意の他の態様とは無関係に実装されるにせよ、本開示の任意の他の態様と組み合わされるにせよ、本開示のいかなる態様をもカバーするものであることを、当業者なら諒解されたい。たとえば、記載される態様をいくつ使用しても、装置は実装され得、または方法は実施され得る。さらに、本開示の範囲は、記載される本開示の様々な態様に加えてまたはそれらの態様以外に、他の構造、機能、または構造および機能を使用して実施されるそのような装置または方法をカバーするものとする。開示する本開示のいずれの態様も、請求項の1つまたは複数の要素によって実施され得ることを理解されたい。
[0030]「例示的」という単語は、本明細書では「例、事例、または例示の働きをすること」を意味するために使用される。「例示的」として本明細書で説明するいかなる態様も、必ずしも他の態様よりも好ましいまたは有利であると解釈されるべきであるとは限らない。
[0031]本明細書では特定の態様について説明するが、これらの態様の多くの変形および置換は本開示の範囲内に入る。好ましい態様のいくつかの利益および利点が説明されるが、本開示の範囲は特定の利益、使用、または目的に限定されるものではない。むしろ、本開示の態様は、様々な技術、システム構成、ネットワーク、およびプロトコルに広く適用可能であるものとし、そのうちのいくつかを例として図および好ましい態様についての以下の説明で示す。発明を実施するための形態および図面は、本開示を限定するものではなく説明するものにすぎず、本開示の範囲は添付の特許請求の範囲およびそれの均等物によって定義される。
(例示的なニューラルシステム、トレーニングおよび動作)
[0032]図1は、本開示のいくつかの態様による、複数のレベルのニューロンをもつ例示的な人工ニューラルシステム100を示す。ニューラルシステム100は、シナプス結合のネットワーク104(すなわち、フィードフォワード結合)を介してニューロンの別のレベル106に結合されたニューロンのあるレベル102を有し得る。簡単のために、図1には2つのレベルのニューロンのみが示されているが、ニューラルシステムには、より少ないまたはより多くのレベルのニューロンが存在し得る。ニューロンのいくつかは、ラテラル結合を介して同じ層の他のニューロンに結合し得ることに留意されたい。さらに、ニューロンのいくつかは、フィードバック結合を介して前の層のニューロンに戻る形で結合し得る。
[0033]図1に示すように、レベル102における各ニューロンは、前のレベル(図1に図示せず)のニューロンによって生成され得る入力信号108を受信し得る。信号108は、レベル102のニューロンの入力電流を表し得る。この電流は、膜電位を充電するためにニューロン膜上に蓄積され得る。膜電位がそれのしきい値に達すると、ニューロンは、発火し、ニューロンの次のレベル(たとえば、レベル106)に転送されるべき出力スパイクを生成し得る。いくつかのモデリング手法では、ニューロンは、信号をニューロンの次のレベルに継続的に転送し得る。この信号は、典型的には膜電位の関数である。そのような挙動は、以下で説明するものなどのアナログおよびデジタル実装形態を含むハードウェアおよび/またはソフトウェアでエミュレートまたはシミュレートされ得る。
[0034]生物学的ニューロンでは、ニューロンが発火するときに生成される出力スパイクは、活動電位と呼ばれる。電気信号は、約100mVの振幅と約1msの持続時間とを有する比較的急速で、一時的な神経インパルスである。一連の結合されたニューロンを有するニューラルシステムの特定の実施形態(たとえば、図1におけるあるレベルのニューロンから別のレベルのニューロンへのスパイクの転送)では、あらゆる活動電位が基本的に同じ振幅と持続時間とを有するので、信号における情報は、振幅によってではなく、スパイクの周波数および数、またはスパイクの時間によってのみ表され得る。活動電位によって搬送される情報は、スパイク、スパイクしたニューロン、および他の1つまたは複数のスパイクに対するスパイクの時間によって決定され得る。以下で説明するように、スパイクの重要性は、ニューロン間の接続に適用される重みによって決定され得る。
[0035]図1に示されるように、ニューロンのあるレベルから別のレベルへのスパイクの移動は、シナプス結合(または、単純に「シナプス」)104のネットワークを介して達成され得る。シナプス104に関して、レベル102のニューロンはシナプス前ニューロンと考えられ得、レベル106のニューロンはシナプス後ニューロンと考えられ得る。シナプス104は、レベル102のニューロンから出力信号(すなわち、スパイク)を受信して、調整可能なシナプスの重み
に応じてそれらの信号をスケーリングすることができ、上式で、Pはレベル102のニューロンとレベル106のニューロンとの間のシナプス結合の総数であり、ニューロンレベルの指標である。たとえば、図1の例では、iはニューロンレベル102を表し、i+1は、ニューロンレベル106を表す。さらに、スケーリングされた信号は、レベル106における各ニューロンの入力信号として合成され得る。レベル106におけるあらゆるニューロンは、対応する合成された入力信号に基づいて、出力スパイク110を生成し得る。出力スパイク110は、シナプス結合の別のネットワーク(図1には図示せず)を使用して、別のレベルのニューロンに転送され得る。
[0036]生物学的シナプスは、シナプス後ニューロンにおける興奮性活動または抑制性(過分極化)活動のいずれかを調停することができ、ニューロン信号を増幅する役目を果たすことができる。興奮性信号は、膜電位を脱分極する(すなわち、静止電位に対して膜電位を増加させる)。しきい値を超えて膜電位を脱分極するために十分な興奮性信号が一定の時間期間内に受信された場合、シナプス後ニューロンに活動電位が生じる。対照的に、抑制性信号は一般に、膜電位を過分極する(すなわち、低下させる)。抑制性信号は、十分に強い場合、興奮性信号のすべてを相殺し、膜電位がしきい値に達するのを防止することができる。シナプス興奮を相殺することに加えて、シナプス抑制は、自然に活発なニューロンに対して強力な制御を行うことができる。自然に活発なニューロンは、たとえば、それのダイナミクスまたはフィードバックに起因するさらなる入力なしにスパイクするニューロンを指す。これらのニューロンにおける活動電位の自然な生成を抑圧することによって、シナプス抑制は、一般にスカルプチャリングと呼ばれる、ニューロンの発火のパターンを形成することができる。様々なシナプス104は、望まれる挙動に応じて、興奮性シナプスまたは抑制性シナプスの任意の組合せとして働き得る。
[0037]ニューラルシステム100は、汎用プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)もしくは他のプログラマブル論理デバイス(PLD)、個別ゲートもしくはトランジスタ論理、個別ハードウェア構成要素、プロセッサによって実行されるソフトウェアモジュール、またはそれらの任意の組合せによってエミュレートされ得る。ニューラルシステム100は、たとえば画像およびパターン認識、機械学習、モータ制御、および似ているなど、かなりの適用範囲において利用され得る。ニューラルシステム100における各ニューロンは、ニューロン回路として実装され得る。出力スパイクを開始するしきい値まで充電されるニューロン膜は、たとえば、そこを通って流れる電流を積分するキャパシタとして実装され得る。
[0038]一態様では、キャパシタは、ニューロン回路の電流積分デバイスとして除去され得、その代わりにより小さいメモリスタ(memristor)要素が使用され得る。この手法は、ニューロン回路において、ならびにかさばるキャパシタが電流積分器として利用される様々な他の適用例において適用され得る。さらに、シナプス104の各々は、メモリスタ要素に基づいて実装され得、シナプス重みの変化は、メモリスタ抵抗の変化に関係し得る。ナノメートルの特徴サイズのメモリスタを用いると、ニューロン回路およびシナプスの面積が大幅に低減され得、それによって、大規模なニューラルシステムハードウェア実装形態の実装がより実用的になり得る。
[0039]ニューラルシステム100をエミュレートするニューラルプロセッサの機能は、ニューロン間の結合の強さを制御し得る、シナプス結合の重みに依存し得る。シナプス重みは、パワーダウン後にプロセッサの機能を維持するために、不揮発性メモリに記憶され得る。一態様では、シナプス重みメモリは、主たるニューラルプロセッサチップとは別個の外部チップ上に実装され得る。シナプス重みメモリは、交換可能メモリカードとしてニューラルプロセッサチップとは別個にパッケージ化され得る。これは、ニューラルプロセッサに多様な機能を提供することができ、特定の機能は、ニューラルプロセッサに現在取り付けられているメモリカードに記憶されたシナプス重みに基づき得る。
[0040]図2は、本開示のいくつかの態様による、計算ネットワーク(たとえば、ニューラルシステムまたはニューラルネットワーク)の処理ユニット(たとえば、ニューロンまたはニューロン回路)202の一例200を示す。たとえば、ニューロン202は、図1のレベル102のニューロンおよび106のニューロンのうちのいずれかに対応し得る。ニューロン202は、ニューラルシステムの外部にある信号、または同じニューラルシステムの他のニューロンによって生成された信号、またはその両方であり得る、複数の入力信号2041〜204N(X1〜XN)を受信し得る。入力信号は、実数値または複素数値の、電流、コンダクタンス、または電圧であり得る。入力信号は、固定小数点表現または浮動小数点表現をもつ数値を備え得る。これらの入力信号は、調整可能なシナプス重み2061〜206N(w1〜wN)に従って信号をスケーリングするシナプス結合を通してニューロン202に伝えられ得、Nはニューロン202の入力接続の総数であり得る。
[0041]ニューロン202は、スケーリングされた入力信号を合成し、合成された、スケーリングされた入力を使用して、出力信号208(すなわち、信号y)を生成し得る。出力信号208は、実数値または複素数値の、電流、コンダクタンス、または電圧であり得る。出力信号は、固定小数点表現または浮動小数点表現をもつ数値であり得る。出力信号208は、次いで、同じニューラルシステムの他のニューロンへの入力信号として、または同じニューロン202への入力信号として、またはニューラルシステムの出力として伝達され得る。
[0042]処理ユニット(ニューロン)202は電気回路によってエミュレートされ得、それの入力接続および出力接続は、シナプス回路をもつ電気接続によってエミュレートされ得る。処理ユニット202ならびにそれの入力接続および出力接続はまた、ソフトウェアコードによってエミュレートされ得る。処理ユニット202はまた、電気回路によってエミュレートされ得るが、それの入力接続および出力接続はソフトウェアコードによってエミュレートされ得る。一態様では、計算ネットワーク中の処理ユニット202はアナログ電気回路であり得る。別の態様では、処理ユニット202はデジタル電気回路であり得る。さらに別の態様では、処理ユニット202は、アナログ構成要素とデジタル構成要素の両方をもつ混合信号電気回路であり得る。計算ネットワークは、上述の形態のいずれかにおける処理ユニットを含み得る。そのような処理ユニットを使用した計算ネットワーク(ニューラルシステムまたはニューラルネットワーク)は、たとえば画像およびパターン認識、機械学習、モータ制御など、かなりの適用範囲において利用され得る。
[0043]ニューラルネットワークをトレーニングする過程で、シナプス重み(たとえば、図1の重み
および/または図2の重み206
1〜206
N)がランダム値により初期化され得、学習ルールに従って増加または減少し得る。学習ルールの例は、これに限定されないが、スパイクタイミング依存可塑性(STDP)学習ルール、Hebb則、Oja則、Bienenstock−Copper−Munro(BCM)則等を含むことを当業者は理解するだろう。いくつかの態様では、重みは、2つの値のうちの1つに安定または収束し得る(すなわち、重みの双峰分布)。この効果が利用されて、シナプス重みごとのビット数を低減し、シナプス重みを記憶するメモリとの間の読取りおよび書込みの速度を上げ、シナプスメモリの電力および/またはプロセッサ消費量を低減し得る。
(シナプスタイプ)
[0044]ニューラルネットワークのハードウェアおよびソフトウェアモデルでは、シナプス関係機能の処理がシナプスタイプに基づき得る。シナプスタイプは、非塑性シナプス(non-plastic synapse)(重みおよび遅延の変化がない)、可塑性シナプス(重みが変化し得る)、構造遅延可塑性シナプス(重みおよび遅延が変化し得る)、完全可塑性シナプス(重み、遅延および結合性が変化し得る)、およびそれの変形(たとえば、遅延は変化し得るが、重みまたは結合性の変化はない)を備え得る。これの利点は、処理が再分割され得ることである。たとえば、非塑性シナプスは、可塑性機能を実行する(またはそのような機能が完了するのを待つ)必要がない場合がある。同様に、遅延および重み可塑性は、一緒にまたは別々に、順にまたは並列に動作し得る動作に再分割され得る。異なるタイプのシナプスは、適用される異なる可塑性タイプの各々の異なるルックアップテーブルまたは式およびパラメータを有し得る。したがって、本方法は、シナプスのタイプについての関連する表、式、またはパラメータにアクセスする。
[0045]スパイクタイミング依存構造可塑性がシナプス可塑性とは無関係に実行され得るという事実のさらなる含意がある。構造可塑性(すなわち、遅延量の変化)は前後スパイク時間差(pre-post spike time difference)の直接関数であり得るので、構造可塑性が重みの大きさに変化がない場合(たとえば、重みが最小値または最大値に達したか、あるいはそれが何らかの他の理由により変更されない場合)でも実行され得る。代替的に、構造可塑性は、重み変化量に応じて、または重みもしくは重み変化の限界に関係する条件に基づいて設定され得る。たとえば、重み変化が生じたとき、または重みが最大値に達するのではなく、重みがゼロに達した場合のみ、シナプス遅延が変化し得る。しかしながら、これらのプロセスが並列化され、メモリアクセスの数および重複を低減し得るように、独立した機能を有することが有利であり得る。
(シナプス可塑性の決定)
[0046]神経可塑性(または単に「可塑性」)は、脳内のニューロンおよびニューラルネットワークがそれらのシナプス結合と挙動とを新しい情報、感覚上の刺激、発展、損傷または機能不全に応答して変える能力である。可塑性は、生物学における学習および記憶にとって、また計算論的神経科学およびニューラルネットワークにとって重要である。(たとえば、Hebb則理論による)シナプス可塑性、スパイクタイミング依存可塑性(STDP)、非シナプス可塑性、活性依存可塑性、構造可塑性および恒常的可塑性など、様々な形の可塑性が研究されている。
[0047]STDPは、ニューロン間のシナプス結合の強さを調整する学習プロセスである。結合強度は、特定のニューロンの出力スパイクおよび受信入力スパイク(すなわち、活動電位)の相対的タイミングに基づいて調整される。STDPプロセスの下で、あるニューロンに対する入力スパイクが、平均して、そのニューロンの出力スパイクの直前に生じる傾向がある場合、長期増強(LTP)が生じ得る。その場合、その特定の入力はいくらか強くなる。一方、入力スパイクが、平均して、出力スパイクの直後に生じる傾向がある場合、長期抑圧(LTD)が生じ得る。その場合、その特定の入力はいくらか弱くなるので、「スパイクタイミング依存可塑性」と呼ばれる。したがって、シナプス後ニューロンの興奮の原因であり得る入力は、将来的に寄与する可能性がさらに高くなる一方、シナプス後スパイクの原因ではない入力は、将来的に寄与する可能性が低くなる。結合の初期セットのサブセットが残る一方で、その他の部分の影響がわずかなレベルまで低減されるまで、このプロセスは続く。
[0048]ニューロンは一般に出力スパイクを、当該ニューロンの入力の多くが短い期間内に生じる、すなわち、出力をもたらすのに十分な累積があるときに生成するので、通常残っている入力のサブセットは、時間的に相関する傾向のあった入力を含む。さらに、出力スパイクの前に生じる入力は強化されるので、最も早い十分に累積的な相関指示を提供する入力が結局、ニューロンへの最終入力となる。
[0049]STDP学習ルールは、シナプス前ニューロンのスパイク時間tpreとシナプス後ニューロンのスパイク時間tpostとの間の時間差(すなわち、t=tpost−tpre)に応じて、シナプス前ニューロンをシナプス後ニューロンに結合するシナプスのシナプス重みを効果的に適合させ得る。STDPの通常の公式化は、時間差が正である(シナプス前ニューロンがシナプス後ニューロンの前に発火する)場合にシナプス重みを増加させ(すなわち、シナプスを増強し)、時間差が負である(シナプス後ニューロンがシナプス前ニューロンの前に発火する)場合にシナプス重みを減少させる(すなわち、シナプスを抑制する)ことである。
[0050]STDPプロセスでは、経時的なシナプス重みの変化は通常、以下の式によって与えられるように、指数関数的減衰を使用して達成され得る。
ここで、k
+およびk
-τsign(Δt)はそれぞれ、正の時間差および負の時間差の時定数であり、a
+およびa
-は対応するスケーリングの大きさであり、μは正の時間差および/または負の時間差に適用され得るオフセットである。
[0051]図3は、STDPによる、シナプス前スパイクおよびシナプス後スパイクの相対的タイミングに応じたシナプス重み変化の例示的なグラフ図300を示す。シナプス前ニューロンがシナプス後ニューロンの前に発火する場合、グラフ300の部分302に示すように、対応するシナプス重みは増加し得る。この重み増加は、シナプスのLTPと呼ばれ得る。グラフ部分302から、シナプス前スパイク時間とシナプス後スパイク時間との間の時間差に応じて、LTPの量がほぼ指数関数的に減少し得ることが観測され得る。グラフ300の部分304に示すように、発火の逆の順序は、シナプス重みを減少させ、シナプスのLTDをもたらし得る。
[0052]図3のグラフ300に示すように、STDPグラフのLTP(原因)部分302に負のオフセットμが適用され得る。x軸の交差306のポイント(y=0)は、層i−1からの原因入力の相関を考慮して、最大タイムラグと一致するように構成され得る。フレームベースの入力(すなわち、スパイクまたはパルスを備える特定の持続時間のフレームの形態である入力)の場合、オフセット値μは、フレーム境界を反映するように計算され得る。直接的にシナプス後電位によってモデル化されるように、またはニューラル状態に対する影響の点で、フレームにおける第1の入力スパイク(パルス)が経時的に減衰することが考慮され得る。フレームにおける第2の入力スパイク(パルス)が特定の時間フレームの相関したまたは関連したものと考えられる場合、フレームの前および後の関連する時間は、その時間フレーム境界で分離され、関連する時間の値が異なり得る(たとえば、1つのフレームよりも大きい場合は負、1つのフレームよりも小さい場合は正)ように、STDP曲線の1つまたは複数の部分をオフセットすることによって、可塑性の点で別様に扱われ得る。たとえば、曲線が、フレーム時間よりも大きい前後の時間で実際にゼロよりも下になり、結果的にLTPの代わりにLTDの一部であるようにLTPをオフセットするために負のオフセットμが設定され得る。
(ニューロンモデルおよび演算)
[0053]有用なスパイキングニューロンモデルを設計するための一般的原理がいくつかある。良いニューロンモデルは、2つの計算レジーム、すなわち、一致検出および関数計算の点で豊かな潜在的挙動を有し得る。その上、良いニューロンモデルは、テンポラルコーディングを可能にするための2つの要素を有する必要がある:入力の到着時間は出力時間に影響を与え、一致検出は狭い時間ウィンドウを有し得る。最終的に、計算上魅力的であるために、良いニューロンモデルは、連続時間に閉形式解と、ニアアトラクター(near attractor)と鞍点とを含む安定した挙動とを有し得る。言い換えれば、有用なニューロンモデルは、実用的なニューロンモデルであり、豊かで、現実的で、生物学的に一貫した挙動をモデル化するために使用され得、神経回路のエンジニアリングとリバースエンジニアリングの両方を行うために使用され得るニューロンモデルである。
[0054]ニューロンモデルは事象、たとえば入力の到着、出力スパイク、または内部的であるか外部的であるかを問わず他の事象に依存し得る。豊かな挙動レパートリーを実現するために、複雑な挙動を示すことができる状態機械が望まれ得る。入力寄与(ある場合)とは別個の事象の発生自体が状態機械に影響を与え、事象の後のダイナミクスを制限し得る場合、システムの将来の状態は、単なる状態および入力の関数ではなく、むしろ状態、事象および入力の関数である。
[0055]一態様では、ニューロンnは、下記のダイナミクスによって決定される膜電圧v
n(t)によるスパイキングリーキー積分発火ニューロンとしてモデル化され得る。
ここでαおよびβは、シナプス前ニューロンmをシナプス後ニューロンnに結合するシナプスのパラメータ、w
m,nwm,nはシナプス重みであり、y
m(t)は、ニューロンnの細胞体に到着するまでΔt
m,nに従って樹状遅延または軸索遅延によって遅延し得るニューロンmのスパイキング出力である。
[0056]シナプス後ニューロンへの十分な入力が達成された時間からシナプス後ニューロンが実際に発火する時間までの遅延があることに留意されたい。イジケヴィッチの単純モデルなど、動的スパイキングニューロンモデルでは、脱分極しきい値v
tとピークスパイク電圧v
peakとの間に差がある場合、時間遅延が生じ得る。たとえば、単純モデルでは、電圧および復元のための1対の微分方程式、すなわち、
によってニューロン細胞体ダイナミクス(neuron soma dynamics)が決定され得る。ここでvは膜電位であり、uは、膜復元変数であり、kは、膜電位vの時間スケールを記述するパラメータであり、aは、復元変数uの時間スケールを記述するパラメータであり、bは、膜電位vのしきい値下変動に対する復元変数uの感度を記述するパラメータであり、v
rは、膜静止電位であり、Iは、シナプス電流であり、Cは、膜のキャパシタンスである。このモデルによれば、ニューロンはv>v
peakのときにスパイクすると定義される。
(Hunzinger Coldモデル)
[0057]Hunzinger Coldニューロンモデルは、豊かな様々な神経挙動を再生し得る最小二重レジームスパイキング線形動的モデルである。モデルの1次元または2次元の線形ダイナミクスは2つのレジームを有することができ、時定数(および結合)はレジームに依存し得る。しきい値下レジームでは、時定数は、慣例により負であり、一般に生物学的に一貫した線形方式で静止状態に細胞を戻す役目を果たすリーキーチャネルダイナミクスを表す。しきい値上レジームにおける時定数は、慣例により正であり、一般にスパイク生成のレイテンシを生じさせる一方でスパイク状態に細胞を駆り立てる反リーキーチャネルダイナミクスを反映する。
[0058]図4に示すように、モデルのダイナミクスは2つの(またはそれよりも多くの)レジームに分割され得る。これらのレジームは、負のレジーム(negative regime)402(leaky−integrate−and−fire(LIF)ニューロンモデルと混同されないように、交換可能にLIFレジームとも呼ばれる)、および正のレジーム(positive regime)404(anti−leaky−integrate−and−fire(ALIF)ニューロンモデルと混同されないように、交換可能にALIFレジームとも呼ばれる)と呼ばれ得る。負レジーム402では、状態は将来の事象の時点における静止(v-)の傾向がある。この負レジームでは、モデルは一般に、時間的入力検出特性と他のしきい値下挙動とを示す。正レジーム404では、状態はスパイキング事象(vs)の傾向がある。この正レジームでは、モデルは、後続の入力事象に応じてスパイクにレイテンシを生じさせるなどの計算特性を示す。事象の点からのダイナミクスの公式化およびこれら2つのレジームへのダイナミクスの分離は、モデルの基本的特性である。
[0059]線形二重レジーム2次元ダイナミクス(状態vおよびuの場合)は、慣例により次のように定義され得る。
ここでq
ρおよびrは、結合のための線形変換変数である。
[0060]シンボルρは、ダイナミクスレジームを示すためにここで使用され、特定のレジームの関係を論述または表現するときに、それぞれ負レジームおよび正レジームについて符号「−」または「+」にシンボルρを置き換える慣例がある。
[0061]モデル状態は、膜電位(電圧)vおよび復元電流uによって定義される。基本形態では、レジームは基本的にモデル状態によって決定される。正確で一般的な定義の微妙だが重要な側面があるが、差し当たり、モデルが、電圧vがしきい値(v+)を上回る場合に正レジーム404にあり、そうでない場合に負レジーム402にあると考える。
[0062]レジーム依存時定数は、負レジーム時定数であるτ-と正レジーム時定数であるτ+とを含む。復元電流時定数τuは通常、レジームから独立している。便宜上、τuと同様に、指数およびτ+が一般に正となる正レジームに対して、電圧発展(voltage evolution)と同じ表現が使用され得るように、減衰を反映するために負の量として負レジーム時定数τ-が一般に指定される。
[0063]2つの状態要素のダイナミクスは、事象において、ヌルクラインから状態をオフセットする変換によって結合され得、ここで変換変数は、
であり、δ、ε、βおよびv
-、v
+はパラメータである。v
ρのための2つの値は、2つのレジームのための参照電圧のベースである。パラメータv
-は、負レジームのためのベース電圧であり、膜電位は一般に、負レジームにおいてv
-に減衰する。パラメータv
+は、正レジームのためのベース電圧であり、膜電位は一般に、正レジームにおいてv
+から離れる傾向となる。
[0064]vおよびuのためのヌルクラインは、それぞれ変換変数qρおよびrの負によって与えられる。パラメータδは,uヌルクラインの傾きを制御するスケール係数である。パラメータεは通常、−v-に等しく設定される。パラメータβは、両方のレジームにおいてvヌルクラインの傾きを制御する抵抗値である。τρ時定数パラメータは、指数関数的減衰だけでなく、各レジームにおいて別個にヌルクラインの傾きを制御する。
[0065]モデルは、電圧vが値v
sに達したときにスパイクするように定義され得る。続いて、状態は(スパイク事象と同じ1つのものであり得る)リセット事象でリセットされ得る。
ここで、
およびΔuはパラメータである。リセット電圧
は通常、v
-にセットされる。
[0066]瞬時結合の原理によって、状態について(また、単一の指数項による)だけではなく、特定の状態に到達するための時間についても、閉形式解が可能である。閉形式状態解は、次のとおりである。
[0067]したがって、モデル状態は、入力(シナプス前スパイク)または出力(シナプス後スパイク)に伴うなどの事象に伴ってのみ更新され得る。また、演算が(入力または出力があるかどうかを問わず)任意の特定の時間に実行され得る。
[0068]その上、瞬時結合原理によって、反復的技法または数値解法(たとえば、オイラー数値解法)なしに、特定の状態に到達する時間が事前に決定され得るように、シナプス後スパイクの時間が予想され得る。前の電圧状態v
0を踏まえ、電圧状態v
fに到達するまでの時間遅延は、次の式によって与えられる。
[0069]スパイクが、電圧状態vがv
sに到達する時間に生じると定義される場合、電圧が所与の状態vにある時間から測定されたスパイクが生じるまでの時間量、または相対的遅延に関する閉形式解は、次のとおりである。
ここで、
は通常、パラメータv
+にセットされるが、他の変形も可能であり得る。
[0070]モデルダイナミクスの上記の定義は、モデルが正レジームにあるか、それとも負レジームにあるかに依存する。上述のように、結合およびレジームρは、事象に伴って計算され得る。状態の伝搬のために、レジームおよび結合(変換)変数は、最後の(前の)事象の時間における状態に基づいて定義され得る。続いてスパイク出力時間を予想するために、レジームおよび結合変数は、次の(最新の)事象の時間における状態に基づいて定義され得る。
[0071]Coldモデルの、適時にシミュレーション、エミュレーションまたはモデルを実行するいくつかの可能な実装形態がある。これは、たとえば、事象更新モード、ステップ事象更新モード、およびステップ更新モードを含む。事象更新は、(特定の瞬間における)事象または「事象更新」に基づいて状態が更新される更新である。ステップ更新は、間隔(たとえば、1ms)をおいてモデルが更新される更新である。これは必ずしも、反復的技法または数値解法を必要とするとは限らない。また、事象がステップもしくはステップ間で生じる場合または「ステップ事象」更新によってモデルを更新するのみによって、ステップベースのシミュレータにおいて限られた時間分解能で事象ベースの実装形態が可能である。
(ニューラルプロセッサにわたる値同期)
[0072]本開示の態様は、スパイクインターフェースを介してニューラルネットワーク内で値を同期することを対象とする。図5は、ニューラルネットワーク内のニューラルプロセッサ間で値を同期するための例示的なシステムアーキテクチャを示す高レベルブロック図である。システムアーキテクチャ500は、ニューラルシステムをエミュレートするために単独で、または組み合わせて利用され得るニューラルプロセッサ502と522を備える。さらに、ニューラルプロセッサ502と522は、同じ処理チップ内に含まれてもよく、別個の処理チップに提供されてもよい。図示および説明を簡単にするために、システムアーキテクチャ500は、2つのニューラルプロセッサ(502および522)を含むものとして示されている。しかしながら、これは単なる例示であり、ニューラルネットワーク内の処理のために、追加のニューラルプロセッサまたは処理ブロックがシステムアーキテクチャに含まれ得る。
ニューラルプロセッサ502は、値生成器(VG)504を備え得る。値生成器504は、ニューロンダイナミクスをモデル化するためにシステム内のニューロンと共有されることになる値を生成するように構成され得る。いくつかの態様では、値は、ニューロンパラメータ、シナプス重みまたは遅延値、あるいはニューラルシステムをエミュレートする際に使用するための他の値または属性であり得る。たとえば、値は、ニューラルネットワークにわたってニューロンに適用されることになる一般的なドーパミン値などのニューロモジュレータ値に対応し得る。別の例では、値は、発火した1つまたは複数のニューロン(たとえば、508)の識別情報に対応し得る。いくつかの態様では、値は、たとえば、特定のニューロンが発火する時間(τ)、あるいは値がニューロンによって適用または消費されることになるタイミングを示すために、タイミング情報をさらに含み得る。処理ブロック502、522ごとに1つの値生成器504、524があってもよく(図示されるように)、処理ブロック502、522ごとに複数の値生成器504、524があってもよい。たとえば、ニューロン508、528ごとに1つの値生成器504、524、あるいは、各処理ブロック502、522内のニューロンタイプまたはニューロンクラスタごとに1つの値生成器504、524さえもあり得る。
[0073]値生成器504は、たとえば、スパイクまたは他の属性(たとえば、シナプス重み、および/または遅延)などのニューラル特性に基づいて値を生成するために、値計算を実行するように構成され得る。いくつかの態様では、ニューロン508は、値計算に影響を与えるためにスパイクを値生成器504に送信し得る。さらに、ニューラルシステム内の遠隔プロセッサ(たとえば、522)のニューロンもまた、値計算に影響を与えるためにスパイクを値生成器504に送信し得る。さらに、図5は処理ブロック内に1つだけの値生成器を示すが、これは単なる例示であり、ニューラルプロセッサ502(ならびにニューラルプロセッサ522)は追加の値生成器と共に構成され得る。たとえば、ニューラルプロセッサ502、522は、ニューロンまたはニューロンタイプごとの値生成器と共に構成され得る。
[0074]ニューラルプロセッサ502はまた、値ニューロン(VN)506a、506b、506c(集合的に、値ニューロン506)を含み得る。値ニューロン506は、スパイクを生成するように構成され得る。スパイクは、バイナリ値に類似している。すなわち、スパイクはオンまたはオフのどちらかである。いくつかの態様では、値ニューロン506は、値生成器504によって生成された値に対応するスパイクを生成する。すなわち、値ニューロン506は、スパイクプロトコルに基づいて、値生成器504によって生成された値を符号化した出力スパイクを生成し得る。たとえば、値ニューロン506は、スパイク間隔(ISI)、バイナリ符号化、またはスパイクを生成するための他のプロトコルを使用してスパイクを符号化し得る。
[0075]いくつかの態様では、値ニューロン506の1つまたは複数は、ニューラルネットワーク内の他のニューロンと共有されることになる値を管理するために使用され得る。たとえば、値ニューロン506の1つまたは複数は、ニューロン508によって使用される値(たとえば、一般的なドーパミン値)を監視し得る。値に調整が行われると、値ニューロン506は、他のニューロン(たとえば、528)を更新して変化に対する値を利用するために使用され得る。
[0076]ニューラルプロセッサ502は、1つまたは複数のニューロン508a、508b(集合的に、ニューロン508と呼ばれ得る)をさらに備え得る。ニューロン508は、スパイク入力を受信して、ニューラルネットワーク内のニューロン挙動またはダイナミクスの態様をモデル化するために値を消費し得る。次に、ニューロン508は、ニューラルネットワーク内の他のニューロンに影響を与えるためにスパイクを出力し得る。いくつかの態様では、ニューロン508はまた、値生成器504を調整するために、スパイクを値ニューロン506に送信し得る。たとえば、ニューロン508は、値生成に影響を与える(たとえば、遅延させる)ために、スパイクを値ニューロン506に送信し得る。図5に示されるニューロン508はまた、個々のニューロンではなく、ニューロンタイプを表し得る。
[0077]ニューラルプロセッサ502は、インターフェース(図示せず)を介してニューラルネットワーク内の遠隔ニューラルプロセッサ(たとえば、522)に情報を送信して、そこから情報を受信するように構成され得る。いくつかの構成では、インターフェースは、図1に示されるようなシナプスのネットワークを備え得る。いくつかの態様では、インターフェースはスパイクだけを送受信するように構成され得る。そのような構成では、値生成器504によって生成されるスカラー値は、遠隔ニューラルプロセッサ(たとえば、522)に直接送信され得ない。しかしながら、スパイクはインターフェースを介して送信され得るので、値生成器504によって生成される値に関する情報は、値ニューロン506によって生成されるスパイクの形式で遠隔プロセッサに伝達され得る。すなわち、ニューラルプロセッサ502は、値ニューロン506を使用して値をスパイクに符号化して、スパイクを遠隔ニューラルプロセッサ522に送信することによって、値生成器504によって生成される値を遠隔ニューラルプロセッサ(たとえば、522)と共有し得る。
[0078]ニューラルプロセッサ502から送信されたスパイクを受信するために、ニューラルプロセッサ522は、プロキシニューロン(P)526a、526b、および526c(集合的に、プロキシニューロン526と呼ばれる)を備え得る。プロキシニューロン526は、値ニューロン(たとえば、506)からスパイクを受信するように構成され得る。プロキシニューロン526は、スパイクおよび/または他の特性(たとえば、ニューロン状態)を値生成器524に提供し得る。そうする際に、プロキシニューロン526は、いくつかの態様では、受信されたスパイクに基づいて遠隔ニューラルプロセッサ522上で値を生成するために、値生成器524を駆動し得る。
[0079]次に、値生成器524は、受信されたスパイクおよび/または他の特性に基づいて値を生成するために値計算を実行し得る。いくつかの態様では、値生成器524は、値が値生成器504によって生成された第1の値と同期されるように、値を生成するために値計算を実行するように構成され得る。さらに、いくつかの態様では、値生成器524は、値生成器504によって生成された値と同じ値を生成するように構成され得る。
[0080]ニューロン528a、528b、528c(集合的に、ニューロン528と呼ばれ得る)の1つまたは複数は、ニューラルネットワーク内のニューロン挙動またはダイナミクスの態様をさらにモデル化するために、値生成器524によって生成された値を消費し得る。
[0081]いくつかの態様では、ニューラルプロセッサ522は、値生成器524によって生成された値のルーティングを決定するために、接続性ルックアップテーブルにアクセスし得る。接続性ルックアップテーブルは、生成された値のソース情報および宛先情報を提供し得る。すなわち、接続性ルックアップテーブルは、特定の値を消費することになるニューロンを識別し得る。
[0082]いくつかの態様では、接続性ルックアップテーブルは、値生成器(たとえば、504、524)を介して生成された値のルーティングを決定するために使用され得る。接続性ルックアップテーブルは、ソース情報および宛先情報を含み得、どのニューロン(たとえば、508、528)が生成された値を受信することになるかを決定するために使用され得る。たとえば、値生成器524によって生成された値が、発火したシナプス前ニューロンを識別する場合、接続性ルックアップテーブルは、発火したシナプス前ニューロンから貢献を受ける(receive contribution)ニューロン528を決定するために使用され得る。別の例では、値生成器524によって生成された値が、共有されたニューロモジュレータ値(たとえば、一般的なドーパミン値)に対応する場合、接続性テーブルは、生成された値を消費するニューロン528を示し得る。
[0083]さらに、場合によっては、ニューロン508と528は、値生成器(504)によって生成された値を調整するために、スパイクを値ニューロン(506)に送信し得る。他の場合では、ニューロン508と528は、値生成器524によって生成された値を調整するために、スパイクをプロキシニューロン526に送信し得る。
[0084]図6は、ニューラルネットワーク内のニューラルプロセッサ間で値を同期するための例示的なシステムアーキテクチャを示す高レベルブロック図である。図6に示すように、ニューラルプロセッサ502は、追加のプロキシニューロン616a、616b、および616c(集合的に、プロキシニューロン616と呼ばれる)で構成され得る。プロキシニューロン616は、第1のニューラルプロセッサ502の値ニューロン(506)と値生成器(504)との間で定義され得る。いくつかの態様では、プロキシニューロン616は、第1のニューラルプロセッサ502から第2のニューラルプロセッサ522にスパイクを送信する際に生成された遅延を複製するために利用され得る。
[0085]さらに、ニューラルプロセッサ502は、遅延生成器626と共に構成され得る。図6に示すように、遅延生成器626はニューラルプロセッサ502内で定義され得る。しかしながら、これは単なる例示であり、遅延生成器626はニューラルプロセッサ502の他の構成要素内に含まれてもよく、別個の構成要素として提供されてもよい。いくつかの態様では、遅延生成器626は、ニューラルプロセッサ502から第2のニューラルプロセッサ522にスパイクを送信する際に生成された遅延を複製するために使用され得る。遅延は、プロセッサ502、522間の遅延を近似してもよく、近似された遅延が実際の遅延よりも長くなるようにいくつかのパディングを含んでもよい。いくつかの構成では、ニューラルプロセッサ522はまた、ニューラルプロセッサ522からニューラルプロセッサ502にスパイクを送信する際に生成された遅延を複製する遅延生成器と共に構成され得る。
[0086]さらに、いくつかの構成では、第1のニューラルプロセッサ502の値ニューロン506は、第2のニューラルプロセッサ522をリセットするために、スパイクの特定のシーケンスを送信し得る。
[0087]遠隔ニューラルプロセッサ522上のニューロンは、第1のニューラルプロセッサ502から提供された値にアクセスし得る。したがって、ニューラルプロセッサ502内で生成された値は、遠隔ニューラルプロセッサ522内で生成された値と同期されたと見なされ得る。
[0088]図7Aは、スパイクを符号化および復号化するための例示的なシステムを示す高レベルブロック図である。上述のように、値ニューロン506は、ニューラルネットワークにわたってニューロンと共有されることになる値V1を監視または管理し得る。いくつかの態様では、値V1は、特定の時間にスパイクしたニューロンの表示を提供し得る。値V1はまた、ニューロモジュレータ値(たとえば、一般的なドーパミン値)などの、ニューラルネットワークにわたってニューロンによって共有されることになる値であり得る。
[0089]図7Aの例では、値ニューロン506が値V1を管理する。値V1がニューラルネットワークにわたってニューロンと共有されることになる場合、値ニューロン506は、値V1を、ブロック間インターフェースを横切る送信のためのスパイクに変換するために使用され得る。いくつかの態様では、ブロック間インターフェース712は、スパイクだけがインターフェースを介して伝達され得るように構成され得、たとえばシナプスのネットワークであり得る。さらに、ブロック間インターフェース712は、ニューラルプロセッサ間のスパイクチャネルとして動作するように構成され得る。
[0090]いくつかの態様では、値は1つまたは複数の構成要素部分に分割され得る。たとえば、値V1は、その最上位ビットと最下位ビットとに分割され得る。別の例では、値V1は、あらかじめ定められた数の部分(たとえば、ビットの1/2、ビットの1/3等)に分割され得る。
[0091]値ニューロン506は、スパイクプロトコルに基づいて値V1を符号化したスパイクを生成し得る。スパイクプロトコルは、たとえば、絶対レイテンシコーディング、相対レイテンシコーディング、レートコーディング、ISI(スパイク間隔)コーディング、バイナリコーディングなどの符号化方式を採用し得る。
[0092]絶対レイテンシコーディングでは、値は、特定のニューロンまたはニューロンのセットのスパイク事象間の時間に基づいて符号化され得る。たとえば、8の値を符号化するために、ニューロンのスパイク事象間に8ミリ秒の遅延が含まれ得る。いくつかの態様では、値はまた、符号化された値を生成するためにスケーリングされ得る。さらに、いくつかの態様では、符号化された値は絶対レイテンシ値の関数であり得る。
[0093]相対レイテンシコーディングでは、値は、複数のニューロンのスパイク間の間隔に従って符号化され得る。たとえば、ニューロンN1が時間t1でスパイクして、ニューロンN2が時間t2でスパイクする場合、値は時間差t2−t1として表され得る。
[0094]レートコーディングでは、値は、特定の間隔内で発生するスパイクの数に従って表され得る。たとえば、スパイクは10ミリ秒間隔でサンプリングされ得、符号化された値は10ミリ秒の期間中に発生したスパイクの数に対応する。いくつかの態様では、値は1つのニューロンのスパイクレートに基づいて符号化されてもよく、複数のニューロンのスパイクレートに基づいて符号化されてもよい。
[0095]上述の符号化方式は単なる例示であり、いくつかの態様では、スパイクプロトコルはスパイク間隔(ISI)コーティング、バイナリコーディング、または値V1を符号化したスパイクを生成するための他の符号化方式を採用し得る。
[0096]スパイクした特定のニューロンまたは複数のニューロンを示す接続性情報はまた、値ニューロンを介して送信されたスパイクに含まれ得る。接続性情報は、符号化されて、スパイクとして遠隔ニューラルプロセッサ(たとえば、522)内のニューロンに送信された値をルーティングするために使用され得る。いくつかの態様では、接続性情報は、スパイクした1つまたは複数のニューロン(すなわち、ソースニューロン)を識別するインデックスを含み得る。接続性情報は、スパイクしたニューロンに基づいて貢献を受けることになる1つまたは複数のニューロンを識別する宛先情報をさらに含み得る。
[0097]プロキシニューロン526は、処理ブロック502から送信されたスパイクを受信する。いくつかの態様では、スパイクは、スパイク送信問題(たとえば、スパイク損失)から回復するための冗長性を提供する追加の受信ニューロンによって受信され得る。たとえば、いくつかの態様では、値ニューロン506aを介して送信されたスパイク列は、複数のプロキシニューロン(たとえば、(526a、526b、および/または526c)を介して受信され得る。さらなる例では、スパイク列は、ニューラルプロセッサ522のプロキシニューロン526およびニューロン528を介して受信した。
[0098]次いで、プロキシニューロン526は、第1の値またはその構成要素に対応するスパイクを、スパイクを復号して第2の値V2を生成する値生成器524に提供する。いくつかの態様では、値生成器524は、値ニューロン506によって採用されたスパイクプロトコルに基づいて符号化されたスパイクを復号するように構成され得る。スパイクはタイミング情報が符号化され得るので、第2の値V2は、第2の値V2が第1の値V1と同期されるように生成され得る。いくつかの態様では、第2の値V2は、第1の値V1と同じであるか、等しい。
[0099]いくつかの態様では、接続性ルックアップテーブルは、生成された値のルーティングを決定するために使用され得る。接続性ルックアップテーブルは、ソース情報および宛先情報を含み得、ニューラルプロセッサ522のどのニューロンが、値生成器524によって生成された値を受信することになるかを決定するために使用され得る。たとえば、値生成器524によって生成された値が、発火したシナプス前ニューロンまたは複数のニューロンを識別するインデックスを含む場合、接続性ルックアップテーブルは、発火したシナプス前ニューロンから貢献を受けるニューロン528(図5および図6)を決定するために使用され得る。別の例では、値生成器524によって生成された値が共有されたニューロモジュレータ値(たとえば、一般的なドーパミン値)に対応する場合、接続性テーブルは、生成された値を消費することになるニューロン528を示し得る。
[00100]図7Bは、本開示の態様による、例示的な符号化技法を示す一対のグラフ750と760を示す。図7Bを参照すると、グラフ750は、スパイク間隔に基づく値の符号化の例を示す。すなわち、スパイク列は、ニューロンのスパイク事象間の時間ステップの数に従って値情報を表すように構成され得る。グラフ750に示すように、トレース755は、時間ステップの期間にわたってニューロンN1のスパイク758間の間隔に基づく値に対応するように提供される。いくつかの態様では、符号化された値は、スパイク事象なしに時間ステップごとに増加する。たとえば、グラフ755では、ニューロンN1の第1のスパイク事象の前に2つの時間期間があり、したがって、N1のために示されるスパイク列は、第1の時間ステップで1の値を、および第2の時間ステップで2の値を表し得る。第3、第4、第5の時間ステップで、遅延が増加し、値も増加する。第6の時間ステップで、およびその後で、ニューロンN1のスパイク間の遅延は1つの時間期間であり、したがって符号化された値が1に戻る。
[00101]一方、グラフ760は、値765が、スパイク事象が発生したか否かに基づいて各時間ステップで表され得るバイナリ符号化手法を示す。たとえば、N0は1を表し、N1は2を表し、N3は4を表し、N3は8を表す。したがって、第1の時間ステップで、13(8+4+1)の値が符号化される。次の時間ステップで、7(4+2+1)の値が符号化され、以下同様である。
[00102]図8は、本開示のいくつかの態様による、汎用プロセッサ802を使用して、ニューラルネットワーク内で値をスパイクに変換するための上述の方法の例示的な実装形態800を示す。計算ネットワーク(ニューラルネットワーク)に関連付けられる、変数(ニューラル信号)、シナプス重み、およびシステムパラメータは、メモリブロック804に記憶され得、汎用プロセッサ802で実行される命令はプログラムメモリ806からロードされ得る。本開示のある態様では、汎用プロセッサ802にロードされた命令は、ニューラルネットワーク内で値をスパイクに変換するためのコードを備え得る。たとえば、いくつかの構成では、汎用プロセッサ802は、パラメータ値を取得するためのコードを備え得る。さらに、例示的な構成では、汎用プロセッサ802は、ニューロンによって使用される値に少なくとも部分的に基づいて、パラメータ値を符号化するためのコードをさらに備え得る。
[00103]別の例示的な構成では、汎用プロセッサ802は、符号化された値を表すスパイクを受信するニューロンを決定するためのコードを備え得る。さらに、この例示的な構成では、汎用プロセッサ802は、ニューロンによって使用されることになるパラメータ値を決定するために、スパイクを復号するためのコードをさらに備え得る。
[00104]図9は、本開示のいくつかの態様による、メモリ902が相互接続ネットワーク904を介して計算ネットワーク(ニューラルネットワーク)の個々の(分散型)処理ユニット(ニューラルプロセッサ)9061...906Nとインターフェースされ得る、値をニューラルネットワーク内での送信のためのスパイクに変換するための上述の方法の例示的な実装形態900を示す。計算ネットワーク(ニューラルネットワーク)に関連付けられる、変数(ニューラル信号)、シナプス重み、およびシステムパラメータはメモリ902に記憶され得、相互接続ネットワーク904の接続を介してメモリ902から各処理ユニット(ニューラルプロセッサ)906にロードされ得る。いくつかの態様では、接続性情報だけでなく、処理ブロックを介して生成された値もメモリ902に記憶されて、さらなる処理のためにそこからロードされ得る。本開示のある態様では、処理ユニット906は、値をスパイクに変換するように構成され得る。たとえば、いくつかの構成では、処理ユニット906は、パラメータ値を取得するように構成され得る。さらに、例示的な構成の処理ユニット906は、ニューロンによって使用される値に少なくとも部分的に基づいて、パラメータ値を符号化するようにさらに構成され得る。
[00105]別の例示的な構成では、処理ユニット906は、符号化された値を表すスパイクを受信するニューロンを決定するように構成され得る。さらに、この例示的な構成では、処理ユニット906は、ニューロンによって使用されることになるパラメータ値を決定するために、スパイクを復号するようにさらに構成され得る。
[00106]図10は、値をニューラルネットワーク内での送信のためのスパイクに変換するための上述の方法の例示的な実装形態1000を示す。図10に示されるように、1つのメモリバンク1002は、計算ネットワーク(ニューラルネットワーク)の1つの処理ユニット1004に直接インターフェースされ得る。各メモリバンク1002は、対応する処理ユニット(ニューラルプロセッサ)1004に関連付けられる変数(ニューラル信号)、シナプス重み、およびシナプスパラメータを記憶し得る。いくつかの態様では、処理ブロックを介して生成された値はまた、メモリ1002に記憶されて、さらなる処理のためにそこからロードされ得る。さらに、いくつかの態様では、接続性情報はメモリ1002に記憶され得る。本開示のある態様では、処理ユニット1004は、値をスパイクに変換するように構成され得る。
[00107]図11は、本開示のいくつかの態様による、値をニューラルネットワーク内での送信のためのスパイクに変換するための方法を示す。ブロック1102で、ニューロンモデルはパラメータ値を取得する。さらに、ブロック1104で、ニューロンモデルは、ニューロンによって使用される値に少なくとも部分的に基づいてパラメータ値を符号化する。
[00108]図12は、本開示のいくつかの態様による、ニューラルネットワーク内でパラメータ値を受信するための方法を示す。ブロック1202で、ニューロンモデルは、符号化された値を表すスパイクを受信するニューロンを決定する。さらに、ブロック1204で、ニューロンモデルは、ニューロンによって使用されることになるパラメータ値を決定するためにスパイクを復号する。
[0109]図13は、本開示のいくつかの態様による、ニューラルネットワーク1300の例示的な実装形態を示す。図13に示すように、ニューラルネットワーク1300は、上述のような、様々な動作を実行し得る複数のローカル処理ユニット1302を有することができる。各処理ユニット1302は、ニューラルネットワークのパラメータを記憶する、ローカルステートメモリ1304およびローカルパラメータメモリ1306を備え得る。また、処理ユニット1302は、ローカル(ニューロン)モデルプログラムをもつメモリ1308、ローカル学習プログラムをもつメモリ1310、およびローカル接続メモリ1312を有し得る。さらに、図13に示すように、各ローカル処理ユニット1302は、ローカル処理ユニットのローカルメモリのための構成を提供し得る構成処理のためにユニット1314との間で、および、ローカル処理ユニット1302間のルーティングを提供するルーティング接続処理要素1316との間でインターフェースされ得る。
[00110]一構成では、ニューロンモデルは、値をニューラルネットワーク内での送信のためのスパイクに変換するように構成される。一態様では、モデルは、取得手段および/または符号化手段を含み、取得手段および/または符号化手段は、記載された機能を実行するように構成された、汎用プロセッサ802、プログラムメモリ806、メモリブロック804、メモリ902、相互接続ネットワーク904、処理ユニット906、処理ユニット1004、ローカル処理ユニット1302、およびまたはルーティング接続処理要素1316であり得る。一態様では、上述の手段は、上記の手段によって記載された機能を実行するように構成された任意のモジュールまたは任意の装置であり得る。
[00111]別の構成では、ニューロンモデルは、パラメータ値を受信するように構成される。一態様では、モデルは、記載の機能を実行するように構成された、汎用プロセッサ802、プログラムメモリ806、メモリブロック804、メモリ902、相互接続ネットワーク904、処理ユニット906、処理ユニット1004、ローカル処理ユニット1302、およびまたはルーティング接続処理要素1316であり得る、決定手段および/または復号手段を含む。一態様では、上述の手段は、上記の手段によって記載された機能を実行するように構成された任意のモジュールまたは任意の装置であり得る。
[00112]本開示のいくつかの態様によれば、各ローカル処理ユニット1302は、ニューラルネットワークの所望の1つまたは複数の機能特徴に基づいて、ニューラルネットワークのパラメータを決定して、決定されたパラメータがさらに適応、調整、および更新されるにつれて、所望の機能的特徴に向けて1つまたは複数の機能特徴を開発するように構成され得る。
[00113]上述した方法の様々な動作は、対応する機能を実行することが可能な任意の好適な手段によって実行され得る。それらの手段は、限定はしないが、回路、特定用途向け集積回路(ASIC)、またはプロセッサを含む、様々なハードウェアおよび/またはソフトウェア構成要素および/またはモジュールを含み得る。概して、図に示されている動作がある場合、それらの動作は、同様の番号をもつ対応するカウンターパートのミーンズプラスファンクション構成要素を有し得る。
[00114]本明細書で使用する「決定」という用語は、多種多様なアクションを包含する。たとえば、「決定」は、計算すること、算出すること、処理すること、導出すること、調査すること、ルックアップすること(たとえば、テーブル、データベースまたは別のデータ構造においてルックアップすること)、確認することなどを含み得る。また、「決定」は、受信すること(たとえば、情報を受信すること)、アクセスすること(たとえば、メモリ中のデータにアクセスすること)などを含み得る。また、「決定」は、解決すること、選択すること、選定すること、確立することなどを含み得る。
[00115]本明細書で使用する、項目のリスト「のうちの少なくとも1つ」を指す句は、単一のメンバーを含む、それらの項目の任意の組合せを指す。一例として、「a、b、またはcのうちの少なくとも1つ」は、a、b、c、a−b、a−c、b−c、およびa−b−cを包含するものとする。
[00116]本開示に関連して説明した様々な例示的な論理ブロック、モジュール、および回路は、汎用プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ信号(FPGA)または他のプログラマブル論理デバイス(PLD)、個別ゲートまたはトランジスタ論理、個別ハードウェア構成要素、あるいは本明細書で説明した機能を実行するように設計されたそれらの任意の組合せを用いて実装または実行され得る。汎用プロセッサはマイクロプロセッサであり得るが、代替として、プロセッサは、任意の市販のプロセッサ、コントローラ、マイクロコントローラまたは状態機械であり得る。プロセッサはまた、コンピューティングデバイスの組合せ、たとえば、DSPとマイクロプロセッサとの組合せ、複数のマイクロプロセッサ、DSPコアと連携する1つまたは複数のマイクロプロセッサ、あるいは任意の他のそのような構成として実装され得る。
[00117]本開示に関連して説明した方法またはアルゴリズムのステップは、ハードウェアで直接実施されるか、プロセッサによって実行されるソフトウェアモジュールで実施されるか、またはその2つの組合せで実施され得る。ソフトウェアモジュールは、当技術分野で知られている任意の形式の記憶媒体で存在し得る。使用され得る記憶媒体のいくつかの例は、ランダムアクセスメモリ(RAM)、読出し専用メモリ(ROM)、フラッシュメモリ、EPROMメモリ、EEPROM(登録商標)メモリ、レジスタ、ハードディスク、リムーバブルディスク、CD−ROMなどを含む。ソフトウェアモジュールは、単一の命令、または多数の命令を備えることができ、いくつかの異なるコードセグメント上で、異なるプログラム間で、複数の記憶媒体にわたって分散され得る。記憶媒体は、プロセッサがその記憶媒体から情報を読み取ることができ、その記憶媒体に情報を書き込むことができるように、プロセッサに結合され得る。代替として、記憶媒体はプロセッサと一体化され得る。
[00118]本明細書で開示する方法は、説明した方法を達成するための1つまたは複数のステップまたはアクションを備える。本方法のステップおよび/またはアクションは、特許請求の範囲から逸脱することなく互いに交換され得る。言い換えれば、ステップまたはアクションの特定の順序が指定されない限り、特定のステップおよび/またはアクションの順序および/または使用は、特許請求の範囲から逸脱することなく変更され得る。
[00119]説明した機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ハードウェアで実装される場合、例示的なハードウェア構成はデバイス中に処理システムを備え得る。処理システムは、バスアーキテクチャを用いて実装され得る。バスは、処理システムの特定の適用例および全体的な設計制約に応じて、任意の数の相互接続バスとブリッジとを含み得る。バスは、プロセッサと、機械可読媒体と、バスインターフェースとを含む様々な回路を互いにリンクし得る。バスインターフェースは、ネットワークアダプタを、特に、バスを介して処理システムに接続するために使用され得る。ネットワークアダプタは、信号処理機能を実装するために使用され得る。いくつかの態様では、ユーザインターフェース(たとえば、キーパッド、ディスプレイ、マウス、ジョイスティックなど)もバスに接続され得る。バスはまた、タイミングソース、周辺機器、電圧調整器、電力管理回路などの様々な他の回路にリンクし得るが、それらは当技術分野でよく知られており、したがってこれ以上は説明されない。
[00120]プロセッサは、機械可読媒体に記憶されたソフトウェアの実行を含む、バスおよび一般的な処理を管理することを担当し得る。プロセッサは、1つまたは複数の汎用および/または専用プロセッサを用いて実装され得る。例としては、マイクロプロセッサ、マイクロコントローラ、DSPプロセッサ、およびソフトウェアを実行し得る他の回路を含む。ソフトウェアは、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語などの名称にかかわらず、命令、データ、またはそれらの任意の組合せを意味すると広く解釈されたい。機械可読媒体は、一例として、RAM(ランダムアクセスメモリ)、フラッシュメモリ、ROM(読出し専用メモリ)、PROM(プログラマブル読出し専用メモリ)、EPROM(消去可能プログラマブル読出し専用メモリ)、EEPROM(電気的消去可能プログラマブル読出し専用メモリ)、レジスタ、磁気ディスク、光ディスク、ハードドライブ、または他の任意の適切な記憶媒体、あるいはそれらの任意の組合せを含み得る。機械可読媒体はコンピュータプログラム製品において実施され得る。コンピュータプログラム製品はパッケージング材料を備え得る。
[00121]ハードウェア実装形態では、機械可読媒体は、プロセッサとは別個の処理システムの一部であり得る。しかしながら、当業者なら容易に理解するように、機械可読媒体またはその任意の部分は処理システムの外部にあり得る。例として、機械可読媒体は、すべてバスインターフェースを介してプロセッサによってアクセスされ得る、伝送線路、データによって変調された搬送波、および/またはデバイスとは別個のコンピュータ製品を含み得る。代替的に、または追加で、機械可読媒体またはその任意の部分は、キャッシュおよび/または汎用レジスタファイルがそうであり得るように、プロセッサに統合され得る。
[00122]処理システムは、すべて外部バスアーキテクチャを介して他のサポート回路と互いにリンクされる、プロセッサ機能を提供する1つまたは複数のマイクロプロセッサと、機械可読媒体の少なくとも一部分を提供する外部メモリとをもつ汎用処理システムとして構成され得る。あるいは、処理システムは、本明細書に記載のニューロンモデルとニューラルシステムのモデルとを実装するための1つまたは複数のニューロモルフィックプロセッサを備え得る。別の代替として、処理システムは、プロセッサを有するASIC(特定用途向け集積回路)と、バスインターフェースと、ユーザインターフェースと、サポート回路と、単一のチップに統合された機械可読媒体の少なくとも一部とを用いて、あるいは1つまたは複数のFPGA(フィールドプログラマブルゲートアレイ)、PLD(プログラマブル論理デバイス)、コントローラ、状態機械、ゲート論理、個別ハードウェア構成要素、または他の任意の適切な回路、あるいは本開示全体を通じて説明した様々な機能を実行し得る回路の任意の組合せを用いて実装され得る。当業者なら、特定の適用例と、全体的なシステムに課される全体的な設計制約とに応じて、どのようにしたら処理システムについて説明した機能を最も良く実装し得るかを理解されよう。
[00123]機械可読媒体はいくつかのソフトウェアモジュールを備え得る。ソフトウェアモジュールは、プロセッサによって実行されたときに、処理システムに様々な機能を実行させる命令を含む。ソフトウェアモジュールは、送信モジュールと受信モジュールとを含み得る。各ソフトウェアモジュールは、単一の記憶デバイス中に常駐するか、または複数の記憶デバイスにわたって分散され得る。例として、トリガイベントが発生したとき、ソフトウェアモジュールがハードドライブからRAMにロードされ得る。ソフトウェアモジュールの実行中、プロセッサは、アクセス速度を高めるために、命令のいくつかをキャッシュにロードし得る。次いで、1つまたは複数のキャッシュラインが、プロセッサによる実行のために汎用レジスタファイルにロードされ得る。以下でソフトウェアモジュールの機能に言及する場合、そのような機能は、そのソフトウェアモジュールからの命令を実行したときにプロセッサによって実装されることが理解されよう。
[00124]ソフトウェアで実装される場合、機能は、1つまたは複数の命令またはコードとしてコンピュータ可読媒体上に記憶されるか、あるいはコンピュータ可読媒体を介して送信され得る。コンピュータ可読媒体は、ある場所から別の場所へのコンピュータプログラムの転送を可能にする任意の媒体を含む、コンピュータ記憶媒体と通信媒体の両方を含む。記憶媒体は、コンピュータによってアクセスされ得る任意の利用可能な媒体であり得る。限定ではなく例として、そのようなコンピュータ可読媒体は、RAM、ROM、EEPROM、CD−ROMまたは他の光ディスクストレージ、磁気ディスクストレージまたは他の磁気記憶デバイス、あるいは命令またはデータ構造の形態の所望のプログラムコードを搬送または記憶するために使用され得、コンピュータによってアクセスされ得る、任意の他の媒体を備えることができる。さらに、いかなる接続もコンピュータ可読媒体を適切に名づけられる。たとえば、ソフトウェアが、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線(DSL)、または赤外線(IR)、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。本明細書で使用するディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザーディスク(登録商標)(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピー(登録商標)ディスク(disk)、およびBlu−ray(登録商標)ディスク(disc)を含み、ディスク(disk)は、通常、データを磁気的に再生し、ディスク(disc)は、データをレーザーで光学的に再生する。したがって、いくつかの態様では、コンピュータ可読媒体は非一時的コンピュータ可読媒体(たとえば、有形媒体)を備え得る。さらに、他の態様では、コンピュータ可読媒体は一時的コンピュータ可読媒体(たとえば、信号)を備え得る。上記の組合せもコンピュータ可読媒体の範囲内に含まれるべきである。
[00125]したがって、いくつかの態様は、本明細書で提示する動作を実行するためのコンピュータプログラム製品を備え得る。たとえば、そのようなコンピュータプログラム製品は、本明細書で説明する動作を実行するために1つまたは複数のプロセッサによって実行可能である命令を記憶した(および/または符号化した)コンピュータ可読媒体を備え得る。いくつかの態様では、コンピュータプログラム製品はパッケージング材料を含み得る。
[00126]さらに、本明細書で説明した方法および技法を実行するためのモジュールおよび/または他の適切な手段は、適用可能な場合にユーザ端末および/または基地局によってダウンロードされ、および/または他の方法で取得され得ることを諒解されたい。たとえば、そのようなデバイスは、本明細書で説明した方法を実施するための手段の転送を可能にするためにサーバに結合され得る。代替的に、本明細書で説明した様々な方法は、ユーザ端末および/または基地局が記憶手段をデバイスに結合または提供すると様々な方法を得ることができるように、記憶手段(たとえば、RAM、ROM、コンパクトディスク(CD)またはフロッピーディスクなどの物理記憶媒体など)によって提供され得る。その上、本明細書で説明した方法および技法をデバイスに与えるための任意の他の好適な技法が利用され得る。
[00127]特許請求の範囲は、上記で示した厳密な構成および構成要素に限定されないことを理解されたい。上記で説明した方法および装置の構成、動作および詳細において、特許請求の範囲から逸脱することなく、様々な改変、変更および変形が行われ得る。
[00127]特許請求の範囲は、上記で示した厳密な構成および構成要素に限定されないことを理解されたい。上記で説明した方法および装置の構成、動作および詳細において、特許請求の範囲から逸脱することなく、様々な改変、変更および変形が行われ得る。
以下に、本願の出願当初の特許請求の範囲に記載された発明が付記される。
[C1]ニューラルネットワーク内で値を送信するための方法であって、パラメータ値を取得することと、ニューロンによって使用される少なくとも1つの値に少なくとも部分的に基づいて前記パラメータ値を符号化することと、を備え、前記符号化することは、スパイクチャネルを介して送信されることになる少なくとも1つのスパイクに少なくとも部分的に基づく、方法。
[C2]絶対レイテンシコード、および/または、相対レイテンシコードに少なくとも部分的に基づいて符号化することをさらに備える、C1に記載の方法。
[C3]レートコード、スパイク間隔符号化、または、バイナリ符号化に少なくとも部分的に基づいて符号化することをさらに備える、C1に記載の方法。
[C4]前記パラメータ値を複数の構成要素に分割することをさらに備え、各構成要素が少なくとも1つのニューロンによって符号化されることになる、C1に記載の方法。
[C5]ニューラルネットワーク内でパラメータ値を受信するための方法であって、符号化された値を表すスパイクをどのニューロンが受信することになるかを決定することと、前記ニューロンによって使用されるパラメータ値を決定するために少なくとも1つのスパイクを復号することとを備える、方法。
[C6]接続性情報に少なくとも部分的に基づいて、前記スパイクをルーティングすることをさらに備える、C5に記載の方法。
[C7]前記接続性情報は、ソースニューロンのインデックスを含む、C6に記載の方法。
[C8]前記接続性情報は、複数のソースニューロンのインデックスを含む、C6に記載の方法。
[C9]前記符号化された値は、複数のスパイクによって表され、それぞれのスパイクは、前記符号化された値のサブ構成要素に対応し、前記パラメータ値を決定するために復号される、C5に記載の方法。
[C10]スパイク損失から回復するために、冗長受信ニューロンを介して前記スパイクを受信することをさらに備える、C5に記載の方法。
[C11]ニューラルネットワーク内で値を送信するための装置であって、メモリと、前記メモリに結合された少なくとも1つのプロセッサとを備え、前記少なくとも1つのプロセッサが、パラメータ値を取得して、ニューロンによって使用される少なくとも1つの値に少なくとも部分的に基づいて前記パラメータ値を符号化する、ように構成され、前記符号化することは、スパイクチャネルを介して送信されることになる少なくとも1つのスパイクに少なくとも部分的に基づく、装置。
[C12]前記少なくとも1つのプロセッサは、絶対レイテンシコード、および/または、相対レイテンシコードに少なくとも部分的に基づいて前記パラメータ値を符号化するようにさらに構成される、C11に記載の装置。
[C13]前記少なくとも1つのプロセッサは、レートコード、スパイク間隔符号化、または、バイナリ符号化に少なくとも部分的に基づいて前記パラメータ値を符号化するようにさらに構成される、C11に記載の装置。
[C14]前記少なくとも1つのプロセッサは、前記パラメータ値を複数の構成要素に分割するようにさらに構成され、各構成要素は、少なくとも1つのニューロンによって符号化されることになる、C11に記載の装置。
[C15]ニューラルネットワーク内でパラメータ値を受信するための装置であって、メモリと、前記メモリに結合された少なくとも1つのプロセッサとを備え、前記少なくとも1つのプロセッサが、符号化された値を表すスパイクをどのニューロンが受信することになるかを決定し、前記ニューロンによって使用されるパラメータ値を決定するために少なくとも1つのスパイクを復号する、ように構成される、装置。
[C16]前記少なくとも1つのプロセッサは、接続性情報に少なくとも部分的に基づいて、前記スパイクをルーティングするようにさらに構成される、C15に記載の装置。
[C17]前記接続性情報は、ソースニューロンのインデックスを含む、C16に記載の装置。
[C18]前記接続性情報は、複数のソースニューロンのインデックスを含む、C16に記載の装置。
[C19]前記符号化された値は、複数のスパイクによって表され、それぞれのスパイクは、前記符号化された値のサブ構成要素に対応し、前記パラメータ値を決定するために復号される、C15に記載の装置。
[C20]前記少なくとも1つのプロセッサが、スパイク損失から回復するために、冗長受信ニューロンを介して前記スパイクを受信するようにさらに構成される、C15に記載の装置。
[C21]ニューラルネットワーク内で値を送信するための装置であって、パラメータ値を取得するための手段と、ニューロンによって使用される少なくとも1つの値に少なくとも部分的に基づいて前記パラメータ値を符号化するための手段とを備え、前記符号化することは、スパイクチャネルを介して送信されることになる少なくとも1つのスパイクに少なくとも部分的に基づく、装置。
[C22]ニューラルネットワーク内でパラメータ値を受信するための装置であって、符号化された値を表すスパイクをどのニューロンが受信することになるかを決定するための手段と、前記ニューロンによって使用されるパラメータ値を決定するために少なくとも1つのスパイクを復号するための手段とを備える、装置。
[C23]ニューラルネットワーク内で値を送信するためのコンピュータプログラム製品であって、プログラムコードを符号化した非一時的コンピュータ可読媒体を備え、前記プログラムコードは、パラメータ値を取得するためのプログラムコードと、ニューロンによって使用される少なくとも1つの値に少なくとも部分的に基づいて前記パラメータ値を符号化するためのプログラムコードと、を備え、前記符号化することは、スパイクチャネルを介して送信されることになる少なくとも1つのスパイクに少なくとも部分的に基づく、コンピュータプログラム製品。
[C24]ニューラルネットワーク内でパラメータ値を受信するためのコンピュータプログラム製品であって、プログラムコードを符号化した非一時的コンピュータ可読媒体を備え、前記プログラムコードは、符号化された値を表すスパイクをどのニューロンが受信することになるかを決定するためのプログラムコードと、前記ニューロンによって使用されるパラメータ値を決定するために少なくとも1つのスパイクを復号するためのプログラムコードとを備える、コンピュータプログラム製品。