(57)【要約】【課題】ニューラル・ネットワークの効率改善を促進する技術を提供する。【解決手段】一実施形態では、コンピュータ実行可能コンポーネントを記憶するメモリと、メモリに記憶されたコンピュータ実行可能コンポーネントを実行するプロセッサとを備えるシステムが提供される。一実装形態では、コンピュータ実行可能コンポーネントは、出力限度の初期値を選択する初期化コンポーネントを含み、出力限度はニューラル・ネットワークの活性化関数の出力の範囲を示す。コンピュータ実行可能コンポーネントは、訓練中に出力限度の初期値を出力限度の第２の値に変更する訓練コンポーネントをさらに含み、出力限度の第２の値は活性化関数のパラメータとして与えられる。コンピュータ実行可能コンポーネントは、パラメータとしての出力限度の第２の値に基づいて活性化関数の出力を決定する活性化関数コンポーネントをさらに含む。【選択図】図２
2021500654.tif 000002
【特許請求の範囲】
【請求項１】
システムであって、
コンピュータ実行可能コンポーネントを記憶するメモリと、
前記メモリに記憶された前記コンピュータ実行可能コンポーネントを実行するプロセッサと
を備え、前記コンピュータ実行可能コンポーネントが、
出力限度の値を選択する初期化コンポーネントであって、前記出力限度がニューラル・ネットワークの活性化関数の出力の範囲を含み、前記出力限度の値が訓練によって決定される、前記初期化コンポーネントと、
前記出力限度の前記値を前記活性化関数のパラメータとして前記活性化関数の前記出力を決定する活性化関数コンポーネントと
を含む、システム。
【請求項２】
前記初期化コンポーネントが前記出力限度の初期値を選択し、前記コンピュータ実行可能コンポーネントが、
訓練中に前記出力限度の前記初期値を前記出力限度の第２の値に変更する訓練コンポーネントをさらに含み、前記出力限度の前記第２の値が前記活性化関数の前記パラメータとして与えられる、請求項１に記載のシステム。
【請求項３】
前記活性化関数の前記出力がゼロ以上前記出力限度以下の範囲にあり、前記活性化関数の前記出力が、前記活性化関数の前記出力がゼロ以上前記出力限度以下の間にあることに基づく線形関数である、請求項１に記載のシステム。
【請求項４】
前記訓練コンポーネントが前記活性化関数コンポーネントの精度よりも高い精度を利用する、請求項２に記載のシステム。
【請求項５】
前記訓練コンポーネントが、前記活性化関数コンポーネントの前記精度よりも高い精度を有する分解能パラメータを利用し、前記訓練コンポーネントが、サブ分解能の範囲内の勾配を示す分解能勾配パラメータを利用する、請求項４に記載のシステム。
【請求項６】
前記訓練コンポーネントが、訓練中に前記分解能勾配パラメータの値を無限大に向けて増加させる、請求項５に記載のシステム。
【請求項７】
前記コンピュータ実行可能コンポーネントが、
前記訓練コンポーネントを用いた訓練中に、量子化による精度低化を軽減するためにクリッピングを実行するクリッピング・コンポーネントをさらに含む、請求項２に記載のシステム。
【請求項８】
前記コンピュータ実行可能コンポーネントが、
前記訓練コンポーネントを用いた訓練中に逆伝播を実行する逆伝播コンポーネントをさらに含む、請求項２に記載のシステム。
【請求項９】
前記コンピュータ実行可能コンポーネントが、
フル精度の場合には前記活性化関数として正規化線形関数を使用することを決定する活性化関数選択コンポーネントをさらに含み、交差エントロピー損失が、前記出力限度が増加するにつれて収斂する、請求項２に記載のシステム。
【請求項１０】
前記コンピュータ実行可能コンポーネントが、
前記出力限度が増加するにつれて損失関数も量子化によって増加すると判定して、正規化線形関数とは別のタイプの活性化関数を使用することを決定する活性化関数選択コンポーネントをさらに含む、請求項２に記載のシステム。
【請求項１１】
コンピュータで実施される方法であって、
プロセッサに動作可能に結合されたシステムによって、出力限度の値を初期化することであって、前記出力限度がニューラル・ネットワークの活性化関数の出力の範囲を含み、前記出力限度の値が訓練によって決定される、前記初期化することと、
前記システムによって、前記出力限度の前記値を前記活性化関数のパラメータとして前記活性化関数の前記出力を決定することと
を含む、コンピュータで実施される方法。
【請求項１２】
前記システムによって前記訓練中に確率的勾配降下法を適用することをさらに含む、請求項１１に記載のコンピュータで実施される方法。
【請求項１３】
前記システムによって、前記出力限度の初期値を用いた前記訓練の実行に基づいて前記出力限度の前記値を決定することをさらに含む、請求項１１に記載のコンピュータで実施される方法。
【請求項１４】
前記訓練中に前記システムによって前記出力限度を正則化することをさらに含む、請求項１１に記載のコンピュータで実施される方法。
【請求項１５】
量子化による精度低化を軽減するために、前記訓練中に前記システムによってクリッピングすることをさらに含む、請求項１１に記載のコンピュータで実施される方法。
【請求項１６】
前記訓練中に前記システムによって逆伝播を採用することをさらに含む、請求項１１に記載のコンピュータで実施される方法。
【請求項１７】
フル精度の場合には、前記システムによって、前記活性化関数として正規化線形関数を使用すると決定することをさらに含み、交差エントロピー損失が、前記出力限度が増加するにつれて収斂する、請求項１１に記載のコンピュータで実施される方法。
【請求項１８】
前記出力限度が増加するにつれて、損失関数も量子化とともに増加すると判定することと、正規化線形関数とは別のタイプの活性化関数を使用すると決定することとをさらに含む、請求項１１に記載のコンピュータで実施される方法。
【請求項１９】
深層学習の効率的な実装のために、量子化された活性化の訓練を促進するコンピュータ・プログラム製品であって、前記コンピュータ・プログラム製品は、プログラム命令が具現化されたコンピュータ可読ストレージ媒体を備え、プロセッサによって実行可能な前記プログラム命令が、前記プロセッサに、少なくとも請求項１１ないし１８のいずれか一項に記載の方法を実行させる、コンピュータ・プログラム製品。
【請求項２０】
前記出力限度がαとして表現され、前記活性化関数が
【数１】
2021500654.tif 000008
および
【数２】
2021500654.tif 000009
を含む式で表現される、請求項１９に記載のコンピュータ・プログラム製品。
【請求項２１】
前記出力限度の前記値が前記出力限度の第２の値よりも大きく、訓練が、前記出力限度を、前記出力限度の前記値よりも小さく前記出力限度の前記第２の値よりも大きい複数の連続した値に設定することを含む、請求項１９に記載のコンピュータ・プログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にニューラル・ネットワークの内部の効率を促進することに関する。
【背景技術】
【０００２】
ニューラル・ネットワーク（人工ニューラル・ネットワーク、または深層ニューラル・ネットワークと称されることもある）は、一般に脳を模倣しようとするコンピュータ・システムである。ニューラル・ネットワークは、画像の中の人間の顔の存在を識別するように訓練することまたは話し言葉を第１の言語から第２の言語へ訳すように訓練することなど、種々のやり方で利用され得る。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
ニューラル・ネットワークの効率を促進する。
【課題を解決するための手段】
【０００４】
以下は、本発明の１つまたは複数の実施形態の基本的な理解を提供するための概要を提示するものである。この概要は、重要な要素もしくは決定的な要素の識別、または特定の実施形態の何らかの範囲もしくは請求項の何らかの範囲の輪郭付けを意図するものではない。この概要の唯一の目的は、後に提示される詳細な説明の前置きとして、概念を簡単な形式で提示することである。１つまたは複数の実施形態では、システム、コンピュータで実施される方法、装置またはコンピュータ・プログラム製品あるいはその組合せがニューラル・ネットワークの効率を促進する。
【０００５】
一実施形態によれば、コンピュータ実行可能コンポーネントを記憶するメモリと、メモリに記憶されたコンピュータ実行可能コンポーネントを実行するプロセッサとを備え得るシステムが提供される。１つまたは複数の実装形態では、コンピュータ実行可能コンポーネントは、出力限度の初期値を選択する初期化コンポーネントを含み、出力限度はニューラル・ネットワークの活性化関数の出力の範囲を示す。コンピュータ実行可能コンポーネントは、訓練中に出力限度の初期値を出力限度の第２の値に変更する訓練コンポーネントをさらに含み、出力限度の第２の値は活性化関数に対するパラメータとして与えられる。コンピュータ実行可能コンポーネントは、入力としての出力限度の第２の値に基づいて活性化関数の出力を決定する活性化関数コンポーネントをさらに含む。
【０００６】
別の実施形態では、コンピュータで実施される方法が提供される。一例では、コンピュータで実施される方法は、プロセッサに動作可能に結合されたシステムによって出力限度の値を初期化することを含み、出力限度はニューラル・ネットワークの活性化関数の出力の範囲を含み、出力限度の値は訓練によって決定される。コンピュータで実施される方法は、システムによって、出力限度の値を活性化関数のパラメータとして活性化関数の出力を決定することをさらに含むことができる。
【０００７】
別の実施形態では、深層学習の効率的な実装のために、量子化された活性化の訓練を促進するコンピュータ・プログラム製品が提供され、コンピュータ・プログラム製品は、プログラム命令が具現化されたコンピュータ可読ストレージ媒体を備える。プロセッサによって実行可能なプログラム命令は、プロセッサに、出力限度の値を少なくとも初期化させることができ、出力限度はニューラル・ネットワークの活性化関数の出力の範囲を含み、出力限度の値は訓練によって決定される。プロセッサによって実行可能なプログラム命令はさらに、プロセッサに、出力限度の値を活性化関数のパラメータとして活性化関数の出力を少なくとも決定させることができる。
【０００８】
別の実施形態では、コンピュータ実行可能コンポーネントを記憶するメモリと、メモリに記憶されたコンピュータ実行可能コンポーネントを実行するプロセッサとを備え得るシステムが提供される。１つまたは複数の実装形態では、コンピュータ実行可能コンポーネントは、出力限度の値を選択する初期化コンポーネントを含み、出力限度はニューラル・ネットワークの活性化関数の出力の範囲を含み、出力限度の値は訓練によって決定される。コンピュータ実行可能コンポーネントは、出力限度の値を活性化関数のパラメータとして活性化関数の出力を決定する活性化関数コンポーネントも含むことができる。
【０００９】
別の実施形態では、コンピュータで実施される方法が提供される。一例では、コンピュータで実施される方法は、プロセッサに動作可能に結合されたシステムによって出力限度の初期値を初期化することを含み、出力限度はニューラル・ネットワークの活性化関数の出力の範囲を含む。コンピュータで実施される方法は、システムによって、訓練中に出力限度の初期値を出力限度の第２の値に変更することをさらに含むことができ、出力限度の第２の値は活性化関数のパラメータとして与えられる。コンピュータで実施される方法は、システムによって、出力限度の第２の値をパラメータとして活性化関数の出力を決定することをさらに含むことができる。
【図面の簡単な説明】
【００１０】
【図１】本明細書で説明された１つまたは複数の実施形態によって効率が促進され得る例示の非限定的なニューラル・ネットワーク・システムを示す図である。
【図２】本明細書で説明された１つまたは複数の実施形態によってニューラル・ネットワークの効率を促進する例示の非限定的なシステムのブロック図である。
【図３】本明細書で説明された１つまたは複数の実施形態を用いてニューラル・ネットワークの効率を促進する例示の非限定的なシステムの別のブロック図である。
【図４】本明細書で説明された１つまたは複数の実施形態による活性化関数の出力の例示の非限定的なグラフである。
【図５】本明細書で説明された１つまたは複数の実施形態による活性化関数の出力の例示の非限定的なグラフである。
【図６】本明細書で説明された１つまたは複数の実施形態による訓練を通じて活性化関数の範囲が減少し得る様子をプロットしたグラフである。
【図７】本明細書で説明された１つまたは複数の実施形態よって活性化関数が量子化され得る様子をプロットしたグラフである。
【図８】本明細書で説明された１つまたは複数の実施形態によって、ニューラル・ネットワークの内部の活性化関数の範囲を変化させることが、ニューラル・ネットワークの誤り率に影響を及ぼす様子を示すグラフである。
【図９】本明細書で説明された１つまたは複数の実施形態によって、ニューラル・ネットワークの内部の活性化関数の範囲を変化させることが、ニューラル・ネットワークの誤り率に影響を及ぼす様子を示す別のグラフである。
【図１０】本明細書で説明された１つまたは複数の実施形態によって、ニューラル・ネットワークの内部の活性化関数の範囲を変化させながら異なる正則化器を使用することが、ニューラル・ネットワークの誤り率に影響を及ぼす様子を示すグラフである。
【図１１】本明細書で説明された１つまたは複数の実施形態によって、ニューラル・ネットワークの内部の活性化関数の範囲を変化させながら異なる正則化器を使用することが、ニューラル・ネットワークの誤り率に影響を及ぼす様子を示す別のグラフである。
【図１２】本明細書で説明された１つまたは複数の実施形態によって、ニューラル・ネットワークの内部の活性化関数の範囲を変化させることが、関連する交差エントロピーのコスト関数に影響を及ぼす様子を示すグラフである。
【図１３】本明細書で説明された１つまたは複数の実施形態によって、範囲および１つまたは複数の入力が量子化されている活性化関数の範囲をニューラル・ネットワークの内部で変化させることが、関連する交差エントロピーのコスト関数にいかに影響を及ぼすかを示すグラフである。
【図１４】本明細書で説明された１つまたは複数の実施形態によって、訓練中にニューラル・ネットワークの内部の活性化関数の範囲を正則化することが、関連する訓練のコスト関数に影響を及ぼす様子を示すグラフである。
【図１５】本明細書で説明された１つまたは複数の実施形態により、ニューラル・ネットワークのクリッピング活性化関数が訓練されて２値の活性化関数になる様子を示す３つのグラフである。
【図１６】本明細書で説明された１つまたは複数の実施形態によるニューラル・ネットワークの２値の活性化関数が、汎化誤差の観点から活性化関数に匹敵する様子を示すグラフである。
【図１７】本明細書で説明された１つまたは複数の実施形態によるニューラル・ネットワークの２値の活性化関数が、汎化誤差の観点から活性化関数に匹敵する様子を示す別のグラフである。
【図１８】本明細書で説明された１つまたは複数の実施形態による活性化関数の範囲の圧縮率が、関連する汎化誤差に対応する様子を示すグラフである。
【図１９】本明細書で説明された１つまたは複数の実施形態によってニューラル・ネットワークの効率の改善を促進する、コンピュータで実施される例示の非限定的な方法のフローチャートである。
【図２０】本明細書で説明された１つまたは複数の実施形態によってニューラル・ネットワークの効率の改善を促進する、コンピュータで実施される別の例示の非限定的な方法のフローチャートである。
【図２１】本明細書で説明された１つまたは複数の実施形態が促進され得る例示の非限定的な動作環境のブロック図である。
【発明を実施するための形態】
【００１１】
以下の詳細な説明は単なる例示であり、実施形態、用途、または実施形態の用途あるいはその組合せを限定するように意図されたものではない。その上、先の背景技術もしくは発明の概要の段落、または発明を実施するための形態の段落において表現または暗示によって提示されたいかなる情報によっても、束縛されるようには意図されていない。
【００１２】
ニューラル・ネットワークは、一般に、複数のニューロンとそれらのニューロンの間の接続とを含んでいる。ニューロンは、一般に、（重み付けされ得る）１つまたは複数の入力を基に出力を決定するニューラル・ネットワーク・コンピュータ・システムの一部分であり、この出力は、重み付けされているであろう入力を用いる活性化関数の出力を決定することに基づいて、決定される。活性化関数の例は、０以上無限大以下の範囲の出力を生成する正規化線形関数（ＲｅＬＵ）と、−１以上１以下の出力を生成するｔａｎｈと、０以上１以下の出力を生成するｓｉｇｍｏｉｄとを含む。本明細書で説明された非限定的な例のうちのいくつかは正則化器（ＲｅＬＵ）活性化関数に関するものであるが、これらの技術は他の活性化関数に適用され得ることが理解され得る。たとえば、これらの技術はｔａｎｈ活性化関数またはｓｉｇｍｏｉｄ活性化関数の出力の適切な分解能を決定するために適用され得る。
【００１３】
ニューラル・ネットワークのニューロンは接続され得、そのため、１つのニューロンの出力が別のニューロンに対する入力として働くことができる。図１に示されるように、ニューラル・ネットワークの内部のニューロンは層へと組織化され得る。ニューラル・ネットワークの第１の層は入力層と呼ばれ得、ニューラル・ネットワークの最後の層は出力層と呼ばれ得、ニューラル・ネットワークのあらゆる介在層は隠れ層と呼ばれ得る。
【００１４】
ニューラル・ネットワークの精度は、ニューラル・ネットワークによってもたらされる結果の精度（たとえば画像が人間の顔を表しているかどうかを識別する精度）に影響を及ぼし得るので、重要であり得る。しかし、精度は（たとえば所与のレベルの精度を達成するのに必要とされる適切なニューラル・ネットワークを構築するための処理リソース、結果を決定するのに必要な時間、または金銭の観点から）割高になり得る。そこで、ニューラル・ネットワークの性能改善およびコスト低減のために、より低精度の処理ユニット（たとえば６４ビットまたは３２ビットの処理ユニットとは対照的に８ビット、４ビット、または２ビットの処理ユニット）を組み込むことができる。
【００１５】
しかしながら、ニューラル・ネットワークが低精度に量子化されて訓練されるとき、量子化によって発生するノイズのために精度が失われる恐れがある。この精度低下により、認識するように訓練された対象を認識するためのニューラル・ネットワークの能力が低下するため、ニューラル・ネットワークの性能が低下する可能性がある。そこで、本主題は、ニューラル・ネットワークの性能における精度の損失を軽減する一方で原価が削減され得るような、量子化によるニューラル・ネットワークの精度の低下を提供するものである。
【００１６】
次に、図面を参照しながら１つまたは複数の実施形態が説明され、全体にわたって、類似の参照数字は類似の要素を参照するために使用されている。以下の説明では、１つまたは複数の実施形態のより十分な理解を提供するために、説明のために多くの特定の詳細が説明される。しかしながら、１つまたは複数の実施形態が、様々な場合においてこれらの特定の詳細なしで実施され得ることが明白である。
【００１７】
図１は、本明細書で説明された１つまたは複数の実施形態によって効率が促進され得る例示の非限定的なニューラル・ネットワーク・システムを示す。本開示で説明されるシステム（たとえばシステム１００等）、装置または処理の態様は、マシンの内部で具現されるマシン実行可能コンポーネントを構成することができ、たとえば１つまたは複数のマシンに関連した１つまたは複数のコンピュータ可読媒体の中に具現される。１つまたは複数のマシン（たとえばコンピュータ、コンピュータ・デバイス、仮想マシン）は、そのようなコンポーネントを実行することにより、説明された動作を実行することができる。それぞれの実施形態において採用された類似の要素の繰り返しの説明は、簡潔さのために省略されている。
【００１８】
システム１００またはシステム１００のコンポーネントあるいはその両方は、本来技術的に高度であって抽象的でない、人の精神的行動のセットとして実行され得ない問題を解決するためのハードウェアまたはソフトウェアあるいはその両方を使用するために採用され得るものである。たとえば、システム１００またはシステム１００のコンポーネントあるいはその両方は、ニューラル・ネットワークの内部の効率を促進することを含む動作を実行するためのハードウェアまたはソフトウェアあるいはその両方を使用するために採用され得るものである。
【００１９】
さらに、実行される処理のうちのいくつかは、ニューラル・ネットワークの内部の効率の促進に関連して定義されたタスクを実行するように特化されたコンピュータによって実行され得る。システム１００またはシステム１００のコンポーネントあるいはその両方は、技術、コンピュータ・ネットワーク、インターネットなどの進歩によって生じる新規の問題を解決するために採用され得るものである。システム１００は、ニューラル・ネットワークの内部の効率の促進に関連した処理コンポーネントの中の処理効率を改善することにより、実際のインターネット・ベースの学習システムの技術的改善をさらに提供することができる。
【００２０】
表されるように、システム１００は、ニューロン１０２、ニューロン１０４、ニューロン１０６、ニューロン１０８、およびニューロン１１０といった５つのニューロンを備えるニューラル・ネットワークである。このニューラル・ネットワークの入力層１２４は、ニューロン１０２およびニューロン１０４から成る。このニューラル・ネットワークの隠れ層１２６はニューロン１０６およびニューロン１０８から成る。このニューラル・ネットワークの出力層１２８は、ニューロン１１０から成る。入力層１２４のニューロンの各々が隠れ層１２６のニューロンの各々に接続されている。すなわち、入力層１２４の各ニューロンの、場合により重み付けされた出力は、隠れ層１２６の各ニューロンに対する入力として使用される。そこで、隠れ層１２６のニューロンの各々が、出力層１２８のニューロンの各々（ここでは１つのニューロン）に対して接続されている。
【００２１】
システム１００のニューラル・ネットワークは、明瞭さのためにいくつかの特徴が強調され得るように、簡素化された例を提示してしる。本技術は、システム１００のニューラル・ネットワークよりもかなり複雑なものを含む他のニューラル・ネットワークに適用され得ることが理解され得る。
【００２２】
図１のシステム１００のニューラル・ネットワークの状況を所与として、図４〜図１８のグラフは、システム１００のニューラル・ネットワークなどのニューラル・ネットワークの効率を促進することができる様々なやり方を示し、図１９〜図２０のフローチャートは、システム１００のニューラル・ネットワークなどのニューラル・ネットワークの効率を向上させるために実施され得る、コンピュータで実施される方法を示し、図２１のブロック図は、システム１００のニューラル・ネットワークなどのニューラル・ネットワークが実施され得る動作環境を示すものである。
【００２３】
図２は、本明細書で説明された１つまたは複数の実施形態によってニューラル・ネットワークの効率を促進する例示の非限定的なシステム２００のブロック図を示す。システム２００はシステム１００および２５０と同一または類似の特徴および機能を含むことができ、逆の場合も同じである。それぞれの実施形態において採用された類似の要素の繰り返しの説明は、簡潔さのために省略されている。
【００２４】
図２に示されるように、システム２００はニューラル・ネットワーク・コンポーネント２１８を含むことができる。ニューラル・ネットワーク・コンポーネント２１８は、限定されるものではないが、初期化コンポーネント２０２、訓練コンポーネント２０４、活性化関数コンポーネント２０６、クリッピング・コンポーネント２０８、逆伝播コンポーネント２１０、および活性化関数選択コンポーネント２２０を含めて、様々なコンピュータ実行可能コンポーネントを含むことができる。ニューラル・ネットワーク・コンポーネント２１８はまた、コンピュータ実行可能コンポーネント（たとえば初期化コンポーネント２０２、訓練コンポーネント２０４、活性化関数コンポーネント２０６、クリッピング・コンポーネント２０８、逆伝播コンポーネント２１０、および活性化関数選択コンポーネント２２０）を記憶する少なくとも１つのメモリ２１２を含み得、そうでなければこれに関連付けられ得る。ニューラル・ネットワーク・コンポーネント２１８はまた、メモリ２１２に記憶されたコンピュータ実行可能命令を実行する少なくとも１つのプロセッサ２１４を含み得、そうでなければこれに関連付けられ得る。ニューラル・ネットワーク・コンポーネント２１８がさらに含み得るシステム・バス２１６は、限定されるものではないが、初期化コンポーネント２０２、訓練コンポーネント２０４、活性化関数コンポーネント２０６、クリッピング・コンポーネント２０８、逆伝播コンポーネント２１０、活性化関数選択コンポーネント２２０、メモリ２１２、またはプロセッサ２１４あるいはその組合せを含む様々なコンポーネントを結合することができる。
【００２５】
ニューラル・ネットワークの効率を促進するために、ニューラル・ネットワーク・コンポーネント２１８は初期化コンポーネント２０２を含むことができる。いくつかの実装形態では、初期化コンポーネント２０２は、出力限度の初期値を選択することができ、出力限度はニューラル・ネットワークの活性化関数の出力の範囲を示している。ニューラル・ネットワーク・コンポーネント２１８は訓練コンポーネント２０４も含むことができる。いくつかの実装形態では、訓練コンポーネント２０４は、訓練中に出力限度の初期値を出力限度の第２の値に変更することができ、出力限度の第２の値は活性化関数のパラメータとして与えられる。ニューラル・ネットワーク・コンポーネント２１８は、活性化関数コンポーネント２０６も含むことができる。いくつかの実装形態では、活性化関数コンポーネント２０６は、出力限度の第２の値をパラメータとして使用することに基づき、活性化関数の出力を決定することができる。
【００２６】
ニューラル・ネットワーク・コンポーネント２１８は、クリッピング・コンポーネント２０８も含むことができる。いくつかの実装形態では、クリッピング・コンポーネント２０８は、訓練コンポーネントを用いた訓練中に、量子化による精度劣化を軽減するためにクリッピングを実行することができる。ニューラル・ネットワーク・コンポーネント２１８は、逆伝播コンポーネント２１０も含むことができる。いくつかの実装形態では、逆伝播コンポーネント２１０は、訓練コンポーネントを用いた訓練中に逆伝播を実行することができる。ニューラル・ネットワーク・コンポーネント２１８は、活性化関数選択コンポーネント２２０も含むことができる。いくつかの実装形態では、活性化関数選択コンポーネント２２０は、出力限度が増加するにつれて交差エントロピー損失が収斂するフル精度の場合には活性化関数として正規化線形関数ＲｅＬＵを使用するように判定し、また、出力限度が増加するにつれて、損失関数も量子化とともに増加すると判定して、正規化線形関数とは別の活性化関数タイプの活性化関数を使用すると決定する。
【００２７】
システム２００のアーキテクチャは多種多様であり得ることを理解されたい。たとえば、システム２００の様々なコンポーネントはニューラル・ネットワーク・コンポーネント２１８の内部に含まれているものと表されているが、この配置は、様々なコンポーネントが１つのデバイスの内部に含まれていることを示しているのではなく、論理的なものであると理解され得る。すなわち、様々なコンポーネントは、ネットワーク化されたコンピュータ環境または分散コンピュータ環境において様々なコンピュータ・デバイスの間に分散してよい。システム２００に表されたものよりも多数または少数のコンポーネントを採用する他の適切なアーキテクチャがあり得ることも理解されよう。たとえば、活性化関数選択コンポーネント２２０を省略する別のシステムがあり得る。
【００２８】
図３は、本明細書で説明された１つまたは複数の実施形態を用いてニューラル・ネットワークの効率を促進する例示の非限定的なシステム２５０の別のブロック図を示す。システム２５０はシステム１００および２００と同一または類似の特徴および機能を含むことができ、逆の場合も同じである。それぞれの実施形態において採用された類似の要素の繰り返しの説明は、簡潔さのために省略されている。
【００２９】
図３に示されるように、システム２５０はニューラル・ネットワーク・コンポーネント２５６を含むことができる。ニューラル・ネットワーク・コンポーネント２５６は、限定されるものではないが、初期化コンポーネント２５２および活性化関数コンポーネント２５４を含めて、様々なコンピュータ実行可能コンポーネントを含み得る。ニューラル・ネットワーク・コンポーネント２５６はまた、コンピュータ実行可能コンポーネント（たとえば初期化コンポーネント２５２および活性化関数コンポーネント２５４）を記憶する少なくとも１つのメモリ２１２を含み得、そうでなければこれに関連付けられ得る。ニューラル・ネットワーク・コンポーネント２５６はまた、メモリ２１２に記憶されたコンピュータ実行可能命令を実行する少なくとも１つのプロセッサ２１４を含み得、そうでなければこれに関連付けられ得る。ニューラル・ネットワーク・コンポーネント２５６がさらに含み得るシステム・バス２１６は、限定されるものではないが、初期化コンポーネント２５２、活性化関数コンポーネント２５４、メモリ２１２、またはプロセッサ２１４あるいはその組合せを含めて、様々なコンポーネントを結合することができる。
【００３０】
ニューラル・ネットワークの効率を促進するために、ニューラル・ネットワーク・コンポーネント２５６は初期化コンポーネント２５２を含むことができる。いくつかの実装形態では、初期化コンポーネント２５２は出力限度の値を選択することができ、出力限度はニューラル・ネットワークの活性化関数の出力の範囲を含み、出力限度の値は訓練によって決定される。ニューラル・ネットワーク・コンポーネント２５６は、活性化関数コンポーネント２５４も含むことができる。いくつかの実装形態では、活性化関数コンポーネント２５４は、出力限度の値を活性化関数のパラメータとして活性化関数の出力を決定することができる。
【００３１】
システム２５０のアーキテクチャは多種多様であり得ることを理解されたい。たとえば、システム２５０の様々なコンポーネントはニューラル・ネットワーク・コンポーネント２５６の内部に含まれているものと表されているが、この配置は、様々なコンポーネントが１つのデバイスの内部に含まれていることを示しているのではなく、論理的なものであると理解され得る。すなわち、様々なコンポーネントは、ネットワーク化されたコンピュータ環境または分散コンピュータ環境において様々なコンピュータ・デバイスの間に分散してよい。システム２５０に表されたものよりも多い、または少ないコンポーネントを採用する他の適切なアーキテクチャがあり得ることも理解されよう。
【００３２】
図４は、本明細書で説明された１つまたは複数の実施形態による活性化関数の出力の例示の非限定的なグラフ３００を示す。いくつかの例において、図４で説明される活性化関数は図１のシステム１００のニューラル・ネットワークの活性化関数であり得る。いくつかの例において、グラフ３００に関連したアクションは、システム１００、システム２００の訓練コンポーネント２０４、またはシステム２５０の初期化コンポーネント２５２によって実行され得る。それぞれの実施形態において採用された類似の要素の繰り返しの説明は、簡潔さのために省略されている。
【００３３】
いくつかのニューラル・ネットワークに関連して、ネットワークの重み（ニューラル・ネットワークの１つの活性化関数の出力がニューラル・ネットワークの別の活性化関数の出力に及ぼす影響の量）と、ニューラル・ネットワークの特徴（ニューラル・ネットワークの各活性化関数の出力）との、２つのデータ構造があり得る。
【００３４】
ニューラル・ネットワークのデータ構造を表す際に量子化が利用され得る。量子化は、一般に、例えばすべての実数を整数に抑制することなど、数のセットを、より小さい離散的なセットの数へと抑制する処理である。量子化するとき、（ａ）（たとえば０以上１００以下といった）表される数の範囲、および（ｂ）表される数の分解能（たとえば０と１００の間の０．１の増分で表され、そのため表される数は０．０、０．１、０．２、．．．、１００．０である）といった２つのことが考慮され得る。範囲および分解能の各々が、複数の２値のビットを用いて別個に表され得る場合には、特定の範囲および特定の分解能を与えられた数のセットを表すために使用されるビットの総数は、範囲を表すのに使用されるビット数と分解能を表すのに使用されるビット数の合計であり得る。
【００３５】
活性化関数は、一般にニューラル・ネットワークのニューロンの内部のドット積を計算する。ＲｅＬＵなどの活性化関数は、無限の範囲および無限の分解能を有し得る。活性化関数の出力をより高速に計算すること、または活性化関数を、より安価に計算可能に、もしくはそれほど高性能でないハードウェアでも計算可能にすることなどによって、効率を向上させるように、活性化関数の範囲または分解能あるいはその両方を量子化するための努力が払われ得る。
【００３６】
活性化関数の出力の量子化の量を決定するために訓練処理が実施され得る。訓練によって、ニューラル・ネットワーク（またはニューラル・ネットワークの層もしくはニューロンなど、ニューラル・ネットワークのサブ部分）に２つの新規のパラメータが導入され得る。これら２つの新規のパラメータは、活性化関数の出力の範囲を定義するαおよび活性化関数の出力の分解能を定義するβとして表現され得る。範囲および分解能を、無限大から、合わせて４ビットで表現され得る範囲および分解能に減少させる一例を検討する。範囲に２ビットが割り当てられる場合には、範囲はたとえば０以上〜３以下をカバーすることができる。そこで、４ビットのうちの他の２ビットが分解能に割り当てられたとき、分解能は、０．２５であり得る（たとえば範囲と分解能を組み合わせると、０．０、０．２５、０．５０、．．．、３．０の数をカバーすることができる）。訓練では開始ポイントはＲｅＬＵであり得、αおよびβは無限大である。次いで、αおよびβを有限の量にするために訓練処理が使用され得る。
【００３７】
グラフ３００は、活性化関数の出力のグラフを表示するものであり、出力に関してαとβの両方が示されている。サブ分解能
【数１】
2021500654.tif 000003
および分解能勾配（１／ｍ）といった２つの追加のパラメータも示されている。サブ分解能および分解能勾配は、αおよびβのいくつかのタイプの訓練において使用される追加のパラメータであり得る。グラフ３００にはα  ３０２、β  ３０４、サブ分解能３０６、および分解能勾配３０８が示されている。いくつかの例において、分解能勾配３０８は１／ｍと定義され、ｍは確率的勾配降下処理を使用してゼロに近づくかまたは到達するように訓練されるパラメータである。ここで分解能勾配が１／ｍと定義されているので、ｍがゼロになると、分解能勾配は無限大（２値の活性化関数における勾配）に近づく。
【００３８】
たとえば、訓練ハードウェアが、ニューラル・ネットワークが最終的に動作するハードウェア以上の処理リソースを与える状況（たとえば、訓練ハードウェアは６４ビットのプロセッサを利用するが、ニューラル・ネットワークは最終的に２ビットのプロセッサ上で動作することになる状況）では、サブ分解能および分解能勾配といったこれらのパラメータは、サブ分解能および分解能勾配のパラメータが利用されなかった場合よりも正確な量子化された活性化関数を決定するために使用され得る。
【００３９】
図５は、本明細書で説明された１つまたは複数の実施形態による活性化関数の出力の別の例示の非限定的なグラフ４００を示す。いくつかの例において、図５で説明される活性化関数は図１のシステム１００のニューラル・ネットワークの活性化関数であり得る。いくつかの例において、グラフ４００に関連したアクションは、システム１００、システム２００の訓練コンポーネント２０４、またはシステム２５０の初期化コンポーネント２５２によって実行され得る。それぞれの実施形態において採用された類似の要素の繰り返しの説明は、簡潔さのために省略されている。
【００４０】
表されるように、活性化関数は次式を用いて表現される。
【数２】
2021500654.tif 000004
【００４１】
上記の式において、ｘはグラフ４００の横軸４０２を表し、ｙはグラフ４００の縦軸４０４を表す。αは活性化関数の出力の範囲を表す。表されるように、グラフ４００の横軸と縦軸の両方にαがあることに留意されたい。上記の式において、またグラフ４００に表されるように、活性化関数ｙの出力４０６の値は、ｘがゼロ未満のとき０となり、ｘがゼロを超えてα未満であるときｘとなり、ｘがα以上のときαとなる。
【００４２】
次いで、αは次式による訓練によって決定され得る。
【数３】
2021500654.tif 000005
【００４３】
この式において、αに対するｙの導関数は、ｘがα以上であれば１であり、そうでなければ０である。この式を用いてαを訓練する処理では、確率的勾配降下法が使用され得る。確率的勾配降下のそれぞれの繰り返しが使用されるとき、活性化関数に逆伝播が適用され得、上記の導関数が計算され得、したがって確率的勾配降下の次の繰り返しのためにαが更新され得る。
【００４４】
確率的勾配降下法では、αは、活性化の出力と比較して大きな値に初期化され得る。たとえば、αは、浮動小数点データ・タイプが表すことができる最大の値に初期化され得る。３２ビットの浮動小数点データ・タイプでは、この最大値は３．４×１０３８であり得る。６４ビットの浮動小数点データ・タイプでは、この最大値は１．７×１０３０８であり得る。次いで、αのこの値は、確率的勾配降下法を使用して、一般に繰り返しを通じて減少するはずである。
【００４５】
αを訓練する処理において正則化器が採用され得る。いくつかの例において、Ｌ２正則化器が採用され得、損失が大きいほどパラメータがより変更される。訓練の処理では、任意の他の適切な正則化器も採用され得る。加えて、訓練中にＬ２正則化器を適用する結果として、αに対してクリッピングが採用され得、αの値は所定の閾値以下に制限される。
【００４６】
図６は、本明細書で説明された１つまたは複数の実施形態による訓練によって活性化関数の範囲が縮小され得る様子をプロットしたグラフ５００を示す。いくつかの例において、図６で説明される活性化関数は図１のシステム１００のニューラル・ネットワークの活性化関数であり得る。いくつかの例において、グラフ５００に関連したアクションは、システム１００、システム２００の訓練コンポーネント２０４、またはシステム２５０の初期化コンポーネント２５２によって実行され得る。それぞれの実施形態において採用された類似の要素の繰り返しの説明は、簡潔さのために省略されている。
【００４７】
上記のグラフにおいて、λαは、αに対して実行される正則化の量を表す。表されたグラフ５００ではλαは０．０１である。一般に、より大きなλ値はより多くの正則化が実行されることを示し、０のλ値は正則化が実行されないことを示す。グラフ５００のｘ軸に沿って複数の訓練エポック５０４がプロットされており、グラフ５００のｙ軸に沿って対応するα値５０２がプロットされている。
【００４８】
グラフ５００は、開示された技術を使用して、Canadian Institutefor Advanced Research（ＣＩＦＡＲ）のＲｅｓＮｅｔニューラル・ネットワークにおいて訓練エポックを通じてαが減少する様子を示す。αは、正則化器（ＲｅＬＵ）の活性化関数を模倣するために当初は大きな値に設定され、次いで、ＣＩＦＡＲのＲｅｓＮｅｔニューラル・ネットワークの異なる層に関するα値は、訓練エポックの間に収斂する。コスト関数を最小化する最適なαは、訓練を通じて達成される。
【００４９】
正則化によって、αは後のエポックになるほど小さくなり、したがって、量子化による精度劣化を軽減するためのクリッピングを実行する。
【００５０】
図７は、本明細書で説明された１つまたは複数の実施形態よって活性化関数がどのように量子化され得るかをプロットしたグラフ６００を示す。いくつかの例において、図７で説明される活性化関数は図１のシステム１００のニューラル・ネットワークの活性化関数であり得る。いくつかの例において、グラフ６００に関連したアクションは、システム１００、システム２００の訓練コンポーネント２０４、またはシステム２５０の初期化コンポーネント２５２によって実行され得る。それぞれの実施形態において採用された類似の要素の繰り返しの説明は、簡潔さのために省略されている。
【００５１】
グラフ６００によって表されるように、利用される関連した量子化の式は、ｘｑ＝ｒｏｕｎｄ（ｘ／α・（２ｂ−１））・α・１／（２ｂ−１）と表される。この式において、ｘｑは量子化の計算量を表し、ｂは所与の量の量子化に使用されるビット数を表し（グラフ６００の例ではｂ＝２である）、ｒｏｕｎｄ（）は入力を最近整数に丸める関数を表す。パラメータ化されたクリッピングの後に、値は０とαの間になるように制約される。量子化の式に関連した出力値がグラフ６００にプロットされており、ｙ軸に沿って出現６０２がプロットされており、クリップされた活性化６０４がｘ軸に沿ってプロットされている。
【００５２】
図８は、本明細書で説明された１つまたは複数の実施形態によって、ニューラル・ネットワークの内部の活性化関数の範囲を変化させることが、ニューラル・ネットワークの誤り率に影響を及ぼす様子を示すグラフ７００を示す。いくつかの例において、図８で説明される活性化関数は図１のシステム１００のニューラル・ネットワークの活性化関数であり得る。いくつかの例において、グラフ７００に関連したアクションは、システム１００、システム２００の訓練コンポーネント２０４、またはシステム２５０の初期化コンポーネント２５２によって実行され得る。それぞれの実施形態において採用された類似の要素の繰り返しの説明は、簡潔さのために省略されている。
【００５３】
グラフ７００では、ｙ軸に沿って訓練誤差７０２がプロットされており、ｘ軸に沿ってエポック７０４がプロットされている。グラフ７００はＣＩＦＡＲのＲｅｓＮｅｔニューラル・ネットワークに基づくものである。α共有の４つの異なるタイプの各々について、訓練エポックごとの訓練誤差の量がグラフに表示されている：すなわち、ＲｅＬＵ（αをすべて省略する）、ニューロンごとのパラメータ・クリッピング（たとえばニューラル・ネットワークの各ニューロンがそれ自体のα値を有する）、層ごとのパラメータ・クリッピング、およびチャネルごとのパラメータ・クリッピングの４つのタイプである。αは１．０に初期化され、この例ではαは正則化されない。グラフ７００に見られるように、層ごとのパラメータ・クリッピングを使用すると、この調査における訓練誤差が最小になる。
【００５４】
図９は、本明細書で説明された１つまたは複数の実施形態によって、ニューラル・ネットワークの内部の活性化関数の範囲を変化させることが、ニューラル・ネットワークの誤り率に影響を及ぼす様子を示す別のグラフ７５０である。いくつかの例において、図９で説明される活性化関数は図１のシステム１００のニューラル・ネットワークの活性化関数であり得る。いくつかの例において、グラフ７５０に関連したアクションは、システム１００、システム２００の訓練コンポーネント２０４、またはシステム２５０の初期化コンポーネント２５２によって実行され得る。それぞれの実施形態において採用された類似の要素の繰り返しの説明は、簡潔さのために省略されている。
【００５５】
グラフ７５０では、ｙ軸に沿って検証誤差７５２がプロットされており、ｘ軸に沿ってエポック７５４がプロットされている。グラフ７５０は、図８のグラフ７００と同様に、ＣＩＦＡＲのＲｅｓＮｅｔニューラル・ネットワークに基づくものである。グラフ７００はそれぞれの訓練エポックにおける訓練誤差の量を示すものであるが、グラフ７５０は、α共有の４つの異なるタイプの各々について、訓練エポックごとの検証誤差の量を示す：すなわち、ＲｅＬＵ（αをすべて省略する）、ニューロンごとのパラメータ・クリッピング（たとえばニューラル・ネットワークの各ニューロンがそれ自体のα値を有する）、層ごとのパラメータ・クリッピング、およびチャネルごとのパラメータ・クリッピングの４つのタイプである。グラフ７００と同様に、αは１．０に初期化され、この例ではαは正則化されない。グラフ７５０に見られるように、この調査の検証誤差が最小になるのはＲｅＬＵであり、層ごとのパラメータ・クリッピングを使用するものがこれに続く。
【００５６】
図１０は、本明細書で説明された１つまたは複数の実施形態によって、ニューラル・ネットワークの内部の活性化関数の範囲を変化させながら異なる正則化器を使用することが、ニューラル・ネットワークの誤り率に影響を及ぼす様子を示すグラフ８００である。いくつかの例において、図１０で説明される活性化関数は図１のシステム１００のニューラル・ネットワークの活性化関数であり得る。いくつかの例において、グラフ８００に関連したアクションは、システム１００、システム２００の訓練コンポーネント２０４、またはシステム２５０の初期化コンポーネント２５２によって実行され得る。それぞれの実施形態において採用された類似の要素の繰り返しの説明は、簡潔さのために省略されている。
【００５７】
グラフ８００では、ｙ軸に沿って訓練誤差８０２がプロットされており、ｘ軸に沿ってエポック８０４がプロットされている。グラフ８００において、λαはそれぞれの訓練エポックにおいて使用される正則化の量を表し、λαが０に設定されると正則化が使用されないことを示す。グラフ８００に見られるように、適切なαを決定するための本技術は、広範囲のλ値にわたって頑健に作動する。表されるように、λαの値は、０．００００１〜０．１の間で、所与の訓練エポックに対してほぼ類似の訓練誤差を生成する。グラフ８００は、ＣＩＦＡＲのＲｅｓＮｅｔ活性化関数を使用する様々な訓練エポックに対する訓練誤差を示す。
【００５８】
図１１は、本明細書で説明された１つまたは複数の実施形態によって、ニューラル・ネットワークの内部の活性化関数の範囲を変化させながら異なる正則化器を使用することが、ニューラル・ネットワークの誤り率に影響を及ぼす様子を示す別のグラフ９００である。いくつかの例において、図１１で説明される活性化関数は図１のシステム１００のニューラル・ネットワークの活性化関数であり得る。いくつかの例において、グラフ９００に関連したアクションは、システム１００、システム２００の訓練コンポーネント２０４、またはシステム２５０の初期化コンポーネント２５２によって実行され得る。それぞれの実施形態において採用された類似の要素の繰り返しの説明は、簡潔さのために省略されている。
【００５９】
グラフ９００では、ｙ軸に沿って検証誤差９０２がプロットされており、ｘ軸に沿ってエポック９０４がプロットされている。加えて、グラフ９００では、ＲｅＬＵを用いたフル精度のグラフばかりでなく、活性化関数に対して種々の正則化値が適用されている。一般に、αがより大きければ検証誤差はより小さくなる。
【００６０】
図１２は、本明細書で説明された１つまたは複数の実施形態によって、ニューラル・ネットワークの内部の活性化関数の範囲を変化させることが、関連する交差エントロピーのコスト関数に影響を及ぼす様子を示すグラフ１０００である。いくつかの例において、図１２で説明される活性化関数は図１のシステム１００のニューラル・ネットワークの活性化関数であり得る。いくつかの例において、グラフ１０００に関連したアクションは、システム１００、システム２００の訓練コンポーネント２０４、またはシステム２５０の初期化コンポーネント２５２によって実行され得る。それぞれの実施形態において採用された類似の要素の繰り返しの説明は、簡潔さのために省略されている。
【００６１】
図１２（ならびに図１３および図１４）は、αが訓練されるときに生じるものを示すために使用され得る。ニューラル・ネットワークの効率を向上させる開示された主題がどのように動作し得るかを示すために、αに対する訓練損失（交差エントロピー損失と正則化を含む全損失との組合せ）が、家屋番号（ＳＶＨＮ：Street View House Numbers）データセットに関してプロットされ得る。グラフ１０００（ならびにグラフ１１００およびグラフ１２００）については、モデルは、所与の量子化方式を用いて訓練され、次いで、損失関数を計算するために、他の変数（重み、使用されるビット数、およびβなど）を固定したまま、ニューラル・ネットワークの１つの特定の層の扱いやすいαが用いられる。ここで、グラフ１０００では、損失関数はフル精度対αに関して計算されている。
【００６２】
グラフ１０００では、ｙ軸に沿って交差エントロピーのコスト関数１００２がプロットされており、ｘ軸に沿ってα  １００４がプロットされている。グラフ１０００に示されるように、フル精度の場合には、交差エントロピー損失はαが増加するにつれて比較的小さい値に収斂する。このように、αが増加するにつれて交差エントロピー損失が比較的小さい値に収斂することは、量子化が採用されない場合、ＲｅＬＵが、比較的小さい交差エントロピー損失で利用され得ることを示している。加えて、フル精度が使用される場合には、クリッピング・スケールαを訓練することは、ニューラル・ネットワークのいくつかの層の訓練コストを減少させることができる（グラフ１０００ではａｃｔ０およびａｃｔ６として示されている）。
【００６３】
図１３は、本明細書で説明された１つまたは複数の実施形態によって、活性化関数の範囲および１つまたは複数の入力が量子化されている場合に、ニューラル・ネットワーク内の活性化関数の範囲を変化させることが、関連する交差エントロピーのコスト関数にいかに影響を及ぼすかを示すグラフ１１００である。いくつかの例において、図１３で説明される活性化関数は図１のシステム１００のニューラル・ネットワークの活性化関数であり得る。いくつかの例において、グラフ１１００に関連したアクションは、システム１００、システム２００の訓練コンポーネント２０４、またはシステム２５０の初期化コンポーネント２５２によって実行され得る。それぞれの実施形態において採用された類似の要素の繰り返しの説明は、簡潔さのために省略されている。
【００６４】
グラフ１１００では、ｙ軸に沿って交差エントロピーのコスト関数１１０２がプロットされており、ｘ軸に沿ってα  １１０４がプロットされている。グラフ１１００は、重みとαの両方が量子化されているときに計算された交差エントロピー損失を示す。グラフ１１００に見られるように、量子化を用いると、αが増加するにつれて損失関数も増加し、このことは、関連するニューラル・ネットワークにおいてＲｅＬＵ以外の手法が使用されるべきであることを示し得る。グラフ１１００に見られるように、異なる層に対して交差エントロピーのコスト関数を最小化するα値は異なる。そのため、異なる層向けのこれらの異なるα値を識別するために訓練が利用され得る。
【００６５】
加えて、αの特定の範囲に対してプラトーが存在する（たとえばａｃｔ２層について、α値が約８．７５を超えると、関連する交差エントロピー損失関数はほぼ不変である）。αの特定の範囲に関するこれらのプラトーは、傾斜降下学習を使用することの妨げになる可能性がある。グラフ１１００に示されたａｃｔ６層のグラフは、グラフ１１００に示された他の層よりも傾斜降下学習の利用に対して、より多くの障害を提示する可能性がある。
【００６６】
図１４は、本明細書で説明された１つまたは複数の実施形態によって、訓練中にニューラル・ネットワークの内部の活性化関数の範囲を正則化することが、関連する訓練のコスト関数に影響を及ぼす様子を示すグラフ１２００である。いくつかの例において、図１４で説明される活性化関数は図１のシステム１００のニューラル・ネットワークの活性化関数であり得る。いくつかの例において、グラフ１２００に関連したアクションは、システム１００、システム２００の訓練コンポーネント２０４、またはシステム２５０の初期化コンポーネント２５２によって実行され得る。それぞれの実施形態において採用された類似の要素の繰り返しの説明は、簡潔さのために省略されている。
【００６７】
図１３のグラフ１１００とは対照的に、グラフ１２００は、全損失関数（重みおよび活性化が量子化されているときのコンピュータ）を最小化するために正則化が利用され得る様子を示している。グラフ１２００では、ｙ軸に沿って訓練のコスト関数１２０２がプロットされており、ｘ軸に沿ってαがプロットされている。グラフ１２００に見られるように、正則化によってプラトーの影響が軽減されて、値がより速くより正確に収斂するという観点から、傾斜降下学習の使用が助長される。グラフ１２００に示されるように、全体的な最小のポイントを大幅に乱すことなくプラトーの影響を軽減するために正則化器が選択され得る。
【００６８】
グラフ１２００のそれぞれのラインに関連した中実の円は、訓練モデルから抽出されたαの値を示し、これらの場合において訓練が有効であることを示すものである。言い換えれば、グラフ１２００とグラフ１１００の曲線同士を比較すれば、傾斜があるグラフ１２００には確率的勾配降下法を利用することができる様子が見て取れる。すなわち、グラフ１２００に表示された各ラインは、確率的勾配降下法にとって判定するのが容易な値を有する明瞭なポイントがあると見なされ得る。確率的勾配降下法にとって判定するのが容易な値は、そうでない場合よりも少ない処理リソースを利用してこの明瞭なポイントを判定し得ることを意味する。
【００６９】
図１２のグラフ１０００、図１３のグラフ１１００、および図１４のグラフ１２００といった３つのグラフは、以下のように比較して対比され得る。グラフ１０００は、フル精度でなければ、αが大きくなると損失が小さくなることを全体的に示すものである。次いで、グラフ１１００は量子化を導入し、表示されている曲線の形状が量子化の適用によって変化したことを示す。グラフ１１００において、αが大きければ損失が大きくなるので、損失を最小化するα値の選択は曲線の最先端部ではなく中間に見出され得る。次いで、グラフ１２００は正則化を導入し、表示されている曲線の形状が再び変化した。各曲線は、一般に単一の最小値を有する。確率的勾配降下法を利用するとき、正則化によって、α値がより容易に判定され得る。
【００７０】
図１５は、本明細書で説明された１つまたは複数の実施形態により、ニューラル・ネットワークのクリッピング活性化関数が訓練されて２値の活性化関数になる様子を示す３つのグラフ１３００である。いくつかの例において、図１５で説明される活性化関数は図１のシステム１００のニューラル・ネットワークの活性化関数であり得る。いくつかの例において、グラフ１３００に関連したアクションは、システム１００、システム２００の訓練コンポーネント２０４、またはシステム２５０の初期化コンポーネント２５２によって実行され得る。それぞれの実施形態において採用された類似の要素の繰り返しの説明は、簡潔さのために省略されている。
【００７１】
図１５に表されるように、αおよびβのパラメータに加えて、（図２に関して説明されたように）サブ分解能およびサブ分解能勾配のパラメータが利用される。一般に、活性化関数の出力の勾配は、より水平な勾配から、より垂直な勾配へ、より一層垂直な勾配へと変化される。勾配がより垂直になるにつれて、関連する活性化関数の出力は、２値化された活性化関数（すなわち出力可能な値が２つしかない活性化関数）の出力に近づく。関連する活性化関数の出力が、２値化された活性化関数の出力に十分に近づいたとき、活性化関数は、出力を量子化するために、対応する２値化された活性化関数で置換され得、活性化関数の精度における損失は比較的小さい。
【００７２】
表されたように、活性化関数はａｃｔＦｎ（ｘ）＝Ｃｌｉｐ（ｘ／ｍ＋α／２，０，α）と表現され得、ａｃｔＦｎ（）は活性化関数を指し、Ｃｌｉｐ（）はクリッピング関数を指し、ｍは活性化の勾配（より小さいｍ値はより急峻な勾配を示す）である。訓練エポックを繰り返すことにより、クリッピング活性化関数は２値化に近づく。すなわち、訓練エポックの繰り返しによりｍが減少するにつれて傾斜がより急峻になり、活性化関数は２値化関数に近づく。
【００７３】
グラフ１３０２、グラフ１３０４、およびグラフ１３０６から、３つのグラフ１３００が構成されている。これら３つのグラフ１３００が示す３つのポイントは、訓練処理において、グラフ１３０２、グラフ１３０４、次いでグラフ１３０６といった順番で生じたものである。グラフ１３０２には、訓練された活性化関数１３０８および２値化された活性化関数１３１０が示されている。グラフ１３０４に示されている訓練された活性化関数１３１２は、訓練された活性化関数１３０８よりも訓練における後のポイントである。グラフ１３０６に示されている訓練された活性化関数１３１４は、訓練された活性化関数１３１２よりも訓練における後のポイントである。２値化された活性化関数１３１０で示されるように、訓練された活性化関数１３０８、訓練された活性化関数１３１２、および訓練された活性化関数１３１４の勾配が、より急峻になり、垂直の勾配に近づくにつれて、ｍの値は、これらの表示されている関数の順に減少することに留意されたい。
【００７４】
図１６は、本明細書で説明された１つまたは複数の実施形態によるニューラル・ネットワークの２値の活性化関数が、汎化誤差の観点から、活性化関数に匹敵する様子を示すグラフ１４００である。いくつかの例において、図１６で説明される活性化関数は図１のシステム１００のニューラル・ネットワークの活性化関数であり得る。いくつかの例において、グラフ１４００に関連したアクションは、システム１００、システム２００の訓練コンポーネント２０４、またはシステム２５０の初期化コンポーネント２５２によって実行され得る。それぞれの実施形態において採用された類似の要素の繰り返しの説明は、簡潔さのために省略されている。
【００７５】
グラフ１４００では、ｙ軸に沿って汎化誤差１４０２がプロットされており、ｘ軸に沿ってエポックがプロットされている。図１６には、（１）フル分解能活性化関数を利用するMixed National Institute of Standards and Technology Deep Neural Network（ＭＮＩＳＴ−ＤＮＮ）ニューラル・ネットワーク、および（２）２値の活性化関数を利用するＭＮＩＳＴ−ＤＮＮニューラル・ネットワークといった２つのタイプのニューラル・ネットワークに関して訓練エポックの汎化誤差がプロットされている。グラフ１４００には、フル分解能活性化関数を利用するＭＮＩＳＴ−ＤＮＮニューラル・ネットワークの汎化誤差と、２値の活性化関数を利用するＭＮＩＳＴ−ＤＮＮニューラル・ネットワークの汎化誤差が、十分な数の訓練エポック（すなわち約２５０の訓練エポック）の後に、ほぼ同一になることが示されている。
【００７６】
具体的には、これら２つのタイプのニューラル・ネットワークは、７８４−２０４８−２０４８−２０４８−１０ニューロンのアーキテクチャを用いる多層認識（ＭＬＰ）ＭＮＩＳＴニューラル・ネットワークとして実施される。３つのすべての層に対して、λ＝１のＬ２正則化が使用される。第１の層が２００のエポックについて訓練され、次の２つの層が１００のエポックについて訓練され、次いで外側層が１００のエポックについて訓練される。
【００７７】
図１７は、本明細書で説明された１つまたは複数の実施形態によるニューラル・ネットワークの２値の活性化関数が、汎化誤差の観点から、活性化関数に匹敵する様子を示す別のグラフ１５００である。いくつかの例において、図１７で説明される活性化関数は図１のシステム１００のニューラル・ネットワークの活性化関数であり得る。いくつかの例において、グラフ１５００に関連したアクションは、システム１００、システム２００の訓練コンポーネント２０４、またはシステム２５０の初期化コンポーネント２５２によって実行され得る。それぞれの実施形態において採用された類似の要素の繰り返しの説明は、簡潔さのために省略されている。
【００７８】
グラフ１５００では、ｙ軸に沿って汎化誤差１５０２がプロットされており、ｘ軸に沿ってエポック１５０４がプロットされている。図１７には、図１６と同様に、（１）フル分解能活性化関数を利用するＭＮＩＳＴ−ＤＮＮニューラル・ネットワーク、および（２）２値の活性化関数を利用するＭＮＩＳＴ−ＤＮＮニューラル・ネットワークといった２つのタイプのニューラル・ネットワークに関して訓練エポックの汎化誤差がプロットされている。グラフ１５００には、フル分解能活性化関数を利用するＭＮＩＳＴ−ＤＮＮニューラル・ネットワークの汎化誤差と、２値の活性化関数を利用するＭＮＩＳＴ−ＤＮＮニューラル・ネットワークの汎化誤差が、十分な数の訓練エポック（すなわち約３００の訓練エポック）の後に、ほぼ同一になることが示されている。
【００７９】
具体的には、これら２つのタイプのニューラル・ネットワークは、１２８Ｃ３−１２８Ｃ３−ＭＰ２−２５６Ｃ３−２５６Ｃ３−ＭＰ２−５１２Ｃ３−５１２Ｃ３−ＭＰ２−１０２４ＦＣ−１０２４ＦＣ−１０ニューロンのアーキテクチャを用いて、ＣＩＦＡＲのVisual Geometry Group（ＶＧＧ）ニューラル・ネットワークとして実施される。それぞれの層に対して、Ｌ２正則化とＬ１正則化の両方がλｔｙｐｅ１＝０．１、λｔｙｐｅ２＝０．０１、およびλｔｙｐｅ３＝０．００１で再使用される。各層が５０のエポックにわたって訓練される。
【００８０】
図１８は、本明細書で説明された１つまたは複数の実施形態による活性化関数の範囲の圧縮率が、関連する汎化誤差に対応する様子を示すグラフを示す。いくつかの例において、図１８で説明される活性化関数は図１のシステム１００のニューラル・ネットワークの活性化関数であり得る。いくつかの例において、グラフ１６００に関連したアクションは、システム１００、システム２００の訓練コンポーネント２０４、またはシステム２５０の初期化コンポーネント２５２によって実行され得る。それぞれの実施形態において採用された類似の要素の繰り返しの説明は、簡潔さのために省略されている。
【００８１】
グラフ１６００では、汎化誤差１６０２（表示されたライン１６１０に対応する）および圧縮率１６０４（表示されたライン１６０８に対応する）がｙ軸に沿ってプロットされており、圧縮された層数１６０６がｘ軸に沿ってプロットされている。概略的に、ニューラル・ネットワークのより多くの層が２値化されるにつれて、圧縮率も精度損失もより大きくなる。表されるように、４つの層を２値化すると約７７．２％の圧縮率と約９．２８％の汎化誤差のバランスが得られ得る。
【００８２】
２値化する層の適切な量を求める際に、各ニューラル・ネットワークの個々の特性の影響を受ける可能性がある。一般に、２値化する層の量は、圧縮率が比較的大きくなって汎化誤差が比較的小さくなるように選択され得る。
【００８３】
図１９は、本明細書で説明された１つまたは複数の実施形態によってニューラル・ネットワークの効率の改善を促進する、コンピュータで実施される例示の非限定的な方法のフローチャートを示す。本明細書で説明された他の実施形態において採用された類似の要素の繰り返しの説明は、簡潔さのために省略されている。それぞれの実施形態において採用された類似の要素の繰り返しの説明は、簡潔さのために省略されている。
【００８４】
１７０２において、プロセッサ（たとえばシステム１００のニューラル・ネットワーク、または初期化コンポーネント２０２）に動作可能に結合されたデバイスは出力限度の初期値を選択することができ、出力限度はニューラル・ネットワークの活性化関数の出力の範囲を示している。たとえば、デバイスは、他のところで説明されたようなαであり得る出力限度の初期値を決定することができ、これは、ニューラル・ネットワークの活性化関数向けに使用されるαの値を決定するために訓練されることになる。いくつかの実施形態では、αの初期値は、３２ビットまたは６４ビットの浮動小数点データ・タイプの最大値などの比較的大きな値に選択され得る。
【００８５】
１７０４において、デバイス（たとえばシステム１００のニューラル・ネットワーク、または訓練コンポーネント）は、訓練中に、出力限度の初期値を出力限度の第２の値に変更することができ、出力限度の第２の値は活性化関数に対するパラメータとして提供される。たとえば、精度低下と精度低下に由来する誤り率の軽減とのバランスをとる、使用されるαの値を決定するために、確率的勾配降下法を用いて複数の訓練エポックが実行され得る。
【００８６】
いくつかの実施形態では、動作１７０４は訓練コンポーネントによって実施され得る。訓練コンポーネントは、活性化関数コンポーネントの精度よりも高い精度を利用することができる。たとえば、ニューラル・ネットワークが、３２ビットのプロセッサを有するハードウェア上で訓練され得、次いで、訓練されたニューラル・ネットワークが、２ビットのプロセッサを有するハードウェア上で動作することができる。いくつかの実施形態では、訓練コンポーネントは、精密コンポーネントよりも高い精度を有する分解能パラメータを利用することができ、サブ分解能の範囲内の勾配を示す分解能勾配パラメータを利用する。このサブ分解能パラメータおよび分解能勾配パラメータは、図４のグラフ３００の説明（それぞれサブ分解能および分解能勾配と称されている）においてより詳細に説明されている。
【００８７】
いくつかの実施形態では、訓練コンポーネントは、訓練中に分解能勾配パラメータの値を無限大に向けて増加させる。訓練中に分解能勾配パラメータの値を無限大に向けて増加させることは、図４のグラフ３００によって示されたのと同様のやり方で実行され得る。
【００８８】
いくつかの実施形態では、訓練コンポーネントを用いた訓練中に、量子化による精度劣化を軽減するためにクリッピングが実行される。訓練中にクリッピングを実行することの例は、少なくとも図５のグラフ４００、図６のグラフ５００、および図１５のグラフ１３００に見出される。
【００８９】
いくつかの実施形態では、訓練コンポーネントを用いた訓練中に逆伝播が実行される。逆伝播は、一般に、訓練エポックが実行された後、ニューラル・ネットワークにおける１つまたは複数のニューロンの誤差寄与を計算するために使用される。逆伝播を基に、次の訓練エポックのために１つまたは複数のニューロンの重みが調節され得る。逆伝播は傾斜降下法とともに使用され得、損失関数の傾斜を決定するために使用され得る。
【００９０】
いくつかの実施形態では、訓練コンポーネントは、出力限度が増加するにつれて交差エントロピー損失が収斂するフル精度の場合には活性化関数として正規化線形関数を使用するように判定する活性化関数選択コンポーネントを含むことができる。図１２のグラフ１０００を参照して、フル精度が利用されるいくつかの状況では、交差エントロピー損失は、αが増加するにつれて小さい値に収斂し得る。このように交差エントロピー損失が小さい値に収斂することは、量子化が採用されないニューラル・ネットワークにおける効率を向上させるために、活性化関数としてＲｅＬＵが使用され得ることを示し得る。
【００９１】
いくつかの実施形態では、訓練コンポーネントが、出力限度が増加するにつれて損失関数も量子化によって増加すると判定し、正規化線形関数以外の活性化関数タイプの活性化関数を使用することを決定する活性化関数選択コンポーネントを含み得る。図１３のグラフ１１００を参照して、量子化を用いると、αが増加するにつれて対応する損失関数も増加し得、ニューラル・ネットワークにおける効率を向上させるためにＲｅＬＵ以外の活性化関数が採用され得ることを示す。
【００９２】
１７０６において、デバイス（たとえばシステム１００のニューラル・ネットワークまたは活性化関数コンポーネント２０６）は、出力限度の第２の値をパラメータとして使用することに基づいて、活性化関数の出力を決定することができる。たとえば、ニューラル・ネットワークが、１つまたは複数の活性化関数とともに使用される１つまたは複数のα値を決定するように一旦訓練されると、次いで、この訓練されたニューラル・ネットワークは、これらのα値を用いて動作され得、そのためニューラル・ネットワークはより低い精度で動作し、したがって、より効率的に動作することができる。
【００９３】
図２０は、本明細書で説明された１つまたは複数の実施形態によってニューラル・ネットワークの効率の改善を促進する、コンピュータで実施される別の例示の非限定的な方法のフローチャートを示す。本明細書で説明された他の実施形態において採用された類似の要素の繰り返しの説明は、簡潔さのために省略されている。それぞれの実施形態において採用された類似の要素の繰り返しの説明は、簡潔さのために省略されている。
【００９４】
１８０２において、プロセッサに動作可能に結合されたデバイス（たとえばシステム１００のニューラル・ネットワークまたは初期化コンポーネント２５２）は出力限度の値を初期化することができ、出力限度はニューラル・ネットワークの活性化関数の出力の範囲を含み、出力限度の値は訓練によって決定される。たとえば、ニューラル・ネットワークは出力限度の値を決定するように訓練され得、出力限度の値は、他のところで説明されたようなαであり得、ニューラル・ネットワークの少なくとも１つの活性化関数について、ニューラル・ネットワークの（そのα値によって示されるような）精度の軽減と誤り率の最小化とのバランスをとる。ニューラル・ネットワークは、比較的大きな値（３２ビットまたは６４ビットのデータ・タイプによって表現される最大の値など）を用いてαを初期化し、次いで、確率的勾配降下法を実施して、ニューラル・ネットワークを動作させるときに使用されるαの値を決定することによって訓練され得る。
【００９５】
いくつかの例では、システムは、訓練中に確率的勾配降下法を適用することができる。αの値を決定するための確率的勾配降下法は、少なくとも図１２のグラフ１０００、図１３のグラフ１１００、および図１４のグラフ１２００を参照しながら説明されている。
【００９６】
いくつかの例では、システムは、出力限度の初期値を用いた訓練の実行を基に出力限度の値を決定することができる。たとえば、システムは、αの値を、３２ビットまたは６４ビットの浮動小数点データ・タイプによって表される最大の値として初期化し、次いで、（確率的勾配降下法などによる）訓練中にこの値を減少させて、対応する活性化関数向けに使用されるαの値を決定することができる。
【００９７】
いくつかの例では、システムは訓練中に出力限度を正則化することができる。この正則化は、少なくとも図１３のグラフ１１００および図１４のグラフ１２００に関して説明されている。
【００９８】
いくつかの例では、システムは、訓練中に、量子化による精度劣化を軽減するためにクリッピングを実行することができる。訓練中にクリッピングを実行することの例は、少なくとも図４のグラフ３００、図４のグラフ４００、および図１５のグラフ１３００に見出される。
【００９９】
いくつかの例では、システムは訓練中に逆伝播を採用することができる。いくつかの例では、訓練の経過中に、システムは、出力限度が増加するにつれて交差エントロピー損失が収斂するフル精度の場合には活性化関数として正規化線形関数を使用するように判定することができる。いくつかの例では、訓練の経過中に、システムは、出力限度が増加するにつれて損失関数も量子化によって増加すると判定することができ、正規化線形関数以外の活性化関数タイプの活性化関数を使用することを決定する。いくつかの例では、システムは訓練中に出力限度を正則化することができる。
【０１００】
いくつかの例では、出力限度の値は出力限度の第２の値よりも大きく、訓練は、出力限度を、出力限度の初期値よりも小さく出力限度の第２の値よりも大きい複数の連続した値に設定することを含む。そのような例では、確率的勾配降下法が訓練に利用され得る。出力限度の値と出力限度の第２の値の間にいくつかの中間の値があり得、これら中間の値は出力限度から第２の出力限度への訓練中に減少する。たとえば、出力限度が１０で、第２の出力限度が２である場合、９、６、および４の中間の値が存在し得る。いくつかの例では、前の中間の値よりも大きい中間の値もあり得るが、中間の値は訓練を通じて減少する傾向がある。
【０１０１】
いくつかの例では、システムは、出力限度が増加するにつれて損失関数も量子化によって増加すると判定することができ、正規化線形関数以外の活性化関数タイプの活性化関数を使用することを決定する。いくつかの例では、システムは、訓練中に、量子化による精度劣化を軽減するためにクリッピングを実行することができる。
【０１０２】
１８０４において、デバイス（たとえばシステム１００のニューラル・ネットワークまたは活性化関数コンポーネント２５４）は、出力限度の値を活性化関数のパラメータとして活性化関数の出力を決定することができる。たとえば、出力限度の値は、対応する活性化関数が０以上１以下の結果を出力するように制限されることを示すことができる。したがって、活性化関数が活性化関数の出力を決定するように実行されるとき、活性化関数のこの出力は、出力限度によって示されるように０以上で１以下に制限され得る。
【０１０３】
いくつかの例では、活性化関数は、
【数４】
2021500654.tif 000006
および
【数５】
2021500654.tif 000007
を含む式を用いて表現される。
【０１０４】
上記の式において、ｘは関連するグラフの横軸を表し、ｙは関連するグラフの縦軸を表す。α変数は活性化関数の出力の範囲を表す。第２のグラフについて、αに対するｙの導関数は、ｘがα以上であれば１であり、そうでなければ０である。
【０１０５】
いくつかの例では、活性化関数の出力は、ゼロ以上かつ出力限度以下の範囲で変化し、活性化関数の出力は、活性化関数の出力がゼロ以上かつ出力限度以下であることに基づく線形関数である。そのような例は、少なくとも図４のグラフ３００および図１５のグラフ１３００に関して示されている。
【０１０６】
開示された主題の様々な態様に関する状況を提供するために、図２１ならびに以下の議論は、開示された主題の様々な態様が実施され得る適切な環境の概要を提供するように意図されたものである。図２１は、本明細書で説明された１つまたは複数の実施形態が促進され得る例示の非限定的な動作環境のブロック図を示す。本明細書で説明された他の実施形態において採用された類似の要素の繰り返しの説明は、簡潔さのために省略されている。
【０１０７】
図２１を参照して、本開示の様々な態様を実施するのに適する動作環境１９０１は、コンピュータ１９１２も含むことができる。様々な実施形態において、システム１００およびニューロン１０２〜１１０の各々が、コンピュータ１９１２の１つまたは複数のコンポーネント、特徴、および機能であり得、またはこれらを含むことができる。コンピュータ１９１２は、処理ユニット１９１４、システム・メモリ１９１６、およびシステム・バス１９１８も含むことができる。システム・バス１９１８は、処理ユニット１９１４に対して、限定されるものではないが、システム・メモリ１９１６を含むシステム・コンポーネントを結合する。処理ユニット１９１４は、様々な利用可能なプロセッサのうちの任意のものであり得る。処理ユニット１９１４として、デュアル・マイクロプロセッサおよび他のマルチプロセッサ・アーキテクチャも採用され得る。システム・バス１９１８は、限定されるものではないが、Industrial Standard Architecture（ＩＳＡ）、マイクロ・チャネル・アーキテクチャ（ＭＳＡ）、Extended ISA（ＥＩＳＡ）、Intelligent Drive Electronics（ＩＤＥ）、VESA Local Bus（ＶＬＢ）、Peripheral Component Interconnect（ＰＣＩ）、Card Bus、ユニバーサル・シリアル・バス（ＵＳＢ）、Advanced Graphics Port（ＡＧＰ）、ファイアワイヤ（ＩＥＥＥ  １０９４）、および小型コンピュータ・システム・インターフェース（ＳＣＳＩ）を含めて利用可能な種々の任意のバス・アーキテクチャを使用する、メモリ・バスもしくはメモリ・コントローラ、周辺バスもしくは外部バス、またはローカル・バスあるいはその組合せを含むいくつかの任意のタイプのバス構造であり得る。システム・メモリ１９１６は、揮発性メモリ１９２０および不揮発性メモリ１９２２も含むことができる。起動中などにコンピュータ１９１２の内部の要素の間で情報を伝達するための基本ルーチンを含んでいる基本入出力システム（ＢＩＯＳ）は、不揮発性メモリ１９２２に記憶されている。限定ではなく実例として、不揮発性メモリ１９２２は、読み取り専用メモリ（ＲＯＭ）、プログラマブルＲＯＭ（ＰＲＯＭ）、電気的プログラマブルＲＯＭ（ＥＰＲＯＭ）、電気的消去可能プログラマブルＲＯＭ（ＥＥＰＲＯＭ）、フラッシュ・メモリ、または不揮発性ランダム・アクセス・メモリ（ＲＡＭ）（たとえば強誘電性ＲＡＭ（ＦｅＲＡＭ））を含むことができる。揮発性メモリ１９２０は、外部キャッシュ・メモリとして働くランダム・アクセス・メモリ（ＲＡＭ）も含むことができる。限定ではなく実例として、ＲＡＭは、スタティックＲＡＭ（ＳＲＡＭ）、ダイナミックＲＡＭ（ＤＲＡＭ）、シンクロナスＤＲＡＭ（ＳＤＲＡＭ）、ダブル・データ・レートＳＤＲＡＭ（ＤＤＲ  ＳＤＲＡＭ）、拡張ＳＤＲＡＭ（ＥＳＤＲＡＭ）、Ｓｙｎｃｈｌｉｎｋ  ＤＲＡＭ（ＳＬＤＲＡＭ）、直接Ｒａｍｂｕｓ  ＲＡＭ（ＤＲＲＡＭ）、直接ＲａｍｂｕｓダイナミックＲＡＭ（ＤＲＤＲＡＭ）およびＲａｍｂｕｓダイナミックＲＡＭなど多くの形式で利用可能である。
【０１０８】
コンピュータ１９１２は、取り外し可能／取り外し不能な、揮発性／不揮発性のコンピュータストレージ媒体も含むことができる。図２１はたとえばディスク・ストレージ１９２４を示す。ディスク・ストレージ１９２４は、限定されるものではないが、磁気ディスク・ドライブ、フロッピー（Ｒ）・ディスク・ドライブ、テープ・ドライブ、Ｊａｚドライブ、Ｚｉｐドライブ、ＬＳ−１００ドライブ、フラッシュ・メモリ・カード、またはメモリ・スティックのようなデバイスを含むことができる。ディスク・ストレージ１９２４はまた、ストレージ媒体を、個別に、あるいは、限定されるものではないが、コンパクト・ディスクＲＯＭデバイス（ＣＤ−ＲＯＭ）などの光ディスク・ドライブ、ＣＤ記録可能ドライブ（ＣＤ−Ｒドライブ）、ＣＤ書換可能ドライブ（ＣＤ−ＲＷドライブ）またはデジタル多用途ディスクＲＯＭドライブ（ＤＶＤ−ＲＯＭ）を含む他のストレージ媒体と組み合わせて、含むことができる。システム・バス１９１８に対するディスク・ストレージ１９２４の接続を容易にするために、一般的には、インターフェース１９２６などの取り外し可能または取り外し不能なインターフェースが使用される。図２１は、ユーザと、適切な動作環境１９０１において説明された基本的コンピュータ・リソースの間の仲介物として働くソフトウェアも表す。そのようなソフトウェアは、たとえばオペレーティング・システム１９２８を含むことができる。オペレーティング・システム１９２８はディスク・ストレージ１９２４に記憶され得、コンピュータ１９１２のリソースを制御したり割り当てたりするように働く。システム・アプリケーション１９３０は、たとえばシステム・メモリ１９１６またはディスク・ストレージ１９２４のいずれかに記憶されたプログラム・モジュール１９３２またはプログラム・データ１９３４を介して、オペレーティング・システム１９２８によるリソースの管理を利用する。本開示は、様々なオペレーティング・システムまたはオペレーティング・システムの組合せを用いて実施され得ることを理解されたい。ユーザは、入力デバイス１９３６を介して、コンピュータ１９１２に指令または情報を入力する。入力デバイス１９３６は、限定されるものではないが、マウスなどのポインティング・デバイス、トラックボール、スタイラス、タッチ・パッド、キーボード、マイクロフォン、ジョイスティック、ゲーム・パッド、衛星放送アンテナ、スキャナ、テレビジョン・チューナ・カード、デジタル・カメラ、デジタル・ビデオ・カメラ、ウェブ・カメラなどを含む。これらおよび他の入力デバイスは、インターフェース・ポート１９３８を通じてシステム・バス１９１８を介して処理ユニット１９１４に接続する。インターフェース・ポート１９３８は、たとえばシリアル・ポート、パラレル・ポート、ゲーム・ポート、およびユニバーサル・シリアル・バス（ＵＳＢ）を含む。出力デバイス１９４０は、入力デバイス１９３６と同一のタイプのポートのうちのいくつかを使用する。したがって、ＵＳＢポートは、たとえばコンピュータ１９１２に入力を供給したりコンピュータ１９１２から出力デバイス１９４０に情報を出力したりするために使用され得る。出力アダプタ１９４２は、特別なアダプタを必要とする出力デバイス１９４０の中でも特にモニタ、スピーカ、およびプリンタのようないくつかの出力デバイス１９４０があることを示すように設けられている。出力アダプタ１９４２は、限定ではなく実例として、出力デバイス１９４０とシステム・バス１９１８の間の接続の手段をもたらすビデオ・アンド・サウンド・カードを含む。他のデバイスまたはデバイスのシステムあるいはその両方が、遠隔コンピュータ１９４４など、入力能力と出力能力の両方をもたらすことに留意されたい。
【０１０９】
コンピュータ１９１２は、遠隔コンピュータ１９４４など１つまたは複数の遠隔コンピュータに対する論理的接続を使用して、ネットワーク化された環境の中で動作することができる。遠隔コンピュータ１９４４は、コンピュータ、サーバ、ルータ、ネットワークＰＣ、ワークステーション、マイクロプロセッサ・ベースの設備、ピア・デバイスまたは他の共通のネットワーク・ニューロンなどであり得、一般的には、コンピュータ１９１２に関連して説明された要素のうちの多数またはすべてを含むことができる。簡潔さために、遠隔コンピュータ１９４４とともに示されているのはメモリ・ストレージ・デバイス１９４６のみである。遠隔コンピュータ１９４４は、コンピュータ１９１２に対して、ネットワーク・インターフェース１９４８を通じて論理的に接続され、次いで通信接続１９５０を介して物理的に接続されている。ネットワーク・インターフェース１９４８は、ローカル・エリア・ネットワーク（ＬＡＮ）、広域ネットワーク（ＷＡＮ）、セルラー・ネットワークなどの有線通信ネットワークまたは無線通信ネットワークあるいはその両方と、ファイバ分配データ・インターフェース（ＦＤＤＩ）、銅分散データ・インターフェース（ＣＤＤＩ）、イーサネット（Ｒ）、トークン・リングなどを含むＬＡＮ技術とを包含する。ＷＡＮ技術は、限定されるものではないが、２地点間リンクと、統合サービス・デジタル・ネットワーク（ＩＳＤＮ）およびその変形形態のような回路交換ネットワークと、パケット交換ネットワークと、デジタル加入者回線（ＤＳＬ）とを含む。通信接続１９５０は、ネットワーク・インターフェース１９４８をシステム・バス１９１８に接続するために採用されたハードウェア／ソフトウェアを指す。通信接続１９５０は、コンピュータ１９１２の内部の説明の明瞭さのために示されているが、コンピュータ１９１２の外部にも存在し得る。ネットワーク・インターフェース１９４８に対する接続のためのハードウェア／ソフトウェアは、例示のためにのみ、通常の電話級モデムを含むモデム、ケーブル・モデムおよびＤＳＬモデム、ＩＳＤＮアダプタ、およびイーサネット（Ｒ）・カードなどの内部技術および外部技術も含むことができる。
【０１１０】
本発明の実施形態は、あらゆる可能な技術的詳細レベルの統合における、システム、方法、装置またはコンピュータ・プログラム製品あるいはその組合せであり得る。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を有するコンピュータ可読ストレージ媒体を含むことができる。コンピュータ可読ストレージ媒体は、命令実行デバイスが使用するための命令を保存して記憶することができる有形のデバイスであり得る。コンピュータ可読ストレージ媒体は、限定されるものではないが、たとえば電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁気ストレージ・デバイス、半導体ストレージ・デバイス、または前述のものの任意の適切な組合せであり得る。コンピュータ可読ストレージ媒体のより具体的な例の非網羅的なリストには、携帯型コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、消去可能プログラム可能読み取り専用メモリ（ＥＰＲＯＭまたはフラッシュ・メモリ）、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）、携帯型コンパクト・ディスク読み取り専用メモリ（ＣＤ−ＲＯＭ）、デジタル多用途ディスク（ＤＶＤ）、メモリ・スティック、フロッピー（Ｒ）・ディスク、パンチカードまたは溝の中で隆起した構造に記録された命令を有するものなど機械的に符号化されたデバイス、ならびに前述のものの任意の適切な組合せも含まれ得る。コンピュータ可読ストレージ媒体は、本明細書で使用されたように、それ自体が、電波または他の自由に伝播する電磁波、導波管または他の伝送媒体を通って伝播する電磁波（たとえば光ファイバ・ケーブルを通過する光パルス）、またはワイヤを通って伝送される電気信号などの一過性の信号と解釈されるべきではない。
【０１１１】
本明細書で説明されたコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体からそれぞれのコンピュータ・デバイス／処理デバイスにダウンロードされ得、あるいは、たとえばインターネット、ローカル・エリア・ネットワーク、広域ネットワークまたは無線ネットワークあるいはその組合せといったネットワークを通じて、外部コンピュータまたは外部ストレージ・デバイスにダウンロードされ得る。ネットワークは、銅の伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータまたはエッジ・サーバあるいはその組合せを備えることができる。各コンピュータ・デバイス／処理デバイスにおけるネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受け取って、それぞれのコンピュータ・デバイス／処理デバイスの内部のコンピュータ可読ストレージ媒体に記憶するようにコンピュータ可読プログラム命令を転送する。本発明の様々な態様の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ（ＩＳＡ）命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路用のコンフィギュレーション・データ、あるいはＳｍａｌｌｔａｌｋ（Ｒ）、Ｃ＋＋等のオブジェクト指向のプログラム言語および「Ｃ」プログラム言語または類似のプログラム言語などの手続き型プログラム言語を含む１つまたは複数のプログラム言語の任意の組合せで書かれたソース・コードまたはオブジェクト・コードのいずれかであり得る。コンピュータ可読プログラム命令は、スタンド・アロンのソフトウェア・パッケージとして、完全にユーザのコンピュータ上で実行すること、部分的にユーザのコンピュータ上で実行すること、部分的にユーザのコンピュータ上で実行して部分的に遠隔コンピュータ上で実行することあるいは完全に遠隔コンピュータ上またはサーバ上で実行することが可能である。後者のシナリオでは、遠隔コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）もしくは広域ネットワーク（ＷＡＮ）を含む任意のタイプのネットワークを介してユーザのコンピュータに接続され得、または（たとえばインターネット・サービス・プロバイダを使用するインターネットを介して）外部コンピュータに接続され得る。いくつかの実施形態では、たとえばプログラマブル・ロジック回路、フィールドプログラマブル・ゲート・アレイ（ＦＰＧＡ）、またはプログラマブル・ロジック・アレイ（ＰＬＡ）を含む電子回路が、本発明の態様を実行するために、電子回路をカスタマイズするコンピュータ可読プログラム命令の状態情報を利用することによってコンピュータ可読プログラム命令を実行することができる。
【０１１２】
本発明の態様は、方法の、フローチャートまたはブロック図あるいはその両方と、装置（システム）と、本発明の実施形態によるコンピュータ・プログラム製品とを参照しながら本明細書で説明されている。フローチャートまたはブロック図あるいはその両方の各ブロックと、フローチャートまたはブロック図あるいはその両方におけるブロックの組合せとが、コンピュータ可読プログラム命令によって実施され得ることが理解されよう。これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラマブル・データ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックに指定される機能／動作を実施する手段を作り出すべく、汎用コンピュータ、専用コンピュータ、または他のプログラマブル・データ処理装置のプロセッサに提供されてマシンを作り出すものであってよい。また、これらのコンピュータ可読プログラム命令は、命令が記憶されているコンピュータ可読ストレージ媒体が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックに指定される機能／動作の態様を実施する命令を含む製造品を備えるべく、コンピュータ可読ストレージ媒体に記憶され、コンピュータ、プログラマブル・データ処理装置、または他のデバイス、あるいはその組合せに特定の様態で機能するように指示することができるものであってもよい。また、コンピュータ可読プログラム命令は、コンピュータ、他のプログラマブル装置、または他のデバイス上で実行される命令が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックに指定される機能／動作を実施するように、コンピュータによって実施されるプロセスを作り出すべく、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイスにロードされ、コンピュータ上、他のプログラマブル装置上、または他のデバイス上で一連の動作ステップを実行させるものであってもよい。
【０１１３】
図におけるフローチャートおよびブロック図は、本発明の様々な実施形態による、システム、方法、およびコンピュータ・プログラム製品の可能な実装形態のアーキテクチャ、機能性、および動作を示す。この点に関して、フローチャートまたはブロック図における各ブロックは、モジュール、セグメント、または命令の一部分を表すことができ、指定された論理関数を実施するための１つまたは複数の実行可能命令を含む。いくつかの代替実装形態では、ブロックで示された機能が図中に示された順序から外れることがある。たとえば、連続して示された２つのブロックが、実際には、包含される機能性に依拠して実質的に同時に実行され得、または逆順に実行されることもある。ブロック図またはフローチャートあるいはその両方の各ブロック、ならびにブロック図またはフローチャートあるいはその両方におけるブロックの組合せが、指定された機能もしくは行為を実行する、または専用ハードウェアとコンピュータ命令の組合せを実行する、専用のハードウェア・ベースのシステムによって実施され得ることも注目されよう。
【０１１４】
上記では、１つまたは複数のコンピュータ上で実行されるコンピュータ・プログラム製品のコンピュータ実行可能命令の一般的な状況において主題が説明されているが、当業者なら、本開示がまた、他のプログラム・モジュールと組み合わせて実施され得ることを認識するであろう。一般に、プログラム・モジュールは、特定のタスクを実行する、または特定の抽象データ・タイプを実施する、あるいはその両方を行う、ルーチン、プログラム、コンポーネント、データ構造などを含む。その上に、当業者なら、本発明のコンピュータで実施される方法が、シングル・プロセッサまたはマルチ・プロセッサのコンピュータ・システム、ミニコンピュータ・デバイス、メインフレーム・コンピュータ、ならびにコンピュータ、携帯用コンピュータ・デバイス（たとえばＰＤＡ、携帯電話（phone））、マイクロプロセッサ・ベースの電子機器またはプログラム可能な消費者電子機器もしくは工業用電子機器などを含む他のコンピュータ・システム構成を用いて実施され得ることを理解するであろう。示された態様は、通信ネットワークを介してリンクされた遠隔処理デバイスによってタスクが実行される分散コンピューティング環境においても実施され得る。しかしながら、本開示の、すべてでなければいくつかの態様は、スタンド・アロンのコンピュータ上で実施され得る。分散コンピューティング環境では、プログラム・モジュールは局所的メモリ・ストレージ・デバイスと遠隔メモリ・ストレージ・デバイスの両方に配置され得る。
【０１１５】
本出願において使用されるように、「コンポーネント」、「システム」、「プラットフォーム」、「インターフェース」等の用語は、コンピュータ関連のエンティティあるいは１つまたは複数の特定の機能性を有する使用可能なマシンに関連したエンティティを指すことまたは含むことあるいはその両方が可能である。本明細書で開示されたエンティティは、ハードウェア、ハードウェアとソフトウェアの組合せ、ソフトウェア、または実行中のソフトウェアのいずれかであり得る。たとえば、コンポーネントは、限定されるものではないが、プロセッサ上で動作する処理、プロセッサ、オブジェクト、実行可能ファイル、実行のスレッド、プログラム、またはコンピュータあるいはその組合せであり得る。例として、サーバ上で実行されるアプリケーションとサーバの両方がコンポーネントであり得る。１つまたは複数のコンポーネントが、処理または実行のスレッドあるいはその両方の内部に存在し得、コンポーネントは、１つのコンピュータ上に局所化され得、または２つ以上のコンピュータの間に分散され得、あるいはその両方が可能である。別の例では、それぞれのコンポーネントは、各種データ構造を記憶している様々なコンピュータ可読媒体から実行され得る。コンポーネントは、局所処理または遠隔処理あるいはその両方によって１つまたは複数のデータ・パケットを有する信号などによる通信が可能である（たとえば局所システムにおいて、分散システムにおいて、またはインターネットなどのネットワークにわたって、あるいはその組合せによって、別のコンポーネントと相互作用する１つのコンポーネントからのデータを、上記信号によって他のシステムと通信することができる）。別の例として、コンポーネントは、プロセッサが実行するソフトウェアまたはファームウェアのアプリケーションによって動作される電気回路または電子回路によって動作する機械的部品によって与えられた特定の機能性を有する装置であり得る。そのような場合には、プロセッサは装置の内部または外部に存在し得、ソフトウェアまたはファームウェア・アプリケーションの少なくとも一部分を実行することができる。別の例として、コンポーネントは、機械的部品のない電子部品によって特定の機能性をもたらす装置であり得、電子部品は、電子部品の機能性を少なくとも部分的に与えるソフトウェアまたはファームウェアを実行するためのプロセッサまたは他の手段を含むことができる。一態様では、コンポーネントは、たとえばクラウド・コンピューティング・システムの内部の仮想マシンによって電子部品をエミュレートすることができる。
【０１１６】
加えて、「または」という用語は、排他的な「または」ではなく包括的な「または」を意味するように意図されている。すなわち、特に指定がない限り、または状況から明瞭でなければ、「ＸはＡまたはＢを採用する」という表現は、普通の包括的な置換のうちの任意のものを意味するように意図されている。すなわち、ＸがＡを採用するか、ＸがＢを採用するか、またはＸがＡとＢの両方を採用する場合には、「ＸはＡまたはＢを採用する」という表現は、前述の事例のうちの任意ものの下で満たされる。その上に、本明細書および添付された図面において使用されるような冠詞「１つの（ａ）」および「１つの（ａｎ）」は、一般に、特に指定がない限り、または状況から明瞭に単数の形態を対象とするのでなければ、「１つまたは複数の」という意味に解釈されるべきである。本明細書で使用されたように、「例」または「例示」あるいはその両方の用語は、例、事例、または例証として働くことを意味するように利用される。疑問を避けるために、本明細書で開示された主題は、そのような例によって限定されることはない。加えて、本明細書で「例」または「例示」あるいはその両方として説明された任意の態様または設計は、必ずしも他の態様または設計と比較して望ましいかまたは有利であるように解釈されるものではなく、当業者に既知の等価な例示的構造および技術を排除することを意味するわけでもない。
【０１１７】
「プロセッサ」という用語は、本明細書において採用されたとき、限定されるものではないが、シングルコア・プロセッサと、ソフトウェア・マルチスレッド実行能力を有するシングル・プロセッサと、マルチコア・プロセッサと、ソフトウェア・マルチスレッド実行能力を有するマルチコア・プロセッサと、ハードウェア・マルチスレッド技術を有するマルチコア・プロセッサと、並列プラットフォームと、分散共有メモリを有する並列プラットフォームとを含めて、実質的にあらゆるコンピューティング処理ユニットまたはデバイスを指すことができる。加えて、プロセッサは、集積回路、特定用途向け集積回路（ＡＳＩＣ）、デジタル信号プロセッサ（ＤＳＰ）、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）、プログラマブル・ロジック・コントローラ（ＰＬＣ）、複雑なプログラム可能論理デバイス（ＣＰＬＤ）、離散的なゲートまたはトランジスタ・ロジック、離散的なハードウェア・コンポーネント、または本明細書で説明された機能を実行するように設計された任意のそれらの組合せを指すことができる。さらに、プロセッサは、スペース利用を最適化するかまたはユーザ機器の性能を強化するために、限定されるものではないが、分子ベースおよび量子ドット・ベースのトランジスタ、スイッチおよびゲートなどのナノ・スケール・アーキテクチャを利用することができる。プロセッサは、計算する処理ユニットの組合せとしても実施され得る。本開示では、「記憶」、「ストレージ」、「データ記憶」、「データ・ストレージ」、「データベース」などの用語、ならびにコンポーネントの動作および機能性に関連する実質的に任意の他の情報ストレージ・コンポーネントは、「メモリ・コンポーネント」、「メモリ」で具現されるエンティティ、またはメモリを備えるコンポーネントを指すように利用される。本明細書で説明されたメモリまたはメモリ・コンポーネントあるいはその両方が揮発性メモリもしくは不揮発性メモリのいずれかであり得、または揮発性メモリと不揮発性メモリの両方を含み得ることを理解されたい。限定ではなく実例として、不揮発性メモリは、読み取り専用メモリ（ＲＯＭ）、プログラマブルＲＯＭ（ＰＲＯＭ）、電気的プログラマブルＲＯＭ（ＥＰＲＯＭ）、電気的消去可能プログラマブルＲＯＭ（ＥＥＰＲＯＭ）、フラッシュ・メモリ、または不揮発性ランダム・アクセス・メモリ（ＲＡＭ）（たとえば強誘電性ＲＡＭ（ＦｅＲＡＭ））を含むことができる。揮発性メモリは、たとえば外部キャッシュ・メモリとして働くことができるＲＡＭを含み得る。限定ではなく実例として、ＲＡＭは、スタティックＲＡＭ（ＳＲＡＭ）、ダイナミックＲＡＭ（ＤＲＡＭ）、シンクロナスＤＲＡＭ（ＳＤＲＡＭ）、ダブル・データ・レートＳＤＲＡＭ（ＤＤＲ  ＳＤＲＡＭ）、拡張ＳＤＲＡＭ（ＥＳＤＲＡＭ）、Ｓｙｎｃｈｌｉｎｋ  ＤＲＡＭ（ＳＬＤＲＡＭ）、直接Ｒａｍｂｕｓ  ＲＡＭ（ＤＲＲＡＭ）、直接ＲａｍｂｕｓダイナミックＲＡＭ（ＤＲＤＲＡＭ）およびＲａｍｂｕｓダイナミックＲＡＭ（ＲＤＲＡＭ）など多くの形式で利用可能である。加えて、本明細書の開示されたシステムのメモリ・コンポーネントまたはコンピュータで実施される方法は、これらおよび何らかの他の適切なタイプのメモリを含むように意図されているが、含むように限定されるわけではない。
【０１１８】
上記で説明されたことに含まれるのは、システムと、コンピュータで実施される方法との単なる例である。本開示を説明するために、コンポーネントまたはコンピュータで実施される方法の考えられるすべての組合せを説明することはもちろん不可能であるが、当業者なら、本開示の多くのさらなる組合せおよび置換が可能であることを認識することができる。その上、「含む」、「有する」、「保有する」等の用語は、発明を実施するための形態、特許請求の範囲、補遺、および図面において使用される限り、「備える」という用語が請求項において遷移語として採用されたときに解釈されるのと同様に、包括的であるように意図されている。説明のために様々な実施形態の説明が提示されてきたが、網羅的であるように、または開示された実施形態に限定されるようには、意図されていない。当業者には、多くの変更形態および変形形態が、特許請求の範囲から逸脱することなく明らかになるであろう。本明細書で使用される用語は、実施形態の原理、実際の用途、または市場に見られる技術に対する技術的改善について最も良く説明するため、または当業者が本明細書で開示された実施形態を理解することを可能にするために選択されたものである。
【図１】
2021500654.tif 000010
【図２】
2021500654.tif 000011
【図３】
2021500654.tif 000012
【図４】
2021500654.tif 000013
【図５】
2021500654.tif 000014
【図６】
2021500654.tif 000015
【図７】
2021500654.tif 000016
【図８】
2021500654.tif 000017
【図９】
2021500654.tif 000018
【図１０】
2021500654.tif 000019
【図１１】
2021500654.tif 000020
【図１２】
2021500654.tif 000021
【図１３】
2021500654.tif 000022
【図１４】
2021500654.tif 000023
【図１５】
2021500654.tif 000024
【図１６】
2021500654.tif 000025
【図１７】
2021500654.tif 000026
【図１８】
2021500654.tif 000027
【図１９】
2021500654.tif 000028
【図２０】
2021500654.tif 000029
【図２１】
2021500654.tif 000030
【国際調査報告】
2021500654.tif 000031
2021500654.tif 000032