はじめに
レプリカ法は、統計物理学や機械学習の分野で広く用いられる(大雑把な)解析手法の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