(57)【要約】【課題】本発明は、マスキング命令を含む一連の命令を含むコンピュータプログラムを実行するための実行ユニットに関する。【解決手段】実行ユニットは、そのマスキング命令を実行するように構成され、そのマスキング命令は、実行ユニットによって実行されるときに、ｎ個の値を有するソースオペランドからランダムに選択された値をマスクし、ソースオペランドからの他の元の値を固定して、ソースオペランドからの元の値とそれらそれぞれの元の位置にあるマスクされた値とを含む結果を生成する。【選択図】図２
2019079524.tif 000002
【特許請求の範囲】
【請求項１】
命令のシーケンスを含むコンピュータプログラムを実行するための実行ユニットであって、前記シーケンスはマスキング命令を含み、前記実行ユニットは、前記マスキング命令を実行するように構成され、前記マスキング命令は、前記実行ユニットによって実行されるときに、ｎ個の値を有するソースオペランドからランダムに選択された値をマスクし、前記ソースオペランドからの他の元の値を固定して、前記ソースオペランドからの元の値とそれぞれの元の位置にある前記マスクされた値とを含む結果を生成する、実行ユニット。
【請求項２】
ランダム化ビットストリングを生成するように構成されたハードウェア擬似乱数生成器（ＨＰＲＮＧ）を備え、前記ランダム化ビットストリングから、前記マスクされる値をランダムに選択するためのランダムビットシーケンスが導出される、請求項１に記載の実行ユニット。
【請求項３】
前記ＨＰＲＮＧから出力された各ランダム化ビットストリングはｍビットを含み、前記実行ユニットは、前記ｍビットをｐ個のシーケンスに分割して、各シーケンスを確率値と比較して、前記値を選択的にマスクするための加重確率インジケータを生成するように構成されている、請求項２に記載の実行ユニット。
【請求項４】
前記マスキング命令は、前記ソースベクトルを識別するソースフィールドと、前記結果を保持するためのディスティネーションレジスタの指示と、前記確率値を定義する確率フィールドとを含む、請求項３に記載の実行ユニット。
【請求項５】
前記ソースオペランドを保持するための入力バッファと、前記結果を保持するための出力バッファとを備える、請求項１から４のいずれか一項に記載の実行ユニット。
【請求項６】
前記ソースオペランドの前記値は、ニューラルネットワーク内のリンクの重みを表す、請求項１から５のいずれか一項に記載の実行ユニット。
【請求項７】
前記ソースオペランド内の前記値は、ニューラルネットワーク内のノードの出力値を定義する活性値を表す、請求項１から５のいずれか一項に記載の実行ユニット。
【請求項８】
前記命令の前記シーケンスは、前記結果とさらなる１組の値とのドット積の計算を実装するための命令を含む、請求項１から７のいずれか一項に記載の実行ユニット。
【請求項９】
前記命令の前記シーケンスは、前記マスキング命令が実行された後に前記結果をメモリ位置に書き込むための命令を含む、請求項１から７のいずれかに記載の実行ユニット。
【請求項１０】
前記ソースオペランドは、４つの１６ビット値を含む、請求項１から９のいずれか一項に記載の実行ユニット。
【請求項１１】
前記ソースオペランドは、２つの３２ビット値を含む、請求項１から９のいずれか一項に記載の実行ユニット。
【請求項１２】
命令のシーケンスを含むコンピュータプログラムを実行する方法であって、前記シーケンスはマスキング命令を含み、前記方法は、前記マスキング命令の実行に応答して、ｎ個の値を有するソースオペランドから値をランダムに選択し、前記ソースオペランドからの他の元の値を固定して、前記ソースオペランドからの元の値とそれぞれの元の位置にある前記マスクされた値とを含む結果を生成する、方法。
【請求項１３】
ｍビットを含むランダム化ビットストリング出力を提供し、前記ｍビットをｐ個のシーケンスに分割し、各シーケンスを確率値と比較して、前記値を選択的にマスクするための加重確率インジケータを生成することを含む、請求項１２に記載の方法。
【請求項１４】
ランダム化ビットストリングを生成することを含み、前記ランダム化ビットストリングから、前記マスクされる値をランダムに選択するためのランダムビットシーケンスが導出される、請求項１２または１３に記載の方法。
【請求項１５】
前記マスキング命令は、前記ソースベクトルを識別するソースフィールドと、前記結果を保持するためのディスティネーションレジスタの指示と、前記確率値を定義する確率フィールドとを含む、請求項１３に記載の方法。
【請求項１６】
前記命令の前記シーケンスは、前記結果とさらなる１組の値とのドット積の計算を実装するための命令を含む、請求項１２から１５のいずれか一項に記載の方法。
【請求項１７】
前記命令の前記シーケンスは、前記マスキング命令が実行された後に前記結果をメモリ位置に書き込むための命令を含む、請求項１２から１５のいずれかに記載の方法。
【請求項１８】
非伝送媒体に記憶されているコンピュータ可読命令のシーケンスを含みコンピュータにより実行されるプログラムであって、前記シーケンスはマスキング命令を含み、前記マスキング命令は、実行されるときに、ｎ個の値を有するソースオペランドから値をランダムに選択してマスクし、前記ソースオペランドからの他の元の値を固定して、前記ソースオペランドからの元の値とそれぞれの元の位置にある前記マスクされた値とを含む結果を生成する、プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、ニューラルネットワークにおけるデータの処理に関する。
【背景技術】
【０００２】
ニューラルネットワークは、機械学習や人工知能の分野で使用されている。ニューラルネットワークは、いくつかのノードセットの構成を備え、ノードは、リンクによって相互接続され、互いに対話する。コンピューティングにおけるニューラルネットワークの原理は、電気的な刺激が人間の脳内でどのように情報を伝達するかに関する情報に基づいている。このため、ノードは、ニューロンと呼ばれることも多い。また、頂点と呼ばれることもある。リンクは、時としてエッジと呼ばれる。ネットワークは、入力データを受け取ることができ、特定のノードが、データに対して操作を行う。これらの操作の結果は、他のノードに渡される。各ノードの出力は、ノードの活性値またはノード値と呼ばれる。各リンクは、重みに関連付けられている。重みは、ニューラルネットワークのノード間の接続性を定義する。重みの値を変えることによって行われる、ニューラルネットワークが学習することを可能にする多くの異なる技術が知られている。
【０００３】
図１Ａに、ニューラルネットワーク内のノードの一構成の非常に簡略化した形態を示す。このタイプの構成は、学習または訓練において使用されることが多く、ノードの入力層、ノードの隠れ層、およびノードの出力層を備える。現実には、各層に多くのノードがあり、現在では、セクションごとに複数の層があり得る。入力層Ｎｉの各ノードは、その出力において活性値またはノード値を生成することが可能であり、活性値またはノード値は、そのノードに提供されたデータに対して関数を適用することによって生成される。入力層からのノード値のベクトルは、隠れ層内の各ノードの入力において、それぞれの重みのベクトルによってスケーリングされる。各重みは、入力層内のその特定のノードと、それが接続される隠れ層内のノードとの接続性を定義する。実際には、ネットワークは数百万個のノードを有し、多次元的に接続されていることがあり、したがって、ベクトルはテンソルであることが多い。ノードＮｈの入力にかけられる重みは、ｗ0、…、ｗ2と表される。入力層内の各ノードは、少なくとも最初は、隠れ層内の各ノードに接続されている。隠れ層内の各ノードは、それらに提供されたデータに対して活性化関数を適用することができ、同様に、出力層内の各ノードＮ0に供給される出力ベクトルを生成することができる。各ノードは、例えば、それぞれの入力リンクに関して、ノードの入力活性値とそのノード固有の重みとのドット積の計算を行うことによって、その入力データに重みを付ける。次いで、重み付けされたデータに対して活性化関数を適用する。活性化関数は、例えばシグモイド関数でよい。図１Ｂを参照のこと。ネットワークは、入力層に入力されるデータを処理し、各ノードからの活性値に重みを割り当て、隠れ層内の各ノードに入力されるデータに作用することによって（ノードに重み付けして活性化関数を適用することによって）学習する。したがって、隠れ層内のノードは、データを処理し、出力層内のノードに出力を供給する。出力層のノードも、それらの入力データに重みを割り当てることができる。各重みは、それぞれの誤差値によって特徴付けられる。さらに、各ノードは、誤差状態に関連付けられてもよい。各ノードでの誤差状態は、ノードの重みの誤差が特定の許容レベルまたは許容度未満であるかどうかの尺度を与える。様々な学習手法があるが、いずれの場合にも、図１Ａでの左から右へのネットワークを通る順伝播、全体的な誤差の計算、およびネットワークを通る図１Ａでの右から左への誤差の逆伝播がある。次のサイクルで、各ノードは、逆伝播された誤差を考慮に入れ、改定された１組の重みを生成する。このようにして、ネットワークは、その所望の動作を行うように訓練することができる。
【０００４】
ニューラルネットワークで発生し得る１つの問題は、「過学習（overfitting）」である。数百万または数十億個のパラメータ（重み）を有する大規模なネットワークは、過学習しやすい。オーバーフィッティングにより、訓練後のニューラルネットがサンプルからより一般的に特徴を抽出するアプリケーションに適するように関連のある特徴を抽出するように訓練されるというよりもむしろ、ネットワークは、そこに提供された各訓練サンプル（入力ノードにデータを提供する訓練サンプル）を覚えてしまう。過学習／過剰記憶を避けるためにニューラルネットワークを規則化することによってこの問題を解決するための広範な技法が開発されている。
【０００５】
「ドロップアウト（drop out）」と呼ばれる技法が、ＪＥ  Ｈｉｎｔｏｎ他の論文「Ｉｍｐｒｏｖｉｎｇ  Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋｓ  ｂｙ  Ｐｒｅｖｅｎｔｉｎｇ  Ｃｏ−Ａｄａｐｔｉｏｎ  ｏｆ  Ｆｅａｔｕｒｅ  Ｄｅｔｅｃｔｏｒｓ」ＣｏＲＲ  ａｂｓ／１２０７．０５８０  （２０１２）で論じられている。この技法によれば、各訓練例について、順伝播は、各層での活性化の半分をランダムに削除することを含む。次いで、この誤差は、残りの活性化のみを通って逆伝播される。これにより、過学習が大幅に減少され、ネットワークのパフォーマンスが改善されることが示されている。
【０００６】
「ドロップ接続（drop connect）」として知られている別の技法が、Ｄｅｐａｒｔｍｅｎｔ  ｏｆ  Ｃｏｍｐｕｔｅｒ  Ｓｃｉｅｎｃｅ  ＮＹＵによって出版されているＬｉ  Ｗａｎ他の論文「Ｒｅｇｕｌａｒｉｓａｔｉｏｎ  ｏｆ  Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋ  ｕｓｉｎｇ  Ｄｒｏｐ  ｃｏｎｎｅｃｔ」で論じられている。この技法によれば、各訓練例について、順伝播中、重みのいくつかがランダムにゼロにされる。この技法も同様にニューラルネットワークのパフォーマンスを改善することが示されている。
【０００７】
既知のコンピュータ技術を使用してニューラルネットワークを実装することには、様々な課題がある。例えばＣＰＵやＧＰＵを使用してドロップアウトやドロップ接続など特定の技法を実装するのは容易ではなく、これを実現すれば、効率的な実装で実現できるとの完全な利益を得られる。
【発明の概要】
【発明が解決しようとする課題】
【０００８】
本発明者らは、処理ユニットの命令シーケンス中の単一の命令に基づいて、ドロップアウトまたはドロップ接続を効率的に実装することができるプロセッサ用の実行ユニットを開発した。
【課題を解決するための手段】
【０００９】
本発明の一態様によれば、命令のシーケンスを含むコンピュータプログラムを実行するための実行ユニットであって、シーケンスはマスキング命令を含み、実行ユニットは、マスキング命令を実行するように構成され、マスキング命令は、実行ユニットによって実行されるときに、ｎ個の値を有するソースオペランドからランダムに選択された値をマスクし、ソースオペランドからの他の元の値を固定して、ソースオペランドからの元の値と、それぞれの元の位置にあるマスクされた値とを含む結果を生成する、実行ユニットが提供される。
【００１０】
実行ユニットは、ランダム化ビットストリングを生成するように構成されたハードウェア擬似乱数生成器（ＨＰＲＮＧ）を備えることがあり、そのランダム化ビットストリングから、マスクされる値をランダムに選択するためのランダムビットシーケンスが導出される。
【００１１】
一実施形態では、ＨＰＲＮＧから出力された各ランダム化ビットストリングはｍビットを含み、実行ユニットは、ｍビットをｐ個のシーケンスに分割して、各シーケンスを確率値と比較して、値を選択的にマスクするための加重確率インジケータを生成するように構成される。
【００１２】
マスキング命令は、ソースオペランドを識別するソースフィールドと、結果を保持するためのディスティネーションレジスタの指示と、確率値を定義する確率フィールドとを含むことがある。
【００１３】
実行ユニットは、ソースオペランドを保持するための入力バッファと、結果を保持する出力バッファとを備えることがある。
【００１４】
ソースオペランドの値は、（例えばドロップ接続を実装するために）ニューラルネットワーク内のリンクの重みを表すことがある。
【００１５】
ソースオペランド内の値は、（例えばドロップアウトを実装するために）ニューラルネットワーク内のノードの出力値を定義する活性値を表すことがある。
【００１６】
命令のシーケンスは、結果とさらなる１組の値とのドット積の計算を行うための命令、および／またはマスキング命令が実行された後に結果をメモリ位置に書き込むための命令を含むことがある。
【００１７】
ソースオペランドは、任意の適切な長さを有する任意の好適な数を含むことがあり、例えば、（非限定的な例として）４つの１６ビット値、２つの３２ビット値、または８つの８ビット値を含む。一般に、ｎ個の値は、１つまたは複数の値でよい。
【００１８】
対応する方法およびコンピュータプログラムが提供される。
【００１９】
一態様は、命令のシーケンスを含むコンピュータプログラムを実行する方法であって、シーケンスはマスキング命令を含み、方法は、マスキング命令の実行に応答して、ｎ個の値を有するソースオペランドから値をランダムに選択し、ソースオペランドからの他の元の値を固定して、ソースオペランドからの元の値と、それぞれの元の位置にあるマスクされた値とを含む結果を生成する、方法を提供する。
【００２０】
ｍビットを含むランダム化ビットストリング出力を提供することができ、上記方法は、ｍビットをｐ個のシーケンスに分割し、各シーケンスを確率値と比較して、値を選択的にマスクするための加重確率インジケータを生成することを含むことがある。
【００２１】
マスキング命令は、ソースベクトルを識別するソースフィールドと、結果を保持するためのディスティネーションレジスタの指示と、確率値を定義する確率フィールドとを含むことがある。
【００２２】
命令のシーケンスは、結果とさらなる１組の値とのドット積の計算を行うための命令を含むことがある。
【００２３】
命令のシーケンスは、マスキング命令が実行された後に結果をメモリ位置に書き込むための命令を含むことがある。
【００２４】
別の態様は、非伝送媒体に記憶されているコンピュータ可読命令のシーケンスを含むコンピュータプログラムであって、シーケンスはマスキング命令を含み、マスキング命令は、実行されるときに、ｎ個の値を有するソースオペランドから値をランダムに選択してマスクし、ソースオペランドからの他の元の値を固定して、ソースオペランドからの元の値と、それぞれの元の位置にあるマスクされた値とを含む結果を生成する、コンピュータプログラムを提供する。
【００２５】
本明細書で使用するとき、用語「ランダム」および「ランダムに」は、ランダムまたは擬似ランダムを意味するものとする。
【図面の簡単な説明】
【００２６】
【図１Ａ】ニューラルネットワークの非常に簡略化した概略図。
【図１Ｂ】ニューロンの非常に簡略化した概略図。
【図２】本発明の一実施形態による処理ユニットの概略図。
【図３】マスキング命令の形式を示す図。
【図４】マスキング命令を実装するための実行ユニットのブロック図。
【発明を実施するための形態】
【００２７】
図２に、ベクトル内のランダムに選択された値をマスクするための単一の命令を実行するように構成された実行ユニットの概略ブロック図を示す。本明細書では、この命令をｒｍａｓｋ命令と呼ぶ。実行ユニット２は、処理ユニット内のパイプライン４の一部を成す。処理ユニットは、命令メモリ１０から命令をフェッチする命令フェッチユニット６を備える。また、処理ユニットは、データメモリ１２からデータをロードするため、またはメモリにデータを格納するためにデータメモリ１２にアクセスすることを担うメモリアクセスステージ８を備える。１組のレジスタ１４が設けられ、いかなる場合にもパイプライン４によって実行される命令のためのソースオペランドおよびディスティネーションオペランドを保持する。パイプライン４が、様々な異なる命令を実行するため、例えば数学的演算を行うための多くの異なるタイプの実行ユニットを含むことがあることは容易に理解されよう。本発明において有用となり得る１つのタイプの処理ユニットは、バレルスレッドタイムスロットを使用する処理ユニットであり、そのような処理ユニットでは、スーパーバイザースレッドが、異なるワーカースレッドを、それらの実行のために異なるタイムスロットに割り振ることができる。本明細書で述べるｒｍａｓｋ命令は、任意の適切な処理ユニットアーキテクチャと共に使用することができる。図３に、ｒｍａｓｋ命令形式を示す。この命令は、ソースオペランドが検索されるソースメモリ位置を定義するフィールド３０と、出力ベクトルが配置されるディスティネーションメモリ位置に関するフィールド３２とを有する。メモリ位置は、レジスタ１４内の暗黙的もしくは明示的に定義されたレジスタ、またはデータメモリ内のアドレスでよい。ｒｍａｓｋ命令はさらに、確率値Ｓｒｃ１  ３４を定義し、より詳細には後述するように、確率値Ｓｒｃ１  ３４と共にソースオペランド内の個々の値が維持される。命令はオペコード３６を有し、オペコード３６は、その命令をｒｍａｓｋ命令として識別する。ｒｍａｓｋ命令には２つの異なる形式がある。命令の１つの形式では、ソースオペランドは、４つの１６ビット値（半精度ベクトル）を含むベクトルを表すことがあり、別の形式では、ソースオペランドは、２つの３２ビット値（単精度ベクトル）を含むベクトルを定義することがある。
【００２８】
いずれの場合も、ｒｍａｓｋ命令は、ソースベクトル内のランダムに選択された値をマスクする（０にする）効果がある。そのような機能は、いくつかの異なる用途を有し、特に、ニューラルネットワークの分野において「ドロップ接続」および「ドロップアウト」として知られている上述した機能を含む。既に説明したように、ニューラルネットワークでは、重みを表すベクトルを提供することができ、これらの重みは、ネット内のニューロン間のリンクを表す。別のベクトルは、活性値を表すことができ、これらの活性値は、リンクによって接続される個々のニューロンに出力される値である。
【００２９】
ニューラルネットワークにおいてごく一般的な機能は、これらの２つのベクトル間でドット積の計算を行うことである。例えば、ドット積は、事前活性値でよく、事前活性値は、活性化関数を使用してそこからニューロン出力が計算される値である。このドット積を計算する前に、重みのベクトルへのｒｍａｓｋ命令の適用を使用して、ドロップ接続機能を実装することができる。重みのベクトルへのｒｍａｓｋ命令の適用は、ベクトル内の個々の重みをランダムにゼロにする。
【００３０】
ドット積を計算する前に、活性値のベクトルへのｒｍａｓｋ命令の適用を使用して、ドロップアウト機能を実装することができる。活性値のベクトルへのｒｍａｓｋ命令の適用は、ベクトル内の個々の活性値をランダムにゼロにする。
【００３１】
ベクトルは、単精度または半精度での浮動小数点数を表すことができる。１つのタイプのベクトルは、４つの１６ビット値（半精度ベクトル）を含むことができ、別のタイプのベクトルは、２つの３２ビット値（単精度ベクトル）を含むことができる。図２には、４つの１６ビット値または２つの３２ビット値で動作する実行ユニットが示されている。図２での実行ユニット２は、入力バッファ２０を有し、入力バッファ２０は、４つの１６ビット値または２つの３２ビット値を保持することができる。重みｗ０、…、ｗ３をそれぞれ表す４つの１６ビット値を保持することが示されている。このユニットは、ｒｍａｓｋモジュール２４に乱数を提供するための、ハードウェアで実装された擬似乱数生成器２２を有する。ベクトル内の各個の値が維持される確率を保つために、入力バッファ位置２６が設けられている。この確率値は、（図３に示すように）命令内で提供することも、前の命令によって設定して、ｒｍａｓｋ命令によってレジスタまたはメモリアドレスにアクセスすることもできる。例えば、この確率値は、情報内の１７ビットのイミディエート値でよい。ｒｍａｓｋモジュールは、ＰＲＮＧ２２および確率値２６によって生成された乱数を使用して、入力ベクトルの値をランダムにマスクする（０にする）。出力ベクトルは、出力バッファ２８に入れられる。図２では、第１および第３の値が０にマスクされているものとして示されている。この確率は、各個の値が維持される（すなわちマスクされない）確率であることに留意されたい。例えば、確率が０．５である場合、各個の値がマスクされる確率は０．５である。したがって、４つの値すべてが０にマスクされる確率は（０．５）4、すなわち１／１６である。乱数生成器は、確率に基づいて、どの値をマスクすべきかの指示を提供することによって、所要のランダム性をマスキングに導入する。
【００３２】
図４を参照すると、ｒｍａｓｋモジュールは、以下のように動作する。擬似乱数生成器２２は、６４ビットの出力を生成する。出力ごとに４つの１６ビットフィールドｃｆ０、…、ｃｆ３が生成され、ソースオペランドでの確率値と突き合わせてテストされる。単精度モードの場合には、２つの３２ビットフィールドが生成され、同様に、ソースオペランドでの確率値と突き合わせてテストされることに留意されたい。
【００３３】
マスク命令が実行されると、ＰＲＮＧの６４ビット出力が提供される。出力ごとに、４つの１６ビットフィールドが形成される。ｒｅｓ０［１５：０］は、ＰＲＮＧ出力の最下位１６ビットを表し、この構文は他の３つのフィールドに適用される。これらのフィールドはそれぞれ、ｃｆフィールド（ｃｆは比較フィールドを意味する）に代入され、比較フィールドｃｆ０、…、ｃｆ３は、それぞれ１６ビット長である。
【数１】
2019079524.tif 000003
【００３４】
次いで、比較ロジック４０を使用して、各比較フィールドｃｆ０、…、３をソースオペランドｓｒｃ１［１５：０］からの確率値と比較することによって、４つの加重ランダムビットｗｐｂ［０］、…、ｗｐｂ［３］が導出される。
【数２】
2019079524.tif 000004
【００３５】
上記の構文は、ｃｆ０＜ｓｒｃ１の場合にビットｗｐｂ［０］に値「１」が代入されることを意味する。ここで、ｃｆ０は、１６ビットの符号なしのランダム値であり、範囲｛０、・・・、６５５３５｝内の値を有することができる。ｓｒｃ１は３２ビット幅のオペランドであるが、最下位１７ビットのみがｒｍａｓｋに使用される。ｓｒｃ１には範囲｛０〜６５５３６｝内の値が許されており、したがって、「マスクされていない」確率は、ｓｒｃ１／６５５３６である。
【００３６】
許されるｓｒｃ１の範囲｛０、…、６５５３６｝に関して、ｓｒｃ１の１７番目のビット（ｓｒｃ１［１６］）は、値６５５３６に関してのみ設定されることに留意されたい。ｃｆ０の最大値は６５５３５であり、６５５３５＜６５５３６であるので、ｓｒｃ１［１６］＝＝１のとき、ｗｐｂ［０］は、自動的に「１」になる。
【００３７】
その後、４ビットｗｐｂ［０，・・・，３］をそれぞれ使用して、ｓｒｃ０［６３：０］内の４つの１６ビット値をそれぞれアンマスクする。したがって、以下のようになる。
【数３】
2019079524.tif 000005
【００３８】
１６’ｂ０は値「０」を有する１６ビット幅のシーケンスを表し、１’ｂ０は値「０」のビットを意味し、１’ｂ１は値「１」のビットを意味する。
【００３９】
例えば、ｗｐｂ［１］＝＝１の場合、ａＤｓｔ［３１：１６］＝ａＳｒｃ０［３１：１６］であり、そうでない場合、ａＤｓｔ［３１：１６］＝０である。
【００４０】
一実施形態では、確率値ａＳｒｃ１を使用して、値がランダムに「アンマスク」される（すなわちマスクされない）確率を選択する。
【００４１】
オペランドａＳｒｃ１＝６５５３６の場合、すべての値が常にアンマスクされる。
【００４２】
オペランドａＳｒｃ１＝４９１５２の場合、各値は、０．２５の確率で独立してマスクされ、０．７５の確率でアンマスクされる。
【００４３】
オペランドａＳｒｃ１＝３２７６８の場合、各値は、０．５０の確率で独立してマスクされ、０．５０の確率でアンマスクされる。
【００４４】
オペランドａＳｒｃ１＝１６３８４の場合、各値は、０．７５の確率でマスクされ、０．２５の確率でアンマスクされる。
【００４５】
オペランドａＳｒｃ１＝０の場合、すべての値が常にマスクされる。
【００４６】
入力を「アンマスクする」とは、入力によって表される値を出力で再現することを意味する。出力形式および精度は、入力形式と必ずしも同じではない。
【００４７】
入力を「マスクする」とは、入力で表される値ではなく、値ゼロを表すシンボルを出力で生成することを意味する。
【００４８】
アンマスク確率＝＝１−マスク確率であることに留意されたい。
【００４９】
本明細書で述べるｒｍａｓｋの実装では、確率値ａＳｒｃ１＝＝６５５３６＊アンマスク確率である。対応するマスク確率は、マスク確率：６５５３６＊（１−マスク確率）から導出することができる。
【００５０】
したがって、マスク確率またはアンマスク確率のいずれかが定義される（それら２つの合計が「１」になる）ことが理解されよう。
【００５１】
ｒｍａｓｋ命令にはいくつかの異なる用途がある。例えば、ドロップアウトを実装するとき、ニューラル出力をメモリに書き込む直前にｒｍａｓｋ命令を使用することができる。次いで、ニューラルネットワークの次の段階での全てのニューロンが、前の層からマスクされた活性値を取り出す。
【００５２】
ドロップ接続を実装するとき、ドット積を計算する直前にメモリから活性値を読み出した直後にｒｍａｓｋ命令を使用することができる。命令は、ソースベクトルが表すものには依存しないため、ドロップアウトおよびドロップ接続以外の用途もある。また、この命令は、ソースベクトル内の１６ビットまたは３２ビットスカラ値の形式には依存しない。出力では、各スカラ値は変更されないままか、またはすべてのビットがマスクされてゼロにされる。したがって、マスク命令を使用して、符号付きもしくは符号なしの４つの１６ビット整数、または様々な１６ビット浮動小数点数形式のベクトルをマスクすることができる。スカラ値形式の唯一の要件は、ゼロへのすべてのビットによって表される値が「０」になることである。
【００５３】
いくつかの数値形式では、値ゼロを表すシンボルが複数あり得る。
【００５４】
例えば、ＩＥＥＥの半精度浮動小数点数形式では、ゼロを表すために以下のシンボルのどちらを使用することもできる。
１６’ｂ００００００００００００００００（正のゼロ）
１６’ｂ１０００００００００００００００（負のゼロ）
【００５５】
本明細書で使用する「ランダム」という用語は、「真にランダム」または「擬似ランダム」を意味することができる。ｒｍａｓｋ命令は、擬似ランダムビットシーケンス生成器または真性ランダムビットシーケンス生成器のいずれかを使用することができる。
【００５６】
擬似乱数は、「擬似乱数生成器」または「ＰＲＮＧ」によって生成される。ＰＲＮＧは、ソフトウェアまたはハードウェアとして実装することができる。真性乱数は、「真性乱数生成器」または「ＴＲＮＧ」によって生成される。ＴＲＮＧの一例は、「遷移効果リング発振器」である。ＴＲＮＧに勝るＰＲＮＧの利点は、決定性である（同じ開始条件で同じプログラムを２回実行すると、常に同じ結果が得られる）。
【００５７】
ＰＲＮＧに勝るＴＲＮＧの利点は、出力が真にランダムであることである（ＰＲＮＧの出力は、任意に選択される数学的性質の有限集合を満たすが、ＰＲＮＧの状態および出力は現在の状態から常に予測可能であり、したがって真にランダムではない）。
【００５８】
特定の実施形態を述べてきたが、開示ヒアリング後に、開示される技法の他の用途および変形が当業者には明らかになり得る。本開示の範囲は、上述した実施形態によっては限定されず、添付の特許請求の範囲のみによって限定される。
【図１Ａ】
2019079524.tif 000006
【図１Ｂ】
2019079524.tif 000007
【図２】
2019079524.tif 000008
【図３】
2019079524.tif 000009
【図４】
2019079524.tif 000010
【外国語明細書】
2019079524000001.pdf