(57)【要約】【課題】本発明は、所定の確率分布に基づいて乱数を生成するためにコンピュータプログラム命令を実行するように構成された実行ユニットを取り扱う。【解決手段】実行ユニットは、命令の実行時に少なくともランダム化ビットストリングを生成するように構成されたハードウェア擬似乱数生成器と、ランダム化ビットストリングから選択された所定のビット長のいくつかビットシーケンスを受け取り、それらのビットシーケンスを足し合わせて結果を生成する加算回路とを備える。【選択図】図２
2019079523.tif 000002
【特許請求の範囲】
【請求項１】
所定の確率分布に基づいて乱数を生成するためにコンピュータプログラム命令を実行するように構成された実行ユニットであって、
前記命令の実行時に少なくとも１つのランダム化ビットストリングを生成するように構成されたハードウェア擬似乱数生成器と、
前記ランダム化ビットストリングから選択された所定のビット長の複数のビットシーケンスを受け取り、前記ビットシーケンスを足し合わせて結果を生成するように構成された加算回路と、
を備える実行ユニット。
【請求項２】
前記ハードウェア擬似乱数生成器は、前記命令の実行時に２つ以上のランダム化ビットストリングを生成するように構成され、前記加算回路は、２つ以上の結果を２つ以上のそれぞれの足し合わせから生成するように構成されている、請求項１に記載の実行ユニット。
【請求項３】
前記正規化回路は、各結果を受け取り、前記正規化された結果を提供するように構成されたルックアップテーブルを備える、請求項１または２に記載の実行ユニット。
【請求項４】
前記正規化回路は、前記結果から所定の数を減算し、前記所定の数は、前記加算回路によって生成される結果の取り得る全数値範囲の半分として計算される、請求項１から３のいずれか一項に記載の実行ユニット。
【請求項５】
前記ビットシーケンスの数が１２である、請求項１から４のいずれか一項に記載の実行ユニット。
【請求項６】
前記正規化回路は、前記結果から１８６を減算するように構成されている、請求項５に記載の実行ユニット。
【請求項７】
前記正規化回路は、ある数で除算するように構成されており、前記数は、前記所定のビット長を有する一様に分布されたランダム変数の取り得る値の数である、請求項１から６のいずれか一項に記載の実行ユニット。
【請求項８】
各シーケンスの前記ビット長が５である、請求項１から７のいずれか一項に記載の実行ユニット。
【請求項９】
前記正規化回路は、３２で除算するように構成されている、請求項７に記載の実行ユニット。
【請求項１０】
前記所定の確率分布は、スケーリングされ、オフセットされ、量子化されたアーウィン・ホール分布の近似である、請求項１から９のいずれか一項に記載の実行ユニット。
【請求項１１】
前記所定の確率分布にさらに正確に適合するように、複数の前記コンピュータプログラム命令からの結果を足し合わせる、足し合わせ回路を備える、請求項１から１０のいずれか一項に記載の実行ユニット。
【請求項１２】
前記ランダム化ビットストリングからの１つまたは複数のビットシーケンスを１つまたは複数の正規化された結果と組み合わせるように構成されている、請求項１から１１のいずれか一項に記載の実行ユニット。
【請求項１３】
前記結果を受け取り、正規化された結果を生成して、前記所定の確率分布の中心を、選択された既知の値に合わせ、前記分布の分散を、選択された既知の値に調整するように構成された正規化回路を備える、請求項１から１２のいずれか一項に記載の実行ユニット。
【請求項１４】
所定の確率分布に基づいて乱数を生成するためにコンピュータプログラム命令を実行する方法であって、
前記命令の実行時に少なくとも１つのランダム化ビットストリングを生成するステップと、
前記ランダム化ビットストリングから所定のビット長のいくつかのビットシーケンスを選択し、前記ビットシーケンスを足し合わせて結果を生成するステップと、
を含む方法。
【請求項１５】
前記命令に応答して、２つ以上のランダム化ビットストリングが生成され、２つ以上の結果が２つ以上のそれぞれの足し合わせから生成される、請求項１４に記載の方法。
【請求項１６】
前記正規化ステップが、ルックアップテーブルを使用して行われる、請求項１４または１５に記載の方法。
【請求項１７】
ビットシーケンスの前記数が１２である、請求項１４から１６のいずれか一項に記載の方法。
【請求項１８】
各シーケンスのビット長が５である、請求項１４から１７のいずれか一項に記載の方法。
【請求項１９】
前記結果を正規化して、正規化された結果を生成し、前記所定の確率分布の中心を、選択された既知の値に合わせ、前記分布の分散を、選択された既知の値に調整するステップを含む、請求項１４から１８のいずれか一項に記載の方法。
【請求項２０】
所定の確率分布に基づいて乱数を生成する方法をコンピュータに実行させるプログラムであって、前記方法は、
前記命令の実行時に少なくとも１つのランダム化ビットストリングを生成するステップと、
ランダム化ビットストリングから所定のビット長のいくつかのビットシーケンスを選択し、それらのビットシーケンスを足し合わせて結果を生成するステップと
を含む、プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、ニューラルネットワークにおけるランダム性の生成に関する。
【背景技術】
【０００２】
ニューラルネットワークは、機械学習や人工知能の分野で使用されている。ニューラルネットワークは、いくつかのノードセットの構成を備え、ノードは、リンクによって相互接続され、互いに対話する。コンピューティングにおけるニューラルネットワークの原理は、電気的な刺激が人間の脳内でどのように情報を伝達するかに関する情報に基づいている。このため、ノードは、ニューロンと呼ばれることも多い。また、頂点と呼ばれることもある。リンクは、時としてエッジと呼ばれる。ネットワークは、入力データを受け取ることができ、特定のノードが、データに対して操作を行う。これらの操作の結果は、他のノードに渡される。各ノードの出力は、ノードの活性値またはノード値と呼ばれる。各リンクは、重みに関連付けられている。重みは、ニューラルネットワークのノード間の接続性を定義する。重みの値を変えることによって行われる、ニューラルネットワークが学習することを可能にする多くの異なる技術が知られている。
【０００３】
図１Ａに、ニューラルネットワーク内のノードの一構成の非常に簡略化した形態を示す。このタイプの構成は、学習または訓練において使用されることが多く、ノードの入力層、ノードの隠れ層、およびノードの出力層を備える。現実には、各層に多くのノードがあり、現在では、セクションごとに複数の層があり得る。入力層の各ノードＮiは、その出力において活性値またはノード値を生成することが可能であり、活性値またはノード値は、そのノードに提供されたデータに対して関数を適用することによって生成される。入力層からのノード値のベクトルは、隠れ層内の各ノードの入力において、それぞれの重みのベクトルによってスケーリングされる。各重みは、入力層内のその特定のノードと、それが接続される隠れ層内のノードとの接続性を定義する。実際には、ネットワークは数百万個のノードを有し、多次元的に接続されていることがあり、従って、ベクトルはテンソルであることが多い。ノードＮｈの入力にかけられる重みは、ｗ０、…、ｗ２と表される。入力層内の各ノードは、少なくとも最初は、隠れ層内の各ノードに接続されている。隠れ層内の各ノードは、それらに提供されたデータに対して活性化関数を適用することができ、同様に、出力層内の各ノードＮ0に供給される出力ベクトルを生成することができる。各ノードは、例えば、それぞれの入力リンクに関して、ノードの入力活性値とそのノード固有の重みとのドット積の計算を行うことによって、その入力データに重みを付ける。次いで、重み付けされたデータに対して活性化関数を適用する。活性化関数は、例えばシグモイド関数でよい。図１Ｂを参照のこと。ネットワークは、入力層に入力されるデータを処理し、各ノードからの活性値に重みを割り当て、隠れ層内の各ノードに入力されるデータに作用することによって（ノードに重み付けして活性化関数を適用することによって）学習する。従って、隠れ層内のノードは、重み付けされたデータを処理し、出力層内のノードに出力を供給する。出力層のノードも、重みを割り当てることができる。各重みは、それぞれの誤差値によって特徴付けられる。さらに、各ノードは、誤差状態に関連付けられてもよい。各ノードでの誤差状態は、ノードの重みの誤差が特定の許容レベルまたは許容度未満であるかどうかの尺度を与える。様々な学習手法があるが、いずれの場合にも、図１Ａでの左から右へのネットワークを通る順伝播、全体的な誤差の計算、およびネットワークを通る図１Ａでの右から左への誤差の逆伝播がある。次のサイクルで、各ノードは、逆伝播された誤差を考慮に入れ、修正された１組の重みを生成する。このようにして、ネットワークは、その所望の動作を行うよう訓練される。
【０００４】
ニューラルネットワークで発生し得る１つの問題は、「過学習（overfitting）」である。数百万または数十億個のパラメータ（重み）を有する大規模なネットワークは、過学習しやすい。過学習により、訓練後のニューラルネットがサンプルからより一般的に特徴を抽出するアプリケーションに適するように関連のある特徴を抽出するように訓練されるというよりもむしろ、ネットワークは、そこに提供された各訓練サンプル（入力ノードにデータを提供する訓練サンプル）を覚えてしまう。過学習／過剰記憶を避けるために、ニューラルネットワークを規則化することによってこの問題を解決するための広範な技法が開発されている。
【０００５】
ニューラルネットを使用して大きなデータセットを処理するとき、ニューラルネットのパフォーマンスを改善できる乱数の使用を伴う手法がある。１つの技法は、いわゆるモンテカルロサンプリングであり、これは、数値結果を得るために反復ランダムサンプリングに依拠する広範なクラスの計算アルゴリズムに使用される用語である。モンテカルロサンプリングの根底にある着想は、ランダム性が原理的に決定的になり得る問題を解決できる可能性があるところにある。モンテカルロサンプリングを使用するとき、乱数の所定の確率分布が望まれる。モンテカルロサンプリングは、例えば生成モデルにおいて使用することができる。
【０００６】
近年、重みや活性値にランダムな雑音を追加することによって、ニューラルネットワークのパフォーマンスを向上させるための技法が考案されている。これに関して、ガウス雑音が１つの可能性として探求されている。
【０００７】
既知のコンピュータ技術を使用してニューラルネットワークを実装することには、様々な課題がある。例えばＣＰＵやＧＰＵを使用してランダム化技術を実装するのは簡単ではなく、これを実現できれば、効率的な実装で実現できるとの完全な利益を得られる。
【発明の概要】
【発明が解決しようとする課題】
【０００８】
本発明者らは、プログラム命令の実行に応答して、ほぼガウス分布である所定の分布からランダムな値を効率的に提供することができるプロセッサ用の実行ユニットを開発した。
【課題を解決するための手段】
【０００９】
所定の確率分布に基づいて乱数を生成するためにコンピュータプログラム命令を実行するように構成された実行ユニットであって、
命令の実行時に少なくとも１つのランダム化ビットストリングを生成するように構成されたハードウェア擬似乱数生成器と、
ランダム化ビットストリングから選択された所定のビット長の複数のビットシーケンスを受け取り、ビットシーケンスを足し合わせて結果を生成するように構成された加算回路と、
を備える実行ユニットが提供される。
【００１０】
実行ユニットは、上記の結果を受け取り、正規化された結果を生成して、所定の確率分布の中心を、選択された既知の値に合わせ、および／または分布の分散を、選択された既知の値に調整するように構成された正規化回路を含むことができる。
【００１１】
ハードウェア擬似乱数生成器は、上記の命令の実行時に２つ以上のランダム化ビットストリングを生成するように構成されることがあり、加算回路は、２つ以上の結果を２つ以上のそれぞれの足し合わせから生成するように構成されることがある。
【００１２】
一実施形態では、正規化回路は、各結果を受け取り、正規化された結果を提供するように構成されたルックアップテーブルを備える。しかし、いかなる実装形態が利用されてもよい。正規化回路は、上記の結果から、加算回路によって生成される結果の取り得る全数値範囲の半分として計算される所定の数を減算し、浮動小数点形式に変換し、除数で除算する機能を実行することができる。除数は、所定のビット長を有する一様に分布されたランダム変数の任意の取り得る値でよい。
【００１３】
一実施形態では、ビットシーケンスの数は１２である。１２は、特定の用途のための所要の分布とハードウェア最適化とを考慮に入れた、ビットシーケンスの数に対する良好な妥協点であることが判明している。この分布は、アーウィン・ホール（Irwin-Hall）分布でよい。各シーケンスは、任意の適切な数のビットを有することができる。本明細書で述べる実施形態では５つであるが、これは非限定的な例にすぎない。
【００１４】
正規化回路は、結果（結果の数値範囲は３７２である）から１８６を減算するように構成することができる。
【００１５】
実行ユニットは、所定の確率分布にさらに正確に適合するように、複数のコンピュータプログラム命令からの結果を足し合わせる、足し合わせ回路を備えることができる。実行ユニットは、さらに、擬似乱数生成器からの出力をコンピュータプログラム命令からの結果と組み合わせるための回路を備えることができる。
【００１６】
対応する方法およびコンピュータプログラムも提供される。
【００１７】
１つの態様は、所定の確率分布に基づいて乱数を生成するためにコンピュータプログラム命令を実行する方法であって、
命令の実行時に少なくとも１つのランダム化ビットストリングを生成するステップと、
ランダム化ビットストリングから所定のビット長のいくつかのビットシーケンスを選択し、ビットシーケンスを足し合わせて結果を生成するステップと、
を含む方法を提供する。別の態様は、実行時に上記の方法を行う非伝送媒体に記録されたコンピュータプログラム命令を含むコンピュータプログラムを備えるコンピュータプログラム製品を提供する。
【００１８】
本発明をより良く理解できるように、かつ本発明の実施を示すために、単に例として以下の図面を参照する。
【図面の簡単な説明】
【００１９】
【図１Ａ】ニューラルネットワークの非常に単純化した概略図である。
【図１Ｂ】ニューロンの非常に単純化した概略図である。
【図２】本発明の一実施形態による処理ユニットの概略図である。
【図３】正規ガウス分布とアーウィン・ホール分布との相違を対数プロットと正規プロットとで示す図である。
【図４】マスキング命令を実装するための実行ユニットのブロック図である。
【図５】複数のグランド命令の結果を足し合わせることによるパフォーマンスの改善を示す図である。
【図６】ｆ１６値からｆ３２値への変換を示す図である。
【図７】分布を比較するグラフである。
【図８】分布を比較するグラフである。
【発明を実施するための形態】
【００２０】
図２に、所定の確率分布からランダムな値を生成するための単一の命令を実行するように構成された実行ユニットの概略ブロック図を示す。本明細書では、この命令をグランド（ｇｒａｎｄ）命令と呼ぶ。実行ユニット２は、処理ユニット内のパイプライン４の一部を成す。処理ユニットは、命令メモリ１０から命令をフェッチする命令フェッチユニット６を備える。また、処理ユニットは、データメモリ１２からデータをロードするため、またはメモリにデータを格納するためにデータメモリ１２にアクセスすることを担うメモリアクセスステージ８を備える。１組のレジスタ１４が設けられ、いかなる場合にもパイプライン４によって実行される命令のためのソースオペランドおよびディスティネーションオペランドを保持する。パイプライン４が、様々な異なる命令を実行するため、例えば数学的演算を行うための多くの異なるタイプの実行ユニットを含むことがあることは容易に理解されよう。本発明において有用となり得る１つのタイプの処理ユニットは、バレルスレッドタイムスロットを使用する処理ユニットであり、そのような処理ユニットでは、スーパーバイザースレッドが、異なるワーカースレッドを、それらの実行のために異なるタイムスロットに割り振ることができる。本明細書で述べるグランド命令は、任意の適切な処理ユニットアーキテクチャと共に使用することができる。
【００２１】
実行ユニット２は、ハードウェア疑似乱数生成器（ＰＲＮＧ）２２を含み、ハードウェア疑似乱数生成器２２は、命令によって要求されたときに疑似乱数を生成する。乱数はそれぞれ、６４ビットのランダム化シーケンスの形態を取る。また、実行ユニット２は、グランド命令実行モジュール２３と、命令の実行の結果を保持するための出力バッファ２７とを備える。
【００２２】
２つのバージョンの命令がある。第１のバージョンの命令ｆ１６ｖ２ｇｒａｎｄ＄ａＤＳＴは、ランダムな値の所定の確率分布からの２つのランダムな１６ビット値をレジスタまたはメモリ位置ＤＳＴに返す。第２のバージョンの命令ｆ３２ｖ２ｇｒａｎｄ＄ａＤＳＴは、同じ分布からの２つの３２ビット値をレジスタまたはメモリ位置ＤＳＴに返す。グランド命令モジュール２３によって実装される技法は、アーウィン・ホール分布に近い分布を提供する。本明細書で説明するように、アーウィン・ホール分布は、ガウス分布に非常に似ている。アーウィン・ホール分布は、それぞれが一様な分布を有するいくつかの独立したランダム変数の和として定義されるランダム変数の確率分布である。アーウィン・ホール分布は、ガウシアン的な特性を有するが、一様和分布（uniform sum distribution）と呼ばれることもある。図３に、足し合わされる独立したランダム変数の数が１２である量子化されたアーウィン・ホール分布を、量子化された正規分布と比較して示す。この量子化されたアーウィン・ホール分布は、分散が１であり平均が０である図示されるガウス分布の曲線によく近似している。図３中、上側のグラフは対数スケールで描かれ、下側のグラフは正規スケールで描かれている。確率密度関数（ＰＤＦ）は、３σまでガウス分布の２０％以内にある。累積分布関数（ＣＤＦ）確率は、±０．００２４（約１％）未満だけガウス分布と異なる。事実上、この分布は、ニューラルネットワークのパフォーマンスを非常に良好に改良するための上述の目的を果たす乱数の分布である。
【００２３】
本明細書で述べる実施形態では、実行ユニットによってグランド命令が実行されるとき、ＰＲＮＧ２２は、２つの６４ビット幅の出力ｒｅｓ０、ｒｅｓ１を生成する。本発明の原理を利用して出力を１つだけ生成することも可能であるが、２つの出力を生成して、１つの命令に応答して２つの乱数を生成することがより効率的であることを理解されたい。中間の６４ビット幅のＰＲＮＧ出力ｒｅｓ０、ｒｅｓ１は、以下に示すように、１２成分の５ビットフィールドを足し合わせることによって９ビットに圧縮される。図４に、２つの加算器４０ａ、４０ａによって実装されるものとして以下に述べる加算機能を概略的に示す。各加算器は、それぞれのランダム化ビットストリングから入力シーケンスを受け取る。各加算器は１２個の入力を有し、各入力は５ビット幅である。各入力ストリングの上位４ビットは破棄される。
【数１】
2019079523.tif 000003
【００２４】
結果として得られる符号なしの９ビットの和（ＲＥＳＵＬＴ  １、ＲＥＳＵＬＴ  ２）は、０〜３７２（両端を含む）の範囲内にある。ランダム化ビットストリングから異なる数のビットシーケンスを選択することによって、また、各ビットシーケンス内のビットの数を変えることによって、異なる数値範囲を生成することができることを理解されたい。任意の特定の数／長さのシーケンスに関して、加算器は、定義された数値範囲内の１組の結果を生成する。
【００２５】
便宜上、１２個の入力を有する加算器が２つ示されているが、他の加算回路構成を利用することもできることを理解されたい。１２個の一様に分布されたランダム変数を足し合わせるという選択は、以下のことに基づく最適化である。
１）正規（ガウス）分布への近接とハードウェアコストとの間の妥当な折り合い。
２）これを行うことで、扱い難い分数ではなく標準偏差が１の分布が生成される。これにより、整数を標準偏差が１となる浮動小数点値にスケーリングするのに必要なハードウェアを単純化できる。
【００２６】
次いで、足し合わせの結果ＲＥＳＵＬＴ  １、ＲＥＳＵＬＴ  ２は、正規化回路４２で処理されて、正規化された曲線が提供される。この正規化をしないと、結果の数値範囲が０から３７２まで広がり、０が中心とならない。正規化回路は、結果から１８６を減算して、範囲の中心を再び０にする減算関数を実行する。この数１８６は、３７２の半分である。異なる数値範囲の場合には、異なる減算値（数値範囲の半分）になることを理解されたい。
【００２７】
これらの結果は、正規化回路４２でのｆ１６ブロックへの変換で示されるように、所要の精度に対応するように浮動小数点形式にすべきである。
【００２８】
除算ステージは、浮動小数点数を３２で割って、標準正規分布と非常に似た属性を有する分布を生成する（特に、標準偏差をできるだけ１に近付ける）。３２は、２の累乗であり、一定のシフトまたは指数調整を必要とするため、３２での除算は、二進数演算で容易に実現できる。３２は、５ビットの一様に分布された１つのランダム変数の取り得る値である。選択されたシーケンスの数ｎが１２でない場合、３２ｎ／１２によってスケーリングする必要があることに留意されたい。
【００２９】
本明細書で述べる実施形態では、正規化回路は、ルックアップテーブル４２によって実装される。しかし、正規化回路を任意の適切な形態で実装することができることを理解されたい。１つの構成では、ルックアップテーブルを論理ゲートに統合することができる。
【００３０】
上で述べたように、２つのバージョンの命令がある。ここまで述べてきたバージョンは、ｆ１６ｖ２ｇｒａｎｄである。代替のバージョンｆ３２ｖ２ｇｒａｎｄでは、出力は、２つのｆ１６値ではなく、２つのｆ３２値である。所要のｆ３２出力値のビットは、変換論理４４によって行われる以下の操作に従ってそれぞれのｆ１６結果Ｖ１、Ｖ２から導出することができるので、別のルックアップテーブルなどは必要ない。
【数２】
2019079523.tif 000004
【００３１】
すなわち、３２ビットシーケンスは、ＶＩ（ｆ１６）結果のビット１４および１５を取り、ビット１３を４回複製し、ビット３〜１２を取り、１６個のゼロで完成させることによって導出される。これは図６に示してある。
【００３２】
図３に戻ると、グラフ上の各点は、１２個の５ビット値を足し合わせることによって生成される３８４個の取り得る値の１つを表す。確率分布関数は、約３．５σまではガウス分布を保ち、それを超えると、分布のテールが正規分布の場合よりも速く減衰する。最も極端な出力は±５．８１２５σであるが、確率は非常に低い。これに最も近い既知の分布は、連続型の量子化されていない１２次のアーウィン・ホール分布であるが、以下の特定の分布は、それが生成される様式に基づいて独特であることを理解されたい。
【００３３】
複数のグランド命令からの擬似ガウススカラを足し合わせることによって、正規分布にさらに良く近似することができる。すでに述べたように、アーウィン・ホール確率分布関数のテールの大きさは、理想的な正規分布の大きさよりも急速に減少する。これは、複数のグランド命令からの複数のスカラ出力を足し合わせることによって修正することができる。図５における曲線は、標準偏差（σ）の最大数までの理想的な正規分布の１％、１０％、または２倍以内のテールを有する確率分布関数（または累積分布関数）を実現するために、スカラをいくつ足し合わせる必要があるかを示す。例えば、ｆ１６ｖ２グランド命令からの各スカラ出力は、１２個の一様に分布された擬似ランダムな値の和であり、テールは、２．８σまで、理想的な正規分布の１０％以内である。
【００３４】
１２個のグランド命令スカラ出力を足し合わせるために（１４４次のアーウィン・ホール分布）、グランド命令は、６回実行され、結果として得られるスカラ値の１２個全てが足し合わされるべきである。最終的な和は、標準偏差１を維持するために１２の平方根（ｓｑｒｔ（１２））で除算される。
【００３５】
グランド命令の出力を、他の一様に分布されたランダム変数の和と組み合わせて使用して、２σまたは３σ切り捨て正規分布を生成することができる。２σ（または３σ）を生成するためのアルゴリズムは、２つ（または３つ）の「一様乱数（uniform）」を生成して、それらを足し合わせるように機能することができ、各一様乱数は、（ＰＲＮＧからの）−１〜１の範囲内の一様に分布されたランダム変数からの乱数である。次いで、２σ分布に関して、前述のグランド命令を使用して、２つの正規分布値Ｎ１、Ｎ２が生成される（３σ分布に関しては、ただ１つの正規分布値Ｎ１が生成される）。値Ｎ１、Ｎ２は、前に論じた出力Ｖ１、Ｖ２に対応することに留意されたい。
【００３６】
｜Ｎ１｜または｜Ｎ２｜が２よりも大きい２σ分布の場合、一様乱数の和が出力として使用される。
【００３７】
｜Ｎ１｜が３よりも大きい３σ分布の場合、代わりにそれらの一様乱数の和が使用される。
【００３８】
２つの一様なランダム変数の和は、図７での曲線（ａ）によって表されるＰＤＦ（確率分布関数）を有する。ごく大まかにしかガウス分布を成さないが、明確に±２σに制限されている。アルゴリズムが一致させようとしている切り捨てガウス分布は、曲線（ｂ）によって示されている。
【００３９】
どちらのガウス変数も範囲外である（２σを超えている）場合には、代わりに２つの一様乱数の和が使用される。
【００４０】
両方のガウス分布が範囲外になる可能性は低いので、２つの一様乱数の和はまれにしか使用されず（約１／５００回）、従って平均分布に対するその影響はごくわずかである。
【００４１】
３σ切り捨てガウス値を生成するためのアルゴリズムはわずかに異なる。このとき、１つの値が３σ範囲を超える尤度はすでに小さい（約１／５００）ので、ガウス変数は１つだけあればよい。
【００４２】
３つの一様なランダム変数の和は、図８での曲線（ａ）によって表されるＰＤＦを有する。これは、概してガウス分布であり、明確に±３σに制限されている。アルゴリズムが一致させようとしている切り捨てガウス分布は、曲線（ｂ）によって示されている。ガウス変数が範囲外である（３σを超えている）場合には、代わりに３つの一様乱数の和が使用される。
【００４３】
３つの一様乱数の和は、既に３σ切り捨てガウス分布のかなり良い近似であり、かつ約１／５００回しか使用されないので、結果として得られる分布の誤差は非常に小さい。
【００４４】
本明細書で使用する「ランダム」という用語は、「真にランダム」または「擬似ランダム」を意味することができる。グランド命令は、擬似ランダムビットシーケンス生成器または真性ランダムビットシーケンス生成器のいずれかを使用することができる。
【００４５】
疑似乱数は、「擬似乱数生成器」または「ＰＲＮＧ」によって生成される。ＰＲＮＧは、ソフトウェアまたはハードウェアとして実装することができる。真性乱数は、「真性乱数生成器」または「ＴＲＮＧ」によって生成される。ＴＲＮＧの一例は、「遷移効果リング発振器」である。ＴＲＮＧに勝るＰＲＮＧの利点は、決定性である（同じ開始条件で同じプログラムを２回実行すると、常に同じ結果が得られる）。
【００４６】
ＰＲＮＧに勝るＴＲＮＧの利点は、出力が真にランダムであることである（ＰＲＮＧの出力は、任意に選択される数学的性質の有限集合を満たすが、ＰＲＮＧの状態および出力は現在の状態から常に予測可能であり、従って真にランダムではない）。
【００４７】
特定の実施形態を述べてきたが、開示ヒアリング後に、開示される技法の他の用途および変形が当業者には明らかになり得る。本開示の範囲は、上述した実施形態によっては限定されず、添付の特許請求の範囲のみによって限定される。
【図１Ａ】
2019079523.tif 000005
【図１Ｂ】
2019079523.tif 000006
【図２】
2019079523.tif 000007
【図３】
2019079523.tif 000008
【図４】
2019079523.tif 000009
【図５】
2019079523.tif 000010
【図６】
2019079523.tif 000011
【図７】
2019079523.tif 000012
【図８】
2019079523.tif 000013
【外国語明細書】
2019079523000001.pdf