JP2019079523A - ニューラルネットワークにおけるランダム性の生成 - Google Patents

ニューラルネットワークにおけるランダム性の生成 Download PDF

Info

Publication number
JP2019079523A
JP2019079523A JP2018197148A JP2018197148A JP2019079523A JP 2019079523 A JP2019079523 A JP 2019079523A JP 2018197148 A JP2018197148 A JP 2018197148A JP 2018197148 A JP2018197148 A JP 2018197148A JP 2019079523 A JP2019079523 A JP 2019079523A
Authority
JP
Japan
Prior art keywords
execution unit
distribution
bit
unit according
result
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2018197148A
Other languages
English (en)
Other versions
JP6744375B2 (ja
Inventor
フィリックス スティーブン
Felix Stephen
フィリックス スティーブン
ダ コスタ ゴッドフリー
Da Costa Godfrey
ダ コスタ ゴッドフリー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Graphcore Ltd
Original Assignee
Graphcore Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Graphcore Ltd filed Critical Graphcore Ltd
Publication of JP2019079523A publication Critical patent/JP2019079523A/ja
Application granted granted Critical
Publication of JP6744375B2 publication Critical patent/JP6744375B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • G06F7/582Pseudo-random number generators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/01Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/50Adding; Subtracting
    • G06F7/501Half or full adders, i.e. basic adder cells for one denomination
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Mathematical Physics (AREA)
  • Molecular Biology (AREA)
  • Biophysics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Biomedical Technology (AREA)
  • Health & Medical Sciences (AREA)
  • Complex Calculations (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

【課題】本発明は、所定の確率分布に基づいて乱数を生成するためにコンピュータプログラム命令を実行するように構成された実行ユニットを取り扱う。【解決手段】実行ユニットは、命令の実行時に少なくともランダム化ビットストリングを生成するように構成されたハードウェア擬似乱数生成器と、ランダム化ビットストリングから選択された所定のビット長のいくつかビットシーケンスを受け取り、それらのビットシーケンスを足し合わせて結果を生成する加算回路とを備える。【選択図】図2

Description

本開示は、ニューラルネットワークにおけるランダム性の生成に関する。
ニューラルネットワークは、機械学習や人工知能の分野で使用されている。ニューラルネットワークは、いくつかのノードセットの構成を備え、ノードは、リンクによって相互接続され、互いに対話する。コンピューティングにおけるニューラルネットワークの原理は、電気的な刺激が人間の脳内でどのように情報を伝達するかに関する情報に基づいている。このため、ノードは、ニューロンと呼ばれることも多い。また、頂点と呼ばれることもある。リンクは、時としてエッジと呼ばれる。ネットワークは、入力データを受け取ることができ、特定のノードが、データに対して操作を行う。これらの操作の結果は、他のノードに渡される。各ノードの出力は、ノードの活性値またはノード値と呼ばれる。各リンクは、重みに関連付けられている。重みは、ニューラルネットワークのノード間の接続性を定義する。重みの値を変えることによって行われる、ニューラルネットワークが学習することを可能にする多くの異なる技術が知られている。
図1Aに、ニューラルネットワーク内のノードの一構成の非常に簡略化した形態を示す。このタイプの構成は、学習または訓練において使用されることが多く、ノードの入力層、ノードの隠れ層、およびノードの出力層を備える。現実には、各層に多くのノードがあり、現在では、セクションごとに複数の層があり得る。入力層の各ノードNiは、その出力において活性値またはノード値を生成することが可能であり、活性値またはノード値は、そのノードに提供されたデータに対して関数を適用することによって生成される。入力層からのノード値のベクトルは、隠れ層内の各ノードの入力において、それぞれの重みのベクトルによってスケーリングされる。各重みは、入力層内のその特定のノードと、それが接続される隠れ層内のノードとの接続性を定義する。実際には、ネットワークは数百万個のノードを有し、多次元的に接続されていることがあり、従って、ベクトルはテンソルであることが多い。ノードNhの入力にかけられる重みは、w0、…、w2と表される。入力層内の各ノードは、少なくとも最初は、隠れ層内の各ノードに接続されている。隠れ層内の各ノードは、それらに提供されたデータに対して活性化関数を適用することができ、同様に、出力層内の各ノードN0に供給される出力ベクトルを生成することができる。各ノードは、例えば、それぞれの入力リンクに関して、ノードの入力活性値とそのノード固有の重みとのドット積の計算を行うことによって、その入力データに重みを付ける。次いで、重み付けされたデータに対して活性化関数を適用する。活性化関数は、例えばシグモイド関数でよい。図1Bを参照のこと。ネットワークは、入力層に入力されるデータを処理し、各ノードからの活性値に重みを割り当て、隠れ層内の各ノードに入力されるデータに作用することによって(ノードに重み付けして活性化関数を適用することによって)学習する。従って、隠れ層内のノードは、重み付けされたデータを処理し、出力層内のノードに出力を供給する。出力層のノードも、重みを割り当てることができる。各重みは、それぞれの誤差値によって特徴付けられる。さらに、各ノードは、誤差状態に関連付けられてもよい。各ノードでの誤差状態は、ノードの重みの誤差が特定の許容レベルまたは許容度未満であるかどうかの尺度を与える。様々な学習手法があるが、いずれの場合にも、図1Aでの左から右へのネットワークを通る順伝播、全体的な誤差の計算、およびネットワークを通る図1Aでの右から左への誤差の逆伝播がある。次のサイクルで、各ノードは、逆伝播された誤差を考慮に入れ、修正された1組の重みを生成する。このようにして、ネットワークは、その所望の動作を行うよう訓練される。
ニューラルネットワークで発生し得る1つの問題は、「過学習(overfitting)」である。数百万または数十億個のパラメータ(重み)を有する大規模なネットワークは、過学習しやすい。過学習により、訓練後のニューラルネットがサンプルからより一般的に特徴を抽出するアプリケーションに適するように関連のある特徴を抽出するように訓練されるというよりもむしろ、ネットワークは、そこに提供された各訓練サンプル(入力ノードにデータを提供する訓練サンプル)を覚えてしまう。過学習/過剰記憶を避けるために、ニューラルネットワークを規則化することによってこの問題を解決するための広範な技法が開発されている。
ニューラルネットを使用して大きなデータセットを処理するとき、ニューラルネットのパフォーマンスを改善できる乱数の使用を伴う手法がある。1つの技法は、いわゆるモンテカルロサンプリングであり、これは、数値結果を得るために反復ランダムサンプリングに依拠する広範なクラスの計算アルゴリズムに使用される用語である。モンテカルロサンプリングの根底にある着想は、ランダム性が原理的に決定的になり得る問題を解決できる可能性があるところにある。モンテカルロサンプリングを使用するとき、乱数の所定の確率分布が望まれる。モンテカルロサンプリングは、例えば生成モデルにおいて使用することができる。
近年、重みや活性値にランダムな雑音を追加することによって、ニューラルネットワークのパフォーマンスを向上させるための技法が考案されている。これに関して、ガウス雑音が1つの可能性として探求されている。
既知のコンピュータ技術を使用してニューラルネットワークを実装することには、様々な課題がある。例えばCPUやGPUを使用してランダム化技術を実装するのは簡単ではなく、これを実現できれば、効率的な実装で実現できるとの完全な利益を得られる。
本発明者らは、プログラム命令の実行に応答して、ほぼガウス分布である所定の分布からランダムな値を効率的に提供することができるプロセッサ用の実行ユニットを開発した。
所定の確率分布に基づいて乱数を生成するためにコンピュータプログラム命令を実行するように構成された実行ユニットであって、
命令の実行時に少なくとも1つのランダム化ビットストリングを生成するように構成されたハードウェア擬似乱数生成器と、
ランダム化ビットストリングから選択された所定のビット長の複数のビットシーケンスを受け取り、ビットシーケンスを足し合わせて結果を生成するように構成された加算回路と、
を備える実行ユニットが提供される。
実行ユニットは、上記の結果を受け取り、正規化された結果を生成して、所定の確率分布の中心を、選択された既知の値に合わせ、および/または分布の分散を、選択された既知の値に調整するように構成された正規化回路を含むことができる。
ハードウェア擬似乱数生成器は、上記の命令の実行時に2つ以上のランダム化ビットストリングを生成するように構成されることがあり、加算回路は、2つ以上の結果を2つ以上のそれぞれの足し合わせから生成するように構成されることがある。
一実施形態では、正規化回路は、各結果を受け取り、正規化された結果を提供するように構成されたルックアップテーブルを備える。しかし、いかなる実装形態が利用されてもよい。正規化回路は、上記の結果から、加算回路によって生成される結果の取り得る全数値範囲の半分として計算される所定の数を減算し、浮動小数点形式に変換し、除数で除算する機能を実行することができる。除数は、所定のビット長を有する一様に分布されたランダム変数の任意の取り得る値でよい。
一実施形態では、ビットシーケンスの数は12である。12は、特定の用途のための所要の分布とハードウェア最適化とを考慮に入れた、ビットシーケンスの数に対する良好な妥協点であることが判明している。この分布は、アーウィン・ホール(Irwin-Hall)分布でよい。各シーケンスは、任意の適切な数のビットを有することができる。本明細書で述べる実施形態では5つであるが、これは非限定的な例にすぎない。
正規化回路は、結果(結果の数値範囲は372である)から186を減算するように構成することができる。
実行ユニットは、所定の確率分布にさらに正確に適合するように、複数のコンピュータプログラム命令からの結果を足し合わせる、足し合わせ回路を備えることができる。実行ユニットは、さらに、擬似乱数生成器からの出力をコンピュータプログラム命令からの結果と組み合わせるための回路を備えることができる。
対応する方法およびコンピュータプログラムも提供される。
1つの態様は、所定の確率分布に基づいて乱数を生成するためにコンピュータプログラム命令を実行する方法であって、
命令の実行時に少なくとも1つのランダム化ビットストリングを生成するステップと、
ランダム化ビットストリングから所定のビット長のいくつかのビットシーケンスを選択し、ビットシーケンスを足し合わせて結果を生成するステップと、
を含む方法を提供する。別の態様は、実行時に上記の方法を行う非伝送媒体に記録されたコンピュータプログラム命令を含むコンピュータプログラムを備えるコンピュータプログラム製品を提供する。
本発明をより良く理解できるように、かつ本発明の実施を示すために、単に例として以下の図面を参照する。
ニューラルネットワークの非常に単純化した概略図である。 ニューロンの非常に単純化した概略図である。 本発明の一実施形態による処理ユニットの概略図である。 正規ガウス分布とアーウィン・ホール分布との相違を対数プロットと正規プロットとで示す図である。 マスキング命令を実装するための実行ユニットのブロック図である。 複数のグランド命令の結果を足し合わせることによるパフォーマンスの改善を示す図である。 f16値からf32値への変換を示す図である。 分布を比較するグラフである。 分布を比較するグラフである。
図2に、所定の確率分布からランダムな値を生成するための単一の命令を実行するように構成された実行ユニットの概略ブロック図を示す。本明細書では、この命令をグランド(grand)命令と呼ぶ。実行ユニット2は、処理ユニット内のパイプライン4の一部を成す。処理ユニットは、命令メモリ10から命令をフェッチする命令フェッチユニット6を備える。また、処理ユニットは、データメモリ12からデータをロードするため、またはメモリにデータを格納するためにデータメモリ12にアクセスすることを担うメモリアクセスステージ8を備える。1組のレジスタ14が設けられ、いかなる場合にもパイプライン4によって実行される命令のためのソースオペランドおよびディスティネーションオペランドを保持する。パイプライン4が、様々な異なる命令を実行するため、例えば数学的演算を行うための多くの異なるタイプの実行ユニットを含むことがあることは容易に理解されよう。本発明において有用となり得る1つのタイプの処理ユニットは、バレルスレッドタイムスロットを使用する処理ユニットであり、そのような処理ユニットでは、スーパーバイザースレッドが、異なるワーカースレッドを、それらの実行のために異なるタイムスロットに割り振ることができる。本明細書で述べるグランド命令は、任意の適切な処理ユニットアーキテクチャと共に使用することができる。
実行ユニット2は、ハードウェア疑似乱数生成器(PRNG)22を含み、ハードウェア疑似乱数生成器22は、命令によって要求されたときに疑似乱数を生成する。乱数はそれぞれ、64ビットのランダム化シーケンスの形態を取る。また、実行ユニット2は、グランド命令実行モジュール23と、命令の実行の結果を保持するための出力バッファ27とを備える。
2つのバージョンの命令がある。第1のバージョンの命令f16v2grand$aDSTは、ランダムな値の所定の確率分布からの2つのランダムな16ビット値をレジスタまたはメモリ位置DSTに返す。第2のバージョンの命令f32v2grand$aDSTは、同じ分布からの2つの32ビット値をレジスタまたはメモリ位置DSTに返す。グランド命令モジュール23によって実装される技法は、アーウィン・ホール分布に近い分布を提供する。本明細書で説明するように、アーウィン・ホール分布は、ガウス分布に非常に似ている。アーウィン・ホール分布は、それぞれが一様な分布を有するいくつかの独立したランダム変数の和として定義されるランダム変数の確率分布である。アーウィン・ホール分布は、ガウシアン的な特性を有するが、一様和分布(uniform sum distribution)と呼ばれることもある。図3に、足し合わされる独立したランダム変数の数が12である量子化されたアーウィン・ホール分布を、量子化された正規分布と比較して示す。この量子化されたアーウィン・ホール分布は、分散が1であり平均が0である図示されるガウス分布の曲線によく近似している。図3中、上側のグラフは対数スケールで描かれ、下側のグラフは正規スケールで描かれている。確率密度関数(PDF)は、3σまでガウス分布の20%以内にある。累積分布関数(CDF)確率は、±0.0024(約1%)未満だけガウス分布と異なる。事実上、この分布は、ニューラルネットワークのパフォーマンスを非常に良好に改良するための上述の目的を果たす乱数の分布である。
本明細書で述べる実施形態では、実行ユニットによってグランド命令が実行されるとき、PRNG22は、2つの64ビット幅の出力res0、res1を生成する。本発明の原理を利用して出力を1つだけ生成することも可能であるが、2つの出力を生成して、1つの命令に応答して2つの乱数を生成することがより効率的であることを理解されたい。中間の64ビット幅のPRNG出力res0、res1は、以下に示すように、12成分の5ビットフィールドを足し合わせることによって9ビットに圧縮される。図4に、2つの加算器40a、40aによって実装されるものとして以下に述べる加算機能を概略的に示す。各加算器は、それぞれのランダム化ビットストリングから入力シーケンスを受け取る。各加算器は12個の入力を有し、各入力は5ビット幅である。各入力ストリングの上位4ビットは破棄される。
結果として得られる符号なしの9ビットの和(RESULT 1、RESULT 2)は、0〜372(両端を含む)の範囲内にある。ランダム化ビットストリングから異なる数のビットシーケンスを選択することによって、また、各ビットシーケンス内のビットの数を変えることによって、異なる数値範囲を生成することができることを理解されたい。任意の特定の数/長さのシーケンスに関して、加算器は、定義された数値範囲内の1組の結果を生成する。
便宜上、12個の入力を有する加算器が2つ示されているが、他の加算回路構成を利用することもできることを理解されたい。12個の一様に分布されたランダム変数を足し合わせるという選択は、以下のことに基づく最適化である。
1)正規(ガウス)分布への近接とハードウェアコストとの間の妥当な折り合い。
2)これを行うことで、扱い難い分数ではなく標準偏差が1の分布が生成される。これにより、整数を標準偏差が1となる浮動小数点値にスケーリングするのに必要なハードウェアを単純化できる。
次いで、足し合わせの結果RESULT 1、RESULT 2は、正規化回路42で処理されて、正規化された曲線が提供される。この正規化をしないと、結果の数値範囲が0から372まで広がり、0が中心とならない。正規化回路は、結果から186を減算して、範囲の中心を再び0にする減算関数を実行する。この数186は、372の半分である。異なる数値範囲の場合には、異なる減算値(数値範囲の半分)になることを理解されたい。
これらの結果は、正規化回路42でのf16ブロックへの変換で示されるように、所要の精度に対応するように浮動小数点形式にすべきである。
除算ステージは、浮動小数点数を32で割って、標準正規分布と非常に似た属性を有する分布を生成する(特に、標準偏差をできるだけ1に近付ける)。32は、2の累乗であり、一定のシフトまたは指数調整を必要とするため、32での除算は、二進数演算で容易に実現できる。32は、5ビットの一様に分布された1つのランダム変数の取り得る値である。選択されたシーケンスの数nが12でない場合、32n/12によってスケーリングする必要があることに留意されたい。
本明細書で述べる実施形態では、正規化回路は、ルックアップテーブル42によって実装される。しかし、正規化回路を任意の適切な形態で実装することができることを理解されたい。1つの構成では、ルックアップテーブルを論理ゲートに統合することができる。
上で述べたように、2つのバージョンの命令がある。ここまで述べてきたバージョンは、f16v2grandである。代替のバージョンf32v2grandでは、出力は、2つのf16値ではなく、2つのf32値である。所要のf32出力値のビットは、変換論理44によって行われる以下の操作に従ってそれぞれのf16結果V1、V2から導出することができるので、別のルックアップテーブルなどは必要ない。
すなわち、32ビットシーケンスは、VI(f16)結果のビット14および15を取り、ビット13を4回複製し、ビット3〜12を取り、16個のゼロで完成させることによって導出される。これは図6に示してある。
図3に戻ると、グラフ上の各点は、12個の5ビット値を足し合わせることによって生成される384個の取り得る値の1つを表す。確率分布関数は、約3.5σまではガウス分布を保ち、それを超えると、分布のテールが正規分布の場合よりも速く減衰する。最も極端な出力は±5.8125σであるが、確率は非常に低い。これに最も近い既知の分布は、連続型の量子化されていない12次のアーウィン・ホール分布であるが、以下の特定の分布は、それが生成される様式に基づいて独特であることを理解されたい。
複数のグランド命令からの擬似ガウススカラを足し合わせることによって、正規分布にさらに良く近似することができる。すでに述べたように、アーウィン・ホール確率分布関数のテールの大きさは、理想的な正規分布の大きさよりも急速に減少する。これは、複数のグランド命令からの複数のスカラ出力を足し合わせることによって修正することができる。図5における曲線は、標準偏差(σ)の最大数までの理想的な正規分布の1%、10%、または2倍以内のテールを有する確率分布関数(または累積分布関数)を実現するために、スカラをいくつ足し合わせる必要があるかを示す。例えば、f16v2グランド命令からの各スカラ出力は、12個の一様に分布された擬似ランダムな値の和であり、テールは、2.8σまで、理想的な正規分布の10%以内である。
12個のグランド命令スカラ出力を足し合わせるために(144次のアーウィン・ホール分布)、グランド命令は、6回実行され、結果として得られるスカラ値の12個全てが足し合わされるべきである。最終的な和は、標準偏差1を維持するために12の平方根(sqrt(12))で除算される。
グランド命令の出力を、他の一様に分布されたランダム変数の和と組み合わせて使用して、2σまたは3σ切り捨て正規分布を生成することができる。2σ(または3σ)を生成するためのアルゴリズムは、2つ(または3つ)の「一様乱数(uniform)」を生成して、それらを足し合わせるように機能することができ、各一様乱数は、(PRNGからの)−1〜1の範囲内の一様に分布されたランダム変数からの乱数である。次いで、2σ分布に関して、前述のグランド命令を使用して、2つの正規分布値N1、N2が生成される(3σ分布に関しては、ただ1つの正規分布値N1が生成される)。値N1、N2は、前に論じた出力V1、V2に対応することに留意されたい。
|N1|または|N2|が2よりも大きい2σ分布の場合、一様乱数の和が出力として使用される。
|N1|が3よりも大きい3σ分布の場合、代わりにそれらの一様乱数の和が使用される。
2つの一様なランダム変数の和は、図7での曲線(a)によって表されるPDF(確率分布関数)を有する。ごく大まかにしかガウス分布を成さないが、明確に±2σに制限されている。アルゴリズムが一致させようとしている切り捨てガウス分布は、曲線(b)によって示されている。
どちらのガウス変数も範囲外である(2σを超えている)場合には、代わりに2つの一様乱数の和が使用される。
両方のガウス分布が範囲外になる可能性は低いので、2つの一様乱数の和はまれにしか使用されず(約1/500回)、従って平均分布に対するその影響はごくわずかである。
3σ切り捨てガウス値を生成するためのアルゴリズムはわずかに異なる。このとき、1つの値が3σ範囲を超える尤度はすでに小さい(約1/500)ので、ガウス変数は1つだけあればよい。
3つの一様なランダム変数の和は、図8での曲線(a)によって表されるPDFを有する。これは、概してガウス分布であり、明確に±3σに制限されている。アルゴリズムが一致させようとしている切り捨てガウス分布は、曲線(b)によって示されている。ガウス変数が範囲外である(3σを超えている)場合には、代わりに3つの一様乱数の和が使用される。
3つの一様乱数の和は、既に3σ切り捨てガウス分布のかなり良い近似であり、かつ約1/500回しか使用されないので、結果として得られる分布の誤差は非常に小さい。
本明細書で使用する「ランダム」という用語は、「真にランダム」または「擬似ランダム」を意味することができる。グランド命令は、擬似ランダムビットシーケンス生成器または真性ランダムビットシーケンス生成器のいずれかを使用することができる。
疑似乱数は、「擬似乱数生成器」または「PRNG」によって生成される。PRNGは、ソフトウェアまたはハードウェアとして実装することができる。真性乱数は、「真性乱数生成器」または「TRNG」によって生成される。TRNGの一例は、「遷移効果リング発振器」である。TRNGに勝るPRNGの利点は、決定性である(同じ開始条件で同じプログラムを2回実行すると、常に同じ結果が得られる)。
PRNGに勝るTRNGの利点は、出力が真にランダムであることである(PRNGの出力は、任意に選択される数学的性質の有限集合を満たすが、PRNGの状態および出力は現在の状態から常に予測可能であり、従って真にランダムではない)。
特定の実施形態を述べてきたが、開示ヒアリング後に、開示される技法の他の用途および変形が当業者には明らかになり得る。本開示の範囲は、上述した実施形態によっては限定されず、添付の特許請求の範囲のみによって限定される。

Claims (20)

  1. 所定の確率分布に基づいて乱数を生成するためにコンピュータプログラム命令を実行するように構成された実行ユニットであって、
    前記命令の実行時に少なくとも1つのランダム化ビットストリングを生成するように構成されたハードウェア擬似乱数生成器と、
    前記ランダム化ビットストリングから選択された所定のビット長の複数のビットシーケンスを受け取り、前記ビットシーケンスを足し合わせて結果を生成するように構成された加算回路と、
    を備える実行ユニット。
  2. 前記ハードウェア擬似乱数生成器は、前記命令の実行時に2つ以上のランダム化ビットストリングを生成するように構成され、前記加算回路は、2つ以上の結果を2つ以上のそれぞれの足し合わせから生成するように構成されている、請求項1に記載の実行ユニット。
  3. 前記正規化回路は、各結果を受け取り、前記正規化された結果を提供するように構成されたルックアップテーブルを備える、請求項1または2に記載の実行ユニット。
  4. 前記正規化回路は、前記結果から所定の数を減算し、前記所定の数は、前記加算回路によって生成される結果の取り得る全数値範囲の半分として計算される、請求項1から3のいずれか一項に記載の実行ユニット。
  5. 前記ビットシーケンスの数が12である、請求項1から4のいずれか一項に記載の実行ユニット。
  6. 前記正規化回路は、前記結果から186を減算するように構成されている、請求項5に記載の実行ユニット。
  7. 前記正規化回路は、ある数で除算するように構成されており、前記数は、前記所定のビット長を有する一様に分布されたランダム変数の取り得る値の数である、請求項1から6のいずれか一項に記載の実行ユニット。
  8. 各シーケンスの前記ビット長が5である、請求項1から7のいずれか一項に記載の実行ユニット。
  9. 前記正規化回路は、32で除算するように構成されている、請求項7に記載の実行ユニット。
  10. 前記所定の確率分布は、スケーリングされ、オフセットされ、量子化されたアーウィン・ホール分布の近似である、請求項1から9のいずれか一項に記載の実行ユニット。
  11. 前記所定の確率分布にさらに正確に適合するように、複数の前記コンピュータプログラム命令からの結果を足し合わせる、足し合わせ回路を備える、請求項1から10のいずれか一項に記載の実行ユニット。
  12. 前記ランダム化ビットストリングからの1つまたは複数のビットシーケンスを1つまたは複数の正規化された結果と組み合わせるように構成されている、請求項1から11のいずれか一項に記載の実行ユニット。
  13. 前記結果を受け取り、正規化された結果を生成して、前記所定の確率分布の中心を、選択された既知の値に合わせ、前記分布の分散を、選択された既知の値に調整するように構成された正規化回路を備える、請求項1から12のいずれか一項に記載の実行ユニット。
  14. 所定の確率分布に基づいて乱数を生成するためにコンピュータプログラム命令を実行する方法であって、
    前記命令の実行時に少なくとも1つのランダム化ビットストリングを生成するステップと、
    前記ランダム化ビットストリングから所定のビット長のいくつかのビットシーケンスを選択し、前記ビットシーケンスを足し合わせて結果を生成するステップと、
    を含む方法。
  15. 前記命令に応答して、2つ以上のランダム化ビットストリングが生成され、2つ以上の結果が2つ以上のそれぞれの足し合わせから生成される、請求項14に記載の方法。
  16. 前記正規化ステップが、ルックアップテーブルを使用して行われる、請求項14または15に記載の方法。
  17. ビットシーケンスの前記数が12である、請求項14から16のいずれか一項に記載の方法。
  18. 各シーケンスのビット長が5である、請求項14から17のいずれか一項に記載の方法。
  19. 前記結果を正規化して、正規化された結果を生成し、前記所定の確率分布の中心を、選択された既知の値に合わせ、前記分布の分散を、選択された既知の値に調整するステップを含む、請求項14から18のいずれか一項に記載の方法。
  20. 所定の確率分布に基づいて乱数を生成する方法をコンピュータに実行させるプログラムであって、前記方法は、
    前記命令の実行時に少なくとも1つのランダム化ビットストリングを生成するステップと、
    ランダム化ビットストリングから所定のビット長のいくつかのビットシーケンスを選択し、それらのビットシーケンスを足し合わせて結果を生成するステップと
    を含む、プログラム。
JP2018197148A 2017-10-20 2018-10-19 ニューラルネットワークにおけるランダム性の生成 Active JP6744375B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB1717309.7A GB2568660B (en) 2017-10-20 2017-10-20 Generating Random Numbers Based on a Predetermined Probaility Distribution in an Execution Unit
GB1717309.7 2017-10-20

Publications (2)

Publication Number Publication Date
JP2019079523A true JP2019079523A (ja) 2019-05-23
JP6744375B2 JP6744375B2 (ja) 2020-08-19

Family

ID=60481696

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018197148A Active JP6744375B2 (ja) 2017-10-20 2018-10-19 ニューラルネットワークにおけるランダム性の生成

Country Status (8)

Country Link
US (2) US10613833B2 (ja)
EP (1) EP3474134B1 (ja)
JP (1) JP6744375B2 (ja)
KR (1) KR102181385B1 (ja)
CN (1) CN109697048B (ja)
CA (1) CA3021415C (ja)
GB (1) GB2568660B (ja)
TW (1) TWI717646B (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE112021006880T5 (de) 2021-01-22 2023-11-16 Nec Corporation Zufallszahlengenerator, Zufallszahlen-Erzeugungsverfahren und nichtflüchtiges, computerlesbares Medium das ein Programm speichert

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2568660B (en) * 2017-10-20 2020-10-14 Graphcore Ltd Generating Random Numbers Based on a Predetermined Probaility Distribution in an Execution Unit
US11533272B1 (en) * 2018-02-06 2022-12-20 Amesite Inc. Computer based education methods and apparatus
CN110765111B (zh) * 2019-10-28 2023-03-31 深圳市商汤科技有限公司 存储和读取方法、装置、电子设备和存储介质
TWI754970B (zh) * 2020-06-22 2022-02-11 鴻海精密工業股份有限公司 加速啟動函數運算的裝置、方法及存儲介質
CN112580822B (zh) * 2020-12-16 2023-10-17 北京百度网讯科技有限公司 机器学习模型的对抗训练方法装置、电子设备和介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4218749A (en) * 1978-09-25 1980-08-19 Sangamo Weston, Inc. Apparatus and method for digital noise synthesis
GB2076570A (en) * 1980-05-14 1981-12-02 British Broadcasting Corp Random Number Generator
JPH06132825A (ja) * 1992-10-16 1994-05-13 Nippon Precision Circuits Kk 信号生成回路
JP2005038229A (ja) * 2003-07-16 2005-02-10 Fujitsu Ltd 乱数発生装置
JP2008078131A (ja) * 2006-08-28 2008-04-03 Gm Global Technology Operations Inc パターン認識技法を使用する水蓄積における電池間の変動性の検出
JP2009049547A (ja) * 2007-08-15 2009-03-05 Seiko Epson Corp 画像処理装置、画像処理方法、画像処理プログラム
JP2013214050A (ja) * 2012-03-30 2013-10-17 Freescale Semiconductor Inc ランダム値生成方法およびシステム

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SE380696B (sv) 1974-03-20 1975-11-10 Philips Svenska Ab Sett att alstra en pseudoslumpbitfoljd och anordning for utforande av settet.
JPH03117209A (ja) * 1989-09-29 1991-05-20 Anritsu Corp デジタルガウス性雑音信号発生装置
JPH05216630A (ja) 1991-11-29 1993-08-27 Nec Corp 相関のある乱数発生器
JP2000276459A (ja) 1999-03-26 2000-10-06 Fujitsu Ltd 学習による変換関数を用いた乱数発生装置,乱数発生方法および乱数発生システム
US20030177155A1 (en) * 2002-03-15 2003-09-18 Shackleford J. Barry Random number converter of distribution from uniform to gaussian-like
JP4121769B2 (ja) 2002-04-30 2008-07-23 株式会社エヌ・ティ・ティ・ドコモ 乱数列生成装置及び乱数列生成方法、並びに伝搬モデルシミュレーション装置及び方法
US7472148B2 (en) * 2004-07-23 2008-12-30 Qualcomm Incorporated Method and apparatus for random-number generator
JP2006072891A (ja) 2004-09-06 2006-03-16 Sony Corp セルオートマトンに基づく、制御可能な周期を有する擬似乱数シーケンスの生成方法および装置
US8255443B2 (en) * 2008-06-03 2012-08-28 International Business Machines Corporation Execution unit with inline pseudorandom number generator
US8601485B2 (en) * 2011-05-25 2013-12-03 Arm Limited Data processing apparatus and method for processing a received workload in order to generate result data
EP2798771A4 (en) * 2011-12-29 2015-10-07 Intel Corp METHOD AND APPARATUS FOR NON-DETERMINISTIC RAND BIT GENERATOR (NRBG)
US10061562B2 (en) * 2012-09-29 2018-08-28 Pivotal Software, Inc. Random number generator in a parallel processing database
US8873750B2 (en) * 2013-03-14 2014-10-28 International Business Machines Corporation Instruction for performing a pseudorandom number generate operation
US9417845B2 (en) * 2013-10-02 2016-08-16 Qualcomm Incorporated Method and apparatus for producing programmable probability distribution function of pseudo-random numbers
CN105045561A (zh) * 2015-08-12 2015-11-11 中国电子科技集团公司第四十一研究所 一种伪随机数产生方法
US10922052B2 (en) * 2015-10-12 2021-02-16 Oracle International Corporation Generating pseudorandom number sequences by nonlinear mixing of multiple subsidiary pseudorandom number generators
US20170220322A1 (en) * 2016-01-28 2017-08-03 International Business Machines Corporation Generating gaussian random numbers using inverse sampling and recurrence relationship
ES2934735T3 (es) * 2017-04-07 2023-02-24 Intel Corp Sistemas y métodos para generar números aleatorios gaussianos con aceleración por hardware
GB2568660B (en) * 2017-10-20 2020-10-14 Graphcore Ltd Generating Random Numbers Based on a Predetermined Probaility Distribution in an Execution Unit

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4218749A (en) * 1978-09-25 1980-08-19 Sangamo Weston, Inc. Apparatus and method for digital noise synthesis
GB2076570A (en) * 1980-05-14 1981-12-02 British Broadcasting Corp Random Number Generator
JPH06132825A (ja) * 1992-10-16 1994-05-13 Nippon Precision Circuits Kk 信号生成回路
JP2005038229A (ja) * 2003-07-16 2005-02-10 Fujitsu Ltd 乱数発生装置
JP2008078131A (ja) * 2006-08-28 2008-04-03 Gm Global Technology Operations Inc パターン認識技法を使用する水蓄積における電池間の変動性の検出
JP2009049547A (ja) * 2007-08-15 2009-03-05 Seiko Epson Corp 画像処理装置、画像処理方法、画像処理プログラム
JP2013214050A (ja) * 2012-03-30 2013-10-17 Freescale Semiconductor Inc ランダム値生成方法およびシステム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE112021006880T5 (de) 2021-01-22 2023-11-16 Nec Corporation Zufallszahlengenerator, Zufallszahlen-Erzeugungsverfahren und nichtflüchtiges, computerlesbares Medium das ein Programm speichert

Also Published As

Publication number Publication date
US20190121616A1 (en) 2019-04-25
KR102181385B1 (ko) 2020-11-20
TW201931104A (zh) 2019-08-01
US10613833B2 (en) 2020-04-07
EP3474134B1 (en) 2023-09-13
CN109697048A (zh) 2019-04-30
CA3021415C (en) 2021-05-25
TWI717646B (zh) 2021-02-01
GB201717309D0 (en) 2017-12-06
CN109697048B (zh) 2024-03-22
JP6744375B2 (ja) 2020-08-19
GB2568660A (en) 2019-05-29
US20200192636A1 (en) 2020-06-18
EP3474134A1 (en) 2019-04-24
KR20190044550A (ko) 2019-04-30
CA3021415A1 (en) 2019-04-20
US11334320B2 (en) 2022-05-17
GB2568660B (en) 2020-10-14

Similar Documents

Publication Publication Date Title
JP6744375B2 (ja) ニューラルネットワークにおけるランダム性の生成
US11169778B2 (en) Converting floating point numbers to reduce the precision
US11294635B2 (en) Pseudo-random number generator
JP7292297B2 (ja) 確率的丸めロジック
CN113168310B (zh) 用于转换数字的硬件模块
Marni et al. Mc3a: Markov chain monte carlo manycore accelerator
JP6709266B2 (ja) ニューラルネットワークにおける処理
Zhang et al. Adaptive-Precision Framework for SGD Using Deep Q-Learning
Christiani et al. Towards a scalable neuromorphic hardware for classification and prediction with stochastic no-prop algorithms
Khan et al. Quantifying the Performance and Resource Usage of HLS4ML’s Implementation of the Batch Normalization Layer on FPGAs
Bodiwala et al. Stochastic Computing for Deep Neural Networks
JP2021018455A (ja) 乱数発生装置及び乱数発生方法
Бархатова et al. Algorithmic representation of the quantum operators and fast Quantum algorithms

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190218

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200212

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200218

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200515

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20200707

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200730

R150 Certificate of patent or registration of utility model

Ref document number: 6744375

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250