VMC 的闭环训练视角¶
VMC 和普通监督学习的关键区别是:样本分布依赖当前参数。
监督学习通常使用固定数据集:
VMC 使用当前波函数定义采样分布:
参数更新后,下一轮采样分布也会改变。
普通函数拟合¶
监督学习中:
\[
L(\theta)
=
{1\over N}\sum_i
\ell(f_\theta(x_i),y_i).
\]
数据 \((x_i,y_i)\) 通常固定。训练只是改变函数 \(f_\theta\)。
VMC 目标¶
VMC 中模型表示波函数:
\[
\psi_\theta(x).
\]
目标是最小化能量:
\[
E(\theta)
=
{\langle\psi_\theta|H|\psi_\theta\rangle
\over
\langle\psi_\theta|\psi_\theta\rangle}.
\]
写成采样形式:
\[
E(\theta)
=
\sum_x p_\theta(x)E_{\rm loc}(x),
\]
其中:
\[
p_\theta(x)
=
{|\psi_\theta(x)|^2\over\sum_{x'}|\psi_\theta(x')|^2},
\]
\[
E_{\rm loc}(x)
=
\sum_{x'}H_{xx'}
{\psi_\theta(x')\over\psi_\theta(x)}.
\]
闭环结构¶
一轮 VMC:
当前 theta
-> 定义 psi_theta(x)
-> 定义 p_theta(x)=|psi_theta(x)|^2
-> 从 p_theta 采样构型
-> 计算 local energy
-> 估计 energy mean 和梯度
-> 更新 theta
-> 回到第一步
这是自洽闭环,因为模型既定义目标估计所需的采样分布,又被这个估计更新。
梯度结构¶
VMC log-derivative 梯度:
\[
\nabla_\theta E
=
2\,\mathrm{Re}
\left[
\left\langle
(E_{\rm loc}(x)-E)
\nabla_\theta\log\psi_\theta(x)^*
\right\rangle_{p_\theta}
\right].
\]
和策略梯度类似,它包含:
强化学习中质量信号是 return 或 advantage。
VMC 中质量信号是 local energy 和平均能量的差。
和当前代码的关系¶
教学版训练循环可读成:
_sample_states()
-> 根据当前模型采样
_evaluate_energy()
-> 计算 psi 和 local energy
_vmc_loss_proxy()
-> 构造能产生 VMC 梯度的 proxy loss
_optimizer_step()
-> backward + optimizer.step
更具体的变量对应见 VMC 训练。
为什么这件事重要¶
闭环采样会带来额外问题:
- 样本质量依赖当前模型。
- 模型初期可能采不到重要构型。
- 参数更新会改变后续训练数据。
- 能量估计有 Monte Carlo 噪声。
- 训练稳定性依赖采样数、学习率和数值精度。
因此 VMC 调试不能只看 loss。更重要的是看:
energy_real是否下降。energy_imag是否接近 0。n_unique是否合理。- local energy 是否出现极端值。
- \(\psi_\theta(x')/\psi_\theta(x)\) 是否数值稳定。