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

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

▶ インターナショナル・ビジネス・マシーンズ・コーポレーションの特許一覧

特許7569133シナプス再利用を伴う人工知能ハードウェア
<>
  • 特許-シナプス再利用を伴う人工知能ハードウェア 図1
  • 特許-シナプス再利用を伴う人工知能ハードウェア 図2
  • 特許-シナプス再利用を伴う人工知能ハードウェア 図3A
  • 特許-シナプス再利用を伴う人工知能ハードウェア 図3B
  • 特許-シナプス再利用を伴う人工知能ハードウェア 図3C
  • 特許-シナプス再利用を伴う人工知能ハードウェア 図3D
  • 特許-シナプス再利用を伴う人工知能ハードウェア 図3E
  • 特許-シナプス再利用を伴う人工知能ハードウェア 図4A
  • 特許-シナプス再利用を伴う人工知能ハードウェア 図4B
  • 特許-シナプス再利用を伴う人工知能ハードウェア 図5A
  • 特許-シナプス再利用を伴う人工知能ハードウェア 図5B
  • 特許-シナプス再利用を伴う人工知能ハードウェア 図6
  • 特許-シナプス再利用を伴う人工知能ハードウェア 図7
  • 特許-シナプス再利用を伴う人工知能ハードウェア 図8
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-10-08
(45)【発行日】2024-10-17
(54)【発明の名称】シナプス再利用を伴う人工知能ハードウェア
(51)【国際特許分類】
   G06N 3/049 20230101AFI20241009BHJP
   G06N 3/063 20230101ALI20241009BHJP
【FI】
G06N3/049
G06N3/063
【請求項の数】 20
(21)【出願番号】P 2022520174
(86)(22)【出願日】2020-09-21
(65)【公表番号】
(43)【公表日】2022-12-21
(86)【国際出願番号】 IB2020058760
(87)【国際公開番号】W WO2021064506
(87)【国際公開日】2021-04-08
【審査請求日】2023-02-24
(31)【優先権主張番号】16/592,130
(32)【優先日】2019-10-03
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【弁理士】
【氏名又は名称】太佐 種一
(72)【発明者】
【氏名】ロイ、サブフラジット
【審査官】佐藤 直樹
(56)【参考文献】
【文献】米国特許出願公開第2018/0005108(US,A1)
【文献】米国特許出願公開第2018/0089557(US,A1)
【文献】特開2018-136919(JP,A)
【文献】特表2016-537711(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/049
G06N 3/063
(57)【特許請求の範囲】
【請求項1】
複数の人工ニューロンと、
前記複数の人工ニューロンのうち対応する1つにそれぞれが関連付けられている複数の人工シナプスと、
複数の人工ニューロンのうちの対応する1つにそれぞれが関連付けられている複数の可変利得増幅器と、
複数の入力ソースのうち少なくとも1つを、対応する可変利得増幅器および対応する人工シナプスを介して前記複数の人工ニューロンのそれぞれに接続し、時計信号を生成するように構成されているルータと、
時分割スキーマ、前記時計信号および所与の時間の間にスパイクを送信する入力ソースのアイデンティティに基づいて前記複数の可変利得増幅器のそれぞれに利得を設定するように構成されている利得構成コントローラと
を含み、
前記時計信号は、前記スパイクおよび設定する利得が同期して受信および増幅されるように前記ルータおよび前記可変利得増幅器を駆動する、回路。
【請求項2】
前記複数の人工ニューロンのうちの所与の人工ニューロンに接続されている多数の入力ソースは、前記時分割スキーマと前記複数の入力ソースからのスパイク送信速度とに基づく、請求項1に記載の回路。
【請求項3】
前記ルータおよび前記利得構成コントローラは、前記複数の人工ニューロンの第1の人工ニューロンが第1の利得で前記複数の入力ソースの第1の入力ソースから第1のスパイクを受信し、前記複数の人工ニューロンの第2の人工ニューロンが前記第1の利得とは独立して設定された第2の利得で前記複数の入力ソースの第1の入力ソースから前記第1のスパイクを受信することを可能にする、請求項1に記載の回路。
【請求項4】
前記ルータおよび前記利得構成コントローラは、前記複数の人工ニューロンの第1の人工ニューロンが第1の時間の間に前記複数の入力ソースの第1の入力ソースから第1のスパイクを受信し、前記複数の人工ニューロンの第2の人工ニューロンが前記第1の時間で前記複数の入力ソースの第2の入力ソースから第2のスパイクを受信することを可能にする、請求項1に記載の回路。
【請求項5】
前記複数の入力ソースの第1の入力ソースは、第1の送信速度でスパイクを送信し、前記複数の入力ソースの第2の入力ソースは、前記第1の送信速度とは異なる第2の送信速度でスパイクを送信する、請求項1に記載の回路。
【請求項6】
前記ルータは、前記複数の入力ソースからの入力スパイクを受信して格納するレジスタを含み、前記レジスタは、前記時分割スキーマに基づいて前記入力スパイクを前記レジスタから再送信するように構成される、請求項1に記載の回路。
【請求項7】
前記ルータおよび前記利得構成コントローラは、前記複数の人工ニューロンの第1の人工ニューロンが第1の利得で前記複数の入力ソースの第1の入力ソースから第1のスパイクを受信し、前記第1の人工ニューロンが前記第1の利得とは独立して設定された第2の利得で前記複数の入力ソースの第2の入力ソースから第2のスパイクを受信することを可能にする、請求項1に記載の回路。
【請求項8】
前記複数の人工ニューロン、前記複数の人工シナプス、前記複数の可変利得増幅器、ルータ、および前記利得構成コントローラは、単一の集積回路上に画定される、請求項1に記載の回路。
【請求項9】
複数の人工ニューロンと、
前記複数の人工ニューロンのうち対応する1つにそれぞれが関連付けられている複数の人工シナプスと、
複数の人工ニューロンのうちの対応する1つにそれぞれが関連付けられている複数の可変利得増幅器と、
複数の入力ソースのうち少なくとも1つを、対応する可変利得増幅器および対応する人工シナプスを介して前記複数の人工ニューロンのそれぞれに接続するように構成されているルータと、
時分割スキーマおよび所与の時間の間にスパイクを送信する入力ソースのアイデンティティに基づいて前記複数の可変利得増幅器のそれぞれに利得を設定するように構成されている利得構成コントローラと
を含み、
前記複数の可変利得増幅器のそれぞれは、対応する人工ニューロンに対して対応する1つの人工シナプスの上流に配置される、回路。
【請求項10】
スパイキング・ニューラル・ネットワーク(SNN)内のニューロンを訓練することと、
訓練に基づいて入力ソースの時分割スキーマを前記ニューロンに割り当てることと、
前記訓練に基づいて、時分割スキーマ内のニューロンの利得を割り当てることと、
前記入力ソースからの入力を受信することと、
前記割り当てられた利得と、所与の入力が受信される所与の入力ソースとに基づいて、所与のニューロンに対する所与の利得を設定することと、
前記利得に従って前記所与の入力を前記所与のニューロンに送信することと
を含む方法。
【請求項11】
前記所与の利得を設定することは、
前記所与の入力が受信された所与の入力ソースのアイデンティティに基づいて前記所与の利得を設定すること
をさらに含む、請求項10に記載の方法。
【請求項12】
前記ニューロンの第1のニューロンは、第1の利得で前記入力ソースの第1の入力ソースから第1の入力を受信し、前記ニューロンの第2のニューロンは、前記第1の利得とは異なる第2の利得で前記第1の入力を受信する、請求項10に記載の方法。
【請求項13】
前記ニューロンの第1のニューロンは、第1の時間で前記入力ソースの第1の入力ソースから第1の入力を受信し、前記ニューロンの第2のニューロンは、前記第1の時間で前記入力ソースの第2の入力ソースから第2の入力を受信する、請求項10に記載の方法。
【請求項14】
前記時分割スキーマにおける対応する時間まで、レジスタに受信された入力を格納すること
をさらに含む、請求項10に記載の方法。
【請求項15】
前記所与の利得を設定することは、
前記所与の入力が受信された所与の入力ソースに関連付けられている前記対応する時間に基づいて、前記所与の利得を設定すること
をさらに含む、請求項14に記載の方法。
【請求項16】
前記入力ソースのうち1つの入力ソースから2つの入力スパイクを受信することに応答して、前記2つの入力スパイクの早期に受信した入力スパイクを前記1つの入力ソースからドロップすること
をさらに含む、請求項14に記載の方法。
【請求項17】
前記ニューロンのうち1つのニューロンへの送信のための1つの時分割の間に、少なくとも2つの入力スパイクを受信することに応答して、前記少なくとも2つの入力スパイクを衝突させること
をさらに含む、請求項14に記載の方法。
【請求項18】
可変利得増幅器を含む信号パスと、
前記信号パスを介して複数の入力ソースに接続された人工ニューロンと、
前記複数の入力ソースのうちの所与の時間の間にスパイクを送信する入力ソースのアイデンティティおよび前記複数の入力ソースに接続されるルータによって生成された時計信号に基づいて可変利得増幅器に利得を設定するように構成された利得構成コントローラと
を含み、
前記時計信号は、前記スパイクおよび設定する利得が同期して受信および増幅されるように前記ルータおよび前記可変利得増幅器を駆動する、システム。
【請求項19】
前記複数の入力ソースに接続され、前記信号パスを介して前記複数の入力ソースのうち1つの入力ソースを一度に前記人工ニューロンに接続するように構成されたルータ
をさらに含む、請求項18に記載のシステム。
【請求項20】
前記利得構成コントローラおよび前記複数の入力ソースに接続されており、前記利得構成コントローラに対し、前記複数の入力ソースのどの入力ソースが前記スパイクを送信しているかを識別するように構成されているルータ
をさらに含む、請求項18に記載のシステム。
【発明の詳細な説明】
【背景技術】
【0001】
人工ニューラル・ネットワーク(ANN)は、人工知能アプリケーションにおいて使用され、脳内の構造物をモデルとしたハードウェアおよびソフトウェアを用いて、天然の脳の学習能力および認識能力をシミュレートする。ニューラル・ネットワークでは、様々なアルゴリズムが、ニューロンと呼ばれる一連の接続されたユニットまたはノードを介して、パターン認識によって様々なタスクを実行するように「教示」することができる。これらのニューロンは、シナプスと呼ばれる接続を介して、ニューラル・ネットワーク内の他のニューロンと入力および出力を内部で共有する。ニューラル・ネットワークが訓練されると、様々なニューロンが、これらのシナプスを越えて様々な他のニューロンから受信される異なる入力に対して異なる重みを提供するように訓練される。
【0002】
スパイキング・ニューラル・ネットワーク(SNN)は、2つのニューロンの間で情報を伝達するために、所与のシナプスに沿った時間的な動作電位または「スパイク」の使用を介して、生物学的ニューラル・ネットワーク(すなわち、動物の脳)の挙動をモデル化する第3世代のANNである。SNNは、人工知能をモデル化するためにより生物的に現実性があると考えられ、超大規模集積(VLSI)回路などのハードウェアとして統合された場合に、ノイズ耐性、低電力、低電圧の実装を提供するとともに、ANNの以前の世代よりも演算面で強力である。
【0003】
ハードウェアにおいてSNNをモデル化する場合は、先代のANNと比較してSNNの豊富な非線形ダイナミクスを実現するために、製作者は(S字型ニューロンまたはパーセプトロンに基づくANNと比較して)さらに多くのトランジスタを使用する必要があるが、このことは、SNNを表現するのに必要な総メモリの増加と、そのようなハードウェア実装の消費電力の相応の増加に繋がることがある。シナプスの数は、典型的には、SNNにおいてニューロンの数に勝るため、SNNは、多数のハードウェアコンポーネント(例えば、トランジスタ)を実装に必要とすることがあり、チップ上に相応の大量のスペースを必要とする。部品を収容するためのより大きなスペースの要求に加えて、追加の部品は、SNNの複雑さの拡大につれて動作にさらに多くの電力を必要とし、それゆえに、SNNを実装するには嵩高く製造の困難な消費電力の大きな回路を生じる。
【発明の概要】
【0004】
本発明の一実施形態によれば、複数の人工ニューロンと、複数の人工ニューロンのうち対応する1つにそれぞれが関連付けられている複数の人工シナプスと、複数の人工ニューロンのうちの対応する1つにそれぞれが関連付けられている複数の可変利得増幅器と、複数の入力ソースのうち少なくとも1つを対応する可変利得増幅器および対応する人工シナプスを介して複数の人工ニューロンのそれぞれに接続するように構成されているルータと、時分割スキーマおよび所与の時間の間にスパイクを送信する入力ソースのアイデンティティに基づいて複数の可変利得増幅器のそれぞれに利得を設定し、それによってスペースをより小さく、実装のためのコンポーネントをより少なく、かつ電力をより少なく使用して、入力ソースとその中に画定されたニューロンとの間に多重の専用経路を含む回路を動作させるように構成されている利得構成コントローラとを、含む回路が提供される。
【0005】
いくつかの態様では、上記または下記のいずれかの回路との組合せで、複数の人工ニューロンのうち所与の人工ニューロンに接続された多数の入力ソースは、時分割スキーマと、複数の入力ソースからのスパイク送信レートとに基づいて、共有する送信経路上での信号衝突の可能性を有利に低減する。
【0006】
いくつかの態様では、上記または下記のいずれかの回路との組合せで、ルータおよび利得構成コントローラは、複数の人工ニューロンの第1の人工ニューロンが第1の利得で複数の入力ソースの第1の入力ソースから第1のスパイクを受信し、複数の人工ニューロンの第2の人工ニューロンが第1の利得とは独立して設定された第2の利得で複数の入力ソースの第1の入力ソースから第1のスパイクを受信することを可能にして、異なるニューロンが互いに独立して入力ソースの効果を解釈することを有利に可能にする。
【0007】
いくつかの態様では、上記または下記のいずれかの回路との組合せで、ルータおよび利得構成コントローラは、複数の人工ニューロンの第1の人工ニューロンが第1の時間の間に複数の入力ソースの第1の入力ソースから第1のスパイクを受信し、複数の人工ニューロンの第2の人工ニューロンが第1の時間で複数の入力ソースの第2の入力ソースから第2のスパイクを受信することを可能にして、異なるニューロンが異なる信号源から独立した信号受信を行うことを有利に可能にする。
【0008】
複数の入力ソースの第1の入力ソースは、第1の送信速度でスパイクを送信し、複数の入力ソースの第2の入力ソースは、第1の送信速度とは異なる第2の送信速度でスパイクを送信して、独立して動作される入力ソースから入力を回路が受け入れることを有利に可能にする。
【0009】
いくつかの態様では、上記または下記のいずれかの回路との組合せで、ルータは、複数の入力ソースからの入力スパイクを受信して格納し、時分割スキーマに基づいて入力スパイクをレジスタから再送信して、共有の送信経路上での信号衝突の可能性を有利に低減するように構成されたレジスタを含む。
【0010】
いくつかの態様では、 上記または下記のいずれかの回路との組合せで、ルータおよび利得構成コントローラは、共有の時計信号を介して制御され、ルータおよび利得構成コントローラの動作を有利に整合させる。
【0011】
いくつかの態様では、 上記または下記のいずれかの回路との組合せで、複数の可変利得増幅器のそれぞれは、対応する人工ニューロンに対して対応する1つの人工シナプスの上流に配置され、入力が受信されたソースに基づいてシナプスがどのように入力を解釈するかを有利に制御する。
【0012】
いくつかの態様では、上記または下記のいずれかの回路との組合せで、複数の人工ニューロン、複数の人工シナプス、複数の可変利得増幅器、ルータ、および利得構成コントローラは、信号遅延を有利に低減し、回路によって提供される空間使用量の低減をより最大限に活用するように、単一の集積回路上に画定される。
【0013】
本発明の一実施形態によれば、スパイキング・ニューラル・ネットワーク(SNN)内のニューロンを訓練することと、訓練に基づいて入力ソースの時分割スキーマをニューロンに割り当てることと、訓練に基づいて、時分割スキーマ内のニューロンの利得を割り当てることと、入力ソースからの入力を受信することと、割り当てられた利得と、所与の入力が受信される所与の入力ソースとに基づいて、所与のニューロンに対する所与の利得を設定することと、利得に従って所与の入力を所与のニューロンに送信し、それによって、スペースをより小さく、実装のためのコンポーネントをより少なく、かつ電力をより少なく使用して、中に画定されたニューロンに対する入力ソースへの複数の専用経路を含む回路を動作させる1つまたは複数の入力ソースに対し共有の送信経路を用いるニューロンを含む回路を動作させることとを含む、方法が提供される。
【0014】
いくつかの態様では、 上記または下記のいずれかの方法との組合せでは、所与の利得を設定することは、所与の入力が受信された所与の入力ソースのアイデンティティに基づいて所与の利得を設定して、共有の送信経路を使用しながら、訓練に基づいて異なる重みを信号に適用することを有利に可能にすることをさらに含む。
【0015】
いくつかの態様では、上記または下記のいずれかの方法との組合せでは、ニューロンの第1のニューロンは、第1の利得で入力ソースの第1の入力ソースから第1の入力を受信し、ニューロンの第2のニューロンは、第1の利得とは異なる第2の利得で第1の入力を受信して、異なるニューロンが互いに独立して入力ソースの効果を解釈することを有利に可能にする。
【0016】
いくつかの態様では、上記または下記のいずれかの方法との組合せでは、ニューロンの第1のニューロンは、第1の時間で入力ソースの第1の入力ソースから第1の入力を受信し、ニューロンの第2のニューロンは、第1の時間で入力ソースの第2の入力ソースから第2の入力を受信して、異なる信号源からの異なるニューロンによる独立した信号受信を有利に可能にする。
【0017】
いくつかの態様では、上記または下記のいずれかの方法との組合せでは、方法は、時分割スキーマにおける対応する時間までレジスタに受信された入力を格納して、共有の送信経路のために時間ベースの多重化スキーマを有利に使用することをさらに含む。
【0018】
いくつかの態様では、上記または下記のいずれかの方法との組合せでは、所定の利得を設定することは、所与の入力が受信された所与の入力ソースに関連付けられている対応する時間に基づいて所与の利得を設定して、共通の送信経路のために時間ベースの多重化スキーマを有利に使用することをさらに含む。
【0019】
いくつかの態様では、上記または下記のいずれかの方法との組合せでは、方法は、入力ソースのうち1つの入力ソースから2つの入力スパイクを受信することに応答して、2つの入力スパイクの早期に受信した入力スパイクを1つの入力ソースからドロップして、共有の送信経路上の信号衝突の効果または頻度を有利に低減することをさらに含む。
【0020】
いくつかの態様では、上記または下記のいずれかの方法との組合せでは、方法は、ニューロンのうち1つのニューロンへの送信のための1つの時分割の間に、少なくとも2つの入力スパイクを受信することに応答して、少なくとも2つの入力スパイクを衝突させて、より少ないソフトウェアの制御ハードウェアを有利に必要とする、およびその代わりに信号衝突を無視または補償するようにSNNの堅牢性に依存することを含む。
【0021】
本発明の一実施形態によれば、可変利得増幅器を含む信号パスと、信号パスを介して複数の入力ソースに接続された人工ニューロンと、複数の入力ソースのうちのどの入力ソースが人工ニューロンに入力スパイクを送信するかに基づいて可変利得増幅器に利得を設定して、ニューロンが共有の送信経路を越えて多重ソースから多重入力を受信するのを有利に可能にし、それによって、それによって、スペースをより小さく、実装のためのコンポーネントをより少なく、かつ電力をより少なく使用して、専用の送信経路を用いてニューロンを動作させるように構成された利得構成コントローラとを含む、システムが提供される。
【0022】
いくつかの態様では、上記または下記のいずれかのシステムとの組合せで、システムは、複数の入力ソースに接続され、信号パスを介して複数の入力ソースのうち1つの入力ソースを一度に人工ニューロンに接続して、共有の送信経路上での信号衝突の可能性を有利に低減するように構成されたルータを、さらに含む。
【0023】
いくつかの態様では、上記または下記のいずれかのシステムとの組合せで、システムは、利得構成コントローラと複数の入力ソースとを接続するルータをさらに含み、ルータは、利得構成コントローラに対して、複数の入力ソースのどの入力ソースが入力スパイクを送信しているかを識別して、どの入力スパイクがどのニューロンにルーティングされるか、およびニューロンと入力ソースとの同一性に基づいてそれらの入力スパイクが受信される利得を有利に制御するように構成されているルータを、さらに含む。
【図面の簡単な説明】
【0024】
図1】本開示の実施形態によるいくつかの入力ソースからの入力を受信するニューロンの一例を示す図である。
図2】本開示の実施形態による、いくつかのニューロンを管理して、いくつかの入力ソースから各ニューロンに対する1つの対応するシナプスを介して入力を受信するための、集積回路レイアウトの一例を示す図である。
図3A】本開示の実施形態による、様々な時刻における様々なスパイク送信を示す図である。
図3B】本開示の実施形態による、様々な時刻における様々なスパイク送信を示す図である。
図3C】本開示の実施形態による、様々な時刻における様々なスパイク送信を示す図である。
図3D】本開示の実施形態による、様々な時刻における様々なスパイク送信を示す図である。
図3E】本開示の実施形態による、様々な時刻における様々なスパイク送信を示す図である。
図4A】本開示の実施形態による人工ニューロンの回路を示す図である。
図4B】本開示の実施形態による人工ニューロンの回路を示す図である。
図5A】本開示の実施形態による人工シナプス用回路を示す図である。
図5B】本開示の実施形態による人工シナプス用回路を示す図である。
図6】本開示の実施形態による、シナプスを再使用する際に使用するための可変利得を割り当てる方法のフローチャートである。
図7】本開示の実施形態による、シナプスを再使用する際に使用するための可変利得を適用する方法のフローチャートである。
図8】本開示の実施形態による集積回路を製作する方法のフローチャートである。
【発明を実施するための形態】
【0025】
本開示は、ニューロンへの多重入力のためにシナプスを再使用することによって、メモリ使用量およびチップ面積を低減させた、SNN(スパイキング・ニューラル・ネットワーク)をハードウェアで実装することを提供する。最大X個の入力を受信するために各ニューロンのX個のシナプスをプロビジョニングする代わりに、シナプス再使用は、ニューロンがX個より少ないシナプスを用いてX個の入力を受信することを可能にする。様々な実施形態では、ニューロンはそれぞれ、時分割多重化(TDM)を用いてそのシナプスの送信経路を共有する最大X個の入力を受信し、ニューロンによってスパイクがどのように受信されるかを調整する、単一の入力シナプスを備える。したがって、ハードウェアで実装されるシナプスの数の低減は、スペース要件、製作に必要なコンポーネントの数、およびこれらのコンポーネントを駆動するのに必要な電力を削減することに繋がる。
【0026】
図1は、本開示の実施形態による、n個の入力ソース120a~n(概して入力ソース120)からの入力を受信するニューロン110の一例を示す。ニューロン110の例示的な回路は、図4Aおよび図4Bに関してより詳細に説明されるが、尤も、他の回路を様々な実施形態で使用することができる。
【0027】
入力ソース120は、ANN (人工ニューラル・ネットワーク)より前の層にあるニューロン110、ANNに入力されるデータの直接供給(例えば、ニューロン110がANNの第1の層にある場合)、またはANN内の同じまたは後の層の別のニューロン110からのフィードバック入力であってもよい。ニューロン110は、入力ソース120から様々なデータを受信し、このデータは、関連付けられた入力ソース120の動作電位が満たされた際に、「スパイク」として受信される。次に、これらの入力は、ニューロン110によって処理されて、いつ出力スパイクを「発火させる」かを決定し、一方で、SNNの出力として、またはSNNにおける別のニューロン110への入力として送信されてもよい。
【0028】
SNNにおいて、ニューロン110は、あり得る時間間隔毎に出力を(必ずしも)生成しない。代わりに、ニューロン110は、以前に与えられた入力に基づいて出力スパイクを生じるか否かを決定する。これらの入力は経時的に減衰し得るが、それゆえに、下流の消費のための出力スパイクをニューロン110が生成するようにニューロン110の動作電位を乗り越えるのに十分な数もしくは強度またはその両方の入力を、所与の期間内に受信する必要がある。したがって、他のニューロン110を含む入力ソース120から受信され得る所与のニューロン110によって受信された入力は、他のニューロン110からの動作電位がいつ満たされるかに応じて、様々な時間で受信される。
【0029】
ニューロン110は、異なる時間に入力ソース120から送られた入力を受け取ることができ、入力ソース120は、あり得る時間間隔毎にニューロン110に信号を(必ずしも)送らないため、ニューロン110は、異なる時間で入力ソース120とニューロン110との間の共有のパスを越えていくつかの入力を受信することができる。入力ソース120からニューロン110への入力を提供するために1つ(または少なくともそれより少ない)信号パスを使用することによって、各入力ソース120とニューロン110との間に用意された専用信号パスを用いる実装と比較して、ニューロン110を画定する集積回路上でハードウェアをより少なく、電力をより少なく、スペースをより少なく使用することができる。例えば、10個の入力ソース120からの入力を受信するように構成されている10個のニューロン110を有する集積回路では、本開示による10個の信号パスのみに比較すると、専用の信号パスが用いられた場合には、100個の信号パスが実装される必要があるものとなる。
【0030】
図2は、本開示の実施形態によるm個のニューロン100a~mのそれぞれについて対応する1つのシナプス210a~m(概して、シナプス210)を介して、最大n個の入力ソース120a~nから入力を受信する最大m個のニューロン110a~mを管理するための、集積回路レイアウト200の一例を図示する。シナプス210の例示的な回路が、図5Aおよび図5Bに関してより詳細に説明されるが、他の回路を様々な実施形態で使用することができる。
【0031】
SNNにおいて、1つの層内の各ニューロン110は、後続の層内の各ニューロン110に必ずしも接続されておらず、代わりに、ルータ220が、特定のニューロン110を有する特定の入力ソース120をリンクするために含まれている。ルータ220からニューロン110a~m内に繋がる各信号パスに含まれているのは、対応する可変利得増幅器250a~m(概して、増幅器250)およびシナプス210a~mである。様々な実施形態では、増幅器250およびシナプス210は、図示された順序または逆の順序で(例えば、関連する増幅器250から上流または下流にシナプス210を有して)、対応する信号パス上に含まれてもよい。様々な実施形態では、ルータ220は、どの入力ソース120およびニューロン110がリンクされるべきかを識別するSNNの訓練フェーズに基づいて、1つまたは複数の入力ソース120a~nを1つまたは複数のニューロン110a~mにリンクまたは接続し、それらがどのSNN訓練の反復後でも調整され得るように構成される。
【0032】
いくつかの実施形態では、SNNの構成に基づいて、全てのニューロン110が全ての入力ソース120からの入力を受信する訳ではないが、ルータ220は任意の特定の入力ソース120を任意の特定のニューロン110に接続することができ、1つの信号パスを越えて1つまたは複数の入力ソース120を1つのニューロン110に接続することができる。例えば、時刻tで、第1の入力ソース120aおよび第2の入力ソース120bは、それぞれ第1のスパイクおよび第2のスパイクを送信し得る。この例では、ルータ220は、第1の入力ソース120aと第2のニューロン110bとを有する第1のニューロン110aを、第2の入力ソース120bに接続するが、第1のニューロン110aを第2の入力ソース120bに、または第2のニューロン110bを第1の入力ソース120aに接続しない。したがって、ルータ220は、スパイクが衝突することなく、多重ニューロン110aが異質な入力ソース120からスパイクを受信することを可能にする。これに対して、上記の例では、ルータ220が第1のニューロン110aを第1の入力ソース120aおよび第2の入力ソース120bにリンクさせると、2つのスパイクが衝突するものとなり、第1のニューロン110aは、入力がどこから受信されたか、そのような入力をどのように扱うかという定義を失うことがある。しかし、様々な他の入力ソース120が、スパイクを互いに同時に送信することを予測(または許可)されていないか、または送信されたスパイクの衝突を避けるようにその他時間的に分離されている際に、ルータ220は、それらの他の入力ソース120を第1のニューロン110aに接続することがある。例えば、時間分割された再送信などのためにルータ220がスパイクをキャッシュする際に、ルータ220は、第1のニューロン110aとn個の異なる入力ソース120a~nとを、そのそれぞれが時間周期の個別の時分割内で送信するように制約されると、接続し得る。
【0033】
様々な実施形態では、ルータ220は、時計信号260に従って駆動され、様々な入力ソース120が様々な時間に様々なニューロン110にどのようにリンクされるかを変更する。例えば、時刻tで、ルータ220は、第1の入力リソース120aを第1のニューロン110aおよび第2のニューロン110bに接続できるが、第3のニューロン110cには接続できない。後の時刻tにおいて、ルータ220は、第2の入力リソース120bを第1のニューロン110a、第2のニューロン110b、および第3のニューロン110cに接続することができる。このような実施形態では、いくつかの入力ソース120が異なる時刻に個々のニューロン110に接続され得るものの、所与のニューロン110に接続された1つの入力リソース120よりも時間がかからないことが、ルータ220により保証される。さらに、ルータ220は、どのニューロン110が所与の時間に入力を受信できるかを変更することができる。したがって、ルータ220は、時分割スキーマに従い、様々なニューロン110と入力ソース120との間の接続を確立または分断して、別々の入力リソース120からの割り当てられた時間枠の外側に生成されたスパイクが、所与のニューロン110のための共有の信号パス越えて衝突するのを防止することができる。
【0034】
いくつかの実施形態では、ルータ220は、各入力ソース120a~nから入力スパイクを受信し、入力スパイクの受信された入力ソース120を識別した後に、入力スパイクを全てのニューロン110a~mに再送信する。入力リソース120の同一性に基づいて、各ニューロン110a~mは、入力スパイクをその入力リソース120に対する独立して調整された利得(入力スパイクをブロックするかまたはその他受信の閾値を入力スパイクが下回るようにする利得を含む-事実上ニューロン110に入力スパイクを受信させないようにする)に従って受信する。この独立して調整された利得は、SNNの訓練または学習フェーズの間、様々な入力リソース120からの入力スパイクのためにニューロン110によって学習された重みに基づいている。
【0035】
様々な実施形態では、ルータ220は、入力ソース120から受信したスパイクを受信して保持し、時分割スキーマ内の指定された時分割でニューロン110に送信するための任意のレジスタ221を含む。例えば、ある1秒の期間を用いた時分割スキーマでは、レジスタ221は、その1秒の期間に受信された任意の入力を保持し、格納されたスパイクを指定された時分割で時間内に送信することができる。レジスタ221は、各入力ソース120のための別々のメモリ・ユニットを含み、次いで、個々の入力ソース120から受信したスパイクを、連結されたニューロン110に再送信することができる。いくつかの実施形態では、レジスタ221は、時計信号260に従って駆動され、メモリに格納されたスパイクをいつ再送信するかを決定するが、その時点で、レジスタ221は、関連付けられた入力ソース120が次の期間に別のスパイクを送るか否かに基づいて、メモリがスパイクを含有する(または含有しない)ことを可能にする。
【0036】
さらに、レジスタ221は、多重入力ソース120からの信号パスを越える衝突を回避する一助となることができる。例えば、2つ(またはそれを超える)入力スパイクが別々の入力ソース120から同じ時刻tに受信される場合、各スパイクは、各入力ソース120に関連付けられたレジスタ221の別々のセクションに保持され、別々の時刻に(例えば、第1の入力スパイクが時刻tに、および第2の入力スパイクが時刻tに)行先ニューロン110に再送信されてもよい。別の例では、2つの(またはそれを超える)入力スパイクが別々の入力リソース120から同じ時刻tに受信される場合、1つのスパイクが、再送信されてもよいし、受信時刻tに行先ニューロン110に送信されることを可能となってもよく、一方、他方の入力スパイクは、後の時点での再送信のためにレジスタ221に保持される。いくつかの実施形態では、レジスタ221は、1つの入力リソース120から期間中に受信した多重信号を結合して、増幅されたスパイクを信号パスに提供することができる。例えば、個々のスパイクがXの振幅で入力リソース120から送信され、1つの入力リソース120が時間内に2つのスパイクを送信する場合、レジスタ221は、その入力リソース120に関連付けられた次の時分割において、2Xの値のスパイクを保持し、再送信することができる。
【0037】
利得設定制御部230は、時分割スキーマに基づいて、個々の可変利得増幅器250a~mが、所与の時刻に、関連付けられた信号パスにどのような利得を適用するかを制御する。
【0038】
いくつかの実施形態では、例えば、第1の増幅器250aは、時刻tでxの利得、時刻tx+1でyの利得、時刻tx+2でzの利得を適用し、このパターンを3時分割毎に繰り返すことができる(例えば、時刻t2xでX、時刻t2x+1でY、時刻t2x+2でZ)。第2から第mの増幅器250~mは、対応するニューロン110がSNNにおいてどのように訓練されたかに基づいて、第1の増幅器250aとは独立して様々な利得を適用する。時計信号260は、利得構成コントローラ230を駆動して、時分割スキーマにおいて異なる時分割で増幅器250a~mに適用される利得を変更する。ルータ220が時計信号260を受信する様々な実施形態では、ルータ220および利得構成コントローラ230は、同じ時計信号260によって駆動され、それゆえに、利得および入力スパイクが互いに同期して受信および増幅されることが保証される。
【0039】
いくつかの実施形態では、時計信号260が、利得構成コントローラ230(および任意選択的にルータ220)の拡張によって、ルータ220とニューロン110との間の信号パスの時分割多重化を制御する。時分割多重化は、入力リソース120から稀にスパイクが受信されるというSNNの性質を利用する。入力リソース120は、一定の信号を送るのではなく、動作電位が満たされた際にスパイクを生成し、そうでなければ動作電位が満たされる次の時間まで静止している。そのため、時計信号に応じて1つの信号パス上に適用された個々の利得を管理することによって、利得構成コントローラ230は、いくつかの入力ソース120により共有されるシナプス210を定義する1組のハードウェアをニューロン110が再使用できることを保証し、それに対応して学習された重みを入力ソース120に適用することができる。
【0040】
いくつかの実施形態では、ルータ220は、スパイクが受信された入力ソース120のアイデンティティに基づいて時計信号260を生成し、この時計信号260は、任意に分割された時分割多重化スキームで利得構成コントローラ230を(増幅器250の拡張によって)制御する。例えば、xミリ秒(ms)毎に新たな時分割に入る代わりに、ルータ220は、入力スパイクが第1の入力リソース120aから受信された際に、第1の入力リソース120aに関連付けられた利得に増幅器250の利得を設定するように、利得構成コントローラ230に信号を送ることができる。同様に、入力スパイクが第2の入力ソース120bからのものであると判定したことに応答して、利得構成コントローラ230は、関連付けられた増幅器250の利得を、第2の入力ソース120bに関連付けられた利得などに設定する。したがって、信号パスは、受信された入力スパイクに基づいて多重化され、異なる入力リソース120に対して異なる時間でシナプス・ハードウェア(例えば、増幅器250、シナプス210、およびトレース)を再使用するように構成される。
【0041】
図3A図3Eは、本開示の実施形態による、様々な時刻における様々なスパイク送信300a~eを示す。関連付けられた入力ソース120の対応するニューロン(110)のためにシナプス210が運ぶ訓練された重みを反映するように増幅器250の利得を一意に設定するよう、利得構成コントローラ230は、ニューロン110と併せてSNNの学習フェーズの一部として訓練される。
【0042】
例えば、図3Aの第1の増幅器250aの第1のスパイク送信300aを考える。図3Aにおいて、第1の入力ソース120aから時刻tで第1のスパイク310が受信され、第1の増幅器250aは、第1のスパイク310に第1の利得を適用して、3の振幅で第1のスパイクを出力する。同様に、増幅器250は、時刻tで第2の入力ソース120bから第2スパイク320を増幅し、時刻tで第3の入力ソース120cから第3のスパイク330を増幅し、時刻tで第4の入力ソース120dから第4のスパイク340を増幅して、そのスパイクが受信された入力ソース120に対する関連付けられた利得を反映する。図示するように、増幅器250は、第2のスパイク320を増幅して2の振幅を有し、第3のスパイク330を増幅して4の振幅を有し、第4のスパイク340を増幅して3の振幅を有する。増幅器250は、所与の入力ソース120に関連付けられている時間(例えば、時計信号駆動性の利得構成コントローラ230によって制御される)に基づいて、または入力ソース120の識別(例えば、ルータ220で決定される)に基づいて、関連付けられた利得のために設定されてもよい。図示するように、第1の増幅器250aは、いくつかの異なる重みを適用することができるが、学習された重みが同じ(例えば、第1のスパイク310と第4のスパイク340)である際には、異なる時刻で/異なる入力ソース120に対して、同じ重みを適用することができる。
【0043】
図3Bは、第2の増幅器250bに対する第2のスパイク送信300bを示し、第2の増幅器250bは、図3Aに図示する第1のスパイク送信300aと同じ時刻t~tで増幅され得る。第2の増幅器250bは、第1の増幅器250aとは異なるシナプス210およびニューロン110(すなわち、第1のシナプス210aおよび第1のニューロン110aではなく第2のシナプス210bおよび第2のニューロン110b)に関連しているため、第2の増幅器250bは独立して制御され、第2のニューロン110bの学習された利得を入力スパイクに適用する。したがって、同じ入力ソース120からスパイクを受信しても、図3Aおよび図3Bにおける第1のスパイク330A、第2のスパイク330B、および第3のスパイク330cの異なる振幅によって標示されるように、それらに適用される利得を異なるものとすることができる。しかし、SNNの訓練は、例えば、どちらも各第4のスパイク340の振幅3を結果として生じる図3Aおよび図3Bの第4の入力ソース120dからスパイクに適用される利得など、異なる増幅器250で同じ入力ソース120に対する同じ利得を与えることができる。
【0044】
図3Cは、第3の増幅器250cに対する第3のスパイク送信300cを図示し、第3の増幅器250は、図3Aに図示する第1のスパイク送信300aと同じ時刻t~tで増幅され得る。様々な実施形態では、増幅器250は、1つまたは複数の入力ソース120に対する関連付けられたシナプス210の受信閾値390を下回る利得に調整され得る。例えば、第3の増幅器250cは、時刻tでまたは第1の入力ソース120aに対して、利得を適用しないか、または第1の時分割の振幅1の受信閾値390を下回る利得を適用するように訓練される。したがって、第1のスパイク310の振幅が受信閾値390よりも小さいため、第3のニューロン110cは、第1のスパイク310を事実上受信しない。
【0045】
図3Dは、図3Aに図示する第1のスパイク送信300aと同じ時刻t~tで増幅され得る第4の増幅器250dに対する第4のスパイク送信300dを図示する。様々な実施形態では、ルータ220は、異なる入力ソース120(およびその異なる数)を異なるシナプス210に同時にリンクすることができる。例えば、図3Aに図示する第1のシナプス210aと同様に、第4シナプス210d(第4の増幅器250dおよび第4のニューロン110dに対応する)は、第1の入力ソース120a、第2の入力ソース120b、および第3の入力ソース120cに連結されている。但し、図3Aの第1のシナプス210aも第4の入力ソース120dに連結されているのに対し、第4のシナプス210dは連結されていない。同様に、第4のシナプス210dは、第5の入力ソース120eに連結されているのに対し、第1シナプス210aは連結されていない。したがって、時刻tにおいて、第1のシナプス210aおよび第4のシナプス210dは、図示された例では、異なる入力ソース120からの入力を受信する。
【0046】
図3Eは、第5の増幅器250eに対する第5のスパイク送信300eを図示し、第5の増幅器250eは、図3Aに図示した第1のスパイク送信300Aと同じ時刻t~tにわたって、しかし異なる速度で、増幅され得る。例えば、第5の増幅器250eは、図3Aの第1の増幅器250aと同様に第1から第4の入力ソース120a~dから入力スパイクを受信して増幅することができるが、第1から第4の入力スパイク310~340とは異なる速度または周波数で受信された第6の入力ソース120fからも入力スパイクを受信し増幅する。図示するように、第5の増幅器250eは、(振幅2に対して)同じ利得を第5の入力スパイク350と第6の入力スパイク360との両方に適用するが、それはどちらも同じ入力ソース120(すなわち、第6の入力ソース120f)から受信されるためである。第6の入力ソース120fは、他の例示された入力ソース120とは異なる速度で入力スパイクを生成し、その場合、ルータ220および利得構成コントローラ230は、関連する時間に関連する利得を適用し、第5のニューロン110eに対する単一の入力信号パス上での衝突を回避する。
【0047】
図4Aは、本開示の実施形態による、人工ニューロン400a(概して、人工ニューロン400)の1つの回路を示し、図4Bは、ニューロン110として用いられ得る人工ニューロン400bの別の回路を示す。理解されるように、図4Aおよび図4Bに示された人工ニューロン400以外の回路が、本開示の様々な実施形態においてニューロン110として用いられてもよく、人工ニューロン400は、ニューロン110としての使用に適した回路コンポーネントおよび構成の非限定的な例として提供される。
【0048】
図4Aでは、第1のトランジスタ410a(概して、トランジスタ410)および第2のトランジスタ410b(どちらもp-チャネルとして図示)は、カレント・ミラーを画定し、活性化電位が満たされた際に人工ニューロン400aの出力を発生する第4のトランジスタ410dおよび第5のトランジスタ410eから形成されるインバータに接続された第3のトランジスタ410cからフィードバックを受信する。第6のトランジスタ410f(各ゲートでイネーブル電圧ENを供給される)が、加算トランジスタとして設けられ、対応するシナプス210からの様々な入力スパイクを経時的に加える。さらに、入力スパイクからの加算電圧を経時的に「リーク」させるために、第7のトランジスタ410g(各ゲートにリーク電圧Vを供給する)とキャパシタ420とが設けられて、加算入力のレベルが経時的に減衰するものとなる。リークにより、ニューロン110は入力が受信されたことを「忘れる」ことが有利に可能となり、それゆえに、出力スパイクを生じるか否かを決定する際に、入力が受信される強度もしくは周波数またはその両方の両方が考慮される。フィードバックにより、ニューロン110は出力スパイクが生成されると「リセットする」ことが有利に可能となり、以後の出力スパイクを発生させるのに十分な強度もしくは周波数またはその両方の新しい入力スパイクのセットが必要となる。
【0049】
図4Bにおいて、人工ニューロン400bは、カレント・ミラー回路と、加算回路と、インバータ回路とを含む。カレント・ミラー回路は、互いのゲートに接続された第1のトランジスタ410aおよび第2のトランジスタ410b(どちらもp-チャネルとして図示)を含む。第1および第2のトランジスタ410a、bのドレインは、対応するシナプス210からの入力に接続されている。経時的に受信した対応するシナプス(210)からの入力スパイクを加えるためのプルアップ・トランジスタとして、第3のトランジスタ410c(n-チャネルとして図示)が設けられている。第4のトランジスタ410d(p-チャネルとして図示)および第5のトランジスタ410e(n-チャネルとして図示)はインバータを形成し、このインバータは、活性化電位が満たされた際に人工ニューロン(400a)の出力を生成する。有利にはリークおよびフィードバック回路を含むニューロン110にわたって、人工ニューロン400bは、より少ない回路コンポーネント(およびそれに対応してより少ない製作スペースおよび動力)を要し、時間的に独立しているため、ある期間にわたって入力を「忘れる」ことがある「リークし易い」ニューロン110に比較して、長期間にわたって入力受信器を用いて出力スパイクを生成することができる。
【0050】
図5Aは、人工シナプス500aの1つの回路(概して、人工シナプス500)を示し、図5Bは、本開示の実施形態によるシナプス210として使用され得る人工シナプス500bの別の回路を示す。理解されるように、図5Aおよび図5Bに示された人工シナプス500以外の回路が、本開示の様々な実施形態でシナプス210として用いられてもよく、人工シナプス500は、シナプス210としての使用に適した回路コンポーネントおよび構成の非限定的な例として提供される。
【0051】
図5Aでは、第1のトランジスタ410aは、対応するゲートで、ルータ220または対応する増幅器250からの入力Vinに接続され、第1のトランジスタ410aのソースは接地されている。第2のトランジスタ410bのソースは、第1のトランジスタ410aのドレインに接続され、人工シナプス500aを越えてスパイクを送信するためにルーティング/スケジューリングされた入力ソース120に基づいて変化し得る重み入力Vが、第2のトランジスタ410bのゲートに接続されている。第2のトランジスタ410bのドレインには、第3のトランジスタ410cおよび第4のトランジスタ410dの各ソースが接続されている。第3のトランジスタ410cのゲートは、人工シナプス500aの閾値レベルに対して入力される閾値電圧Vthrに接続され、第3のトランジスタ410cのソースは、コレクタ電圧Vccを搬送するレールに接続されている。第4のトランジスタ410dのゲートは、コレクタ電圧Vccを搬送するレールにキャパシタ420を介して接続されている。第5のトランジスタ410eは、それぞれ対応するソースおよびドレインによってコレクタ電圧Vccと第4のトランジスタ410dのドレインとを搬送するレールに接続され、ゲートで電圧Vtauに接続されている。人工シナプス500aからの出力は、第4および第5のトランジスタ410d、eのドレインとノードを共有し、入力Vinの満たす人工シナプス500aの動作電位に応じて、対応するニューロン110への入力を行う。
【0052】
図5Bでは、第1のトランジスタ410aは、対応するゲートで、ルータ220または対応する増幅器250からの入力Vinに接続され、第1のトランジスタ410aのソースは接地されている。さらに、第1のトランジスタ410aの本体は、重み入力Vwに接続されており、重み入力Vは、入力Vinの満たす人工シナプス500bの動作電位に応じて、人工シナプス500bを越えてスパイクを送信するためにルーティング/スケジューリングされた入力ソース120に基づいて変化し得る。第2のトランジスタ410bおよび第3のトランジスタ410cのドレインは、対応するニューロン110に接続されたレールに、その入力として接続されている。第2および第3のトランジスタ410b、cのゲートは、相補的なサインの入力に(例えば、サインと、
【0053】
【数1】
【0054】
のそれぞれに)接続されている。第2および第3のトランジスタ410b、cのソースはどちらも、第1のトランジスタのドレインに接続されている。
【0055】
図6は、本開示の実施形態によるシナプス210の再使用時に使用するための可変利得を割り当てるための方法600のフローチャートである。方法600は、ブロック610で開始し、オペレータは、1つまたは複数の入力ソース120からの入力スパイクを搬送するために再使用される1つの対応するシナプス210からそれぞれ入力を受信するいくつかのニューロン110を含むSNNを訓練する。SNNは、様々な機械学習モデルに従って各ニューロン110が各入力ソース120にどの重みを割り当てるかを決定するように、いくつかの反復にわたって訓練されてもよい。
【0056】
ブロック620では、オペレータは、再使用可能なシナプス210を含む信号パス上の増幅器250での使用のために、ニューロン110による訓練中に種々の入力ソース120に割り当てられた重みを利得に翻訳する。
【0057】
ブロック630では、オペレータは、様々な入力ソース120から再使用可能なシナプス210を介して搬送されるべき入力スパイクに対し時分割スキーマを割り当てる。
【0058】
いくつかの実施形態では、時間分割スキーマは実時間を割り当て、その実時間の間に、入力ソース120から(例えば、ルータ220のレジスタ221で)受信した信号は、ニューロン110に再送信され、増幅器250は、ブロック620毎に割り当てられた対応する利得に設定される。このような実施形態では、利得構成コントローラ230およびルータ220は、レジスタ221に格納された所与の入力ソース120からいつスパイクを送信するか、ならびに対応する入力ソース120の時間もしくは識別またはその両方に基づいて様々な増幅器250にどの利得を設定するかを決定するように、共有の時計信号260によって制御される。
【0059】
いくつかの実施形態では、時間分割スキーマは、スパイクとスパイクが受信された入力ソース120の識別とを受信することに応答して動作する。このような実施形態では、ルータ220は、入力スパイクが受信された入力ソース120の識別を利得構成コントローラ230)に指示し、利得構成コントローラ230は、その同一性に従って増幅器250の利得を設定する。それゆえに増幅器250の利得は、続いて入力スパイクが受信されるまでセットされたままであり、その時点で、ルータ220は、増幅器250によって適用される利得を更新する利得構成コントローラ230への新しい入力ソース120を識別する。また、増幅器250が設定されている利得を利得構成コントローラ230が変更する際に、ルータ220の指示する入力ソース120と利得構成コントローラ230との同一性を用いて時計信号260を送ってもよい。
【0060】
ブロック640では、オペレータは、訓練に基づいて時分割スキーマ内に利得を割り当てる。様々な実施形態では、特定の入力ソース120から入力スパイクを受信することに応答して特定の増幅器250に適用される利得は、利得構成コントローラ230内のルックアップ・テーブルまたは他の論理構造に格納される。次いで、方法600は完結し得る。
【0061】
図7は、本開示の実施形態による、シナプスを再使用する際に使用するための可変利得を適用する方法700のフローチャートである。方法700は、ブロック710で始まり、ブロック710では、ルータ220は、特定の入力ソース120から入力スパイクを受信する。ルータ220は、各入力ソース120および各ニューロン110に接続されるが、入力ソース120をニューロン110に選択的にリンクすることができる(すなわち、全てのニューロン110が必ずしも全ての入力ソース120に接続される訳ではない)。いくつかの実施形態では、ルータ220が循環し、ルータ220を介して入力ソース120が時計信号260に基づきニューロン110に接続されている。
【0062】
任意選択的にブロック720では、ルータ220は、レジスタ221または他のキャッシング・デバイスを含み、入力スパイクが時分割スキーマに従って所定の時間に行先ニューロン110に進められるか、または入力スパイクが個々のニューロン110によって用いられる共用の入力パスを越えて他の入力スパイクと衝突しないことを保証する。そうでない場合は、ルータ220は、入力スパイクをレジスタ221に格納することなく、信号パスを越えて入力スパイクをニューロン110に進めることができるため、方法700は、ブロック720を実行せずにブロック730に進むことができる。
【0063】
ブロック730では、利得構成コントローラ230は、入力スパイクをニューロン110に送信する入力ソース120に基づいて増幅器250の利得を調整する。様々な実施形態では、利得構成コントローラ230は、各ニューロン110が1つの入力ソース120からの入力スパイクに割り当てる学習した重みに基づいて、第1の増幅器250a(第1のニューロン110aに対応)の利得を、第2の増幅器250b(第2のニューロン110bに対応)の利得とは独立して設定する。いくつかの実施形態では、第1の入力ソース120aを第1のニューロン110aに、第2の入力ソース120bを第2のニューロン110bにリンクするルータ220と、それぞれリンクされた入力ソースにこれらのニューロン110により割り当てられた関連付けられた重みとに基づいて、利得構成コントローラ230は、第1の増幅器250a(第1のニューロン110aに対応)の利得を、第2の増幅器250b(第2のニューロン110bに対応)の利得とは独立して設定する。したがって、いくつかの入力ソース120は、入力スパイクに適用される多様な重みを有する所与のニューロン110に、単一の経路を越えてリンクされ、それゆえに、所与のニューロン110を含むニューラル・ネットワークを表すのに必要なハードウェアの量を減少させることができる。
【0064】
ブロック740では、入力スパイクは、行先ニューロン110に伝わる。入力スパイクは、ルータ220から各行先ニューロン110へ、増幅器250とその1つのニューロン110に対応するシナプス210とを含む共有の信号パスを介して移動する。増幅器250は、学習した利得を入力スパイクに適用し、シナプス210は、入力スパイクをブロックするかまたは対応するニューロン110に前進させるかを判定する。次いで、方法700は完結し得る。
【0065】
図8は、本開示の実施形態による集積回路を製作する方法800のフローチャートである。方法800のブロックが図8に設定された順序で提示されているが、当業者は、回路の作製が多くの場合に層で行われる、すなわち、所与の層上に異なるコンポーネントのいくつかの部分を形成し得る添加プロセスにおいて、回路のコンポーネントをベースまたは基板層からパターニングし堆積させることを理解するものとなる。製作プロセスはまた、後の添加ステップで追加の材料が堆積されるボイドまたは領域を画定するために、材料を除去するためのエッチングまたはアブレーションのステップを含むことがある。そのため、方法800の要素は、少なくとも部分的に並行して実行され、最初/最後に実行される要素がないことが理解できよう。
【0066】
ブロック810では、製造者は、ルータ220をパターニングする。ルータ220は、1つまたは複数の入力ソース120を、チップ上に画定された1つまたは複数のニューロン110に接続する(例えば、ブロック820)。様々な実施形態では、製造者は、チップ上に画定された他のニューロン110として入力ソース120をパターニングするか、または、ルータ220内に入力されることによってチップ上のニューロン110に送信されるようにチップ外ニューロン110またはデータ・ソースのトレースをパターニングしてもよい。
【0067】
ブロック820では、製作者は、ニューロン110をパターニングする。ニューロン110は、1つまたは複数のトランジスタを含み、レジスタ、キャパシタ、およびインダクタを含んで回路内のSNNのアルゴリズムまたは論理演算を表すことがあり、この回路は、ある期間にわたって以前の入力を減衰するかまたは「忘れる」能力を有するメモリを含む。ニューロン110は、ニューロン110によって具現化された論理演算が満たされた際に出力スパイクが送信される出力ポートを含む。様々な実施形態では、ニューロン110は、入力ソース120として、同じまたは異なるチップ上の他のニューロン110にリンクされる。
【0068】
ブロック830では、製作者は、ルータ220とニューロン110との間に信号パスをパターニングし、信号パスは、増幅器250とシナプス210とを含む。各ニューロン110は、1つの信号パスに関連付けられ、信号パスは、対応する増幅器250と1つのシナプス210とを含む。様々な実施形態では、シナプス210は、増幅器250の上流に位置する(すなわち、対応するニューロン110からは増幅器250よりも遠い)が、他の実施形態sシナプス210は、増幅器250の下流に位置する(すなわち、対応するニューロン110からは増幅器250よりも近い)。増幅器250は、利得構成コントローラ230からの制御信号に基づいて可変利得を提供するように制御可能である。各シナプス210は、少なくとも1つのトランジスタを含み、閾値を満たすシナプス210によって受信された入力スパイクに応答して、対応するニューロン110に進められる出力を生じるためのその閾値により構成される。
【0069】
ブロック840では、製作者は、利得構成コントローラ230をパターニングする。様々な実施形態では、利得構成コントローラ230は、増幅器250と時計信号260およびルータ220に対する1つまたは複数のジェネレータとに接続された論理制御ユニットまたはマイクロプロセッサである。様々な実施形態では、製作者は、利得構成コントローラ230のメモリ(例えば、電気的に消去可能なプログラム可能な読出し専用メモリ(EEPROM))に制御ロジックを符号化して、どのような条件下で(例えば、時分割スキーマおよびSNNの訓練に基づいて)、どのような利得に各増幅器250を設定するかを制御する。
【0070】
製作者は、単一チップまたは他の超大規模集積(VLSI)回路上でブロック810~840を実行してもよいし、別々のチップ上でブロック810~840のうちの1つまたは複数を実行し、別々のチップを合わせて接続して回路を形成してもよい。例えば、製作者は、他のコンポーネントとは別に利得構成コントローラ230を製作(または第2の制作者を使用)して、利得構成コントローラ230を他のコンポーネントと統合することによってブロック840を実行してもよい。
【0071】
本発明の様々な実施形態の説明が、例示のために提示されてきたが、網羅的であること、または開示された実施形態に限定されることを意図するものではない。記載された実施形態の範囲および趣旨から逸脱することなく、多くの修正および変形が当業者には明らかになるであろう。本明細書で使用される用語は、実施形態の原理、実用的な適用、もしくは市場で発見された技術を超える技術的な改善を最も良く説明するために、または本明細書に開示された実施形態を他の当業者が理解することを可能にするように選択されたものである。
【0072】
以下、本開示に提示される実施形態を参照する。但し、本開示の範囲は、具体的に記載される実施形態に限定されるものではない。代わりに、異なる実施形態に関連するか否かにかかわらず、以下の特徴および要素の任意の組合せが、想定された実施形態を実装し実践することが想定されている。さらに、本明細書に開示された実施形態は、他の可能な解決策を超えるかまたは従来技術に勝る利点を達成し得るが、所与の実施形態によって特定の利点が達成されるか否かは、本開示の範囲を限定するものではない。そのため、以下の態様、特徴、実施形態、および利点は、例証に過ぎず、特許請求の範囲に明示的に記載されている場合を除いて、添付の特許請求の範囲の要素または限定を考慮されていない。同様に、「本発明」は、本明細書に開示される本発明の主題の一般化として解釈されるべきではなく、特許請求の範囲に明示的に記載されている場合を除いて、添付の特許請求の範囲の要素または限定であるものと考えられるべきではない。
【0073】
本発明の態様は、全体的にハードウェアの実施形態、全体的にソフトウェアの実施形態(ファームウェア、常駐ソフトウェア、マイクロコードなどを含む)、または概して本明細書では「回路」、「モジュール」または「システム」と呼ばれることがあるソフトウェアおよびハードウェアの態様を組み合わせた実施形態の形態をとることができる。
【0074】
本発明は、システム、方法、もしくはコンピュータ・プログラム製品、またはそれらの組合せであり得る。コンピュータ・プログラム製品は、プロセッサに本発明の態様を行わせるためのコンピュータ可読プログラム命令をその上に有するコンピュータ可読記憶媒体(または複数の媒体)を含んでいてもよい。
【0075】
コンピュータ可読記憶媒体は、命令実行デバイスによる使用のための命令を保持および格納することができる有形デバイスとすることができる。コンピュータ可読記憶媒体は、以下に限定されないが、例えば、電子記憶デバイス、磁気記憶デバイス、光記憶デバイス、電磁記憶デバイス、半導体記憶デバイス、または前述の任意の適した組合せとしてよい。コンピュータ可読記憶媒体のより具体的な例の非網羅的な一覧としては、ポータブル・コンピュータ・ディスケット、ハードディスク、ランダム・アクセス・メモリ(RAM)、読出し専用メモリ(ROM)、消去可能なプログラム可能な読出し専用メモリ(EPROMまたはフラッシュメモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク読出し専用メモリ(CD-ROM)、デジタル汎用ディスク(DVD)、メモリ・スティック、フロッピー・ディスク、機械的に符号化されたデバイス、例えば、命令を上に記録したパンチ・カードまたは溝内の隆起構造など、および前述の任意の適切な組合せが挙げられる。コンピュータ可読記憶媒体は、本明細書で使用される際に、それ自体が電波または他の自由に伝搬する電磁波、導波管または他の送信媒体(例えば、光ファイバ・ケーブルを通る光パルス)を伝搬する電磁波、またはワイヤを介して送信される電気信号などの一時的な信号であるものと解釈されるべきではない。
【0076】
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体から各演算/処理デバイスに、またはネットワーク、例えば、インターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、もしくは無線ネットワーク、またはそれらの組合せを介して外部コンピュータまたは外部記憶装置に、ダウンロードすることができる。ネットワークは、銅送信ケーブル、光送信ファイバ、無線送信、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、もしくはエッジ・サーバ、またはそれらの組合せを含むことができる。各演算/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、各演算/処理デバイス内のコンピュータ可読記憶媒体に格納するためにコンピュータ可読プログラム命令を送る。
【0077】
本発明の動作を実施するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、または1つもしくは複数のプログラミング言語の任意の組み合わせで書かれたソースコードもしくはオブジェクトコードのいずれかとしてよく、プログラミング言語としては、Smalltalk、C++などのオブジェクト指向プログラミング言語と、および「C」プログラミング言語または同様のプログラミング言語などの従来の手続き型プログラミング言語が挙げられる。コンピュータ可読プログラム命令は、ユーザのコンピュータ上で全体的に、ユーザのコンピュータ上で部分的に、スタンドアロン・ソフトウェア・パッケージとして、ユーザのコンピュータ上で部分的にかつリモート・コンピュータ上に部分的に、またはリモート・コンピュータ上で部分的にもしくはリモート・コンピュータ上で全体的に、実行してもよい。後者のシナリオでは、リモート・コンピュータが、ローカル・エリア・ネットワーク(LAN)または広域ネットワーク(WAN)を含めた任意のタイプのネットワークを介してユーザのコンピュータに接続されていてもよいし、または接続が、外部コンピュータに(例えば、インターネットサービスプロバイダを用いてインターネットを介して)なされていてもよい。いくつかの実施形態では、例えば、プログラム可能なロジック回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラム可能なロジックアレイ(PLA)を含めた電子回路は、本発明の態様を実施するために、コンピュータ可読プログラム命令の状態情報によって、コンピュータ可読プログラム命令を実行してもよい。
【0078】
本発明の態様は、本発明の実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図もしくはブロック図またはその両方を参照して本明細書に説明される。フローチャート図もしくはブロック図またはその両方の各ブロック、ならびにフローチャート図もしくはブロック図またはその両方におけるブロックの組合せは、コンピュータ可読プログラム命令によって実装できることが理解されよう。
【0079】
これらのコンピュータ可読プログラム命令は、汎用コンピュータ、専用コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサに提供されて、コンピュータまたは他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令がフローチャートもしくはブロック図またはその両方の1つまたは複数のブロックにおいて指定された機能/動作を実装する手段を生成するように、機械を生成し得る。これらのコンピュータ可読プログラム命令はまた、コンピュータ、プログラム可能なデータ処理装置、もしくは他のデバイス、またはそれらの組合せを特定の方法で機能させることのできるコンピュータ可読記憶媒体に格納されてもよく、ゆえに、命令を中に格納したコンピュータ可読記憶媒体は、フローチャートもしくはブロック図またはその両方の1つまたは複数のブロックにおいて指定された機能/動作の態様を実装する命令を含む、製品を含み得る。
【0080】
コンピュータ可読プログラム命令はまた、コンピュータ、他のプログラム可能な装置、または他のデバイス上で実行される命令がフローチャートもしくはブロック図またはその両方の1つまたは複数のブロックにおいて指定された機能/動作を実装するように、コンピュータ、他のプログラム可能なデータ処理装置、または他のデバイス上にロードされて、一連の動作ステップをコンピュータ、他のプログラマブル装置、または他のデバイス上で実施させて、コンピュータ実装プロセスを生じる。
【0081】
図中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実施形態のアーキテクチャ、機能性、および動作を説明する。この点に関して、フローチャートまたはブロック図の各ブロックは、指定されたロジック機能を実装するための1つまたは複数の実行可能な命令を含む、命令のモジュール、セグメント、または部分を表すことがある。いくつかの代替的な実施形態では、ブロックに記載された機能は、図に記載された順序の外に生じ得る。例えば、連続して示される2つのブロックが、実際には、実質的に同時に実行されてもよいし、またはブロックが、関与する機能性に応じて、逆の順序で実行されてもよい。また、ブロック図もしくはフローチャート図またはその両方の各ブロック、ならびにブロック図もしくはフローチャート図またはその両方におけるブロックの組合せは、指定された機能もしくは動作を実行するか、または専用ハードウェアとコンピュータ命令との組合せを実施する、専用ハードウェアベースのシステムによって実装できることに留意されたい。
【0082】
前述の記載は本発明の実施形態を対象とするが、本発明の他のまたはさらに別の実施形態が、その基本的な範囲から逸脱することなく考案されてもよく、その範囲は、下記の特許請求の範囲により決定される。
図1
図2
図3A
図3B
図3C
図3D
図3E
図4A
図4B
図5A
図5B
図6
図7
図8