📝

[メモ] レプリカ法の恒等式

に公開

はじめに

レプリカ法は、統計物理学や機械学習の分野で広く用いられる(大雑把な)解析手法の1つ。スピングラス系やニューラルネットワークの理論解析において、系の熱力学的性質や学習性能の「理論予測」でよく使われる。

統計物理学や情報統計力学では、

\begin{align} P_\beta(\bm{x}; \bm{J}) &= \frac{1}{Z_\beta(\bm{J})} \exp\!\left\{ -\beta H(\bm{x}; \bm{J}) \right\} \end{align}

というGibbs-Boltzmann分布で振る舞いが記述される系を考えることが多い。ここで、

  • \bm{x}:状態変数(スピン配置、ニューラルネットワークの出力など)
  • \bm{J}:パラメータ(ランダムな相互作用、学習データなど)
  • H(\bm{x}; \bm{J}):ハミルトニアン(エネルギー関数)
  • \beta = 1/(k_B T):逆温度
  • Z_\beta(\bm{J}):分配関数

レプリカ法の処方箋

レプリカ法では大抵の場合、系の自由エネルギーの配位平均(\bm{J} に関する期待値)

\begin{align} \mathbb{E}_{\bm{J}}[ F_\beta(\bm{J}) ] &= -\frac{1}{\beta} \mathbb{E}_{\bm{J}}[ \log Z_\beta(\bm{J})] \end{align}

を計算することとなる。

この計算はそのままだと難しい。対数の内側に確率変数 \bm{J} が入っているためである。一般に \mathbb{E}[\log X] \neq \log \mathbb{E}[X] であるため、直接的な計算は非常に困難である。

この困難を回避するために、レプリカ法では以下の2つの恒等式のいずれかを用いる。

\begin{align} \mathbb{E}_{\bm{J}}[ \log Z_\beta(\bm{J}) ] &= \lim_{n \to +0} \frac{ \mathbb{E}_{\bm{J}}[ Z_\beta^n(\bm{J}) ] - 1 }{n}, \tag{1} \\ \mathbb{E}_{\bm{J}}[ \log Z_\beta(\bm{J}) ] &= \lim_{n \to +0} \frac{1}{n} \log \mathbb{E}_{\bm{J}}[ Z_\beta^n(\bm{J}) ]. \tag{2} \end{align}

どちらの恒等式を使っても、最終的には適当な秩序変数を導入した後で、鞍点条件に由来する自己整合方程式(自己無撞着方程式)を導くことになるので同じ結果が得られる。

恒等式(1)の導出

前者の恒等式は、右辺が \mathbb{E}_{\bm{J}}[ Z_\beta^n(\bm{J}) ]n=0 における微分係数となることを利用する。

\begin{align} \lim_{n \to +0} \frac{ \mathbb{E}_{\bm{J}}[ Z_\beta^n(\bm{J}) ] - 1 }{n} &= \frac{\partial}{\partial n} \mathbb{E}_{\bm{J}}[ Z_\beta^n(\bm{J}) ] \bigg|_{n=0} \notag \\ &= \mathbb{E}_{\bm{J}}\!\left[ \frac{\partial}{\partial n} Z_\beta^n(\bm{J}) \bigg|_{n=0} \right] \notag \\ &= \mathbb{E}_{\bm{J}}\!\left[ Z_\beta^n(\bm{J}) \log Z_\beta(\bm{J}) \bigg|_{n=0} \right] \notag \\ &= \mathbb{E}_{\bm{J}}[ \log Z_\beta(\bm{J}) ]. \end{align}

恒等式(2)の導出

一方後者は、右辺が \log \mathbb{E}_{\bm{J}}[ Z_\beta^n(\bm{J}) ]n=0 における微分係数となることを利用する。前者との違いは、先に対数を取ったものを微分する点である。

\begin{align} \lim_{n \to +0} \frac{1}{n} \log \mathbb{E}_{\bm{J}}[ Z_\beta^n(\bm{J}) ] &= \frac{\partial}{\partial n} \log \mathbb{E}_{\bm{J}}[ Z_\beta^n(\bm{J}) ] \bigg|_{n=0} \notag \\ &= \frac{1}{\mathbb{E}_{\bm{J}}[ Z_\beta^n(\bm{J}) ]} \mathbb{E}_{\bm{J}}\!\left[ \frac{\partial}{\partial n} Z_\beta^n(\bm{J}) \right] \bigg|_{n=0} \notag \\ &= \frac{1}{\mathbb{E}_{\bm{J}}[ Z_\beta^n(\bm{J}) ]} \mathbb{E}_{\bm{J}}\!\left[ Z_\beta^n(\bm{J}) \log Z_\beta(\bm{J}) \right] \bigg|_{n=0} \notag \\ &= \mathbb{E}_{\bm{J}}[ \log Z_\beta(\bm{J}) ]. \end{align}

「レプリカ」について

「レプリカ」という名前の由来は、Z_\beta^n(\bm{J}) を以下のように解釈できることにある。

Z_\beta^n(\bm{J}) = \left( \int d \bm{x} e^{-\beta H(\bm{x}; \bm{J})} \right)^n = \int d \bm{x}^1 \ldots \int d \bm{x}^n \exp\left\{ -\beta \sum_{\alpha=1}^n H(\bm{x}^\alpha; \bm{J}) \right\}

これは、元の系の n 個の「複製(レプリカ)」が絡み合った系の分配関数として解釈できる。

\left. \begin{array}{c} \bm{x}^1 \\ \bm{x}^2 \\ \vdots \\ \bm{x}^n \end{array} \right\} n \text{ 個の系の複製} \longrightarrow \underbrace{ x_1^1, x_2^1, \ldots, x_{N}^1, \ldots, x_{N}^{n} }_{Nn \text{ 個の状態変数からなる系}}

そこでまず n を自然数だと思い込んで、複製された系の分配関数を計算し、あとで n を実数に解析接続して n \to 0 極限を取る。n \to 0 極限の数学的厳密性は、人類にはまだわからない。

Discussion