したがって、上記で識別された欠点のうちの少なくともいくつかに対処する方法、回路、および/またはインターフェースが必要である。訓練されたニューラルネットワークをモデル化し、かつ本明細書に記載される手法に従って製造されたアナログ回路は、改善されたワット当たりの性能の利点を提供することができ、エッジ環境でハードウェアソリューションを実装するのに有用であり得、ドローンナビゲーションおよび自律車などの多様なアプリケーションに取り組むことができる。提案された製造方法および/またはアナログネットワークアーキテクチャによって提供されるコスト上の利点は、ニューラルネットワークが大型になるとさらに顕著である。また、ニューラルネットワークのアナログハードウェア実装態様は、改善された並列性およびニューロモルフィズムを提供する。さらに、ニューロモルフィックアナログコンポーネントは、デジタル対応物と比較すると、ノイズおよび温度変化に感度を有していない。
本明細書に記載される手法に従って製造されたチップは、サイズ、電力、および性能において従来のシステムに比して桁違いの改善を提供し、再訓練目的を含めてエッジ環境に理想的である。そのようなアナログニューロモルフィックチップは、エッジコンピューティングアプリケーションを実装するために、または物のインターネット(IoT)環境で使用され得る。アナログハードウェアに起因して、80~90%を超える電力を消費し得る初期処理(例えば、画像認識のための記述子の形成)を、チップ上で移動させることができ、それによって、エネルギー消費およびネットワーク負荷を低減し、アプリケーションの新たな市場を開くことができる。
様々なエッジアプリケーションが、そのようなアナログハードウェアの使用から利益を得ることができる。例えば、ビデオ処理のために、本明細書に記載される手法を使用して、デジタルインターフェースなしでCMOSセンサに直接接続することを含むことができる。他の様々なビデオ処理アプリケーションには、自動車の道路標識認識、ロボットのカメラベースのトゥルーデプスならびに/または同時ローカリゼーションおよびマッピング、サーバ接続なしのルームアクセス制御、ならびにセキュリティおよびヘルスケアの常時オンソリューションが含まれる。そのようなチップは、レーダおよびライダからのデータ処理、ならびに低レベルのデータ融合に使用され得る。そのような手法を使用して、大型電池パックの電池管理機能、データセンタへの接続なしでの音声/発声処理、モバイルデバイスでの発声認識、IoTセンサのウェイクアップ発話命令、ある言語を別の言語に翻訳するトランスレータ、低信号強度を用いるIoTの大型センサアレイ、および/または何百ものセンサを用いる構成可能なプロセス制御を実装することができる。
標準的なソフトウェアベースのニューラルネットワークシミュレーション/訓練の後に、いくつかの実装態様による、ニューロモルフィックアナログチップが、大量生産され得る。クライアントのニューラルネットワークは、ニューラルネットワークの構造にかかわらず、カスタマイズされたチップ設計および製造で容易にポーティングされ得る。さらに、いくつかの実装態様による、オンチップソリューション(ネットワークエミュレータ)を直ちに図ることができるライブラリが提供される。そのようなソリューションは、訓練、1つのリソグラフィマスクの変更、それに続くチップの大量生産のみを必要とする。例えば、チップの製造中に、リソグラフィマスクの一部のみを変更すればよい。
本明細書に記載される手法を使用して、訓練されたニューラルネットワーク(フィードフォワードニューラルネットワークまたは回帰型ニューラルネットワークのいずれか)と数学的に同等であるアナログニューロモルフィック集積回路を設計および/または製造することができる。いくつかの実装態様によれば、プロセスは、標準要素からなる変換されたネットワークに最初に変換される、訓練されたニューラルネットワークから始まる。変換されたネットワークの動作は、標準要素を表す既知のモデルを有するソフトウェアを使用してシミュレートされる。ソフトウェアシミュレーションを使用して、変換されたネットワーク内の抵抗器の各々について個々の抵抗値を決定する。変換されたネットワーク内の標準要素の配置に基づいて、リソグラフィマスクがレイアウトされる。標準要素の各々は、プロセスを簡素化および高速化するために、標準要素に対応する既存の回路ライブラリを使用してマスクにレイアウトされる。いくつかの実装態様では、抵抗器は、変換されたネットワーク内の他の要素(例えば、演算増幅器)を含むマスクとは別の1つ以上のマスクにレイアウトされる。このようにして、ニューラルネットワークが再訓練される場合、再訓練されたニューラルネットワーク内の新たな重みを表す、抵抗器または他のタイプの固定抵抗要素を含むマスクのみが再生される必要があり、これにより、プロセスが、簡素化および高速化される。その後、リソグラフィマスクは、アナログニューロモルフィック集積回路を製造するためのファブに送られる。
一態様では、いくつかの実装態様による、ニューラルネットワークのハードウェア実現のための方法が提供される。方法は、ニューラルネットワークトポロジおよび訓練されたニューラルネットワークの重みを取得することを含む。方法はまた、ニューラルネットワークトポロジを、アナログコンポーネントの同等なアナログネットワークに変換することを含む。方法はまた、訓練されたニューラルネットワークの重みに基づいて、同等なアナログネットワークの重み行列を計算することを含む。重み行列の各要素は、同等なアナログネットワークのアナログコンポーネント間のそれぞれの接続を表す。方法はまた、アナログコンポーネントのコンポーネント値を選択することを含む、重み行列に基づいて同等なアナログネットワークを実装するための概略モデルを生成することを含む。
いくつかの実装態様では、概略モデルを生成することは、重み行列の抵抗行列を生成することを含む。抵抗行列の各要素は、重み行列のそれぞれの重みに対応し、抵抗値を表す。
いくつかの実装態様では、方法は、訓練されたニューラルネットワークの新たな重みを取得することと、新たな重みに基づいて同等なアナログネットワークの新たな重み行列を計算することと、新たな重み行列の新たな抵抗行列を生成することと、をさらに含む。
いくつかの実装態様では、ニューラルネットワークトポロジは、ニューロンの1つ以上の層を含み、ニューロンの各層は、それぞれの数学的関数に基づいてそれぞれの出力を計算し、ニューラルネットワークトポロジをアナログコンポーネントの同等なアナログネットワークに変換することは、ニューロンの1つ以上の層の各層について、(i)それぞれの層について、それぞれの数学的関数に基づいて、1つ以上の関数ブロックを識別することを含む。各関数ブロックは、それぞれの数学的関数の出力に適合するブロック出力を有するそれぞれの概略的な実装態様を有し、(ii)1つ以上の関数ブロックを配置することに基づいて、アナログニューロンのそれぞれの多層ネットワークを生成する。各アナログニューロンは、1つ以上の関数ブロックのそれぞれの関数を実装し、多層ネットワークの第1の層の各アナログニューロンは、多層ネットワークの第2の層の1つ以上のアナログニューロンに接続されている。
いくつかの実装態様では、1つ以上の関数ブロックは、以下からなる群から選択される1つ以上の基底関数ブロックを含む。(i)ブロック出力
を有する加重和ブロック。ReLUは、整流線形ユニット(ReLU)活性化関数または同様の活性化関数であり、Viは、i番目の入力を表し、wiは、i番目の入力に対応する重みを表し、バイアスは、バイアス値を表し、Σは、総和演算子であり、(ii)ブロック出力Vout=coeff.Vi.Vjを有する信号乗算器ブロック。Viは、i番目の入力を表し、Vjは、j番目の入力を表し、coeffは、所定の係数であり、(iii)ブロック出力
を有するシグモイド活性化ブロック。Vは、入力であり、AおよびBは、シグモイド活性化ブロックの所定の係数値であり、(iv)ブロック出力Vout=A*tanh(B*Vin)を有する双曲線正接活性化ブロック。Vinは、入力を表し、AおよびBは、所定の係数値であり、および(v)ブロック出力U(t)=V(t-dt)を有する信号遅延ブロック。tは、現在の期間であり、V(t-dt)は、前の期間t-dtの信号遅延ブロックの出力を表し、dtは、遅延値である。
いくつかの実装態様では、1つ以上の関数ブロックを識別することは、それぞれの層のタイプに基づいて1つ以上の関数ブロックを選択することを含む。
いくつかの実装態様では、ニューラルネットワークトポロジは、ニューロンの1つ以上の層を含み、ニューロンの各層は、それぞれの数学的関数に基づいてそれぞれの出力を計算し、ニューラルネットワークトポロジをアナログコンポーネントの同等なアナログネットワークに変換することは、以下を含む。(i)ニューラルネットワークトポロジの第1の層を複数のサブ層に分解することであって、第1の層に対応する数学的関数を分解して1つ以上の中間数学的関数を取得することを含む、分解すること。各サブ層は、中間数学的関数を実装し、ならびに(ii)ニューラルネットワークトポロジの第1の層の各サブ層について、(a)それぞれの中間数学的関数に基づいて、それぞれのサブ層のために1つ以上のサブ関数ブロックを選択すること、および(b)1つ以上のサブ関数ブロックを配置することに基づいて、アナログニューロンのそれぞれの多層アナログサブネットワークを生成すること。各アナログニューロンは、1つ以上のサブ関数ブロックのそれぞれの関数を実装し、多層アナログサブネットワークの第1の層の各アナログニューロンは、多層アナログサブネットワークの第2の層の1つ以上のアナログニューロンに接続されている。
いくつかの実装態様では、第1の層に対応する数学的関数は、1つ以上の重みを含み、数学的関数を分解することは、1つ以上の中間関数を組み合わせることが数学的関数をもたらすように1つ以上の重みを調整することを含む。
いくつかの実装態様では、方法は、(i)ニューラルネットワークトポロジの1つ以上の出力層についてデジタルコンポーネントの同等なデジタルネットワークを生成することと、(ii)同等なアナログネットワークの1つ以上の層の出力をデジタルコンポーネントの同等なデジタルネットワークに接続することと、をさらに含む。
いくつかの実装態様では、アナログコンポーネントは、複数の演算増幅器および複数の抵抗器を含み、各演算増幅器は、同等なアナログネットワークのアナログニューロンを表し、各抵抗器は、2つのアナログニューロン間の接続を表す。
いくつかの実装態様では、アナログコンポーネントのコンポーネント値を選択することは、勾配降下方法を実行して、複数の抵抗器の可能な抵抗値を識別することを含む。
いくつかの実装態様では、ニューラルネットワークトポロジは、1つ以上のGRUまたはLSTMニューロンを含み、ニューラルネットワークトポロジを変換することは、1つ以上のGRUニューロンまたはLSTMニューロンの各回帰接続のための1つ以上の信号遅延ブロックを生成することを含む。
いくつかの実装態様では、1つ以上の信号遅延ブロックは、ニューラルネットワークトポロジに対する所定の入力信号周波数と一致する周波数で活性化される。
いくつかの実装態様では、ニューラルネットワークトポロジは、制限されない活性化関数を実行するニューロンの1つ以上の層を含み、ニューラルネットワークトポロジを変換することは、(i)制限されない活性化関数を制限された活性化で置換することと、(ii)所定の1つ以上の入力のために、訓練されたニューラルネットワークと同等なアナログネットワークとの間の出力の差が最小化されるように、同等なアナログネットワークの接続または重みを調整することと、からなる群から選択される1つ以上の変換を適用することを含む。
いくつかの実装態様では、方法は、抵抗行列に基づいて、アナログコンポーネントの同等なアナログネットワークを実装する回路を作製するための1つ以上のリソグラフィマスクを生成することをさらに含む。
いくつかの実装態様では、方法は、(i)訓練されたニューラルネットワークの新たな重みを取得することと、(ii)新たな重みに基づいて同等なアナログネットワークの新たな重み行列を計算することと、(iii)新たな重み行列の新たな抵抗行列を生成することと、(iv)新たな抵抗行列に基づいてアナログコンポーネントの同等なアナログネットワークを実装する回路を作製するための新たなリソグラフィマスクを生成することと、をさらに含む。
いくつかの実装態様では、訓練されたニューラルネットワークは、重みを生成するためのソフトウェアシミュレーションを使用して訓練されている。
別の態様では、いくつかの実装態様による、ニューラルネットワークのハードウェア実現のための方法が提供される。方法は、ニューラルネットワークトポロジ、および訓練されたニューラルネットワークの重みを取得することを含む。方法はまた、アナログ集積回路(IC)設計制約に基づいて、1つ以上の結合制約を計算することを含む。方法はまた、ニューラルネットワークトポロジを、1つ以上の結合制約を満たすアナログコンポーネントの同等な疎結合ネットワークに変換することを含む。方法はまた、訓練されたニューラルネットワークの重みに基づいて、同等な疎結合ネットワークの重み行列を計算することを含む。重み行列の各要素は、同等な疎結合ネットワークのアナログコンポーネント間のそれぞれの接続を表す。
いくつかの実装態様では、ニューラルネットワークトポロジをアナログコンポーネントの同等な疎結合ネットワークに変換することは、1つ以上の結合制約に従って、可能な入力結合度Niおよび出力結合度Noを導出することを含む。
いくつかの実装態様では、ニューラルネットワークトポロジは、K個の入力およびL個の出力および重み行列Uを有する少なくとも1つの密結合層を含む。そのような場合、少なくとも1つの密結合層を変換することは、入力結合度がNiを超えず、かつ出力結合度がNoを超えないように、K個の入力、L個の出力および
層を有する同等な疎結合ネットワークを構築することを含む。
いくつかの実装態様では、ニューラルネットワークトポロジは、K個の入力およびL個の出力および重み行列Uを有する少なくとも1つの密結合層を含む。そのような場合、少なくとも1つの密結合層を変換することは、K個の入力、L個の出力、および
個の層を有する同等な疎結合ネットワークを構築することを含む。各層mは、対応する重み行列Umによって表され、ここで、欠けている接続は、入力結合度がNiを超えず、かつ出力結合度がNoを超えないように、ゼロで表される式U=Πm=1..MUmは、所定の精度で満たされる。
いくつかの実装態様では、ニューラルネットワークトポロジは、K個の入力およびL個の出力、Piの最大入力結合度、Poの最大出力結合度、ならびにUの重み行列を有する単一の疎結合層を含み、欠けている接続は、ゼロで表される。そのような場合、単一の疎結合層を変換することは、入力結合度がNiを超えず、かつ出力結合度がNoを超えないように、K個の入力、L個の出力、各層mが、対応する重み行列Umによって表される、
層を有する、同等な疎結合ネットワークを構築することを含み、欠けている接続は、ゼロで表される。式U=Πm=1..MUmは、所定の精度で満たされる。
いくつかの実装態様では、ニューラルネットワークトポロジは、K個の入力およびL個の出力を有する畳み込み層を含む。そのような場合、ニューラルネットワークトポロジをアナログコンポーネントの同等な疎結合ネットワークに変換することは、畳み込み層を、K個の入力、L個の出力、Piの最大入力結合度、およびPoの最大出力結合度を有する単一の疎結合層に分解することを含む。Pi≦NiおよびPo≦No。
いくつかの実装態様では、重み行列を利用して同等な疎結合ネットワークを実装するための概略モデルを生成する。
いくつかの実装態様では、ニューラルネットワークトポロジは、回帰型ニューラル層を含む。そのような場合、ニューラルネットワークトポロジをアナログコンポーネントの同等な疎結合ネットワークに変換することは、回帰型ニューラル層を、信号遅延接続を有する1つ以上の密結合層または疎結合層に変換することを含む。
いくつかの実装態様では、ニューラルネットワークトポロジは、回帰型ニューラル層を含む。そのような場合、ニューラルネットワークトポロジをアナログコンポーネントの同等な疎結合ネットワークに変換することは、回帰型ニューラル層をいくつかの層に分解することを含み、層のうちの少なくとも1つは、K個の入力およびL個の出力および重み行列Uを有する密結合層または疎結合層と同等であり、欠けている接続は、ゼロで表される。
いくつかの実装態様では、ニューラルネットワークトポロジは、K個の入力、重みベクトルU∈RK、および活性化関数Fを有する計算ニューロンを有する単層パーセプトロンを含む。そのような場合、ニューラルネットワークトポロジをアナログコンポーネントの同等な疎結合ネットワークに変換することは、(i)1つ以上の結合制約に従って同等な疎結合ネットワークの結合度Nを導出することと、(ii)式
を使用して同等な疎結合ネットワークの層の数mを計算することと、(iii)K個の入力、m個の層、および結合度Nを有する同等な疎結合ネットワークを構築することと、を含む。同等な疎結合ネットワークは、m個の層の各層にそれぞれ1つ以上のアナログニューロンを含み、第1のm-1個の層の各アナログニューロンは、恒等変換を実装し、最後の層のアナログニューロンは、単層パーセプトロンの計算ニューロンの活性化関数Fを実装する。また、そのような場合、同等な疎結合ネットワークの重み行列を計算することは、重みベクトルUに基づく連立方程式を解くことによって、同等な疎結合ネットワークの接続の重みベクトルWを計算することを含む。連立方程式は、S個の変数を有するK個の方程式を含み、Sは、式
を使用して計算される。
いくつかの実装態様では、ニューラルネットワークトポロジは、K個の入力、L個の計算ニューロンを有する単層パーセプトロン、およびL個の計算ニューロンの各計算ニューロンの重みの行を含む重み行列Vを含む。そのような場合、ニューラルネットワークトポロジをアナログコンポーネントの同等な疎結合ネットワークに変換することは、以下を含む。(i)1つ以上の結合制約に従って同等な疎結合ネットワークの結合度Nを導出すること、(ii)式
を使用して同等な疎結合ネットワークの層の数mを計算すること、(iii)単層パーセプトロンをL個の単層パーセプトロンネットワークに分解すること。各単層パーセプトロンネットワークは、L個の計算ニューロンのそれぞれの計算ニューロンを含み、(iv)L個の単層パーセプトロンネットワークの各単層パーセプトロンネットワークについて、(a)K個の入力、m個の層、および結合度Nを有するそれぞれの単層パーセプトロンのそれぞれの同等なピラミッド様サブネットワークを構築すること。同等なピラミッド様サブネットワークは、m個の層の各層に1つ以上のそれぞれのアナログニューロンを含み、第1のm-1個の層の各アナログニューロンは、恒等変換を実装し、最後の層のアナログニューロンは、それぞれの単層パーセプトロンに対応するそれぞれの計算ニューロンの活性化関数を実装し、(b)L個の単層パーセプトロンネットワークの各同等なピラミッド様サブネットワークの入力を連結して、L*K個の入力を有する入力ベクトルを形成することを含めて、各同等なピラミッド様サブネットワークを連結することによって、同等な疎結合ネットワークを構築すること。また、そのような場合、同等な疎結合ネットワークの重み行列を計算することは、L個の単層パーセプトロンネットワークの各単層パーセプトロンネットワークについて、(i)重み行列Vのi番目の行がそれぞれの単層パーセプトロンネットワークに対応するそれぞれの計算ニューロンに対応する、重みベクトルU=Viを設定することと、(ii)重みベクトルUに基づく連立方程式を解くことによって、それぞれの同等なピラミッド様サブネットワークの接続の重みベクトルWiを計算することと、を含む。連立方程式は、S個の変数を有するK個の方程式を含み、Sは、式
を使用して計算される。
いくつかの実装態様では、ニューラルネットワークトポロジは、K個の入力、S個の層を有する多層パーセプトロンを含み、S個の層の各層iは、計算ニューロンLiと、Li個の計算ニューロンの各計算ニューロンの重みの行を含む、対応する重み行列Viと、の対応するセットを含む。そのような場合、ニューラルネットワークトポロジをアナログコンポーネントの同等な疎結合ネットワークに変換することは、以下を含む。(i)1つ以上の結合制約に従って同等な疎結合ネットワークの結合度Nを導出すること、(ii)多層パーセプトロンをQ=Σi=1,s(Li)個の単層パーセプトロンネットワークに分解することと。各単層パーセプトロンネットワークは、Q個の計算ニューロンのそれぞれの計算ニューロンを含む。多層パーセプトロンを分解することは、Q個の計算ニューロンによって共有されるK個の入力の1つ以上の入力を複製することを含み、(iii)Q個の単層パーセプトロンネットワークの各単層パーセプトロンネットワークについて、(a)式
を使用して、それぞれの同等なピラミッド様サブネットワークの層の数mを計算すること。Ki,jは、多層パーセプトロンのそれぞれの計算ニューロンの入力の数であり、(b)Ki,j個の入力、m個の層、および結合度Nを有するそれぞれの単層パーセプトロンのそれぞれの同等なピラミッド様サブネットワークを構築すること。同等なピラミッド様サブネットワークは、m個の層の各層に1つ以上のそれぞれのアナログニューロンを含み、第1のm-1個の層の各アナログニューロンは、恒等変換を実装し、最後の層のアナログニューロンは、それぞれの単層パーセプトロンに対応するそれぞれの計算ニューロンの活性化関数を実装し、(iv)Q個の単層パーセプトロンネットワークの各同等なピラミッド様サブネットワークの入力を連結して、Q*Ki,j個の入力を有する入力ベクトルを形成することを含めて、各同等なピラミッド様サブネットワークを連結することによって、同等な疎結合ネットワークを構築すること。また、そのような場合、同等な疎結合ネットワークの重み行列を計算することは、Q個の単層パーセプトロンネットワークの各単層パーセプトロンネットワークについて、(i)重みベクトル
を設定することであって、重み行列Vのi番目の行は、それぞれの単層パーセプトロンネットワークに対応するそれぞれの計算ニューロンに対応し、jは、多層パーセプトロンのそれぞれの計算ニューロンの対応する層である、設定することと、(ii)重みベクトルUに基づく連立方程式を解くことによって、それぞれの同等なピラミッド様サブネットワークの接続の重みベクトルWiを計算することと、を含む。連立方程式は、S個の変数を有するKi、j個の方程式を含み、Sは、式
を使用して計算される。
いくつかの実装態様では、ニューラルネットワークトポロジは、K個の入力、S個の層を有する畳み込みニューラルネットワーク(CNN)を含み、S個の層の各層iは、計算ニューロンLiと、Li個の計算ニューロンの各計算ニューロンの重みの行を含む対応する重み行列Viと、の対応するセットを含む。そのような場合、ニューラルネットワークトポロジをアナログコンポーネントの同等な疎結合ネットワークに変換することは、以下を含む。(i)1つ以上の結合制約に従って同等な疎結合ネットワークの結合度Nを導出すること、(ii)CNNをQ=Σi=1,S(Li)個の単層パーセプトロンネットワークに分解すること。各単層パーセプトロンネットワークは、Q個の計算ニューロンのそれぞれの計算ニューロンを含む。CNNを分解することは、Q個の計算ニューロンによって共有されるK個の入力の1つ以上の入力を複製することを含み、(iii)Q個の単層パーセプトロンネットワークの各単層パーセプトロンネットワークについて、(a)式
を使用して、それぞれの同等なピラミッド様サブネットワークの層の数mを計算すること。jは、CNN内のそれぞれの計算ニューロンの対応する層であり、Ki,jは、CNN内のそれぞれの計算ニューロンの入力の数であり、および(b)Ki,j個の入力、m個の層、および結合度Nを有するそれぞれの単層パーセプトロンネットワークのそれぞれの同等なピラミッド様サブネットワークを構築すること。同等なピラミッド様サブネットワークは、m個の層の各層に1つ以上のそれぞれのアナログニューロンを含み、第1のm-1個の層の各アナログニューロンは、恒等変換を実装し、最後の層のアナログニューロンは、それぞれの単層パーセプトロンネットワークに対応するそれぞれの計算ニューロンの活性化関数を実装し、(iv)Q個の単層パーセプトロンネットワークの各同等なピラミッド様サブネットワークの入力を連結して、Q*Ki,j個の入力を有する入力ベクトルを形成することを含めて、各同等なピラミッド様サブネットワークを連結することによって、同等な疎結合ネットワークを構築すること。また、そのような場合、同等な疎結合ネットワークの重み行列を計算することは、Q個の単層パーセプトロンネットワークの各単層パーセプトロンネットワークについて、(i)重みベクトル
を設定することであって、重み行列Vのi番目の行は、それぞれの単層パーセプトロンネットワークに対応するそれぞれの計算ニューロンに対応し、jは、CNNのそれぞれの計算ニューロンの対応する層である、設定することと、(ii)重みベクトルUに基づく連立方程式を解くことによって、それぞれの同等なピラミッド様サブネットワークの接続の重みベクトルWiを計算することと、を含む。連立方程式は、S個の変数を有するKi、j個の方程式を含み、Sは、式
を使用して計算される。
いくつかの実装態様では、ニューラルネットワークトポロジは、K個の入力、K個のニューロンを有する層Lp、L個のニューロンを有する層Ln、および重み行列W∈RL×Kを含み、Rは、実数の集合であり、層Lpの各ニューロンは、層Lnの各ニューロンに接続されており、層Lnの各ニューロンは、活性化関数Fを実行し、これにより、層Lnの出力は、入力xについての式Yo=F(W.x)を使用して計算される。そのような場合、ニューラルネットワークトポロジをアナログコンポーネントの同等な疎結合ネットワークに変換することは、台形変換であって、(i)1つ以上の結合制約に従って、可能な入力結合度NI>1および可能な出力結合度NO>1を導出することと、(ii)K・L<L・NI+K・NOであるという判定に従って、恒等活性化関数を実行するK個のアナログニューロンを有する層LAp、恒等活性化関数を実行する
個のアナログニューロンを有する層LAh、および活性化関数Fを実行するL個のアナログニューロンを有する層LAoを含む3層アナログネットワークを構築することであって、層LApの各アナログニューロンは、NO個の出力を有し、層LAhの各アナログニューロンは、NI個以下の入力およびNO個以下の出力を有し、層LAoの各アナログニューロンは、NI個の入力を有するようになっている、構築することと、を含む、台形変換を実行することを含む。また、そのような場合、同等な疎結合ネットワークの重み行列を計算することは、K・NO+L・NI個の変数でのK・L個の方程式を含む行列方程式Wo.Wh=Wを解くことによって、疎重み行列WoおよびWhを生成することを含み、これにより、層LAoの総出力は、式Yo=F(Wo.Wh.x)を使用して計算される。疎重み行列Wo∈RK×Mは、層LApと層LAhとの間の接続を表し、疎重み行列Wh∈RM×Lは、層LAhと層LAoとの間の接続を表す。
いくつかの実装態様では、台形変換を実行することは、K・L≧L・N・I+K・NOという判定に従って、(i)層Lpを分割して、K’・L≧L・NI+K’・NOとなるように、K’個のニューロンを有するサブ層Lp1および(K-K’)個のニューロンを有するサブ層Lp2を取得することと、(ii)K’個のニューロンを有するサブ層Lp1について、構築するステップおよび生成するステップを実行することと、(iii)K-K個のニューロンを有するサブ層Lp2について、分割するステップ、構築するステップ、および生成するステップを再帰的に実行することと、をさらに含む。
いくつかの実装態様では、ニューラルネットワークトポロジは、多層パーセプトロンネットワークを含む。そのような場合、方法は、多層パーセプトロンネットワークの連続する層の各ペアについて、台形変換を反復的に実行し、かつ同等な疎結合ネットワークの重み行列を計算することをさらに含む。
いくつかの実装態様では、ニューラルネットワークトポロジは、(i)2つの全結合層の線形結合の計算、(ii)要素ごとの加算、および(iii)非線形関数計算を含む、回帰型ニューラルネットワーク(RNN)を含む。そのような場合、方法は、(i)2つの全結合層、および(ii)非線形関数計算について、台形変換を実行し、かつ同等な疎結合ネットワークの重み行列を計算することをさらに含む。
いくつかの実装態様では、ニューラルネットワークトポロジは、(i)複数の全結合層の線形結合の計算、(ii)要素ごとの加算、(iii)アダマール積、および(iv)複数の非線形関数計算を含む、長期短期記憶(LSTM)ネットワークまたはゲート付き回帰型ユニット(GRU)ネットワークを含む。そのような場合、方法は、(i)複数の全結合層、および(ii)複数の非線形関数計算について、台形変換を実行することと、同等な疎結合ネットワークの重み行列を計算することと、をさらに含む。
いくつかの実装態様では、ニューラルネットワークトポロジは、(i)複数の部分結合層、および(ii)1つ以上の全結合層を含む畳み込みニューラルネットワーク(CNN)を含む。そのような場合、方法は、(i)ゼロの重みを有する欠損している接続を挿入することによって、複数の部分結合層を同等な全結合層に変換することと、(ii)同等な全結合層および1つ以上の全結合層の連続する層の各ペアについて、台形変換を反復的に実行し、かつ同等な疎結合ネットワークの重み行列を計算することと、をさらに含む。
いくつかの実装態様では、ニューラルネットワークトポロジは、K個の入力、L個の出力ニューロン、および重み行列U∈RL×Kを含み、Rは、実数の集合であり、各出力ニューロンは、活性化関数Fを実行する。そのような場合、ニューラルネットワークトポロジをアナログコンポーネントの同等な疎結合ネットワークに変換することは、以下を含む近似変換を実行することを含む。(i)1つ以上の結合制約に従って、可能な入力結合度NI>1および可能な出力結合度NO>1を導出すること、(ii)集合
からパラメータpを選択すること、(iii)p>0であるという判定に従って、ピラミッドニューラルネットワークがこのピラミッドニューラルネットワークの出力層に
個のニューロンを有するように、同等な疎結合ネットワークの第1のp個の層を形成するピラミッドニューラルネットワークを構築すること。ピラミッドニューラルネットワーク内の各ニューロンは、恒等関数を実行し、および(iv)Np個の入力およびL個の出力を有する台形ニューラルネットワークを構築すること。台形ニューラルネットワークの最後の層の各ニューロンは、活性化関数Fを実行し、すべての他のニューロンは、恒等関数を実行する。そのような場合、同等な疎結合ネットワークの重み行列を計算することは、以下を含む。(i)ピラミッドニューラルネットワークの重みを生成することであって、(a)以下のルール、すなわち、(a)
に従って、ピラミッドニューラルネットワークの第1の層のあらゆるニューロンiの重みを設定することを含む、生成すること。Cは、非ゼロ定数であり、ki=(i-1)NI+1であり、および(b)kiを除くニューロンのすべての重みについて、
、(b)ピラミッドニューラルネットワークのすべての他の重みを1に設定すること、ならびに(ii)台形ニューラルネットワークの重みを生成することであって、(a)式
に従って台形ニューラルネットワークの第1の層の各ニューロンiの重みを設定すること、および(b)台形ニューラルネットワークの他の重みを1に設定することを含む、生成すること。
いくつかの実装態様では、ニューラルネットワークトポロジは、K個の入力、S個の層、およびi番目の層のLi=1、S個の計算ニューロンを有する多層パーセプトロン、ならびにi番目の層の重み行列
を含み、L0=Kである。そのような場合、ニューラルネットワークトポロジをアナログコンポーネントの同等な疎結合ネットワークに変換することは、多層パーセプトロンのS個の層の各層jについて、(i)Lj-1個の入力、LJ個の出力ニューロン、および重み行列Ujからなるそれぞれの単層パーセプトロンへの近似変換を実行することによって、それぞれのピラミッド-台形ネットワークPTNNXjを構築することと、(ii)各ピラミッド台形ネットワークをスタックすることによって、同等な疎結合ネットワークを構築することと、を含む。
別の態様では、いくつかの実装態様による、ニューラルネットワークのハードウェア実現のための方法が提供される。方法は、ニューラルネットワークトポロジ、および訓練されたニューラルネットワークの重みを取得することを含む。方法はまた、ニューラルネットワークトポロジを、複数の演算増幅器および複数の抵抗器を含むアナログコンポーネントの同等なアナログネットワークに変換することを含む。各演算増幅器は、同等なアナログネットワークのアナログニューロンを表し、各抵抗器は、2つのアナログニューロン間の接続を表す。方法はまた、訓練されたニューラルネットワークの重みに基づいて、同等なアナログネットワークの重み行列を計算することを含む。重み行列の各要素は、それぞれの接続を表す。方法はまた、重み行列の抵抗行列を生成することを含む。抵抗行列の各要素は、重み行列のそれぞれの重みに対応し、抵抗値を表す。
いくつかの実装態様では、重み行列の抵抗行列を生成することは、(i)可能な抵抗値の所定の範囲{R最小,R最大}を取得し、所定の範囲内の初期ベース抵抗値Rベースを選択することと、(ii)所定の範囲内で、制限された長さの抵抗値セットを選択することであって、このセットは、制限された長さの抵抗値セット内の{Ri、Rj}のすべての組み合わせについての範囲[-Rベース,Rベース]内の可能な重み
の最も均一な分布を提供する、選択することと、(iii)同等なアナログネットワークの、各アナログニューロンについてまたは各層について、のいずれかで、同等なアナログネットワークの、各ニューロンのまたは各層についての、入ってくる接続の最大重みおよびバイアスwmaxに基づいて、R+=R-がRベース*w最大に最も近い抵抗器セット値であるように、制限された長さの抵抗値セットから抵抗値R+=R-を選択することと、(iv)重み行列の各要素について、R1およびR2のすべての可能な値について、式
に従う誤差を可能な抵抗値の所定の範囲内で最小化する、それぞれの第1の抵抗値R1およびそれぞれの第2の抵抗値R2を選択することであって、wは、重み行列のそれぞれの要素であり、rerrは、抵抗についての所定の相対許容差値である、選択することと、を含む。
いくつかの実装態様では、可能な抵抗値の所定の範囲は、範囲100KΩ~1MΩの公称シリーズE24に従う抵抗を含む。
いくつかの実装態様では、R+およびR-は、同等なアナログネットワークの各層について独立に選定される。
いくつかの実装態様では、R+およびR-は、同等なアナログネットワークの各アナログニューロンについて独立に選定される。
いくつかの実装態様では、重み行列の第1の1つ以上の重みおよび第1の1つ以上の入力は、同等なアナログネットワークの第1の演算増幅器への1つ以上の接続を表す。そのような場合、方法は、抵抗行列を生成する前に、(i)第1の1つ以上の重みを第1の値によって修正することと、(ii)活性化関数を実行する前に、第1の演算増幅器を、第1の1つ以上の重みと第1の1つ以上の入力との線形結合に第1の値を乗算するように構成することと、をさらに含む。
いくつかの実装態様では、方法は、(i)重みの所定の範囲を取得することと、(ii)同等なアナログネットワークが同じ入力に対して訓練されたニューラルネットワークと同様の出力を生成するように、重みの所定の範囲に従って重み行列を更新することと、を含む。
いくつかの実装態様では、訓練されたニューラルネットワークは、ニューラルネットワークトポロジの各層が量子化された重みを有するように訓練されている。
いくつかの実装態様では、方法は、訓練されたニューラルネットワークを再訓練して、同等なアナログネットワークに、訓練されたニューラルネットワークと比較して異なる出力を生成させる、重みまたは抵抗値の誤差に対する感度を低下させることをさらに含む。
いくつかの実装態様では、方法は、所定の閾値よりも大きい閾値によって、その層の平均絶対重みよりも大きい任意の層における重みを最小化するために、訓練されたニューラルネットワークを再訓練することをさらに含む。
別の態様では、いくつかの実装態様による、ニューラルネットワークのハードウェア実現のための方法が提供される。方法は、ニューラルネットワークトポロジ、および訓練されたニューラルネットワークの重みを取得することを含む。方法はまた、ニューラルネットワークトポロジを、複数の演算増幅器および複数の抵抗器を含むアナログコンポーネントの同等なアナログネットワークに変換することを含む。各演算増幅器は、同等なアナログネットワークのアナログニューロンを表し、各抵抗器は、2つのアナログニューロン間の接続を表す。方法はまた、訓練されたニューラルネットワークの重みに基づいて、同等なアナログネットワークの重み行列を計算することを含む。重み行列の各要素は、それぞれの接続を表す。方法はまた、重み行列の抵抗行列を生成することを含む。抵抗行列の各要素は、重み行列のそれぞれの重みに対応する。方法はまた、同等なアナログネットワークを枝刈りして、抵抗行列に基づいて、複数の演算増幅器または複数の抵抗器の数を低減して、アナログコンポーネントの最適化されたアナログネットワークを取得することを含む。
いくつかの実装態様では、同等なアナログネットワークを枝刈りすることは、所定の最小閾値抵抗値を下回る抵抗値を有する抵抗行列の1つ以上の要素に対応する抵抗器を、導体で置き換えることを含む。
いくつかの実装態様では、同等なアナログネットワークを枝刈りすることは、所定の最大閾値抵抗値を上回る抵抗行列の1つ以上の要素に対応する、同等なアナログネットワークの1つ以上の接続を除去することを含む。
いくつかの実装態様では、同等なアナログネットワークを枝刈りすることは、およそゼロである重み行列の1つ以上の要素に対応する、同等なアナログネットワークの1つ以上の接続を除去することを含む。
いくつかの実装態様では、同等なアナログネットワークを枝刈りすることは、いかなる入力接続も有しない、同等なアナログネットワークの1つ以上のアナログニューロンを除去することをさらに含む。
いくつかの実装態様では、同等なアナログネットワークを枝刈りすることは、(i)1つ以上のデータセットの計算を行うときに、アナログニューロンの使用を検出することに基づいて、同等なアナログネットワークのアナログニューロンをランク付けすることと、(ii)ランク付けに基づいて同等なアナログネットワークの1つ以上のアナログニューロンを選択することと、(iii)同等なアナログネットワークから1つ以上のアナログニューロンを除去することと、を含む。
いくつかの実装態様では、アナログニューロンの使用を検出することは、(i)モデリングソフトウェアを使用して同等なアナログネットワークのモデルを確立することと、(ii)モデルを使用して1つ以上のデータセットの計算を生成することによって、アナログ信号の伝播を測定することと、を含む。
いくつかの実装態様では、アナログニューロンの使用を検出することは、(i)モデリングソフトウェアを使用して同等なアナログネットワークのモデルを確立することと、(ii)モデルを使用して1つ以上のデータセットの計算を生成することによって、モデルの出力信号を測定することと、を含む。
いくつかの実装態様では、アナログニューロンの使用を検出することは、(i)モデリングソフトウェアを使用して同等なアナログネットワークのモデルを確立することと、(ii)モデルを使用して1つ以上のデータセットの計算を生成することによって、アナログニューロンによって消費される電力を測定することと、を含む。
いくつかの実装態様では、方法は、同等なアナログネットワークを枝刈りした後、かつ同等なアナログネットワークを実装する回路を作製するための1つ以上のリソグラフィマスクを生成する前に、同等なアナログネットワークの重み行列を再計算することと、再計算された重み行列に基づいて抵抗行列を更新することと、をさらに含む。
いくつかの実装態様では、方法は、同等なアナログネットワークの各アナログニューロンについて、(i)重み行列を計算しながら、訓練されたニューラルネットワークの重みに基づいて、それぞれのアナログニューロンのそれぞれのバイアス値を計算することと、(ii)それぞれのバイアス値が所定の最大バイアス閾値を上回っているという判定に従って、同等なアナログネットワークからそれぞれのアナログニューロンを除去することと、(iii)それぞれのバイアス値が所定の最小バイアス閾値を下回っているという判定に従って、それぞれのアナログニューロンを同等なアナログネットワーク内の線形接合部で置換することと、をさらに含む。
いくつかの実装態様では、方法は、重み行列を生成する前に、同等なアナログネットワークの1つ以上のアナログニューロンからの接続の数を増加させることによって、同等なアナログネットワークのニューロンの数を低減することをさらに含む。
いくつかの実装態様では、方法は、ニューラルネットワークトポロジを変換する前に、同等なアナログネットワークが所定数未満のアナログコンポーネントを含むように、ニューラルネットワークの枝刈り手法を使用して、訓練されたニューラルネットワークを枝刈りして、ニューラルネットワークトポロジおよび訓練されたニューラルネットワークの重みを更新することをさらに含む。
いくつかの実装態様では、枝刈りは、訓練されたニューラルネットワークと同等なアナログネットワークとの間の出力の一致の、精度またはレベルを考慮して、反復実行される。
いくつかの実装態様では、方法は、ニューラルネットワークトポロジを同等なアナログネットワークに変換する前に、ネットワーク知識抽出を実行することをさらに含む。
別の態様では、いくつかの実装態様による集積回路が提供される。集積回路は、以下を含む、方法によって作製されたアナログコンポーネントのアナログネットワークを含む。(i)ニューラルネットワークトポロジおよび訓練されたニューラルネットワークの重みを取得すること、(ii)ニューラルネットワークトポロジを、複数の演算増幅器および複数の抵抗器を含むアナログコンポーネントの同等なアナログネットワークに変換すること。各演算増幅器は、それぞれのアナログニューロンを表し、各抵抗器は、それぞれの第1のアナログニューロンとそれぞれの第2のアナログニューロンとの間のそれぞれの接続を表し、(iii)訓練されたニューラルネットワークの重みに基づいて、同等なアナログネットワークの重み行列を計算すること。重み行列の各要素は、それぞれの接続を表し、(iv)重み行列の抵抗行列を生成すること。抵抗行列の各要素は、重み行列のそれぞれの重みに対応し、(v)抵抗行列に基づいてアナログコンポーネントの同等なアナログネットワークを実装する回路を作製するための1つ以上のリソグラフィマスクを生成すること、および(vi)リソグラフィプロセスを使用して1つ以上のリソグラフィマスクに基づいて回路を作製すること。
いくつかの実装態様では、集積回路は、1つ以上のデジタルに基づいて、アナログコンポーネントの同等なアナログネットワークのアナログ入力を生成するように構成された1つ以上のデジタルアナログ変換器をさらに含む。
いくつかの実装態様では、集積回路は、集積回路の推論の数に基づいて、サンプリング周波数で一次元または二次元のアナログ入力を処理するように構成されたアナログ信号サンプリングモジュールをさらに含む。
いくつかの実装態様では、集積回路は、複数の演算増幅器の動作範囲に適合するようにアナログ信号をスケールダウンするかまたはスケールアップするための電圧変換モジュールをさらに含む。
いくつかの実装態様では、集積回路は、CCDカメラから取得された1つ以上のフレームを処理するように構成されたタクト信号処理モジュールをさらに含む。
いくつかの実装態様では、訓練されたニューラルネットワークは、長期短期記憶(LSTM)ネットワークである。そのような場合、集積回路は、信号タクトを同期させ、かつ時系列処理を可能にするための1つ以上のクロックモジュールをさらに含む。
いくつかの実装態様では、集積回路は、アナログコンポーネントの同等なアナログネットワークの出力に基づいてデジタル信号を生成するように構成された1つ以上のアナログデジタル変換器をさらに含む。
いくつかの実装態様では、集積回路は、エッジアプリケーションから取得された一次元または二次元のアナログ信号を処理するように構成された1つ以上の信号処理モジュールをさらに含む。
いくつかの実装態様では、訓練されたニューラルネットワークは、検出される所定の量のガスを含有するガス混合物中の異なるガスの選択的感知のために、異なるガス混合物に対するガスセンサのアレイの信号を含む訓練データセットを使用して訓練されている。そのような場合、ニューラルネットワークトポロジは、16個のガスセンサによる測定に基づいて3つの二元ガス成分を検出するために設計された一次元深層畳み込みニューラルネットワーク(1D-DCNN)であり、16個のセンサごとの1D畳み込みブロック、3つの共有または共通の1D畳み込みブロック、および3つの稠密層を含み、そのような場合、同等なアナログネットワークは、(i)アナログニューロン当たり最大100個の入出力接続、(ii)任意の数の時間ステップによる遅延を生じさせる遅延ブロック、(iii)5の信号制限、(iv)15個の層、(v)およそ100,000個のアナログニューロン、および(vi)およそ4,900,000個の接続を含む。
いくつかの実装態様では、訓練されたニューラルネットワークは、MOSFETデバイスの残存耐用年数(RUL)を予測するために、異なるMOSFETの熱老化時系列データを含む訓練データセットを使用して訓練されている。そのような場合、ニューラルネットワークトポロジは、各層に64個のニューロンを有する4つのLSTM層、これに続く、それぞれ64個のニューロンおよび1つのニューロンを有する2つの稠密層を含む。そのような場合、同等なアナログネットワークは、(i)アナログニューロン当たり最大100個の入出力接続、(ii)5の信号制限、(iii)18個の層、(iv)3,000~3,200個のアナログニューロン、および(v)123,000~124,000個の接続を含む。
いくつかの実装態様では、訓練されたニューラルネットワークは、電池管理システム(BMS)で使用するためのリチウムイオン電池の健康状態(SOH)および充電状態(SOC)を監視するために、異なる市販のLiイオン電池の連続使用中の放電および温度データを含む時系列データを含む訓練データセットを使用して訓練されている。そのような場合、ニューラルネットワークトポロジは、入力層、各層に64個のニューロンを有する2つのLSTM層、これに続く、SOC値およびSOH値を生成するための2つのニューロンを有する出力稠密層を含む。そのような場合、同等なアナログネットワークは、(i)アナログニューロン当たり最大100個の入出力接続、(ii)5の信号制限、(iii)9つの層、(iv)1,200~1,300個のアナログニューロン、および(v)51,000~52,000個の接続を含む。
いくつかの実装態様では、訓練されたニューラルネットワークは、電池管理システム(BMS)で使用するためのリチウムイオン電池の健康状態(SOH)を監視するために、異なる市販のLiイオン電池の連続使用中の放電および温度データを含む時系列データを含む訓練データセットを使用して訓練されている。そのような場合、ニューラルネットワークトポロジは、18個のニューロンを有する入力層、100個のニューロンを有する単純回帰層、および1つのニューロンを有する稠密層を含む。そのような場合、同等なアナログネットワークは、(i)アナログニューロン当たり最大100個の入出力接続、(ii)5の信号制限、(iii)4つの層、(iv)200~300個のアナログニューロン、および(v)2,200~2,400個の接続を含む。
いくつかの実装態様では、訓練されたニューラルネットワークは、発声コマンドを識別するために、発話コマンドを含む訓練データセットを使用して訓練されている。そのような場合、ニューラルネットワークトポロジは、1つのニューロンを有する深さ方向に分離可能な畳み込みニューラルネットワーク(Depthwise Separable Convolutional Neural Network、DS-CNN)層である。そのような場合、同等なアナログネットワークは、(i)アナログニューロン当たり最大100個の入出力接続、(ii)5の信号制限、(iii)13個の層、(iv)およそ72,000個のアナログニューロン、および(v)およそ260万個の接続を含む。
いくつかの実装態様では、訓練されたニューラルネットワークは、所定の期間にわたって様々な身体活動を行う異なる個人の光電式容積脈波記録法(PPG)データ、加速度計データ、温度データ、および電気皮膚応答信号データ、ならびにPPGセンサデータおよび3軸加速度計データに基づいて身体運動中の脈拍数を判定するためのECGセンサから取得された基準心拍数、を含む訓練データセットを使用して訓練されている。そのような場合、ニューラルネットワークトポロジは、時系列畳み込みを行う、各々が16個のフィルタおよび20のカーネルを有する2つのConv1D層、各々が16個のニューロンを有する2つのLSTM層、ならびに各々が16個のニューロンおよび1つのニューロンを有する2つの稠密層を含む。そのような場合、同等なアナログネットワークは、(i)任意の数の時間ステップを生成するための遅延ブロック、(ii)アナログニューロン当たり最大100個の入出力接続、(iii)5の信号制限、(iv)16個の層、(v)700~800個のアナログニューロン、および(vi)12,000~12,500個の接続を含む。
いくつかの実装態様では、訓練されたニューラルネットワークは、パルスドップラレーダ信号に基づいて異なるオブジェクトを分類するように訓練されている。そのような場合、ニューラルネットワークトポロジは、マルチスケールLSTMニューラルネットワークを含む。
いくつかの実装態様では、訓練されたニューラルネットワークは、慣性センサデータに基づいて、人間活動のタイプの認識を実行するように訓練されている。そのような場合、ニューラルネットワークトポロジは、各々が12個のフィルタおよび64のカーネル次元の畳み込み層を有し、かつ各々に、最大枝刈り層と、Nがクラスの数であるとして、それぞれ、1024個のニューロンおよびN個のニューロンの2つの共通の稠密層と、が続く、3つのチャネル方向の畳み込みネットワークを含む。そのような場合、同等なアナログネットワークは、(i)任意の数の時間ステップを生成するための遅延ブロック、(ii)アナログニューロン当たり最大100個の入出力接続、(iii)10個のアナログニューロンの出力層、(iv)5の信号制限、(v)10個の層、(vi)1,200~1,300個のアナログニューロン、および(vi)20,000~21,000個の接続を含む。
いくつかの実装態様では、訓練されたニューラルネットワークは、畳み込み演算を使用して心拍数データとマージされる加速度計データに基づいて人間活動の異常なパターンを検出するようにさらに訓練されている。
別の態様では、ニューラルネットワークのハードウェア実現のためのライブラリを生成するための方法が提供される。方法は、複数のニューラルネットワークトポロジを取得することを含み、各ニューラルネットワークトポロジは、それぞれのニューラルネットワークに対応する。方法はまた、各ニューラルネットワークトポロジを、アナログコンポーネントのそれぞれの同等なアナログネットワークに変換することを含む。方法はまた、複数の回路を作製するための複数のリソグラフィマスクを生成することを含み、各回路は、アナログコンポーネントのそれぞれの同等なアナログネットワークを実装する。
いくつかの実装態様では、方法は、新たなニューラルネットワークトポロジ、および訓練されたニューラルネットワークの重みを取得することをさらに含む。方法はまた、新たなニューラルネットワークトポロジを複数のニューラルネットワークトポロジと比較することに基づいて、複数のリソグラフィマスクから1つ以上のリソグラフィマスクを選択することを含む。方法はまた、重みに基づいて、新たな同等なアナログネットワークの重み行列を計算することを含む。方法はまた、重み行列の抵抗行列を生成することを含む。方法はまた、抵抗行列および1つ以上のリソグラフィマスクに基づいて、新たな同等なアナログネットワークを実装する回路を作製するための新たなリソグラフィマスクを生成することを含む。
いくつかの実装態様では、新たなニューラルネットワークトポロジは、複数のサブネットワークトポロジを含み、1つ以上のリソグラフィマスクを選択することは、各サブネットワークトポロジを複数のネットワークトポロジの各ネットワークトポロジと比較することにさらに基づく。
いくつかの実装態様では、複数のサブネットワークトポロジの1つ以上のサブネットワークトポロジが、複数のネットワークトポロジの任意のネットワークトポロジと比較することに失敗する。そのような場合、方法は、(i)1つ以上のサブネットワークトポロジの各サブネットワークトポロジを、アナログコンポーネントのそれぞれの同等なアナログサブネットワークに変換することと、(ii)1つ以上の回路を作製するための1つ以上のリソグラフィマスクを生成することであって、1つ以上の回路の各回路は、アナログコンポーネントのそれぞれの同等なアナログサブネットワークを実装する、生成することと、をさらに含む。
いくつかの実装態様では、それぞれのネットワークトポロジをそれぞれの同等なアナログネットワークに変換することは、(i)それぞれのネットワークトポロジを複数のサブネットワークトポロジに分解することと、(ii)各サブネットワークトポロジをアナログコンポーネントのそれぞれの同等なアナログサブネットワークに変換することと、(iii)それぞれの同等なアナログネットワークを取得するように、各同等なアナログサブネットワークを構成することと、を含む。
いくつかの実装態様では、それぞれのネットワークトポロジを分解することは、それぞれのネットワークトポロジの1つ以上の層を複数のサブネットワークトポロジとして識別することを含む。
いくつかの実装態様では、各回路は、(i)アナログコンポーネントのそれぞれの同等なアナログネットワークの模式図を生成することと、(ii)模式図に基づいてそれぞれの回路レイアウト設計を生成することと、によって取得される。
いくつかの実装態様では、方法は、複数の回路を作製するための複数のリソグラフィマスクを生成する前に、1つ以上の回路レイアウト設計を組み合わせることをさらに含む。
別の態様では、いくつかの実装態様による、アナログニューロモルフィック回路のエネルギー効率を最適化するための方法が提供される。方法は、複数の演算増幅器および複数の抵抗器を含むアナログコンポーネントのアナログネットワークを実装する集積回路を取得することを含む。アナログネットワークは、訓練されたニューラルネットワークを表し、各演算増幅器は、それぞれのアナログニューロンを表し、各抵抗器は、それぞれの第1のアナログニューロンとそれぞれの第2のアナログニューロンとの間のそれぞれの接続を表す。方法はまた、アナログネットワークの1つの層から後続の層に信号を同時に転送することを含む複数の試験入力のために、集積回路を使用して推論を生成することを含む。方法はまた、集積回路を使用して推論を生成しながら、(i)複数の演算増幅器の信号出力のレベルが平衡化されているかどうかを判定することと、(ii)信号出力のレベルが平衡化されているという判定に従って、(a)信号の伝播のために信号形成に影響を与える、アナログネットワークの活性なセットのアナログニューロンを判定し、かつ(所定の期間、活性なセットのアナログニューロンとは相違する、アナログネットワークの1つ以上のアナログニューロンの電力供給をオフにすることと、を含む。
いくつかの実装態様では、活性なセットのアナログニューロンを判定することは、アナログネットワークを通した信号伝播の遅延を計算することに基づく。
いくつかの実装態様では、活性なセットのアナログニューロンを判定することは、アナログネットワークを通した信号の伝播を検出することに基づく。
いくつかの実装態様では、訓練されたニューラルネットワークは、フィードフォワードニューラルネットワークであり、活性なセットのアナログニューロンは、アナログネットワークの活性な層に属し、電力供給をオフにすることは、アナログネットワークの活性な層の前の1つ以上の層の電力供給をオフにすることを含む。
いくつかの実装態様では、所定の期間は、信号遅延を考慮して、アナログネットワークを通した信号の伝播をシミュレートすることに基づいて計算される。
いくつかの実装態様では、訓練されたニューラルネットワークは、回帰型ニューラルネットワーク(RNN)であり、アナログネットワークは、複数の演算増幅器以外かつ複数の抵抗器以外の1つ以上のアナログコンポーネントをさらに含む。そのような場合、方法は、信号出力のレベルが平衡化されているという判定に従って、所定の期間、1つ以上のアナログコンポーネントの電力供給をオフにすることをさらに含む。
そのような場合、方法は、所定の期間の後、アナログネットワークの1つ以上のアナログニューロンの電力供給をオンにすることをさらに含む。
いくつかの実装態様では、複数の演算増幅器の信号出力のレベルが平衡化されているかどうかを判定することは、アナログネットワークの1つ以上の演算増幅器が所定の閾値信号レベルを超えて出力しているかどうかを検出することに基づく。
いくつかの実装態様では、方法は、推論を生成しながら、所定の期間オフにすることと、所定の期間活性なセットのアナログニューロンをオンにすることと、を繰り返すことをさらに含む。
いくつかの実装態様では、方法は、(i)信号出力のレベルが平衡化されているという判定に従って、各推論サイクルについて、(a)第1の時間区間の間に、信号の伝播のために信号形成に影響を与える、アナログネットワークの第1の層のアナログニューロンを判定することと、(b)所定の期間、第1の層の前の、アナログネットワークの第1の1つ以上のアナログニューロンの電力供給をオフにすることと、(ii)第1の時間区間に続く第2の時間区間の間に、所定の期間、アナログネットワークの、第1の層のアナログニューロンおよび第1の1つ以上のアナログニューロンを含む、第2の1つ以上のアナログニューロンの電力供給をオフにすることと、をさらに含む。
いくつかの実装態様では、1つ以上のアナログニューロンは、アナログネットワークの第1の1つ以上の層のアナログニューロンからなり、活性なセットのアナログニューロンは、アナログネットワークの第2の層のアナログニューロンからなり、アナログネットワークの第2の層は、第1の1つ以上の層の層とは相違する。
いくつかの実装態様では、コンピュータシステムは、1つ以上のプロセッサ、メモリ、およびディスプレイを有する。1つ以上のプログラムは、本明細書に記載される方法のうちのいずれかを実行するための命令を含む。
いくつかの実装態様では、非一時的コンピュータ可読記憶媒体は、1つ以上のプロセッサ、メモリ、およびディスプレイを有するコンピュータシステムによる実行用に構成された1つ以上のプログラムを記憶する。1つ以上のプログラムは、本明細書に記載される方法のうちのいずれかを実行するための命令を含む。
したがって、訓練されたニューラルネットワークのハードウェア実現のために使用される方法、システム、およびデバイスが開示される。
図1Aは、いくつかの実装態様による、アナログコンポーネントを使用した訓練されたニューラルネットワークのハードウェア実現のためのシステム100のブロック図である。システムは、訓練されたニューラルネットワーク102をアナログニューラルネットワーク104に変換すること(126)を含む。いくつかの実装態様では、アナログ集積回路制約184は、変換(126)を制約して(146)、アナログニューラルネットワーク104を生成する。続いて、システムは、重み量子化(128)と呼ばれることがあるプロセスによって、アナログニューラルネットワーク104の重み106を導出(計算または生成)する。いくつかの実装態様では、アナログニューラルネットワークは、複数のアナログニューロンを含み、各アナログニューロンは、演算増幅器などのアナログコンポーネントによって表され、各アナログニューロンは、接続を介して別のアナログニューロンに接続されている。いくつかの実装態様では、接続は、2つのアナログニューロン間の電流の流れを低減する抵抗器を使用して表される。いくつかの実装態様では、システムは、重み106を接続の抵抗値112に変換する(148)。システムは、続いて、重み106に基づいてアナログニューラルネットワーク104を実装するための1つ以上の概略モデル108を生成する(130)。いくつかの実装態様では、システムは、抵抗値112(または重み106)を最適化して、概略モデル108を生成(150)するためにさらに使用される最適化されたアナログニューラルネットワーク114を形成する。いくつかの実装態様では、システムは、接続用のリソグラフィマスク110を生成し(132)、かつ/またはアナログニューロン用のリソグラフィマスク120を生成する(136)。いくつかの実装態様では、システムは、アナログニューラルネットワーク104を実装するアナログ集積回路118を作製する(134および/または138)。いくつかの実装態様では、システムは、接続用のリソグラフィマスク110および/またはアナログニューロン用のリソグラフィマスク120に基づいて、リソグラフィマスクのライブラリ116を生成する(152)。いくつかの実装態様では、システムは、リソグラフィマスクのライブラリ116を使用して(154)、アナログ集積回路118を作製する。いくつかの実装態様では、訓練されたニューラルネットワーク142が再訓練される(142)と、システムは、抵抗値112(および/または重み106)、概略モデル108、および/または接続用のリソグラフィマスク110を再生成(または再計算)する(144)。いくつかの実装態様では、システムは、アナログニューロン120用のリソグラフィマスク120を再利用する。つまり、いくつかの実装態様では、重み106(または変更された重みに対応する抵抗値112)、および/または接続用のリソグラフィマスク110のみが再生成される。接続、重み、概略モデル、および/または対応する接続用のリソグラフィマスクのみが再生されることから、破線156によって示されるように、再訓練されたニューラルネットワークのアナログ集積回路を作製するためのプロセス(またはその経路)は、実質的に簡略化され、ニューラルネットワークのハードウェア実現のための従来の手法と比較すると、ニューラルネットワークのハードウェアのリスピンを行うための市場投入までの時間が短縮される。
図1Bは、いくつかの実装態様による、アナログコンポーネントを使用した訓練されたニューラルネットワークのハードウェア実現のためのシステム100の代替表現のブロック図である。システムは、ソフトウェアでニューラルネットワークを訓練すること(156)と、接続の重みを決定することと、ニューラルネットワークと同等な電子回路を生成すること(158)と、各接続の重みに対応する抵抗器値を計算すること(160)と、続いて、抵抗器値を有するリソグラフィマスクを生成すること(162)と、を含む。
図1Cは、いくつかの実装態様による、アナログコンポーネントを使用した訓練されたニューラルネットワークのハードウェア実現のためのシステム100の別の表現のブロック図である。システムは、いくつかの実装態様によれば、ソフトウェア開発キット(SDK)180として配布される。ユーザは、ニューラルネットワークを開発および訓練し(164)、訓練されたニューラルネット166をSDK180に入力する。SDKは、訓練されたニューラルネット166の複雑さを推定する(168)。訓練されたニューラルネットの複雑さを低減することができる(例えば、いくつかの接続および/またはニューロンを除去することができ、いくつかの層を低減することができ、またはニューロンの密度を変更することができる)場合、SDK180は、訓練されたニューラルネットを枝刈りし(178)、ニューラルネットを再訓練して(182)、更新された訓練されたニューラルネット166を取得する。訓練されたニューラルネットの複雑さが低減されると、SDK180は、訓練されたニューラルネット166をアナログコンポーネントの疎ネットワーク(例えば、ピラミッド形状または台形形状のネットワーク)に変換する(170)。また、SDK180は、アナログネットワークの回路モデル172を生成する。いくつかの実装態様では、SDKは、ソフトウェアシミュレーションを使用して、同じ入力について、訓練されたニューラルネットワークと比較して、回路モデル172によって生成された出力のずれを推定する(176)。推定誤差が閾値誤差(例えば、ユーザによって設定された値)を超える場合、SDK180は、ユーザに、ニューラルネットワークを再構成、再開発、および/または再訓練するように促す。いくつかの実装態様では、示されていないが、SDKは、推定誤差を低減するために、訓練されたニューラルネット166を自動的に再構成する。このプロセスは、誤差が閾値誤差を下回るように低減されるまで、複数回反復される。図1Cでは、ブロック176(「回路で生じた誤差の推定」)からブロック164(「ニューラルネットワークの開発および訓練」)までの破線は、フィードバックループを示す。例えば、枝刈りされたネットワークが所望の精度を示さなかった場合、いくつかの実装態様は、精度が所与のアプリケーションの所定の閾値(例えば、98%の精度)を超えるまで、ネットワークを異なるように枝刈りする。いくつかの実装態様では、枝刈りがネットワーク全体の再訓練を含むことから、このプロセスは、重みを再計算することを含む。
いくつかの実装態様では、上述のシステム100のコンポーネントは、コンピューティングモジュールとして1つ以上のコンピューティングデバイスまたはサーバシステム内に実装される。図2Aは、いくつかの実装態様によるコンピューティングデバイス200のシステム図である。本明細書で使用される場合、「コンピューティングデバイス」という用語は、パーソナルデバイス102とサーバとの両方を含む。コンピューティングデバイス200は、典型的には、メモリ214に記憶され、それによって処理演算を実行するモジュール、プログラム、および/または命令を実行するための1つ以上の処理ユニット/コア(CPU)202、1つ以上のネットワークまたは他の通信インターフェース204、メモリ214、およびこれらのコンポーネントを相互接続するための1つ以上の通信バス212を含む。通信バス212は、システムコンポーネント間の通信を相互接続および制御する回路を含み得る。コンピューティングデバイス200は、ディスプレイデバイス208および1つ以上の入力デバイスまたは機構210を含むユーザインターフェース206を含み得る。いくつかの実装態様では、入力デバイス/機構210は、キーボードを含み、いくつかの実装態様では、入力デバイス/機構は、「ソフト」キーボードを含み、これは、ディスプレイデバイス208に必要に応じて表示され、ユーザがディスプレイ208に現れる「キーを押す」ことを可能にする。いくつかの実装態様では、ディスプレイ208および入力デバイス/機構210は、タッチスクリーンディスプレイ(タッチ感知ディスプレイとも呼ばれる)を含む。いくつかの実装態様では、メモリ214は、DRAM、SRAM、DDR RAM、または他のランダムアクセスソリッドステートメモリデバイスなどの高速ランダムアクセスメモリを含む。いくつかの実装態様では、メモリ214は、1つ以上の磁気ディスク記憶デバイス、光ディスク記憶デバイス、フラッシュメモリデバイス、または他の不揮発性ソリッドステート記憶デバイスなどの不揮発性メモリを含む。いくつかの実装態様では、メモリ214は、CPU202から遠隔に位置する1つ以上の記憶デバイスを含む。メモリ214、または代替的にメモリ214内の不揮発性メモリデバイスは、コンピュータ可読記憶媒体を含む。いくつかの実装態様では、メモリ214、またはメモリ214のコンピュータ可読記憶媒体は、以下のプログラム、モジュール、およびデータ構造、またはそれらのサブセットを記憶する。
●様々な基本システムサービスを処理するための、およびハードウェア依存タスクを実行するための手順を含むオペレーティングシステム216、
●1つ以上の通信ネットワークインターフェース204(有線または無線)、およびインターネット、他の広域ネットワーク、ローカルエリアネットワーク、大都市圏ネットワークなどの1つ以上の通信ネットワークを介してコンピューティングデバイス200を他のコンピュータおよびデバイスに接続するために使用される通信モジュール218、
●重み222およびニューラルネットワークトポロジ224を含む訓練されたニューラルネットワーク220。入力ニューラルネットワークの例が、いくつかの実装態様に従って、図4A~4C、図12、図13A、および14Aを参照して以下に記載され、
●変換されたアナログニューラルネットワーク228、数学的定式化230、基底関数ブロック232、アナログモデル234(ニューロンモデルと呼ばれることがある)、および/またはアナログ集積回路(IC)設計制約236を含むニューラルネットワーク変換モジュール226。ニューラルネットワーク変換モジュール226の例示的な動作が、少なくとも図5、6A~6C、7、8、9、10、および11A~11C、ならびに図27A~27Jおよび図28A~28Sに示されるフローチャートを参照して以下に記載され、および/または
●変換されたネットワークの重み272を含み、かつ任意選択で抵抗計算モジュール240、抵抗値242を含む、重み行列計算(重み量子化と呼ばれることがある)モジュール238。重み行列計算モジュール238および/または重み量子化の例示的な動作が、いくつかの実装態様に従って、少なくとも図17A~17C、図18、および図29A~29Fを参照して記載される。
いくつかの実装態様は、図2Bに示されるように、1つ以上の任意選択のモジュール244を含む。いくつかの実装態様は、アナログニューラルネットワーク最適化モジュール246を含む。アナログニューラルネットワーク最適化の例が、いくつかの実装態様に従って、図30A~30Mを参照して以下に記載される。
いくつかの実装態様は、抵抗(または接続)以外のアナログコンポーネント(例えば、演算増幅器、乗算器、遅延ブロックなど)用のリソグラフィマスク250をさらに含むリソグラフィマスク生成モジュール248を含む。いくつかの実装態様では、リソグラフィマスクは、ケイデンス、シノプシス、またはメンターグラフィックスソフトウェアパッケージを使用して、チップ設計に従ったチップ設計レイアウトに基づいて生成される。いくつかの実装態様は、シリコンウェハ製造工場(ファブと呼ばれることがある)製の設計キットを使用する。リソグラフィマスクは、設計キット(例えば、TSMC65nm設計キット)を提供する特定のファブで使用されることが意図されている。生成されたリソグラフィマスクファイルは、ファブでチップを製造するために使用される。いくつかの実装態様では、ケイデンス、メンターグラフィックス、またはシノプシスソフトウェアパッケージベースのチップ設計は、SPICEまたは高速SPICE(メンターグラフィックス)ソフトウェアパッケージから半自動的に生成される。いくつかの実装態様では、チップ設計スキルを有するユーザは、スパイスまたは高速スパイス回路からケイデンス、メンターグラフィックスまたはシノプシスチップ設計への変換を推進する。いくつかの実装態様は、単一のニューロンユニットのケイデンス設計ブロックを組み合わせ、ブロック間の適切な相互接続を確立する。
いくつかの実装態様は、リソグラフィマスク256のライブラリをさらに含むライブラリ生成モジュール254を含む。ライブラリ生成の例が、いくつかの実装態様に従って、図32A~32Eを参照して以下に記載される。
いくつかの実装態様は、アナログ-デジタル変換(ADC)、デジタル-アナログ変換(DAC)、または同様の他のインターフェース260、および/または作製されたICもしくはモデル262をさらに含む、集積回路(IC)作製モジュール258を含む。例示的な集積回路および/または関連モジュールが、いくつかの実装態様に従って、図31A~31Qを参照して以下に記載される。
いくつかの実装態様は、推論モジュール266、信号監視モジュール268、および/または電力最適化モジュール270をさらに含む、エネルギー効率最適化モジュール264を含む。エネルギー効率最適化の例が、いくつかの実装態様に従って、図33A~33Kを参照して以下に記載される。
上記で特定された実行可能モジュール、アプリケーション、または手順のセットの各々は、前述のメモリデバイスのうちの1つ以上に記憶されてよく、上述の関数を実行するための命令セットに対応する。上記で特定されたモジュールまたはプログラム(すなわち、命令セット)は、別個のソフトウェアプログラム、手順、またはモジュールとして実装される必要はなく、したがって、これらのモジュールの様々なサブセットが、様々な実装態様で組み合わされるか、または別様に再配置されてもよい。いくつかの実装態様では、メモリ214は、上記で特定されたモジュールおよびデータ構造のサブセットを記憶する。さらに、いくつかの実装態様では、メモリ214は、上述されていない追加のモジュールまたはデータ構造を記憶する。
図2Aは、コンピューティングデバイス200を示すが、図2Aは、本明細書に記載される実装態様の構造的概略図としてではなく、存在し得る様々な特徴の機能的説明としてより強く意図されている。実際には、当業者によって認識されるように、別々に示される項目を組み合わせることができ、いくつかの項目を分離することができる。
アナログネットワークの概略モデルを生成するための例示的なプロセス
図3Aは、いくつかの実装態様による、訓練されたニューラルネットワークに対応するアナログネットワークの概略モデルを生成するための例示的なプロセス300を示す。図3Aに示されるように、訓練されたニューラルネットワーク302(例えば、モバイルネット)は、ターゲットまたは同等なアナログネットワーク304に(T変換と呼ばれることがあるプロセスを使用して)変換される(322)。ターゲットニューラルネットワーク(Tネットワークと呼ばれることがある)304は、単一ニューロンモデル(SNM)を使用するSPICE(SPICEモデル306として)にエクスポートされ(324)、これは、SPICEから、ケイデンス、およびケイデンスモデル308を使用するフルオンチップ設計にエクスポートされる(326)。ケイデンスモデル308は、1つ以上の検証入力のために、初期ニューラルネットワークに対して交差検証される(328)。
上記および下記の説明では、数学的ニューロンは、1つ以上の重み付けされた入力を受け取り、かつスカラー出力を生成する数学的関数である。いくつかの実装態様では、数学的ニューロンは、メモリ(例えば、長期短期記憶(LSTM)、回帰ニューロン)を有することができる。自明なニューロンは、「理想的な」数学的ニューロン、
を表す関数を実行する数学的ニューロンであり、式中、f(x)は、活性化関数である。SNMは、概略的な形態で特定のタイプの数学的ニューロン(例えば、自明なニューロン)を表すアナログコンポーネント(例えば、演算増幅器、抵抗器R1、...、Rn、および他のコンポーネント)を有する、概略モデルである。SNM出力電圧は、K個の入力電圧およびSNMコンポーネント値に依存する対応する式により表される
。いくつかの実装態様によれば、適切に選択されたコンポーネント値を有すると、SNM式は、所望の重みセットを有する数学的ニューロン式と同等である。いくつかの実装態様では、重みセットは、SNMで使用される抵抗器によって完全に決定される。ターゲット(アナログ)ニューラルネットワーク304(Tネットワークと呼ばれることがある)は、定義されたSNM表現とそれらの間の重み付けされた接続とを有し、ニューラルネットワークを形成する、数学的ニューロンのセットである。Tネットワークは、インバウンド制限(Tネットワーク内の任意のニューロンに対するインバウンド接続の最大限度)、アウトバウンド制限(Tネットワーク内の任意のニューロンに対するアウトバウンド接続の最大限度)、および信号範囲(例えば、すべての信号は、事前定義された信号範囲内にあるべきである)など、いくつかの制限に従う。T変換(322)は、モバイルネットなどのいくつかの所望のニューラルネットワークを対応するTネットワークに変換するプロセスである。SPICEモデル306は、T-ネットワーク304のSPICEニューラルネットワークモデルであり、各数学的ニューロンは、対応する1つ以上のSNMで置き換えられる。ケイデンスNNモデル310は、各数学的ニューロンが対応する1つ以上のSNMで置き換えられる、T-ネットワーク304のケイデンスモデルである。また、本明細書に記載されるように、2つのネットワークLおよびMは、これらのネットワークのすべてのニューロン出力について、epsが比較的小さい(例えば、動作電圧範囲の0.1~1%)として、
の場合、数学的同等性を有する。また、2つのネットワークLおよびMは、所与の検証入力データセット{I1,...,In}について、分類結果がほとんど同じであり、すなわち、epsが比較的小さいとして、P(L(Ik)=M(Ik))=1-epsである場合、関数同等性を有する。
図3Bは、いくつかの実装態様による、ケイデンス314上のSNMモデルに基づいてターゲットチップモデル320を生成するために使用される例示的な手動プロトタイピングプロセスを示す。以下の説明では、ケイデンスを使用するが、いくつかの実装態様に従って、ケイデンスツールの代わりに、メンターグラフィック設計またはシノプシス(例えば、シノプシス設計キット)製の代替ツールが使用されてもよいことに留意されたい。このプロセスは、インバウンド制限およびアウトバウンド制限ならびに信号制限を含むSNM制限を選択することと、ニューロン間の接続のためのアナログコンポーネント(例えば、特定の抵抗器アレイ技術を含む抵抗器)を選択することと、ケイデンスSNMモデル314を開発することと、を含む。プロトタイプSNMモデル316(例えば、PCBプロトタイプ)が、ケイデンス314上のSNMモデルに基づいて開発される(330)。プロトタイプSNMモデル316は、同等性についてSPICEモデルと比較される。いくつかの実装態様では、ニューラルネットワークが同等性要件を満たすとき、ニューラルネットワークが、オンチッププロトタイプのために選択される。ニューラルネットワークのサイズが小さいため、T変換を同等性について手動検証することができる。続いて、オンチップSNMモデル318が、SNMモデルプロトタイプ316に基づいて生成される(332)。オンチップSNMモデルは、いくつかの実装態様に従って、可能な限り最適化される。いくつかの実装態様では、SNMを確定した後、オンチップSNMモデル318に基づいてターゲットチップモデル320を生成する(334)前に、SNMモデルのオンチップ密度が計算される。プロトタイピングプロセスの間、実践者は、ニューラルネットワークタスクまたはアプリケーションおよび特定のニューラルネットワーク(例えば、0.1~110万個のニューロンのオーダーのニューラルネットワークを有する)を選択し、T変換を実行し、ケイデンスニューラルネットワークモデルを確立し、インターフェースおよび/またはターゲットチップモデルを設計することを反復し得る。
例示的な入力ニューラルネットワーク
図4A、4B、および4Cは、いくつかの実装態様による、システム100に入力され、かつ数学的に同等なアナログネットワークに変換される、訓練されたニューラルネットワーク(例えば、ニューラルネットワーク220)の例を示す。図4Aは、入力を受信し、活性化関数を使用して入力を組み合わせ、かつ1つ以上の出力を生成する人工ニューロンから構成された例示的なニューラルネットワーク(人工ニューラルネットワークと呼ばれることがある)を示す。入力には、画像、センサデータ、およびドキュメントなどのデータが含まれる。典型的には、各ニューラルネットワークは、オブジェクト認識などの特定のタスクを実行する。ネットワークは、ニューロン間の接続を含み、各接続は、ニューロンの出力を別のニューロンへの入力として提供する。訓練後、各接続には、対応する重みが割り当てられる。図4Aに示されるように、ニューロンは、典型的には、複数の層に編成され、ニューロンの各層は、ニューロンの直前および直後の層にのみ接続されている。ニューロン402の入力層は、外部入力(例えば、入力X1、X2、...、Xn)を受け取る。入力層402に、ニューロンの1つ以上の隠れ層(例えば、層404および406)が続き、それに、出力410を生成する出力層408が続く。1つの層のあらゆるニューロンを次の層のすべてのニューロンに接続する全結合パターン、または1つの層のニューロンのグループの出力を次の層の単一のニューロンに接続する枝刈りパターンなどの、様々なタイプの接続パターンが、連続する層のニューロンを接続する。フィードフォワードネットワークと呼ばれることがある、図4Aに示されるニューラルネットワークとは対照的に、図4Bに示されるニューラルネットワークは、1つの層のニューロンから、同じ層の他のニューロン、または先行する層のニューロンのいずれかへの1つ以上の接続を含む。図4Bに示される例は、回帰型ニューラルネットワークの例であり、入力層の2つの入力ニューロン412(入力X1を受け入れる)および414(入力X2を受け入れる)、これに続く2つの隠れ層を含む。第1の隠れ層は、入力層のニューロンと全結合ニューロン416および418、ならびに第2の隠れ層のニューロン420、422、および424を含む。第2の隠れ層のニューロン420の出力は、第1の隠れ層のニューロン416に接続されており、フィードバックループを提供する。ニューロン420、422、および424を含む隠れ層は、出力yを生成する出力層のニューロン426に入力される。
図4Cは、いくつかの実装態様による、畳み込みニューラルネットワーク(CNN)の例を示す。図4Aおよび4Bに示されるニューラルネットワークとは対照的に、図4Cに示される例は、特徴学習のための層の第1の段階と、オブジェクト認識などの分類タスクのための層の第2の段階と、を含む、異なるタイプのニューラルネットワーク層を含む。特徴学習段階は、畳み込みおよび整流線形ユニット(ReLU)層430、これに続く枝刈り層432を含み、枝刈り層432には、別の畳み込みおよびReLU層434が続き、当該ReLU層434には、別の枝刈り層436が続く。第1の層430は、入力428(例えば、入力画像またはその部分)から特徴を抽出し、その入力に対する畳み込み演算、および1つ以上の非線形演算(例えば、ReLU、tanh、またはシグモイド)を実行する。層432などの枝刈り層は、入力が大きいときにパラメータの数を低減する。枝刈り層436の出力は、層438によって平滑化され、1つ以上の層(例えば、層440および442)を有する全結合ニューラルネットワークに入力される。全結合ニューラルネットワークの出力は、ソフトマックス層444に入力され、全結合ネットワークの層442の出力を分類して、多くの異なる出力446(例えば、入力画像428のオブジェクトクラスまたはタイプ)のうちの1つを生成する。
いくつかの実装態様は、各層のニューロンの数、ニューロンの総数、各ニューロンの演算または活性化関数、および/またはニューロン間の接続を含む入力ニューラルネットワークのレイアウトまたは編成を、ニューラルネットワークトポロジ224としてメモリ214に記憶する。
図5は、いくつかの実装態様による、ニューロンのための数学モデル500の例を示す。数学モデルは、入力された入来信号502にシナプス重み504を乗算し、ユニット総和506によって総和することを含む。ユニット総和506の結果は、いくつかの実装態様に従って、非線形変換ユニット508に入力されて、出力信号510を生成する。
図6A~6Cは、いくつかの実装態様による、入力値のXOR(XOR結果の分類)を計算するためのニューラルネットワークのアナログハードウェア実現のための例示的なプロセスを例示している。図6Aは、それぞれ、x軸およびy軸に沿った、可能な入力値X1およびX2のテーブル600を示す。期待される結果値は、中空円(1の値を表す)と塗りつぶした円または暗円(0の値を表す)によって示され、これは、2つの入力信号および2つのクラスについての典型的なXOR問題である。値X1およびX2の両方ではなく、いずれか一方が1である場合にのみ、期待される結果は1であり、それ以外の場合は0である。訓練セットは、4つの可能な入力信号の組み合わせ(X1入力およびX2入力の二値)からなる。図6Bは、いくつかの実装態様による、図6AのXOR分類を解決するためのReLUベースのニューラルネットワーク602を示す。ニューロンは、バイアス値を使用せず、ReLU活性化を使用する。入力604および606(それぞれ、X1およびX2に対応する)は、第1のReLUニューロン608-2に入力される。入力604および606はまた、第2のReLUニューロン608-4に入力される。2つのReLUニューロン608-2および608-4の結果は、出力値510(Out値)を生成するために、入力値の線形総和を実行する第3のニューロン608-6に入力される。ニューラルネットワーク602は、ReLUニューロン608-2の(それぞれ、入力値X1およびX2の)重み-1および1、ReLUニューロン608-4の(それぞれ、入力値X1およびX2の)重み-1および1、ならびに(それぞれ、RelLUニューロン608-2および608-4の出力の)重み1および1を有する。いくつかの実装態様では、訓練されたニューラルネットワークの重みは、重み222としてメモリ214に記憶される。
図6Cは、いくつかの実装態様による、ネットワーク602の例示的な同等なアナログネットワークを示す。X1およびX2入力604および606のアナログの同等な入力614および616は、第1の層のアナログニューロンN1 618およびN2 620に入力される。ニューロンN1およびN2は、第2の層のニューロンN3およびN4と密結合されている。第2の層のニューロン(すなわち、ニューロンN3 622およびニューロンN4 624)は、出力Out(ネットワーク602の出力610と同等)を生成する出力ニューロンN5 626と接続されている。ニューロンN1、N2、N3、N4、およびN5は、ReLU(最大値=1)活性化関数を有する。
いくつかの実装態様は、およそ1000回の反復で収束し、かつ接続の重みをもたらす、ケラス学習を使用する。いくつかの実装態様では、重みは、重み222の一部としてメモリ214に記憶される。以下の例では、データフォーマットは、「ニューロン[第1のリンク重み,第2のリンク重み,バイアス]」である。
●N1[-0.9824321,0.976517,-0.00204677]、
●N2[1.0066702,-1.0101418,-0.00045485]、
●N3[1.0357606,1.0072469,-0.00483723]、
●N4[-0.07376373,-0.7682612,0.0]、および
●N5[1.0029935,-1.1994369,-0.00147767]。
次に、ニューロン間の接続の抵抗器値を計算するために、いくつかの実装態様が、抵抗器範囲を計算する。いくつかの実装態様は、1MΩの抵抗器公称値(R+,R-)、100KΩ~1MΩの可能な抵抗器範囲、および公称シリーズE24を設定する。いくつかの実装態様は、各接続のw1、w2、wbias抵抗器値を以下のように計算する。各重み値wi(例えば、重み222)について、いくつかの実装態様は、選定された公称シリーズ内のすべての可能な(Ri-,Ri+)抵抗器ペアのオプションを評価し、最小の誤差値
を生成する抵抗器ペアを選定する。以下の表は、いくつかの実装態様による、各接続に関する重みw1、w2、およびバイアスの例示的な値を提供する。
変換されたニューラルネットワークの例示的な利点
変換の例を記載する前に、従来のアーキテクチャに対する変換されたニューラルネットワークの利点のうちのいくつかに注目すべきである。本明細書に記載されるように、入力された訓練されたニューラルネットワークは、ピラミッド形状または台形形状のアナログネットワークに変換される。クロスバーを超えるピラミッドまたは台形の利点のうちのいくつかは、より低いレイテンシ、同時のアナログ信号伝播、抵抗器および演算増幅器を含む標準的な集積回路(IC)設計要素を使用した製造の可能性、計算の高い並列性、高精度(例えば、従来の方法と比較して、層の数とともに精度が増加する)、各重みおよび/または各接続における誤差に対する許容差(例えば、ピラミッドは誤差をバランスさせる)、低RC(ネットワークを介した信号の伝播に関連する低抵抗容量遅延)、および/または変換されたネットワークの各層における各ニューロンのバイアスおよび関数を操作する能力を含む。また、ピラミッドは、1つの出力で任意のニューラルネットワークをモデル化することができるマルチレベルパーセプトロンであることから、それ自体が優れた計算ブロックである。いくつかの実装態様によれば、いくつかの出力を有するネットワークは、異なるピラミッドまたは台形幾何学形状を使用して実装されている。ピラミッドは、各ニューロンがn個の入力および1つの出力を有する、1つの出力およびいくつかの層(例えば、N個の層)を有する多層パーセプトロンと考えることができる。同様に、台形は、各ニューロンがn個の入力およびm個の出力を有する多層パーセプトロンである。各台形は、いくつかの実装態様による、各ニューロンがn個の入力およびm個の出力を有し、かつnおよびmが、ICアナログチップ設計制限によって制限される、ピラミッド様ネットワークである。
いくつかの実装態様は、任意の訓練されたニューラルネットワークのピラミッドまたは台形のサブシステムへの可逆変換を実行する。したがって、ピラミッドおよび台形は、任意のニューラルネットワークを変換するための普遍的な確立ブロックとして使用され得る。ピラミッドベースまたは台形ベースのニューラルネットワークの利点は、標準的なリソグラフィ手法を使用して、標準的なICアナログ要素(例えば、演算増幅器、抵抗器、回帰ニューロンの場合の信号遅延ライン)を使用して、任意のニューラルネットワークを実現する可能性である。変換されたネットワークの重みをある区間に制限することも可能である。つまり、可逆変換は、いくつかの実装態様に従って、いくつかの事前定義された範囲に制限された重みで実行される。ピラミッドまたは台形を使用する別の利点は、信号処理の高度な並列性、または計算の速度を増加させ、より低いレイテンシを提供する、アナログ信号の同時伝播である。さらに、多くの最新のニューラルネットワークは、疎結合ネットワークであり、クロスバーに変換されるよりもピラミッドに変換されると、はるかに優れており(例えば、よりコンパクトであり、低いRC値を有し、リーク電流がない)、ピラミッドおよび台形ネットワークは、クロスバーベースのメモリスタネットワークよりも比較的コンパクトである。
さらに、アナログニューロモルフィック台形様チップは、アナログデバイスに典型的ではない、いくつかの特性を所有している。例えば、アナログチップの縦続数が増えるにつれて、信号対雑音比は増加せず、外部雑音が抑制され、温度の影響が大幅に低減される。そのような性質により、台形様アナログニューロモルフィックチップは、デジタル回路に類似している。例えば、個々のニューロンは、いくつかの実装態様に従って、演算増幅器に基づいて、信号をレベル調整し、20,000~100,000Hzの周波数で動作し、動作範囲よりも高い周波数を有するノイズまたは信号の影響を受けない。台形様アナログニューロモルフィックチップはまた、演算増幅器がどのように機能するかの特異性に起因して、出力信号の濾波を実行する。そのような台形様アナログニューロモルフィックチップは、近接位相ノイズを抑制する。また、演算増幅器の低オーム出力に起因して、このノイズは、大幅に低減される。各演算増幅器出力での信号のレベル調整、および増幅器の同期作用に起因して、温度によって引き起こされるパラメータのドリフトは、最終出力で信号に影響を与えない。台形様類似ニューロモルフィック回路は、入力信号の誤差およびノイズに対して耐性があり、ニューラルネットワークの重み値に対応する抵抗値のずれに対して耐性がある。台形様アナログニューロモルフィックネットワークはまた、演算増幅器に基づく、アナログニューロモルフィック台形様回路の性質そのものに起因して、すべての抵抗器についてそのような誤差が同じである場合、抵抗器値設定における誤差のような、任意の種類のシステム誤差に対して耐性がある。
訓練されたニューラルネットワークの例示的な可逆変換(T変換)
いくつかの実装態様では、本明細書に記載される例示的な変換は、変換されたニューラルネットワーク228を取得するために、数学的定式化230、基底関数ブロック232、アナログコンポーネントモデル234、および/またはアナログ設計制約236に基づいて、訓練されたニューラルネットワーク220を変換するニューラルネットワーク変換モジュール226によって、実行される。
図7は、いくつかの実装態様による、例示的なパーセプトロン700を示す。パーセプトロンは、K=8つの入力および8つのニューロン702-2、...、702-16を、この8つの入力を受け取る入力層に含む。出力層には、L=4つの出力に対応する4つのニューロン704-2、...、704-8を有する出力層がある。入力層のニューロンは、出力層のニューロンに全結合されており、8×4=32個の接続を作っている。接続の重みが重み行列WPによって表されるものとする(要素WPi,jは、入力層のi番目のニューロンと出力層のj番目のニューロンとの間の接続の重みに対応する)。さらに、各ニューロンが活性化関数Fを実行するものとする。
図8は、いくつかの実装態様による、図7に示されるパーセプトロンと同等である、ターゲットニューラルネットワークの一種(T-NN、またはTNN)である、例示的なピラミッドニューラルネットワーク(P-NN)800を示す。パーセプトロン(図7)のPN-NNアーキテクチャ(図8)へのこの変換を実行するために、T-NNについて、入力の数がNi=4に制限され、出力数がNo=2に制限されるものとする。T-NNは、ニューロン802-2、...、802-34の入力層LTIを含み、入力層LTIは、ニューロン802-2、...、802-16の入力層の2つのコピーの、合計2×8=16個の入力ニューロンの連結である。ニューロン802-20、...、802-34を含むニューロン804のセットは、ニューロン802-2、...、802-18のコピーであり、入力は、複製される。例えば、ニューロン802-2への入力はまた、ニューロン802-20に入力され、ニューロン802-4への入力20はまた、ニューロン802-22に入力される、などである。図8はまた、線形ニューロンであるニューロン806-02、...、806-16(2×16÷4=8つのニューロン)の隠れ層LTH1を含む。入力層LTIからの各グループのNi個のニューロンは、LTH1層からの2つのニューロンに全結合されている。図8はまた、2×8÷4=4つのニューロン808-02、...、808-08を有する出力層LTOを含み、各ニューロンは、活性化関数Fを実行する。層LTOの各ニューロンは、層LTH1の異なる群からの相違するニューロンに接続されている。図8に示されるネットワークは、40個の接続を含む。いくつかの実装態様は、以下のように、図8のP-NNの重み行列計算を実行する。隠れ層LTH1(WTH1)の重みは、重み行列WPから計算され、出力層LTO(WTO)に対応する重みは、1に等しい要素を有する疎行列を形成する。
図9は、いくつかの実装態様による、図8の出力ニューロンに対応するピラミッド単一ニューラルネットワーク(PSNN)900を示す。PSNNは、入力ニューロン902-02、...、902-16(図7のネットワーク700の8つの入力ニューロンに対応する)の層(LPSI)を含む。隠れ層LPSH1は、8÷4=2つの線形ニューロン904-02および904-04を含み、LTIからの各グループのNi個のニューロンは、LPSH1層の1つのニューロンに接続されている。出力層LPSOは、隠れ層のニューロン904-02および904-04の両方に接続されている、活性化関数Fを有する1つのニューロン906からなる。PSNN900の重み行列を計算するために、いくつかの実装態様は、LPSH1層についてのWPの第1の行に等しいベクトルWPSH1を計算する。LPSO層について、いくつかの実装態様は、各要素が1に等しい2つの要素を有する重みベクトルWPSOを計算する。このプロセスは、第1、第2、第3、および第4の出力ニューロンについて繰り返される。図8に示されるネットワークなどのP-NNは、(4つの出力ニューロンの)PSNNの融合である。あらゆるPSNNの入力層は、Pの入力層の別個のコピーである。この例では、P-NN800は、8×4=32個の入力を有する入力層、2×4=8つのニューロンを有する隠れ層、および4つのニューロンを有する出力層を含む。
N個の入力および1つの出力を有するターゲットニューロンを用いる例示的な変換
いくつかの実装態様では、本明細書に記載される例示的な変換は、変換されたニューラルネットワーク228を取得するために、数学的定式化230、基底関数ブロック232、アナログコンポーネントモデル234、および/またはアナログ設計制約236に基づいて、訓練されたニューラルネットワーク220を変換するニューラルネットワーク変換モジュール226によって、実行される。
1つの出力を有する単層パーセプトロン
単層パーセプトロンSLP(K,1)が、K個の入力、および活性化関数Fを有する1つの出力ニューロンを含むものとする。さらに、U∈RKが、SLP(K,1)の重みのベクトルであるものとする。以下のアルゴリズムNeuron2TNN1は、N個の入力および1つの出力を有するTニューロン(TN(N,1)と呼ばれる)から、Tニューラルネットワークを構築する。
アルゴリズムNeuron2TNN1
1.SLP(K,1)からのすべての入力を含めることによって、T-NNの入力層を構築する。
2.K>Nの場合には:
a.K個の入力ニューロンを、あらゆるグループがN個以下の入力からなるような
個のグループに分割する。
b.m1個のニューロンからT-NNの最初の隠れ層LTH1を構築し、各ニューロンは、恒等活性化関数を実行する。
c.あらゆるグループからの入力ニューロンを、次の層からの対応するニューロンに接続する。そのため、LTH1からのあらゆるニューロンが、N個以下の入力接続を有する。
d.次の式に従って、新たな接続の重みを設定する。
wij=uj,j=(i-1)*N+1,...,i*N
3.それ以外の場合(すなわち、K<=Nの場合)には):
a.活性化関数Fを計算する1つのニューロンで出力層を構築する
b.入力ニューロンを単一出力ニューロンに接続する。単一出力ニューロンは、K≦N個の接続を有する。
c.以下の式によって、新たな接続の重みを設定する。
d.アルゴリズムを終了する
4.l=1を設定する
5.ml>Nの場合:
a.ml個のニューロンを
個のグループに分割し、各グループは、N個以下のニューロンからなる。
b.ml+1個のニューロンからT-NNの隠れ層LTHl+1を構築し、あらゆるニューロンは、恒等活性化関数を有する。
c.各グループからの入力ニューロンを、次の層からの対応するニューロンに接続する。
d.次の式に従って、新たな接続の重みを設定する。
e.l=l+1を設定する。
6.それ以外の場合(m>=Nの場合):
a.活性化関数Fを計算する1つのニューロンで出力層を構築する
b.すべてのLTHlのニューロンを単一出力ニューロンに接続する。
c.次の式に従って、新たな接続の重みを設定する。
d.アルゴリズムを終了する
7.ステップ5および6を繰り返す。
ここで、
-最小整数は、x以上である。アルゴリズムNeuron2TNN1によって構築されたT-NNの層の数は、
である。T-NNの重みの総数は、
図10は、いくつかの実装態様による、構築されたT-NNの例を示す。最初の層を除くすべての層は、これらの層の入力の恒等変換を実行する。構築されたT-NNの重み行列は、いくつかの実装態様による、以下の形態を有する。
T-NNの出力値は、以下の式により計算される。
y=F(WmWm-1...W2W1x)
第1の層の出力は、以下の式に従って出力ベクトルとして計算される:
取得されたベクトルに第2の層の重み行列を乗算すると、
あらゆる後続の層は、xの何らかのサブベクトルの線形結合に等しい成分を有するベクトルを出力する。
最後に、T-NNの出力は、以下に等しい。
これは、同じ入力ベクトルxについてSLP(K,1)で計算された値と同じ値である。そのため、SLP(K,1)の出力地と構築されたT-NNの出力値とは、等しい。
いくつかの出力を有する単層パーセプトロン
K個の入力およびL個の出力ニューロンを有する単層パーセプトロンSLP(K,L)があり、各ニューロンが活性化関数Fを実行するものとする。さらに、U∈RL×KがSLP(K,L)の重み行列とする。以下のアルゴリズムLayer2TNN1は、ニューロンTN(N,1)からTニューラルネットワークを構築する。
アルゴリズムLayer2TNN1
1.あらゆる出力ニューロンi=1,...,Lについて
a.K個の入力、1つの出力ニューロン、および重みベクトルUij、j=1,2、...、KからなるアルゴリズムNeuron2TNN1をSLPi(K,1)に適用する。結果として、TNNiが構築される。
2.すべてのTNNiを1つのニューラルネットに構成することによって、PTNNを構築する:
a.すべてのTNNiの入力ベクトルを連結するので、PTNNの入力は、K個の入力のL個のグループを有し、各グループは、SLP(K,L)の入力層のコピーである。
PTNNの出力は、あらゆるペアSLPi(K,1)およびTNNiの出力が等しいため、同じ入力ベクトルについてのSLP(K,L)の出力に等しい。
多層パーセプトロン
多層パーセプトロン(MLP)が、K個の入力、S個の層、およびLi個の計算ニューロンをi番目の層に含み、MLP(K,S,L1,...LS)として表されるものとする。
が、i番目の層の重み行列であるものとする。
以下は、いくつかの実装態様による、ニューロンTN(N,1)からTニューラルネットワークを構築するための例示的なアルゴリズムである。
アルゴリズムMLP2TNN1
1.あらゆる層i=1、...、Sについて
a.Li-1個の入力、Li個の出力ニューロン、および重み行列UiからなるSLPi(Li-1,Li)にアルゴリズムLayer2TNN1を適用し、結果としてPTNNiを構築する。
2.すべてのPTNNiを1つのニューラルネットにスタックすることによって、MTNNを構築し、TNNi-1の出力は、TNNiの入力として設定される。
あらゆるペアSLPi(Li-1,Li)およびPTNNiの出力が等しいため、MTNNの出力は、同じ入力ベクトルについてのMLP(K,S,L1,...LS)の出力に等しい。
NI個の入力およびNO個の出力を有するターゲットニューロンでの例示的なT変換
いくつかの実装態様では、本明細書に記載される例示的な変換は、変換されたニューラルネットワーク228を取得するために、数学的定式化230、基底関数ブロック232、アナログコンポーネントモデル234、および/またはアナログ設計制約236に基づいて、訓練されたニューラルネットワーク220を変換するニューラルネットワーク変換モジュール226によって、実行される。
いくつかの出力を有する単層パーセプトロンの例示的な変換
単層パーセプトロンSLP(K,L)が、K個の入力およびL個の出力ニューロンを含み、各ニューロンが、活性化関数Fを実行するものとする。さらに、U∈RL×Kが、SLP(K,L)の重み行列であるものとする。以下のアルゴリズムは、いくつかの実装態様に従って、ニューロンTN(NI,NO)からTニューラルネットワークを構築する。
アルゴリズムLayer2TNNX
1.アルゴリズムLayer2TNN1(上記の説明を参照)を使用することによって、SLP(K,L)からPTNNを構築する。PTNNは、K個の入力のL個のグループからなる入力層を有する。
2.L個のグループから
個のサブセットを構成する。各サブセットは、入力ベクトルコピーのNO個以下のグループを含む。
3.あらゆるサブセットのグループを、入力ベクトルの1つのコピーで置換する。
4.あらゆる入力ニューロンからNO個の出力接続を作ることによって、あらゆるサブセット内の接続を再確立することによって、PTNNXを構築する。
いくつかの実装態様によれば、PTNNXの出力は、(上述した)PTNNについてと同じ式によって計算されるので、出力は、等しい。
図11A~11cは、いくつかの実装態様による、2つの出力ニューロンおよびTN(NI,2)を有する単層ニューラルネットワーク(NN)の上記のアルゴリズムのアプリケーション1100を示す。図11Aは、いくつかの実装態様による、例示的なソースまたは入力NNを示す。K個の入力が、層1104に属する2つのニューロン1および2に入力される。図11Bは、いくつかの実装態様による、アルゴリズムの第1のステップの後に構築されたPTNNを示す。PTNNは、図11Aに示されるNNの出力ニューロン1およびニューロン2に対応するサブネットを実装する2つの部分からなる。図11Bでは、入力1102は、複製され、2つのセットの入力ニューロン1106-2および1106-4に入力される。各セットの入力ニューロンは、2つのセットのニューロン1108-2および1108-4を有する後続の層のニューロンに接続されており、各セットのニューロンは、m1個のニューロンを含む。入力層には、恒等変換ブロック1110-2および1110-4が続き、各ブロックは、恒等重み行列を有する1つ以上の層を含む。恒等変換ブロック1110-2の出力は、出力ニューロン1112(図11Aの出力ニューロン1に対応する)に接続されており、恒等変換ブロック1110-4の出力は、出力ニューロン1114(図11Aの出力ニューロン1に対応する)に接続されている。図11Cは、入力ベクトル(1106-2および1106-4)の2つのコピーを1つのベクトル1116で置換すること(ステップ3)と、あらゆる入力ニューロンから2つの出力リンクを作ることによって第1の層1118内の接続を再確立することと、を含む、アルゴリズムの最終ステップのアプリケーションを示し、1つのリンクは、出力1に関連するサブネットに接続し、別のリンクは、出力2のサブネットに接続する。
多層パーセプトロンの例示的な変換
多層パーセプトロン(MLP)が、K個の入力、S個の層、およびLi個の計算ニューロンを第i層に含み、MLP(K,S,L1,...LS)として表されるものとする。
が、i番目の層の重み行列であるものとする。以下の例示的なアルゴリズムは、いくつかの実装態様に従って、ニューロンTN(NI,NO)からTニューラルネットワークを構築する。
アルゴリズムMLP2TNNX
1.あらゆる層i=1、...、Sについて:
a.アルゴリズムLayer2TNNXを、Li-1個の入力、Li個の出力ニューロン、および重み行列UiからなるSLPi(Li-1,Li)に適用する。結果として、PTNNXiが構築される。
2.すべてのPTNNXiを1つのニューラルネットにスタックすることによって、MTNNXを構築する。
a.TNNXi-1の出力は、TNNXiの入力として設定される。
いくつかの実装態様によれば、あらゆるペアSLPi(Li-1,Li)およびPTNNXiの出力が等しいため、MTNNXの出力は、同じ入力ベクトルについてのMLP(K,S,L1,...LS)の出力に等しい。
回帰型ニューラルネットワークの例示的な変換
回帰型ニューラルネットワーク(RNN)は、情報を保存することを可能にする後方接続を含む。図12は、いくつかの実装態様による、例示的なRNN1200を示す。例は、入力Xt 1206を受け入れ、活性化関数Aを実行し、かつ値ht 1202を出力する、活性化関数Aを実行するブロック1204を示す。ブロック1204からそれ自体への後方矢印は、いくつかの実装態様による、後方接続を示す。同等なネットワークが、活性化ブロックが入力Xt 1206を受け取る時点まで右側に示されている。時刻0では、ネットワークは、入力Xt 1208を受け入れて活性化関数A 1204を実行し、値ho 1210を出力し、時刻1では、ネットワークは、入力X1 1212と時刻0でのネットワークの出力とを受け入れて活性化関数A 1204を実行し、値h1 1214を出力し、時刻2では、ネットワークは、入力X2 1216と時刻1でのネットワークの出力とを受け入れ、活性化関数A 1204を実行し、値h1 1218を出力する。このプロセスは、いくつかの実装態様に従って、時刻tまで継続し、その時点でネットワークは、入力Xt 1206と時刻t-1でのネットワークの出力とを受け入れ、活性化関数A 1204を実行し、値ht 1202を出力する。
RNNにおけるデータ処理は、以下の式によって実行される:
ht=f(W(hh)ht-1+W(hx)xt)
上式で、xtは、電流入力ベクトルであり、ht-1は、前の入力ベクトルxt-1についてのRNNの出力である。この表式は、いくつかの演算、すなわち、2つの全結合層W(hh)ht-1およびW(hx)xtの線形結合の計算、要素ごとの加算、および非線形関数の計算(f)からなる。第1および第3の演算は、台形ベースのネットワークによって実装され得る(1つの全結合層が、台形ネットワークの特別な場合であるピラミッドベースのネットワークによって実装される)。第2の演算は、任意の構造のネットワークに実装され得る一般的な演算である。
いくつかの実装態様では、回帰接続を有していないRNNの層は、上述のLayer2TNNXアルゴリズムによって変換される。変換が完了した後、関連するニューロン間に回帰リンクが追加される。いくつかの実装態様は、図13Bを参照して以下に記載される遅延ブロックを使用する。
LSTMネットワークの例示的な変換
長期短期記憶(LSTM)ニューラルネットワークは、RNNの特別な場合である。LSTMネットワークの演算は、以下の式により表される。
●ft=σ(Wf[ht-1,xt]+bf)、
●it=σ(Wi[ht-1,xt]+bi)、
●Dt=tanh(WD[ht-1,xt]+bD)、
●Ct=(ft×Ct-1+it×Dt)、
●ot=σ(Wo[ht-1,xt]+bo)、および
●ht=ot×tanh(Ct)。
上記の式中、Wf、Wi、WD、およびWOは、訓練可能な重み行列であり、bf、bi、bD、およびbOは、訓練可能なバイアスであり、xtは、電流入力ベクトルであり、ht-1は、前の入力ベクトルxt-1について計算されたLSTMの内部状態であり、otは、電流入力ベクトルについて出力される。式中、下付き文字tは、時間インスタンスtを意味し、下付き文字t-1は、時間インスタンスt-1を意味する。
図13Aは、いくつかの実装態様による、LSTMニューロン1300のブロック図である。シグモイド(σ)ブロック1318は、入力ht-1 1330およびxt 1332を処理し、出力ft 1336を生成する。第2のシグモイド(σ)ブロック1320は、入力ht-1 1330およびxt 1332を処理し、出力it 1338を生成する。双曲線正接(tanh)ブロック1322は、入力ht-1 1330およびxt 1332を処理し、出力Dt 1340を生成する。第3のシグモイド(σ)ブロック1328は、入力ht-1 1330およびxt 1332を処理し、出力Ot 1342を生成する。乗算器ブロック1304は、ft 1336、および(先行時間インスタンスからの)和演算ブロック1306の出力Ct-1 1302を処理して出力を生成し、当該出力は、出力it 1338とDt 1340とを乗算して出力Ct 1310を生成する第2の乗算器ブロック1314の出力と、和演算ブロック1306によって和演算される。出力Ct 1310は、別のtanhブロック1312に入力されて出力を生成し、この出力は、第3の乗算器ブロック1316で出力Ot 1342と乗算されて、出力ht 1334を生成する。
これらの表式には、以下のいくつかのタイプの演算が利用されている。(i)いくつかの全結合層についての線形結合の計算、(ii)要素ごとの加算、(iii)アダマール積、および(iv)非線形関数計算(例えば、シグモイド(σ)および双曲線正接(tanh))。いくつかの実装態様は、(i)および(iv)の演算を台形ベースのネットワークによって実装する(1つの全結合層が、台形ネットワークの特別な場合であるピラミッドベースのネットワークによって実装される)。いくつかの実装態様は、一般的な演算である(ii)および(iii)の演算のために様々な構造のネットワークを使用する。
回帰接続を有していないLSTM層の層は、いくつかの実装態様に従って、上述のLayer2TNNXアルゴリズムを使用することによって変換される。変換が完了した後、いくつかの実装態様に従って、関連するニューロン間に回帰リンクが追加される。
図13Bは、いくつかの実装態様による、遅延ブロックを示す。上述したように、LSTM演算の式中の表式のうちのいくつかは、前の時間インスタンスからの出力を保存し、復元し、および/または呼び出すことに依存する。例えば、乗算器ブロック1304は、和演算ブロック1306の出力(先行時間インスタンスから)Ct-1 1302を処理する。図13Bは、いくつかの実装態様による、遅延ブロックの2つの例を示す。例1350は、左側の遅延ブロック1354を含み、時間tで入力xt 1352を受け入れ、出力xt-dt 1356によって示されるdtの遅延の後にこの入力を出力する。右側の例1360は、いくつかの実装態様に従って、縦続の(または複数の)遅延ブロック1364および1366は、出力xt-2dt 1368によって示される2ユニットの時間遅延の後に入力xt 1362を出力する。
図13Cは、いくつかの実装態様による、LSTMニューロンのニューロンスキーマである。スキーマは、重み付けされた和演算器ノード(加算器ブロックと呼ばれることがある)1372、1374、1376、1378、および1396、乗算器ブロック1384、1392、および1394、ならびに遅延ブロック1380および1382を含む。入力xt 1332は、加算器ブロック1372、1374、1376、および1378に接続されている。先行入力xt-1の出力ht-1 1330はまた、加算器ブロック1372、1374、1376、および1378に入力される。加算器ブロック1372は、出力ft 1336を生成するシグモイドブロック1394-2に入力される出力を生成する。同様に、加算器ブロック1374は、出力it 1338を生成するシグモイドブロック1386に入力される出力を生成する。同様に、加算器ブロック1376は、出力Dt 1340を生成する双曲線正接ブロック1388に入力される出力を生成する。同様に、加算器ブロック1378は、出力Ot 1342を生成するシグモイドブロック1390に入力される出力を生成する。乗算器ブロック1392は、出力it 1338、ft 1336、および先行時間インスタンスCt-1 1302からの加算器ブロック1396の出力を使用して、第1の出力を生成する。乗算器ブロック1394は、出力it 1338およびDt 1340を使用して、第2の出力を生成する。加算器ブロック1396は、第1の出力と第2の出力とを和演算して、出力Ct 1310を生成する。出力Ct 1310は、双曲線正接ブロック1398に入力されて出力を生成し、この出力は、シグモイドブロック1390の出力、Ot1342とともに、乗算器ブロック1384に入力されて、出力ht 1334を生成する。遅延ブロック1382は、先行時間インスタンスからの加算器ブロック1396の出力を呼び出す(例えば、保存および復元する)ために使用される。同様に、遅延ブロック1380は、(例えば、先行時間インスタンスからの)先行入力xt-1についての乗算器ブロック1384の出力を呼び出すか、または保存し、および復元するために使用される。遅延ブロックの例は、いくつかの実装態様に従って、図13Bを参照して上述されている。
GRUネットワークの例示的な変換
ゲート付き回帰型ユニット)(GRU)ニューラルネットワークは、RNNの特別の場合である。RNNの演算は、以下の表式で表される。
●zt=σ(Wzxt+Uzht-1)、
●rt=σ(Wrxt+Urht-1)、
●jt=tanh(Wxt+rt×Uht-1)、
●ht=zt×ht-1+(1-zt)×jt)。
上記の式中、xtは、電流入力ベクトルであり、ht-1は、前の入力ベクトルxt-1について計算された出力である。
図14Aは、いくつかの実装態様による、GRUニューロンのブロック図である。シグモイド(σ)ブロック1418は、入力ht-1 1402およびxt 1422を処理し、出力rt 1426を生成する。第2のシグモイド(σ)ブロック1420は、入力ht-1 1402およびxt 1422を処理し、出力zt 1428を生成する。乗算器ブロック1412は、出力rt 1426と入力ht-1 1402とを乗算して出力を生成し、この出力は、(入力xt 1422とともに)双曲線正接(tanh)ブロック1424に入力されて、出力jt 1430を生成する。第2の乗算器ブロック1414は、出力jt 1430と出力zt 1428とを乗算して、第1の出力を生成する。ブロック1410は、1-出力zt 1428を計算して出力を生成し、この出力は、出力と入力ht-1 1402とを乗算する第3の乗算器ブロック1404に入力されて出力を生成し、この出力は、(乗算器ブロック1414からの)第1の出力とともに加算器ブロック1406に入力されて、出力ht 1408を生成する。入力ht-1 1402は、先行時間区間出力t-1からのGRUニューロンの出力である。
図14Bは、いくつかの実装態様による、GRUニューロン1440のニューロンスキーマである。スキーマは、重み付けされた和演算器ノード(加算器ブロックと呼ばれることがある)1404、1406、1410、1406、および1434、乗算器ブロック1404、1412、および1414、ならびに遅延ブロック1432を含む。入力xt 1422は、加算器ブロック1404、1410、および1406に接続されている。先行入力xt-1の出力ht-1 1402はまた、加算器ブロック1404および1406、ならびに乗算器ブロック1404および1412に入力される。加算器ブロック1404は、出力Zt 1428を生成するシグモイドブロック1418に入力される出力を生成する。同様に、加算器ブロック1406は、シグモイドブロック1420に入力される出力を生成し、シグモイドブロック1420は、乗算器ブロック1412に入力される出力rt 1426を生成する。乗算器ブロック1412の出力は、加算器ブロック1410に入力され、加算器ブロック1410の出力は、出力1430を生成する双曲線正接ブロック1424に入力される。出力1430ならびにシグモイドブロック1418の出力は、乗算器ブロック1414に入力される。シグモイドブロック1418の出力は、その出力を遅延ブロック1432からの入力と乗算して第1の出力を生成する乗算器ブロック1404に入力される。乗算器ブロックは、第2の出力を生成する。加算器ブロック1434は、第1の出力と第2の出力とを和演算して、出力ht 1408を生成する。遅延ブロック1432は、先行時間インスタンスからの加算器ブロック1434の出力を呼び出す(例えば、保存および復元する)ために使用される。遅延ブロックの例は、いくつかの実装態様に従って、図13Bを参照して上述されている。
GRUで使用される演算タイプは、LSTMネットワーク(上述の)の演算タイプと同じであるので、GRUは、いくつかの実装態様による、LSTMについて上述した原理に従って(例えば、Layer2TNNXアルゴリズムを使用して)台形ベースのネットワークに変換される。
畳み込みニューラルネットワークの例示的な変換
一般に、畳み込みニューラルネットワーク(CNN)は、畳み込み(カーネルを用いた画像の(または内部マップの)断片の線形結合のセット)、アクティブ化関数、および枝刈り(例えば、最大値、平均値など)などのいくつかの基本演算を含む。CNN内のあらゆる計算ニューロンは、MLPのニューロンの一般的な処理スキーム、すなわち、後続の活性化関数の計算を用いたいくつかの入力の線形結合に従う。そのため、CNNは、いくつかの実装態様による、多層パーセプトロンについて上述したMLP2TNNXアルゴリズムを使用して変換される。
Conv1Dは、時間座標にわたって実行される畳み込みである。図15Aおよび15Bは、いくつかの実装態様による、単一のConv1Dフィルタのバリアントのニューロンスキーマである。図15Aでは、重み付けされた和演算器ノード1502(加算器ブロックと呼ばれることがあり、「+」と標記される)は、5つの入力を有するので、5のカーネルを用いた1D畳み込みに対応する。入力は、時間tからのxt 1504、時間t-1からのxt-1 1514(入力を遅延ブロック1506に入力することによって取得される)、時間t-2からのxt-21516(遅延ブロック1506の出力を別の遅延ブロック1508に入力することによって取得される)、時間t-3からのxt-31518(遅延ブロック1508の出力を別の遅延ブロック1510に入力することによって取得される)、および時間t-4からのxt-41520(遅延ブロック1510の出力を別の遅延ブロック1512に入力することにより取得される、である。大きなカーネルについては、ブロックのうちのいくつかが、より大きな遅延を生成するように、異なる周波数遅延ブロックを利用することが有益であることがある。いくつかの実装態様は、図15Bに示されるように、いくつかの小さな遅延ブロックを1つの大きな遅延ブロックに置き換える。図15Aの遅延ブロックに加えて、例は、時間t-3からのxt-3 1518を生成する遅延_3ブロック1524、および時間t-5からのxt-5 1522を生成する別の遅延ブロック1526を使用する。遅延_3 1524ブロックは、いくつかの実装態様による、複数の遅延ブロックの例である。この演算は、ブロックの総数を減少させないが、いくつかの実装態様によれば、入力信号に対して実行される結果として生じる演算の総数を減少させ、誤差の蓄積を低減し得る。
いくつかの実装態様では、畳み込み層は、台形様ニューロンによって表され、全結合層は、抵抗器のクロスバーによって表される。いくつかの実装態様は、クロスバーを使用し、クロスバーの抵抗行列を計算する。
複数の出力を有する単層パーセプトロンの例示的な近似アルゴリズム
いくつかの実装態様では、本明細書に記載される例示的な変換は、変換されたニューラルネットワーク228を取得するために、数学的定式化230、基底関数ブロック232、アナログコンポーネントモデル234、および/またはアナログ設計制約236に基づいて、訓練されたニューラルネットワーク220、および/またはアナログニューラルネットワーク最適化モジュール246を変換するニューラルネットワーク変換モジュール226によって、実行される。
単層パーセプトロンSLP(K,L)が、K個の入力およびL個の出力ニューロンを含み、各出力ニューロンが、活性化関数Fを実行するものとする。さらに、U∈RL×Kが、SLP(K,L)の重み行列であるものとする。以下は、いくつかの実装態様による、近似アルゴリズムLayer2TNNX_Approxを使用してニューロンTN(NI,NO)からTニューラルネットワークを構築するための例である。アルゴリズムは、ニューロンおよび接続の数を減少させるために、第1の段階で(上述した)Layer2TNN1アルゴリズムを適用し、続いて、Layer2TNNXを適用して、減少したサイズの入力を処理する。得られたニューラルネットの出力は、Layer2TNN1アルゴリズムによって構築された層の共有重みを使用して計算される。これらの層の数は、アルゴリズムのパラメータである値pによって決定される。pが0に等しい場合には、Layer2TNNXアルゴリズムが適用されるのみであり、変換は、同等である。p>0の場合には、p個の層は、重みを共有し、変換は、近似的である。
アルゴリズムLayer2TNNX_Approx
1.パラメータpを、
の値で設定する。
2.p>0の場合、ニューロンTN(NI,1)でのアルゴリズムLayer2TNN1をネットSLP(K,L)に適用し、得られたサブネット(PNN)の最初のp個の層を構築する。
ネットPNNは、出力層に
個のニューロンを有する。
3.ニューロンTN(NI,NO)でのアルゴリズムLayer2TNNXを適用し、Np個の入力およびL個の出力を有するニューラルサブネットTNNを構築する。
4.PNNネットの重みを設定する。PNNの第1の層のあらゆるニューロンiの重みは、ルール
に従って設定される。ここで、Cは、ゼロに等しくない任意の定数であり、kiを除くこのニューロンのすべての重みjについて、ki=(i-1)NI+1かつ
。
PNNネットのすべての他の重みは、1に設定される。
は、第1の層のニューロンiとニューロンkiとの間の接続のための第1の層(上付き文字(1)が意味する)の重みを表す。
5.TNNサブネットの重みを設定する。TNNの第1層のあらゆるニューロンiの重み(ネット全体を考慮すると、これは(p+1)番目の層である)は、式
に従って設定される。TNNのすべての他の重みは、1に設定される。
6.TNNサブネットの最後の層のすべてのニューロンの活性化関数をFに設定する。すべての他のニューロンの活性化関数は、恒等である。
図16は、いくつかの実装態様による、結果として生じるニューラルネットの例示的なアーキテクチャ1600を示す。この例は、TNN1606に接続されたPNN1602を含む。PNN1602は、K個の入力の層を含み、TNN1606に入力1612として接続されているNp個の出力を生成する。TNN1606は、いくつかの実装態様に従って、L個の出力1610を生成する。
いくつかの出力を有する多層パーセプトロンの近似アルゴリズム
多層パーセプトロン(MLP)が、K個の入力、S個の層、およびLi個の計算ニューロンをi番目の層に含み、MLP(K,S,L1,...LS)として表されるものとする。さらに、
が、i番目の層の重み行列であるものとする。以下の例示的なアルゴリズムは、いくつかの実装態様に従って、ニューロンTN(NI,NO)からTニューラルネットワークを構築する。
アルゴリズムMLP2TNNX_Approx
1.あらゆる層i=1、...、Sについて:
a.(上述した)アルゴリズムLayer2TNNX_Approxを、Li-1個の入力、Li個の出力ニューロン、および重み行列UiからなるSLPi(Li-1,Li)に適用する。i=1の場合には、L0=K。このステップは、結果としてPTNNXiを構築するものとする。
2.すべてのPTNNXiを1つのニューラルネットにスタックすることによって、MTNNX(多層パーセプトロン)を構築し、TNNXi-1の出力は、TNNXiの入力として設定される。
変換されたニューラルネットワークの圧縮の例示的な方法
いくつかの実装態様では、本明細書に記載される例示的な変換は、変換されたニューラルネットワーク228を取得するために、数学的定式化230、基底関数ブロック232、アナログコンポーネントモデル234、および/またはアナログ設計制約236に基づいて、訓練されたニューラルネットワーク220、および/またはアナログニューラルネットワーク最適化モジュール246を変換するニューラルネットワーク変換モジュール226によって、実行される。
このセクションは、いくつかの実装態様による、変換されたニューラルネットワークの圧縮の例示的な方法について記載する。いくつかの実装態様は、アナログネットワークオンチップを実現するために必要な、演算増幅器および抵抗器の数を最小化するために、アナログピラミッド様ニューラルネットワークを圧縮する。いくつかの実装態様では、アナログニューラルネットワークの圧縮の方法は、ソフトウェアニューラルネットワークにおける枝刈りと同様の枝刈りである。それにもかかわらず、ハードウェアでICアナログチップとして実現可能であるピラミッド様アナログネットワークの圧縮には、いくつかの特異な点がある。演算増幅器および抵抗器などの素子の数が、アナログベースのニューラルネットワークの重みを定義することから、オンチップで配置される演算増幅器および抵抗器の数を最小化することが極めて重要である。このことはまた、チップの消費電力を最小化するのに役立つ。畳み込みニューラルネットワークなどの最新のニューラルネットワークは、ネットワークの精度を著しく損なうことなく、5~200回圧縮できる。多くの場合、最新のニューラルネットワークのブロック全体は、精度を著しく損なうことなく枝刈りできる。稠密なニューラルネットワークを、疎結合ピラミッドまたは台形またはクロスバー様ニューラルネットワークに変換することは、疎結合ピラミッドまたは台形様アナログネットワークを枝刈りする機会を提示し、次いで、これらは、アナログICチップ内のオペレーティング増幅器および抵抗器によって表される。いくつかの実装態様では、そのような手法は、従来のニューラルネットワーク圧縮手法に加えて適用される。いくつかの実装態様では、圧縮手法は、入力ニューラルネットワークおよび/または変換されたニューラルネットワークの特定のアーキテクチャ(例えば、ピラミッド対台形対クロスバー)に基づいて適用される。
例えば、ネットワークが演算増幅器などのアナログ素子によって実現されることから、いくつかの実装態様は、標準的な訓練データセットが提示されるときに、演算増幅器を通って流れる電流を決定し、それによって、チップ全体に対して結び目(演算増幅器)が必要かどうかを判定する。いくつかの実装態様は、チップのスパイスモデルを分析し、電流が流れず、かつ電力が消費されない結び目および接続を決定する。いくつかの実装態様は、アナログICネットワークを通る電流の流れを決定し、したがって、次いで枝刈りされる結び目および接続を決定する。さらに、いくつかの実装態様はまた、接続の重みが高すぎる場合に接続を除去し、および/または接続の重みが低すぎる場合に抵抗器を直接コネクタに置き換える。いくつかの実装態様は、この結び目につながるすべての接続が所定の閾値よりも低い(例えば、0に近い)重みを有する場合、結び目を枝刈りし、増幅器が増幅なしで線形関数を与える場合、演算増幅器が常に出力にゼロを提供する接続を削除し、かつ/または演算増幅器を線形接合部に変更する。
いくつかの実装態様は、ピラミッド、台形、またはクロスバータイプのニューラルネットワークに特有の圧縮手法を適用する。いくつかの実装態様は、(圧縮なしよりも)より大きな入力量でピラミッドまたは台形を生成し、したがって、ピラミッドまたは台形内の層の数を最小化する。いくつかの実装態様は、各ニューロンの出力の数を最大化することによって、よりコンパクトな台形ネットワークを生成する。
最適抵抗器セットの例示的な生成
いくつかの実装態様では、本明細書に記載される例示的な計算は、変換されたニューラルネットワークの接続の重み272、および/または重み272の対応する抵抗値242を計算する重み行列計算または重み量子化モジュール238によって(例えば、抵抗計算モジュール240を使用して)実行される。
このセクションは、いくつかの実装態様による、訓練されたニューラルネットワークの最適な抵抗器セットを生成する例について記載する。例示的な方法は、場合によってはより小さい抵抗器公称値、および場合によってはより高い許容される抵抗器ばらつきを有するマイクロチップ上にニューラルネットワークを実装するための抵抗器公称値に接続重みを変換するために提供される(NNモデルと呼ばれることがある)。
試験セット「Test」は、入力ベクトル(x座標およびy座標)の約10,000個の値を含み、両方の座標は、0.01のステップで[0;1]の範囲で変動するものとする。所与の入力XについてのネットワークNN出力は、Out=NN(X)によって与えられるものとする。さらに、入力値クラスが以下のように求められるものとする。Class_nn(X)=NN(X)>0.61?1:0.
以下は、数理ネットワークモデルMを概略ネットワークモデルSと比較する。概略ネットワークモデルは、rvの可能な抵抗器ばらつきを含み、「試験」セットを処理し、その都度、出力値S(試験)=Out_sの異なるベクトルを生成する。出力誤差は、以下の式によって定義される。
分類誤差は、以下の式によって定義される。
いくつかの実装態様は、所望の分類誤差を1%以下に設定する。
例示的な誤差分析
図17Aは、いくつかの実装態様による、Mネットワーク上の出力誤差と分類誤差との間の依存関係を示す例示的なチャート1700を示す。図17Aでは、x軸は、分類マージン1704に対応し、y軸は、総誤差1702に対応する(上記の説明を参照)。グラフは、出力信号の異なる分類マージンの総誤差(モデルMの出力と実データとの差)を示す。この例について、チャートによれば、最適分類マージン1706は、0.610である。
別のネットワークOが、関連するM出力値に対して一定のシフトで出力値を生成するものとすると、OとMとの間に分類誤差が生じる。分類誤差を1%未満に保つには、このシフトは[-0.045,0.040]の範囲にあるべきである。したがって、Sの可能な出力誤差は、45mVである。
可能な重み誤差は、ネットワーク全体にわたる重み/バイアス相対誤差と出力誤差の間の依存関係を分析することによって決定される。図17Bおよび17Cにそれぞれ示されるチャート1710および1720は、いくつかの実装態様に従って、「試験」セットにわたって、20個のランダムに修正されたネットワークを平均することによって取得される。これらのチャートでは、x軸は、絶対重み誤差1712を表し、y軸は、絶対出力誤差1714を表す。チャートから分かるように、45mV(y=0.045)の出力誤差制限は、各重みに対して0.01の相対誤差値または0.01の絶対誤差値(xの値)を許容する。ニューラルネットワークの最大重みモジュラス(すべての重みの中の重みの絶対値の最大値)は、1.94である。
抵抗器セットを選定するための例示的なプロセス
このセットから選定された{R+,R-}ペアと一緒に設定された抵抗は、ある程度の抵抗器誤差r_errを有する必要とされる重み範囲[-wlim;wlim]を超える値関数を有する。いくつかの実装態様では、抵抗器セットの値関数は、以下のように計算される。
●可能な重みオプションアレイは、抵抗器誤差に依存する重み平均誤差と一緒に計算される。
●アレイ内の重みオプションは、必要とされる重み範囲[-wlim;wlim]に制限され、
●重み誤差の点で隣接値よりも悪い値が削除され、
●隣接する値間の距離の配列が計算され、
●値関数は、距離配列の二乗平均または最大値の成分である。
いくつかの実装態様は、学習率値に基づいて抵抗器セット内の各抵抗器値を連続的に調整することによって、最適な抵抗器セットを反復的に探索する。いくつかの実装態様では、学習率は、経時的に変化する。いくつかの実装態様では、初期抵抗器セットは、均一(例えば、[1;1;...;1])として選定され、最小抵抗器値および最大抵抗器値は、2桁の大きさの範囲(例えば、[1;100]または[0.1;10])内にあるように選定される。いくつかの実装態様は、R+=R-を選択する。いくつかの実装態様では、反復プロセスは、極小値に収束する。1つの場合では、プロセスは、以下のセット、すなわち、[0.17、1.036、0.238、0.21、0.362、1.473、0.858、0.69、5.138、1.215、2.083、0.275]をもたらした。これは、rmin=0.1(最小抵抗)、rmax=10(最大抵抗)、およびr_err=0.001(抵抗の推定誤差)を有する重み範囲[-2;2]に対する12個の抵抗の局所最適抵抗セットである。いくつかの実装態様は、優れた局所最適値を見つけるために、利用可能な範囲全体[rmin;rmax]を使用しない。利用可能な範囲の一部(例えば、この場合、[0.17;5.13])のみが、使用される。抵抗器の設定値は相対的であり、絶対ではない。この場合、抵抗器セットには、30の相対値範囲で十分である。
一例では、長さ20の以下の抵抗器セット、すなわち、[0.300、0.461、0.519、0.566、0.648、0.655、0.689、0.996、1.006、1.048、1.186、1.222、1.261、1.435、1.488、1.524、1.584、1.763、1.896、2.02]が、上記のパラメータについて取得される。この例では、値1.763はまた、R-=R+値である。続いて、このセットを使用して、NNの重みを生成し、対応するモデルSを生成する。モデルSの平均二乗出力誤差は、相対抵抗誤差がゼロに近いことを考慮して11mVであったので、20個の抵抗のセットは、必要とされるよりも多い。入力データのセットにわたる最大誤差は、33mVであると計算された。一例では、256レベルを有するS、DAC、およびADCコンバータを別個のモデルとして分析し、結果は、14mVの平均二乗出力誤差、および49mVの最大出力誤差を示した。NN上の45mVの出力誤差は、1%の相対認識誤差に相当する。45mVの出力誤差値はまた、許容可能である0.01の相対重み誤差または0.01の絶対重み誤差に相当する。NN内の最大重みモジュラスは、1.94である。このようにして、最適(または準最適)抵抗器セットは、反復プロセスを使用して、所望の重み範囲[-wlim;wlim]、抵抗器誤差(相対)、および可能な抵抗器範囲に基づいて決定される。
典型的には、非常に広い抵抗セットは、異なる層または重みスペクトル部分内で異なる精度が必要とされない限り、あまり有益ではない(例えば、1~1/5桁の大きさで十分である)。例えば、重みが[0,1]の範囲にあるが、重みのほとんどが[0,0.001]の範囲にあるものとすると、その範囲内でより良い精度が必要である。上述した例では、相対抵抗誤差がゼロに近いことを考慮すると、20個の抵抗のセットは、所与の精度でNNネットワークを量子化するのに十分過ぎる。一例では、抵抗のセット[0.300、0.461、0.519、0.566、0.648、0.655、0.689、0.996、1.006、1.048、1.186、1.222、1.261、1.435、1.488、1.524、1.584、1.763、1.896、2.02](記載値は相対的)で、11mVの平均S出力誤差が、取得された。
抵抗値の量子化のための例示的なプロセス
いくつかの実装態様では、本明細書に記載される例示的な計算は、変換されたニューラルネットワークの接続の重み272、および/または重み272の対応する抵抗値242を計算する重み行列計算または重み量子化モジュール238によって(例えば、抵抗計算モジュール240を使用して)実行される。
このセクションは、いくつかの実装態様による、訓練されたニューラルネットワークの重みに対応する抵抗値を量子化するための例示的なプロセスについて記載する。例示的なプロセスは、ニューラルネットワークを実現するためのアナログハードウェアコンポーネントを使用してチップを製造するプロセスを実質的に簡素化する。上述したように、いくつかの実装態様は、抵抗器を使用して、アナログニューロンを表す演算増幅器のニューラルネットワーク重みおよび/またはバイアスを表す。ここで記載される例示的なプロセスは、具体的には、チップのための抵抗器のセットをリソグラフィ加工する際の複雑さを低減する。抵抗値を量子化する手順では、チップ製造に抵抗の選択値のみが必要である。このようにして、例示的なプロセスは、チップ製造の全体的なプロセスを簡素化し、オンデマンドの自動抵抗器リソグラフィマスク製造を可能にする。
図18は、いくつかの実装態様による、抵抗器の量子化に使用されるニューロンモデル1800の例示的なスキームを提供する。いくつかの実装態様では、回路は、負の重み固定抵抗器(R1-1804、R2-1806、Rb-バイアス1816、Rn-1818、およびR-1812)、ならびに正の重み固定抵抗器(R1+1808、R2+1810、Rb+バイアス1820、Rn+1822)、およびR+1814)から入力信号を受信する演算増幅器1824(例えば、AD824シリーズ高精度増幅器)に基づいている。正の重み電圧は、演算増幅器1824の直接入力に供給され、負の重み電圧は、演算増幅器1824の反転入力に供給される。演算増幅器1824を使用して、各抵抗器からの加重出力の加重和演算を可能にし、この場合に、負の重みは、正の重みから減算される。演算増幅器1824はまた、回路動作に必要な程度まで信号を増幅する。いくつかの実装態様では、演算増幅器1824はまた、演算増幅器1824の出力カスケードにおいて出力信号のRELU変換を遂行する。
次の式は、抵抗器値に基づいて重みを決定する。
●ニューロンの出力における電圧は、以下の式によって決定される。
●各接続の重みは、次の式によって決定される。
次の例示的な最適化手順は、いくつかの実装態様に従って、各抵抗の値を量子化し、ニューラルネットワーク出力の誤差を最小化する。
1.接続の重みおよびバイアスのセット{w1,...,wn,b}を取得する。
2.可能な最小抵抗器値および最大抵抗器値{Rmin,Rmax}を取得する。これらのパラメータは、製造に使用される技術に基づいて決定される。いくつかの実装態様は、TaNまたはテルル高抵抗材料を使用する。いくつかの実装態様では、抵抗器の最小値は、リソグラフィによって形成され得る最小二乗によって決定される。最大値は、抵抗器(例えば、TaNまたはテルルから作られた抵抗器)が所望の領域に適合するように許容可能な長さによって決定され、当該所望の領域は、リソグラフィマスク上の演算増幅器区画の領域によって決定される。いくつかの実装態様では、抵抗器のアレイがスタックされることから(例えば、BEOL内の1つ、FEOL内の別の1つ)、抵抗器のアレイの領域は、1つの演算増幅器の領域よりも小さい。
3.各抵抗器がr_errの相対許容差値を有すると仮定する。
4.目標は、{w1,...,wn,b}値に基づいて、定義された[Rmin;Rmax]内の所与の長さNの抵抗値{R1,...,Rn}のセットを選択することである。特定の最適性基準に基づいて設定された準最適な{R1,...,Rn}を見つけるための例示的な探索アルゴリズムが、以下に提供される。
5.別のアルゴリズムは、{R1..Rn}が決定された場合、{Rn,Rp,Rni,Rpi}をネットワークに選定する。
例示的な{R1,...,Rn}探索アルゴリズム
いくつかの実装態様は、抵抗器セット探索のための反復アプローチを使用する。いくつかの実装態様は、定義された範囲内の初期(ランダムまたは均一な)セット{R1,...,Rn}を選択する。いくつかの実装態様は、抵抗器セットの素子のうちの1つをR-=R+値として選択する。いくつかの実装態様は、現在の学習率値によってセット内の各抵抗器を変更し、そのような変更が(値関数に従って)「より良い」セットを生成するまで変更する。このプロセスは、さらなる改善が可能でなくなるまで、セット内のすべての抵抗器について、いくつかの異なる学習率値で繰り返される。
いくつかの実装態様は、抵抗器セットの値関数を以下のように定義する。
●可能な重みオプションは、(上述した)式に従って計算される。
●各重みオプションの予想誤差値は、IC製造技術によって決定された潜在的な抵抗相対誤差r_errに基づいて推定される。
●重みオプションリストは、[-wlim;wlim]範囲に限定または制限される
●高い閾値(例えば、r_errの10倍)を超える予想誤差を有するいくつかの値が除去される。
●値関数は、隣接する2つの重みオプション間の距離の二乗平均として計算される。そのため、重みオプションが[-wlim;wlim]範囲内で均一に分布している場合、値関数は最小である。
モデルの必要とされる重み範囲[-wlim;wlim]が[-5;5]に設定され、その他のパラメータがN=20、r_err=0.1%、rmin=100KΩ、rmax=5MΩを含むものとする。ここで、rminおよびrmaxは、それぞれ抵抗の最小値および最大値である。
一例では、長さ20の以下の抵抗器セット、すなわち、[0.300、0.461、0.519、0.566、0.648、0.655、0.689、0.996、1.006、1.048、1.186、1.222、1.261、1.435、1.488、1.524、1.584、1.763、1.896、2.02]MΩが、上述のパラメータについて取得された。R-=R+=1.763MΩ。
例示的な{Rn,Rp,Rni,Rpi}探索アルゴリズム
いくつかの実装態様は、上述したアルゴリズムなどの反復アルゴリズムを使用してRnおよびRpを決定する。いくつかの実装態様は、Rp=Rnを設定する(RnおよびRpを決定するためのタスクは、対称であり、2つの量は、典型的には、類似の値に収束する)。次いで、重みwiごとに、いくつかの実装態様は、推定重み誤差値を最小化する抵抗のペア{Rni、Rpi}を選択する。
いくつかの実装態様は、次いで、ニューラルネットワーク模式図を実装するために設定された{Rni;Rpi;Rn;Rp}値を使用する。一例では、模式図は、いくつかの実装態様に従って、10,000個の均一に分布した入力データサンプルのセットにわたって、11mVの平均二乗出力誤差(上述したS平均二乗出力誤差と呼ばれることがある)および33mVの最大誤差を生成した。一例では、Sモデルは、別個のモデルとして、256レベルを有するデジタル-アナログ変換器(DAC)、アナログ-デジタル変換器(ADC)とともに分析された。モデルは、いくつかの実装に従って、同じデータセットに対して14mVの平均二乗出力誤差および49mVの最大出力誤差を生成した。DACおよびADCは、それらがアナログ値をビット値に変換し、またその逆に変換するため、レベルを有する。8ビットのデジタル値は、256レベルに等しい。8ビットADCについて、精度を1/256よりも良くすることはできない。
いくつかの実装態様は、Mathcadまたは他の任意の同様のソフトウェアを使用して、キルヒホッフの回路法則および演算増幅器の基本原理(図19Aを参照して以下に記載する)に基づいて、接続の重みが既知であるときに、アナログICチップの抵抗値を計算する。いくつかの実装態様では、演算増幅器は、信号の増幅および活性化関数(例えば、ReLU、シグモイド、正接双曲線、または線形数学方程式)による変換の両方のために使用される。
いくつかの実装態様は、リソグラフィ層に抵抗器を製造し、抵抗器は、SiO2マトリクス内の円筒穴として形成され、抵抗値は、穴の直径によって設定される。いくつかの実装態様は、高密度抵抗器アレイを作るために、高抵抗材料として非晶質TaN、CrNのTiN、またはテルルを使用する。Ta対N Ti対NおよびCr対Nのいくつかの比は、超高密度高抵抗率素子アレイを作るための高抵抗を提供する。例えば、TaN、Ta5N6、Ta3N5については、Taに対するNの比が高いほど、抵抗率が高い。いくつかの実装態様は、Ti2N、TiN、CrN、またはCr5Nを使用し、それに応じて比率を決定する。TaN堆積は、チップ製造で使用される標準的な手順であり、すべての主要なファウンドリで利用可能である。
例示的な演算増幅器
図19Aは、いくつかの実装態様による、CMOS(CMOSオペアンプ)1900で作られた演算増幅器の概略図を示す。図19Aでは、In+(正入力またはpos)1404、およびIn-(負入力またはneg)1406、およびVdd-(GNDに対する正電源電圧)1402は、接点入力である。接点Vss-(負電源電圧またはGND)は、ラベル1408によって示されている。回路出力は、Out 1410(接点出力)である。CMOSトランジスタのパラメータは、幾何学的寸法の比、すなわち、L(ゲートチャネルの長さ)対W(ゲートチャネルの幅)によって決定され、その例が、図19B(以下に記載される)に示される表に示されている。電流ミラーは、NMOSトランジスタM11 1944、M12 1946、および抵抗器R1 1921(12kΩの例示的な抵抗値)で作られており、差動対(M1 1926およびM3 1930)のオフセット電流を提供する。差動増幅段(差動対)は、NMOSトランジスタM1 1926およびM3 1930で作られている。トランジスタM1、M3は増幅用であり、PMOSトランジスタM2 1928、M4 1932は、能動電流負荷の役割を果たす。M3トランジスタから、信号は、出力PMOSトランジスタM7 1936のゲートに入力される。トランジスタM1から、信号は、PMOSトランジスタM5(インバータ) 1934、およびNMOSトランジスタM6 1934に対する能動負荷に入力される。トランジスタM5 1934を通って流れる電流は、NMOSトランジスタM8 1938に対する設定である。トランジスタM7 1936は、正の半波信号に対するコモンソースを有するスキームに含まれる。M8トランジスタ1938は、負の半波信号のためのコモンソース回路によって可能にされる。演算増幅器の全体的な負荷容量を増加させるために、M7 1936およびM8 1938の出力は、M9 1940およびM10 1942のトランジスタによるインバータを含む。キャパシタC1 1912およびC2 1914は、ブロッキング用である。
図19Bは、いくつかの実装態様による、図19Aに示される例示的な回路の説明の表1948を示す。パラメータの値は、例として提供され、様々な他の構成が可能である。トランジスタM1、M3、M6、M8、M10、M11、およびM12は、明示的な基板接続を有するNチャネルMOSFETトランジスタである。他のトランジスタM2、M4、M5、M7、およびM9は、明示的な基板接続を有するPチャネルMOSFETトランジスタである。表は、トランジスタ(列3)の各々に与えられる、長さ(L、列1)と幅(W、列2)の例示的なシャッター比を示す。
いくつかの実装態様では、上述した例のような演算増幅器は、ニューラルネットワークのハードウェア実現のための集積回路の基本素子として使用される。いくつかの実装態様では、演算増幅器は、40平方ミクロンのサイズであり、45nmノード標準に従って作製される。
いくつかの実装態様では、ReLU、双曲線正接、およびシグモイド関数などの活性化関数は、修正された出力カスケードを有する演算増幅器によって表される。例えば、RELU、シグモイド、または正接関数は、いくつかの実装態様に従って、対応する周知のアナログ模式図を使用して、演算増幅器(オペアンプと呼ばれることがある)の出力カスケードとして実現される。
上記および下記に記載される例では、いくつかの実装態様では、演算増幅器は、インバータ、電流ミラー、2象限または4象限乗算器、および/または他のアナログ関数ブロックによって置き換えられ、加重和演算を可能にする。
LSTMブロックの例示的なスキーム
図20A~20Eは、いくつかの実装態様による、LSTMニューロン20000の概略図を示す。ニューロンの入力は、範囲[-0.1,0.1]にある値であるVin1 20002およびVin2 20004である。LSTMニューロンはまた、時間H(t-1)でニューロンを計算した結果の値(前の値;LSTニューロンについては上記の説明を参照)20006、および時間C(t-1)でのニューロンの状態ベクトル(前の値)20008を入力する。ニューロンLSTMの出力(図20Bに示される)は、現時点のH(t)20118におけるニューロンと、現時点のC(t)20120におけるニューロンの状態ベクトルと、を計算した結果を含む。スキームには、以下が含まれる。
●図20Aに示される、演算増幅器U1 20094およびU2 20100で組み立てられた「ニューロンO」。抵抗器R_Wo1 20018、R_Wo2 20016、R_Wo3 20012、R_Wo4 20010、R_Uop1 20014、R_Uom1 20020、Rr 20068、およびRf2 20066は、単一の「ニューロンO」の接続の重みを設定する。「ニューロンO」は、非線形関数としてシグモイド(モジュールX1 20078、図20B)を使用する。
●演算増幅器U3 20098(図20Cに示される)およびU4 20100(図20Aに示される)で組み立てられた「ニューロンC」。抵抗器R_Wc1 20030、R_Wc2 20028、R_Wc3 20024、R_Wc4 20022、R_Ucp1 20026、R_Ucm1 20032、Rr 20122、およびRf2 20120は、「ニューロンС」の接続の重みを設定する。「ニューロンC」は、非線形関数として双曲線正接(モジュールX2 22080、図2B)を使用する。
●図20Cに示される、演算増幅器U5 20102およびU6 20104で組み立てられた「ニューロンI」。抵抗器R_Wi1 20042、R_Wi2 20040、R_Wi3 20036、およびR_Wi4 20034、R_Uip1 20038、R_Uim1 20044、Rr 20124、およびRf2 20126は、「ニューロンI」の接続の重みを設定する。「ニューロンI」は、非線形関数としてシグモイド(モジュールX3 20082)を使用する。
●図20Dに示される、演算増幅器U7 20106およびU8 20108で組み立てられた「ニューロンf」抵抗器R_Wf1 20054、R_Wf2 20052、R_Wf3 20048、R_Wf4 20046、R_Ufp1 20050、R_Ufm1 20056、Rr 20128、およびRf2 20130は、「ニューロンf」の接続の重みを設定する。「ニューロンf」は、非線形関数としてシグモイド(モジュールX4 20084)を使用する。
モジュールX2 20080(図20B)およびX3 20082(図20C)の出力は、X5乗算器モジュール20086(図20B)に入力される。モジュールX4 20084(図20D)およびU9 20010へのバッファの出力は、乗算モジュールX6 20088に入力される。モジュールX5 20086およびX6 20088の出力は、加算器(U10 20112)に入力される。分割器10は、抵抗器R1 20070、R2 20072、およびR3 20074で組み立てられている。双曲線正接(モジュールX7 20090、図20B)の非線形関数は、除数信号の放出で取得される。出力C(t)20120(LSTMニューロンの現在の状態ベクトル)は、U11 20114出力信号に対するバッファインバータで取得される。モジュールX1 20078およびX7 20090の出力は、乗算器(モジュールX8 20092)に入力され、その出力は、U12 20116に対する10分割器に入力される。現時点のH(t)20118におけるLSTMニューロンを計算した結果は、U12 20116の出力信号から取得される。
図20Eは、いくつかの実装態様による、図20A~20Dに示される回路の異なる構成可能なパラメータ(例えば、電圧)の例示的な値を示す。いくつかの実装態様に従って、Vdd 20058は、+1.5Vに設定され、Vss 20064は、-1.5Vに設定され、Vdd1 20060は、+1.8Vに設定され、Vss1 20062は、-1.0Vに設定され、GND 20118は、GNDに設定される。
図20Fは、いくつかの実装態様による、図20A~20Dに示される例示的な回路の説明の表20132を示す。パラメータの値は、例として提供され、様々な他の構成が可能である。トランジスタU1~U12は、CMOSオペアンプである(図19Aおよび図19Bを参照して上述した)。X1、X3、X4は、シグモイド関数を実行するモジュールである。X2およびX7は、双曲線正接関数を実行するモジュールである。X5およびX8は、乗算関数を実行するモジュールである。抵抗器定格の例としては、Rw=10kΩ、およびRr=1.25kΩが挙げられる。その他の抵抗器は、Rwとの比較で表される。例えば、Rf2=12×Rw、R_Wo4=5×Rw、R_Wo3=8×Rw、R_Uop1=2.6×Rw、R_Wo2=12×Rw、R_W1=w×Rw、およびR_Uom1=2.3×Rw、R_Wc4=4×Rw、R_Wc3=5.45×Rw、R_Ucp1=3×Rw、R_Wc2=12×Rw、R_Wc1=2.72×Rw、R_Ucm1=3.7×Rw、R_Wi4=4.8×Rw、W_Wi3=6×Rw、W_Uip1=2×Rw、R_Wi2=12×Rw、R_Wi1=3×Rw、R_Uim1=2.3×Rw、R_Wf4=2.2×Rw、R_Wf3=5×Rw、R_Wfp=4×Rw、R_Wf2=2×Rw、R_Wf1=5.7×Rw、およびRfm1=4.2×Rwである。
乗算器ブロックの例示的なスキーム
図21A~21Iは、いくつかの実装態様による、乗算器ブロック21000の概略図を示す。ニューロン21000は、演算増幅器U1 21040およびU2 21042(図21Bに示される)、U3 21044(図21Hに示される)、およびU4 21046およびU5 21048(図21Iに示される)、ならびにCMOSトランジスタM1 21052~M68 21182を使用して組み立てられた、4象限乗算器の原理に基づいている。乗算器の入力は、V_one 21020 21006およびV_two 21008(図21Bに示される)、ならびに接点Vdd(正電源電圧、例えば、GNDに対して+1.5V)21004および接点Vss(負電源電圧、例えば、GNDに対して-1.5V)21002を含む。このスキームでは、追加の電源電圧、すなわち、接点入力Vdd1(正電源電圧、例えば、GNDに対して+1.8V)、接点Vss1(負電源電圧、例えば、GNDに対して‐1.0V)が使用される。回路計算の結果は、mult_out(出力ピン)21170(図21Iに示される)に出力される。
図21Bを参照すると、V_one 21006からの入力信号(V_one)は、U1 21040で1の利得を生じるインバータに接続されており、その出力は、振幅が等しいが信号V_oneと反対符号の信号negA 21006を形成する。同様に、入力V_two 21008からの信号(V_two)は、U2 21042で1の利得を生じるインバータに接続されており、その出力は、振幅が等しいが信号V_twoと反対符号の信号negB 21012を形成する。可能な組み合わせ(V_one、V_two、negA、negB)からの信号のペアになる組み合わせは、CMOSトランジスタによる対応するミキサに出力される。
図21Aを再び参照すると、V_two 21008およびnegA 21010は、NMOSトランジスタM19 21086、M20 21088、M21 21090、M22 21092、およびPMOSトランジスタM23 21094およびM24 21096で組み立てられたマルチプレクサに入力される。このマルチプレクサの出力は、NMOSトランジスタM6 21060(図21D)に入力される。
信号で発生する同様の変換としては、以下が挙げられる。
●negB 21012およびV_one 21020は、NMOSトランジスタM11 21070、M12 2072、M13 2074、M14 21076、およびPMOSトランジスタM15 2078およびM16 21080で組み立てられたマルチプレクサに入力される。このマルチプレクサの出力は、M5 21058 NMOSトランジスタ(図21Dに示される)に入力される。
●V_one 21020およびnegB 21012は、PMOSトランジスタM18 21084、M48 21144、M49 21146、およびM50 21148、およびNMOSトランジスタM17 21082、M47 21142で組み立てられたマルチプレクサに入力される。このマルチプレクサの出力は、M9 PMOSトランジスタ21066(図21Dに示される)に入力され、
●negA 21010およびV_two 21008は、PMOSトランジスタM52 21152、M54 21156、M55 21158、およびM56 21160、ならびにNMOSトランジスタM51 21150、およびM53 21154で組み立てられたマルチプレクサに入力される。このマルチプレクサの出力は、M2 NMOSトランジスタ21054(図21Cに示される)に入力される。
●negB 21012およびV_one 21020は、NMOSトランジスタM11 21070、M12 21072、M13 21074、およびM14 21076、ならびにPMOSトランジスタM15 21078、およびM16 21080で組み立てられたマルチプレクサに入力される。このマルチプレクサの出力は、M10 NMOSトランジスタ21068(図21Dに示される)に入力される。
●negB 21012およびnegA 21010は、NMOSトランジスタM35 21118、M36 21120、M37 21122、およびM38 21124、ならびにPMOSトランジスタM39 21126、およびM40 21128で組み立てられたマルチプレクサに入力される。このマルチプレクサの出力は、M27 PMOSトランジスタ21102(図21Hに示される)に入力される。
●V_two 21008およびV_one 21020は、NMOSトランジスタM41 21130、M42 21132、M43 21134、およびM44 21136、ならびにPMOSトランジスタM45 21138、およびM46 21140で組み立てられたマルチプレクサに入力される。このマルチプレクサの出力は、M30 NMOSトランジスタ21108(図21Hに示される)に入力される。
●V_one 21020およびV_two 21008は、PMOSトランジスタM58 21162、M60 21166、M61 21168、およびM62 21170、ならびにNMOSトランジスタM57 21160、およびM59 21164で組み立てられたマルチプレクサに入力される。このマルチプレクサの出力は、M34 PMOSトランジスタ21116(図21Hに示される)に入力される。
●negA 21010およびnegB 21012は、PMOSトランジスタM64 21174、M66 21178、M67 21180、およびM68 21182、ならびにNMOSトランジスタM63 21172、およびM65 21176で組み立てられたマルチプレクサに入力される。このマルチプレクサの出力は、PMOSトランジスタM33 21114(図21Hに示される)に入力される。
電流ミラー(トランジスタM1 21052、M2 21053、M3 21054、およびM4 21056)は、トランジスタM5 21058、M6 21060、M7 21062、M8 21064、M9 21066、およびM10 21068で作られた、左に示される4象限乗算器の一部分に電力供給する。(トランジスタM25 21098、M26 21100、M27 21102、およびM28 21104による)電流ミラーは、トランジスタM29 21106、M30 21108、M31 21110、M32 21112、M33 21114、およびM34 21116で作られた、4象限乗算器の右側部分の電源を供給する。乗算結果は、トランジスタM3 21054に並列に可能にされた抵抗器Ro 21022、およびトランジスタM28 21104に並列に可能にされた抵抗Ro 21188から得られ、U3 21044による加算器に供給される。U3 21044の出力は、図21Iに示されるように、U5 21048で組み立てられた、7,1の利得を有する加算器に供給され、その第2の入力は、抵抗R1 21024およびR2 21026ならびにバッファU4 21046によって設定された基準電圧によって補償される。乗算結果は、U5 21048の出力からMult_Out出力21170を介して出力される。
図21Jは、いくつかの実装態様による、図21A~21Iに示される模式図の説明の表21198を示す。U1-U5は、CMOSオペアンプである。明示的な基板接続を有するNチャネルMOSFETトランジスタとしては、トランジスタM1、M2、M25、およびM26(長さ(L)=2.4uのシャッター比、および幅(W)=1.26uのシャッター比を有する)、トランジスタM5、M6、M29、およびM30(L=0.36u、およびW=7.2uを有する)、トランジスタM7、M8、M31、およびM32(L=0.36u、およびW=199.98uを有する)、トランジスタM11~M14、M19~M22、M35~M38、およびM41~M44(L=0.36u、およびW=0.4uを有する)、ならびにトランジスタM17、M47、M51、M53、M57、M59、M43、およびM64(L=0.36u、およびW=0.72uを有する)が挙げられる。明示的な基板接続を有するPチャネルMOSFETトランジスタとしては、トランジスタM3、M4、M27、およびM28(長さ(L)=2.4uのシャッター比、および幅(W)=1.26uのシャッター比を有する)、トランジスタM9、M10、M33、およびM34(L=0.36u、およびW=7.2uを有する)、トランジスタM18、M48、M49、M50、M52、M54、M55、M56、M58、M60、M61、M62、M64、M66、M67、およびM68(L=0.36u、およびW=0.8uを有する)、ならびにトランジスタM15、M16、M23、M24、M39、M40、M45、およびM46(L=0.36u、およびW=0.72uを有する)が挙げられる。例示的な抵抗器定格としては、いくつかの実装態様に従って、Ro=1kΩ、Rin=1kΩ、Rf=1kΩ、Rc4=2kΩ、およびRc5=2kΩが挙げられる。
シグモイドブロックの例示的なスキーム
図22Aは、いくつかの実装態様による、シグモイドブロック2200の概略図を示す。シグモイド関数(例えば、図20A~20Fを参照して上述したモジュールX1 20078、X3 20082、およびX4 20084)は、演算増幅器U1 2250、U2 2252、U3 2254、U4 2256、U5 2258、U6 2260、U7、2262、およびU8 2264、ならびにNMOSトランジスタM1 2266、M2 2268、およびM3 2270を使用して実装される。接点Sigm_in 2206は、モジュール入力であり、接点入力Vdd1 2222は、GND2208に対して正電源電圧+1.8Vであり、接点Vss1 2204は、GNDに対して負電源電圧-1.0Vである。このスキームでは、U4 2256は、-0.2332Vの基準電圧源を有し、電圧は、分割器R10 2230およびR11 2232によって設定される。U5 2258は、0.4Vの基準電圧源を有し、電圧は、分割器R12 2234およびR13 2236によって設定される。U6 2260は、0.32687Vの基準電圧源を有し、電圧は、分割器R14 2238およびR15 2240によって設定される。U7 2262は、-0.5Vの基準電圧源を有し、電圧は、分割器R16 2242およびR17 2244によって設定される。U8 2264は、-0.33Vの基準電圧源を有し、電圧は、分割器R18 2246およびR19 2248によって設定される。
シグモイド関数は、トランジスタM1 2266およびM2 2268で組み立てられた差動モジュールで、対応する基準電圧を加えることによって、形成される。差動段用の電流ミラーは、アクティブレギュレーション演算増幅器U3 2254、およびNMOSトランジスタM3 2270で組み立てられる。差動段からの信号は、NMOSトランジスタM2および抵抗器R5 2220で取り出され、加算器U2 2252に入力される。出力信号sigm_out 2210は、U2加算器2252出力から取り出される。
図22Bは、いくつかの実装態様による、図22Aに示される概略図の説明の表2278を示す。U1~U8は、CMOSオペアンプである。M1、M2、およびM3は、いくつかの実装態様による、長さ(L)=0.18uのシャッター比、および幅(W)=0.9uのシャッター比を有するNチャネルMOSFETトランジスタである。
双曲線正接ブロックの例示的なスキーム
図23Aは、いくつかの実装態様による、双曲線正接関数ブロック2300の概略図を示す。双曲線正接関数(例えば、図20A~20Fを参照して上述したモジュールX2 20080およびX7 20090)は、演算増幅器(U1 2312、U2 2314、U3 2316、U4 2318、U5 2320、U6 2322、U7 2328、およびU8 2330)およびNMOSトランジスタ(M1 2332、M2 2334、およびM3 2336)を使用して実装される。このスキームでは、接点tanh_in 2306は、モジュール入力であり、接点入力Vdd1 2304は、GND2308に対して正電源電圧+1.8Vであり、接点Vss1 2302は、GNDに対して負電源電圧-1.0Vである。さらに、このスキームでは、U4 2318は、分割器R10 2356およびR11 2358によって設定された電圧である、-0.1Vの基準電圧源を有する。U5 2320は、分割器R12 2360およびR13 2362によって設定された電圧である、1.2Vの基準電圧源を有する。U6 2322は、分割器R14 2364およびR15 2366によって設定された電圧である、0.32687Vの基準電圧源を有する。U7 2328は、分割器R16 2368およびR17 2370によって設定された電圧である、-0.5Vの基準電圧源を有する。U8 2330は、分割器R18 2372およびR19 2374によって設定された電圧である、-0.33Vの基準電圧源を有する。双曲線正接関数は、トランジスタM1 2332およびM2 2334で作られた差動モジュールで、対応する基準電圧を追加することによって、形成される。差動段用の電流ミラーは、アクティブレギュレーション演算増幅器U3 2316、およびNMOSトランジスタM3 2336で取得される。NMOSトランジスタM2 2334および抵抗R5 2346により、信号は、差動段から取り出され、加算器U2 2314に入力される。出力信号tanh_out 2310は、U2加算器2314出力から取り出される。
図23Bは、いくつかの実装態様による、図23Aに示される概略図の説明の表2382を示す。U1~U8は、CMOSオペアンプであり、M1、M2、およびM3は、長さ(L)=0.18uのシャッター比、および幅(W)=0.9uのシャッター比を有する、NチャンネルMOSFETトランジスタである。
単一ニューロンOP1 CMOSオペアンプの例示的なスキーム
図24A~24Cは、いくつかの実装態様による、単一ニューロンOP1 CMOSオペアンプ2400の概略図を示す。実施例は、本明細書に記載されるOP1スキームに従ってCMOSで作られた、演算増幅器による単一ニューロンのバリアントである。このスキームでは、接点V1 2410およびV2 2408は、単一のニューロンの入力であり、接点バイアス2406は、GNDに対して電圧+0.4Vであり、接点入力Vdd 2402は、GNDに対して正電源電圧+5.0Vであり、接点Vss 2404は、GNDであり、接点Out 2474は、単一ニューロンの出力である。CMOSトランジスタのパラメータは、幾何学的寸法の比、すなわち、L(ゲートチャネルの長さ)、およびW(ゲートチャネルの幅)によって決定される。このオプアンプは、2つの電流ミラーを有する。NMOSトランジスタM3 2420、M6 2426、およびM13 2440による電流ミラーは、NMOSトランジスタM2 2418およびM5 2424による差動対のオフセット電流を提供する。PMOSトランジスタM7 2428、M8 2430、およびM15 2444における電流ミラーは、PMOSトランジスタM9 2432およびM10 2434による差動対のオフセット電流を提供する。第1の差動増幅段では、NMOSトランジスタM2 2418およびM5 2424は、増幅用であり、PMOSトランジスタM1 2416およびM4 2422は、能動電流負荷の役割を果たす。M5 2424トランジスタから、信号は、トランジスタM13 2440のPMOSゲートに出力される。M2 2418トランジスタから、信号は、PMOSトランジスタM9 2432およびM10 2434による第2の差動増幅器段の右入力に出力される。NMOSトランジスタM11 2436およびM12 2438は、M9 2432およびM10 2434トランジスタの能動電流負荷の役割を果たす。M17 2448トランジスタは、信号の正の半波に対するコモンソースを有するスキームに従って、オンに切り替えられる。M18 2450トランジスタは、信号の負の半波に対するコモンソースを有するスキームに従って、オンに切り替えられる。OPアンプの全体的な負荷容量を増加させるために、M17 2448およびM18 2450トランジスタによるインバータが、M13 2440およびM14 2442トランジスタの出力において可能にされる。
図24Dは、いくつかの実装態様による、図24A~24Cに示される概略図の説明の表2476を示す。単一ニューロン(2つの入力および1つの出力を有する)の接続の重みは、抵抗比:w1=(Rp/R1+)-(Rn/R1-);w2=(Rp/R2+)-(Rn/R2-);w bias=(Rp/Rbias+)-(Rn/Rbias-)によって設定される。正規化抵抗(Rnorm-およびRnorm+)は、正確な等式、すなわち、(Rn/R1-)+(Rn/R2-)+(Rn/Rbias-)+(Rn/Rnorm-)=(Rp/R1+)+(Rp/R2+)+(Rp/Rbias+)+(Rp/Rnorm+)を取得するために必要である。明示的な基板接続を有するNチャネルMOSFETトランジスタとしては、L=0.36uおよびW=3.6uを有するトランジスタM2およびM5、L=0.36uおよびW=1.8uを有するトランジスタM3、M6、M11、M12、M14およびM16、ならびにL=0.36uおよびW=18uを有するトランジスタM18が挙げられる。明示的な基板接続を有するPチャネルMOSFETトランジスタとしては、L=0.36uおよびW=3.96uを有するトランジスタM1、M4、M7、M8、M13、およびM15、L=0.36uおよびW=11.88uを有するトランジスタM9およびM10、ならびにL=0.36uおよびW=39.6uを有するトランジスタM17が挙げられる。
単一ニューロンOP3 CMOSオペアンプの例示的なスキーム
図25A~25Dは、いくつかの実装態様による、OP3スキームに従ってCMOSで作られた、演算増幅器による単一ニューロン25000のバリアントの概略図を示す。単一ニューロンは、いくつかの実装態様に従って、3つの単純な演算増幅器(オペアンプ)からなる。ユニットニューロン加算器は、バイポーラ電源を有する2つのオペアンプで実行され、RELU活性化関数は、ユニポーラ電源を有しかつ10の利得を有するオペアンプで実行される。トランジスタM1 25028~M16 25058は、ニューロンの負接続の総和に使用される。トランジスタM17 25060~M32 25090は、ニューロンの正接続を追加するために使用される。RELU活性化関数は、トランジスタM33 25092~M46 25118で実行される。スキームでは、接点V1 25008およびV2 25010は、単一ニューロンの入力であり、接点バイアス25002は、GNDに対して電圧+0.4Vであり、接点入力Vdd 25004は、GNDに対して正電源電圧+2.5Vであり、接点Vss 25006は、負電源電圧-2.5Vであり、接点Out 25134は、単一ニューロンの出力である。単一ニューロンで使用されるCMOSトランジスタのパラメータは、以下の幾何学的寸法、すなわち、L(ゲートチャネルの長さ)およびW(ゲートチャネルの幅)の比によって決定される。単一ニューロンに含まれる最も単純なオペアンプの演算を考える。各オペアンプは、2つの電流ミラーを有する。NMOSトランジスタM3 25032(M19 25064、M35 25096)、M6 25038(M22 25070、M38 25102)およびM16 25058(M32 25090、M48 25122)による電流ミラーは、NMOSトランジスタM2 25030(M18 25062、M34 25094)およびM5 25036(M21 25068、M35 25096)による差動対のオフセット電流を提供する。PMOSトランジスタM7 25040(M23 25072、M39 25104)、M8 25042(M24 25074、M40 25106)およびM15 25056(M31 2588)の電流ミラーは、PMOSトランジスタM9 25044(M25 25076、M41 25108)およびM10 25046(M26 25078、M42 25110)による差動対のオフセット電流を提供する。第1の差動増幅段では、NMOSトランジスタM2 25030(M18 25062、M34 25094)およびM5 25036(M21 25068、M37 25100)は、増幅用であり、PMOSトランジスタM1 25028(M17 25060、M33 25092)およびM4 25034(M20 25066、M36 25098)は、能動電流負荷の役割を果たす。トランジスタM5 25036(M21 25068、M37 25100)から、信号は、トランジスタM13 25052(M29 25084、M45 25116)のPMOSゲートに入力される。トランジスタM2 25030(M18 25062、M34 25094)から、信号は、PMOSトランジスタM9 25044(M25 25076、M41 25108)およびM10 25046(M26 25078、M42 25110)による第2の差動増幅器段の右入力に入力される。NMOSトランジスタM11 25048(M27 25080、M43 25112)およびM12 25048(M28 25080、M44 25114)は、トランジスタM9 25044(M25 25076、M41 25108)およびM10 25046(M26 25078、M42 25110)のア能動電流負荷の役割を果たす。トランジスタM13 25052(M29 25082、M45 25116)は、正の半波信号に対するコモンソースを有するスキームに含まれる。トランジスタM14 25054(M30 25084、M46 25118)は、信号の負の半波に対するコモンソースを有するスキームに従ってオンに切り替えられる。
単一ニューロン(2つの入力および1つの出力を有する)の接続の重みは、抵抗比:w1=(R フィードバック/R1+)-(R フィードバック/R1-);w2=(R フィードバック/R2+)-(R フィードバック/R2-);wbias=(R フィードバック/Rbias+)-(R フィードバック/Rbias-);w1=(R p*K amp/R1+)-(R n*K amp/R1-);w2=(R p*K amp/R2-);wbias=(R p*K amp/Rbias+)-(R n*K amp/Rbias-)によって設定され、K amp=R1ReLU/R2ReLUである。R フィードバック=100k-w1、w2、wbiasを計算するためにのみ使用される。いくつかの実装態様によれば、例示的な値としては、R フィードバック=100k、Rn=Rp=Rcom=10k、K amp ReLU=1+90k/10k=10、w1=(10k*10/22.1k)-(10k*10/21.5k)=-0.126276、w2=(10k*10/75k)-(10k*10/71.5k)=-0.065268、wbias=(10k*10/71.5k)-(10k*10/78.7k)=0.127953が挙げられる。
ニューロンの負のリンク加算器(M1~M17)の入力は、Rcom抵抗器を通してニューロンの正のリンク加算器(M17~M32)から受信される。
図25Eは、いくつかの実装態様による、図25A~25Dに示される概略図の説明の表25136を示す。明示的な基板接続を有するNチャネルMOSFETトランジスタとしては、L=0.36uおよびW=3.6uを有するトランジスタM2、M5、M18、M21、M34、およびM37、L=0.36uおよびW=1.8uを有するトランジスタM3、M6、M11、M12、M14、M16、M19、M22、M27、M28、M32、M38、M35、M38、M43、M44、M46、およびM48が挙げられる。明示的な基板接続を有するPチャネルMOSFETトランジスタとしては、L=0.36uおよびW=3.96uを有するトランジスタM1、M4、M7、M8、M13、M15、M17、M20、M23、M24、M29、M31、M33、M36、M39、M40、M45、およびM47、ならびにL=0.36uおよびW=11.88uを有するトランジスタM9、M10、M25、M26、M41、およびM42が挙げられる。
訓練されたニューラルネットワークのアナログハードウェア実現のための例示的な方法
図27A~27Jは、いくつかの実装態様による、ニューラルネットワークのハードウェア実現(2702)のための方法2700のフローチャートを示す。方法は、1つ以上のプロセッサ202と、1つ以上のプロセッサ202による実行用に構成された1つ以上のプログラムを記憶するメモリ214と、を有するコンピューティングデバイス200で(例えば、ニューラルネットワーク変換モジュール226を使用して)実行される(2704)。方法は、訓練されたニューラルネットワーク(例えば、ネットワーク220)のニューラルネットワークトポロジ(例えば、トポロジ224)および重み(例えば、重み222)を取得すること(2706)を含む。いくつかの実装態様では、訓練されたニューラルネットワークは、重みを生成するために、ソフトウェアシミュレーションを使用して訓練されている(2708)。
方法はまた、ニューラルネットワークトポロジをアナログコンポーネントの同等なアナログネットワークに変換すること(2710)を含む。次に図27Cを参照すると、いくつかの実装態様では、ニューラルネットワークトポロジは、ニューロンの1つ以上の層を含む(2724)。それぞれの数学的関数に基づいてそれぞれの出力を計算するニューロンの各層。そのような場合、ニューラルネットワークトポロジをアナログコンポーネントの同等なアナログネットワークに変換することは、ニューロンの1つ以上の層の各層についての一連のステップを実行すること(2726)を含む。一連のステップは、それぞれの層について、それぞれの数学的関数に基づいて、1つ以上の関数ブロックを識別すること(2728)を含む。各関数ブロックは、それぞれの数学的関数の出力に適合するブロック出力を有するそれぞれの概略実装態様を有する。いくつかの実装態様では、1つ以上の関数ブロックを識別することは、それぞれの層のタイプに基づいて1つ以上の関数ブロックを選択すること(2730)を含む。例えば、層は、ニューロンからなることができ、層の出力は、その入力の線形な重ね合わせである。1つ以上の関数ブロックを選択することは、層の出力が線形な重ね合わせであるか、または同様のパターン識別である場合、層タイプのこの識別に基づく。いくつかの実装態様は、出力の数>1かどうかを判定し、次いで、台形変換またはピラミッド変換のいずれかを使用する。
次に図27Dを参照すると、いくつかの実装態様では、1つ以上の関数ブロックは、以下からなる群から選択される(2734)1つ以上の基底関数ブロック(例えば、基底関数ブロック232)を含む。(i)ブロック出力
を有する加重和ブロック(2736)。ReLUは、整流線形ユニット(ReLU)活性化関数または同様の活性化関数(例えば、閾値を有するReLU)であり、Viは、i番目の入力を表し、wiは、i番目の入力に対応する重みを表し、バイアスは、バイアス値を表し、Σは、総和演算子であり、(ii)ブロック出力Vout=coeff.Vi.Vjを有する信号乗算ブロック(2738)。Viは、i番目の入力を表し、Vjは、j番目の入力を表し、coeffは、所定の係数であり、(iii)ブロック出力
を有するシグモイド活性化ブロック(2740)。Vは、入力を表し、AおよびBは、シグモイド活性化ブロックの所定の係数値(例えば、A=-0.1、B=11.3)であり、(iv)ブロック出力Vout=A*tanh(B*Vin)を有する双曲線正接活性化ブロック(2742)。Vinは、入力を表し、AおよびBは、所定の係数値(例えば、A=0.1、B=-10.1)であり、ブロック出力U(t)=V(t-dt)を有する信号遅延ブロック(2744)。tは、現在の期間を表し、V(t-1)は、先行する期間t-1の信号遅延ブロックの出力を表し、dtは、遅延値である。
ここで図27Cを再び参照すると、一連のステップはまた、1つ以上の関数ブロックを配置することに基づいて、アナログニューロンのそれぞれの多層ネットワークを生成すること(2732)を含む。各アナログニューロンは、1つ以上の関数ブロックのそれぞれの関数を実装し、多層ネットワークの第1の層の各アナログニューロンは、多層ネットワークの第2の層の1つ以上のアナログニューロンに接続されている。
ここで図27Aを再び参照すると、GRUおよびLSTMなどのいくつかのネットワークについて、いくつかの実装態様に従って、ニューラルネットワークトポロジをアナログコンポーネントの同等なアナログネットワークに変換すること(2710)は、より複雑な処理を必要とする。次に図27Eを参照し、ニューラルネットワークトポロジは、ニューロンの1つ以上の層を含む(2746)ものとする。さらに、ニューロンの各層が、それぞれの数学的関数に基づいてそれぞれの出力を計算するものとする。そのような場合、ニューラルネットワークトポロジをアナログコンポーネントの同等なアナログネットワークに変換することは、以下を含む。(i)ニューラルネットワークトポロジの第1の層を複数のサブ層に分解すること(2748)であって、第1の層に対応する数学的関数を分解して1つ以上の中間数学的関数を取得することを含む、分解すること。各サブ層は、中間数学的関数を実装する。いくつかの実装態様では、第1の層に対応する数学的関数は、1つ以上の重みを含み、数学的関数を分解することは、1つ以上の中間関数を組み合わせることが数学的関数をもたらすように、1つ以上の重みを調整すること(2750)を含み、および(ii)ニューラルネットワークトポロジの第1の層の各サブ層について一連のステップを実行すること(2752)。一連のステップは、それぞれのサブ層について、それぞれの中間数学的関数に基づいて、1つ以上のサブ関数ブロックを選択すること(2754)と、1つ以上のサブ関数ブロックを配置することに基づいて、アナログニューロンのそれぞれの多層アナログサブネットワークを生成すること(2756)と、を含む。各アナログニューロンは、1つ以上のサブ関数ブロックのそれぞれの関数を実装し、多層アナログサブネットワークの第1の層の各アナログニューロンは、多層アナログサブネットワークの第2の層の1つ以上のアナログニューロンに接続されている。
次に図27Hを参照し、ニューラルネットワークトポロジが、1つ以上のGRUニューロンまたはLSTMニューロンを含む(2768)ものとする。その場合、ニューラルネットワークトポロジを変換することは、1つ以上のGRUニューロンまたはLSTMニューロンの回帰接続ごとに1つ以上の信号遅延ブロックを生成すること(2770)を含む。いくつかの実装態様では、外部サイクルタイマは、一定の期間(例えば、1、5、または10の時間ステップ)で1つ以上の信号遅延ブロックを活性化する。いくつかの実装態様は、加算時間シフトを生成するための1つの信号にわたって、複数の遅延ブロックを使用する。いくつかの実装態様では、1つ以上の信号遅延ブロックの活性化頻度は、ネットワーク入力信号頻度に同期されている/同期されている。いくつかの実装態様では、1つ以上の信号遅延ブロックは、ニューラルネットワークトポロジに対する所定の入力信号周波数と一致する周波数で活性化される(2772)。いくつかの実装態様では、この所定の入力信号周波数は、人間活動認識(HAR)またはPPGなどのアプリケーションに依存し得る。例えば、所定の入力信号周波数は、ビデオ処理では30~60Hz、HARおよびPPGでは約100Hz、音声処理では16KHz、電池管理では約1~3Hzである。いくつかの実装態様は、異なる周波数で異なる信号遅延ブロックを活性化する。
次に図27Iを参照し、ニューラルネットワークトポロジが、制限されない活性化関数を実行するニューロンの1つ以上の層を含む(2774)ものとする。いくつかの実装態様では、そのような場合、ニューラルネットワークトポロジを変換することは、制限されない活性化関数を制限された活性化で置換すること(2778)(例えば、ReLUを閾値ReLUで置換すること)と、所定の1つ以上の入力について、訓練されたニューラルネットワークと同等なアナログネットワークとの間の出力の差が最小化されるように、同等なアナログネットワークの接続または重みを調整すること(2780)と、からなる群から選択される1つ以上の変換を適用すること(2776)を含む。
ここで図27Aを再び参照すると、方法はまた、訓練されたニューラルネットワークの重みに基づいて、同等なアナログネットワークの重み行列を計算すること(2712)を含む。重み行列の各要素は、同等なアナログネットワークのアナログコンポーネント間のそれぞれの接続を表す。
方法はまた、アナログコンポーネントのコンポーネント値を選択することを含む、重み行列に基づいて同等なアナログネットワークを実装するための概略モデルを生成すること(2714)を含む。次に図27Bを参照すると、いくつかの実装態様では、概略モデルを生成することは、重み行列の抵抗行列を生成すること(2716)を含む。抵抗行列の各要素は、重み行列のそれぞれの重みに対応し、抵抗値を表す。いくつかの実装態様では、方法は、再訓練されたネットワークの抵抗器の抵抗行列だけを再生成することを含む。いくつかの実装態様では、方法は、訓練されたニューラルネットワークの新たな重みを取得すること(2718)と、新たな重みに基づいて同等なアナログネットワークの新たな重み行列を計算すること(2720)と、新たな重み行列の新たな抵抗行列を生成すること(2722)と、をさらに含む。
次に図27Jを参照すると、いくつかの実装態様では、方法は、抵抗行列に基づいてアナログコンポーネントの同等なアナログネットワークを実装する回路を作製するための1つ以上のリソグラフィマスクを生成すること(例えば、マスク生成モジュール248を使用してマスク250および/または252を生成すること)をさらに含む(2782)。いくつかの実装態様では、方法は、再訓練されたネットワークの抵抗器(例えば、マスク250)用のマスクだけを生成することを含む。いくつかの実装態様では、方法は、(i)訓練されたニューラルネットワークの新たな重みを取得すること(2784)と、(ii)新たな重みに基づいて同等なアナログネットワークの新たな重み行列を計算すること(2786)と、(iii)新たな重み行列の新たな抵抗行列を生成すること(2788)と、(iv)新たな抵抗行列に基づいてアナログコンポーネントの同等なアナログネットワークを実装する回路を作製するための新たなリソグラフィマスクを生成すること(2790)と、をさらに含む。
ここで図27Gを参照すると、アナログコンポーネントは、複数の演算増幅器および複数の抵抗器を含む(2762)。各演算増幅器は、同等なアナログネットワークのアナログニューロンを表し、各抵抗器は、2つのアナログニューロン間の接続を表す。いくつかの実装態様は、4象限乗算器、シグモイドおよび双曲線正接関数回路、遅延線、和演算器、および/または分割器などの他のアナログコンポーネントを含む。いくつかの実装態様では、アナログ成分の成分値を選択すること(2764)は、複数の抵抗器の可能な抵抗値を識別するための、勾配降下法および/または他の重み量子化方法を実行すること(2766)を含む。
ここで図27Fを再度参照すると、いくつかの実装態様では、方法は、デジタルでの出力層に特定の活性化関数(例えば、ソフトマックス)を実装することをさらに含む。いくつかの実装態様では、方法は、ニューラルネットワークトポロジの1つ以上の出力層のデジタルコンポーネントの同等なデジタルネットワークを生成すること(2758)と、同等なアナログネットワークの1つ以上の層の出力をデジタルコンポーネントの同等なデジタルネットワークに接続すること(2760)と、をさらに含む。
ニューラルネットワークの制約されたアナログハードウェア実現のための例示的な方法
図28A~28Sは、いくつかの実装態様による、ハードウェア設計制約に従ったニューラルネットワークのハードウェア実現(28002)のための方法28000のフローチャートを示す。方法は、1つ以上のプロセッサ202を有するコンピューティングデバイス200で(例えば、ニューラルネットワーク変換モジュール226を使用して)実行され(28004)、メモリ214は、1つ以上のプロセッサ202による実行用に構成された1つ以上のプログラムを記憶する。方法は、訓練されたニューラルネットワーク(例えば、ネットワーク220)のニューラルネットワークトポロジ(例えば、トポロジ224)および重み(例えば、重み222)を取得すること(28006)を含む。
方法はまた、アナログ集積回路(IC)設計制約(例えば、制約236)に基づいて、1つ以上の結合制約を計算すること(28008)を含む。例えば、IC設計制約は、電流制限(例えば、1A)を設定することができ、ニューロン模式図および演算増幅器(オペアンプ)設計は、オペアンプ出力電流を範囲[0~10mA]に設定することができるので、これは、出力ニューロン接続を100に制限する。このことは、ニューロンが100個の接続を通して電流を次の層に流す100個の出力を有することを意味するが、演算増幅器の出力での電流が10mAに制限されるので、いくつかの実装態様は、最大100個の出力(0.1mA×100=10mA)を使用する。この制約がなければ、いくつかの実装態様は、例えば、電流リピータを使用して、出力の数を100個超に増加させる。
方法はまた、(例えば、ニューラルネットワーク変換モジュール226を使用して)ニューラルネットワークトポロジを、1つ以上の結合制約を満たすアナログコンポーネントの同等な疎結合ネットワークに変換すること(28010)を含む。
いくつかの実装態様では、ニューラルネットワークトポロジを変換することは、1つ以上の結合制約に従って、可能な入力結合度Niおよび出力結合度Noを導出すること(28012)を含む。
次に図28Bを参照すると、いくつかの実装態様では、ニューラルネットワークトポロジは、K個の入力(前の層のニューロン)およびL個の出力(現在の層のニューロン)および重み行列Uを有する少なくとも1つの密結合層を含み(28018)、少なくとも1つの密結合層を変換すること(28020)は、入力結合度がNiを超えず、かつ出力結合度がNoを超えないように、K個の入力、L個の出力、および
個の層を有する同等な疎結合ネットワークを構築すること(28022)を含む。
次に図28Cを参照すると、いくつかの実装態様では、ニューラルネットワークトポロジは、K個の入力(前の層のニューロン)およびL個の出力(現在の層のニューロン)および重み行列Uを有する少なくとも1つの密結合層を含み(28024)、少なくとも1つの密結合層を変換すること(28026)は、K個の入力、L個の出力、および
個の層を有する同等な疎結合ネットワークを構築すること(28028)を含む。各層mは、対応する重み行列Umによって表され、ここで、欠けている接続は、入力結合度がNiを超えず、かつ出力結合度がNoを超えないように、ゼロで表される。式U=Πm=1..MUmは、所定の精度で満たされる。所定の精度は、変更されたネットワーク出力が、許容される誤差値以下の基準ネットワーク出力とは異なることを統計的に保証する合理的な精度値であり、この誤差値は、タスク依存性である(通常、0.1%~1%)。
次に図28Dを参照すると、いくつかの実装態様では、ニューラルネットワークトポロジは、K個の入力およびL出力を有する単一の疎結合層、Piの最大入力結合度、Poの最大出力結合度、およびUの重み行列を含み(28030)、欠けている接続はゼロで表される。そのような場合、単一の疎結合層を変換すること(28032)は、K個の入力、L個の出力、
個の層を有する同等な疎結合ネットワークを構築すること(28034)を含む。各層mは、対応する重み行列Umによって表され、ここで、欠けている接続は、入力結合度がNiを超えず、かつ出力結合度がNoを超えないように、ゼロで表され、式U=Πm=1..MUmは、所定の精度で満たされる。
次に図28Eを参照すると、いくつかの実装態様では、ニューラルネットワークトポロジは、K個の入力(前の層のニューロン)およびL個の出力(現在の層のニューロン)を有する畳み込み層(例えば、深さ方向の畳み込み層、または分離可能な畳み込み層)を含む(28036)。そのような場合、ニューラルネットワークトポロジをアナログコンポーネントの同等な疎結合ネットワークに変換すること(28038)は、畳み込み層を、K個の入力、L個の出力、Piの最大入力結合度、およびPoの最大出力結合度を有する単一の疎結合層に分解すること(28040)を含み、Pi≦NiかつPo≦Noである。
図28Aを再び参照すると、方法はまた、訓練されたニューラルネットワークの重みに基づいて、同等な疎結合ネットワークの重み行列を計算すること(28014)を含む。重み行列の各要素は、同等な疎結合ネットワークのアナログコンポーネント間のそれぞれの接続を表す。
ここで図28Fを参照すると、いくつかの実装態様では、ニューラルネットワークトポロジは、回帰型ニューラル層を含み(28042)、ニューラルネットワークトポロジをアナログコンポーネントの同等な疎結合ネットワークに変換すること(28044)は、回帰型ニューラル層を信号遅延接続を有する1つ以上の密結合層または疎結合層に変換すること(28046)を含む。
次に図28Gを参照すると、いくつかの実装態様では、ニューラルネットワークトポロジは、回帰型ニューラル層(例えば、長期短期記憶(LSTM)層またはゲート付き回帰ユニット(GRU)層)を含み、ニューラルネットワークトポロジをアナログコンポーネントの同等な疎結合ネットワークに変換することは、回帰型ニューラル層をいくつかの層に分解することを含み、層の少なくとも1つは、K個の入力(前の層のニューロン)およびL個の出力(現在の層のニューロン)および重み行列Uを有する密結合層または疎結合層と同等であり、欠けている接続は、ゼロで表される。
次に図28Hを参照すると、いくつかの実装態様では、方法は、1つの計算ニューロンを有する単層パーセプトロンの変換を実行することを含む。いくつかの実装態様では、ニューラルネットワークトポロジは、K個の入力、重みベクトルU∈RK、および活性化関数Fを有する計算ニューロンを有する単層パーセプトロンを含む(28054)。そのような場合、ニューラルネットワークトポロジをアナログコンポーネントの同等な疎結合ネットワークに変換すること(28056)は、(i)1つ以上の結合制約に従って同等な疎結合ネットワークの結合度Nを導出すること(28058)と、(ii)式
を使用して同等な疎結合ネットワークの層の数mを計算すること(28060)と、(iii)K個の入力、m個の層、および結合度Nを有する同等な疎結合ネットワークを構築すること(28062)と、を含む。同等な疎結合ネットワークは、m個の層の各層にそれぞれの1つ以上のアナログニューロンを含む。第1のm-1個の層の各アナログニューロンは、恒等変換を実装し、最後の層のアナログニューロンは、単層パーセプトロンの計算ニューロンの活性化関数Fを実装する。さらに、そのような場合、同等な疎結合ネットワークの重み行列を計算すること(28064)は、重みベクトルUに基づいて連立方程式を解くことによって、同等な疎結合ネットワークの接続の重みベクトルWを計算すること(28066)を含む。連立方程式は、S個の変数を有するK個の方程式を含み、Sは、式
を使用して計算される。
次に図28Iを参照すると、いくつかの実装態様では、方法は、L個の計算ニューロンを有する単層パーセプトロンの変換を実行することを含む。いくつかの実装態様では、ニューラルネットワークトポロジは、K個の入力、L個の計算ニューロンを有する単層パーセプトロン、およびL個の計算ニューロンの各計算ニューロンの重みの行を含む重み行列Vを含む(28068)。そのような場合、ニューラルネットワークトポロジをアナログコンポーネントの同等な疎結合ネットワークに変換すること(28070)は、以下を含む。(i)1つ以上の結合制約に従って同等な疎結合ネットワーク用の結合度Nを導出すること(28072)、(ii)式
を使用して同等な疎結合ネットワーク用の層の数mを計算すること(28074)、(iii)単層パーセプトロンをL個の単層パーセプトロンネットワークに分解すること(28076)。各単層パーセプトロンネットワークは、L個の計算ニューロンのそれぞれの計算ニューロンを含み、(iv)L個の単層パーセプトロンネットワークの各単層パーセプトロンネットワーク(28078)について、K個の入力、m個の層、および結合度Nを有するそれぞれの単層パーセプトロンネットワークのそれぞれの同等なピラミッド様サブネットワークを構築する(28080)こと。同等なピラミッド様サブネットワークは、m個の層の各層に1つ以上のそれぞれのアナログニューロンを含み、第1のm-1個の層の各アナログニューロンは、恒等変換を実装し、最後の層のアナログニューロンは、それぞれの単層パーセプトロンに対応するそれぞれの計算ニューロンの活性化関数を実装し、および(v)L個の単層パーセプトロンネットワークの各同等なピラミッド様サブネットワークの入力を連結して、L*K個の入力を有する入力ベクトルを形成することを含めて、各同等なピラミッド様サブネットワークを連結することによって、同等な疎結合ネットワークを構築すること(28082)。さらに、そのような場合、同等な疎結合ネットワークの重み行列をコンピューティングすること(28084)は、L個の単層パーセプトロンネットワークの各単層パーセプトロンネットワーク(28086)について、(i)重み行列Vのi番目の行がそれぞれの単層パーセプトロンネットワークに対応するそれぞれの計算ニューロンに対応する、重みベクトルU=Viを設定すること(28088)、および(ii)重みベクトルUに基づく連立方程式を解くことによって、それぞれの同等なピラミッド様サブネットワークの接続の重みベクトルWiを計算すること(28090)。連立方程式は、S個の変数を有するK個の方程式を含み、Sは、
式を使用して計算される。
次に図28Jを参照すると、いくつかの実装態様では、方法は、多層パーセプトロンの変換アルゴリズムを実行することを含む。いくつかの実装態様では、ニューラルネットワークトポロジは、K個の入力、S個の層を有する多層パーセプトロンを含み(28092)、S個の層の各層iは、計算ニューロンLiと、Li個の計算ニューロンの各計算ニューロンの重みの行を含む対応する重み行列Viと、の対応するセットを含む。そのような場合、ニューラルネットワークトポロジをアナログコンポーネントの同等な疎結合ネットワークに変換すること(28094)は、以下を含む。(i)1つ以上の結合制約に従って、同等な疎結合ネットワークの結合度Nを導出すること(28096)、(ii)多層パーセプトロンをQ=Σi=1、S(Li)個の単層パーセプトロンネットワークに分解すること(28098)。各単層パーセプトロンネットワークは、Q個の計算ニューロンのそれぞれの計算ニューロンを含む。多層パーセプトロンを分解することは、Q個の計算ニューロンによって共有されるK個の入力の1つ以上の入力を複製すること、(iii)Q個の単層パーセプトロンネットワークの各単層パーセプトロンネットワーク(28100)について、(a)式
を使用して、それぞれの同等なピラミッド様サブネットワークの層の数mを計算すること(28102)。Ki,jは、多層パーセプトロンのそれぞれの計算ニューロンの入力の数であり、(b)Ki,j個の入力、m個の層、および結合度Nを有するそれぞれの単層パーセプトロンのそれぞれの同等なピラミッド様サブネットワークを構築すること(28104)。同等なピラミッド様サブネットワークは、m個の層の各層に1つ以上のそれぞれのアナログニューロンを含み、第1のm-1個の層の各アナログニューロンは、恒等変換を実装し、最後の層のアナログニューロンは、それぞれの単層パーセプトロンネットワークに対応するそれぞれの計算ニューロンの活性化関数を実装し、(iv)Q個の単層パーセプトロンネットワークの各同等なピラミッド様サブネットワークの入力を連結して、Q*Ki,j個の入力を有する入力ベクトルを形成することを含めて、各同等なピラミッド様サブネットワークを連結することによって、同等な疎結合ネットワークを構築すること(28106)。そのような場合、同等な疎結合ネットワークの重み行列を計算すること(28108)は、Q個の単層パーセプトロンネットワークの各単層パーセプトロンネットワーク(28110)について、(i)重み行列Vのi番目の行がそれぞれの単層パーセプトロンネットワークに対応するそれぞれの計算ニューロンに対応し、jが多層パーセプトロンのそれぞれの計算ニューロンの対応する層である、重みベクトル
を設定すること(28112)と、(ii)重みベクトルUに基づいて連立方程式を解くことによって、それぞれの同等なピラミッド様サブネットワークの接続の重みベクトルWiを計算すること(28114)と、を含む。連立方程式は、S個の変数を有するKi、j個の方程式を含み、Sは、式
を使用して計算される。
次に図28Kを参照すると、いくつかの実装態様では、ニューラルネットワークトポロジは、K個の入力、S個の層を有する畳み込みニューラルネットワーク(CNN)を含み(28116)、S個の層の各層iは、計算ニューロンLiと、Li個の計算ニューロンの各計算ニューロンの重みの行を含む対応する重み行列Viと、の対応するセットを含む。そのような場合、ニューラルネットワークトポロジをアナログコンポーネントの同等な疎結合ネットワークに変換すること(28118)は、以下を含む。(i)1つ以上の結合制約に従って、同等な疎結合ネットワークの結合度Nを導出すること(28120)、(ii)CNNをQ=Σi=1、S(Li)個の単層パーセプトロンネットワークに分解すること(28122)。各単層パーセプトロンネットワークは、Q個の計算ニューロンのそれぞれの計算ニューロンを含む。CNNを分解することは、Q個の計算ニューロンによって共有されるK個の入力の1つ以上の入力を複製することを含み、(iii)Q個の単層パーセプトロンネットワークの各単層パーセプトロンネットワークについて、(a)式
を使用して、それぞれの同等なピラミッド様サブネットワークの層の数mを計算すること。jは、CNN内のそれぞれの計算ニューロンの対応する層であり、Ki,jは、CNN内のそれぞれの計算ニューロンの入力の数であり、および(b)Ki,j個の入力、m個の層、および結合度Nを有するそれぞれの単層パーセプトロンネットワークのそれぞれの同等なピラミッド様サブネットワークを構築すること。同等なピラミッド様サブネットワークは、m個の層の各層に1つ以上のそれぞれのアナログニューロンを含み、第1のm-1個の層の各アナログニューロンは、恒等変換を実装し、最後の層のアナログニューロンは、それぞれの単層パーセプトロンネットワークに対応するそれぞれの計算ニューロンの活性化関数を実装し、(iv)Q個の単層パーセプトロンネットワークの各同等なピラミッド様サブネットワークの入力を連結して、Q*Ki,j個の入力を有する入力ベクトルを形成することを含めて、各同等なピラミッド様サブネットワークを連結することによって、同等な疎結合ネットワークを構築すること(28130)。そのような場合、同等な疎結合ネットワークの重み行列を計算すること(28132)は、Q個の単層パーセプトロンネットワークの各単層パーセプトロンネットワークについて(28134)、(i)重みベクトル
を設定することであって、重み行列Vのi番目の行は、それぞれの単層パーセプトロンネットワークに対応するそれぞれの計算ニューロンに対応し、jは、CNNのそれぞれの計算ニューロンの対応する層である、設定することと、(ii)重みベクトルUに基づく連立方程式を解くことによって、それぞれの同等なピラミッド様サブネットワークの接続の重みベクトルWiを計算することと、を含む。連立方程式は、S個の変数を有するKi、j個の方程式を含み、Sは、式
を使用して計算される。
次に図28Lを参照すると、いくつかの実装態様では、方法は、2つの層を台形ベースのネットワークに変換することを含む。いくつかの実装態様では、ニューラルネットワークトポロジは、K個の入力、K個のニューロンを有する層Lp、L個のニューロンを有する層Ln、および重み行列W∈RL×Kを含み(28140)、Rは、実数の集合であり、層Lpの各ニューロンは、層Lnの各ニューロンに接続されており、層Lnの各ニューロンは、活性化関数Fを実行し、これにより、層Lnの出力は、入力xについての式Yo=F(W.x)を使用して計算される。そのような場合、ニューラルネットワークトポロジをアナログコンポーネントの同等な疎結合ネットワークに変換すること(28142)は、台形変換であって、(i)1つ以上の結合制約に従って、可能な入力結合度NI>1および可能な出力結合度NO>1を導出すること(28144)と、(ii)K・L<L・NI+K・NOであるという判定に従って、恒等活性化関数を実行するK個のアナログニューロンを有する層LAp、恒等活性化関数を実行する
個のアナログニューロンを有する層LAh、および活性化関数Fを実行するL個のアナログニューロンを有する層LAoを含む3層アナログネットワークを構築すること(28146)であって、層LApの各アナログニューロンは、NO個の出力を有し、層LAhの各アナログニューロンは、NI個以下の入力およびNO個以下の出力を有し、層LAoの各アナログニューロンは、NI個の入力を有するようになっている、構築することと、を含む、台形変換を実行することを含む。いくつかのそのような場合、同等な疎結合ネットワークの重み行列を計算すること(28148)は、K・NO+L・NI個の変数でのK・L個の方程式を含む行列方程式Wo.Wh=Wを解くことによって、疎重み行列WoおよびWhを生成すること(2850)を含み、これにより、層LAoの総出力は、式Yo=F(Wo.Wh.x)を使用して計算される。疎な重み行列Wo∈RK×Mは、層LApと層LAhとの間の接続を表し、疎重み行列Wh∈RM×Lは、層LAhと層LAoとの間の接続を表す。
次に図28Mを参照すると、いくつかの実装態様では、台形変換を実行することは、K・L≧L・N・I+K・NOという判定に従って、(i)層Lpを分割して(28154)、K’・L≧L・NI+K’・NOとなるように、K’個のニューロンを有するサブ層Lp1および(K-K’)個のニューロンを有するサブ層Lp2を取得することと、(ii)K’個のニューロンを有するサブ層Lp1について、構築するステップおよび生成するステップを実行すること(28156)と、(iii)K-K個のニューロンを有するサブ層Lp2について、分割するステップ、構築するステップ、および生成するステップを再帰的に実行すること(28158)と、をさらに含む。
次に図28Nを参照すると、方法は、多層パーセプトロンを台形ベースのネットワークに変換することを含む。いくつかの実装態様では、ニューラルネットワークトポロジは、多層パーセプトロンネットワークを含み(28160)、方法は、多層パーセプトロンネットワークの連続する層の各ペアについて、台形変換を反復的に実行し(28162)、かつ同等な疎結合ネットワークの重み行列を計算することをさらに含む。
次に図28Oを参照すると、方法は、回帰型ニューラルネットワークを台形ベースのネットワークに変換することを含む。いくつかの実装態様では、ニューラルネットワークトポロジは、(i)2つの全結合層の線形結合の計算、(ii)要素ごとの加算、および(iii)非線形関数計算を含む、回帰型ニューラルネットワーク(RNN)を含む(28164)。そのような場合、方法は、(i)2つの全結合層、および(ii)非線形関数計算について、台形変換を実行し(28166)、かつ同等な疎結合ネットワークの重み行列を計算することをさらに含む。要素ごとの加算は、任意の構造のネットワークに実装され得る一般的な演算であり、その例は、上記に提供されている。非線形関数計算は、No制限およびNi制限とは独立したニューロンごとの演算であり、通常、各ニューロンで「シグモイド」または「tanh」ブロックを用いて別々に計算される。
次に図28Pを参照すると、ニューラルネットワークトポロジは(i)複数の全結合層の線形組み合わせの計算、(ii)要素ごとの加算、(iii)アダマール積、および(iv)複数の非線形関数計算(シグモイドおよび双曲線正接演算)を含む、長期短期記憶(LSTM)ネットワークまたはゲート付き回帰型ユニット(GRU)ネットワークを含む、(28168)。そのような場合、方法は、(i)複数の全結合層、および(ii)複数の非線形関数計算について、台形変換を実行すること(28170)と、同等な疎結合ネットワークの重み行列を計算することと、をさらに含む。要素ごとの加算およびアダマール積は、上述の任意の構造のネットワークに実装され得る一般的な演算である。
次に図28Qを参照すると、ニューラルネットワークトポロジは、(i)複数の部分結合層(例えば、畳み込み層および枝刈り層のシーケンス;各枝刈り層は、1よりも大きいストライドを有する畳み込み層であると仮定される)、および(ii)1つ以上の全結合層(シーケンスは、全結合層で終了する)を含む、畳み込みニューラルネットワーク(CNN)を含む(28172)。そのような場合、方法は、(i)ゼロの重みを有する欠けている接続を挿入することによって、複数の部分結合層を同等な全結合層に変換すること(28174)と、同等な全結合層および1つ以上の全結合層の連続する層の各ペアについて、台形変換を反復的に実行し(28176)、かつ同等な疎結合ネットワークの重み行列を計算することと、をさらに含む。
次に図28Rを参照すると、ニューラルネットワークトポロジは、K個の入力、L個の出力ニューロン、および重み行列U∈RL×Kを含み(28178)、Rは、実数の集合であり、各出力ニューロンは、活性化関数Fを実行する。そのような場合、ニューラルネットワークトポロジをアナログコンポーネントの同等な疎結合ネットワークに変換すること(28180)は、以下を含む近似変換を実行することを含む。(i)1つ以上の結合制約に従って、可能な入力結合度NI>1および可能な出力結合度NO>1を導出すること(28182)、(ii)集合
からパラメータpを選択すること(28184)、(iii)p>0であるという判定に従って、ピラミッドニューラルネットワークがこのピラミッドニューラルネットワークの出力層に
個のニューロンを有するように、同等な疎結合ネットワークの第1のp個の層を形成するピラミッドニューラルネットワークを構築すること(28186)。ピラミッドニューラルネットワーク内の各ニューロンは、恒等関数を実行し、および(iv)Np個の入力およびL個の出力を有する台形ニューラルネットワークを構築すること(28188)。台形ニューラルネットワークの最後の層の各ニューロンは、活性化関数Fを実行し、すべての他のニューロンは、恒等関数を実行する。また、そのような場合、同等な疎結合ネットワークの重み行列を計算すること(28190)は、以下を含む。(i)以下のルールに従って、ピラミッドニューラルネットワークの第1の層のあらゆるニューロンiの重みを設定することを含む、生成すること(28192)。(a)
。Cは、非ゼロ定数であり、ki=(i-1)NI+1であり、および(b)kiを除くニューロンのすべての重みについて、
、ならびに(ii)ピラミッドニューラルネットワークのすべての他の重みを1に設定すること、ならびに(ii)台形ニューラルネットワークの重みを生成すること(28194)であって、(i)式
に従って台形ニューラルネットワークの第1の層(ネット全体を考慮すると、これは、(p+1)番目の層である)の各ニューロンiの重みを設定すること、および(ii)台形ニューラルネットワークの他の重みを1に設定することを含む、生成すること。
次に図28Sを参照すると、いくつかの実装態様では、ニューラルネットワークトポロジは、K個の入力、S個の層、およびi番目の層のLi=1,S個の計算ニューロン、ならびにi番目の層の重み行列
を有する、多層パーセプトロン、を含み(28196)、L0=Kである。そのような場合、ニューラルネットワークトポロジをアナログコンポーネントの同等な疎結合ネットワークに変換すること(28198)は、多層パーセプトロンのS個の層の各層j(28200)について、Lj-1個の入力、Lj個の出力ニューロン、および重み行列Ujからなるそれぞれの単層パーセプトロンへの近似変換を実行することによって、それぞれのピラミッド-台形ネットワークPTNNXjを構築すること(28202)と、(ii)各ピラミッド台形ネットワークをスタックする(例えば、ピラミッド台形ネットワークPTNNXj-1の出力が、PTNNXjの入力として設定される)ことによって、同等な疎結合ネットワークを構築すること(28204)と、を含む。
図28Aを再び参照すると、いくつかの実装態様では、方法は、重み行列を利用して同等な疎結合ネットワークを実装するための概略モデルを生成すること(28016)をさらに含む。
訓練されたニューラルネットワークのアナログハードウェア実現のための抵抗値を計算する例示的な方法
図29A~29Fは、いくつかの実装態様による、ハードウェア設計制約に従ったニューラルネットワークのハードウェア実現(2902)のための方法2900のフローチャートを示す。方法は、1つ以上のプロセッサ202と、1つ以上のプロセッサ202による実行用に構成された1つ以上のプログラムを記憶するメモリ214と、を有するコンピューティングデバイス200で(例えば、重み量子化モジュール238を使用して)実行される(2904)。
方法は、訓練されたニューラルネットワーク(例えば、ネットワーク220)のニューラルネットワークトポロジ(例えば、トポロジ224)および重み(例えば、重み222)を取得すること(2906)を含む。いくつかの実装態様では、重み量子化は、訓練中に実行される。いくつかの実装態様では、訓練されたニューラルネットワークは、ニューラルネットワークトポロジの各層が、量子化された重みを有するように訓練されている(2908)(例えば、離散値のリストからの特定の値、例えば、各層が+1、0、-1の3つの重み値のみを有する)。
方法はまた、(例えば、ニューラルネットワーク変換モジュール226を使用して)ニューラルネットワークトポロジを、複数の演算増幅器および複数の抵抗器を含むアナログコンポーネントの同等なアナログネットワークに変換すること(2910)を含む。各演算増幅器は、同等なアナログネットワークのアナログニューロンを表し、各抵抗器は、2つのアナログニューロン間の接続を表す。
方法はまた、訓練されたニューラルネットワークの重みに基づいて、同等なアナログネットワークの重み行列を計算すること(2912)を含む。重み行列の各要素は、それぞれの接続を表す。
方法はまた、重み行列の抵抗行列を生成すること(2914)を含む。抵抗行列の各要素は、重み行列のそれぞれの重みに対応し、抵抗値を表す。
次に図29Bを参照すると、いくつかの実装態様では、重み行列の抵抗行列を生成することは、抵抗器セットを見つけるための簡略化された勾配降下ベースの反復方法を含む。いくつかの実装態様では、重み行列の抵抗行列を生成することは、以下を含む。(i)可能な抵抗値の所定の範囲{R最小,R最大}を取得すること(2916)、および所定の範囲内の初期ベース抵抗値Rベースを選択すること。例えば、重み行列の要素の値に従って範囲およびベース抵抗が選択され、値は、製造プロセスによって決定され、範囲-実際に製造され得る抵抗、大きな抵抗器は好ましくなく、実際に製造され得るものの量子化。いくつかの実装態様では、可能な抵抗値の所定の範囲は、範囲100KΩ~1MΩの公称シリーズE24に従う抵抗を含み(2918)、(ii)所定の範囲内で、制限された長さの抵抗値セットを選択することであって、このセットは、制限された長さの抵抗値セット内の{Ri,Rj}のすべての組み合わせについて、範囲[-Rベース,Rベース]内の最も均一な分布の可能な重み
を提供する、選択すること(2920)。いくつかの実装態様では、重み値は、この範囲外にあるが、この範囲内の重み間の二乗平均距離は最小であり、(iii)同等なアナログネットワークの、各アナログニューロンについてまたは各層について、のいずれかで、同等なアナログネットワークの、各ニューロンのまたは各層についての、入ってくる接続の最大重みおよびバイアスw最大に基づいて、R+=R-がRベース*w最大に最も近い抵抗器セット値であるように、制限された長さの抵抗値セットから抵抗値R+=R-を選択すること(2922)。いくつかの実装態様では、R+およびR-は、同等なアナログネットワークの各層について独立に選定される(2924)。いくつかの実装態様では、R+およびR-は、同等なアナログネットワークの各アナログニューロンについて独立に選定され(2926)、および(iv)重み行列の各要素について、R1およびR2のすべての可能な値について、式
に従う誤差を可能な抵抗値の所定の範囲内で最小化する、それぞれの第1の抵抗値R1およびそれぞれの第2の抵抗値R2を選択すること(2928)であって、wは、重み行列のそれぞれの要素であり、rerrは、可能な抵抗値についての所定の相対許容差値である、選択すること。
次に図29Cを参照すると、いくつかの実装態様は、重み低減を実行する。いくつかの実装態様では、重み行列の第1の1つ以上の重みおよび第1の1つ以上の入力は、同等なアナログネットワークの第1の演算増幅器への1つ以上の接続を表す(2930)。方法は、抵抗行列を生成する(2932)前に、(i)第1の1つ以上の重みを第1の値によって修正すること(2934)(例えば、第1の1つ以上の重みを第1の値で除算して、重み範囲を低減すること、または第1の1つ以上の重みを第1の値によって乗算して、重み範囲を増加させること)と、(ii)活性化関数を実行する前に、第1の演算増幅器を、第1の1つ以上の重みおよび第1の1つ以上の入力の線形結合を第1の値によって乗算するように構成すること(2936)と、をさらに含む。いくつかの実装態様は、1つ以上の演算増幅器の乗算係数を変更するように重み低減を実行する。いくつかの実装態様では、抵抗値セットは、ある範囲の重みを生成し、この範囲のいくつかの部分では、誤差は、他の部分よりも高くなる。2つの公称値(例えば、1Ωおよび4Ω)のみがある場合、これらの抵抗器は、重み[-3;-0.75;0;0.75;3]を生成することができる。ニューラルネットワークの第1の層が{0,9}の重みを有し、かつ第2の層が{0,1}の重みを有するものとすると、いくつかの実装態様は、第1の層の重みを3によって除算し、第2の層の重みを3によって乗算して、全体的な誤差を低減する。いくつかの実装態様は、結果として生じるネットワークが抵抗器セットに対して大き過ぎる重みを有しないように、損失関数を調整することによって(例えば、l1またはl2レギュレータを使用して)、訓練中に重み値を制限することを考慮する。
続いて図29Dを参照すると、方法は、重みを区間に制限することをさらに含む。例えば、方法は、同等なアナログネットワークが同じ入力についての訓練されたニューラルネットワークと同様の出力を生成するように、重みの所定の範囲を取得すること(2938)と、重みの所定の範囲に従って重み行列を更新すること(2940)と、をさらに含む。
続いて図29Eを参照すると、方法は、ネットワークの重み感度を低下させることをさらに含む。例えば、方法は、訓練されたニューラルネットワークを再訓練して(2942)、同等なアナログネットワークに、訓練されたニューラルネットワークと比較して異なる出力を生成させる、重みまたは抵抗値の誤差に対する感度を低下させることをさらに含む。つまり、いくつかの実装態様は、すでに訓練されたニューラルネットワークに小さなランダムに分布する重み誤差に対するより低い感度を与えるために、すでに訓練されたニューラルネットワークの追加の訓練を含む。量子化および抵抗器製造は、小さな重み誤差を生成する。いくつかの実装態様は、結果として得られたネットワークが各特定の重み値に対して感度が低くなるように、ネットワークを変換する。いくつかの実装態様では、このことは、(例えば、ドロップアウト層と同様に)訓練中に層のうちの少なくともいくつかにおける各信号に小さな相対ランダム値を追加することによって実行される。
次に図29Fを参照すると、いくつかの実装態様は、重み分布範囲を低減することを含む。いくつかの実装態様は、所定の閾値よりも大きくその層の平均絶対重みよりも大きい、任意の層における重みを最小化するように、訓練されたニューラルネットワークを再訓練すること(2944)を含む。いくつかの実装態様は、再訓練を介してこのステップを実行する。例示的なペナルティ関数は、すべての層(例えば、A*最大(abs(w))/平均値(abs(w))にわたる合計を含み、ここで、最大および平均値は、層にわたって計算される。別の例は、上記以上の桁の大きさを含む。いくつかの実装態様では、この関数は、重み量子化およびネットワーク重み感度に影響を与える。例えば、量子化に起因する重みの小さな相対的変化は、高出力誤差を引き起こし得る。例示的な手法は、ネットワークにそのような重み廃棄があるときにネットワークにペナルティを課すいくつかのペナルティ関数を訓練中に導入することを含む。
訓練されたニューラルネットワークのアナログハードウェア実現のための最適化の例示的な方法
図30A~30Mは、いくつかの実装態様による、ハードウェア設計制約に従ったニューラルネットワークのハードウェア実現(3002)のための方法3000のフローチャートを示す。方法は、1つ以上のプロセッサ202と、1つ以上のプロセッサ202による実行用に構成された1つ以上のプログラムを記憶するメモリ214と、を有するコンピューティングデバイス200で(例えば、ニューラルネットワーク最適化モジュール246を使用して)実行される(3004)。
方法は、訓練されたニューラルネットワーク(例えば、ネットワーク220)のニューラルネットワークトポロジ(例えば、トポロジ224)および重み(例えば、重み222)を取得すること(3006)を含む。
方法はまた、(例えば、ニューラルネットワーク変換モジュール226を使用して)ニューラルネットワークトポロジを、複数の演算増幅器および複数の抵抗器を含むアナログコンポーネントの同等なアナログネットワークに変換すること(3008)を含む。各演算増幅器は、同等なアナログネットワークのアナログニューロンを表し、各抵抗器は、2つのアナログニューロン間の接続を表す。
次に図30Lを参照すると、いくつかの実装態様では、方法は、訓練されたニューラルネットワークを枝刈りすることをさらに含む。いくつかの実装態様では、方法は、ニューラルネットワークトポロジを変換する前に、同等なアナログネットワークが所定数未満のアナログコンポーネントを含むように、ニューラルネットワークの枝刈り手法を使用して、訓練されたニューラルネットワークを枝刈りして(3052)、ニューラルネットワークトポロジおよび訓練されたニューラルネットワークの重みを更新することをさらに含む。いくつかの実装態様では、枝刈りは、訓練されたニューラルネットワークと同等なアナログネットワークとの間の出力の一致の、精度またはレベルを考慮して、反復実行される(3054)。
次に図30Mを参照すると、いくつかの実装態様では、方法は、ニューラルネットワークトポロジを同等なアナログネットワークに変換する前に、ネットワーク知識抽出を実行すること(3056)をさらに含む。知識抽出は、枝刈りのような確率的/学習とは異なり、枝刈りよりも決定論的である。いくつかの実装態様では、知識抽出は、枝刈りステップとは独立に実行される。いくつかの実装態様では、ニューラルネットワークトポロジを同等なアナログネットワークに変換する前に、接続重みは、知識抽出の方法を通じて、隠れニューロンの入力と出力との間の因果関係の導出によって、所定の最適化基準に従って(他の重みよりも、ゼロ重み、または特定の範囲の重みを好むなど)調整される。概念的には、単一のニューロンまたはニューロンのセットでは、特定のデータセットに対して、入力と出力との間に因果関係があり得、これは、(1)新たな重みセットが、同じネットワーク出力を生成し、かつ(2)新たな重みセットが、抵抗器で実装しやすい(例えば、より均一に分布する値、より多くのゼロ値、または接続なし)ような方法で、重みの再調整を可能にする。例えば、いくつかのニューロン出力がいくつかのデータセットに対して常に1である場合、いくつかの実装態様は、このニューロンの出力接続(およびニューロン全体)を除去し、代わりに、ニューロンに続くニューロンのバイアス重みを調整する。このように、枝刈りはニューロンを除去した後に再学習を必要とし、かつ学習は確率的である一方、知識抽出は決定論的であるため、知識抽出ステップは、枝刈りとは異なる。
図30Aを再び参照すると、方法はまた、訓練されたニューラルネットワークの重みに基づいて、同等なアナログネットワークの重み行列を計算すること(3010)を含む。重み行列の各要素は、それぞれの接続を表す。
次に図30Jを参照すると、いくつかの実装態様では、方法は、バイアス値に基づいてニューロンを除去することまたは変換することをさらに含む。いくつかの実装態様では、方法は、同等なアナログネットワークの各アナログニューロンについて、(i)重み行列を計算しながら、訓練されたニューラルネットワークの重みに基づいて、それぞれのアナログニューロンのそれぞれのバイアス値を計算すること(3044)と、(ii)それぞれのバイアス値が所定の最大バイアス閾値を上回っているという判定に従って、同等なアナログネットワークからそれぞれのアナログニューロンを除去すること(3046)と、(iii)それぞれのバイアス値が所定の最小バイアス閾値を下回っているという判定に従って、それぞれのアナログニューロンを同等なアナログネットワーク内の線形接合部で置換すること(3048)と、をさらに含む。
次に図30Kを参照すると、いくつかの実装態様では、方法は、ニューロンの数を最小化すること、またはネットワークをコンパクト化することをさらに含む。いくつかの実装態様では、方法は、重み行列を生成する前に、同等なアナログネットワークの1つ以上のアナログニューロンからの接続(入力および出力)の数を増加させることによって、同等なアナログネットワークのニューロンの数を低減すること(3050)をさらに含む。
図30Aを再び参照すると、方法はまた、重み行列の抵抗行列を生成すること(3012)を含む。抵抗行列の各要素は、重み行列のそれぞれの重みに対応する。
方法はまた、同等なアナログネットワークを枝刈りして(3014)、抵抗行列に基づいて、複数の演算増幅器または複数の抵抗器の数を低減して、アナログコンポーネントの最適化されたアナログネットワークを取得することを含む。
次に図30Bを参照すると、いくつかの実装態様では、方法は、重要でない抵抗を導体で置き換えることを含む。いくつかの実装態様では、同等なアナログネットワークを枝刈りすることは、所定の最小閾値抵抗値を下回る抵抗値を有する抵抗行列の1つ以上の要素に対応する抵抗器を、導体で置き換えること(3016)を含む。
次に図30Cを参照すると、いくつかの実装態様では、方法は、非常に高い抵抗を有する接続を除去することをさらに含む。いくつかの実装態様では、同等なアナログネットワークを枝刈りすることは、所定の最大閾値抵抗値を上回る抵抗行列の1つ以上の要素に対応する、同等なアナログネットワークの1つ以上の接続を除去すること(3018)を含む。
次に図30Dを参照すると、いくつかの実装態様では、同等なアナログネットワークを枝刈りすることは、およそゼロである重み行列の1つ以上の要素に対応する、同等なアナログネットワークの1つ以上の接続を除去すること(3020)を含む。いくつかの実装態様では、同等なアナログネットワークを枝刈りすることは、いかなる入力接続も有しない、同等なアナログネットワークの1つ以上のアナログニューロンを除去すること(3022)をさらに含む。
次に図30Eを参照すると、いくつかの実装態様では、方法は、重要でないニューロンを除去することを含む。いくつかの実装態様では、同等アナログネットワークを枝刈りすることは、(i)1つ以上のデータセットの計算を行うときのアナログニューロンの使用を検出することに基づいて、同等なアナログネットワークのアナログニューロンをランク付けすること(3024)を含む。例えば、訓練されたニューラルネットワークを訓練するために使用される訓練データセット、典型的なデータセット、枝刈り手順のために開発されたデータセット。いくつかの実装態様は、訓練データセットに供されると、所与のニューロンまたはニューロンのブロックの使用頻度に基づいて、枝刈りについてのニューロンのランク付けを実行する。例えば、(a)試験データセットを使用するときに、所与のニューロンに全く信号がない場合、このニューロンまたはニューロンのブロックは使用されたことがなく、枝刈りされることを意味し、(b)ニューロンの使用頻度が非常に低い場合には、ニューロンは、精度の著しい損失なしに枝刈りされ、(c)ニューロンが常に使用され、その場合、ニューロンは枝刈りされないことが可能であり)、(ii)ランク付けに基づいて、同等なアナログネットワークの1つ以上のアナログニューロンを選択すること(3026)、および(iii)同等なアナログネットワークから1つ以上のアナログニューロンを除去すること(3028)。
次に図30Fを参照すると、いくつかの実装態様では、アナログニューロンの使用を検出することは、(i)モデリングソフトウェア(例えば、SPICeまたは同様のソフトウェア)を使用して同等なアナログネットワークのモデルを確立すること(3030)と、(ii)モデルを使用することによってアナログ信号(電流)の伝播を測定して(3032)(特別な訓練セットを使用するときに信号が伝播していないブロックを除去する)、1つ以上のデータセットの計算を生成することと、を含む。
次に図30Gを参照すると、いくつかの実装態様では、アナログニューロンの使用を検出することは、(i)モデリングソフトウェア(例えば、SPICeまたは同様のソフトウェア)を使用して同等なアナログネットワークのモデルを確立すること(3034)と、(ii)モデルを使用して1つ以上のデータセットの計算を生成することによって、モデルの出力信号(電流または電圧)(例えば、SPICeモデル内または実回路内のいくつかのブロックまたは増幅器の出力での信号、および訓練セットの出力信号が常にゼロボルトである領域を削除すること)を測定すること(3036)と、を含む。
次に図30Hを参照すると、いくつかの実装態様では、アナログニューロンの使用を検出することは、(i)モデリングソフトウェア(例えば、SPICeまたは同様のソフトウェア)を使用して同等なアナログネットワークのモデルを確立すること(3038)と、(ii)モデルを使用して1つ以上のデータセットの計算を生成することによって、アナログニューロンによって消費される電力(例えば、特定のニューロンまたはニューロンのブロックによって消費される電力、SPICEモデル内または実回路内のいずれかの演算増幅器によって表され、ニューロンまたはニューロンのブロックを削除すること)を測定すること(3040)と、を含む。
次に図30Iを参照すると、いくつかの実装態様では、方法は、同等なアナログネットワークを枝刈りした後、かつ同等なアナログネットワークを実装する回路を作製するための1つ以上のリソグラフィマスクを生成する前に、同等なアナログネットワークの重み行列を再計算すること(3042)と、再計算された重み行列に基づいて抵抗行列を更新することと、をさらに含む。
例示的なアナログニューロモルフィック集積回路および作製方法
ニューラルネットワークのためのアナログ集積回路を作製するための例示的な方法
図31A~31Qは、いくつかの実装態様による、アナログコンポーネントのアナログネットワークを含む集積回路3102を作製するための方法3100のフローチャートを示す。方法は、1つ以上のプロセッサ202と、1つ以上のプロセッサ202による実行用に構成された1つ以上のプログラムを記憶するメモリ214と、を有するコンピューティングデバイス200で(例えば、IC作製モジュール258を使用して)実行される。方法は、ニューラルネットワークトポロジ、および訓練されたニューラルネットワークの重みを取得すること(3104)を含む。
方法はまた、(例えば、ニューラルネットワーク変換モジュール226を使用して)ニューラルネットワークトポロジを、複数の演算増幅器および複数の抵抗器を含むアナログコンポーネントの同等なアナログネットワークに変換すること(3106)を含む(回帰型ニューラルネットワークについては、信号遅延線、乗算器、Tanhアナログブロック、シグモイドアナログブロックも使用する)。各演算増幅器は、それぞれのアナログニューロンを表し、各抵抗器は、それぞれの第1のアナログニューロンとそれぞれの第2のアナログニューロンとの間のそれぞれの接続を表す。
方法はまた、訓練されたニューラルネットワークの重みに基づいて、同等なアナログネットワークの重み行列を計算すること(3108)を含む。重み行列の各要素は、それぞれの接続を表す。
方法はまた、重み行列の抵抗行列を生成すること(3110)を含み、抵抗行列の各要素は、重み行列のそれぞれの重みに対応する。
方法はまた、抵抗行列に基づいてアナログコンポーネントの同等なアナログネットワークを実装する回路を作製するための1つ以上のリソグラフィマスクを生成すること(3112)(例えば、マスク生成モジュール248を使用してマスク250および/または252を生成すること)と、リソグラフィプロセスを使用して、1つ以上のリソグラフィマスクに基づいて回路(例えば、IC262)を作製すること(3114)と、を含む。
次に図31Bを参照すると、いくつかの実装態様では、集積回路は、1つ以上のデジタル信号(例えば、1つ以上のCCD/CMOS画像センサからの信号)に基づいて、アナログコンポーネントの同等なアナログネットワークのアナログ入力を生成するように構成された1つ以上のデジタル対アナログ変換器(3116)(例えば、DAC変換器260)をさらに含む。
次に図31Cを参照すると、いくつかの実装態様では、集積回路は、集積回路の推論の数に基づくサンプリング周波数で一次元または二次元のアナログ入力を処理するように構成されたアナログ信号サンプリングモジュール(3118)をさらに含む(ICの推論の数は、製品仕様によって決定され-我々は、ニューラルネットワーク演算からのサンプリングレートおよびチップが解決することを目的とする正確なタスクを知っている)。
次に図31Dを参照すると、いくつかの実装態様では、集積回路は、複数の演算増幅器の動作範囲に適合するようにアナログ信号をスケールダウンするかまたはスケールアップするための電圧変換モジュール(3120)をさらに含む。
次に図31Eを参照すると、いくつかの実装態様では、集積回路は、CCDカメラから取得された1つ以上のフレームを処理するように構成されたタクト信号処理モジュール(3122)をさらに含む。
次に図31Fを参照すると、いくつかの実装態様では、訓練されたニューラルネットワークは、長期短期記憶(LSTM)ネットワークであり、集積回路は、信号タクトを同期させ、かつ時系列処理を可能にするための1つ以上のクロックモジュールをさらに含む。
次に図31Gを参照すると、いくつかの実装態様では、集積回路は、アナログコンポーネントの同等なアナログネットワークの出力に基づいてデジタル信号を生成するように構成された1つ以上のアナログ-デジタル変換器(3126)(例えば、ADC変換器260)をさらに含む。
次に図31Hを参照すると、いくつかの実装態様では、集積回路は、エッジアプリケーションから取得された一次元または二次元のアナログ信号を処理するように構成された1つ以上の信号処理モジュール(3128)を含む。
次に図31Iを参照すると、訓練されたニューラルネットワークは、検出される所定量のガスを含有するガス混合物中の異なるガスの選択的感知のための、異なるガス混合物に対するガスセンサ(例えば、2~25個のセンサ)のアレイの信号を含む訓練データセットを使用して訓練されている(3130)(つまり、訓練されたチップの演算を使用して、混合物中の他のガスの存在にかかわらず、ガス混合物中のニューラルネットワークガスに既知の各々を個別に判定する)。いくつかの実装態様では、ニューラルネットワークトポロジは、16個のガスセンサによる測定に基づいて3つの二元ガス成分を検出するために設計された一次元深層畳み込みニューラルネットワーク(1D-DCNN)であり、16個のセンサごとの1D畳み込みブロック、3つの共有または共通の1D畳み込みブロック、および3つの稠密層を含む(3132)。いくつかの実装態様では、同等なアナログネットワークは、(i)アナログニューロン当たり最大100個の入出力接続、(ii)任意の数の時間ステップによる遅延を生じさせる遅延ブロック、(iii)5の信号制限、(iv)15個の層、(v)およそ100,000個のアナログニューロン、および(vi)およそ4,900,000個の接続を含む(3134)。
次に図31Jを参照すると、訓練されたニューラルネットワークは、MOSFETデバイスの残りの耐用年数(RUL)を予測するために、異なるMOSFET(例えば、42個の異なるMOSFETのための熱老化時間シリーズを含むNASA MOSFETデータセット。データは、400msごとにサンプリングされ、典型的には、各デバイスのための数時間のデータ)のための熱老化時系列データを含む訓練データセットを使用して訓練されている(3136)。いくつかの実装態様では、ニューラルネットワークトポロジは、各層に64個のニューロンを有する4つのLSTM層、これに続く、それぞれ64個のニューロンおよび1つのニューロンを有する2つの稠密層を含む(3138)。いくつかの実装態様では、同等なアナログネットワークは、(i)アナログニューロン当たり最大100個の入出力接続、(ii)5の信号制限、(iii)18個の層、(iv)3,000~3,200個のアナログニューロン(例えば、3137個のアナログニューロン)、および(v)123,000~124,000個の接続(例えば123,200個の接続)を含む(3140)。
次に図31Kを参照すると、訓練されたニューラルネットワークは、異なる市販のリチウムイオン電池(例えば、NASA電池使用データセット。データセットは、6つ市販のリチウムイオン電池の連続使用のデータを提示し、ネットワーク動作は、電池の放電曲線の分析に基づく)の連続使用中の放電および温度データを含む時系列データを含む訓練データセットを使用して、電池管理システム(BMS)で使用するリチウムイオン電池の健康状態(SOH)および充電状態(SOC)を監視するために訓練されている(3142)。いくつかの実装態様では、ニューラルネットワークトポロジは、入力層、各層に64個のニューロンを有する2つのLSTM層、これに続く、SOC値およびSOH値を生成するための2つのニューロンを有する出力稠密層を含む(3144)。同等なアナログネットワークは、(i)アナログニューロン当たり最大100個の入出力接続、(ii)5の信号制限、(iii)9つの層、(iv)1,200~1,300個のアナログニューロン(例えば、1271個のアナログニューロン)、および(v)51,000~52,000個の接続(例えば51,776個の接続)を含む(3146)。
次に図31Lを参照すると、訓練されたニューラルネットワークは、異なる市販のリチウムイオン電池(例えば、NASA電池使用データセット。データセットは、6つ市販のリチウムイオン電池の連続使用のデータを提示し、ネットワーク動作は、電池の放電曲線の分析に基づく)の連続使用中の放電および温度データを含む時系列データを含む訓練データセットを使用して、電池管理システム(BMS)で使用するリチウムイオン電池の健康状態(SOH)を監視するために訓練されている(3148)。いくつかの実装態様では、ニューラルネットワークトポロジは、18個のニューロンを有する入力層、100個のニューロンを有する単純回帰層、および1つのニューロンを有する稠密層を含む(3150)。いくつかの実装態様では、同等なアナログネットワークは、(i)アナログニューロン当たり最大100個の入出力接続、(ii)5の信号制限、(iii)4つの層、(iv)200~300個のアナログニューロン(例えば、201個のアナログニューロン)、および(v)2,200~2,400個の接続(例えば2,300個の接続)を含む(3152)。
次に図31Mを参照すると、訓練されたニューラルネットワークは、発声コマンド(例えば、「はい」、「いいえ」、「上」、「下」、「左」、「右」、「オン」、「オフ」、「ストップ」、「ゴー」を含む10個の短い話し言葉キーワード)を識別するために、発話コマンドを含む訓練データセット(例えば、Google Speech Commands Dataset)を使用して訓練されている(3154)。いくつかの実装態様では、ニューラルネットワークトポロジは、1つのニューロンを有する深さ方向に分離可能な畳み込みニューラルネットワーク(DS-CNN)層である(3156)。いくつかの実装態様では、同等なアナログネットワークは、(i)アナログニューロン当たり最大100個の入出力接続、(ii)5の信号制限、(iii)13個の層、(iv)およそ72,000個のアナログニューロン、および(v)およそ260万個の接続を含む(3158)。
次に図31Nを参照すると、訓練されたニューラルネットワークは、所定の期間にわたって様々な身体活動を行う異なる個人のために、光電式容積脈波記録法(PPG)データ、加速度計データ、温度データ、および電気皮膚応答信号データと、ECGセンサから取得された基準心拍数データ(例えば、PPG-DaliaデータセットからのPPGデータ(CHECK LICENSE)と、を含む訓練データセットを使用して訓練されている(3160)。各1~4時間の間に様々な身体活動を行う15人の個人のデータが、収集されている。手首ベースのセンサデータは、PPG、3軸加速度計、4~64Hzでサンプリングした温度および電気皮膚応答信号、ならびに約2HzのサンプリングでECGセンサから取得された基準心拍数データを含む。オリジナルのデータを、1000時間ステップ(約15秒)のシーケンスに500時間ステップのシフトで分割し、これにより総計16541個のサンプルを得た。データセットを、PPGセンサデータおよび3軸加速度計データに基づいて、身体運動(例えば、ジョギング、フィットネス運動、階段登り)中の脈拍を判定するために、13233個の訓練サンプルと3308個の試験サンプルとに分割した。ニューラルネットワークトポロジは、時系列畳み込みを行う、各々が16個のフィルタおよび20のカーネルを有する2つのConv1D層、各々が16個のニューロンを有する2つのLSTM層、ならびにそれぞれ16個のニューロンおよび1つのニューロンを有する2つの稠密層を含む(3162)。いくつかの実装態様では、同等なアナログネットワークは、(i)任意の数の時間ステップを生成するための遅延ブロック、(ii)アナログニューロン当たり最大100個の入出力接続、(iii)5の信号制限、(iv)16個の層、(v)700~800個のアナログニューロン(例えば、713個のアナログニューロン)、および(vi)12,000~12,500個の接続(例えば、12,072個の接続)を含む(3164)。
次に図31Oを参照すると、訓練されたニューラルネットワークは、パルスドップラレーダ信号に基づいて異なるオブジェクト(例えば、人間、車、サイクリスト、スクータ)を分類するように訓練されており(3166)、ニューラルネットワークトポロジは、マルチスケールLSTMニューラルネットワークを含む(3168)。
次に、図31Pを参照すると、訓練されたニューラルネットワークは、慣性センサデータ(例えば、フィットネス追跡デバイス、スマートウォッチ、または携帯電話からの3軸加速度計、磁力計、またはジャイロスコープデータ、最大96Hzの周波数でサンプリングされた3軸加速度計データ、に基づいて、人間活動のタイプの認識(例えば、歩行、走行、着座、階段登り、運動、活動追跡)を実行するように訓練されている(3170)。ネットワークを、「食洗機を開け、その後に閉じる」、「立ち飲みする」、「左手のドアを閉じる」、「ジョギング」、「歩行」、「階段上り」などの3つの異なる一般利用可能なデータセットで訓練した。いくつかの実装態様では、ニューラルネットワークトポロジは、各々が12個のフィルタおよび64のカーネル次元の畳み込み層を有し、かつ各々に、最大枝刈り層と、Nがクラスの数であるとして、それぞれ、1024個のニューロンおよびN個のニューロンの2つの共通の稠密層と、が続く、3つのチャネル方向の畳み込みネットワークを含む(3172)。いくつかの実装態様では、同等なアナログネットワークは、(i)任意の数の時間ステップを生成するための遅延ブロック、(ii)アナログニューロン当たり最大100個の入出力接続、(iii)10個のアナログニューロンの出力層、(iv)5の信号制限、(v)10個の層、(vi)1,200~1,300個のアナログニューロン(例えば、1296個のアナログニューロン)、および(vi)20,000~21,000個の接続(例えば20,022個の接続)を含む(3174)。
次に図31Qを参照すると、訓練されたニューラルネットワークは、畳み込み演算を使用して心拍数データとマージされる加速度計データに基づいて人間活動の異常なパターンを検出するようにさらに訓練されている(3176)(てんかんなどの医学的な理由に起因する負傷または誤動作によって引き起こされる突然の異常なパターンの場合に備えて、脳卒中前または心臓発作前の状態または信号を検出するように)。
いくつかの実装態様は、発声認識、ビデオ信号処理、画像感知、温度感知、圧力感知、レーダ処理、LIDAR処理、電池管理、MOSFET回路電流および電圧、加速度計、ジャイロスコープ、磁気センサ、心拍センサ、ガスセンサ、体積センサ、液体レベルセンサ、GPS衛星信号、人体コンダクタンスセンサ、ガス流量センサ、濃度センサ、pHメータ、およびIR視覚センサからなる群から選択される、チップに統合されない(すなわち、これらは、チップに接続された外部要素である)コンポーネントを含む。
上述したプロセスに従って製造されたアナログニューロモルフィック集積回路の例は、いくつかの実装態様に従って、以下のセクションで提供される。
選択的ガス検出のための例示的なアナログニューロモルフィックIC
いくつかの実装態様では、ニューロモルフィックICは、上述したプロセスに従って製造される。ニューロモルフィックICは、検出されるある量のガスを含むガス混合物中の異なるガスの選択的感知のために訓練された深層畳み込みニューラルネットワークに基づく。深層畳み込みニューラルネットワークは、異なるガス混合物に応答するガスセンサのアレイ(例えば、2~25個のセンサ)の信号を含む、訓練データセットを使用して訓練される。集積回路(または本明細書に記載される手法に従って製造されたチップ)を使用して、混合物中における他のガスの存在にかかわらず、ガス混合物中の1つ以上の既知のガスを判定することができる。
いくつかの実装態様では、訓練されたニューラルネットワークは、混合ガス分類に使用されるマルチラベル1D-DCNNネットワークである。いくつかの実装態様では、ネットワークは、16個のガスセンサによる測定値に基づいて3つの二元ガス成分を検出するために設計されている。いくつかの実装態様では、1D-DCNNは、センサごとの1D畳み込みブロック(16個のそのようなブロック)、3つの共通の1D畳み込みブロック、および3つの稠密層を含む。いくつかの実装態様では、このタスクに対する1D-DCNNネットワーク性能は、96.3%である。
いくつかの実装態様では、オリジナルのネットワークは、以下のパラメータを用いてT変換される。ニューロン当たりの最大入出力接続数=100、遅延ブロックは、任意の数の時間ステップによる遅延を生成し得、5の信号制限。
いくつかの実装態様では、結果として生じるTネットワークは、以下の特性を有する。15個の層、およそ100,000個のアナログニューロン、およそ4,900,000個の接続。
MOSFET故障予測のための例示的なアナログニューロモルフィックIC
熱応力に起因するMOSFETのオン抵抗劣化は、パワーエレクトロニクスにおいて周知の深刻な問題である。現実のアプリケーションでは、MOSFETデバイスの温度は、短期間で頻繁に変化する。この温度掃引は、デバイスの熱劣化を生じさせ、その結果、デバイスは、指数関数的なものを呈し得る。この作用は、典型的には、MOSFET劣化を引き起こす温度勾配を生成するパワーサイクルによって研究されている。
いくつかの実装態様では、ニューロモルフィックICは、上述したプロセスに従って製造される。ニューロモルフィックICは、MOSFETデバイスの残存耐用年数(RUL)を予測するために、「Real-time Deep Learning at the Edge for Scalable Reliability Modeling of SI-MOSFET Power Electronics Converters」というタイトルの論文で論じられているネットワークに基づいている。ニューラルネットワークを使用して、デバイスの残存有用寿命(RUL)を80%を超える精度で判定することができる。
いくつかの実装態様では、ネットワークは、42個の異なるMOSFETの熱老化時系列を含むNASA MOSFETデータセットで訓練されている。データは、400msごとにサンプリングされ、典型的には、各デバイスの数時間のデータを含む。ネットワークは、各々64個のニューロンの4つのLSTM層を含み、これに、64個および1つのニューロンの2つの稠密層が続く。
いくつかの実装態様では、ネットワークは、以下のパラメータを用いてT変換される。ニューロン当たりの最大入出力接続は100であり、5の信号制限、結果として生じるTネットワークは、以下の特性、すなわち、18個の層、およそ3,000個のニューロン(例えば、137個のニューロン)、およびおよそ120,000個の接続(例えば、123,200個の接続)を有していた。
リチウムイオン電池の健康およびSoC監視のための例示的なアナログニューロモルフィックIC
いくつかの実装態様では、ニューロモルフィックICは、上述したプロセスに従って製造される。ニューロモルフィックICを、電池管理システム(BMS)で使用するリチウムイオン電池の予測分析に使用することができる。BMSデバイスは、典型的には、過充電および過放電保護、健康状態(SOH)および充電状態(SOC)の監視、およびいくつかのセルの負荷バランスなどの機能を提示する。SOHおよびSOC監視は、通常、デバイスのコストを増加させ、かつ電力を消費するデジタルデータプロセッサを必要とする。いくつかの実装態様では、集積回路を使用して、デバイス上にデジタルデータプロセッサを実装することなく、正確なSOCおよびSOHデータを取得することができる。いくつかの実装態様では、集積回路は、99%を超える精度でSOCを判定し、98%を超える精度でSOHを判定する。
いくつかの実装態様では、ネットワーク演算は、電池の放電曲線の分析、ならびに温度に基づき、および/またはデータは、時系列で提示される。いくつかの実装態様は、NASA電池使用データセットからのデータを使用する。データセットは、6つの市販のリチウムイオン電池の連続使用のデータを提示する。いくつかの実装態様では、ネットワークは、入力層、各々64個のニューロンの2つのLSTM層、および2つのニューロンの出力稠密層(SOC値およびSOH値)を含む。
いくつかの実装態様では、ネットワークは、以下のパラメータ、すなわち、ニューロン当たりの最大入出力接続数=100、および5の信号制限を用いてT変換される。いくつかの実装態様では、結果として生じるT-ネットワークは、以下の特性、すなわち、9つの層、およそ1,200個のニューロン(例えば、1,271個のニューロン)、およびおよそ50,000個の接続(例えば、51,776個の接続)を含む。いくつかの実装態様では、ネットワーク演算は、電池の放電曲線の分析、ならびに温度に基づく。ネットワークは、NASA電池使用データセットからのデータを処理するために設計された「State-of-Health Estimation of Li-ion Batteries inElectric Vehicle Using IndRNN under VariableLoad Condition」というタイトルの論文に開示されたNetwork IndRnnを使用して訓練されている。データセットは、6つの市販のリチウムイオン電池の連続使用のデータを提示する。IndRnnネットワークは、18個のニューロンを有する入力層、100個のニューロンの単純回帰層、および1つのニューロンの稠密層を含む。
いくつかの実装態様では、IndRnnネットワークは、以下のパラメータ、すなわち、ニューロン当たりの最大入出力接続数=100、および5の信号制限を用いてT変換される。いくつかの実装態様では、結果として生じるT-ネットワークは、以下の特性、すなわち、4つの層、およそ200個のニューロン(例えば、201個のニューロン)、およびおよそ2,000個の接続(例えば、2,300個の接続)を有していた。いくつかの実装態様は、1.3%の推定誤差でSOHのみを出力する。いくつかの実装態様では、SOCは、SOHが取得され方法と同様に取得される。
キーワードスポッティングの例示的なアナログニューロモルフィックIC
いくつかの実装態様では、ニューロモルフィックICは、上述したプロセスに従って製造される。ニューロモルフィックICを、キーワードスポッティングに使用することができる。
入力ネットワークは、2D畳み込み層および2D深さ方向畳み込み層を有するニューラルネットワークであり、サイズ49×10の入力音声メルスペクトログラムを有する。いくつかの実装態様では、ネットワークは、5つの畳み込み層、4つの深さ方向畳み込み層、平均枝刈り層、および最終的な稠密層を含む。
いくつかの実装態様では、ネットワークは、94.4%の認識精度で、Google Speech Commands Datasetから10個の短い話し言葉キーワード(「はい」、「いいえ」、「上」、「下」、「左」、「右」、「オン」、「オフ」、「ストップ」、「ゴー」)を認識するように事前に訓練されている。
いくつかの実装態様では、集積回路は、発声コマンド識別のための深さ方向に分離可能な畳み込みニューラルネットワーク(DS-CNN)に基づいて製造される。いくつかの実装態様では、DS-CNNネットワークは、以下のパラメータ、すなわち、ニューロン当たりの最大入出力接続数=100、および5の信号制限を用いてT変換される。いくつかの実装態様では、結果として生じるT-ネットワークは、以下の特性、すなわち、13個の層、およそ72,000個のニューロン、およびおよそ260万個の接続を有していた。
例示的なDS-CNNキーワードスポッティングネットワーク
一例では、キーワードスポッティングネットワークは、いくつかの実装態様に従って、Tネットワークに変換される。ネットワークは、2D畳み込み層および2D深さ方向畳み込み層のニューラルネットワークであり、サイズ49×10の入力音声メルスペクトログラムを有する。ネットワークは、5つの畳み込み層、4つの深さ方向畳み込み層、平均枝刈り層、および最終的な稠密層を含む。ネットワークは、Google Speech Commands Dataset https://ai.googleblog.com/2017/08/launching-speech-commands-dataset.htmlから10の短い話し言葉キーワード(「はい」、「いいえ」、「上」、「下」、「左」、「右」、「オン」、「オフ」、「ストップ」、「ゴー」)を認識するように事前に訓練されている。「沈黙」および「不明」に対応する2つの追加のクラスがある。ネットワーク出力は、長さ12のソフトマックスである。
(変換に入力された)訓練されたニューラルネットワークは、いくつかの実装態様に従って、94.4%の認識精度を有していた。ニューラルネットワークトポロジでは、各畳み込み層に、BatchNorm層およびReLU層が続き、ReLU活性化は非有界であり、約250万の積和演算を含んでいた。
変換後、変換されたアナログネットワークを、1000個のサンプル(100の各話し言葉コマンド)の試験セットで試験した。すべての試験サンプルはまた、オリジナルのデータセットの試験サンプルとして使用される。オリジナルのDS-CNNネットワークは、この試験セットに対して5.7%に近い認識誤差を与えた。ネットワークを、自明なニューロンのTネットワークに変換した。「試験」モードにあるBatchNormalization層は、単純な線形の信号変換を生成するので、重み乗数+何らかの追加のバイアスとして解釈できる。畳み込み、平均枝刈り、および稠密層は、かなり直截的にT変換される。ソフトマックス活性化関数を、T-networkには実装せず、T-network出力に別個に適用して。
結果として生じたTネットワークは、入力層を含む12個の層、およそ72,000個のニューロン、およびおよそ250万個の接続を有していた。
図26A~26Kは、いくつかの実装態様による、層1~11の絶対重みの例示的なヒストグラム2600をそれぞれ示す。(絶対重みの)重み分布ヒストグラムを、各層について計算した。チャートの破線は、それぞれの層の平均絶対重み値に対応する。変換(すなわち、T変換)後、変換されたネットワーク対元のネットワークの平均出力絶対誤差(試験セットに対して計算される)は、4.1e-9であると計算される。
変換されたネットワークのネットワーク制限を設定するための様々な例が、いくつかの実装態様に従って、本明細書に記載される。信号制限については、ネットワークで使用されるReLU活性化が非有界であるため、いくつかの実装態様は、各層に対して信号制限を使用する。これは、数学的同等性に潜在的に影響を与え得る。このため、いくつかの実装態様は、入力信号範囲に関して5の電源電圧に対応するすべての層に対して5の信号制限を使用する。
重みを量子化するために、いくつかの実装態様は、30個の抵抗器の公称セット[0.001、0.003、0.01、0.03、0.1、0.324、0.353、0.436、0.508、0.542、0.544、0.596、0.73、0.767、0.914、0.985、0.989、1.043、1.101、1.149、1.157、1.253、1.329、1.432、1.501、1.597、1.896、2.233、2.582、2.844]を使用する。
いくつかの実装態様は、各層に対してR-およびR+値(上記の説明を参照)を個別に選択する。各層について、いくつかの実装態様は、最良の重み精度を提供する値を選択する。いくつかの実装態様では、続いて、Tネットワーク内のすべての重み(バイアスを含む)が量子化される(例えば、入力または選定された抵抗で達成され得る最も近い値に設定される)。
いくつかの実装態様は、出力層を以下のように変換する。出力層は、ReLU活性化を有しない稠密層である。層は、いくつかの実装態様に従って、T変換で実装されず、かつデジタル部分のために残されたソフトマックス活性化を有する。いくつかの実装態様は、追加の変換を実行しない。
心拍数を取得するための例示的なアナログ神ニューロモルフィックIC
PPGは、組織の微小血管床における血液量の変化を検出するために使用できる光学的に取得されたプレチスモグラムである。PPGは、多くの場合、皮膚を照明し、かつ光吸収の変化を測定する、パルスオキシメータを使用することによって取得される。PPGは、多くの場合、フィットネストラッカなどのデバイスで心拍数を判定するために処理される。PPG信号から心拍数(HR)を導出することは、エッジデバイスコンピューティングにおいて不可欠なタスクである。手首上にあるデバイスから取得されるPPGデータは、通常、デバイスが安定しているときにのみ信頼性を有する心拍数を取得することを可能にする。人が身体運動に関与している場合、PPGデータから心拍数を取得することは、慣性センサデータと組み合わされない限り、不良な結果を生成する。
いくつかの実装態様では、畳み込みニューラルネットワークとLSTM層との組み合わせに基づいて、集積回路を使用して、光電式容積脈波記録法(PPG)センサおよび3軸加速度計からのデータをバイアスして、パルスレートを正確に判定することができる。集積回路を使用して、PPGデータの動きアーチファクトを抑制し、ジョギング、フィットネス運動、および階段昇りなどの身体運動中の脈拍を、90%を超える精度で判定することができる。
いくつかの実装態様では、入力ネットワークは、PPG-DaliaデータセットからのPPGデータで訓練されている。所定の持続時間(例えば、各1~4時間)にわたって様々な身体活動を行う15人の個人のデータが収集されている。手首ベースのセンサデータが含まれた訓練データは、4~64Hzでサンプリングされた、PPG、3軸加速度計、温度、および電気皮膚応答信号、ならびに約2HzでサンプリングするECGセンサから取得された基準心拍数データを含む。オリジナルのデータを、1000時間ステップ(約15秒)のシーケンスに500時間ステップのシフトで分割し、これにより総計16541個のサンプルを生成した。データセットを13233個の訓練サンプルと3308個の試験サンプルとに分割した。
いくつかの実装態様では、入力のネットワークは、時系列畳み込みを実行する各々16個のフィルタを有する2つのConv1D層、各々16個のニューロンの2つのLSTM層、ならびに16個および1つのニューロンの2つの稠密層を含んでいた。いくつかの実装態様では、ネットワークは、試験セットに対して毎分6拍動未満のMSE誤差を生成する。
いくつかの実装態様では、ネットワークは、以下のパラメータを用いてT変換される。遅延ブロックは、任意の数の時間ステップによる遅延を生成し得、ニューロン当たりの最大入出力接続=100、および5の信号制限。いくつかの実装態様では、結果として生じるT-ネットワークは、以下の特性、すなわち、15個の層、およそ700個のニューロン(例えば、713個のニューロン)、およびおよそ12,000個の接続(例えば、12,072個の接続)を有していた。
T変換されたLSTMネットワークによる例示的なPPGデータの処理
上述したように、回帰ニューロンについて、いくつかの実装態様は、GRUニューロンおよびLSTMニューロンの各回帰接続に追加される信号遅延ブロックを使用する。いくつかの実装態様では、遅延ブロックは、一定期間dtで遅延ブロックを活性化する外部サイクルタイマ(例えば、デジタルタイマ)を有する。この活性化は、x(t)が遅延ブロックの入力信号であるとして、x(t-dt)の出力を生成する。そのような活性化周波数は、例えば、ネットワーク入力信号周波数(例えば、T変換されたネットワークによって処理されるアナログセンサの出力周波数)に対応し得る。典型的に、すべての遅延ブロックは、同じ活性化信号で同時に活性化される。1つの周波数でいくつかのブロックを同時に活性化することができ、別の周波数で他のブロックを活性化することができる。いくつかの実装態様では、これらの周波数は、共通の乗算器を有し、信号は、同期される。いくつかの実装態様では、1つの信号に対して、加算的な時間シフトを生成する複数の遅延ブロックが使用される。遅延ブロックの例は、図13Bを参照して上述されており、いくつかの実装態様に従って、遅延ブロックの2つの例を示す。
PPGデータを処理するためのネットワークは、いくつかの実装態様に従って、1つ以上のLSTMニューロンを使用する。LSTMニューロンの実装態様の例は、いくつかの実装態様に従って、図13Aを参照して上述されている。
ネットワークはまた、時間座標にわたって実行される畳み込みである、Conv1Dを使用する。Conv1Dの実装態様の例は、いくつかの実装態様に従って、図15Aおよび15Bを参照して上述されている。
PPGデータの詳細が、いくつかの実装態様に従って、本明細書に記載される。PPGは、組織の微小血管床における血液量の変化を検出するために使用できる光学的に取得されたプレチスモグラムである。PPGは、多くの場合、皮膚を照明し、かつ光吸収の変化を測定する、パルスオキシメータを使用することによって取得される。PPGは、多くの場合、フィットネストラッカなどのデバイスで心拍数を判定するために処理される。PPG信号から心拍数(HR)を導出することは、エッジデバイスコンピューティングにおいて不可欠なタスクである。
いくつかの実装態様では、Capnobase PPGデータセットからのPPGデータを使用する。データは、毎秒300個のサンプルをサンプリングした、各々8分の持続時間の42人の個人の原PPG信号と、毎秒1つのサンプルをサンプリングした、ECGセンサから取得され基準心拍数データと、を含む。訓練および評価のために、いくつかの実装態様は、オリジナルのデータを6000時間ステップのシーケンスに1000時間のステップのシフトで分割し、これにより総計5838個のサンプルの総セットを取得する。
いくつかの実装態様では、NNベースの、入力の訓練されたニューラルネットワークは、PPGデータから心拍数(HR)を取得する際に1~3%の精度を可能にする。
このセクションは、T変換およびアナログ処理がこのタスクにどのように対処できるかを例証するために、比較的単純なニューラルネットワークについて記載する。この説明は、いくつかの実装態様に従って、例として提供される。
いくつかの実装態様では、データセットは、4,670個の訓練サンプルおよび1,168個の試験サンプルに分割される。ネットワークは、16個のフィルタおよび20のカーネルを有する1つのConv1D層、24個のニューロンを有する2つのLSTM層、2つの稠密層(各々24個および1つのニューロンを有する)を含んでいた。いくつかの実装態様では、このネットワークを200エポック訓練した後、試験精度は、2.1%であることがわかった。
いくつかの実装態様では、入力のネットワークは、以下のパラメータ、すなわち、1、5および10時間ステップの期間を有する遅延ブロック、ならびに以下の特性、すなわち、17個の層、15,448個の接続、および329個のニューロン(OP3ニューロンおよび乗算器ブロック、遅延ブロックをカウントしない)を用いてT変換された。
パルスドップラレーダ信号に基づく物体認識のための例示的なアナログニューロモルフィック集積回路
いくつかの実装態様では、マルチスケールLSTMニューラルネットワークに基づいて、パルスドップラレーダ信号に基づいて物体を分類するために使用できる集積回路が製造される。このICは、ドップラレーダ信号に基づいて、人間、車、サイクリスト、スクータなどの異なる物体を分類するために使用でき、雑音を除去し、ドップラレーダ信号にノイズを提供する。いくつかの実装態様では、マルチスケールLSTMネットワークを用いた物体の分類の精度は、90%を超えた。
慣性センサデータに基づく人間活動のタイプの認識のための例示的なアナログニューロモルフィックIC
いくつかの実装態様では、ニューロモーフィック集積回路が、製造され、3軸加速度計、場合によっては磁力計および/またはフィットネス追跡デバイス、スマートウォッチ、または携帯電話のジャイロスコープからの入力信号を有するマルチチャネル畳み込みニューラルネットワークに基づく人間活動のタイプの認識のために使用され得る。マルチチャネル畳み込みニューラルネットワークは、歩行、走行、着座、階段登り、運動などの異なるタイプの人間活動を区別するために使用でき、活動追跡に使用できる。このICは、心拍数データと畳み込みによってマージされる加速度計データに基づいて、人間活動の異常なパターンを検出するために使用できる。そのようなICは、いくつかの実装態様に従って、てんかんなどのような医療上の理由に起因する負傷または誤動作によって引き起こされる突然の異常パターンの場合に備えて、脳卒中前または心臓発作前の状態または信号を検出することができる。
いくつかの実装態様では、このICは、「Convolutional Neural Networks for Human Activity Recognition using Mobile Sensors.」という論文で論じられているチャネルごとの1D畳み込みネットワークに基づいている。いくつかの実装態様では、このネットワークは、最大96Hzの周波数でサンプリングされた3軸加速度計データを入力として受け入れる。いくつかの実装態様では、ネットワークは、「食洗機を開け、その後に閉じる」、「立ち飲みする」、「左手のドアを閉じる」、「ジョギング」、「歩行」、「階段上り」などの活動を提示する、3つの異なる一般利用可能なデータセットで訓練される。いくつかの実装態様では、ネットワークは、12個のフィルタおよび64のカーネルのConv層を有する3つのチャネルごとのConvネットワーク、これらの各々に続くMaxPooling(4)層、ならびにNがクラスの数であるとして、それぞれ1024個およびN個のニューロンの2つの共通の稠密層を含んでいた。いくつかの実装態様では、活動分類は、低い誤差率(例えば、3.12%の誤差)で実行された。
いくつかの実装態様では、ネットワークは、以下のパラメータを用いてT変換される。遅延ブロックは、任意の数の時間ステップによる遅延を生成し得、ニューロン当たりの最大入出力接続=100、10個のニューロンの出力層、および5の信号制限。いくつかの実装態様では、結果として生じるT-ネットワークは、以下の特性、すなわち、10個の層、およそ1,200個のニューロン(例えば、1296個のニューロン)、およびおよそ20,000個の接続(例えば、20,022個の接続)を有していた。
ライブラリを生成するためのモジュールネット構造の例示的な変換
変換されたニューラルネットワークのモジュール構造が、いくつかの実装態様に従って、本明細書に記載される。モジュール型ニューラルネットワークの各モジュールは、1つ以上の訓練されたニューラルネットワーク(の全体または一部)の変換後に取得される。いくつかの実装態様では、1つ以上の訓練されたニューラルネットワークは、部分に細分化されてから、続いて、同等なアナログネットワークに変換される。モジュール構造は、現在使用されているニューラルネットワークのうちのいくつかに典型的であり、ニューラルネットワークのモジュール分割は、ニューラルネットワーク開発の傾向に対応する。各モジュールは、接続されたモジュールの、任意の数の入力、または入力ニューロンから出力ニューロンまでの接続、および後続のモジュールの入力層に接続される任意の数の出力を有することができる。いくつかの実装態様では、各モジュールの製造のためのリソグラフィマスクを含む、予備的な変換されたモジュールのライブラリ(またはシードリスト)が開発される。最終的なチップ設計は、予備的に開発されたモジュールの組み合わせとして(または接続によって)取得される。いくつかの実装態様は、モジュール間でコミュテーションを実行する。いくつかの実装態様では、モジュール内のニューロンおよび接続は、既製モジュール設計テンプレートを使用してチップ設計に変換される。これにより、チップの製造が大幅に簡素化され、対応するモジュールを単に接続することによって成し遂げられる。
いくつかの実装態様は、既成のT変換されたニューラルネットワークおよび/またはT変換されたモジュールのライブラリを生成する。例えば、CNNネットワークの層は、モジュール確立ブロックであり、LSTMチェーンは、別の確立ブロックである、などである。より大きなニューラルネットワークNNはまた、モジュール構造(例えば、LSTMモジュールおよびCNNモジュール)を有する。いくつかの実装態様では、ニューラルネットワークのライブラリは、例示的なプロセスの副産物にとどまらず、独立して販売できる。例えば、サードパーティは、(例えば、ケイデンス回路、ファイル、および/またはリソグラフィマスクを使用して)ライブラリ内のアナログ回路、模式図、または設計から始まるニューラルネットワークを製造することができる。いくつかの実装態様は、典型的なニューラルネットワークのT変換されたニューラルネットワーク(例えば、ケイデンスまたは同様のソフトウェアに変換可能なネットワーク)を生成し、変換されたニューラルネットワーク(または関連付けられた情報)は、サードパーティに販売される。いくつかの例では、サードパーティは、初期ニューラルネットワークの構造および/または目的を開示しないことを選定するが、いくつかの実装に従って、変換ソフトウェア(例えば、叙述したSDK)を使用して、初期ネットワークを台形様ネットワークに変換し、変換されたネットワークを、上述したプロセスのうちの1つを使用して取得された重みの行列とともに、変換されたネットワークを作製するための製造業者に渡す。既製ネットワークのライブラリが本明細書に記載されるプロセスに従って生成される別の例として、対応するリソグラフィマスクが生成され、顧客は、自分のタスクのために利用可能なネットワークアーキテクチャの1つを訓練し、可逆変換(T変換と呼ばれることがある)を実行し、訓練されたニューラルネットワークのためのチップを製造するために、重みを製造業者に提供することができる。
いくつかの実装態様では、モジュール構造概念はまた、マルチチップシステムまたはマルチレベル3Dチップの製造において使用され、3Dチップの各層は、1つのモジュールを表す。3Dチップの場合に接続されたモジュールの入力にモジュールの出力を接続することは、多層3Dチップシステムでは、異なる層のオーム性接触を提供する標準的な相互接続によって行われるであろう。いくつかの実装態様では、特定のモジュールのアナログ出力は、層間相互接続を介して、接続されたモジュールのアナログ入力に接続されている。いくつかの実装態様では、モジュール構造を使用して、同様にマルチチッププロセッサシステムを作る。そのようなマルチチップアセンブリの独特の特徴は、異なるチップ間のアナログ信号データ線である。典型的にはいくつかのアナログ信号を1つのデータ線に圧縮すること、および受信チップにおけるアナログ信号の対応するデコミュテーションのための、アナログコミュテーションスキームは、アナログ回路で開発されたアナログ信号コミュテーションおよびデコミュテーションの標準的なスキームを使用して成し遂げられる。
上述した手法に従って製造されたチップの1つの主な利点は、アナログ信号伝播が、アナログデジタルまたはデジタルアナログ変換を必要とせずに、すべての信号相互接続およびデータ線がアナログ信号を伝送する多層チップまたはマルチチップアセンブリに拡張できることである。このようにして、アナログ信号転送および処理を、3D多層チップまたはマルチチップアセンブリに拡張することができる。
ニューラルネットワークのハードウェア実現のためのライブラリを生成するための例示的な方法
図32A~32Eは、いくつかの実装態様による、ニューラルネットワークのハードウェア実現のためのライブラリを生成する(3202)ための方法3200のフローチャートを示す。方法は、1つ以上のプロセッサ202と、1つ以上のプロセッサ202による実行用に構成された1つ以上のプログラムを記憶するメモリ214と、を有するコンピューティングデバイス200で(例えば、ライブラリ生成モジュール254を使用して)実行される(3204)。
方法は、複数のニューラルネットワークトポロジ(例えば、トポロジ224)を取得すること(3206)を含み、各ニューラルネットワークトポロジは、それぞれのニューラルネットワーク(例えば、ニューラルネットワーク220)に対応する。
方法はまた、(例えば、ニューラルネットワーク変換モジュール226を使用して)各ニューラルネットワークトポロジを、アナログコンポーネントのそれぞれの同等なアナログネットワークに変換すること(3208)を含む。
次に図32Dを参照すると、いくつかの実装態様では、それぞれのネットワークトポロジをそれぞれの同等なアナログネットワークに変換すること(3230)は、以下を含む。(i)それぞれのネットワークトポロジを複数のサブネットワークトポロジに分解すること(3232)。いくつかの実装態様では、それぞれのネットワークトポロジを分解することはそれぞれのネットワークトポロジの1つ以上の層(例えば、LSTM層、全結合層)を複数のサブネットワークトポロジとして識別すること(3234)を含み、(ii)各サブネットワークトポロジをアナログコンポーネントのそれぞれの同等なアナログサブネットワークに変換すること(3236)、および(iii)それぞれの同等なアナログネットワークを取得するように、各同等なアナログサブネットワークを構成すること(3238)。
図32Aを再び参照すると、方法はまた、複数の回路を作製するための複数のリソグラフィマスク(例えば、マスク256)を生成すること(3210)を含み、各回路は、アナログコンポーネントのそれぞれの同等なアナログネットワークを実装する。
次に図32Eを参照すると、いくつかの実装態様では、各回路は、(i)アナログコンポーネントのそれぞれの同等なアナログネットワークの模式図を生成すること(3240)と、(ii)模式図に基づいて(特別なソフトウェア、例えばケイデンスを使用して)それぞれの回路レイアウト設計を生成すること(3242)と、によって取得される。いくつかの実装態様では、方法は、複数の回路を作製するための複数のリソグラフィマスクを生成する前に、1つ以上の回路レイアウト設計を組み合わせること(3244)をさらに含む。
次に図32Bを参照すると、いくつかの実装態様では、方法は、以下を含む。(i)新たなニューラルネットワークトポロジおよび訓練されたニューラルネットワークの重みを取得すること(3212)、(ii)新たなニューラルネットワークトポロジを複数のニューラルネットワークトポロジと比較することに基づいて、複数のリソグラフィマスクから1つ以上のリソグラフィマスクを選択すること(3214)。いくつかの実装態様では、新たなニューラルネットワークトポロジは、複数のサブネットワークトポロジを含み、1つ以上のリソグラフィマスクを選択することは、各サブネットワークトポロジを複数のネットワークトポロジの各ネットワークトポロジと比較すること(3216)にさらに基づいており、(iii)重みに基づいて新たな同等なアナログネットワークの重み行列を計算すること(3218)、(iv)重み行列のための抵抗行列を生成すること(3220)、および(v)抵抗行列および1つ以上のリソグラフィマスクに基づいて新たな同等なアナログネットワークを実装する回路を製造するための新たなリソグラフィマスクを生成すること(3222)。
次に図32Cを参照すると、複数のサブネットワークトポロジの1つ以上のサブネットワークトポロジは、複数のネットワークトポロジの任意のネットワークトポロジと比較すること(3224)に失敗し、方法は、(i)1つ以上のサブネットワークトポロジの各サブネットワークトポロジを、アナログコンポーネントのそれぞれの同等なアナログサブネットワークに変換すること(3226)と、1つ以上の回路を作製するための1つ以上のリソグラフィマスクを生成すること(3228)であって、1つ以上の回路の各回路は、アナログコンポーネントのそれぞれの同等なアナログサブネットワークを実装する、生成することと、をさらに含む。
ニューロモルフィックアナログ集積回路のエネルギー効率を最適化するための例示的な方法
図33A~33Jは、いくつかの実装態様による、アナログニューロモルフィック回路(訓練されたニューラルネットワークをモデル化する)のエネルギー効率を最適化する(3302)ための方法3300のフローチャートを示す。方法は、1つ以上のプロセッサ202と、1つ以上のプロセッサ202による実行用に構成された1つ以上のプログラムを記憶するメモリ214と、を有するコンピューティングデバイス200で(例えば、エネルギー効率最適化モジュール264を使用して)実行される(3204)。
方法は、複数の演算増幅器および複数の抵抗器を含むアナログコンポーネントのアナログネットワーク(例えば、変換されたアナログニューラルネットワーク228)を実装する集積回路(例えば、IC262)を取得すること(3306)を含む。アナログネットワークは、訓練されたニューラルネットワーク(例えば、ニューラルネットワーク220)を表し、各演算増幅器は、それぞれのアナログニューロンを表し、各抵抗器は、それぞれの第1のアナログニューロンとそれぞれの第2のアナログニューロンとの間のそれぞれの接続を表す。
方法はまた、アナログネットワークの1つの層から後続の層に信号を同時に転送することを含む複数の試験入力のために、(例えば、推論モジュール266を使用して)集積回路を使用して推論を生成すること(3308)を含む。いくつかの実装態様では、アナログネットワークは、階層構造を有し、信号は、前の層から次の層に同時に来る。推論プロセス中、信号は、層ごとに回路を通して伝播し、デバイスレベルでのシミュレーション、毎分の時間遅延。
方法はまた、集積回路を使用して推論を生成しながら、複数の演算増幅器の信号出力のレベルが(例えば、信号監視モジュール268を使用して)平衡化されているかどうかを判定すること(3310)を含む。演算増幅器は、入力を受信した後、過渡期間(例えば、過渡信号から定常信号までの1ミリ秒未満継続する期間)を経て、その後、信号のレベルが平衡化され、変化しない。信号出力のレベルが平衡化されているという判定に従い、方法はまた、以下を含む。(i)信号の伝播のために信号形成に影響を与えるアナログネットワークの活性なセットのアナログニューロンを判定すること(3312)。活性なセットのニューロンは、層/複数の層の一部である必要はない。つまり、判定ステップは、アナログネットワークがニューロンの層を含むかどうかにかかわらず機能し、および(ii)所定の期間、活性なセットのアナログニューロンとは相違する、アナログネットワークの1つ以上のアナログニューロンの電力供給を(例えば、電力最適化モジュール270を使用して)オフにすること(3314)。例えば、いくつかの実装態様は、(その瞬間に信号が伝播した)活性な層の後ろの層にあり、かつ活性な層による信号形成に影響を与えない演算増幅器の電力供給を、(例えば、電力最適化モジュール270を使用して)オフに切り替える。このことは、ICを通した信号伝播のRC遅延に基づいて計算できる。そのため、演算中の層(または活性な層)の後ろにあるすべての層は、電力を節約するためにオフに切り替えられる。そのため、チップを通した信号の伝播は、サーフィンのようであり、信号形成の波は、チップを通して伝播し、信号形成に影響を与えていないすべての層がオフに切り替えられる。いくつかの実装態様では、層ごとのネットワークについて、信号は、層から層へと伝播し、方法は、ニューロンの活性なセットに対応する層の前の消費電力を、その層の前での増幅の必要性がないため、減少させることをさらに含む。
次に図33Bを参照すると、いくつかの実装態様では、いくつかの実装態様では、活性なセットのアナログニューロンを判定することは、アナログネットワークを通した信号伝播の遅延を計算すること(3316)に基づく。次に図33Cを参照すると、いくつかの実装態様では、活性なセットのアナログニューロンを判定することは、アナログネットワークを通した信号の伝播を検出すること(3318)に基づく。
次に図33Dを参照すると、いくつかの実装態様では、訓練されたニューラルネットワークは、フィードフォワードニューラルネットワークであり、活性なセットのアナログニューロンは、アナログネットワークの活性な層に属し、電力供給をオフにすることは、アナログネットワークの活性な層の前の1つ以上の層の電力供給をオフにすること(3320)を含む。
次に図33Eを参照すると、いくつかの実装態様では、所定の期間は、(特別なソフトウェア、例えばケイデンスを使用して)信号遅延を考慮して、アナログネットワークを通した信号の伝播をシミュレートすることに基づいて計算される(3322)。
次に図33Fを参照すると、いくつかの実装態様では、訓練されたニューラルネットワークは、回帰型ニューラルネットワーク(RNN)であり(3324)、アナログネットワークは、複数の演算増幅器以外かつ複数の抵抗器以外の1つ以上のアナログコンポーネントをさらに含む。そのような場合、方法は、信号出力のレベルが平衡化されているという判定に従って、1つ以上のアナログコンポーネントについて、所定の期間電力供給を(例えば、電力最適化モジュール270を使用して)オフにすること(3326)をさらに含む。
次に図33Gを参照すると、いくつかの実装態様では、方法は、所定の期間の後、アナログネットワークの1つ以上のアナログニューロンの電力供給を(例えば、電力最適化モジュール270を使用して)オンにすること(3328)をさらに含む。
次に図33Hを参照すると、いくつかの実装態様では、複数の演算増幅器の信号出力のレベルが平衡化されているかどうかを判定することは、アナログネットワークの1つ以上の演算増幅器が所定の閾値信号レベル(例えば、電力、電流、または電圧)を超えて出力しているかどうかを検出すること(3330)に基づく。
次に図33Iを参照すると、いくつかの実装態様では、方法は、推論を生成しながら、所定の期間オフにすることと、所定の期間活性なアナログニューロンのセットをオンにすることと、を(例えば、電力最適化モジュール270によって)繰り返すこと(3332))をさらに含む。
次に図33Jを参照すると、いくつかの実装態様では、方法は、信号出力のレベルが平衡化されているという判定に従って、各推論サイクル(3334)について、(i)第1の時間区間の間に、信号の伝播のために信号形成に影響を与えるアナログネットワークの第1の層のアナログニューロンを決定すること(3336)と、(ii)所定の期間、第1の層の前の、アナログネットワークの第1の1つ以上のアナログニューロンの電力供給を(例えば、電力最適化モジュール270を使用して)オフにすること(3338))、および第1の時間区間に続く第2の時間区間の間に、所定の期間、アナログネットワークの第1の層のアナログニューロンおよび第1の1つ以上のアナログニューロンを含む、第2の1つ以上のアナログニューロンの電力供給を(例えば、電力最適化モジュール270を使用して)オフにすること(3340))と、をさらに含む。
次に図33Kを参照すると、いくつかの実装態様では、1つ以上のアナログニューロンは、アナログネットワークの第1の1つ以上の層のアナログニューロンからなり(3342)、活性なセットのアナログニューロンは、アナログネットワークの第2の層のアナログニューロンからなり、アナログネットワークの第2の層は、第1の1つ以上の層の層とは相違する。
いくつかの実装態様は、結果として生じるハードウェア実装されたニューラルネットワークの層から層への信号伝播を遅延および/または制御するための手段を含む。
MobileNet v.1の例示的な変換
MobileNet v.1の同等なアナログネットワークへの例示的な変換が,いくつかの実装態様に従って、本明細書に記載される。いくつかの実装態様では、単一のアナログニューロンが、生成され、次いで、MobileNetから抵抗器値への重みの変換を有するSPICE模式図に変換される。MobileNet v1アーキテクチャを、図34に示される表に描示する。表において、第1の列3402は、層およびストライドのタイプに対応し、第2の列3404は、対応する層のフィルタ形状に対応し、第3の列3406は、対応する層の入力サイズに対応する。MobileNet v.1では、各畳み込み層に、バッチ正規化層およびReLU6活性化関数(y=最大(0,最小(6,x))が続く。ネットワークは、27個の畳み込み層、1つの稠密層からなり、224×224×3の入力画像に対して約6億回の乗算累積演算を有する。出力値は、ソフトマックス活性化関数の結果であり、値が範囲[0,1]に分布し、合計が1であることを意味する。いくつかの実装態様は、変換の入力としてMobileNet 32x32およびアルファ=1を受け入れる。いくつかの実装態様では、ネットワークは、CIFAR-10タスクのために事前に訓練されている(50,000個の32×32×3画像を10個の非交差クラスに分割する)。バッチ正規化層は、「試験」モードで演算して、層が重み乗数+いくつかの追加のバイアスとして解釈されるように、単純な線形信号変換を生成する。畳み込み層、平均枝刈り層、および稠密層は、いくつかの実装態様に従って、上述した手法を使用して変換される。いくつかの実装態様では、ソフトマックス活性化関数は、変換されたネットワークに実装されず、変換されたネットワーク(または同等なアナログネットワーク)の出力に別個に適用される。
いくつかの実装態様では、結果として生じる変換されたネットワークは、入力層を含む30個の層、およそ104,000個のアナログニューロン、およびおよそ1100万個の接続を含んでいた。変換後、変換されたネットワーク対MobileNet v.1の平均出力絶対誤差(100個を超えるランダムなサンプルで計算された)は、4.9e-8であった。
MobileNetのあらゆる畳み込み層および他の層は、活性化関数ReLU6を有するため、変換されたネットワークの各層による出力信号はまた、値6によって制限される。変換の一部として、重みは、抵抗器公称セットに従ってもたらされる。各公称セットの下では、異なる重み値が可能である。いくつかの実装態様は、[0.1 - 1]メガオームの範囲内で、抵抗器公称セットe24、e48、およびe96を使用する。各層の重み範囲が変動し、かつほとんどの層の重み値が1~2を超えないとすると、より良い重み精度を達成するために、いくつかの実装態様は、R-値およびR+値を減少させる。いくつかの実装態様では、R-値およびR+値は、セット[0.05,0.1,0.2,0.5,1]メガオームから各層に対して別個に選定される。いくつかの実装態様では、各層について、最も良い重み精度を提供する値が選定される。次いで、変換されたネットワーク内のすべての重み(バイアスを含む)は、「量子化」され、すなわち、使用された抵抗器で達成できる最も近い値に設定される。いくつかの実装態様では、このことは、以下に示される表に従って、変換されたネットワーク精度を、対オリジナルのMobileNetで低下させた。表は、いくつかの実装態様に従って、異なる抵抗器セットを使用した場合の、変換ネットワークの平均二乗誤差を示す。
本明細書における本発明の記載で使用される用語は、単に特定の実装態様を記載する目的のためであり、本発明を制限することが意図されない。本発明の説明および添付の特許請求の範囲で使用される場合、単数形「a」、「an」、および「the」は、文脈が明示的に別様に示さない限り、複数形も含むことが意図される。本明細書で使用される場合、「および/または」という用語は、関連する列挙された項目のうちの1つ以上の任意のおよびすべての可能な組み合わせを指し、包含することも理解されよう。本明細書で使用されるとき、「含む(comprises)」および/または「含む(comprising)」という用語は、記載された特徴、ステップ、動作、要素、および/またはコンポーネントの存在を指定するが、1つ以上の他の特徴、ステップ、動作、要素、コンポーネント、および/またはそのグループの存在もしくは追加を排除しないことがさらに理解されるであろう。
前述の説明は、説明の目的のために、特定の実装態様を参照して記載されてきた。しかしながら、上記の例示的な議論は、網羅的であること、または本発明を開示された正確な形態に限定することが意図されない。上記の教示を考慮して、多くの修正および変形が可能である。実装態様は、本発明の原理およびその実際の用途を最もよく説明するために選定され、記載され、それにより、当業者は、本発明および企図される特定の用途に適した様々な修正を伴う様々な実装態様を最適に利用することができる。