(57)【要約】電子デバイスは、活性化関数を実行する活性化関数機能ブロックを有する。動作中、活性化関数機能ブロックは、数値を表す複数のビットを含む入力を受信する。次に、活性化関数機能ブロックは、各範囲が入力の可能な数値の別々の部分を含む複数の範囲の中から、当該入力が含まれる範囲を決定する。次に、活性化関数機能ブロックは、範囲に関連する線形関数の結果を生成する。結果を生成することは、複数の範囲の各範囲に関連する個別の線形関数を使用して、その範囲内の活性化関数の結果を近似することを含む。【選択図】図１
2021506020.tif 000002
【特許請求の範囲】
【請求項１】
特定の活性化関数を実行する活性化関数機能ブロックを備える電子デバイスであって、
前記活性化関数機能ブロックは、
数値を表す複数のビットを有する入力を受信することと、
各範囲が前記入力の可能な数値の別々の部分を含む複数の範囲の中から、前記入力が含まれる範囲を決定することと、
前記範囲に関連する線形関数の結果を生成することと、
を実行するように構成されている、
電子デバイス。
【請求項２】
前記活性化関数機能ブロックは、前記入力からの前記複数のビットのサブセットのみに基づいて、前記範囲を決定するように構成されており、
前記複数のビットのサブセットは、
前記入力の符号ビットと、
前記入力の整数部分の一部又は全てと、
のうち少なくとも１つを含む、
請求項１の電子デバイス。
【請求項３】
前記結果を生成することは、前記複数の範囲の各範囲に関連する個別の線形関数を使用して、当該範囲内の前記特定の活性化関数の結果を近似することを含む、
請求項１の電子デバイス。
【請求項４】
前記特定の活性化関数は、整流線形ユニット関数であり、
第１線形関数は、負の値を含む入力値の第１範囲に関連しており、前記第１線形関数は、前記第１範囲内の入力値に対して定数結果０を生成し、
第２線形関数は、０及び正の値を含む入力値の第２範囲に関連しており、前記第２線形関数は、前記第２範囲内の対応する入力値に等しい結果を生成する、
請求項３の電子デバイス。
【請求項５】
前記特定の活性化関数は、漏洩整流線形ユニット関数であり、
第１線形関数は、負の値を含む入力値の第１範囲に関連しており、前記第１線形関数は、所定量だけシフトされた、第２範囲内の対応する入力値に等しい結果を生成し、
第２線形関数は、０及び正の値を含む入力値の前記第２範囲に関連しており、前記第２線形関数は、前記第２範囲内の対応する入力値に等しい結果を生成する、
請求項３の電子デバイス。
【請求項６】
前記活性化関数機能ブロックは、
前記活性化関数機能ブロックの外部のソースから、前記第２範囲内の入力値がシフトされた前記所定量の指標を受信するように構成されている、
請求項５の電子デバイス。
【請求項７】
前記特定の活性化関数は、指数線形ユニット関数であり、
第１線形関数は、負の値を含む入力値の第１範囲に関連しており、前記第１線形関数は、前記第１範囲内の入力値に対して定数結果−α（αは数値）を生成し、
第２線形関数は、０及び正の値を含む入力値の第２範囲に関連しており、前記第２線形関数は、前記第２範囲内の対応する入力値に等しい結果を生成する、
請求項３の電子デバイス。
【請求項８】
前記特定の活性化関数は、指数線形ユニット関数であり、
第１線形関数は、−１未満の負の値を含む入力値の第１範囲に関連しており、前記第１線形関数は、前記第１範囲内の入力値に対して定数結果−α（αは数値）を生成し、
第２線形関数は、−１以上０未満の負の値を含む入力値の第２範囲に関連しており、前記第２線形関数は、前記第２範囲内の対応する入力値の２倍に等しい結果を生成し、
第３線形関数は、０及び正の値を含む入力値の第３範囲に関連しており、前記第３線形関数は、前記第３範囲内の対応する入力値に等しい結果を生成する、
請求項３の電子デバイス。
【請求項９】
前記特定の活性化関数は、双曲線正接関数であり、
第１線形関数は、−１未満の負の値を含む入力値の第１範囲に関連しており、前記第１線形関数は、前記第１範囲内の入力値に対して定数結果−１を生成し、
第２線形関数は、−１以上１以下の値を含む入力値の第２範囲に関連しており、前記第２線形関数は、前記第２範囲内の対応する入力値に等しい結果を生成し、
第３線形関数は、１よりも大きい正の値を含む入力値の第３範囲に関連しており、前記第３線形関数は、前記第３範囲内の入力値に対して定数結果１を生成する、
請求項３の電子デバイス。
【請求項１０】
前記活性化関数機能ブロックは、前記受信することと、前記決定することと、前記生成することと、を行うように構成された専用ハードウェア回路要素を含む、
請求項１の電子デバイス。
【請求項１１】
活性化関数の結果を生成する方法であって、
活性化関数機能ブロック内のハードウェア回路によって、
数値を表す複数のビットを有する入力を受信することと、
各範囲が前記入力の可能な数値の別々の部分を含む複数の範囲の中から、前記入力が含まれる範囲を決定することと、
前記範囲に関連する線形関数の結果を生成することと、を含む、
方法。
【請求項１２】
前記入力からの前記複数のビットのサブセットのみに基づいて、前記範囲を決定することを含み、
前記複数のビットのサブセットは、
前記入力の符号ビットと、
前記入力の整数部分の一部又は全てと、
のうち少なくとも１つを含む、
請求項１１の方法。
【請求項１３】
前記結果を生成することは、前記複数の範囲の各範囲に関連する個別の線形関数を使用して、当該範囲内の前記特定の活性化関数の結果を近似することを含む、
請求項１１の方法。
【請求項１４】
前記特定の活性化関数は、整流線形ユニット関数であり、
第１線形関数は、負の値を含む入力値の第１範囲に関連しており、前記第１線形関数は、前記第１範囲内の入力値に対して定数結果０を生成し、
第２線形関数は、０及び正の値を含む入力値の第２範囲に関連しており、前記第２線形関数は、前記第２範囲内の対応する入力値に等しい結果を生成する、
請求項１３の方法。
【請求項１５】
前記特定の活性化関数は、漏洩整流線形ユニット関数であり、
第１線形関数は、負の値を含む入力値の第１範囲に関連しており、前記第１線形関数は、所定量だけシフトされた、第２範囲内の対応する入力値に等しい結果を生成し、
第２線形関数は、０及び正の値を含む入力値の前記第２範囲に関連しており、前記第２線形関数は、前記第２範囲内の対応する入力値に等しい結果を生成する、
請求項１３の方法。
【請求項１６】
前記活性化関数機能ブロックは、
前記活性化関数機能ブロックの外部のソースから、前記第２範囲内の入力値がシフトされた前記所定量の指標を受信するように構成されている、
請求項１５の方法。
【請求項１７】
前記特定の活性化関数は、指数線形ユニット関数であり、
第１線形関数は、負の値を含む入力値の第１範囲に関連しており、前記第１線形関数は、前記第１範囲内の入力値に対して定数結果−α（αは数値）を生成し、
第２線形関数は、０及び正の値を含む入力値の第２範囲に関連しており、前記第２線形関数は、前記第２範囲内の対応する入力値に等しい結果を生成する、
請求項１３の方法。
【請求項１８】
前記特定の活性化関数は、指数線形ユニット関数であり、
第１線形関数は、−１未満の負の値を含む入力値の第１範囲に関連しており、前記第１線形関数は、前記第１範囲内の入力値に対して定数結果−α（αは数値）を生成し、
第２線形関数は、−１以上０未満の負の値を含む入力値の第２範囲に関連しており、前記第２線形関数は、前記第２範囲内の対応する入力値の２倍に等しい結果を生成し、
第３線形関数は、０及び正の値を含む入力値の第３範囲に関連しており、前記第３線形関数は、前記第３範囲内の対応する入力値に等しい結果を生成する、
請求項１３の方法。
【請求項１９】
前記特定の活性化関数は、双曲線正接関数であり、
第１線形関数は、−１未満の負の値を含む入力値の第１範囲に関連しており、前記第１線形関数は、前記第１範囲内の入力値に対して定数結果−１を生成し、
第２線形関数は、−１以上１以下の値を含む入力値の第２範囲に関連しており、前記第２線形関数は、前記第２範囲内の対応する入力値に等しい結果を生成し、
第３線形関数は、１よりも大きい正の値を含む入力値の第３範囲に関連しており、前記第３線形関数は、前記第３範囲内の入力値に対して定数結果１を生成する、
請求項１３の方法。
【発明の詳細な説明】
【背景技術】
【０００１】
（関連技術）
いくつかの電子デバイスは、ニューラルネットワーク（又は「人工ニューラルネットワーク」）を使用して、対応する計算動作を実行する。一般に、ニューラルネットワークは、生物の脳のニューラルネットワーク等のように、動作を実行するように「学習」又はトレーニングすることができる、生物のニューラルネットワークに類似する内部要素を含むシステムである。ニューラルネットワークは、既知の情報を使用して動作を実行するようにトレーニングされ、ニューラルネットワークの内部要素をトレーニング及び設定して、ニューラルネットワークが未知の情報に対して動作を実行することができるようになる。例えば、ニューラルネットワークは、顔の画像を含むことが分かっているデジタル画像を使用して、デジタル画像が顔の画像を含むか否かを認識するようにトレーニングされ、後で未知のデジタル画像を分析する場合に、ニューラルネットワークの内部構造が適切に反応するように、すなわち、デジタル画像が顔の画像を含むことを識別するように、トレーニングされ得る。
【０００２】
ニューラルネットワークは、生物の脳内でシナプスを介してニューロンが相互接続されているのと同じような構成で相互接続された人工的なニューロン、すなわち「ノード」の集合を含む。ニューラルネットワークは、入力ノード、中間ノード及び出力ノードを有し、出力ノード以外の各ノードが、関連する重みを有する有向エッジを介して１つ以上の他のノード（すなわち「下流」ノード）に接続された、有向及び重み付きグラフ構造の形態として視覚化することができる。本明細書で使用される「有向エッジ」は、少なくとも２つのノード間の論理的又は実際の相互接続であり、これを介して、例えば上流ノードから下流ノードへ等のように特定の方向に情報が移動する。入力ノードは、ニューラルネットワークの外部のソースから入力を受信し、受信した入力を処理して入力値（例えば、数値）を生成する。次に、入力値は、入力ノードから下流の中間ノードに転送され、場合によっては、対応する有向エッジの重みに応じて途中で重み付けされる（すなわち、重み付け値で乗算されたり、重み付け値と加算されたり等することによって調整される）。各中間ノード内で、受信した値が合計され、中間ノードに対応付けられた活性化関数を使用して処理され、中間ノードの結果値が生成される。次に、結果値は、中間ノードから下流の中間ノード又は出力ノードに転送され、場合によっては、対応する有向エッジの重みに応じて途中で重み付けされる。ニューラルネットワークは、多くの場合、いくつかの（多数であり得る）中間ノードの層を含み、中間ノードの各層は、入力値を受信し、生成した結果を別の層の中間ノード又は出力ノードに転送する。重み付けされた結果値が最終的に中間ノードの最後の層から出力ノードに転送されると、出力ノードは、結果値を処理してニューラルネットワークの出力を生成する。上述した画像処理の例を続けると、出力ノードからの出力は、対象のデジタル画像が顔の画像を含むか否かを示す形態である。
【０００３】
上述したように、ニューラルネットワーク内のノード間の対応するエッジに沿って転送される値に重みが適用され、中間ノードは、各々の活性化関数を使用して受信値の合計を処理する。ニューラルネットワークが所望の出力を生成するように、エッジに関連する重みを調整／設定することによって、ニューラルネットワークを、例えばデジタル画像内の顔を適切に識別する等の意図した結果を生成するようにトレーニングすることができる。
【０００４】
電子デバイスは、ニューラルネットワークを使用することで、他の技術を使用した場合よりも簡単に特定の動作を実行することができる。しかし、ニューラルネットワークは、特に、ニューラルネットワーク内の層の数が増えるとコンピュータ負荷が大きくなり、結果を生成するのに時間がかかる可能性がある。例えば、既存のソフトウェア技術を使用して活性化関数を実行することは、複数のサブ動作を実行する／実行する必要があり得る。対応する数の中間ノードに対して数十又は数百の活性化関数を実行する必要がある場合、サブ動作の数が非常に多く、処理するのにかなりの時間を要することがある。
【図面の簡単な説明】
【０００５】
【図１】いくつかの実施形態による、電子デバイスを示すブロック図である。
【図２】いくつかの実施形態による、整流線形ユニット（ＲｅＬＵ）活性化関数の結果のグラフと、ＲｅＬＵ活性化関数の近似のハードウェア回路実装と、を示す図である。
【図３】いくつかの実施形態による、漏洩ＲｅＬＵ活性化関数の結果のグラフと、漏洩ＲｅＬＵ活性化関数の近似のハードウェア回路実装と、を示す図である。
【図４】いくつかの実施形態による、指数線形ユニット（ＥＬＵ）活性化関数の結果のグラフと、ＥＬＵ活性化関数の近似と、ＥＬＵ活性化関数の近似のハードウェア回路実装と、を示す図である。
【図５】いくつかの実施形態による、ＥＬＵ活性化関数の結果のグラフと、ＥＬＵ活性化関数の近似と、ＥＬＵ活性化関数の近似のハードウェア回路実装と、を示す図である。
【図６】いくつかの実施形態による、活性化関数の結果を生成するプロセスを示すフローチャートである。
【発明を実施するための形態】
【０００６】
図面及び説明を通じて、同じ符号は同じ図の要素を指す。
【０００７】
以下の説明は、当業者が、説明する実施形態を製造及び使用することを可能にするために提示され、特定のアプリケーション及びその要件に照らして提供される。説明する実施形態に対する様々な変更は、当業者には容易に明らかであり、本明細書で定義された一般原理は、他の実施形態及び用途に適用されてもよい。従って、説明する実施形態は、示された実施形態に限定されず、本明細書で開示された原理及び特徴と一致する最も広い範囲が与えられるべきである。
【０００８】
（概要）
説明する実施形態は、処理動作を実行する処理回路を有する電子デバイスを含む。処理回路は、ニューラルネットワーク及び他の処理動作に使用されるような活性化関数を実施する専用ハードウェア回路を有する活性化関数機能ブロックを含む。言い換えると、活性化関数機能ブロックは、受信した入力に基づいて活性化関数の結果を生成する特定目的向け回路要素を含む。説明する実施形態では、活性化関数機能ブロック内のハードウェア回路は、対応する線形関数に基づいて、２つ以上の数値範囲に亘って活性化関数の結果を近似するように構成されている。従って、ハードウェア回路は、複数の別個の数値範囲の各々について、その範囲内の入力が与えられると、その範囲に関連する線形関数の結果を生成するように構成されており、当該結果は、その範囲における活性化関数の結果の近似である。
【０００９】
ハードウェア回路に実装される活性化関数は、線形関数を使用して結果を近似することができる任意の活性化関数を含むことができる。例えば、整流線形ユニット（ＲｅＬＵ）活性化関数を、ハードウェア回路に実装することができる（他の活性化関数については以下に詳細に説明する）。ＲｅＬＵ活性化関数の場合、上述した範囲は、ＲｅＬＵ活性化関数が同様のタイプの結果を返す範囲に対応する２つの範囲を含む。より具体的には、２つの範囲は、０及び全ての正の入力値の第１範囲と、負の入力値を含む第２範囲と、を含む。第１範囲では、ハードウェア回路は、入力値に等しい結果（線形関数ｙ＝ｘ）を生成し、第２範囲では、ハードウェア回路は、定数線形関数ｙ＝０の結果０を生成する。従って、ハードウェア回路は、入力が３の場合には結果３を生成し、入力が−２の場合には結果０を生成する。
【００１０】
説明する実施形態では、ハードウェア回路は、所定の入力の適切な範囲に関連する結果をハードウェア回路に生成させる回路要素を含む。言い換えると、回路要素は、所定の入力値が含まれる範囲を決定し、ハードウェア回路にその範囲の結果を生成させる役割がある。いくつかの実施形態では、回路要素は、入力内のビットのサブセット（すなわち、入力の全てのビットよりも少ないビットを含む入力のビットの何らかの組み合わせ）のみに基づいて、範囲を決定する。例えば、ハードウェア回路は、入力からの符号ビットのみを使用して、入力値が負の数であるか正の数であるかを決定してもよい（簡潔にするために、この説明では０は正であると仮定する）。別の例として、符号ビットと、数値を表す整数及び端数部分を有する入力の整数部分の一部又は全てと、を使用して、入力値が−１〜１であるかどうかを決定することができる。
【００１１】
活性化関数をハードウェアに実装することによって、説明する実施形態は、既存の技術、特に汎用処理回路を使用して活性化関数の結果を計算する技術と比べて、活性化関数を評価する速度が大幅に改善される。線形関数を使用して、入力値の対応する範囲における活性化関数の結果を近似することによって、ハードウェア回路がより簡潔なものになる。ビットのサブセットのみを使用して適切な範囲を特定することによって、ハードウェア回路は、より複雑な比較演算を実行する代わりに、少数のビットを処理するだけでよい。要するに、本明細書で説明するハードウェア回路を使用して活性化関数を実行することによって、ニューラルネットワーク処理及び他の動作等の活性化関数に依存する動作を、より高速に、より少ない電力で、処理回路のより少ない領域及びより低い複雑さで実行することができ、これにより、処理回路及び処理回路を使用する電子デバイスの設計、製造及び動作が改善される。
【００１２】
（電子デバイス）
図１は、いくつかの実施形態による、電子デバイス１００を示すブロック図である。図１に示すように、電子デバイス１００は、処理回路１０２を含む。処理回路１０２は、処理動作を実行するように構成された１つ以上の電子回路（例えば集積回路、ディスクリート回路要素等）を含み、例えば、マイクロプロセッサ内のプロセッサコア又は処理パイプライン、汎用グラフィックス処理装置（ＧＰＧＰＵ）内の計算ユニット、特定用途向け集積回路（ＡＳＩＣ）内の処理回路等が挙げられる。通常、処理回路１０２は、ハードウェアで、すなわち、様々な回路要素及びデバイスを使用して実装される。例えば、サブシステムのいくつか又は全てを１つ以上の半導体チップ上で完全に製造することができ、ディスクリート回路要素と組み合わせて半導体チップから生成することができ、ディスクリート回路要素のみから製造すること等ができる。
【００１３】
処理回路１０２は、活性化関数機能ブロック１０４を含む。活性化関数機能ブロック１０４は、活性化関数を評価する動作を行う機能ブロックである。言い換えると、活性化関数機能ブロック１０４は、入力値に基づいて活性化関数の結果を生成する集積回路及び／又はディスクリート回路要素等のハードウェア回路を含む。整流線形ユニット（ＲｅＬＵ）、漏洩ＲｅＬＵ等のように活性化関数機能ブロック１０４で実行され得る活性化関数は、以下により詳細に説明する。
【００１４】
いくつかの実施形態では、ニューラルネットワークの動作を実行するために、処理回路１０２及び活性化関数機能ブロック１０４が少なくとも部分的に使用される。これらの実施形態では、処理回路１０２内の汎用処理回路又は専用処理回路は、ニューラルネットワーク内のノードに関して命令又は他の処理動作を実行する。これらの動作は、様々なノードの処理動作と、結果値の重み付け及び／又は合計と、ニューラルネットワークを介した情報／値フローの処理と、を含む。さらに、活性化関数機能ブロック１０４は、中間ノードの活性化関数の結果値を生成するために本明細書で説明する動作を実行する。言い換えると、所定のニューラルネットワークの動作のうちいくつかは処理回路１０２によって実行されるが、特定の活性化関数の評価に関しては、処理回路１０２は、活性化関数機能ブロック１０４に依存する。例えば、いくつかの実施形態では、処理回路１０２は、ニューラルネットワークの様々なプログラムコード命令（すなわち、ニューラルネットワークを実施するプログラムコード命令）が実行される実行パイプラインを含み、活性化関数機能ブロック１０４内の特定目的向け回路は、パイプライン内で使用され、対応する活性化関数の結果を生成する。これらの実施形態のうちいくつかでは、活性化関数機能ブロック１０４は、演算論理ユニット（ＡＬＵ）、整数又は浮動小数点実行ユニット等のパイプラインの実行ステージに含まれる。別の例として、いくつかの実施形態では、処理回路１０２は、ニューラルネットワークの様々なプログラムコード命令が実行されるＧＰＧＰＵ計算ユニットを含み、活性化関数機能ブロック１０４内の特定目的向け回路は、計算ユニット内で使用され又は計算ユニットによって使用され、対応する活性化関数の結果を生成する。
【００１５】
本明細書では、ニューラルネットワークの例を使用して活性化関数機能ブロック１０４の動作を説明するが、いくつかの実施形態では、処理回路１０２及び／又は活性化関数機能ブロック１０４は、ニューラルネットワーク以外の計算動作を実行するために使用される。一般に、所定の計算動作に有用な結果を生成するために活性化関数を使用できる場合にはいつでも、結果を生成するために、処理回路１０２によって活性化関数機能ブロック１０４を使用することができる。
【００１６】
電子デバイス１００は、例示目的のために簡略化されているが、いくつかの実施形態では、電子デバイス１００は、追加の若しくは異なるサブシステム、機能ブロック、要素、及び／又は、通信経路を含む。例えば、電子デバイス１００は、ディスプレイサブシステム、電力サブシステム、Ｉ／Ｏサブシステム等を含むことができる。一般に、電子デバイス１００は、本明細書で説明する動作を実行するのに十分なサブシステムを含む。
【００１７】
電子デバイス１００は、計算動作を実行する任意のデバイスであってもよいし、このような任意のデバイスに含まれてもよい。例えば、電子デバイス１００は、デスクトップコンピュータ、ラップトップコンピュータ、ウェアラブルコンピューティングデバイス、タブレットコンピュータ、仮想現実又は拡張現実装置、スマートフォン、人工知能（ＡＩ）デバイス、サーバ、ネットワーク機器、玩具、ＡＶ機器、家電機器、車両等、及び／又は、これらの組み合わせであってもよいし、これらに含まれてもよい。
【００１８】
（整流線形ユニット活性化関数）
いくつかの実施形態では、活性化関数機能ブロック１０４は、整流線形ユニット（ＲｅＬＵ）活性化関数を実行する回路要素を含む。図２は、いくつかの実施形態による、ＲｅＬＵ活性化関数の結果のグラフと、ＲｅＬＵ活性化関数の近似のハードウェア回路実装と、を示す図である。図２に示すハードウェア回路は、いくつかの実施形態のハードウェア回路の一般的な例として示されていることに留意されたい。別の実施形態のハードウェア回路は、異なる回路要素及び／又は回路要素の構成を含む。例えば、マルチプレクサ（ＭＵＸ）を使用する代わりに、いくつかの実施形態は、ＡＮＤゲート、ＸＯＲゲート、トランスミッションゲート、動的ロジック、及び／又は、複合／カスタムロジック等のロジックゲートを使用する。
【００１９】
図２に示す実施形態及び図３〜図５の実施形態の場合、入力（すなわち、図２の入力２００、図３の入力３００等）は、ビット［０］が符号ビットであり、ビット［１］〜［Ｎ］が数値を表すフォーマットを想定している。別の実施形態では、符号ビットが異なる位置（例えばビット［Ｎ］）に存在するフォーマット等の他の数値フォーマットが使用される。入力のタイプに応じて、ビット［１］〜［Ｎ］は、単純な数値（例えば整数）、仮数（mantissa/significand）及び指数情報（例えば浮動小数点値）等を含んでもよいし、これらとして解釈されてもよい。図２〜図５の楕円で示すように、入力は、例えば６４、２５０等の任意の数のビットを有することができ、ハードウェア回路の対応する構成は、入力２００の処理／結果２０２の生成に使用される。
【００２０】
図２のＲｅＬＵ活性化関数の結果のグラフに示すように、関数は、σ（x）として、０未満の全ての入力値ｘに対して、すなわち、ｘの全ての負の値を含む第１範囲に対して、結果０を返し、０以上の全ての入力値ｘに対して、すなわち、ｘの全ての正の値を含む第２範囲に対して、結果ｘを返す（この説明を通して、０はｘの正の値であると仮定している）。活性化関数機能ブロック１０４内のハードウェア回路は、負の入力値ｘの第１範囲に対して０を生成し、正の入力値ｘの第２範囲に対してｘの値を生成することによって、ＲｅＬＵの入力／結果動作を近似するように構成されている。
【００２１】
例えば図２〜図３等の本明細書のいくつかの例の「近似」は、厳密には「近似した」活性化関数の値であるが、例えば、少なくともいくつかの実際の近似を含む図４〜図５等の別の例との一貫性を単に保つために、近似として説明することに留意されたい。言い換えると、図２〜図３のハードウェア回路によるＲｅＬＵの近似は正確であるが、別の例のハードウェア回路は、正確さが劣る。特に、ニューラルネットワークのトレーニング可能な性質を考慮すると、すなわち、ニューラルネットワークの有向エッジの重みが、近似における全ての軽微な不正確さに対応するようにトレーニング中に調整され得るという事実を考慮すると、別の例の近似は、機能的には正確であり十分であることに留意されたい。また、図４〜図５では近似のグラフが示されているが、図２〜図３の近似は結果と同じように見えるので、図２〜図３では結果のグラフのみが示されている。
【００２２】
ハードウェア回路に示すように、符号ビット、すなわち、入力２００のビット［０］は、一連のマルチプレクサ（ＭＵＸ）の選択入力に転送される。各マルチプレクサは、入力２００の異なる単一ビットを１つの入力とし、定数０を別の入力とする。例えば、第１（図２の左端）マルチプレクサは、入力２００のビット［１］を１つの入力とし、定数０を他の入力とする。入力２００の数値が負である場合、符号ビットは１であり（本明細書の例では１と想定する）、これにより、選択入力を介して、各マルチプレクサは、定数０を、結果２０２の各ビットに転送する。入力２００の数値が正である場合、符号ビットは０であり、これにより、選択入力を介して、各マルチプレクサは、入力２００の対応する単一ビットの値を、結果２０２の各ビットに転送する。さらに、結果の第１／左端のビットは、定数値０に設定される。説明したように動作することによって、ＲｅＬＵの動作はハードウェア回路により近似され、符号ビットは、ハードウェア回路によって生成された結果２０２を選択するように、すなわち、ＲｅＬＵ活性化関数の２つの可能な範囲の中から入力２００が含まれる範囲を「決定」するように機能する。
【００２３】
（漏洩整流線形ユニット活性化関数）
いくつかの実施形態では、活性化関数機能ブロック１０４は、漏洩整流線形ユニット（漏洩ＲｅＬＵ）活性化関数を実行する回路要素を含む。図３は、いくつかの実施形態による、漏洩ＲｅＬＵ活性化関数の結果のグラフと、漏洩ＲｅＬＵ活性化関数の近似のハードウェア回路実装と、を示す図である。図３に示すハードウェア回路は、いくつかの実施形態のハードウェア回路の一般的な例として示されていることに留意されたい。別の実施形態のハードウェア回路は、異なる回路要素及び／又は回路要素の構成を含む。例えば、マルチプレクサ（ＭＵＸ）を使用する代わりに、いくつかの実施形態は、ＡＮＤゲート、ＸＯＲゲート、トランスミッションゲート、動的ロジック、及び／又は、複合／カスタムロジック等のロジックゲートを使用する。
【００２４】
図３の漏洩ＲｅＬＵ活性化関数の結果のグラフに示すように、関数は、σ（x）として、０未満の全ての入力値ｘに対して、すなわち、ｘの全ての負の値を含む第１範囲に対して、ｘの小数値（例えばｘ／１６）の結果を返し、０以上の全ての入力値ｘに対して、すなわち、ｘの全ての正の値を含む第２範囲に対して、結果ｘを返す。活性化関数機能ブロック１０４内のハードウェア回路は、負の入力値ｘの第１範囲に対してｘの小数値を生成し、正の入力値ｘの第２範囲に対してｘの値を生成することによって、漏洩ＲｅＬＵの入力／結果動作に近似するように構成されている。
【００２５】
図３の例では、入力の上記の「小数」値であるシフトされたバージョンの入力３００が、マルチプレクサの入力として使用するために生成される。例えば、入力３００の負の値を考慮するための対応する調整で、入力３００を４ビット位置だけシフトさせ、入力３００を実質的に１６で除算することができる。シフト演算後の個々のビットの値は、図３において、個別のビット毎に「＞＞」で表されたボックスを用いて示されている。図３には特定のシフト回路要素が示されていないが、いくつかの実施形態では、シフト演算が、このようなシフト回路要素において、グループとして入力３００の全てのビットに対して行われ、シフトされたビットは、示されるようにマルチプレクサに転送される。
【００２６】
ハードウェア回路に示すように、符号ビット、すなわち、入力３００のビット［０］は、一連のマルチプレクサ（ＭＵＸ）の選択入力に転送される。各マルチプレクサは、入力３００の異なる単一ビットを１つの入力とし、シフト演算が行われた後の入力３００の単一ビットの値を他の入力とする。例えば、第１（図３の左端）マルチプレクサは、入力３００のビット［１］を１つの入力とし、シフト演算後の入力３００のビット［１］を他の入力とする。入力３００の数値が負である場合、符号ビットは１であり、これにより、選択入力を介して、各マルチプレクサは、シフト演算が行われた後の入力３００の単一ビットの値を、結果３０２の各ビットに転送する。入力３００の数値が正である場合、符号ビットは０であり、これにより、選択入力を介して、各マルチプレクサは、入力３００の対応する単一ビットの値を、結果３０２の各ビットに転送する。さらに、結果の第１／左端のビットは、定数値０に設定される。説明したように動作することによって、漏洩ＲｅＬＵの動作はハードウェア回路によって近似され、符号ビットは、ハードウェア回路によって生成された結果３０２を選択するように、すなわち、漏洩ＲｅＬＵ活性化関数の２つの可能な範囲の中から入力３００が含まれる範囲を「決定」するように機能する。
【００２７】
いくつかの実施形態では、入力の小数値を、動作中に、すなわち、活性化関数機能ブロック１０４が起動動作中及び起動動作後に動作している間に調整することができる。例えば、活性化関数機能ブロック１０４は、小数値ｘ／１６を使用して動作してもよいが、小数値ｘ／８又はｘ／３２を使用するように調整されてもよい。これらの実施形態では、対応する小数値を生成するために、例えばｘ／８には３ビット位置のシフト、ｘ／３２には５ビット位置のシフト等のように、入力値に対して異なる量のシフトを実行するように、上述したシフト演算が調整されてもよい。いくつかの実施形態では、シフト量を、電子デバイス１００上で実行されているソフトウェアアプリケーション若しくはオペレーティングシステム、プログラマ、ユーザ又はシステム管理者等の外部ソースによって、活性化関数機能ブロック１０４に提供することができる。例えば、値を、レジスタ、フラグ又はメモリ位置に書き込むことができ、この値は、シフト量、ひいてはｘの小数値を決定するためにシフト回路要素によって使用される。
【００２８】
（指数線形ユニット活性化関数‐第１実施形態）
いくつかの実施形態では、活性化関数機能ブロック１０４は、指数線形ユニット（ＥＬＵ）活性化関数を実施する回路要素を含む。図４は、いくつかの実施形態による、ＥＬＵ活性化関数の結果のグラフと、ＥＬＵ活性化関数の近似と、よるＥＬＵ活性化関数の近似のハードウェア回路実装と、を示す図である。図４に示すハードウェア回路は、いくつかの実施形態のハードウェア回路の一般的な例として示されていることに留意されたい。別の実施形態のハードウェア回路は、異なる回路要素及び／又は回路要素の構成を含む。例えば、マルチプレクサ（ＭＵＸ）を使用する代わりに、いくつかの実施形態は、ＡＮＤゲート、ＸＯＲゲート、トランスミッションゲート、動的ロジック、及び／又は、複合／カスタムロジック等のロジックゲートを使用する。
【００２９】
図４のＥＬＵ活性化関数の結果のグラフに示すように、関数は、ｆ（α、x）として、０から始まり負の値の下方に向かって、すなわち、ｘの全ての負の値を含む第１範囲に対して、指数関数的に−αに近づくα（ｅｘ−１）の結果を返し、０以上の全ての入力値ｘに対して、すなわち、ｘの全ての正の値を含む第２範囲に対して、結果ｘを返す。図４のＥＬＵ活性化関数の近似のグラフに示すように、正の値の第２範囲において、近似は、ｆ（α、ｘ）として、各入力値ｘに対してｘの値を返す。しかし、負の値の第１範囲では、近似は、指数曲線を無視し、全ての入力値に対して定数値−αを返す。活性化関数機能ブロック１０４内のハードウェア回路は、負の入力値ｘの第１範囲に対し−αを生成し、正の入力値ｘの第２範囲に対してｘの値を生成することによって、右端のグラフに示すように、ＥＬＵ活性化関数の入力／結果動作に近似するように構成されている。
【００３０】
図４に示すように、ＥＬＵ活性化関数の結果の近似は、少なくともいくつかの負の値について不正確であり、誤っており、これは、−１〜０のＥＬＵ活性化関数の結果曲線の初期の部分において特に顕著である。不正確ではあるが、特にニュートラルネットワークのトレーニング可能な性質を考えると、近似は機能的には正確で十分である。言い換えると、ＥＬＵ活性化関数の結果と近似との間の僅かな差は、ニューラルネットワークのトレーニング中に、αへの調整、及び／又は、対応する有向エッジの重みへの調整を用いて補正することができる。説明したように指数関数の正確な結果を計算する必要性を回避することによって、これらの実施形態では、ＥＬＵ活性化関数を（回路の複雑さ及び領域、時間、電力消費量等の点で）評価するのに要する労力を大幅に低減する。
【００３１】
ハードウェア回路に示すように、符号ビット、すなわち、入力４００のビット［０］は、複数のマルチプレクサ（ＭＵＸ）の選択入力に転送される。各マルチプレクサは、入力４００の異なる単一ビットを１つの入力とし、定数−αの対応するビットを他の入力とする。例えば、第１（図４の左端）マルチプレクサは、入力４００のビット［１］を１つの入力とし、定数−αの対応するビットを他の入力とする。入力４００の数値が負である場合、符号ビットは１であり、これにより、選択入力を介して、各マルチプレクサは、定数−αを結果４０２の各ビットに転送する。入力４００の数値が正である場合、符号ビットは０であり、これにより、選択入力を介して、各マルチプレクサは、入力４００の対応する単一ビットの値を、結果４０２の各ビットに転送する。さらに、結果の第１／左端のビットは、入力４００の符号ビットと等しく設定される。説明したように動作することによって、ＥＬＵの動作がハードウェア回路によって近似され、符号ビットは、ハードウェア回路によって生成された結果４０２を選択するように、すなわち、ＥＬＵ活性化関数の２つの可能な範囲の中から入力４００が含まれる範囲を「決定」するように機能する。
【００３２】
（指数線形ユニット活性化関数‐第２実施形態）
上述したように、いくつかの実施形態では、活性化関数機能ブロック１０４は、ＥＬＵ活性化関数を実行する回路要素を含む。図５は、いくつかの実施形態による、ＥＬＵ活性化関数の結果のグラフと、ＥＬＵ活性化関数の近似と、ＥＬＵ活性化関数の近似のハードウェア回路実装と、を示す図である。図５に示すハードウェア回路は、いくつかの実施形態のハードウェア回路の一般的な例として示されていることに留意されたい。別の実施形態のハードウェア回路は、異なる回路要素及び／又は回路要素の構成を含む。例えば、マルチプレクサ（ＭＵＸ）を使用する代わりに、いくつかの実施形態は、ＡＮＤゲート、ＸＯＲゲート、トランスミッションゲート、動的ロジック、及び／又は、複合／カスタムロジック等のロジックゲートを使用する。
【００３３】
図５と同様に、図４は、ＥＬＵ活性化関数を実行する回路要素を有する活性化関数機能ブロック１０４の一実施形態を示すことを想起されたい。図４と図５の違いは、ＥＬＵ活性化関数の特定の近似にある。後述するように、図４で使用した２つの範囲と対照的に、図５に示す近似は、第３範囲を含み、この第３範囲では、別の線形関数を使用してＥＬＵ関数の一部が近似される。従って、図５のハードウェア回路の方が少し複雑だが、活性化関数機能ブロック１０４によって生成される結果は、完全ではないが、より正確にＥＬＵ活性化関数の結果を複製する。
【００３４】
図５のＥＬＵ活性化関数の結果のグラフに示すように、関数は、ｆ（α、x）として、０から始まり負の値の下方に向かって、すなわち、ｘの全ての負の値を含む第１範囲に対して、指数関数的に−αに近づくα（ｅｘ−１）の結果を返し、０以上の全ての入力値ｘに対して、すなわち、ｘの全ての正の値を含む第２範囲に対して、結果ｘを返す。図５のＥＬＵ活性化関数の近似のグラフに示すように、正の値の第２範囲において、近似は、ｆ（α、x）として、各入力値ｘに対してｘの値を返す。しかし、負の値の第１範囲では、近似は、指数曲線を無視し、負の値に対して２つの異なる種類の結果を返す。−１以上０未満の入力値の場合、近似は、ｆ（α、ｘ）として、各入力値ｘに対してαｘの値を返し、これは、−１〜０の近似の急勾配において観察できる。−１未満の入力値の場合、近似は、ｆ（α、ｘ）として、全ての入力値に対して−αの定数値を返す。活性化関数機能ブロック１０４内のハードウェア回路は、負の入力値の第１範囲内の−１〜０の入力値に対してαｘを生成し、負の入力値の第１範囲内の−１未満の入力値に対して−αを生成し、０及び正の入力値ｘの第２範囲に対してｘの値を生成することによって、ＥＬＵの入力／結果動作に近似するように構成されている。
【００３５】
図５に示すように、ＥＬＵ活性化関数の結果の近似は、少なくともいくつかの負の値について不正確であり、誤っており、これは、−１〜０のＥＬＵ活性化関数の結果曲線の初期の部分において特に顕著である。不正確ではあるが、特にニュートラルネットワークのトレーニング可能な性質を考えると、近似は、機能的には正確で十分である。言い換えると、ＥＬＵ活性化関数の結果と近似との間の僅かな差は、ニューラルネットワークのトレーニング中に、αへの調整、及び／又は、対応する有向エッジの重みへの調整を用いて補正することができる。説明したように指数関数の正確な結果を計算する必要性を回避することによって、これらの実施形態では、ＥＬＵ活性化関数を（回路の複雑さ及び領域、時間、電力消費量等の点で）評価するのに要する労力を大幅に低減する。
【００３６】
図５の例では、入力の入力値ｘに対する前述のαｘの値として機能するシフトされたバージョンの入力５００が、特定のマルチプレクサに対する入力として使用するために生成される。例えば、αが２に等しいと仮定すると、図５の例で行われるように、入力５００は、入力５００の負の値を考慮するための対応する調整を用いて、１ビット位置だけシフトされ、入力５００は実質的に２で乗算され得る。シフト演算後の個々のビットの値は、図５において、個々のビット毎に「＞＞」で表されたボックスを用いて示される。特定のシフト回路要素が図５に示されていないが、いくつかの実施形態では、このようなシフト回路要素において、シフト演算が入力５００の全てのビットに対してグループとして行われ、シフトされたビットは、図示したようにマルチプレクサに転送される。
【００３７】
次に、図５に示すハードウェア回路について説明する。この説明では、図５に示すマルチプレクサの最上段の行が「第１行」と呼ばれ、マルチプレクサの最下段の行が「第２行」と呼ばれる。ハードウェア回路に示すように、入力５００のビット［１］は、比較回路（「＝−１」で表すボックスを用いて図５に示されている）に転送され、比較回路は、入力５００が１に等しいと入力５００のビット［１］が示す場合に、出力をアサートする（例えば１に設定する）。ここで、負の数は切り捨てられることが想定され、よって、−１の値は、入力５００の実際の数値が−１〜０の間の何れかの数値であること、すなわち、−１より大きい負の小数であることを意味する。入力５００の特定のビット（ビット［１］）は、比較回路において、入力５００が１に等しいかどうかを決定するために使用されると説明していることに留意されたい。しかし、いくつかの実施形態では、この決定を行うために、異なる１つ以上のビット配列が使用される。一般に、これらの実施形態は、入力５００の整数部分をチェックして、整数部分が１（例えば２１、５、又は、別の値ではない）に等しいかどうかを決定し、整数部分が１に等しいと決定した場合に結果をアサートする。
【００３８】
比較回路によって出力された結果は、ＡＮＤゲートの１つの入力として使用され、ＡＮＤゲートの他の入力は、入力５００の符号ビット、すなわち、ビット［０］が使用される。入力５００が負の場合、符号ビットは１であることを想起されたい。これにより、比較回路によって実行されるチェックと組み合わされると、ＡＮＤゲートによって出力される結果は、入力５００が−１〜０の負の値であるかどうかを示す。
【００３９】
ＡＮＤゲートによって出力された結果は、第１行のマルチプレクサ（ＭＵＸ）の選択入力に転送される。第１行の各マルチプレクサは、定数−αの異なる対応するビットを１つの入力とし、シフト演算が行われた後の入力５００の単一ビットの値を他の入力とする。例えば、第１行における第１（図５の左端）マルチプレクサは、定数−αの対応するビットを１つの入力とし、シフト演算後の入力５００のビット［１］を他の入力とする。ＡＮＤゲートによって出力された結果が１である場合（すなわち、入力５００が−１〜０の負の値である場合）、選択入力を介して、第１行の各マルチプレクサは、シフト演算が行われた後の入力５００の単一ビットの値を、第２行の対応するマルチプレクサの１つの入力に転送する。ＡＮＤゲートによって出力された結果が０である場合（すなわち、入力５００が−１未満の負の値である場合）、選択入力を介して、第１行の各マルチプレクサは、定数−αの対応するビットの値を、第２行の対応するマルチプレクサの１つの入力に転送する。
【００４０】
第２行のマルチプレクサは、選択入力として、入力５００の符号ビットを受信する。第２行の各マルチプレクサは、入力５００の異なる単一ビットを１つの入力とし、第１行の対応するマルチプレクサの出力を他の入力とする。例えば、第２行における第１（図５の左端）マルチプレクサは、入力５００のビット［１］を１つの入力とし、第１行の第１／左端のマルチプレクサの出力を他の入力とする。入力５００の数値が負である場合、符号ビットは１であり、これにより、選択入力を介して、各マルチプレクサは、第１行の対応するマルチプレクサの出力の値を、結果５０２の各ビットに転送する。入力５００の数値が正である場合、符号ビットは０であり、これにより、選択入力を介して、各マルチプレクサは、入力５００の対応する単一ビットの値を、結果５０２の各ビットに転送する。さらに、結果の第１／左端のビットは、入力４００の符号ビットと等しく設定される。説明したように動作することによって、ＥＬＵの動作がハードウェア回路によって近似され、符号ビット及び入力５００の整数部分は、ハードウェア回路によって生成された結果５０２を選択するように、すなわち、ＥＬＵ活性化関数の３つの可能な範囲の中から入力５００が含まれる範囲を「決定」するように機能する。
【００４１】
（他の活性化関数）
上述した活性化関数、すなわち、ＲｅＬＵ、漏洩ＲｅＬＵ及びＥＬＵは、活性化関数機能ブロック１０４で実行され得る多数の活性化関数のうちの３つに過ぎない。一般に、対応する範囲で２つ以上の線形関数を使用して近似することができる全ての活性化関数を、説明する実施形態で実行することができる。他の活性化関数のいくつかの例には、双曲線正接（tanh）活性化関数、ソフト‐ステップ／ロジスティック活性化関数、バイナリステップ活性化関数、ソフト‐サイン活性化関数等が挙げられる。いくつかの実施形態では、ＲｅＬＵ等の活性化関数の導関数を、活性化関数機能ブロック１０４で実行することができる。いくつかの実施形態では、上述したシフトと同様に、結果値を生成するために使用される様々な回路要素を使用して、活性化関数機能ブロック１０４で各活性化関数の近似を実行することができる。
【００４２】
様々な図で示すように、特定の数の範囲を実施することは、マルチプレクサ、ＡＮＤゲート等の回路要素を追加して、入力が対応する範囲内の場合に、活性化関数の結果が活性化関数機能ブロック１０４から出力されるようにすることを含む。例えば、２を超える全ての範囲に対して、対応する選択入力を有するマルチプレクサの別の層を追加することができる（いくつかの選択入力は、図２〜図５に示す選択入力と比べると、比較的複雑になり得る）。
【００４３】
（活性化関数の結果の生成）
説明する実施形態は、活性化関数機能ブロック（例えば、活性化関数機能ブロック１０４）内の対応するハードウェア回路を使用して、活性化関数の結果を生成するための動作を実行する。図６は、いくつかの実施形態による、活性化関数の結果を生成するプロセスを示すフローチャートである。図６に示す動作は、いくつかの実施形態によって実行される機能の一般的な例として示されていることに留意されたい。他の実施形態によって実行される動作には、異なる動作及び／又は異なる順序で実行される動作が含まれる。さらに、プロセスを説明する際に特定のメカニズム（例えば、活性化関数機能ブロック１０４）が使用されるが、いくつかの実施形態では、他のメカニズムが動作を実行することができる。
【００４４】
図６の説明では、図２に示すハードウェア回路を用いた活性化関数機能ブロックで実行される活性化関数として、ＲｅＬＵ活性化関数が使用される。さらに、ニュートラルネットワーク内のノードの動作を実行するために、活性化関数機能ブロックが使用されていると想定する。言い換えると、任意の目的でＲｅＬＵ関数を評価するために使用することができる汎用機能ブロックである活性化関数機能ブロックが、ニューラルネットワーク内の所定のノードのＲｅＬＵ関数を評価するために使用されている。図６では、ＲｅＬＵ関数について説明するが、他の実施形態は、他の活性化関数及び／又は他のハードウェア回路の構成を使用する。
【００４５】
さらに、図６の説明では、符号付き整数値、浮動小数点値等の数値を表す複数のビットを含む入力であって、対応する部分に符号ビット及び数値を表す複数のビットを含む入力を、活性化関数機能ブロックが受信するものとして説明する。ニューラルネットワークの構成、すなわち、活性化関数が評価されているノードに接続されている前／上流のノードの数に応じて、活性化関数機能ブロックが受信する入力は、ニューラルネットワーク内の前／上流のノードからの２つ以上の重み付けされた出力の合計であってもよいし、ニューラルネットワーク内の単一の前／上流のノードからの重み付けされた出力であってもよい。例えば、ステップ６００で受信される入力は、ニューラルネットワークの入力ノードの重み付けされた出力、ニューラルネットワーク内の前の中間ノードの活性化関数の重み付けされた結果、又は、ニューラルネットワーク内の前のノードからの重み付けされた出力及び／若しくは重み付けされた結果の合計であってもよい。
【００４６】
図６に示すプロセスは、活性化関数機能ブロックが、複数のビットを含む入力を受信したときに開始する（ステップ６００）。上述したように、この動作の間、活性化関数機能ブロックは、符号ビットと、数値を表すビットと、を表す複数のビットを含む入力を受信する。
【００４７】
次に、活性化関数機能ブロック内のハードウェア回路は、入力のビットのサブセットに基づいて、複数の範囲の中から、入力が含まれる範囲を決定する（ステップ６０２）。この動作の間、ハードウェア回路は、ＲｅＬＵ活性化関数に関して、入力が負の値（すなわち、０未満の任意の値）を有するか、正の値（すなわち、０を含む０以上の任意の値）を有するかを決定する。この「決定」を行うために、ハードウェア回路は、入力の符号ビットを、ハードウェア回路内のマルチプレクサの選択入力に転送する（図２参照）。上述したように、選択入力により、各マルチプレクサは、マルチプレクサの２つの入力のうち出力に転送する１つの入力を選択し、これにより、入力が含まれる範囲が選択される。言い換えると、ハードウェア回路は、入力の値が含まれる範囲に基づいて、結果を生成する。
【００４８】
本明細書で使用する「決定」とは、一般的な用語であり、別個の決定動作又はそれによる具体的な結果を意味するものではない。代わりに、「決定」という用語は、所望の結果が活性化関数機能ブロックによって生成されるように、ハードウェア回路が所定の対応する範囲をどのように処理するかを説明するために使用される。
【００４９】
また、ビットのサブセットのみが決定動作に使用されることに留意されたい。具体的には、単一ビットである符号ビットは、決定動作で使用される唯一のビットである。説明する実施形態では、入力の１ビットのみを使用して、入力が含まれる範囲を決定し、対応する結果を生成することが可能であるため、活性化関数機能ブロック内のハードウェア回路は、他の比較演算（より大きい、より小さい、以上である、等）を行う回路よりも単純にすることができ、これは、活性化関数機能ブロックが、より少ない電力を必要とし、より低い設計複雑度を有することができ、半導体レイアウト又は回路実装上でより少ないスペースを占めることができること等を意味する。
【００５０】
次に、ハードウェア回路は、範囲に関連する線形関数の結果を生成する（ステップ６０４）。この動作では、ハードウェア回路は、各マルチプレクサの出力に、選択入力によって選択された入力の値を生成する。ＲｅＬＵ関数の場合、各マルチプレクサの出力は、入力が含まれる範囲が負であるか正であるかに応じて、入力の対応するビットの値又は定数値０となる。例えば、入力が正の値であり、マルチプレクサのうち特定の１つへの入力の対応するビットの値が１である（すなわち、正の値の範囲内である）場合、その特定のマルチプレクサの出力は、１である。一方、入力が負の値である場合、その特定のマルチプレクサの出力は、定数０である。次に、活性化関数機能ブロックによって出力された結果は、場合によっては重み付けされた後に、ニューラルネットワーク内の下流のノード（後続の中間ノード又は出力ノード等）に転送され、そこで処理される。
【００５１】
いくつかの実施形態では、コンピューティングデバイス（例えば電子デバイス１００及び／又はその一部）は、非一時的なコンピュータ可読記憶媒体に記憶されたコード及び／又はデータを使用して、本明細書で説明する動作の一部又は全てを実行する。より具体的には、コンピューティングデバイスは、説明する動作を実行する場合に、コンピュータ可読記憶媒体からコード及び／又はデータを読み出して、コードを実行する及び／又はデータを使用する。コンピュータ可読記憶媒体は、コンピューティングデバイスによって使用されるコード及び／又はデータを記憶する任意のデバイス、媒体又はこれらの組み合わせであってもよい。例えば、コンピュータ可読記憶媒体は、フラッシュメモリ、ランダムアクセスメモリ（ｅＤＲＡＭ、ＲＡＭ、ＳＲＡＭ、ＤＲＡＭ、ＤＤＲ、ＤＤＲ２／ＤＤＲ３／ＤＤＲ４  ＳＤＲＡＭ等）、読み出し専用メモリ（ＲＯＭ）、及び／若しくは、磁気若しくは光学記憶媒体（例えばディスクドライブ、磁気テープ、ＣＤ、ＤＶＤ）を含む揮発性メモリ又は不揮発性メモリを含むことができるが、これらに限定されない。
【００５２】
いくつかの実施形態では、１つ以上のハードウェアモジュールは、本明細書で説明する動作を実行するように構成されている。例えば、ハードウェアモジュールは、１つ以上のプロセッサ／コア／中央処理装置（ＣＰＵ）、特定用途向け集積回路（ＡＳＩＣ）チップ、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、計算ユニット、組み込みプロセッサ、グラフィックスプロセッサ（ＧＰＵ）／グラフィックコア、パイプライン、アクセラレーテッド処理ユニット（ＡＰＵ）、システム管理ユニット、電力コントローラ、及び／又は、他のプログラマブルロジックデバイスを含むことができるが、これらに限定されない。このようなハードウェアモジュールが起動されると、ハードウェアモジュールは、動作の一部又は全てを実行する。いくつかの実施形態では、ハードウェアモジュールは、命令（プログラムコード、ファームウェア等）を実行することによって動作を実行するように構成された１つ以上の汎用回路を含む。
【００５３】
いくつかの実施形態では、本明細書で説明する構造及びメカニズムの一部又は全てを表すデータ構造（例えば、処理回路１０２、活性化関数機能ブロック１０４、及び／又は、これらの一部）が、データベース又は他のデータ構造を含む非一時的なコンピュータ可読記憶媒体に記憶され、データベース又は他のデータ構造は、コンピューティングデバイスにより読み出され、構造及びメカニズムを含むハードウェアを製造するために直接的又は間接的に使用され得る。例えば、データ構造は、Ｖｅｒｉｌｏｇ又はＶＨＤＬ等のハイレベル設計言語（ＨＤＬ）におけるハードウェア機能の動作レベル記述又はレジスタ転送レベル（ＲＴＬ）記述であってもよい。記述は、合成ツールにより読み出され、合成ツールは、記述を合成して、上述した構造及びメカニズムを含むハードウェアの機能を表すゲート／回路要素のリストを含むネットリストを、合成ライブラリから生成することができる。次に、ネットリストは、マスクに適用する幾何学形状を記述するデータセットを生成するために構成され、ルーティングされる。次いで、上述した構造及びメカニズムに対応する１つ以上の半導体回路（例えば、集積回路）を製造するために、マスクを様々な半導体製造ステップにおいて使用することができる。或いは、コンピュータアクセス可能な記憶媒体上のデータベースは、必要に応じてネットリスト（合成ライブラリの有無にかかわらず）若しくはデータセット、又は、グラフィックデータシステム（ＧＤＳ）ＩＩデータであってもよい。
【００５４】
この説明では、いくつかの実施形態を説明する際に、機能ブロックを参照することができる。一般に、機能ブロックは、説明する動作を実行する１つ以上の相互に関連する回路要素（場合によっては、多数の回路要素）を含む。例えば、回路要素は、集積回路、ディスクリート回路要素等を含むことができる。いくつかの実施形態では、機能ブロック内の回路は、説明する動作を実行するためにプログラムコード（例えば、マイクロコード、ファームウェア、アプリケーション等）を実行する回路を含む。例えば、機能ブロックは、対応するプログラムコードを実行するための汎用回路又は専用回路を有する１つ以上の処理パイプライン、計算ユニット、処理回路等を含むことができる。
【００５５】
この説明では、変数又は不特定の値（すなわち、値の特定のインスタンスを持たない値の一般的な説明）は、Ｎ等の文字で表される。本明細書で使用するように、同様の文字を他の箇所で使用する場合があるが、各々の場合での変数及び不特定の値は必ずしも同じではなく、すなわち、一般的な変数及び不特定の値のいくつか又は全てに対して意図される様々な変数量及び値が存在し得る。言い換えると、この説明で変数及び不特定の値を表すのに使用されるＮ及び任意の他の文字は、必ずしも互いに関連するわけではない。
【００５６】
実施形態の上記の説明は、例示及び説明のためにのみ示されたものである。これらは、網羅的であること、又は、実施形態を開示された形態に限定することを意図していない。従って、当業者には多くの変更及び変形が明らかである。さらに、上記の開示には、実施形態を限定することを意図していない。実施形態の範囲は、添付の特許請求の範囲によって定義される。
【図１】
2021506020.tif 000003
【図２】
2021506020.tif 000004
【図３】
2021506020.tif 000005
【図４】
2021506020.tif 000006
【図５】
2021506020.tif 000007
【図６】
2021506020.tif 000008
【国際調査報告】
2021506020.tif 000009
2021506020.tif 000010
2021506020.tif 000011