以下の詳細な説明は単なる例示であり、実施形態、用途、または実施形態の用途あるいはその組合せを限定するように意図されたものではない。その上、先の背景技術もしくは発明の概要の段落、または発明を実施するための形態の段落において表現または暗示によって提示されたいかなる情報によっても、束縛されるようには意図されていない。
ニューラル・ネットワークは、一般に、複数のニューロンとそれらのニューロンの間の接続とを含んでいる。ニューロンは、一般に、(重み付けされ得る)1つまたは複数の入力を基に出力を決定するニューラル・ネットワーク・コンピュータ・システムの一部分であり、この出力は、重み付けされているであろう入力を用いる活性化関数の出力を決定することに基づいて、決定される。活性化関数の例は、0以上無限大以下の範囲の出力を生成する正規化線形関数(ReLU)と、-1以上1以下の出力を生成するtanhと、0以上1以下の出力を生成するsigmoidとを含む。本明細書で説明された非限定的な例のうちのいくつかは正則化器(ReLU)活性化関数に関するものであるが、これらの技術は他の活性化関数に適用され得ることが理解され得る。たとえば、これらの技術はtanh活性化関数またはsigmoid活性化関数の出力の適切な分解能を決定するために適用され得る。
ニューラル・ネットワークのニューロンは接続され得、そのため、1つのニューロンの出力が別のニューロンに対する入力として働くことができる。図1に示されるように、ニューラル・ネットワークの内部のニューロンは層へと組織化され得る。ニューラル・ネットワークの第1の層は入力層と呼ばれ得、ニューラル・ネットワークの最後の層は出力層と呼ばれ得、ニューラル・ネットワークのあらゆる介在層は隠れ層と呼ばれ得る。
ニューラル・ネットワークの精度は、ニューラル・ネットワークによってもたらされる結果の正解率(たとえば画像が人間の顔を表しているかどうかを識別する正解率)に影響を及ぼし得るので、重要であり得る。しかし、精度は(たとえば所与のレベルの精度を達成するのに必要とされる適切なニューラル・ネットワークを構築するための処理リソース、結果を決定するのに必要な時間、または金銭の観点から)割高になり得る。そこで、ニューラル・ネットワークの性能改善およびコスト低減のために、より低精度の処理ユニット(たとえば64ビットまたは32ビットの処理ユニットとは対照的に8ビット、4ビット、または2ビットの処理ユニット)を組み込むことができる。
しかしながら、ニューラル・ネットワークが低精度に量子化されて訓練されるとき、量子化によって発生するノイズのために正解率が失われる恐れがある。この正解率低下により、認識するように訓練された対象を認識するためのニューラル・ネットワークの能力が低下するため、ニューラル・ネットワークの性能が低下する可能性がある。そこで、本主題は、ニューラル・ネットワークの性能における正解率の損失を軽減しつつ、コストが削減され得るような量子化によるニューラル・ネットワークの精度の低下を提供するものである。
次に、図面を参照しながら1つまたは複数の実施形態が説明され、全体にわたって、類似の参照数字は類似の要素を参照するために使用されている。以下の説明では、1つまたは複数の実施形態のより十分な理解を提供するために、説明のために多くの特定の詳細が説明される。しかしながら、1つまたは複数の実施形態が、様々な場合においてこれらの特定の詳細なしで実施され得ることが明白である。
図1は、本明細書で説明された1つまたは複数の実施形態によって効率が促進され得る例示の非限定的なニューラル・ネットワーク・システムを示す。本開示で説明されるシステム(たとえばシステム100等)、装置または処理の態様は、マシンの内部で具現されるマシン実行可能コンポーネントを構成することができ、たとえば1つまたは複数のマシンに関連した1つまたは複数のコンピュータ可読媒体の中に具現される。1つまたは複数のマシン(たとえばコンピュータ、コンピュータ・デバイス、仮想マシン)は、そのようなコンポーネントを実行することにより、説明された動作を実行することができる。それぞれの実施形態において採用された類似の要素の繰り返しの説明は、簡潔さのために省略されている。
システム100またはシステム100のコンポーネントあるいはその両方は、本来技術的に高度であって抽象的でない、人の精神的行動のセットとして実行され得ない問題を解決するためのハードウェアまたはソフトウェアあるいはその両方を使用するために採用され得るものである。たとえば、システム100またはシステム100のコンポーネントあるいはその両方は、ニューラル・ネットワークの内部の効率を促進することを含む動作を実行するためのハードウェアまたはソフトウェアあるいはその両方を使用するために採用され得るものである。
さらに、実行される処理のうちのいくつかは、ニューラル・ネットワークの内部の効率の促進に関連して定義されたタスクを実行するように特化されたコンピュータによって実行され得る。システム100またはシステム100のコンポーネントあるいはその両方は、技術、コンピュータ・ネットワーク、インターネットなどの進歩によって生じる新規の問題を解決するために採用され得るものである。システム100は、ニューラル・ネットワークの内部の効率の促進に関連した処理コンポーネントの中の処理効率を改善することにより、実際のインターネット・ベースの学習システムの技術的改善をさらに提供することができる。
表されるように、システム100は、ニューロン102、ニューロン104、ニューロン106、ニューロン108、およびニューロン110といった5つのニューロンを備えるニューラル・ネットワークである。このニューラル・ネットワークの入力層124は、ニューロン102およびニューロン104から成る。このニューラル・ネットワークの隠れ層126はニューロン106およびニューロン108から成る。このニューラル・ネットワークの出力層128は、ニューロン110から成る。入力層124のニューロンの各々が隠れ層126のニューロンの各々に接続されている。すなわち、入力層124の各ニューロンの、場合により重み付けされた出力は、隠れ層126の各ニューロンに対する入力として使用される。そこで、隠れ層126のニューロンの各々が、出力層128のニューロンの各々(ここでは1つのニューロン)に対して接続されている。
システム100のニューラル・ネットワークは、明瞭さのためにいくつかの特徴が強調され得るように、簡素化された例を提示してしる。本技術は、システム100のニューラル・ネットワークよりもかなり複雑なものを含む他のニューラル・ネットワークに適用され得ることが理解され得る。
図1のシステム100のニューラル・ネットワークの状況を所与として、図4~図18のグラフは、システム100のニューラル・ネットワークなどのニューラル・ネットワークの効率を促進することができる様々なやり方を示し、図19~図20のフローチャートは、システム100のニューラル・ネットワークなどのニューラル・ネットワークの効率を向上させるために実施され得る、コンピュータで実施される方法を示し、図21のブロック図は、システム100のニューラル・ネットワークなどのニューラル・ネットワークが実施され得る動作環境を示すものである。
図2は、本明細書で説明された1つまたは複数の実施形態によってニューラル・ネットワークの効率を促進する例示の非限定的なシステム200のブロック図を示す。システム200はシステム100および250と同一または類似の特徴および機能を含むことができ、逆の場合も同じである。それぞれの実施形態において採用された類似の要素の繰り返しの説明は、簡潔さのために省略されている。
図2に示されるように、システム200はニューラル・ネットワーク・コンポーネント218を含むことができる。ニューラル・ネットワーク・コンポーネント218は、限定されるものではないが、初期化コンポーネント202、訓練コンポーネント204、活性化関数コンポーネント206、クリッピング・コンポーネント208、逆伝播コンポーネント210、および活性化関数選択コンポーネント220を含めて、様々なコンピュータ実行可能コンポーネントを含むことができる。ニューラル・ネットワーク・コンポーネント218はまた、コンピュータ実行可能コンポーネント(たとえば初期化コンポーネント202、訓練コンポーネント204、活性化関数コンポーネント206、クリッピング・コンポーネント208、逆伝播コンポーネント210、および活性化関数選択コンポーネント220)を記憶する少なくとも1つのメモリ212を含み得、そうでなければこれに関連付けられ得る。ニューラル・ネットワーク・コンポーネント218はまた、メモリ212に記憶されたコンピュータ実行可能命令を実行する少なくとも1つのプロセッサ214を含み得、そうでなければこれに関連付けられ得る。ニューラル・ネットワーク・コンポーネント218がさらに含み得るシステム・バス216は、限定されるものではないが、初期化コンポーネント202、訓練コンポーネント204、活性化関数コンポーネント206、クリッピング・コンポーネント208、逆伝播コンポーネント210、活性化関数選択コンポーネント220、メモリ212、またはプロセッサ214あるいはその組合せを含む様々なコンポーネントを結合することができる。
ニューラル・ネットワークの効率を促進するために、ニューラル・ネットワーク・コンポーネント218は初期化コンポーネント202を含むことができる。いくつかの実装形態では、初期化コンポーネント202は、出力限度の初期値を選択することができ、出力限度はニューラル・ネットワークの活性化関数の出力の範囲を示している。ニューラル・ネットワーク・コンポーネント218は訓練コンポーネント204も含むことができる。いくつかの実装形態では、訓練コンポーネント204は、訓練中に出力限度の初期値を出力限度の第2の値に変更することができ、出力限度の第2の値は活性化関数のパラメータとして与えられる。ニューラル・ネットワーク・コンポーネント218は、活性化関数コンポーネント206も含むことができる。いくつかの実装形態では、活性化関数コンポーネント206は、出力限度の第2の値をパラメータとして使用することに基づき、活性化関数の出力を決定することができる。
ニューラル・ネットワーク・コンポーネント218は、クリッピング・コンポーネント208も含むことができる。いくつかの実装形態では、クリッピング・コンポーネント208は、訓練コンポーネントを用いた訓練中に、量子化による正解率低下を軽減するためにクリッピングを実行することができる。ニューラル・ネットワーク・コンポーネント218は、逆伝播コンポーネント210も含むことができる。いくつかの実装形態では、逆伝播コンポーネント210は、訓練コンポーネントを用いた訓練中に逆伝播を実行することができる。ニューラル・ネットワーク・コンポーネント218は、活性化関数選択コンポーネント220も含むことができる。いくつかの実装形態では、活性化関数選択コンポーネント220は、出力限度が増加するにつれて交差エントロピー損失が収斂するフル精度の場合には活性化関数として正規化線形関数ReLUを使用するように判定し、また、出力限度が増加するにつれて、損失関数も量子化とともに増加すると判定して、正規化線形関数とは別の活性化関数タイプの活性化関数を使用すると決定する。
システム200のアーキテクチャは多種多様であり得ることを理解されたい。たとえば、システム200の様々なコンポーネントはニューラル・ネットワーク・コンポーネント218の内部に含まれているものと表されているが、この配置は、様々なコンポーネントが1つのデバイスの内部に含まれていることを示しているのではなく、論理的なものであると理解され得る。すなわち、様々なコンポーネントは、ネットワーク化されたコンピュータ環境または分散コンピュータ環境において様々なコンピュータ・デバイスの間に分散してよい。システム200に表されたものよりも多数または少数のコンポーネントを採用する他の適切なアーキテクチャがあり得ることも理解されよう。たとえば、活性化関数選択コンポーネント220を省略する別のシステムがあり得る。
図3は、本明細書で説明された1つまたは複数の実施形態を用いてニューラル・ネットワークの効率を促進する例示の非限定的なシステム250の別のブロック図を示す。システム250はシステム100および200と同一または類似の特徴および機能を含むことができ、逆の場合も同じである。それぞれの実施形態において採用された類似の要素の繰り返しの説明は、簡潔さのために省略されている。
図3に示されるように、システム250はニューラル・ネットワーク・コンポーネント256を含むことができる。ニューラル・ネットワーク・コンポーネント256は、限定されるものではないが、初期化コンポーネント252および活性化関数コンポーネント254を含めて、様々なコンピュータ実行可能コンポーネントを含み得る。ニューラル・ネットワーク・コンポーネント256はまた、コンピュータ実行可能コンポーネント(たとえば初期化コンポーネント252および活性化関数コンポーネント254)を記憶する少なくとも1つのメモリ212を含み得、そうでなければこれに関連付けられ得る。ニューラル・ネットワーク・コンポーネント256はまた、メモリ212に記憶されたコンピュータ実行可能命令を実行する少なくとも1つのプロセッサ214を含み得、そうでなければこれに関連付けられ得る。ニューラル・ネットワーク・コンポーネント256がさらに含み得るシステム・バス216は、限定されるものではないが、初期化コンポーネント252、活性化関数コンポーネント254、メモリ212、またはプロセッサ214あるいはその組合せを含めて、様々なコンポーネントを結合することができる。
ニューラル・ネットワークの効率を促進するために、ニューラル・ネットワーク・コンポーネント256は初期化コンポーネント252を含むことができる。いくつかの実装形態では、初期化コンポーネント252は出力限度の値を選択することができ、出力限度はニューラル・ネットワークの活性化関数の出力の範囲を含み、出力限度の値は訓練によって決定される。ニューラル・ネットワーク・コンポーネント256は、活性化関数コンポーネント254も含むことができる。いくつかの実装形態では、活性化関数コンポーネント254は、出力限度の値を活性化関数のパラメータとして活性化関数の出力を決定することができる。
システム250のアーキテクチャは多種多様であり得ることを理解されたい。たとえば、システム250の様々なコンポーネントはニューラル・ネットワーク・コンポーネント256の内部に含まれているものと表されているが、この配置は、様々なコンポーネントが1つのデバイスの内部に含まれていることを示しているのではなく、論理的なものであると理解され得る。すなわち、様々なコンポーネントは、ネットワーク化されたコンピュータ環境または分散コンピュータ環境において様々なコンピュータ・デバイスの間に分散してよい。システム250に表されたものよりも多い、または少ないコンポーネントを採用する他の適切なアーキテクチャがあり得ることも理解されよう。
図4は、本明細書で説明された1つまたは複数の実施形態による活性化関数の出力の例示の非限定的なグラフ300を示す。いくつかの例において、図4で説明される活性化関数は図1のシステム100のニューラル・ネットワークの活性化関数であり得る。いくつかの例において、グラフ300に関連したアクションは、システム100、システム200の訓練コンポーネント204、またはシステム250の初期化コンポーネント252によって実行され得る。それぞれの実施形態において採用された類似の要素の繰り返しの説明は、簡潔さのために省略されている。
いくつかのニューラル・ネットワークに関連して、ネットワークの重み(ニューラル・ネットワークの1つの活性化関数の出力がニューラル・ネットワークの別の活性化関数の出力に及ぼす影響の量)と、ニューラル・ネットワークの特徴(ニューラル・ネットワークの各活性化関数の出力)との、2つのデータ構造があり得る。
ニューラル・ネットワークのデータ構造を表す際に量子化が利用され得る。量子化は、一般に、例えばすべての実数を整数に抑制することなど、数のセットを、より小さい離散的なセットの数へと抑制する処理である。量子化するとき、(a)(たとえば0以上100以下といった)表される数の範囲、および(b)表される数の分解能(たとえば0と100の間の0.1の増分で表され、そのため表される数は0.0、0.1、0.2、...、100.0である)といった2つのことが考慮され得る。範囲および分解能の各々が、複数の2値のビットを用いて別個に表され得る場合には、特定の範囲および特定の分解能を与えられた数のセットを表すために使用されるビットの総数は、範囲を表すのに使用されるビット数と分解能を表すのに使用されるビット数の合計であり得る。
活性化関数は、一般にニューラル・ネットワークのニューロンの内部のドット積を計算する。ReLUなどの活性化関数は、無限の範囲および無限の分解能を有し得る。活性化関数の出力をより高速に計算すること、または活性化関数を、より安価に計算可能に、もしくはそれほど高性能でないハードウェアでも計算可能にすることなどによって、効率を向上させるように、活性化関数の範囲または分解能あるいはその両方を量子化するための努力が払われ得る。
活性化関数の出力の量子化の量を決定するために訓練処理が実施され得る。訓練によって、ニューラル・ネットワーク(またはニューラル・ネットワークの層もしくはニューロンなど、ニューラル・ネットワークのサブ部分)に2つの新規のパラメータが導入され得る。これら2つの新規のパラメータは、活性化関数の出力の範囲を定義するαおよび活性化関数の出力の分解能を定義するβとして表現され得る。範囲および分解能を、無限大から、合わせて4ビットで表現され得る範囲および分解能に減少させる一例を検討する。範囲に2ビットが割り当てられる場合には、範囲はたとえば0以上~3以下をカバーすることができる。そこで、4ビットのうちの他の2ビットが分解能に割り当てられたとき、分解能は、0.25であり得る(たとえば範囲と分解能を組み合わせると、0.0、0.25、0.50、...、3.0の数をカバーすることができる)。訓練では開始ポイントはReLUであり得、αおよびβは無限大である。次いで、αおよびβを有限の量にするために訓練処理が使用され得る。
グラフ300は、活性化関数の出力のグラフを表示するものであり、出力に関してαとβの両方が示されている。サブ分解能
および分解能勾配(1/m)といった2つの追加のパラメータも示されている。サブ分解能および分解能勾配は、αおよびβのいくつかのタイプの訓練において使用される追加のパラメータであり得る。グラフ300にはα 302、β 304、サブ分解能306、および分解能勾配308が示されている。いくつかの例において、分解能勾配308は1/mと定義され、mは確率的勾配降下処理を使用してゼロに近づくかまたは到達するように訓練されるパラメータである。ここで分解能勾配が1/mと定義されているので、mがゼロになると、分解能勾配は無限大(2値の活性化関数における勾配)に近づく。
たとえば、訓練ハードウェアが、ニューラル・ネットワークが最終的に動作するハードウェア以上の処理リソースを与える状況(たとえば、訓練ハードウェアは64ビットのプロセッサを利用するが、ニューラル・ネットワークは最終的に2ビットのプロセッサ上で動作することになる状況)では、サブ分解能および分解能勾配といったこれらのパラメータは、サブ分解能および分解能勾配のパラメータが利用されなかった場合よりも正確な量子化された活性化関数を決定するために使用され得る。
図5は、本明細書で説明された1つまたは複数の実施形態による活性化関数の出力の別の例示の非限定的なグラフ400を示す。いくつかの例において、図5で説明される活性化関数は図1のシステム100のニューラル・ネットワークの活性化関数であり得る。いくつかの例において、グラフ400に関連したアクションは、システム100、システム200の訓練コンポーネント204、またはシステム250の初期化コンポーネント252によって実行され得る。それぞれの実施形態において採用された類似の要素の繰り返しの説明は、簡潔さのために省略されている。
表されるように、活性化関数は次式を用いて表現される。
上記の式において、xはグラフ400の横軸402を表し、yはグラフ400の縦軸404を表す。αは活性化関数の出力の範囲を表す。表されるように、グラフ400の横軸と縦軸の両方にαがあることに留意されたい。上記の式において、またグラフ400に表されるように、活性化関数yの出力406の値は、xがゼロ未満のとき0となり、xがゼロを超えてα未満であるときxとなり、xがα以上のときαとなる。
この式において、αに対するyの導関数は、xがα以上であれば1であり、そうでなければ0である。この式を用いてαを訓練する処理では、確率的勾配降下法が使用され得る。確率的勾配降下のそれぞれの繰り返しが使用されるとき、活性化関数に逆伝播が適用され得、上記の導関数が計算され得、したがって確率的勾配降下の次の繰り返しのためにαが更新され得る。
確率的勾配降下法では、αは、活性化の出力と比較して大きな値に初期化され得る。たとえば、αは、浮動小数点データ・タイプが表すことができる最大の値に初期化され得る。32ビットの浮動小数点データ・タイプでは、この最大値は3.4×1038であり得る。64ビットの浮動小数点データ・タイプでは、この最大値は1.7×10308であり得る。次いで、αのこの値は、確率的勾配降下法を使用して、一般に繰り返しを通じて減少するはずである。
αを訓練する処理において正則化器が採用され得る。いくつかの例において、L2正則化器が採用され得、損失が大きいほどパラメータがより変更される。訓練の処理では、任意の他の適切な正則化器も採用され得る。加えて、訓練中にL2正則化器を適用する結果として、αに対してクリッピングが採用され得、αの値は所定の閾値以下に制限される。
図6は、本明細書で説明された1つまたは複数の実施形態による訓練によって活性化関数の範囲が縮小され得る様子をプロットしたグラフ500を示す。いくつかの例において、図6で説明される活性化関数は図1のシステム100のニューラル・ネットワークの活性化関数であり得る。いくつかの例において、グラフ500に関連したアクションは、システム100、システム200の訓練コンポーネント204、またはシステム250の初期化コンポーネント252によって実行され得る。それぞれの実施形態において採用された類似の要素の繰り返しの説明は、簡潔さのために省略されている。
上記のグラフにおいて、λαは、αに対して実行される正則化の量を表す。表されたグラフ500ではλαは0.01である。一般に、より大きなλ値はより多くの正則化が実行されることを示し、0のλ値は正則化が実行されないことを示す。グラフ500のx軸に沿って複数の訓練エポック504がプロットされており、グラフ500のy軸に沿って対応するα値502がプロットされている。
グラフ500は、開示された技術を使用して、Canadian Institutefor Advanced Research(CIFAR)のResNetニューラル・ネットワークにおいて訓練エポックを通じてαが減少する様子を示す。αは、正則化器(ReLU)の活性化関数を模倣するために当初は大きな値に設定され、次いで、CIFARのResNetニューラル・ネットワークの異なる層に関するα値は、訓練エポックの間に収斂する。コスト関数を最小化する最適なαは、訓練を通じて達成される。
正則化によって、αは後のエポックになるほど小さくなり、したがって、量子化による正解率低下を軽減するためのクリッピングを実行する。
図7は、本明細書で説明された1つまたは複数の実施形態よって活性化関数がどのように量子化され得るかをプロットしたグラフ600を示す。いくつかの例において、図7で説明される活性化関数は図1のシステム100のニューラル・ネットワークの活性化関数であり得る。いくつかの例において、グラフ600に関連したアクションは、システム100、システム200の訓練コンポーネント204、またはシステム250の初期化コンポーネント252によって実行され得る。それぞれの実施形態において採用された類似の要素の繰り返しの説明は、簡潔さのために省略されている。
グラフ600によって表されるように、利用される関連した量子化の式は、xq=round(x/α・(2b-1))・α・1/(2b-1)と表される。この式において、xqは量子化の計算量を表し、bは所与の量の量子化に使用されるビット数を表し(グラフ600の例ではb=2である)、round()は入力を最近整数に丸める関数を表す。パラメータ化されたクリッピングの後に、値は0とαの間になるように制約される。量子化の式に関連した出力値がグラフ600にプロットされており、y軸に沿って出現602がプロットされており、クリップされた活性化604がx軸に沿ってプロットされている。
図8は、本明細書で説明された1つまたは複数の実施形態によって、ニューラル・ネットワークの内部の活性化関数の範囲を変化させることが、ニューラル・ネットワークの誤り率に影響を及ぼす様子を示すグラフ700を示す。いくつかの例において、図8で説明される活性化関数は図1のシステム100のニューラル・ネットワークの活性化関数であり得る。いくつかの例において、グラフ700に関連したアクションは、システム100、システム200の訓練コンポーネント204、またはシステム250の初期化コンポーネント252によって実行され得る。それぞれの実施形態において採用された類似の要素の繰り返しの説明は、簡潔さのために省略されている。
グラフ700では、y軸に沿って訓練誤差702がプロットされており、x軸に沿ってエポック704がプロットされている。グラフ700はCIFARのResNetニューラル・ネットワークに基づくものである。α共有の4つの異なるタイプの各々について、訓練エポックごとの訓練誤差の量がグラフに表示されている:すなわち、ReLU(αをすべて省略する)、ニューロンごとのパラメータ・クリッピング(たとえばニューラル・ネットワークの各ニューロンがそれ自体のα値を有する)、層ごとのパラメータ・クリッピング、およびチャネルごとのパラメータ・クリッピングの4つのタイプである。αは1.0に初期化され、この例ではαは正則化されない。グラフ700に見られるように、層ごとのパラメータ・クリッピングを使用すると、この調査における訓練誤差が最小になる。
図9は、本明細書で説明された1つまたは複数の実施形態によって、ニューラル・ネットワークの内部の活性化関数の範囲を変化させることが、ニューラル・ネットワークの誤り率に影響を及ぼす様子を示す別のグラフ750である。いくつかの例において、図9で説明される活性化関数は図1のシステム100のニューラル・ネットワークの活性化関数であり得る。いくつかの例において、グラフ750に関連したアクションは、システム100、システム200の訓練コンポーネント204、またはシステム250の初期化コンポーネント252によって実行され得る。それぞれの実施形態において採用された類似の要素の繰り返しの説明は、簡潔さのために省略されている。
グラフ750では、y軸に沿って検証誤差752がプロットされており、x軸に沿ってエポック754がプロットされている。グラフ750は、図8のグラフ700と同様に、CIFARのResNetニューラル・ネットワークに基づくものである。グラフ700はそれぞれの訓練エポックにおける訓練誤差の量を示すものであるが、グラフ750は、α共有の4つの異なるタイプの各々について、訓練エポックごとの検証誤差の量を示す:すなわち、ReLU(αをすべて省略する)、ニューロンごとのパラメータ・クリッピング(たとえばニューラル・ネットワークの各ニューロンがそれ自体のα値を有する)、層ごとのパラメータ・クリッピング、およびチャネルごとのパラメータ・クリッピングの4つのタイプである。グラフ700と同様に、αは1.0に初期化され、この例ではαは正則化されない。グラフ750に見られるように、この調査の検証誤差が最小になるのはReLUであり、層ごとのパラメータ・クリッピングを使用するものがこれに続く。
図10は、本明細書で説明された1つまたは複数の実施形態によって、ニューラル・ネットワークの内部の活性化関数の範囲を変化させながら異なる正則化器を使用することが、ニューラル・ネットワークの誤り率に影響を及ぼす様子を示すグラフ800である。いくつかの例において、図10で説明される活性化関数は図1のシステム100のニューラル・ネットワークの活性化関数であり得る。いくつかの例において、グラフ800に関連したアクションは、システム100、システム200の訓練コンポーネント204、またはシステム250の初期化コンポーネント252によって実行され得る。それぞれの実施形態において採用された類似の要素の繰り返しの説明は、簡潔さのために省略されている。
グラフ800では、y軸に沿って訓練誤差802がプロットされており、x軸に沿ってエポック804がプロットされている。グラフ800において、λαはそれぞれの訓練エポックにおいて使用される正則化の量を表し、λαが0に設定されると正則化が使用されないことを示す。グラフ800に見られるように、適切なαを決定するための本技術は、広範囲のλ値にわたって頑健に作動する。表されるように、λαの値は、0.00001~0.1の間で、所与の訓練エポックに対してほぼ類似の訓練誤差を生成する。グラフ800は、CIFARのResNet活性化関数を使用する様々な訓練エポックに対する訓練誤差を示す。
図11は、本明細書で説明された1つまたは複数の実施形態によって、ニューラル・ネットワークの内部の活性化関数の範囲を変化させながら異なる正則化器を使用することが、ニューラル・ネットワークの誤り率に影響を及ぼす様子を示す別のグラフ900である。いくつかの例において、図11で説明される活性化関数は図1のシステム100のニューラル・ネットワークの活性化関数であり得る。いくつかの例において、グラフ900に関連したアクションは、システム100、システム200の訓練コンポーネント204、またはシステム250の初期化コンポーネント252によって実行され得る。それぞれの実施形態において採用された類似の要素の繰り返しの説明は、簡潔さのために省略されている。
グラフ900では、y軸に沿って検証誤差902がプロットされており、x軸に沿ってエポック904がプロットされている。加えて、グラフ900では、ReLUを用いたフル精度のグラフばかりでなく、活性化関数に対して種々の正則化値が適用されている。一般に、αがより大きければ検証誤差はより小さくなる。
図12は、本明細書で説明された1つまたは複数の実施形態によって、ニューラル・ネットワークの内部の活性化関数の範囲を変化させることが、関連する交差エントロピーのコスト関数に影響を及ぼす様子を示すグラフ1000である。いくつかの例において、図12で説明される活性化関数は図1のシステム100のニューラル・ネットワークの活性化関数であり得る。いくつかの例において、グラフ1000に関連したアクションは、システム100、システム200の訓練コンポーネント204、またはシステム250の初期化コンポーネント252によって実行され得る。それぞれの実施形態において採用された類似の要素の繰り返しの説明は、簡潔さのために省略されている。
図12(ならびに図13および図14)は、αが訓練されるときに生じるものを示すために使用され得る。ニューラル・ネットワークの効率を向上させる開示された主題がどのように動作し得るかを示すために、αに対する訓練損失(交差エントロピー損失と正則化を含む全損失との組合せ)が、家屋番号(SVHN:Street View House Numbers)データセットに関してプロットされ得る。グラフ1000(ならびにグラフ1100およびグラフ1200)については、モデルは、所与の量子化方式を用いて訓練され、次いで、損失関数を計算するために、他の変数(重み、使用されるビット数、およびβなど)を固定したまま、ニューラル・ネットワークの1つの特定の層の扱いやすいαが用いられる。ここで、グラフ1000では、損失関数はフル精度対αに関して計算されている。
グラフ1000では、y軸に沿って交差エントロピーのコスト関数1002がプロットされており、x軸に沿ってα 1004がプロットされている。グラフ1000に示されるように、フル精度の場合には、交差エントロピー損失はαが増加するにつれて比較的小さい値に収斂する。このように、αが増加するにつれて交差エントロピー損失が比較的小さい値に収斂することは、量子化が採用されない場合、ReLUが、比較的小さい交差エントロピー損失で利用され得ることを示している。加えて、フル精度が使用される場合には、クリッピング・スケールαを訓練することは、ニューラル・ネットワークのいくつかの層の訓練コストを減少させることができる(グラフ1000ではact0およびact6として示されている)。
図13は、本明細書で説明された1つまたは複数の実施形態によって、活性化関数の範囲および1つまたは複数の入力が量子化されている場合に、ニューラル・ネットワーク内の活性化関数の範囲を変化させることが、関連する交差エントロピーのコスト関数にいかに影響を及ぼすかを示すグラフ1100である。いくつかの例において、図13で説明される活性化関数は図1のシステム100のニューラル・ネットワークの活性化関数であり得る。いくつかの例において、グラフ1100に関連したアクションは、システム100、システム200の訓練コンポーネント204、またはシステム250の初期化コンポーネント252によって実行され得る。それぞれの実施形態において採用された類似の要素の繰り返しの説明は、簡潔さのために省略されている。
グラフ1100では、y軸に沿って交差エントロピーのコスト関数1102がプロットされており、x軸に沿ってα 1104がプロットされている。グラフ1100は、重みとαの両方が量子化されているときに計算された交差エントロピー損失を示す。グラフ1100に見られるように、量子化を用いると、αが増加するにつれて損失関数も増加し、このことは、関連するニューラル・ネットワークにおいてReLU以外の手法が使用されるべきであることを示し得る。グラフ1100に見られるように、異なる層に対して交差エントロピーのコスト関数を最小化するα値は異なる。そのため、異なる層向けのこれらの異なるα値を識別するために訓練が利用され得る。
加えて、αの特定の範囲に対してプラトーが存在する(たとえばact2層について、α値が約8.75を超えると、関連する交差エントロピー損失関数はほぼ不変である)。αの特定の範囲に関するこれらのプラトーは、傾斜降下学習を使用することの妨げになる可能性がある。グラフ1100に示されたact6層のグラフは、グラフ1100に示された他の層よりも傾斜降下学習の利用に対して、より多くの障害を提示する可能性がある。
図14は、本明細書で説明された1つまたは複数の実施形態によって、訓練中にニューラル・ネットワークの内部の活性化関数の範囲を正則化することが、関連する訓練のコスト関数に影響を及ぼす様子を示すグラフ1200である。いくつかの例において、図14で説明される活性化関数は図1のシステム100のニューラル・ネットワークの活性化関数であり得る。いくつかの例において、グラフ1200に関連したアクションは、システム100、システム200の訓練コンポーネント204、またはシステム250の初期化コンポーネント252によって実行され得る。それぞれの実施形態において採用された類似の要素の繰り返しの説明は、簡潔さのために省略されている。
図13のグラフ1100とは対照的に、グラフ1200は、全損失関数(重みおよび活性化が量子化されているときのコンピュータ)を最小化するために正則化が利用され得る様子を示している。グラフ1200では、y軸に沿って訓練のコスト関数1202がプロットされており、x軸に沿ってαがプロットされている。グラフ1200に見られるように、正則化によってプラトーの影響が軽減されて、値がより速くより正確に収斂するという観点から、傾斜降下学習の使用が助長される。グラフ1200に示されるように、全体的な最小のポイントを大幅に乱すことなくプラトーの影響を軽減するために正則化器が選択され得る。
グラフ1200のそれぞれのラインに関連した中実の円は、訓練モデルから抽出されたαの値を示し、これらの場合において訓練が有効であることを示すものである。言い換えれば、グラフ1200とグラフ1100の曲線同士を比較すれば、傾斜があるグラフ1200には確率的勾配降下法を利用することができる様子が見て取れる。すなわち、グラフ1200に表示された各ラインは、確率的勾配降下法にとって判定するのが容易な値を有する明瞭なポイントがあると見なされ得る。確率的勾配降下法にとって判定するのが容易な値は、そうでない場合よりも少ない処理リソースを利用してこの明瞭なポイントを判定し得ることを意味する。
図12のグラフ1000、図13のグラフ1100、および図14のグラフ1200といった3つのグラフは、以下のように比較して対比され得る。グラフ1000は、フル精度でなければ、αが大きくなると損失が小さくなることを全体的に示すものである。次いで、グラフ1100は量子化を導入し、表示されている曲線の形状が量子化の適用によって変化したことを示す。グラフ1100において、αが大きければ損失が大きくなるので、損失を最小化するα値の選択は曲線の最先端部ではなく中間に見出され得る。次いで、グラフ1200は正則化を導入し、表示されている曲線の形状が再び変化した。各曲線は、一般に単一の最小値を有する。確率的勾配降下法を利用するとき、正則化によって、α値がより容易に判定され得る。
図15は、本明細書で説明された1つまたは複数の実施形態により、ニューラル・ネットワークのクリッピング活性化関数が訓練されて2値の活性化関数になる様子を示す3つのグラフ1300である。いくつかの例において、図15で説明される活性化関数は図1のシステム100のニューラル・ネットワークの活性化関数であり得る。いくつかの例において、グラフ1300に関連したアクションは、システム100、システム200の訓練コンポーネント204、またはシステム250の初期化コンポーネント252によって実行され得る。それぞれの実施形態において採用された類似の要素の繰り返しの説明は、簡潔さのために省略されている。
図15に表されるように、αおよびβのパラメータに加えて、(図2に関して説明されたように)サブ分解能およびサブ分解能勾配のパラメータが利用される。一般に、活性化関数の出力の勾配は、より水平な勾配から、より垂直な勾配へ、より一層垂直な勾配へと変化される。勾配がより垂直になるにつれて、関連する活性化関数の出力は、2値化された活性化関数(すなわち出力可能な値が2つしかない活性化関数)の出力に近づく。関連する活性化関数の出力が、2値化された活性化関数の出力に十分に近づいたとき、活性化関数は、出力を量子化するために、対応する2値化された活性化関数で置換され得、活性化関数の精度における損失は比較的小さい。
表されたように、活性化関数はactFn(x)=Clip(x/m+α/2,0,α)と表現され得、actFn()は活性化関数を指し、Clip()はクリッピング関数を指し、mは活性化の勾配(より小さいm値はより急峻な勾配を示す)である。訓練エポックを繰り返すことにより、クリッピング活性化関数は2値化に近づく。すなわち、訓練エポックの繰り返しによりmが減少するにつれて傾斜がより急峻になり、活性化関数は2値化関数に近づく。
グラフ1302、グラフ1304、およびグラフ1306から、3つのグラフ1300が構成されている。これら3つのグラフ1300が示す3つのポイントは、訓練処理において、グラフ1302、グラフ1304、次いでグラフ1306といった順番で生じたものである。グラフ1302には、訓練された活性化関数1308および2値化された活性化関数1310が示されている。グラフ1304に示されている訓練された活性化関数1312は、訓練された活性化関数1308よりも訓練における後のポイントである。グラフ1306に示されている訓練された活性化関数1314は、訓練された活性化関数1312よりも訓練における後のポイントである。2値化された活性化関数1310で示されるように、訓練された活性化関数1308、訓練された活性化関数1312、および訓練された活性化関数1314の勾配が、より急峻になり、垂直の勾配に近づくにつれて、mの値は、これらの表示されている関数の順に減少することに留意されたい。
図16は、本明細書で説明された1つまたは複数の実施形態によるニューラル・ネットワークの2値の活性化関数が、汎化誤差の観点から、活性化関数に匹敵する様子を示すグラフ1400である。いくつかの例において、図16で説明される活性化関数は図1のシステム100のニューラル・ネットワークの活性化関数であり得る。いくつかの例において、グラフ1400に関連したアクションは、システム100、システム200の訓練コンポーネント204、またはシステム250の初期化コンポーネント252によって実行され得る。それぞれの実施形態において採用された類似の要素の繰り返しの説明は、簡潔さのために省略されている。
グラフ1400では、y軸に沿って汎化誤差1402がプロットされており、x軸に沿ってエポックがプロットされている。図16には、(1)フル分解能活性化関数を利用するMixed National Institute of Standards and Technology Deep Neural Network(MNIST-DNN)ニューラル・ネットワーク、および(2)2値の活性化関数を利用するMNIST-DNNニューラル・ネットワークといった2つのタイプのニューラル・ネットワークに関して訓練エポックの汎化誤差がプロットされている。グラフ1400には、フル分解能活性化関数を利用するMNIST-DNNニューラル・ネットワークの汎化誤差と、2値の活性化関数を利用するMNIST-DNNニューラル・ネットワークの汎化誤差が、十分な数の訓練エポック(すなわち約250の訓練エポック)の後に、ほぼ同一になることが示されている。
具体的には、これら2つのタイプのニューラル・ネットワークは、784-2048-2048-2048-10ニューロンのアーキテクチャを用いる多層認識(MLP)MNISTニューラル・ネットワークとして実施される。3つのすべての層に対して、λ=1のL2正則化が使用される。第1の層が200のエポックについて訓練され、次の2つの層が100のエポックについて訓練され、次いで外側層が100のエポックについて訓練される。
図17は、本明細書で説明された1つまたは複数の実施形態によるニューラル・ネットワークの2値の活性化関数が、汎化誤差の観点から、活性化関数に匹敵する様子を示す別のグラフ1500である。いくつかの例において、図17で説明される活性化関数は図1のシステム100のニューラル・ネットワークの活性化関数であり得る。いくつかの例において、グラフ1500に関連したアクションは、システム100、システム200の訓練コンポーネント204、またはシステム250の初期化コンポーネント252によって実行され得る。それぞれの実施形態において採用された類似の要素の繰り返しの説明は、簡潔さのために省略されている。
グラフ1500では、y軸に沿って汎化誤差1502がプロットされており、x軸に沿ってエポック1504がプロットされている。図17には、図16と同様に、(1)フル分解能活性化関数を利用するMNIST-DNNニューラル・ネットワーク、および(2)2値の活性化関数を利用するMNIST-DNNニューラル・ネットワークといった2つのタイプのニューラル・ネットワークに関して訓練エポックの汎化誤差がプロットされている。グラフ1500には、フル分解能活性化関数を利用するMNIST-DNNニューラル・ネットワークの汎化誤差と、2値の活性化関数を利用するMNIST-DNNニューラル・ネットワークの汎化誤差が、十分な数の訓練エポック(すなわち約300の訓練エポック)の後に、ほぼ同一になることが示されている。
具体的には、これら2つのタイプのニューラル・ネットワークは、128C3-128C3-MP2-256C3-256C3-MP2-512C3-512C3-MP2-1024FC-1024FC-10ニューロンのアーキテクチャを用いて、CIFARのVisual Geometry Group(VGG)ニューラル・ネットワークとして実施される。それぞれの層に対して、L2正則化とL1正則化の両方がλtype1=0.1、λtype2=0.01、およびλtype3=0.001で再使用される。各層が50のエポックにわたって訓練される。
図18は、本明細書で説明された1つまたは複数の実施形態による活性化関数の範囲の圧縮率が、関連する汎化誤差に対応する様子を示すグラフを示す。いくつかの例において、図18で説明される活性化関数は図1のシステム100のニューラル・ネットワークの活性化関数であり得る。いくつかの例において、グラフ1600に関連したアクションは、システム100、システム200の訓練コンポーネント204、またはシステム250の初期化コンポーネント252によって実行され得る。それぞれの実施形態において採用された類似の要素の繰り返しの説明は、簡潔さのために省略されている。
グラフ1600では、汎化誤差1602(表示されたライン1610に対応する)および圧縮率1604(表示されたライン1608に対応する)がy軸に沿ってプロットされており、圧縮された層数1606がx軸に沿ってプロットされている。概略的に、ニューラル・ネットワークのより多くの層が2値化されるにつれて、圧縮率も精度損失もより大きくなる。表されるように、4つの層を2値化すると約77.2%の圧縮率と約9.28%の汎化誤差のバランスが得られ得る。
2値化する層の適切な量を求める際に、各ニューラル・ネットワークの個々の特性の影響を受ける可能性がある。一般に、2値化する層の量は、圧縮率が比較的大きくなって汎化誤差が比較的小さくなるように選択され得る。
図19は、本明細書で説明された1つまたは複数の実施形態によってニューラル・ネットワークの効率の改善を促進する、コンピュータで実施される例示の非限定的な方法のフローチャートを示す。本明細書で説明された他の実施形態において採用された類似の要素の繰り返しの説明は、簡潔さのために省略されている。それぞれの実施形態において採用された類似の要素の繰り返しの説明は、簡潔さのために省略されている。
1702において、プロセッサ(たとえばシステム100のニューラル・ネットワーク、または初期化コンポーネント202)に動作可能に結合されたデバイスは出力限度の初期値を選択することができ、出力限度はニューラル・ネットワークの活性化関数の出力の範囲を示している。たとえば、デバイスは、他のところで説明されたようなαであり得る出力限度の初期値を決定することができ、これは、ニューラル・ネットワークの活性化関数向けに使用されるαの値を決定するために訓練されることになる。いくつかの実施形態では、αの初期値は、32ビットまたは64ビットの浮動小数点データ・タイプの最大値などの比較的大きな値に選択され得る。
1704において、デバイス(たとえばシステム100のニューラル・ネットワーク、または訓練コンポーネント)は、訓練中に、出力限度の初期値を出力限度の第2の値に変更することができ、出力限度の第2の値は活性化関数に対するパラメータとして提供される。たとえば、精度低下と精度低下に由来する誤り率の軽減とのバランスをとる、使用されるαの値を決定するために、確率的勾配降下法を用いて複数の訓練エポックが実行され得る。
いくつかの実施形態では、動作1704は訓練コンポーネントによって実施され得る。訓練コンポーネントは、活性化関数コンポーネントの精度よりも高い精度を利用することができる。たとえば、ニューラル・ネットワークが、32ビットのプロセッサを有するハードウェア上で訓練され得、次いで、訓練されたニューラル・ネットワークが、2ビットのプロセッサを有するハードウェア上で動作することができる。いくつかの実施形態では、訓練コンポーネントは、精密コンポーネントよりも高い精度を有する分解能パラメータを利用することができ、サブ分解能の範囲内の勾配を示す分解能勾配パラメータを利用する。このサブ分解能パラメータおよび分解能勾配パラメータは、図4のグラフ300の説明(それぞれサブ分解能および分解能勾配と称されている)においてより詳細に説明されている。
いくつかの実施形態では、訓練コンポーネントは、訓練中に分解能勾配パラメータの値を無限大に向けて増加させる。訓練中に分解能勾配パラメータの値を無限大に向けて増加させることは、図4のグラフ300によって示されたのと同様のやり方で実行され得る。
いくつかの実施形態では、訓練コンポーネントを用いた訓練中に、量子化による正解率低下を軽減するためにクリッピングが実行される。訓練中にクリッピングを実行することの例は、少なくとも図5のグラフ400、図6のグラフ500、および図15のグラフ1300に見出される。
いくつかの実施形態では、訓練コンポーネントを用いた訓練中に逆伝播が実行される。逆伝播は、一般に、訓練エポックが実行された後、ニューラル・ネットワークにおける1つまたは複数のニューロンの誤差寄与を計算するために使用される。逆伝播を基に、次の訓練エポックのために1つまたは複数のニューロンの重みが調節され得る。逆伝播は傾斜降下法とともに使用され得、損失関数の傾斜を決定するために使用され得る。
いくつかの実施形態では、訓練コンポーネントは、出力限度が増加するにつれて交差エントロピー損失が収斂するフル精度の場合には活性化関数として正規化線形関数を使用するように判定する活性化関数選択コンポーネントを含むことができる。図12のグラフ1000を参照して、フル精度が利用されるいくつかの状況では、交差エントロピー損失は、αが増加するにつれて小さい値に収斂し得る。このように交差エントロピー損失が小さい値に収斂することは、量子化が採用されないニューラル・ネットワークにおける効率を向上させるために、活性化関数としてReLUが使用され得ることを示し得る。
いくつかの実施形態では、訓練コンポーネントが、出力限度が増加するにつれて損失関数も量子化によって増加すると判定し、正規化線形関数以外の活性化関数タイプの活性化関数を使用することを決定する活性化関数選択コンポーネントを含み得る。図13のグラフ1100を参照して、量子化を用いると、αが増加するにつれて対応する損失関数も増加し得、ニューラル・ネットワークにおける効率を向上させるためにReLU以外の活性化関数が採用され得ることを示す。
1706において、デバイス(たとえばシステム100のニューラル・ネットワークまたは活性化関数コンポーネント206)は、出力限度の第2の値をパラメータとして使用することに基づいて、活性化関数の出力を決定することができる。たとえば、ニューラル・ネットワークが、1つまたは複数の活性化関数とともに使用される1つまたは複数のα値を決定するように一旦訓練されると、次いで、この訓練されたニューラル・ネットワークは、これらのα値を用いて動作され得、そのためニューラル・ネットワークはより低い精度で動作し、したがって、より効率的に動作することができる。
図20は、本明細書で説明された1つまたは複数の実施形態によってニューラル・ネットワークの効率の改善を促進する、コンピュータで実施される別の例示の非限定的な方法のフローチャートを示す。本明細書で説明された他の実施形態において採用された類似の要素の繰り返しの説明は、簡潔さのために省略されている。それぞれの実施形態において採用された類似の要素の繰り返しの説明は、簡潔さのために省略されている。
1802において、プロセッサに動作可能に結合されたデバイス(たとえばシステム100のニューラル・ネットワークまたは初期化コンポーネント252)は出力限度の値を初期化することができ、出力限度はニューラル・ネットワークの活性化関数の出力の範囲を含み、出力限度の値は訓練によって決定される。たとえば、ニューラル・ネットワークは出力限度の値を決定するように訓練され得、出力限度の値は、他のところで説明されたようなαであり得、ニューラル・ネットワークの少なくとも1つの活性化関数について、ニューラル・ネットワークの(そのα値によって示されるような)精度の軽減と誤り率の最小化とのバランスをとる。ニューラル・ネットワークは、比較的大きな値(32ビットまたは64ビットのデータ・タイプによって表現される最大の値など)を用いてαを初期化し、次いで、確率的勾配降下法を実施して、ニューラル・ネットワークを動作させるときに使用されるαの値を決定することによって訓練され得る。
いくつかの例では、システムは、訓練中に確率的勾配降下法を適用することができる。αの値を決定するための確率的勾配降下法は、少なくとも図12のグラフ1000、図13のグラフ1100、および図14のグラフ1200を参照しながら説明されている。
いくつかの例では、システムは、出力限度の初期値を用いた訓練の実行を基に出力限度の値を決定することができる。たとえば、システムは、αの値を、32ビットまたは64ビットの浮動小数点データ・タイプによって表される最大の値として初期化し、次いで、(確率的勾配降下法などによる)訓練中にこの値を減少させて、対応する活性化関数向けに使用されるαの値を決定することができる。
いくつかの例では、システムは訓練中に出力限度を正則化することができる。この正則化は、少なくとも図13のグラフ1100および図14のグラフ1200に関して説明されている。
いくつかの例では、システムは、訓練中に、量子化による正解率低下を軽減するためにクリッピングを実行することができる。訓練中にクリッピングを実行することの例は、少なくとも図4のグラフ300、図4のグラフ400、および図15のグラフ1300に見出される。
いくつかの例では、システムは訓練中に逆伝播を採用することができる。いくつかの例では、訓練の経過中に、システムは、出力限度が増加するにつれて交差エントロピー損失が収斂するフル精度の場合には活性化関数として正規化線形関数を使用するように判定することができる。いくつかの例では、訓練の経過中に、システムは、出力限度が増加するにつれて損失関数も量子化によって増加すると判定することができ、正規化線形関数以外の活性化関数タイプの活性化関数を使用することを決定する。いくつかの例では、システムは訓練中に出力限度を正則化することができる。
いくつかの例では、出力限度の値は出力限度の第2の値よりも大きく、訓練は、出力限度を、出力限度の初期値よりも小さく出力限度の第2の値よりも大きい複数の連続した値に設定することを含む。そのような例では、確率的勾配降下法が訓練に利用され得る。出力限度の値と出力限度の第2の値の間にいくつかの中間の値があり得、これら中間の値は出力限度から第2の出力限度への訓練中に減少する。たとえば、出力限度が10で、第2の出力限度が2である場合、9、6、および4の中間の値が存在し得る。いくつかの例では、前の中間の値よりも大きい中間の値もあり得るが、中間の値は訓練を通じて減少する傾向がある。
いくつかの例では、システムは、出力限度が増加するにつれて損失関数も量子化によって増加すると判定することができ、正規化線形関数以外の活性化関数タイプの活性化関数を使用することを決定する。いくつかの例では、システムは、訓練中に、量子化による正解率低下を軽減するためにクリッピングを実行することができる。
1804において、デバイス(たとえばシステム100のニューラル・ネットワークまたは活性化関数コンポーネント254)は、出力限度の値を活性化関数のパラメータとして活性化関数の出力を決定することができる。たとえば、出力限度の値は、対応する活性化関数が0以上1以下の結果を出力するように制限されることを示すことができる。したがって、活性化関数が活性化関数の出力を決定するように実行されるとき、活性化関数のこの出力は、出力限度によって示されるように0以上で1以下に制限され得る。
いくつかの例では、活性化関数は、
および
を含む式を用いて表現される。
上記の式において、xは関連するグラフの横軸を表し、yは関連するグラフの縦軸を表す。α変数は活性化関数の出力の範囲を表す。第2のグラフについて、αに対するyの導関数は、xがα以上であれば1であり、そうでなければ0である。
いくつかの例では、活性化関数の出力は、ゼロ以上かつ出力限度以下の範囲で変化し、活性化関数の出力は、活性化関数の出力がゼロ以上かつ出力限度以下であることに基づく線形関数である。そのような例は、少なくとも図4のグラフ300および図15のグラフ1300に関して示されている。
開示された主題の様々な態様に関する状況を提供するために、図21ならびに以下の議論は、開示された主題の様々な態様が実施され得る適切な環境の概要を提供するように意図されたものである。図21は、本明細書で説明された1つまたは複数の実施形態が促進され得る例示の非限定的な動作環境のブロック図を示す。本明細書で説明された他の実施形態において採用された類似の要素の繰り返しの説明は、簡潔さのために省略されている。
図21を参照して、本開示の様々な態様を実施するのに適する動作環境1901は、コンピュータ1912も含むことができる。様々な実施形態において、システム100およびニューロン102~110の各々が、コンピュータ1912の1つまたは複数のコンポーネント、特徴、および機能であり得、またはこれらを含むことができる。コンピュータ1912は、処理ユニット1914、システム・メモリ1916、およびシステム・バス1918も含むことができる。システム・バス1918は、処理ユニット1914に対して、限定されるものではないが、システム・メモリ1916を含むシステム・コンポーネントを結合する。処理ユニット1914は、様々な利用可能なプロセッサのうちの任意のものであり得る。処理ユニット1914として、デュアル・マイクロプロセッサおよび他のマルチプロセッサ・アーキテクチャも採用され得る。システム・バス1918は、限定されるものではないが、Industrial Standard Architecture(ISA)、マイクロ・チャネル・アーキテクチャ(MSA)、Extended ISA(EISA)、Intelligent Drive Electronics(IDE)、VESA Local Bus(VLB)、Peripheral Component Interconnect(PCI)、Card Bus、ユニバーサル・シリアル・バス(USB)、Advanced Graphics Port(AGP)、ファイアワイヤ(IEEE 1094)、および小型コンピュータ・システム・インターフェース(SCSI)を含めて利用可能な種々の任意のバス・アーキテクチャを使用する、メモリ・バスもしくはメモリ・コントローラ、周辺バスもしくは外部バス、またはローカル・バスあるいはその組合せを含むいくつかの任意のタイプのバス構造であり得る。システム・メモリ1916は、揮発性メモリ1920および不揮発性メモリ1922も含むことができる。起動中などにコンピュータ1912の内部の要素の間で情報を伝達するための基本ルーチンを含んでいる基本入出力システム(BIOS)は、不揮発性メモリ1922に記憶されている。限定ではなく実例として、不揮発性メモリ1922は、読み取り専用メモリ(ROM)、プログラマブルROM(PROM)、電気的プログラマブルROM(EPROM)、電気的消去可能プログラマブルROM(EEPROM)、フラッシュ・メモリ、または不揮発性ランダム・アクセス・メモリ(RAM)(たとえば強誘電性RAM(FeRAM))を含むことができる。揮発性メモリ1920は、外部キャッシュ・メモリとして働くランダム・アクセス・メモリ(RAM)も含むことができる。限定ではなく実例として、RAMは、スタティックRAM(SRAM)、ダイナミックRAM(DRAM)、シンクロナスDRAM(SDRAM)、ダブル・データ・レートSDRAM(DDR SDRAM)、拡張SDRAM(ESDRAM)、Synchlink DRAM(SLDRAM)、直接Rambus RAM(DRRAM)、直接RambusダイナミックRAM(DRDRAM)およびRambusダイナミックRAMなど多くの形式で利用可能である。
コンピュータ1912は、取り外し可能/取り外し不能な、揮発性/不揮発性のコンピュータストレージ媒体も含むことができる。図21はたとえばディスク・ストレージ1924を示す。ディスク・ストレージ1924は、限定されるものではないが、磁気ディスク・ドライブ、フロッピー(R)・ディスク・ドライブ、テープ・ドライブ、Jazドライブ、Zipドライブ、LS-100ドライブ、フラッシュ・メモリ・カード、またはメモリ・スティックのようなデバイスを含むことができる。ディスク・ストレージ1924はまた、ストレージ媒体を、個別に、あるいは、限定されるものではないが、コンパクト・ディスクROMデバイス(CD-ROM)などの光ディスク・ドライブ、CD記録可能ドライブ(CD-Rドライブ)、CD書換可能ドライブ(CD-RWドライブ)またはデジタル多用途ディスクROMドライブ(DVD-ROM)を含む他のストレージ媒体と組み合わせて、含むことができる。システム・バス1918に対するディスク・ストレージ1924の接続を容易にするために、一般的には、インターフェース1926などの取り外し可能または取り外し不能なインターフェースが使用される。図21は、ユーザと、適切な動作環境1901において説明された基本的コンピュータ・リソースの間の仲介物として働くソフトウェアも表す。そのようなソフトウェアは、たとえばオペレーティング・システム1928を含むことができる。オペレーティング・システム1928はディスク・ストレージ1924に記憶され得、コンピュータ1912のリソースを制御したり割り当てたりするように働く。システム・アプリケーション1930は、たとえばシステム・メモリ1916またはディスク・ストレージ1924のいずれかに記憶されたプログラム・モジュール1932またはプログラム・データ1934を介して、オペレーティング・システム1928によるリソースの管理を利用する。本開示は、様々なオペレーティング・システムまたはオペレーティング・システムの組合せを用いて実施され得ることを理解されたい。ユーザは、入力デバイス1936を介して、コンピュータ1912に指令または情報を入力する。入力デバイス1936は、限定されるものではないが、マウスなどのポインティング・デバイス、トラックボール、スタイラス、タッチ・パッド、キーボード、マイクロフォン、ジョイスティック、ゲーム・パッド、衛星放送アンテナ、スキャナ、テレビジョン・チューナ・カード、デジタル・カメラ、デジタル・ビデオ・カメラ、ウェブ・カメラなどを含む。これらおよび他の入力デバイスは、インターフェース・ポート1938を通じてシステム・バス1918を介して処理ユニット1914に接続する。インターフェース・ポート1938は、たとえばシリアル・ポート、パラレル・ポート、ゲーム・ポート、およびユニバーサル・シリアル・バス(USB)を含む。出力デバイス1940は、入力デバイス1936と同一のタイプのポートのうちのいくつかを使用する。したがって、USBポートは、たとえばコンピュータ1912に入力を供給したりコンピュータ1912から出力デバイス1940に情報を出力したりするために使用され得る。出力アダプタ1942は、特別なアダプタを必要とする出力デバイス1940の中でも特にモニタ、スピーカ、およびプリンタのようないくつかの出力デバイス1940があることを示すように設けられている。出力アダプタ1942は、限定ではなく実例として、出力デバイス1940とシステム・バス1918の間の接続の手段をもたらすビデオ・アンド・サウンド・カードを含む。他のデバイスまたはデバイスのシステムあるいはその両方が、遠隔コンピュータ1944など、入力能力と出力能力の両方をもたらすことに留意されたい。
コンピュータ1912は、遠隔コンピュータ1944など1つまたは複数の遠隔コンピュータに対する論理的接続を使用して、ネットワーク化された環境の中で動作することができる。遠隔コンピュータ1944は、コンピュータ、サーバ、ルータ、ネットワークPC、ワークステーション、マイクロプロセッサ・ベースの設備、ピア・デバイスまたは他の共通のネットワーク・ニューロンなどであり得、一般的には、コンピュータ1912に関連して説明された要素のうちの多数またはすべてを含むことができる。簡潔さために、遠隔コンピュータ1944とともに示されているのはメモリ・ストレージ・デバイス1946のみである。遠隔コンピュータ1944は、コンピュータ1912に対して、ネットワーク・インターフェース1948を通じて論理的に接続され、次いで通信接続1950を介して物理的に接続されている。ネットワーク・インターフェース1948は、ローカル・エリア・ネットワーク(LAN)、広域ネットワーク(WAN)、セルラー・ネットワークなどの有線通信ネットワークまたは無線通信ネットワークあるいはその両方と、ファイバ分配データ・インターフェース(FDDI)、銅分散データ・インターフェース(CDDI)、イーサネット(R)、トークン・リングなどを含むLAN技術とを包含する。WAN技術は、限定されるものではないが、2地点間リンクと、統合サービス・デジタル・ネットワーク(ISDN)およびその変形形態のような回路交換ネットワークと、パケット交換ネットワークと、デジタル加入者回線(DSL)とを含む。通信接続1950は、ネットワーク・インターフェース1948をシステム・バス1918に接続するために採用されたハードウェア/ソフトウェアを指す。通信接続1950は、コンピュータ1912の内部の説明の明瞭さのために示されているが、コンピュータ1912の外部にも存在し得る。ネットワーク・インターフェース1948に対する接続のためのハードウェア/ソフトウェアは、例示のためにのみ、通常の電話級モデムを含むモデム、ケーブル・モデムおよびDSLモデム、ISDNアダプタ、およびイーサネット(R)・カードなどの内部技術および外部技術も含むことができる。
本発明の実施形態は、あらゆる可能な技術的詳細レベルの統合における、システム、方法、装置またはコンピュータ・プログラム製品あるいはその組合せであり得る。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を有するコンピュータ可読ストレージ媒体を含むことができる。コンピュータ可読ストレージ媒体は、命令実行デバイスが使用するための命令を保存して記憶することができる有形のデバイスであり得る。コンピュータ可読ストレージ媒体は、限定されるものではないが、たとえば電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁気ストレージ・デバイス、半導体ストレージ・デバイス、または前述のものの任意の適切な組合せであり得る。コンピュータ可読ストレージ媒体のより具体的な例の非網羅的なリストには、携帯型コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み取り専用メモリ(ROM)、消去可能プログラム可能読み取り専用メモリ(EPROMまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、携帯型コンパクト・ディスク読み取り専用メモリ(CD-ROM)、デジタル多用途ディスク(DVD)、メモリ・スティック、フロッピー(R)・ディスク、パンチカードまたは溝の中で隆起した構造に記録された命令を有するものなど機械的に符号化されたデバイス、ならびに前述のものの任意の適切な組合せも含まれ得る。コンピュータ可読ストレージ媒体は、本明細書で使用されたように、それ自体が、電波または他の自由に伝播する電磁波、導波管または他の伝送媒体を通って伝播する電磁波(たとえば光ファイバ・ケーブルを通過する光パルス)、またはワイヤを通って伝送される電気信号などの一過性の信号と解釈されるべきではない。
本明細書で説明されたコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体からそれぞれのコンピュータ・デバイス/処理デバイスにダウンロードされ得、あるいは、たとえばインターネット、ローカル・エリア・ネットワーク、広域ネットワークまたは無線ネットワークあるいはその組合せといったネットワークを通じて、外部コンピュータまたは外部ストレージ・デバイスにダウンロードされ得る。ネットワークは、銅の伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータまたはエッジ・サーバあるいはその組合せを備えることができる。各コンピュータ・デバイス/処理デバイスにおけるネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受け取って、それぞれのコンピュータ・デバイス/処理デバイスの内部のコンピュータ可読ストレージ媒体に記憶するようにコンピュータ可読プログラム命令を転送する。本発明の様々な態様の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路用のコンフィギュレーション・データ、あるいはSmalltalk(R)、C++等のオブジェクト指向のプログラム言語および「C」プログラム言語または類似のプログラム言語などの手続き型プログラム言語を含む1つまたは複数のプログラム言語の任意の組合せで書かれたソース・コードまたはオブジェクト・コードのいずれかであり得る。コンピュータ可読プログラム命令は、スタンド・アロンのソフトウェア・パッケージとして、完全にユーザのコンピュータ上で実行すること、部分的にユーザのコンピュータ上で実行すること、部分的にユーザのコンピュータ上で実行して部分的に遠隔コンピュータ上で実行することあるいは完全に遠隔コンピュータ上またはサーバ上で実行することが可能である。後者のシナリオでは、遠隔コンピュータは、ローカル・エリア・ネットワーク(LAN)もしくは広域ネットワーク(WAN)を含む任意のタイプのネットワークを介してユーザのコンピュータに接続され得、または(たとえばインターネット・サービス・プロバイダを使用するインターネットを介して)外部コンピュータに接続され得る。いくつかの実施形態では、たとえばプログラマブル・ロジック回路、フィールドプログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル・ロジック・アレイ(PLA)を含む電子回路が、本発明の態様を実行するために、電子回路をカスタマイズするコンピュータ可読プログラム命令の状態情報を利用することによってコンピュータ可読プログラム命令を実行することができる。
本発明の態様は、方法の、フローチャートまたはブロック図あるいはその両方と、装置(システム)と、本発明の実施形態によるコンピュータ・プログラム製品とを参照しながら本明細書で説明されている。フローチャートまたはブロック図あるいはその両方の各ブロックと、フローチャートまたはブロック図あるいはその両方におけるブロックの組合せとが、コンピュータ可読プログラム命令によって実施され得ることが理解されよう。これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラマブル・データ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作を実施する手段を作り出すべく、汎用コンピュータ、専用コンピュータ、または他のプログラマブル・データ処理装置のプロセッサに提供されてマシンを作り出すものであってよい。また、これらのコンピュータ可読プログラム命令は、命令が記憶されているコンピュータ可読ストレージ媒体が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作の態様を実施する命令を含む製造品を備えるべく、コンピュータ可読ストレージ媒体に記憶され、コンピュータ、プログラマブル・データ処理装置、または他のデバイス、あるいはその組合せに特定の様態で機能するように指示することができるものであってもよい。また、コンピュータ可読プログラム命令は、コンピュータ、他のプログラマブル装置、または他のデバイス上で実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作を実施するように、コンピュータによって実施されるプロセスを作り出すべく、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイスにロードされ、コンピュータ上、他のプログラマブル装置上、または他のデバイス上で一連の動作ステップを実行させるものであってもよい。
図におけるフローチャートおよびブロック図は、本発明の様々な実施形態による、システム、方法、およびコンピュータ・プログラム製品の可能な実装形態のアーキテクチャ、機能性、および動作を示す。この点に関して、フローチャートまたはブロック図における各ブロックは、モジュール、セグメント、または命令の一部分を表すことができ、指定された論理関数を実施するための1つまたは複数の実行可能命令を含む。いくつかの代替実装形態では、ブロックで示された機能が図中に示された順序から外れることがある。たとえば、連続して示された2つのブロックが、実際には、包含される機能性に依拠して実質的に同時に実行され得、または逆順に実行されることもある。ブロック図またはフローチャートあるいはその両方の各ブロック、ならびにブロック図またはフローチャートあるいはその両方におけるブロックの組合せが、指定された機能もしくは行為を実行する、または専用ハードウェアとコンピュータ命令の組合せを実行する、専用のハードウェア・ベースのシステムによって実施され得ることも注目されよう。
上記では、1つまたは複数のコンピュータ上で実行されるコンピュータ・プログラム製品のコンピュータ実行可能命令の一般的な状況において主題が説明されているが、当業者なら、本開示がまた、他のプログラム・モジュールと組み合わせて実施され得ることを認識するであろう。一般に、プログラム・モジュールは、特定のタスクを実行する、または特定の抽象データ・タイプを実施する、あるいはその両方を行う、ルーチン、プログラム、コンポーネント、データ構造などを含む。その上に、当業者なら、本発明のコンピュータで実施される方法が、シングル・プロセッサまたはマルチ・プロセッサのコンピュータ・システム、ミニコンピュータ・デバイス、メインフレーム・コンピュータ、ならびにコンピュータ、携帯用コンピュータ・デバイス(たとえばPDA、携帯電話(phone))、マイクロプロセッサ・ベースの電子機器またはプログラム可能な消費者電子機器もしくは工業用電子機器などを含む他のコンピュータ・システム構成を用いて実施され得ることを理解するであろう。示された態様は、通信ネットワークを介してリンクされた遠隔処理デバイスによってタスクが実行される分散コンピューティング環境においても実施され得る。しかしながら、本開示の、すべてでなければいくつかの態様は、スタンド・アロンのコンピュータ上で実施され得る。分散コンピューティング環境では、プログラム・モジュールは局所的メモリ・ストレージ・デバイスと遠隔メモリ・ストレージ・デバイスの両方に配置され得る。
本出願において使用されるように、「コンポーネント」、「システム」、「プラットフォーム」、「インターフェース」等の用語は、コンピュータ関連のエンティティあるいは1つまたは複数の特定の機能性を有する使用可能なマシンに関連したエンティティを指すことまたは含むことあるいはその両方が可能である。本明細書で開示されたエンティティは、ハードウェア、ハードウェアとソフトウェアの組合せ、ソフトウェア、または実行中のソフトウェアのいずれかであり得る。たとえば、コンポーネントは、限定されるものではないが、プロセッサ上で動作する処理、プロセッサ、オブジェクト、実行可能ファイル、実行のスレッド、プログラム、またはコンピュータあるいはその組合せであり得る。例として、サーバ上で実行されるアプリケーションとサーバの両方がコンポーネントであり得る。1つまたは複数のコンポーネントが、処理または実行のスレッドあるいはその両方の内部に存在し得、コンポーネントは、1つのコンピュータ上に局所化され得、または2つ以上のコンピュータの間に分散され得、あるいはその両方が可能である。別の例では、それぞれのコンポーネントは、各種データ構造を記憶している様々なコンピュータ可読媒体から実行され得る。コンポーネントは、局所処理または遠隔処理あるいはその両方によって1つまたは複数のデータ・パケットを有する信号などによる通信が可能である(たとえば局所システムにおいて、分散システムにおいて、またはインターネットなどのネットワークにわたって、あるいはその組合せによって、別のコンポーネントと相互作用する1つのコンポーネントからのデータを、上記信号によって他のシステムと通信することができる)。別の例として、コンポーネントは、プロセッサが実行するソフトウェアまたはファームウェアのアプリケーションによって動作される電気回路または電子回路によって動作する機械的部品によって与えられた特定の機能性を有する装置であり得る。そのような場合には、プロセッサは装置の内部または外部に存在し得、ソフトウェアまたはファームウェア・アプリケーションの少なくとも一部分を実行することができる。別の例として、コンポーネントは、機械的部品のない電子部品によって特定の機能性をもたらす装置であり得、電子部品は、電子部品の機能性を少なくとも部分的に与えるソフトウェアまたはファームウェアを実行するためのプロセッサまたは他の手段を含むことができる。一態様では、コンポーネントは、たとえばクラウド・コンピューティング・システムの内部の仮想マシンによって電子部品をエミュレートすることができる。
加えて、「または」という用語は、排他的な「または」ではなく包括的な「または」を意味するように意図されている。すなわち、特に指定がない限り、または状況から明瞭でなければ、「XはAまたはBを採用する」という表現は、普通の包括的な置換のうちの任意のものを意味するように意図されている。すなわち、XがAを採用するか、XがBを採用するか、またはXがAとBの両方を採用する場合には、「XはAまたはBを採用する」という表現は、前述の事例のうちの任意ものの下で満たされる。その上に、本明細書および添付された図面において使用されるような冠詞「1つの(a)」および「1つの(an)」は、一般に、特に指定がない限り、または状況から明瞭に単数の形態を対象とするのでなければ、「1つまたは複数の」という意味に解釈されるべきである。本明細書で使用されたように、「例」または「例示」あるいはその両方の用語は、例、事例、または例証として働くことを意味するように利用される。疑問を避けるために、本明細書で開示された主題は、そのような例によって限定されることはない。加えて、本明細書で「例」または「例示」あるいはその両方として説明された任意の態様または設計は、必ずしも他の態様または設計と比較して望ましいかまたは有利であるように解釈されるものではなく、当業者に既知の等価な例示的構造および技術を排除することを意味するわけでもない。
「プロセッサ」という用語は、本明細書において採用されたとき、限定されるものではないが、シングルコア・プロセッサと、ソフトウェア・マルチスレッド実行能力を有するシングル・プロセッサと、マルチコア・プロセッサと、ソフトウェア・マルチスレッド実行能力を有するマルチコア・プロセッサと、ハードウェア・マルチスレッド技術を有するマルチコア・プロセッサと、並列プラットフォームと、分散共有メモリを有する並列プラットフォームとを含めて、実質的にあらゆるコンピューティング処理ユニットまたはデバイスを指すことができる。加えて、プロセッサは、集積回路、特定用途向け集積回路(ASIC)、デジタル信号プロセッサ(DSP)、フィールド・プログラマブル・ゲート・アレイ(FPGA)、プログラマブル・ロジック・コントローラ(PLC)、複雑なプログラム可能論理デバイス(CPLD)、離散的なゲートまたはトランジスタ・ロジック、離散的なハードウェア・コンポーネント、または本明細書で説明された機能を実行するように設計された任意のそれらの組合せを指すことができる。さらに、プロセッサは、スペース利用を最適化するかまたはユーザ機器の性能を強化するために、限定されるものではないが、分子ベースおよび量子ドット・ベースのトランジスタ、スイッチおよびゲートなどのナノ・スケール・アーキテクチャを利用することができる。プロセッサは、計算する処理ユニットの組合せとしても実施され得る。本開示では、「記憶」、「ストレージ」、「データ記憶」、「データ・ストレージ」、「データベース」などの用語、ならびにコンポーネントの動作および機能性に関連する実質的に任意の他の情報ストレージ・コンポーネントは、「メモリ・コンポーネント」、「メモリ」で具現されるエンティティ、またはメモリを備えるコンポーネントを指すように利用される。本明細書で説明されたメモリまたはメモリ・コンポーネントあるいはその両方が揮発性メモリもしくは不揮発性メモリのいずれかであり得、または揮発性メモリと不揮発性メモリの両方を含み得ることを理解されたい。限定ではなく実例として、不揮発性メモリは、読み取り専用メモリ(ROM)、プログラマブルROM(PROM)、電気的プログラマブルROM(EPROM)、電気的消去可能プログラマブルROM(EEPROM)、フラッシュ・メモリ、または不揮発性ランダム・アクセス・メモリ(RAM)(たとえば強誘電性RAM(FeRAM))を含むことができる。揮発性メモリは、たとえば外部キャッシュ・メモリとして働くことができるRAMを含み得る。限定ではなく実例として、RAMは、スタティックRAM(SRAM)、ダイナミックRAM(DRAM)、シンクロナスDRAM(SDRAM)、ダブル・データ・レートSDRAM(DDR SDRAM)、拡張SDRAM(ESDRAM)、Synchlink DRAM(SLDRAM)、直接Rambus RAM(DRRAM)、直接RambusダイナミックRAM(DRDRAM)およびRambusダイナミックRAM(RDRAM)など多くの形式で利用可能である。加えて、本明細書の開示されたシステムのメモリ・コンポーネントまたはコンピュータで実施される方法は、これらおよび何らかの他の適切なタイプのメモリを含むように意図されているが、含むように限定されるわけではない。
上記で説明されたことに含まれるのは、システムと、コンピュータで実施される方法との単なる例である。本開示を説明するために、コンポーネントまたはコンピュータで実施される方法の考えられるすべての組合せを説明することはもちろん不可能であるが、当業者なら、本開示の多くのさらなる組合せおよび置換が可能であることを認識することができる。その上、「含む」、「有する」、「保有する」等の用語は、発明を実施するための形態、特許請求の範囲、補遺、および図面において使用される限り、「備える」という用語が請求項において遷移語として採用されたときに解釈されるのと同様に、包括的であるように意図されている。説明のために様々な実施形態の説明が提示されてきたが、網羅的であるように、または開示された実施形態に限定されるようには、意図されていない。当業者には、多くの変更形態および変形形態が、特許請求の範囲から逸脱することなく明らかになるであろう。本明細書で使用される用語は、実施形態の原理、実際の用途、または市場に見られる技術に対する技術的改善について最も良く説明するため、または当業者が本明細書で開示された実施形態を理解することを可能にするために選択されたものである。