大規模モデルの学習や推論において正規分布がどのように使われているか

以下では、「大規模モデル(特に大規模言語モデルなどの深層学習モデル)」の学習や推論(推定)において正規分布(ガウス分布)がどのように使われているのかについて説明いたします。ポイントとしては、

  1. 重み(パラメータ)の初期化と正規分布
  2. ノイズを加える手法(学習安定化・正則化・プライバシー保護など)でのガウス分布
  3. ベイズ的アプローチ(ベイズ推論・Variational Inference)でのガウス分布
  4. 再パラメータ化トリック(VAEなど)でのガウス分布
  5. 生成時のサンプリングでガウス分布が関わる可能性
  6. 中間表現・内部表現が「正規分布的」な振る舞いをする理由や近似
  7. その他の場面(活性化分布の統計的性質など)

などを分けて、学習・推論プロセス全般でどのように正規分布が関連しているかを解説します。


1. 重み(パラメータ)の初期化と正規分布

1-1. 重み初期化の背景

深層学習モデル(ニューラルネット)の学習の最初のステップでは、モデルの各層に含まれる重み(結合係数)やバイアスなどのパラメータを「乱数的に初期化」するのが一般的です。この初期値が不適切だと、勾配消失(vanishing gradient)や勾配爆発(exploding gradient)が起こり、学習がうまく進まないことがあります。

このため、さまざまな初期化手法が研究されてきました。代表例としてはXavier Initialization (Glorot Initialization) や He Initialization (Kaiming Initialization) などがあります。大規模モデルの多層ニューラルネットワークでも、これらの理論的根拠に基づいた初期化戦略が用いられます。

1-2. 初期化における正規分布の利用

これらの初期化手法は、主に正規分布あるいは一様分布から重みをサンプリングして初期値を設定します。たとえば、Xavier Initializationであれば、
\[
W \sim \mathbf{N}\Bigl(0, \frac{2}{n_{\text{in}} + n_{\text{out}}}\Bigr)
\]
といった形で、平均0・分散\(\frac{2}{n_{\text{in}} + n_{\text{out}}}\)の正規分布から初期化を行う場合があります(実際には\(\frac{1}{n_{\text{in}} + n_{\text{out}}}\)の係数になるバージョンや、He Initializationでは\(\frac{2}{n_{\text{in}}}\)など微妙に係数が異なる)。

いずれも「正規分布の標準偏差を層の入力次元数や出力次元数に基づき調整」した上で、平均0のガウス乱数を使う、というのが主流です。なぜ正規分布を使うかといえば、平均0で分散が適切にコントロールされたガウス乱数が、ニューラルネットの入力から出力への情報伝達を初期状態でバランスよくするのに都合が良いから、というのが大きな理由です。

また、一様分布を使う初期化もありますが、一様分布と正規分布は中心極限定理などを介して深い関係があり、「正規分布の方がよりなめらかな分布」と捉えられているため好まれることもあります。大規模モデルでも、大部分の実装フレームワークでは標準ガウス乱数(正規乱数)をベースとした初期化がデフォルトか、もしくはオプションとして提供されています。


2. ノイズを加える手法(学習安定化・正則化・プライバシー保護など)でのガウス分布

2-1. 学習安定化や正則化のためのガウスノイズ

大規模モデルを学習する際、過剰適合(オーバーフィッティング)を防ぐためにノイズを加えるという手法がしばしば用いられます。たとえば、入力層にガウスノイズを加える、あるいは中間層の出力にガウスノイズを注入することで、モデルが入力データの揺らぎにロバストになるようにするという正則化手法があります。

  • Gaussian Noise Regularization
  x_noisy = x + ε
  where ε ~ N(0, σ^2 I)

といった形で、平均0、分散σ^2の正規分布からサンプリングしたノイズを入力に足す。
ドロップアウト(dropout)など別の手法が有名ですが、ガウスノイズを加える手法もよく使われています。

  • Batch Normalization, Layer Normalization での分布
    こちらは直接ガウスノイズを足すわけではありませんが、バッチ単位での平均と分散を使って正規化するため、内部表現が「平均0・分散1に近い状態」にリスケールされます。これが結果的に各ユニットの分布を擬似的に正規分布っぽくして学習を安定化させる、という考え方もあります(実際には「バッチやチャネル方向の分散」を使うなど細部は違いますが、「ガウス分布を仮定しているわけではなくとも、ガウスっぽく整形する」発想が背景にある)。

2-2. Differential Privacy(差分プライバシー)の文脈でのガウスノイズ

大規模モデルの学習にはしばしば大量のユーザーデータが使われる場合があります。ユーザーのプライバシーを守りながら学習したい場合は、差分プライバシー(Differential Privacy)の手法が利用されることがあります。差分プライバシーのアルゴリズムでは、勾配や学習済みパラメータなどの公開前にノイズを加えて匿名化・秘匿化を行うのが一般的です。

  • DP-SGD(Differentially Private Stochastic Gradient Descent)では、各ミニバッチの勾配をクリッピングした後でガウスノイズを加えてアップデートする、という流れがよく利用されます。
    \[
    g \leftarrow \frac{1}{|\mathbf{B}|}\sum_{i \in \mathbf{B}} \nabla_{\theta} \ell(x_i, \theta)
    \]
    ここで\(|g|\)を上限クリップしたのち、
    \[
    g \leftarrow g + \mathbf{N}(0, \sigma^2 C^2 I)
    \]
    のようにガウスノイズを足して勾配を更新するのです。これにより、元の勾配の小さな変化(例えばバッチにある1サンプルが含まれるかどうかの違い)を検知しにくくし、個人情報を保護します。

このように、ガウスノイズは「データの秘匿」「学習の安定化」「汎化性能の向上」など、さまざまな目的で利用されます。


3. ベイズ的アプローチ(ベイズ推論・Variational Inference)でのガウス分布

3-1. ベイズ深層学習におけるガウス分布

大規模モデルに限らず、ニューラルネットをベイズ的に扱おうとするアプローチでは「各パラメータ(重み)を確率分布で表現し、学習を通してその分布のパラメータを推定する」という考え方をとります。

  • ベイズ深層学習の考え方では、重み\(w\)を「確定値」ではなく事前分布\(p(w)\)を設定し、学習を通じて事後分布\(p(w \mid X)\)を近似的に求めます。
  • 事前分布には、正規分布を仮定することが多い(例:平均0・分散\(\sigma^2\)のガウス分布)です。

ただし、学習データ数が極めて多い大規模モデルでは、そのまま厳密なベイズ推論を行うのは計算的に非常にコストがかかりすぎるため、Variational Inference(変分推論)MCMC(マルコフ連鎖モンテカルロ)の近似手法、あるいはそれらに準じた簡易的な手法で「ベイズ的な挙動をある程度得る」形に落とし込むことがあります。

3-2. 変分オートエンコーダ(VAE)や拡散モデル

  • VAE(Variational Autoencoder)
    VAEのボトルネック部分(潜在変数\(z\))をガウス分布で近似し、その分散や平均をニューラルネットで学習します。また後述の「再パラメータ化トリック」によってガウス分布からサンプリングするときにも正規分布が使われます。
    大規模モデルとしてはVAE単体が使われるより、拡散モデル(Diffusion Model)や大規模GANなどのほうが近年は注目されているかもしれませんが、VAE的な考え方を組み込んだハイブリッドモデルが研究される場合もあります。
  • 拡散モデル(Diffusion Model)
    拡散モデルは、「データに徐々にガウスノイズを加えていく過程(フォワードプロセス)」と「ノイズを逆向きに除去(逆拡散)していく過程(リバースプロセス)」を定義し、その逆拡散過程をニューラルネットで近似して学習します。
    ここでも「ガウス分布」が基盤となります。データに加えるノイズをガウスノイズ(通常は平均0・分散\(\beta_t\))とし、学習時にはそれに対応する逆方向のガウス的確率過程を学習する形です。大規模画像生成モデル(Stable Diffusionなど)でこの考え方が使われますが、言語モデルでもテキスト拡散モデルが研究されており、これにも正規分布が深く関わっています。

4. 再パラメータ化トリック(VAEなど)でのガウス分布

4-1. 再パラメータ化トリックの概要

VAEなどで潜在変数\(z\)をガウス分布
\[
q_\phi(z \mid x) = \mathbf{N}(z \mid \mu_\phi(x), \sigma_\phi^2(x) I)
\]
で表すとき、そのままサンプリングすると確率変数の取り扱いが複雑になってしまう問題があります。そこで、

\[
z = \mu_\phi(x) + \sigma_\phi(x) \odot \epsilon,\quad \epsilon \sim \mathbf{N}(0, I)
\]

という形で、標準正規分布のサンプル\(\epsilon\)と、ニューラルネット出力の\(\mu_\phi(x)\)・\(\sigma_\phi(x)\)とを組み合わせる形にして、勾配を伝播しやすくするのが再パラメータ化トリックです。

4-2. 大規模モデルとの関連

「VAEそのもの」を大規模モデルとして巨視的に運用するケースは、現在ではそこまで多くはないかもしれません。ただし、部分的にVAE的な仕組みを組み込むモデル、あるいはマルチモーダルモデル(画像とテキストなど)で潜在変数を利用する際などには登場しうるため、「学習中にガウス分布からのサンプリング+再パラメータ化」を行う場面は依然として存在します。


5. 生成時のサンプリングでガウス分布が関わる可能性

5-1. 言語モデルの生成プロセス

GPTのような大規模言語モデルは、実質的に次の単語(トークン)の確率分布を学習しており、生成(推論)時にはソフトマックスからのサンプリングをすることが多いです。この部分の分布はガウス分布ではなく、「離散的なトークン空間上の多項分布」として扱われます。
よって、“通常の言語モデルのトークン選択”に限っていえば、直接ガウス分布を用いるわけではありません。

5-2. ノイズによる多様性確保のためのガウス的揺らぎ

ただし、モデルによっては隠れ層の出力にノイズを注入して多様なサンプリングを実現する仕組みを使うものや、スコアリング段階でガウス的な摂動を加えることで探索の多様性を得るような手法も理論的には可能です。
実際にはそこまで一般的ではありませんが、Creativeな文章生成や探索でガウスノイズを使うケースがあるかもしれません。

5-3. 拡散モデルなど確率的生成プロセス

テキスト生成に直接拡散モデルを用いる手法も少しずつ研究されています。そこでは、前述の通りガウスノイズを加えて生成を繰り返す仕組みになるので、推論(サンプリング)時も正規分布に基づく乱数が登場します。
これらはまだ主流とは言えないものの、将来的に拡散モデルが言語生成でも主流になれば、推論(生成)段階の内部で繰り返しガウス分布からノイズをサンプリングする場面が増える可能性があります。


6. 中間表現・内部表現が「正規分布的」な振る舞いをする理由や近似

6-1. 活性化分布が中心極限定理的にガウスっぽくなるケース

大規模ディープネットワークでは、多数の入力特徴量の線形結合を経て非線形活性化関数を通る、という処理が多層にわたって繰り返されます。入力次元が非常に大きい場合、線形結合の出力が中心極限定理によって「正規分布に近い分布形状」を示すという指摘が古くからあります(実際には非線形関数が入るので単純な中心極限定理はそのまま適用できませんが、近似的にガウス的な分布形状になる場合は多い)。

  • これがBatch Normalizationなどの正規化レイヤーとの相性を良くしている面もあります。
  • ただし「実際には歪度や尖度を持つ非対称な分布になることも多い」ため、完全にきれいなガウス分布になるわけではないことは注意が必要です。

6-2. 「半ばガウス分布を仮定」した分析

学習の解析で、“重みや活性の分布をガウス分布とみなす近似”を用いる研究もあります。大規模モデルの理論解析をするとき、パラメータ数が非常に多くなるため、その統計的性質を単純化して扱いたい場合に「ガウス分布近似で扱う」というのはありふれたアイデアです。

  • 例:ニューラルタンジェントカーネル(NTK)理論の一部で、初期重みがガウス的に分布していると仮定して考察するパターンなど。

7. その他の場面

7-1. ハードウェア実装レベルでの乱数生成

GPUや各種アクセラレータ(TPUなど)で大量の乱数を生成するとき、擬似乱数生成器(PRNG)により最終的には正規分布を近似した乱数を生成する場面も多々あります。これは、上記のように初期化ノイズ注入一部のサンプリングでガウス分布を利用するために必要です。
(Pythonのtorch.randn(), numpy.random.randn(), tf.random.normal()などは内部的に何らかのメソッドでガウス乱数を生成している)

7-2. 損失関数の仮定によるガウス分布

回帰タスクなどでは、モデル出力を「平均\(\mu\)で、推定対象との誤差が\(\epsilon \sim \mathbf{N}(0, \sigma^2)\)である」というガウス仮定のもとで、最小二乗(MSE)を損失関数として用いることが多いです。言語モデル自体は離散分布を扱うので直接MSEを使うことは少ないですが、一部の補助タスク(回帰ベースのタスク)でそうしたガウス仮定に基づいた損失を用いることはあります。


まとめ

以上のように、大規模モデルの学習や推論では、さまざまな場面で正規分布が使われる可能性があります。主な例としては、

  1. パラメータ初期化
  • XavierやHeなどの初期化方式で、平均0・分散が層次元依存のガウス分布が用いられる。
  1. ノイズを加える手法(正則化・プライバシー保護など)
  • Gaussian Noise RegularizationやDP-SGDでガウスノイズが使われる。
  1. ベイズ的アプローチ
  • 重みの事前分布にガウス分布を仮定する、変分推論での近似分布をガウス分布とするなど。
  1. VAE・再パラメータ化トリック
  • 潜在変数のガウス分布サンプリングを勾配計算可能な形に変換。
  1. 生成・推論プロセス(拡散モデルなど)
  • 拡散モデルのノイズ加え・除去過程でガウス分布が基盤となる。
  1. 内部表現のガウス的近似・統計的解析
  • 多次元の線形変換や非線形変換の結果として、しばしば「なんとなくガウスっぽい」分布が生じやすい。
  1. ハードウェア実装レベルでの乱数生成
  • 大量の正規乱数が各種フレームワークやGPU/TPU上で生成される。

これらは大規模モデルにも小規模モデルにも共通する部分が多いですが、「大規模」であるほど、初期化やノイズ注入で使うガウス乱数のスケールや必要量が膨大になるという特徴はあります。また、拡散モデルのようにそもそもの生成アルゴリズムがガウスノイズを中心に据えている手法が、画像分野では既に大規模モデルの主流となっています。テキストやマルチモーダルにも適用されるケースは増えており、そうした分野でもガウス分布の利用がさらに増加する可能性があります。


付録: 具体的な例

最後に、開発者や研究者がよく利用するフレームワークの例で、正規分布を使う場面を簡単に示します。

  • PyTorch
  • torch.nn.init.normal_(tensor, mean=0.0, std=1.0): テンソルにガウス乱数を代入する初期化。
  • torch.randn(*size): 指定サイズの標準ガウス乱数を生成。
  • torch.nn.Dropoutはガウスノイズではなくバーナリーマスクだが、GaussianNoiseレイヤーを自作することは容易。
  • DP-SGDライブラリなどで勾配にガウスノイズを付加。
  • TensorFlow/Keras
  • tf.random.normal(shape, mean=0.0, stddev=1.0, ...)でガウス乱数を生成。
  • tf.keras.initializers.RandomNormal(mean=0.0, stddev=0.05), tf.keras.layers.GaussianNoise(stddev) など。
  • JAX/Flax
  • jax.random.normal(key, shape) でガウス乱数を取得。
  • 初期化やノイズ注入なども同様に対応。

こうしたライブラリ関数が、内部的にボックス=ミュラー法等の正規乱数生成アルゴリズムを用いて大量のガウス乱数を生成し、学習や推論のさまざまな局面で用いられています。


結論

大規模モデル(大規模言語モデル含む)の学習・推論において、正規分布(ガウス分布)はほぼ必ずと言っていいほど何かしらの場面で活用されているといって過言ではありません。なかでも代表的なのは

  1. パラメータ(重み)初期化
  2. ガウスノイズ注入(正則化・プライバシー保護など)
  3. ベイズ的推論や拡散モデルなどの確率的生成
  4. (VAE的な)再パラメータ化トリック

などです。

また、理論的解析やパラメータ分布の近似にもガウス分布がしばしば登場します。大規模モデルではパラメータ数が膨大かつ学習データも膨大であるため、それらの「統計的な扱い」をする際の背景として、ガウス分布が頻繁に引き合いに出されるわけです。

このように、正規分布は大規模ニューラルネットのあらゆるプロセス(学習・推論・理論解析)における不可欠な構成要素となっています。