← Akuiro

神经网络与机器学习

2026-07-22

1. 课程概览:机器学习与物理学

1.1 机器学习在物理学中的地位

机器学习已发展成为一种新的科学范式——当物理方程难以描述或求解时,用数据驱动的方法进行推断。物理学中各领域 ML 论文数量爆发式增长:

期刊ML论文数 (2010-2020)
Phys. Rev. Lett.2680
Phys. Rev. B5040
Phys. Rev. E2037
Phys. Rev. C991

从1980-1990年仅74篇,到2010-2020年674篇。

💡 核心观点:AI 不会取代科学家,但使用 AI 的科学家会取代不使用 AI 的科学家

1.2 机器学习 vs. 传统物理方程

方面传统物理方程机器学习方法
描述方式解析公式、普适定律数据关联、非线性映射
数据类型理想化、低维高维、含噪、不完整、异构
适用范围有明确第一性原理复杂耦合、多尺度、反问题
可解释性高(解析形式)较难(黑箱)
不确定度由理论自身给出需专门量化(Bayesian)
💡 物理直觉:ML 不是要取代物理方程,而是补充——当方程不存在、不完整或不可解时,用数据说话

1.3 ML 在物理中的主要应用

  • 仿真 simulations、优化 optimizations、仿真器 emulators
  • 数据融合 Data Fusion:从异构分散数据中提取更一致准确的信息
  • 数据关联与挖掘:高维关联类比量子多体
  • 反问题 Inverse Problems
  • 粒子识别、模型混合 Model Mixing、模型降阶
  • 无监督学习的科学发现
  • 求解微分方程(PINN)

2. 经典统计基础

2.1 基本概念

样本均值: x̄ = (1/n) Σ xᵢ

样本标准差(Bessel 校正,分母 n-1): s = √[ Σ(xᵢ - x̄)² / (n - 1) ]

💡 说人话:均值是数据的中心,标准差是数据分散程度的量度。分母用 n-1 因为样本均值消耗了一个自由度(Bessel 校正)。

2.2 Pearson 线性相关系数

$$ r = \frac{ \sum (x_i - \bar{x})(y_i - \bar{y}) } { \sqrt{ \sum (x_i - \bar{x})^2 } \cdot \sqrt{ \sum (y_i - \bar{y})^2 } } $$

r 值含义
r = +1完全正相关(所有点在一条上升直线上)
r ≈ 0无线性关联
r = -1完全负相关(所有点在一条下降直线上)

数值例子:物理成绩 X=[85, 92, 78, 90, 88],数学成绩 Y=[80, 95, 75, 88, 85]

x̄=86.6, ȳ=84.6,计算得 r≈0.826 → 强正相关

2.3 信息熵与 KL 散度

信息熵(衡量分布的不确定度):

$$ H(P) = - \Sigma \space p_{i} \ln(p_{i}) $$

  • 单位:1 奈特(nat)≈ 1.44 比特
  • 均匀分布时熵最大(最不确定)

KL 散度(衡量两个分布的差异):

$$ D_{\mathrm{KL}}(P \parallel Q) = \sum_i p_{i} \ln \left(\frac{p_i}{q_i}\right) $$

💡 物理直觉:D_KL ≥ 0(非负),等于 0 当且仅当 P=Q。它不是真正的"距离"(不对称)。最小化 D_KL 就是让近似分布 Q 逼近真实分布 P。

交叉熵:

$$ H(P, Q) = \sum_i p_i \ln \left( q_i \right) $$

因为真实世界的分布 也就是 权重(频率)就是 P 来描述

只不过你用你所估计的 编码长度 $\ln q_i$ 来进行计算

简单来讲 就是 现实世界的数据是由真实的 P 产生的, 而不是 由你的假设Q来产生的!!!

用一张表格彻底锁定认知

对比维度前向 KL -DKL(P∥Q)反向 KL -DKL(Q∥P)
权重是谁?真实分布 P近似分布 Q
哪里犯错会死得很惨?当 P 很大 但是 Q很小时(漏掉了真实数据)当Q很大,但 P 很小时(产生了虚假数据)
工程绰号覆盖(Coverage) <br />/ 广度优先 零回避模式搜索(Mode-seeking) <br />/ 深度优先 零强迫
面对双峰 P,单峰 Q怎么做?QQ 被迫“躺平”在两个峰中间,变得很宽很平QQ 随机选择其中一个峰,变得又尖又窄
在机器学习中代表谁?最大似然估计(MLE)、模仿学习、VAE 的重构项变分推断(VI)、强化学习 PPO、VAE 的正则项(KL 惩罚)、GAN
  • 场景 A 选 VAE 或扩散模型(前向 KL 覆盖全面) —— 宁可模糊,不能漏掉病变特征。
  • 场景 B 选 GAN(反向 KL 追求锐利) —— 哪怕模式坍缩,只要生成的那一张够清晰就行。
  • 如今 取长补短 选择了 扩散模型 Stable Diffusion/ DALL-E / Sora ——采用“前向加噪(变模糊)” 与 “反向去噪(变清晰)” 的这种策略

同时 在相应的 损失函数上加工 , 扩散模型不直接比较像素 避免前向KL的平均化陷阱,而是在高纬的潜在空间 latent Space比较 只比较噪声的差异 不至于直接平均成灰色 + 引入“引导尺度 CFG Guidance” 人为增加 反向KL的权重 牺牲一点多样性

KL散度的本质就是 所谓 “加权平均惩罚” 权重 (即乘在外边的分布 决定 惩罚的重点在哪里!)

数值例子:P = [0.7, 0.3], Q = [0.6, 0.4]

D_KL = 0.7×ln(0.7/0.6) + 0.3×ln(0.3/0.4) = 0.7×0.154 + 0.3×(-0.288) ≈ 0.022 nat

2.4 协方差与误差传播

协方差矩阵(参数 θ = (θ₁, ..., θₚ)):

$$ C_{ij} = E \left( (\theta_{i} - \bar{\theta_{i}}) (\theta_{j} - \bar{\theta_{j}}) \right) $$

近似计算(从似然 Hessian):

$$ C \approx 2 \left[ \frac{\partial^{2} \ln{L} }{ \partial\theta_i \partial \theta_j} \right]^{-1} $$

(在 MLE 处求值)

误差传播一阶近似:Y = f(X) →

$$ σ_Y² ≈ (\frac{∂f}{∂X})² σ_X² $$

多变量推广:Y = f(X₁, ..., Xₙ)

$$ σ_Y² ≈ Σ (\frac{\partial f }{\partial X_i})² \sigma ^{2}_{X_i} + 2 Σ_{i

💡 说人话:导数绝对值越大 → 输入的不确定度被放大越厉害。多变量时还有协方差交叉项的贡献。

2.5 条件概率

$$ P (A | B) = \frac{P(AB)}{P(B)} $$

💡 这是整个 Bayesian 统计的基石:在新信息 B 面前,我们对事件 A 的概率认知如何更新。

3. Bayes 统计

3.1 Bayes 定理

经典形式:P(A|B) = P(B|A)·P(A) / P(B)

机器学习语境(h = 假设/模型, D = 数据):

后验 = 似然 × 先验 / 证据

P(h|D) = P(D|h)·P(h) / P(D)

符号术语含义癌症检测例子
P(h)先验 Prior看数据前对 h 的信念普查:发病率 1%
P(D\h)似然 Likelihoodh 为真观察到数据的概率病人中 80% 阳性
P(D)证据 Evidence数据边际概率(归一化)全人群阳性比例
P(h\D)后验 Posterior看数据后更新的信念阳性后真患病的概率
💡 核心哲学差异:Bayes 统计视概率为信念的程度(degree of belief)可随证据更新;经典统计视概率为长期频率。Bayes 方法允许融入先验知识。

新的认知 = (证据的支持力度 ✖️ 原有的偏见) / 整体的情况 !

3.2 数值例子:癌症检测

已知:P(cancer)=1%, P(+|cancer)=80%, P(+|no cancer)=9.6%

P(cancer|+) = (0.80×0.01) / (0.80×0.01 + 0.096×0.99) = 0.008 / (0.008 + 0.09504) ≈ 0.0776 = 7.8%

💡 直觉冲击:阳性后患病概率仅 7.8%,非 80%。因疾病极罕见(先验仅 1%)而假阳性 9.6% 不算太低。这就是 Bayesian 统计区别于直觉频率思维的核心价值。

3.3 三种 Bayesian 估计方法

方法操作输出计算量适用
MLE(极大似然)max P(D\θ)单一点估计大数据、弱先验
MAP(最大后验)max P(D\θ)P(θ)带先验约束的点估计中小有限数据、强先验
Full Bayes采样/积分 P(θ\D)完整参数分布极大需精确不确定度
MAP估计值其实就是 数据均值先验均值 的 加权平均!

- 数据越多,权重越向数据倾斜(MAP 趋近 MLE)。
- 数据越少,权重越向先验倾斜(MAP 趋近先验)。

MAP 叫“正则化”(Regularization),它惩罚了那些偏离先验太远的极端值。

💡 均匀先验下 MAP = MLE。MAP 在有限数据下用先验信息防止过度自信。MAP 估计会被向先验"拉近"。

3.4 共轭先验(Conjugate Prior)

定义:若后验分布和先验属于同一个分布族,该先验称为共轭先验。

例子:

  • Beta 分布 → 二项似然的共轭先验
  • 高斯分布 → 高斯似然(均值未知)的共轭先验
💡 意义:共轭先验使后验可用解析公式计算,避免高维数值积分。数据越多 → 后验越窄 → 参数越确定。

4. 线性回归与最大似然估计

4.1 最小二乘法

模型:y = Xβ + ε,ε 为随机噪声。

目标:min S(β) = ‖y - Xβ‖²

正规方程

$$ \beta = (X^{T} X)^{-1} X^{T} y $$

这里做一个正规化的原因是 X可能本身不能直接求出来逆!

这里是一个伪逆 $XX^{T}$ 是可以保证 为方阵~

最小二乘法(Ordinary Least Squares, OLS)的核心思想就是:

既然有误差 ϵ,我就想办法找一组 β,让误差的平方和最小。

目标函数(Loss):

L(β)=误差的平方和=$\epsilon^{T} \epsilon=(y−Xβ)^{T}(y−Xβ)$=误差的平方和

误差是怎么“没”的?

为了找到让 L(β)L(β) 最小的 ββ,微积分告诉我们:对 β 求导,并让导数等于 0。

(这里省略复杂的矩阵求导过程,直接看结果)

$$ \frac{\partial L}{\partial \beta} = -2 X^{T} (y - X \beta) $$

把式子展开并移项:

$$ X^{T}y=X^{T}Xβ $$

两边同时左乘 (X^{T}X)−1:

有结果 (10) 式子

截距项 (借助矩阵的拼凑) 可以保证 用一种形式化后的 X 表示 所有的 均为 Xβ

example:

假设有三个 数据点

原本的最基本的 X matrix 只有 一列x:

$$ X = \begin{bmatrix}x_1 \\x_2 \\x_3 \end{bmatrix} $$

现在 我们选择在X的最左边 进行强行塞入一列 “1”:

$$ X_{new} = \begin{bmatrix}1 &x_1 \\ 1 & x_2 \\ 1 & x_3 \end{bmatrix} $$

此时 我们参数向量 $\beta$ 就变成两个:

$$ \beta = \begin{bmatrix}\beta_0 \\ \beta1 \end{bmatrix} $$ 于是 我可以对于上述的做矩阵乘法!

$$ X \beta =\begin{bmatrix}1 &x_1 \\ 1 & x_2 \\ 1 & x_3 \end{bmatrix} \begin{bmatrix}\beta_0 \\ \beta1 \end{bmatrix} =\begin{bmatrix}\beta_1 x_1 + \beta_0 \\\beta_1x_2 + \beta_0 \\ \beta_1x_3 + \beta_0 \end{bmatrix} $$

会惊喜的发现 矩阵乘法 会自动帮忙把 截距加上!!!

永远地融进了特征矩阵 X 的第一列里

X 为 N×(1+p) 设计矩阵,第一列全 1 对应截距项。

X = [1  x₁₁ ... x₁ₚ]
    [1  x₂₁ ... x₂ₚ]
    [ :  :    :  : ]
    [1  xₙ₁ ... xₙₚ]

4.2 数值例子:手算线性回归

数据:(1, 2.1), (2, 3.9), (3, 5.8),拟合 y = β₀ + β₁x

X = [[1,1], [1,2], [1,3]], y = [2.1, 3.9, 5.8]ᵀ
XᵀX = [[3, 6], [6, 14]], Xᵀy = [11.8, 26.3]ᵀ
(XᵀX)⁻¹ = [[2.333, -1.0], [-1.0, 0.5]]
β = (XᵀX)⁻¹ Xᵀy = [0.267, 1.85]ᵀ

→ 回归直线:y = 0.267 + 1.85x

检验:x=1 → 2.12 | x=2 → 3.97 | x=3 → 5.82(接近真实值)

4.3 MLE 与最小二乘的等价性

关键条件:噪声 ε ~ N(0, σ²)

似然:

$$ L = \prod (1/√(2πσ²)) exp(-\frac{(yᵢ - xᵢᵀβ)²} {2σ²}) $$

对数似然:

$$ ln L = -(n/2)ln(2πσ²) - (1/2σ²) Σ(yᵢ - xᵢᵀβ)² $$

💡 核心洞察:最大化 ln L(关于 β)等价于最小化 Σ(yᵢ - xᵢᵀβ)²。正态噪声假设下,MLE = 最小二乘

4.4 多项式回归与 SVD 求解

普通的线性回归只能画直线 —— 现实数据 关系 往往非线性 用 多项式 !(Taylor)

多项式回归:输入 → [1, x, x², ..., xᵖ],X 矩阵变为

$$ X_{new} = \begin{bmatrix}1,x,x^{2},x^3, x^4 .... ,x^p \end{bmatrix} $$

当 XᵀX 接近奇异时(多重共线性) 因为 每个 x , x^2 , x^3 都长的太像了!

高度相关 —— 最小二乘 要求 $(XX^{T})^{-1}$ ——高度线形奇异的话 会使得无法求逆

Singular Value Decomposition 能把任何一个 复杂的 病态的 矩阵 X, 强行拆解成三个性质极好的矩阵 :

$$ X = U \cdot S \cdot V^{T} $$ $U, V^{T}$ : orthogonal matrix 完美的坐标系 相互垂直 性质稳定 求逆=转置 不会爆炸!

S(Sigma): 对角矩阵 —— 对角线上的数字叫做 “奇异值” 原本矩阵所有 “病态” / 信息量 都全部被压缩到这几个数字上

可用 SVD 稳定求解:

U, S, Vt = np.linalg.svd(X, full_matrices=False)
beta = Vt.T @ np.diag(1/S) @ U.T @ y
💡 Bayesian 线性回归进一步将 β 视为分布而非固定值,给出预测的不确定度。

5. 高斯过程回归(GPR)

5.1 基本思想

💡 核心直觉

GPR 不去假设 f(x) 的具体形式(不指定是否线性、指数或多项式),只假设任意有限个点的函数值服从联合高斯分布。

这是一种非参数 Bayesian 回归方法,非常灵活。

从多元Guass 分布 来的 —— 每个点 都服从 均值向量 , 协方差矩阵

$$ \mathbf{y} = \begin{bmatrix}y_1 \\ y_2 \\ y_3 \end{bmatrix} \sim \mathcal{N} ( \boldsymbol{\mu} , \mathbf{K}) $$

假设 现在不是再测量3个孤立点 而是一条连续的曲线 f(x)

这条曲线 在每个位置 x 都有一个函数值 把每个位置的 f(x) 都看作是 随机变量!

在整个轴上 就有无穷多个 随机变量!

GP 高斯过程定义:

如果对于定义域内的任意有限个点 $\{x_1, x_2, \dots, x_n\}$,它们对应的函数值 $\mathbf{f} = [f(x_1), f(x_2), \dots, f(x_n)]^T$ 都服从一个多元高斯分布,那么这个由无穷多个随机变量组成的集合,就叫做高斯过程

记为

$$ f(x) \sim \mathcal{GP} ( m(x) , k(x, x')) $$ m(x) 均值函数 通常默认设置为0 (借助平移 数据去中心化得到)

k(x, x') 协方差函数 ( 核函数 Kernel) 定义空间中 任意两个点 x 和 x' 之间的亲密度!

5.2 协方差函数(Kernel)

RBF 最经典的(平方指数)核:

$$ k(x_i, x_j) = \sigma^{2}_{f} \cdot exp(-\frac{(x_i - x_j)^{2}}{2 l^{2}}) $$

超参数含义对拟合的影响
l(长度尺度)相关性随距离衰减的快慢l 小 → 函数"抖动";l 大 → 平滑
$σ_f$(信号方差)函数的幅度控制预测量级
$σ_n$(噪声方差)观测噪声水平对角项修正,控制拟合忠实度

数值直观:两点距离 = 0 → K = σ_f²(最相关);距离 ≫ l → K ≈ 0(几乎不相关)。

5.3 预测公式

开始算新的预测点 假设已经有:

  • 已知训练数据: 输入为 $X = [x_1,x_2,...... x_n]^{T}$ 对应带噪的观测值为 $y = [y_1, y_2,..... ,y_n]^{T}$ 这里假设观测值 包含独立的噪音 $y = f(x) + \epsilon$ 其中 误差噪声 服从 $\epsilon \sim \mathcal{N}(0, \sigma^{2}_{n})$
  • 未知预测点:输入的 $x_{*}$ 预测这里的真实高度 $f_{*}$

联合分布:

$$ \begin{bmatrix}\mathbf{y} \\f_{*} \end{bmatrix} \sim \mathcal{N} \left( \mathbf{0},\begin{bmatrix}\mathbf{K(X, X)}+ \sigma_{n}^{2} \mathbf{I}&\mathbf{k_{*}} \\ \mathbf{k_{*}}^{T} & k(x_{*} , x_{*}) \end{bmatrix} \right) $$

这个超大协方差矩阵里的每一块都有着清晰的物理意义5

  • $\mathbf{K} = \mathbf{K}(\mathbf{X}, \mathbf{X})$ 是一个 $n \times n$ 的矩阵,记录了所有已知点两两之间的亲密度5。加上 $\sigma_n^2 \mathbf{I}$ 是因为已知点带有测量噪声。
  • $\mathbf{k}_* = [k(x_1, x_*), k(x_2, x_*), \dots, k(x_n, x_*)]^T$ 是一个 $n \times 1$ 的向量,记录了新点 $x_*$ 与所有旧点之间的亲密度。
  • $k(x_*, x_*)$ 是一个标量,记录了新点与自己的协方差(对于 RBF 来说,这通常就是 $\sigma_f^2$)

条件化(Conditioning)

既然我们已经知道了 $\mathbf{y}$ 的具体数值(比如已知 3 个点的高度是 2.3, 4.1, 3.5),我们就需要根据已知条件 $\mathbf{y}$,去推导未知数 $f_*$ 的后验概率分布。 这在数学上使用的是多元高斯分布的条件分布公式(Conditional Gaussian Theorem):

若 $\begin{bmatrix} \mathbf{a} \\ \mathbf{b} \end{bmatrix} \sim \mathcal{N} \left( \begin{bmatrix} \boldsymbol{\mu}_a \\ \boldsymbol{\mu}_b \end{bmatrix}, \begin{bmatrix} \mathbf{\Sigma}_{aa} & \mathbf{\Sigma}_{ab} \\ \mathbf{\Sigma}_{ba} & \mathbf{\Sigma}_{bb} \end{bmatrix} \right)$

则已知 $\mathbf{a}$ 时, $\mathbf{b}$ 的分布为 $\mathbf{b} | \mathbf{a} \sim \mathcal{N}(\hat{\boldsymbol{\mu}}, \hat{\mathbf{\Sigma}})$,其中:

$$ \hat{\boldsymbol{\mu}} = \boldsymbol{\mu}_b + \mathbf{\Sigma}_{ba} \mathbf{\Sigma}_{aa}^{-1} (\mathbf{a} - \boldsymbol{\mu}_a) \\ \space \\ \hat{\mathbf{\Sigma}} = \mathbf{\Sigma}_{bb} - \mathbf{\Sigma}_{ba} \mathbf{\Sigma}_{aa}^{-1} \mathbf{\Sigma}_{ab} $$

直接套用这个定理(这里 $\boldsymbol{\mu}_a = \mathbf{0}$, $\boldsymbol{\mu}_b = 0$),我们就得到了你看到的两个核心预测公式

预测均值

$$ \bar{f}_* = \mathbf{k}_*^T (\mathbf{K} + \sigma_n^2 \mathbf{I})^{-1} \mathbf{y} $$

y:已经知道的 高度数据

$(\mathbf{K} + \sigma_n^2 \mathbf{I})^{-1}$ 是在进行 全局信息的解耦与去噪 算出来 已知的数据点之间的内在关联结构与噪音过滤权重

我们可以把公式改写为: $\bar{f}_* = \sum_{i=1}^n \alpha_i k(x_i, x_*)$ 也就是说,GPR 做预测时,实际上是在用一堆“以已知点为中心”的核函数进行叠加。新点离哪个已知点近( $k(x_i, x_*)$ 大),那个已知点对应的权重 $\alpha_i$ 在预测中起的决定性作用就越大

预测方差(不确定度):

$$ \text{var}(f_*) = k(x_*, x_*) - \mathbf{k}_*^T (\mathbf{K} + \sigma_n^2 \mathbf{I})^{-1} \mathbf{k}_* $$

  • $k(x_{*}, x_{*})$:新点在完全没有已知信息时,它自身的初始最大不确定度(先验方差,如果是 RBF 就是 $\sigma_f^2$)。
  • $\mathbf{k}_{*}^T (\mathbf{K} + \sigma_n^2 \mathbf{I})^{-1} \mathbf{k}_{*}$:这是通过已知信息消除掉的信息不确定度
  • 物理直觉
  • 情况一(数据密集区):如果你要预测的点 $x_*$ 就夹在好几个已知点中间。此时,它与已知点的亲密度 $\mathbf{k}_*$ 很大。公式中被减去的那一部分就非常大,导致最终的 $\text{var}(f_*)$ 被压得非常低,甚至接近 0。这代表模型非常笃定:“我百分之九十九确定这里的高度是多少!”(置信区间非常窄)
  • 情况二(外推/荒野区):如果你要预测的点 $x_*$ 距离所有的已知点都非常遥远。此时它与任何已知点的亲密度 $\mathbf{k}_*$ 都趋近于 0。公式中被减去的部分也趋近于 0。最终方差直接退回到最大初始不确定度 $k(x_*, x_*)$。这代表模型非常诚实:“这里我啥都不知道,我猜的数值很不靠谱,误差极大!”(置信区间变得极宽)
💡 优势

1、仅需 3 个超参数(l, σ_f, σ_n),不易过拟合

就是GPR是一个非参数的模型 其参数量不随着复杂度增加 —— 直接依赖于数据 !

需要人为调节的“超参数”极少 (极简主义)

2、天然自带误差棒 一些高风险决策下 —— “知道自己不知道”比“给出预测”更重要

NNB来预测 遇到极度奇异数据 还是会猜测一个答案给出来 但是 GPR 可以借助 var!

3、在核物理质量外推等场景中 GPR 表现优于 BNN。

这种 外推 !!! 就是从 已知较为稳定的核质量(训练集) 去预测极度缺乏中子/超重的未知核质量(外推区)

4、总结 核心GPR适用就是在 小样本 + 需要外推 + 最少的参数 + 保证数学上的绝对严谨 + 计算的稳定性

缺点:只适合处理小数据 遇到大数据立马瘫痪 + 严重依赖人的数学直觉

(需要求一个N ✖️ N的矩阵求逆 GPR 几乎无法直接用于大工业界的海量数据场景 有人借助 稀疏GP 来寻找 伪数据点 然后 近似代替全部数据 + 高度依赖于 Kernel function的选取 即先验假设 的准确性与预测性 GPR本身没有“悟性学习性” 喂给什么核就只能在那个框架中打转 + 高维度就炸了 维度灾难 所有点都极其遥远 $k_{*}$ 全部趋于0 GPR 极不适合直接处理图像(几十万像素维度)或高维文本特征。它最擅长的是物理参数拟合、空间轨迹预测等输入维度在 10维以内 的精细任务

什么是 BNN(贝叶斯神经网络)?

BNN 是试图给神经网络的每一个权重 $w$ 都引入一个概率分布。听起来很完美,但它有致命的缺陷:

  1. 计算极其困难:BNN 无法直接求出解析解,必须使用非常复杂的近似算法(如 MCMC 采样、变分推断 VI)。在训练时不仅极慢,而且极难收敛。
  2. 超参数过多:BNN 里不仅有成千上万个权重需要估计分布,还需要手动调节每个权重的先验分布参数。稍微调不好,外推结果就一塌糊涂。

GPR 凭什么在外推中胜出?

  1. 数学上的精确解(解析解): GPR 的预测均值和方差公式,是通过矩阵求逆一步算出来的精确解析解,不需要像 BNN 那样进行漫长的随机采样或近似,计算极其稳定,绝不会出现“训练崩了”的情况。
  2. 物理先验的完美结合: 在核物理中,我们会把已知的物理公式(如“液滴模型(LDM)”)作为 GPR 的背景均值(Mean Function)。GPR 只需要去拟合物理公式与实验值之间的残差(误差)
  • 在数据密集的已知区,GPR 会精确修正物理公式的偏差。
  • 在外推的荒野区,因为没有数据,GPR 的预测会自动退化、收敛到背景的物理公式,而方差(误差棒)会老老实实地变大。

5.4 伪代码

import numpy as np

def rbf_kernel(X1, X2, l=1.0, sigma_f=1.27):
    sq_dist = np.sum(X1**2, 1).reshape(-1,1) + np.sum(X2**2, 1) \
              - 2 * np.dot(X1, X2.T)
    return sigma_f**2 * np.exp(-0.5 / l**2 * sq_dist)

X_train = np.array([[1.0], [3.0], [4.0]])
y_train = np.array([2.0, 4.0, 5.0])
X_test  = np.array([[2.0]])

K    = rbf_kernel(X_train, X_train)
K_s  = rbf_kernel(X_train, X_test)
K_ss = rbf_kernel(X_test, X_test)
sigma_n = 0.1

K_inv = np.linalg.inv(K + sigma_n**2 * np.eye(len(X_train)))
mu    = K_s.T @ K_inv @ y_train     # 预测均值
sigma = K_ss - K_s.T @ K_inv @ K_s  # 预测方差

6. 人工神经网络基础 ANN

6.1 生物神经元 vs. 人工神经元

特性生物神经元人工神经元
总数~860 亿设计决定
连接~100 万亿突触参数决定
信号化学/电,异步并行,二进制触发实数加权求和,同步层间传递
功耗~20 W(全脑)GPU ~250 W
容错性极高(冗余存储)一般
发放频率~200 次/秒一次前向传播一值
学习突触可塑性(neuroplasticity)梯度下降调整权重

核心是从大脑生物神经元的处罚

【生物神经元直观图】 树突 (接收信号) ───┐ 树突 (接收信号) ───┼──> 细胞体 (电位累加) ───> 轴突 (传递信号) ───> 突触 (输出) 树突 (接收信号) ───┘

树突(Dendrites) $\rightarrow$ 输入加权(Weights): 每个树突连接不同的上游神经元。突触有强有弱,有的信号容易通过,有的被抑制。这就是权重 $w_i$

细胞体(Soma) $\rightarrow$ 累加求和(Summation): 细胞体会收集所有树突传来的微小电信号(静息电位变化),在内部进行代数累加。这就是加权求和 $\sum w_i x_i$

轴突(Axon) $\rightarrow$ 激活函数(Activation Function): 当累加电位超过某个“阈值”时,细胞体会突然产生一个电脉冲(动作电位)向下游传递;否则保持静默。这就是激活函数 $f(z)$ 对应的“0或1”或“非线性平滑过渡”。

💡 人脑约 860 亿神经元,超百万亿突触,功耗仅 20W——比人工网络高效数个量级。但人工神经元借鉴了"加权求和 → 阈值判断 → 非线性激活"的思路。

生物的主要是二进制触发 采用 脉冲神经网络 SNN 足够刺激才放电 平时大部分区域在“休眠” ——现在的GPU跑 AI 大部分所有matrix 都要从头到尾高频同步算一遍

人脑学习 依靠的 是 Hebbian learning 一起激发的神经元连在一起 极度局部的化学变化——人工神经网络必须要全局计算梯度并统一用“反向传播(BP)”来更新,这需要巨大的计算开销

6.2 人工神经元数学模型 M-P mode

$$ y = f(\sum w_{i} x_{i} - \theta) = f(w^{T} x - \theta) $$

其中 xᵢ 为输入信号,wᵢ 为权重,θ 为阈值(bias 的负值 令 偏置 $b = -\theta$),f 为激活函数。

$y = f(\mathbf{w}^T \mathbf{x} + b)$

直观上的几何理解

假设输入的是 二维特征 $\mathbf{x} = [x_1, x_2]^T$

$\mathbf{w}^T \mathbf{x} + b = 0$(即 $w_1 x_1 + w_2 x_2 + b = 0$): 这在二维平面上代表一条直线(在高维空间中代表一个超平面)。这条直线就是决策边界(Decision Boundary)

偏置 $b$ 的作用: 如果没有 $b$,决策边界必须强行穿过坐标原点 $(0,0)$。有了 $b$,这条线就可以在空间中自由平移。

权重 $\mathbf{w}$ 的作用: $\mathbf{w}$ 是决策边界的法向量,决定了边界的倾斜角度(方向)。

要求:f 必须是非线性 + 可导。

1、非线性:如果f是线性的 那么无论多少层神经元叠加一起 多层线性变换复合 依然是线性变换:

$y = w_2(w_1 x + b_1) + b_2 = (w_1 w_2)x + (w_2 b_1 + b_2) = Wx + B$ ——>

多层网络退化成单层网络 无法拟合复杂的非线性function(如异或XOR问题)

非线性激活函数赋予了神经网络无限逼近任何复杂函数的超能力(通用近似定理)。

2、可导:因为要利用 Gradient Descent 梯度下降算法 需要计算损失function 对参数的 导数

$\frac{\partial L}{\partial \omega}$ 从而知道 往哪个方向去调整参数! 如果不可导 就无法使用现代高效的 反向传播算法!!!

6.3 常用激活函数

函数公式输出范围导数特点
Sigmoid1/(1+e⁻ᶻ)(0, 1)f(1-f)经典,收敛慢,两头梯度≈0 <br />会有梯度消失停止训练的问题
Tanh(eᶻ-e⁻ᶻ)/(eᶻ+e⁻ᶻ)(-1, 1)1-f²零均值,常优于 Sigmoid
ReLUmax(0, z)[0, ∞)0或1主流,计算快,缓解梯度消失

ReLU的重要作用 !!!

1. 极简网络的数学表达

输入 x ──> [神经元z1] ──> a1 ──> [神经元z2] ──> a2 ──> [神经元z3] ──> y_pred ──> 算出 Loss (L)

假设每一层只有一个神经元,且偏置都为 0(方便计算):

  • 第一层: $z_1 = w_1 x$,输出 $a_1 = f(z_1)$
  • 第二层: $z_2 = w_2 a_1$,输出 $a_2 = f(z_2)$
  • 第三层: $z_3 = w_3 a_2$,预测输出 $\hat{y} = f(z_3)$
  • 最后算出一个总损失 $L$(Loss)
2. 反向传播:更新第一层的权重 $w_1$

为了通过梯度下降更新第一层的权重 $w_1$,我们需要计算 $L$ 对 $w_1$ 的偏导数 $\frac{\partial L}{\partial w_1}$。根据高数中的链式法则(Chain Rule),我们要从后往前一步步求导:

$$ \frac{\partial L}{\partial w_1} = \frac{\partial L}{\partial \hat{y}} \cdot \frac{\partial \hat{y}}{\partial z_3} \cdot \frac{\partial z_3}{\partial a_2} \cdot \frac{\partial a_2}{\partial z_2} \cdot \frac{\partial z_2}{\partial a_1} \cdot \frac{\partial a_1}{\partial z_1} \cdot \frac{\partial z_1}{\partial w_1} $$

我们把其中几项算出来:

  • $\frac{\partial \hat{y}}{\partial z_3} = f'(z_3)$ (第三层激活函数的导数)
  • $\frac{\partial z_3}{\partial a_2} = w_3$
  • $\frac{\partial a_2}{\partial z_2} = f'(z_2)$ (第二层激活函数的导数)
  • $\frac{\partial z_2}{\partial a_1} = w_2$
  • $\frac{\partial a_1}{\partial z_1} = f'(z_1)$ (第一层激活函数的导数)
  • $\frac{\partial z_1}{\partial w_1} = x$

把它们拼回去,得到最终的梯度公式:

$$ \frac{\partial L}{\partial w_1} = \frac{\partial L}{\partial \hat{y}} \cdot \left[ \mathbf{f'(z_3)} \cdot w_3 \cdot \mathbf{f'(z_2)} \cdot w_2 \cdot \mathbf{f'(z_1)} \right] \cdot x $$

请注意红框(括号内)里的这一串连乘:$f'(z_3) \cdot f'(z_2) \cdot f'(z_1)$


3. 对比:Sigmoid 怎么让梯度消失的?

如果我们使用 Sigmoid 作为激活函数: Sigmoid 的导数公式是 $f'(z) = f(z)(1 - f(z))$。 由于 $f(z)$ 的输出范围是 $(0, 1)$,你可以动手算一下,这个导数 $f'(z)$ 的最大值只有 $0.25$(当 $z=0$ 时)。

现在,我们把 $f'(z) \leq 0.25$ 带入我们的梯度连乘里:

  • 在我们的 3 层网络里,这三项乘积最大也就是: $0.25 \times 0.25 \times 0.25 = 0.0156$(已经缩水了 64 倍)。
  • 如果是 100 层 的深层网络,就会有 100 个小于 $0.25$ 的数连乘:

$$ 0.25^{100} \approx 6.2 \times 10^{-61} \approx 0 $$

这个极其微小的梯度传回第一层时,几乎变成了 0! 第一层的权重更新公式是:

$w_1 = w_1 - \eta \frac{\partial L}{\partial w_1}$。既然梯度是 0,那么 $w_1$ 根本就不会变。

这就是梯度消失:深层网络中,前面的层完全无法更新,整张网废了。


4. 解决:ReLU 为什么能彻底解决它?

如果我们换成 ReLU

$$ f(z) = \max(0, z) $$

它的导数非常极端:

  • 当 $z > 0$ 时,导数 $f'(z) = 1$
  • 当 $z < 0$ 时,导数 $f'(z) = 0$

如果我们在训练中,确保神经元的输入 $z$ 是大于 0 的,那么: 每个神经元的导数 $f'(z)$ 永远是平平整整的 1

我们再把这个 $1$ 带回 100 层网络的梯度连乘里:

$$ 1 \times 1 \times 1 \times \dots \times 1 = 1 $$

无论网络叠到 100 层、1000 层还是 10000 层,梯度在回传过程中完全没有任何损耗! 最后一层的误差有多大,就能原封不动地传回给第一层,让第一层完美更新。 这就是为什么说 ReLU “拯救”了深度学习。

为什么在一个大的梯度过去后 bias会变小 —— Dead ReLU

第一步:发生了一次意外(遇到巨大的梯度)

在某一次训练中,网络输入了一个非常极端的脏数据,或者由于学习率 $\eta = 0.1$ 设得太大了。 导致从后级传回来的误差梯度 $\frac{\partial L}{\partial y}$ 异常巨大,比如:

$$ \frac{\partial L}{\partial y} = 1000 $$

现在我们来计算偏置 $b$ 的梯度 $\frac{\partial L}{\partial b}$:

$$ \frac{\partial L}{\partial b} = \frac{\partial L}{\partial y} \cdot \frac{\partial y}{\partial z} \cdot \frac{\partial z}{\partial b} = 1000 \times 1 \times 1 = 1000 $$

接下来,使用梯度下降更新偏置 $b$

$$ b_{\text{new}} = b_{\text{old}} - \eta \cdot \frac{\partial L}{\partial b} $$

看!因为这次极大的梯度冲击,偏置 $b$ 从原本健康的 $0.5$ 骤降到了一个极小的负数 $-99.5$


第二步:噩梦开始,神经元陷入“假死”

现在,训练继续,我们输入下一个正常的数据。 假设正常的数据输入 $x = 2.0$,权重 $w = 2.0$。

我们来看看此时这个神经元的净输入 $z$:

$$ z = w x + b_{\text{new}} = 2.0 \times 2.0 + (-99.5) = 4 - 99.5 = -95.5 $$

因为 $-95.5 < 0$,所以:

  • 神经元输出: $y = \max(0, -95.5) = 0$
  • 最致命的:此时激活函数的导数 $f'(z) = 0$

第三步:无法自救,彻底“死亡”

既然这一轮输入由于 $b$ 太小导致 $z < 0$,我们期望在下一轮反向传播中,把 $b$ 再给更新回来,对吗?

我们来看这一轮反向传播时,怎么更新 $b$。 计算 $b$ 的新梯度:

$$ \frac{\partial L}{\partial b} = \frac{\partial L}{\partial y} \cdot \mathbf{f'(z)} \cdot \frac{\partial z}{\partial b} $$

因为此时 $z = -95.5 < 0$,所以 $f'(z) = 0$。 代入公式:

$$ \frac{\partial L}{\partial b} = \frac{\partial L}{\partial y} \times 0 \times 1 = 0 $$

偏置 $b$ 的梯度变成了绝对的 0!

我们尝试更新 $b$:

$$ b_{\text{newer}} = b_{\text{new}} - \eta \cdot \frac{\partial L}{\partial b} = -99.5 - 0.1 \times 0 = -99.5 $$

它根本没有变!依然卡死在 $-99.5$!

同样的道理,你也可以算一下权重 $w$ 的梯度:

$$ \frac{\partial L}{\partial w} = \frac{\partial L}{\partial y} \cdot \mathbf{f'(z)} \cdot x = \frac{\partial L}{\partial y} \times 0 \times 2.0 = 0 $$

$w$ 的梯度也是 0! $w$ 也无法更新了。


结论:为什么叫“永久死亡”?

一旦 $b$ 变成了一个极小的负数,在以后所有的训练样本输入下, $z = wx + b$ 几乎注定永远小于 0

只要 $z < 0$:

  1. 它的输出永远是 $0$(对网络没有任何贡献)。
  2. 它的梯度永远是 $0$(它再也无法通过反向传播来修改自己的 $w$ 和 $b$)。

这个神经元就像是脑死亡了一样,彻底失去了自我修正、自我救赎的能力。这就是著名的 Dead ReLU(神经元死亡) 现象。

ReLU 修正线性单元 :现代深度学习的核心!

1、彻底解决正向的梯度消失:只要 z > 0 导数永远是1 ——> 梯度就可以毫无损耗的传回前面的网络 这让训练上百层的超深网络成为可能

2、计算快!!! If-else判断 硬件加速效果好

缺点! DEAD ReLU 神经元死亡 :如果一个非常大的梯度流过,把某个神经元的偏置 $b$ 更新得非常小,导致这个神经元在以后的所有输入下 $z$ 都小于 0,那么它的输出和导数将永久为 $0$。这个神经元就“死掉了”,再也无法被激活和更新。

6.4 数值例子:单神经元前向手算

设定:x = [0.5, 1.0, -0.5],w = [2.0, -1.0, 1.5],θ = 0.3,Sigmoid 激活

Step 1 — 净输入 v:

v = 2.0×0.5 + (-1.0)×1.0 + 1.5×(-0.5) - 0.3 = 1.0 - 1.0 - 0.75 - 0.3 = -1.05

Step 2 — 激活:

y = 1/(1 + e^(1.05)) = 1/3.857 ≈ 0.259

💡 净输入为负 → 输出接近 0.26(偏向不激活)。若净输入为正且足够大,输出趋近 1。

6.5 神经网络类型总览

网络核心特点典型应用里程碑
Hopfield 网络循环,能量函数极小,联想记忆图像恢复、TSPHopfield, 1982
Boltzmann 机隐藏层+概率分布特征发现、生成模型Hinton, 1985
前馈+BP层间前传、误差反传通用监督学习1986
CNN局部关联、参数共享图像/语音识别1990s
RNN隐藏层循环连接,记忆前序序列、时序数据
TransformerSelf-Attention 自注意力NLP, ChatGPT2017
GAN生成器-判别器对抗博弈内容生成2014

7. BP 误差反向传播算法

7.1 学习问题的数学本质

损失函数(均方误差 Cost Function):

$$ E = \frac{1}{2} \sum_i (t_j - y_j)^{2} $$

$t_j$:真实标签(Target)。

$y_j$:网络最后一层的预测输出(Output)。

为什么前面有个 $\frac{1}{2}$? 这只是为了求导时的数学便利。当我们对 $E$ 关于 $y_j$ 求导时,根据复合函数求导法则,平方项的 $2$ 掉下来,正好与前面的 $\frac{1}{2}$ 抵消,使得导数形式更干净: $\frac{\partial E}{\partial y_j} = -(t_j - y_j) = y_j - t_j$

💡 前面 1/2 是为了求导时消去平方的 2 倍因子。第 4 章讲最小二乘也是一样的思路。

本质区别:这里 f(x,w) 是神经网络而非解析公式。参数可能成千上万 → 高维非线性优化

在第四章的线性最小二乘中,我们的拟合函数是解析的(如 $y = wx + b$),可以直接通过“令导数为 0 求解矩阵方程”一步算出最优参数。

但在神经网络中,输出 $y_j$ 嵌套了多层非线性激活函数。对于一个 $L$ 层的网络,函数关系是: $y = f_L(W_L f_{L-1}(W_{L-1} \dots f_1(W_1 x + b_1) \dots + b_{L-1}) + b_L)$ 此时,损失函数 $E(\mathbf{W}, \mathbf{b})$ 是一个极其复杂的非凸函数(Non-convex Function),空间中充满了无数的局部极小值、鞍点和曲折的“沟壑”。我们无法通过公式一步算出最优解,必须依靠迭代优化算法,一步一步沿着斜坡往下滚。

学习就是通过输出与期望值的比较,不断调整权重 $w_{ij}$

可用的优化方法包括:梯度下降法、准 Newton-BFGS、模拟退火法、随机学习方法等。

7.2 梯度下降 + 动量

基础梯度下降法

$$ \Delta\omega = - \alpha \frac{\partial E}{\partial \omega} \Longrightarrow w^{t+1} = w^{t} - \alpha \frac{\partial E}{\partial \omega} $$

alpha 是 学习率 :控制每步 迈出的步子有多大

太小会收敛太慢;太大容易子啊谷底左右横跳然后甚至发散!

局限性:优化中 有“峡谷”地形 在某个方向上 坡度极陡 另一方向上 坡度极缓

基础 gradient 下降 会在陡峭方向疯狂震荡 导致其在缓和方向(真正想要的前进方向)进展缓慢

带动量(momentum):

$$ \Delta w^{(t)} = -\alpha \frac{\partial E}{\partial w} + \eta \Delta w^{(t-1)} $$

参数作用典型值
α(学习率)步长0.01 ~ 0.1
η(动量)惯性项 → 加速收敛 + 平滑震荡~0.9
💡 动量直觉:球滚下山——既受当前坡度(梯度)推动,也保留之前的运动方向(惯性)。这帮助越过局部极小值和震荡的"沟壑"。

把更新量展开来看:

  • 在震荡的方向(如 $w_1$):上一时刻的梯度方向是向上(正),这一时刻的梯度是向下(负)。两者相加时,震荡被互相抵消了,从而平滑了路径。
  • 在持续前进的方向(如 $w_2$):前几次的梯度方向都一致。由于惯性项 $\eta \Delta w^{(t-1)}$ 的累加,小球在这个方向滚得越来越快(就像有了加速度),从而极大地加速了收敛。

7.3 链式法则:BP 的精髓

上一层输出 y_i ──(w_ij)──> 净输入 v_j ──(激活函数 f)──> 输出 y_j

  • $y_i$:上一层(第 $i$ 层)神经元的输出。
  • $w_{ij}$:从上一层神经元 $i$ 到当前层神经元 $j$ 的连接权重。
  • $v_j$:当前层神经元 $j$ 的净输入(Net Input),即 $v_j = \sum_{i} w_{ij} y_i$。
  • $y_j$:当前层神经元 $j$ 的输出,即 $y_j = f(v_j)$。

1、定义:误差敏感度 $\delta_j$

要计算 E 对于任意权重 $w_{ij}$ 的偏导数

$$ \frac{\partial E}{\partial w_{ij}} = \frac{\partial E}{\partial v_j} \cdot \frac{\partial v_j}{\partial w_{ij}} $$

因为 $v_j = \sum_{i} w_{ij} y_i$,所以它对 $w_{ij}$ 求导极简单: $\frac{\partial v_j}{\partial w_{ij}} = y_i$(即上一层的输出)。

所以我们重点关注前半部分 将其定义为 误差信号(误差敏感度)

$$ \delta_{j} = \frac{\partial E}{\partial v_{j}} $$

当前神经元的净输入只要变动一点点,对最终总误差的影响有多大

$$ \frac{\partial E }{\partial \omega_{ij}} = \delta_j \cdot y_i $$

2、输出层的 $\delta_j$ 推导 若j是输出层神经元

j是最后一层 其输出 $y_j$ 会直接用来计算E:

因为 $j$ 是最后一层,它的输出 $y_j$ 会直接用来算 $E$: 根据链式法则,将 $E \rightarrow y_j \rightarrow v_j$ 展开:

$$ \delta_j = \frac{\partial E}{\partial v_j} = \frac{\partial E}{\partial y_j} \cdot \frac{\partial y_j}{\partial v_j} $$

  • 由于 $E = \frac{1}{2} \sum_{k} (t_k - y_k)^2$,所以 $\frac{\partial E}{\partial y_j} = y_j - t_j$。
  • 由于 $y_j = f(v_j)$,所以 $\frac{\partial y_j}{\partial v_j} = f'(v_j)$。

代入得到输出层的误差信号

$$ \delta_j = (y_j - t_j) \cdot f'(v_j) $$

3. 隐藏层的 $\delta_j$ 推导(若 $j$ 是隐藏层神经元)

隐藏层神经元 $j$ 的输出 $y_j$ 并没有直接连到 Loss $E$。 它的输出 $y_j$ 会分流传递给下一层(第 $k$ 层)的所有神经元。

Text


                          ┌───> 下一层神经元 k1 (净输入 v_k1, 误差信号 δ_k1)

                         w_jk1

                          │

  当前隐藏层神经元 j ──────┼───> 下一层神经元 k2 (净输入 v_k2, 误差信号 δ_k2)

  (输出 y_j, 净输入 v_j)   │

                         w_jkn

                          └───> 下一层神经元 kn (净输入 v_kn, 误差信号 δ_kn)

因此,我们要对下一层的所有接收者进行多元链式法则(Multivariate Chain Rule)求和:

$$ \delta_j = \frac{\partial E}{\partial v_j} = \sum_{k \in \text{下一层}} \frac{\partial E}{\partial v_k} \cdot \frac{\partial v_k}{\partial y_j} \cdot \frac{\partial y_j}{\partial v_j} $$

我们逐项拆解:

  • $\frac{\partial E}{\partial v_k}$:这正好是下一层神经元 $k$ 的误差信号 $\delta_k$!
  • $\frac{\partial v_k}{\partial y_j}$:因为下一层的净输入为 $v_k = \sum_{m} w_{mk} y_m$,其中包含了一项 $w_{jk} y_j$。对 $y_j$ 求偏导后只剩下权重: $\frac{\partial v_k}{\partial y_j} = w_{jk}$。
  • $\frac{\partial y_j}{\partial v_j}$:当前神经元激活函数的导数:$f'(v_j)$。

把这三项代回求和公式,并将不含 $k$ 的公因子 $f'(v_j)$ 提出来:

$$ \delta_j = f'(v_j) \cdot \sum_{k \in \text{下一层}} w_{jk} \cdot \delta_k $$

这就是反向传播的核心秘密: 隐藏层 $j$ 的误差敏感度 $\delta_j$,是由它后面一层的所有误差敏感度 $\delta_k$ 沿着权重 $w_{jk}$ “倒灌”回来,累加后,再乘以它自己的激活函数导数 $f'(v_j)$ 得到的。

💡 说人话:输出层误差直接 = (预测-目标)×导数。隐藏层的误差 = 后一层所有神经元误差按连接权重"反传回来" × 自己导数。先算后一层,再算前一层——这就是 Backward Propagation 的由来。

最后要利用计算好的 $\delta$ 和 前向传播时输出的 yi 对所有权重进行更新:

$$ \frac{\partial E }{\partial \omega_{ij}} = \delta_j \cdot y_i $$

\alpha 学习率!

7.4 BP 算法流程图

1. 前向传播:输入 → 逐层计算所有神经元输出 yⱼ
       ↓
2. 输出层误差:δⱼ = (yⱼ - tⱼ) · f'(vⱼ)
       ↓
3. 反向传播:对每一隐藏层 δⱼ = f'(vⱼ) · Σ wⱼₖ · δₖ
       ↓
4. 权重更新:wᵢⱼ ← wᵢⱼ - α · δⱼ · yᵢ
       ↓
5. 重复 1-4 直到收敛

7.5 数值例子:BP 手算(经典教学示例)

网络结构:2 输入 → 1 隐藏层(2 神经元) → 1 输出 激活函数:Sigmoid(f'(z) = f(z)(1-f(z)))

初始参数:

  • 输入→隐藏:w₁₁=0.15, w₁₂=0.20, w₂₁=0.25, w₂₂=0.30
  • 隐藏→输出:w₃₁=0.40, w₃₂=0.45
  • 偏置:b₁=0.35, b₂=0.35, b₃=0.60
  • 输入:x=[0.05, 0.10],目标:t=0.99

▶ 前向传播

h1_net = 0.15×0.05 + 0.20×0.10 + 0.35 = 0.3775
h1_out = 1/(1+exp(-0.3775)) ≈ 0.5933

h2_net = 0.25×0.05 + 0.30×0.10 + 0.35 = 0.3925
h2_out = 1/(1+exp(-0.3925)) ≈ 0.5969

o_net  = 0.40×0.5933 + 0.45×0.5969 + 0.60 = 1.1059
o_out  = 1/(1+exp(-1.1059)) ≈ 0.7514

总误差 E = 0.5×(0.99 - 0.7514)² ≈ 0.0285

▶ 反向传播

输出层: f'(o_net) = 0.7514×0.2486 ≈ 0.1868
δ_out = (0.7514 - 0.99) × 0.1868 = -0.0445

隐藏层1: f'(h1_net) = 0.5933×0.4067 ≈ 0.2413
δ_h1 = 0.2413 × 0.40 × (-0.0445) ≈ -0.00430

隐藏层2: f'(h2_net) = 0.5969×0.4031 ≈ 0.2406
δ_h2 = 0.2406 × 0.45 × (-0.0445) ≈ -0.00482

▶ 权重更新(α=0.5):

w₃₁ ← 0.40 - 0.5×(-0.0445)×0.5933 = 0.4132
w₃₂ ← 0.45 - 0.5×(-0.0445)×0.5969 = 0.4633
w₁₁ ← 0.15 - 0.5×(-0.00430)×0.05  = 0.1501
w₁₂ ← 0.20 - 0.5×(-0.00430)×0.10  = 0.2002
w₂₁ ← 0.25 - 0.5×(-0.00482)×0.05  = 0.2501
w₂₂ ← 0.30 - 0.5×(-0.00482)×0.10  = 0.3002
💡 一次迭代权重变化极小(w₃₂ 从 0.45→0.463 算大变化),实际训练需成千上万次迭代。权重变化方向:所有 w 都增大了,因为 δ 为负(输出偏小),增大 w 可提高输出逼近目标 0.99。

7.6 BP 常见问题与改进策略

瓶颈问题物理本质核心自救策略
局部极小值 & 鞍点优化算法卡在梯度接近 0 的平坦区域,或者卡在非全局最优的山谷中。Adam 等自适应学习率优化器:它对每个参数单独计算学习率,并且通过二阶动量冲出平坦区和鞍点;此外,使用 SGD(随机梯度下降) 每次只用一个 Batch 算梯度,引入噪声,也能帮助模型“震”出局部极小。
收敛缓慢(梯度消失)像 Sigmoid、Tanh 等激活函数,当网络变深时,导数连乘使前期的梯度无限趋近于 0。更换激活函数(改用 ReLU 族);引入 BatchNorm(批归一化)防止输入落入激活函数的饱和区;使用 ResNet 残差连接
过拟合(泛化能力差)神经网络参数太多,强行记住了训练集里的全部细节(甚至噪声),导致新数据上效果极差。Dropout(训练时随机让一部分神经元“下岗”,逼迫网络不依赖特定通路);L1/L2 正则化(惩罚过大的权重值);早停(Early Stopping)
问题原因改进方法
局部收敛梯度下降固有缺陷动量法、随机梯度下降(SGD)、模拟退火
收敛缓慢梯度消失(Sigmoid 两端 d≈0)ReLU 激活、学习率衰减、BatchNorm
过拟合参数过多 + 数据不足正则化(L1/L2)、Dropout、早停(EarlyStopping)
鞍点高维梯度≈0但非极值准Newton-BFGS、Adam等自适应优化器

8. Bayesian 神经网络(BNN)

8.1 标准 NN vs. Bayesian NN

特性标准神经网络Bayesian 神经网络
权重固定数值(点估计)概率分布
学习目标min E(w)max P(w\D) 或完整采样
输出单一预测值预测分布(均值 ± 不确定度)
不确定度量化参数不确定度 + 结构不确定度
计算量中等极大(高维积分需 MCMC)
过拟合风险高(需人工正则化)低(先验天然正则化)
优化方法梯度下降调整权重得 MSE min最大似然 Likelihood 学习
💡 BNN 的核心价值:不仅告诉"猜多少",还告诉"有多确定"。

完整预言包括超参数优化和预测分布。对核物理等需要精确误差估算的场景至关重要。

8.2 BNN 数学框架 —— 高维不可积的困难

1、BNN的生成式数学模型

生成式:在概率图模型中 生成式模型指的是 对数据的联合分布/条件概率分布 进行显式建模, 并认为观测数据是通过某种“随机物理过程” 产生出来的。

假设真实物理世界(给定 输入 x 和 网络参数 \omega ) 符合如下关系 :

$$ y = f(x, ω) + σ·ε , \space ε \sim \mathcal{N}(0, 1) $$

  1. $f(\mathbf{x}, \mathbf{\omega})$ 是确定性核心: 这是我们用神经网络(参数为 $\mathbf{\omega}$)搭建的一个非线性拟合函数。它的输出是模型预测的“物理规律中心”。
  2. $\sigma \cdot \epsilon$ 是随机观测噪声: $\epsilon \sim \mathcal{N}(0, 1)$ 是一个标准高斯分布的随机变量。 $\sigma$ 是噪声的振幅(标准差)。它代表了真实世界中由于仪器精度、环境干扰等产生的、**不可消除的随机噪声(Aleatoric Uncertainty,固有不确定度)。
  3. 最终生成的 $y$ 是一个随机变量: 因为加入了高斯噪声,所以即使 $\mathbf{x}$ 和 $\mathbf{\omega}$ 完全固定,最终观测到的 $y$ 也不是一个死板的数,而是围绕着确定性预测中心 $f(\mathbf{x}, \mathbf{\omega})$ 抖动的一个分布。

由于 $y = f(\mathbf{x}, \mathbf{\omega}) + \sigma \cdot \epsilon$,且 $\epsilon$ 是高斯分布,我们可以直接推导出,在给定 $\mathbf{x}$ 和 $\mathbf{\omega}$ 的条件下,观测值 $y$ 的条件概率分布(即单点似然函数

根据高斯分布的线性变换性质: 若 $\epsilon \sim \mathcal{N}(0, 1)$,则 $\sigma \cdot \epsilon \sim \mathcal{N}(0, \sigma^2)$。 再加上一个常数偏置 $f(\mathbf{x}, \mathbf{\omega})$,该分布的均值变为 $f(\mathbf{x}, \mathbf{\omega})$,方差保持为 $\sigma^2$

$$ p(y | \mathbf{x}, \mathbf{\omega}) = \mathcal{N}\left(y; f(\mathbf{x}, \mathbf{\omega}), \sigma^2\right) $$

分号前是随机变量 后边是 分布的参数!

2. 什么是参数数量?(手算参数规模)

对 BNN 需要处理的“高维参数空间”有直观感受,拆解笔记中的参数公式。 假设一个多层感知机(MLP)有 $L$ 层,每层有 $H$ 个隐藏神经元。输入维度为 $|\mathbf{x}|$,输出维度为 $|\mathbf{y}|$。 我们可以将参数分成三部分:

  1. 输入层 $\rightarrow$ 第 1 隐藏层: 每个隐藏神经元有 $|\mathbf{x}|$ 个权重和 $1$ 个偏置(共 $|\mathbf{x}|+1$ 个)。因为有 $H$ 个隐藏神经元,所以参数个数为: $(1 + |\mathbf{x}|)H$
  2. 隐藏层内部(共 $L-1$ 次层间连接): 第 $l$ 层到第 $l+1$ 层(共 $H$ 个输入,$H$ 个输出)。每个输出神经元有 $H$ 个权重和 $1$ 个偏置。因为有 $H$ 个输出神经元,每次连接有 $(H+1)H$ 个参数。总共连接了 $L-1$ 次: $(L - 1)(H + 1)H$
  3. 最后一层隐藏层 $\rightarrow$ 输出层: 输出层有 $|\mathbf{y}|$ 个神经元,每个神经元连接前一层 $H$ 个节点并拥有 $1$ 个偏置(共 $H+1$ )。所以参数个数为: $(H + 1)|\mathbf{y}|$
计算参数公式时,输出层神经元个数完全等同于输出维度 $|y|$ 其实就取决于你想利用神经网络去解决什么样的问题!

输出层的神经元,就是神经网络直接暴露给外部世界、用来承载预测结果的物理容器。
因为一个容器(神经元)在数学上只能装一个数,所以你需要预测多少个数值,就必须并排提供多少个容器。这就是“输出层神经元个数 = 输出维度”的终极原因。

把它们加起来,就是总参数量: $\text{总参数量} \approx (1 + |\mathbf{x}|)H + (L - 1)(H + 1)H + (H + 1)|\mathbf{y}|$

恐怖之处:在标准 NN 中,这些参数只是一组实数(如 100 万个 float);而在 BNN 中,我们要为这 100 万个参数的每一个都学习一个概率分布(如高斯分布的均值 $\mu$ 和方差 $\sigma^2$),这意味着参数空间维度瞬间翻倍,且由于参数间的强耦合,形成了一个极度复杂的百万维后验联合分布空间!

3. 贝叶斯后验推断

给定训练数据集 $\mathcal{D} = \{(\mathbf{x}_i, y_i)\}_{i=1}^N$。

根据贝叶斯公式,参数的后验分布为: $p(\mathbf{\omega} | \mathcal{D}) = \frac{p(\mathcal{D} | \mathbf{\omega}) \cdot p(\mathbf{\omega})}{p(\mathcal{D})} \propto p(\mathcal{D} | \mathbf{\omega}) \cdot p(\mathbf{\omega})$

  • $p(\mathbf{\omega})$:先验分布(Prior)。比如我们假设权重在没看数据前,默认服从一个均值为 0 的窄高斯分布(起到了类似 $L_2$ 正则化的作用)。
  • $p(\mathcal{D} | \mathbf{\omega})$:似然函数(Likelihood)。即如果参数是 $\mathbf{\omega}$,这堆数据出现的概率。
  • $p(\mathcal{D})$:证据(Evidence)或边际似然。它是对所有可能参数积分得到的归一化常数: $p(\mathcal{D}) = \int p(\mathcal{D} | \mathbf{\omega}) p(\mathbf{\omega}) d\mathbf{\omega}$

4. 预测(不确定度传播的数学形式)

当我们来了一个全新的测试样本 $\mathbf{x}^*$,我们要预测其输出 $\mathbf{y}^*$ 的分布。我们不能只用某一组“最好”的权重,而是要把

所有可能的权重对应的预测,按照它们成为真实权重的概率(后验概率)进行加权平均(即做积分)

$$ p(y^* | \mathbf{x}^*, \mathcal{D}) = \int p(y^* | \mathbf{x}^*, \mathbf{\omega}) \cdot p(\mathbf{\omega} | \mathcal{D}) d\mathbf{\omega} $$

为什么说这个积分一般无法解析求解? 因为神经网络 $f(\mathbf{x}, \mathbf{\omega})$ 高度非线性,我们无法把这个积分写成干净的数学初等函数。在百万维的非凸空间里进行数值数值积分(比如用网格法),在计算上是绝对不可能完成的(维度灾难)。

8.3 三种估计方法对比

方法操作输出适用
MLEmax P(D\ω)点估计(无不确定度)大数据、弱先验
MAPmax P(D\ω)P(ω)带先验约束的点估计有领域先验知识
Full BayesMCMC 完整积分完整后验分布需精确不确定度
💡 均匀先验下 MAP = MLE。

MAP = "被先验轻轻拉着的极大似然"——既信数据也尊重已知。

深度剖析:为什么 MAP =“被先验轻轻拉着的极大似然”?

在数学上,如果我们假设先验分布 $p(\mathbf{\omega})$ 是一个零均值、各向同性的高斯分布 $\mathcal{N}(0, \sigma_0^2 \mathbf{I})$:

$$ \log p(\mathbf{\omega}) = -\frac{1}{2\sigma_0^2} \|\mathbf{\omega}\|_2^2 + \text{const} $$

如果我们带入 MAP 的优化目标:

$$ \mathbf{\omega}_{\text{MAP}} = \arg\max_{\mathbf{\omega}} \left[ \sum_{i=1}^N \log p(y_i | \mathbf{x}_i, \mathbf{\omega}) - \frac{1}{2\sigma_0^2} \|\mathbf{\omega}\|_2^2 \right] $$

把最大化改成最小化(乘以 $-1$):

$$ \mathbf{\omega}_{\text{MAP}} = \arg\min_{\mathbf{\omega}} \left[ -\sum_{i=1}^N \log p(y_i | \mathbf{x}_i, \mathbf{\omega}) + \lambda \|\mathbf{\omega}\|_2^2 \right] $$

其中 $\lambda = \frac{1}{2\sigma_0^2}$。

前半部分就是极大似然(MLE)对应的负对数似然损失(在均方误差下就是 MSE),后半部分恰恰就是我们极其熟悉的 $L_2$ 正则化(权重衰减 Weight Decay)!

  • 当你的先验非常弱($\sigma_0 \rightarrow \infty$,即先验分布非常宽、非常平坦),$\lambda \rightarrow 0$,此时 MAP 退化为普通的 MLE。
  • 当你的先验非常强($\sigma_0$ 很小),$\lambda$ 变大,先验就会像一根强力的弹簧,把不断想要迎合噪声数据的参数 $\mathbf{\omega}$ 狠狠地往原点 $0$ 的方向拉。

8.4 SGLD(随机梯度 Langevin 动力学)

既然全贝叶斯积分那么难算,我们要怎么在有限的算力下得到完整的后验分布 $p(\mathbf{\omega} | \mathcal{D})$ 呢? 答案就是:MCMC(马尔可夫链蒙特卡洛采样)。我们不在高维空间里做积分,而是根据后验概率分布在参数空间里进行采样。如果我们采出了 1000 套不同的权重参数 $\{\mathbf{\omega}^{(s)}\}_{s=1}^{1000}$,那么预测积分就可以近似为这 1000 套权重预测值的算术平均: $p(y^* | \mathbf{x}^*, \mathcal{D}) \approx \frac{1}{1000} \sum_{s=1}^{1000} p(y^* | \mathbf{x}^*, \mathbf{\omega}^{(s)})$

而在所有采样算法中,SGLD 是一项里程碑式的突破,它创造性地将深度学习的小批量(Mini-batch)梯度下降优化物理学中的分子热运动(朗之万动力学 Langevin Dynamics)融合在了一起。

知识补充

一、 什么是“标准深度学习”?它的优化本质是什么?

标准深度学习(非贝叶斯深度学习)中,我们认为神经网络的权重 $\mathbf{\omega}$ 是一组未知的、但确定存在的常数(即只有一个唯一的最优解)。

我们的目标是找到这组特定的 $\mathbf{\omega}$,使得网络在训练集上的预测误差最小。

假设我们有训练集 $\mathcal{D} = \{(\mathbf{x}_i, y_i)\}_{i=1}^N$。我们定义了似然函数 $p(y_i | \mathbf{x}_i, \mathbf{\omega})$,根据我们在前文推导的观测假设,它是一个高斯分布:

$$ p(y_i | \mathbf{x}_i, \mathbf{\omega}) = \frac{1}{\sqrt{2\pi\sigma^2}} \exp\left( -\frac{\left(y_i - f(\mathbf{x}_i, \mathbf{\omega})\right)^2}{2\sigma^2} \right) $$

在标准深度学习中,我们通过最大似然估计(Maximum Likelihood Estimation, MLE)来寻找权重。其目标是最大化所有观测数据的联合概率:

$$ \mathbf{\omega}_{\text{MLE}} = \arg\max_{\mathbf{\omega}} \sum_{i=1}^N \log p(y_i | \mathbf{x}_i, \mathbf{\omega}) $$

将高斯分布的解析式代入,并去掉与 $\mathbf{\omega}$ 无关的常数项,上述最大化问题等价于最小化均方误差:

$$ \mathbf{\omega}_{\text{MLE}} = \arg\min_{\mathbf{\omega}} \sum_{i=1}^N \left(y_i - f(\mathbf{x}_i, \mathbf{\omega})\right)^2 $$

为了找到这个最小点,我们使用梯度下降算法。每一次更新权重的公式为:

$$ \mathbf{\omega}_{k+1} = \mathbf{\omega}_k + \alpha \sum_{i=1}^N \nabla_{\mathbf{\omega}} \log p(y_i | \mathbf{x}_i, \mathbf{\omega}_k) $$

(其中 $\alpha$ 是学习率,$\nabla_{\mathbf{\omega}}$ 是对权重求偏导的梯度算子)。

  • “拟合数据”的数学本质

梯度 $\nabla_{\mathbf{\omega}} \log p(y_i | \mathbf{x}_i, \mathbf{\omega}_k)$ 在几何上指向的是“能使当前样本预测概率增大的方向”。 当我们沿着这个梯度方向更新权重时,权重的数值就会发生改变,使得网络预测的均值 $f(\mathbf{x}_i, \mathbf{\omega})$ 越来越接近真实观测值 $y_i$。这就是“通过调整权重来拟合数据”的数学过程。


二、 什么是“正则化”?为什么参数在没有数据支持时会“漂移”?
1. 什么是正则化(Regularization)?

在机器学习中,如果我们完全不加限制地让权重去拟合数据(即只最大化似然),网络会过度迎合训练集中的噪声,导致过拟合。此时得到的权重往往数值极大,且极其不稳定。

为了限制权重的取值范围,我们在损失函数中引入一个惩罚项,这就是正则化。最常用的是 L2 正则化(在深度学习中也叫权重衰减,Weight Decay),它的目标函数为:

$$ L_{\text{reg}}(\mathbf{\omega}) = -\sum_{i=1}^N \log p(y_i | \mathbf{x}_i, \mathbf{\omega}) + \frac{\lambda}{2} \|\mathbf{\omega}\|_2^2 $$

其中 $\|\mathbf{\omega}\|_2^2 = \sum_j \omega_j^2$ 是权重的平方和,$\lambda > 0$ 是调节惩罚力度的超参数。

2. 什么是正则化项的梯度?

当我们要最小化 $L_{\text{reg}}(\mathbf{\omega})$ 时,需要对权重求梯度。对第二项(正则化项)求导:

$$ \nabla_{\mathbf{\omega}} \left( \frac{\lambda}{2} \|\mathbf{\omega}\|_2^2 \right) = \lambda \mathbf{\omega} $$

这就是正则化项的梯度

在梯度下降中,这一项的作用非常直观:

$$ \mathbf{\omega}_{k+1} = \mathbf{\omega}_k - \alpha \left( \text{数据梯度} + \lambda \mathbf{\omega}_k \right) = (1 - \alpha\lambda)\mathbf{\omega}_k - \alpha \cdot (\text{数据梯度}) $$

由于 $1 - \alpha\lambda < 1$,可以看到,正则化项的梯度在每一次更新时,都会强行把权重往 $0$ 的方向拉回一点

3. 为什么在没有数据支持的区域参数会“漂移(Drift)”?

假设在参数空间的某一个维度上,我们的训练集没有任何数据落在这个区域(或者说,某些权重对应的特征在数据中极少出现)。

  • 如果没有正则化

因为没有数据,似然函数对该权重的梯度为 $0$。在数值计算中,各种微小的浮点数舍入误差、或者其他相关维度的间接影响,会累积在这些无约束的权重上。这会导致这些权重像“无绳的风筝”一样,在训练过程中随机游走、数值变得极大或极小(即无限制漂移),使得网络在面对未见过的新数据时做出极其荒谬的预测。

  • 如果有正则化(即先验支持)

即使没有数据提供梯度,正则化项的梯度 $\lambda \mathbf{\omega}$ 依然存在。它会像一根橡皮筋一样,强行把这些无约束的权重拉回到 $0$ 附近,从而保证了模型的稳定性和泛化能力。


三、 什么是 MAP 点(最大后验估计点)?

在贝叶斯学派的视角下,我们不认为权重 $\mathbf{\omega}$ 是一个死板的常数,而是认为它是一个随机变量

根据贝叶斯定理,权重的后验概率分布(即在看到数据 $\mathcal{D}$ 之后,权重各个取值的概率)为:

$$ p(\mathbf{\omega} | \mathcal{D}) = \frac{p(\mathcal{D} | \mathbf{\omega}) p(\mathbf{\omega})}{p(\mathcal{D})} $$

其中:

  • $p(\mathcal{D} | \mathbf{\omega})$ 是似然函数(数据拟合项)。
  • $p(\mathbf{\omega})$ 是先验分布

如果我们假设权重服从均值为 $0$ 的高斯先验: $p(\mathbf{\omega}) = \mathcal{N}(\mathbf{\omega}; \mathbf{0}, \sigma_0^2 \mathbf{I})$。

  • $p(\mathcal{D})$ 是归一化常数,与权重 $\mathbf{\omega}$ 无关。
1. MAP 的定义

最大后验估计(Maximum A Posteriori, MAP) 的目标是:寻找一个单一的权重值 $\mathbf{\omega}_{\text{MAP}}$,使得后验概率 $p(\mathbf{\omega} | \mathcal{D})$ 达到最大值(即寻找后验分布曲线的最高峰山顶)。

$$ \mathbf{\omega}_{\text{MAP}} = \arg\max_{\mathbf{\omega}} \log p(\mathbf{\omega} | \mathcal{D}) = \arg\max_{\mathbf{\omega}} \left[ \log p(\mathcal{D} | \mathbf{\omega}) + \log p(\mathbf{\omega}) \right] $$

2. MAP 与 L2 正则化的等价性(数学证明)

我们将高斯先验的解析式代入 $\log p(\mathbf{\omega})$:

$$ \log p(\mathbf{\omega}) = \log \left( \frac{1}{(2\pi)^{d/2}\sigma_0^d} \exp\left(-\frac{\|\mathbf{\omega}\|_2^2}{2\sigma_0^2}\right) \right) = -\frac{1}{2\sigma_0^2} \|\mathbf{\omega}\|_2^2 + \text{const} $$

将此代入 MAP 的目标函数中:

$$ \mathbf{\omega}_{\text{MAP}} = \arg\max_{\mathbf{\omega}} \left[ \sum_{i=1}^N \log p(y_i | \mathbf{x}_i, \mathbf{\omega}) - \frac{1}{2\sigma_0^2} \|\mathbf{\omega}\|_2^2 \right] $$

两边同乘以 $-1$,最大化问题变为最小化问题:

$$ \mathbf{\omega}_{\text{MAP}} = \arg\min_{\mathbf{\omega}} \left[ -\sum_{i=1}^N \log p(y_i | \mathbf{x}_i, \mathbf{\omega}) + \frac{1}{2\sigma_0^2} \|\mathbf{\omega}\|_2^2 \right] $$

对比第二部分 L2 正则化的公式,只要令 $\lambda = \frac{1}{\sigma_0^2}$,这两者在数学上是完全等价的!

  • 结论:所谓的 MAP 点,就是我们在标准深度学习中,加入了 L2 正则化(权重衰减)后,训练出来的那组最终的、单一的权重 $\mathbf{\omega}$。它仅仅对应了后验概率分布的最大值点(山峰的最高点)。

四、 SGLD 中的噪声注入:为什么要注入噪声?数学原理是什么?

在贝叶斯神经网络(BNN)中,我们的最终目的不是寻找一个单一的最优权重(比如 MAP 点),而是要得到整个后验概率分布 $p(\mathbf{\omega} | \mathcal{D})$ 的形状,从而能够评估预测的不确定性。

但是,高维空间中的后验分布 $p(\mathbf{\omega} | \mathcal{D})$ 极其复杂,无法直接写出解析式。我们只能通过蒙特卡洛采样(Sampling):让一粒“粒子”在权重空间中漫游,它在某个区域停留的频率,正好等于该区域的概率密度。

1. 为什么常规 SGD 只能找到 MAP,而不能实现采样?

如果我们使用带正则化的 SGD 进行更新:

$$ \mathbf{\omega}_{k+1} = \mathbf{\omega}_k + \frac{\epsilon_k}{2} \left[ \nabla_{\mathbf{\omega}} \log p(\mathbf{\omega}_k) + \frac{N}{n}\sum_{i=1}^n \nabla_{\mathbf{\omega}} \log p(y_{i} | \mathbf{x}_{i}, \mathbf{\omega}_k) \right] $$

这里的步长为 $\frac{\epsilon_k}{2}$。因为这是一个纯粹的优化过程,粒子受到梯度的吸引,会一直沿着山坡往上爬,最终无可避免地死死停在山顶(即 MAP 点)上。 一旦停下来,我们就只能得到这一个点的信息,无法得知整座山的形状。

2. 噪声注入(SGLD)的数学机理

为了让粒子不在山顶停下,而是在整座山上“漫游”,随机梯度朗之万动力学(SGLD)在更新公式中强行注入了一个高斯噪声 $\mathbf{\eta}_k$:

$$ \mathbf{\omega}_{k+1} = \mathbf{\omega}_k + \frac{\epsilon_k}{2} \left[ \nabla_{\mathbf{\omega}} \log p(\mathbf{\omega}_k) + \frac{N}{n}\sum_{i=1}^n \nabla_{\mathbf{\omega}} \log p(y_{i} | \mathbf{x}_{i}, \mathbf{\omega}_k) \right] + \mathbf{\eta}_k $$

其中, $\mathbf{\eta}_k \sim \mathcal{N}(\mathbf{0}, \epsilon_k \mathbf{I})$。

请极其仔细地观察这两个关键项的抗衡:

  1. 确定性梯度项(括号里的项):它像地心引力一样,始终把粒子拉向概率最高的地方(山顶/MAP 点)。
  2. 随机噪声项 $\mathbf{\eta}_k$:它像热涨落一样,无规则地把粒子随机往各个方向推开。

在物理学中,这种由“外力场(引力/梯度)”和“随机碰撞(噪声)”共同作用的过程,被称为朗之万扩散过程(Langevin Diffusion)

3. 数学定理保障:为什么它能正确采样?

根据随机微分方程理论,当步长 $\epsilon_k \to 0$ 且满足一定的衰减条件时(即 $\sum \epsilon_k = \infty, \sum \epsilon_k^2 < \infty$),该离散马尔可夫链的平稳分布(Stationary Distribution)在数学上被严格证明收敛于真实的后验分布 $p(\mathbf{\omega} | \mathcal{D})$

这意味着:

  • 当粒子爬到山顶(MAP点)时,由于噪声 $\mathbf{\eta}_k$ 的存在,它会被随机踢下山。
  • 山陡峭的地方(概率低),引力(梯度)极大,粒子被踢下去后会迅速被拉回来。
  • 山平缓的地方(概率高),粒子可以在这里漫游很长时间。
  • 如果我们把粒子在每一个时间步的物理位置 $\{\mathbf{\omega}_1, \mathbf{\omega}_2, \dots, \mathbf{\omega}_T\}$ 记录下来,这些记录下来的权重样本集合,其直方图就会完美逼近真实的后验概率分布 $p(\mathbf{\omega} | \mathcal{D})$ 的曲线

这就是通过“噪声注入”将一个“寻找单点的优化算法”魔改为“描绘整体分布的采样算法”的完整数学机理。

将梯度优化与 MCMC 采样融合:

$$ w_{k+1} = w_k + (\frac{\epsilon_{k}}{2})·∇log P(w_k|D) + η_k\space, \space\eta_k \sim \mathcal{N}(0 , \epsilon_{k}\mathbf{I}) $$

展开后验梯度:

$$ w_{k+1} = w_k + (\frac{\epsilon_{k}}{2}) [ ∇log P(w_k) + (N/n) Σ_{i = 1}^{n} ∇log P(y_i|x_i,w_k) ] + η_k , \eta_k \sim \mathcal{N}(0 , \epsilon_{k}\mathbf{I}) $$

作用
∇log P(w)(先验梯度)向先验"拉回",起正则化作用
∇log P(y\x,w)(似然梯度)推动拟合数据,用 mini-batch
η_k ~ N(0, ε)(噪声注入)防止停在 MAP 单点,探索整个后验

似然梯度项(推动拟合数据): $\frac{N}{n} \sum_{i=1}^n \nabla \log p(y_i | \mathbf{x}_i, \mathbf{\omega}_k)$ 在大型数据集(总样本数 $N$)中,计算全量梯度太慢了。我们每次只抽取一个大小为 $n$ 的小批量(Mini-batch)来估算梯度,然后乘以放大系数 $\frac{N}{n}$ 来近似全量梯度。这和标准深度学习中 SGD 的操作完全一致。它负责推动权重去拟合数据。

先验梯度项(向先验“拉回”): $\nabla \log p(\mathbf{\omega}_k)$ 相当于正则化项的梯度。它防止网络参数在没有数据支持的区域无限制地漂移,把它往先验分布的中心拉。

噪声注入(灵魂所在,防卡死): $\mathbf{\eta}_k \sim \mathcal{N}(0, \epsilon_k \mathbf{I})$ 在常规的 SGD 优化中,小球会沿着斜坡滚到某一个局部极小值(MAP 点)然后停下来不动。 但是在 SGLD 中,我们故意在每一步更新中注入一个高斯随机噪声 $\mathbf{\eta}_k$。这相当于给这个滚下山的小球不停地施加微小的震动(类似于热力学中的布朗运动)。 有了这个噪声,小球永远不会在某个单点停下来,它会在最有可能的参数区域附近欢快地、受控地漫游(Sampling)。它在某个区域停留的时间长短,正好对应了后验概率 $p(\mathbf{\omega} | \mathcal{D})$ 在该区域的高低!

💡 SGLD 核心:用注入噪声在参数空间中"受控漫游"。比纯 MCMC 快,比纯优化提供不确定度。Capture parameter uncertainty!

为什么 SGLD 能够收敛到正确的后验分布?

这里面有一个非常精妙的数学物理机制: 随着采样步数 $k$ 的增加,我们的步长(学习率)$\epsilon_k$ 会缓慢衰减(但不能衰减得太快)。

  • 在更新项中,确定性的梯度项的系数是 $\frac{\epsilon_k}{2}$,其衰减速度是 $\mathcal{O}(\epsilon_k)$。
  • 而注入的随机噪声 $\mathbf{\eta}_k$ 的标准差是 $\sqrt{\epsilon_k}$,其衰减速度是 $\mathcal{O}(\sqrt{\epsilon_k})$。

随着步长 $\epsilon_k$ 越来越小,梯度带来的确定性漂移会逐渐被随机噪声(布朗运动)所主导。在数学上可以证明,当步长衰减满足特定的“Robbins-Monro 条件”时,这种受控的随机漫游轨迹产生的样本,会严格且完美地收敛到参数的真实后验概率分布 $p(\mathbf{\omega} | \mathcal{D})$


9. 正则化与奥卡姆剃刀

9.1 L2 权重衰减正则化

在损失函数中加入惩罚大权重的项(L2正则化):

$$ E_{reg}(\omega) = E(\omega) + (\frac{\alpha}{2 \beta}) \sum \omega^{2}_{i} $$ $\alpha$ 是 正则化强度

Bayesian 视角:等价于给权重施加高斯先验

P(w) ∝ exp(-α/2 · Σwᵢ²)

  1. 贝叶斯视角下的概率本质

在上一节我们证明了,寻找使后验概率最大的点(MAP 点)其公式为: $\mathbf{\omega}_{\text{MAP}} = \arg\max_{\mathbf{\omega}} \left[ \log p(\mathcal{D} | \mathbf{\omega}) + \log p(\mathbf{\omega}) \right]$

现在我们给定具体的先验和似然分布:

  • 先验 $p(\mathbf{\omega})$:假设我们认为权重应该在 $0$ 附近,服从一个独立同分布的高斯先验(Gaussian Prior): $p(\mathbf{\omega}) = \left(\frac{\alpha}{2\pi}\right)^{M/2} \exp\left( -\frac{\alpha}{2} \sum_{i=1}^M \omega_i^2 \right)$ 这里,参数 $\alpha$ 实际上代表了先验分布的精度(Precision),即方差的倒数:$\alpha = 1/\sigma_0^2$。它的数值越大,高斯先验分布的曲线就越陡峭、越窄,说明我们越有信心认为“权重应该等于 $0$”。
  • 似然 $p(\mathcal{D} | \mathbf{\omega})$:假设观测数据带有方差为 $\sigma^2$ 的高斯噪声,定义噪声精度为 $\beta = 1/\sigma^2$,则似然为: $p(\mathcal{D} | \mathbf{\omega}) \propto \exp\left( -\frac{\beta}{2} \sum_{n=1}^N (y_n - f(\mathbf{x}_n, \mathbf{\omega}))^2 \right)$
  1. 数学等价性证明

将这两项取对数相加: $\log p(\mathbf{\omega} | \mathcal{D}) \propto \log p(\mathcal{D} | \mathbf{\omega}) + \log p(\mathbf{\omega})$ $\log p(\mathbf{\omega} | \mathcal{D}) \propto -\frac{\beta}{2} \sum_{n=1}^N (y_n - f(\mathbf{x}_n, \mathbf{\omega}))^2 - \frac{\alpha}{2} \sum_{i=1}^M \omega_i^2 + \text{const}$

为了让公式最简化,我们将两边同时除以 $-\beta$(这不改变最大化问题求极值点的位置),并令总损失 $E(\mathbf{\omega}) = \frac{1}{2} \sum (y_n - f(\mathbf{x}_n, \mathbf{\omega}))^2$(即均方误差的一半):

$\text{Target} = E(\mathbf{\omega}) + \frac{\alpha / \beta}{2} \sum_{i=1}^M \omega_i^2$

这就是 L2 权重衰减公式的概率本质:它完美等价于高斯先验下的 MAP 估计。

  • $\beta$(噪声精度)越大(数据噪声越小),我们越信赖数据,惩罚项相对变小。
  • $\alpha$(先验精度)越大,我们越保守,惩罚项变大,强迫权重不能偏离 0 太远。
超参数含义效果
α(大)强正则化模型更简单,可能欠拟合
α(小)弱正则化贴近数据,可能过拟合
β(噪声精度)1/σ²控制数据拟合 vs 正则化的权重
大权重 → 模型过分关注特定噪声模式 → 记住噪声 → 过拟合。

惩罚大权重 = 强迫模型简约。

9.2 奥卡姆剃刀(Occam's Razor)

哲学原则:能解释数据的模型中,最简单者最佳。

数学表达(Bayesian 模型比较)——边际似然 Evidence

EVIDENCE

当我们有多个候选模型 $M_1, M_2, \dots$(比如 $M_1$ 是 1 次多项式,$M_2$ 是 3 次多项式,$M_3$ 是 10 次多项式)。 我们想知道:在看到数据 $\mathcal{D}$ 后,哪个模型最合理? 根据贝叶斯公式,模型自身的后验概率为: $p(M_i | \mathcal{D}) \propto p(\mathcal{D} | M_i) \cdot p(M_i)$ 如果我们假设每个模型的先验概率 $p(M_i)$ 是一样的,那么决定哪个模型胜出的唯一标准就是 $p(\mathcal{D} | M_i)$(Evidence,边际似然)2

它的计算方法是对该模型下所有可能参数进行积分(积分消去权重)31: $P(\mathcal{D} | M) = \int P(\mathcal{D} | \mathbf{\omega}, M) \cdot P(\mathbf{\omega} | M) d\mathbf{\omega}$

关注 evidence可以自动执行 奥卡姆剃刀的原则!

由于概率是需要归一化的,因此对于任何模型 $M$,其在所有可能的数据空间 $\mathcal{D}$ 上的 Evidence 积分必须为 1: $\int P(\mathcal{D} | M) d\mathcal{D} = 1$

这导致了不同复杂度的模型在数据空间中分配其“概率预算”的方式截然不同:

  • 简单模型 $M_1$:它的参数空间很小,只能生成非常简单的数据。如果我们的观测数据 $\mathcal{D}_{\text{obs}}$ 稍微复杂一点(比如带有一定的非线性), $M_1$ 根本拟合不了,因此其似然函数 $P(\mathcal{D}_{\text{obs}} | \mathbf{\omega}, M_1)$ 在任何参数下都极小。最终积分得出的 Evidence 极小
  • 极度复杂模型 $M_3$(拥有成千上万个参数):它可以解释世界上的任意数据(拟合能力极强)。 但是,因为它的参数空间巨大(比如上百万维),它的先验分布 $P(\mathbf{\omega} | M_3)$ 会把概率密度稀释、平摊到极其庞大的参数范围里32。 在做高维积分 $\int P(\mathcal{D}_{\text{obs}} | \mathbf{\omega}, M_3) P(\mathbf{\omega} | M_3) d\mathbf{\omega}$ 时,虽然第一项似然可以很大(能拟合),但第二项先验概率在整个参数空间里小得可怜32。这导致在积分后,Evidence 依然很小(这就是笔记里“大厨”的比喻:满汉全席大厨可以做1万道菜,你让他只做一道煎蛋,他把这道煎蛋做出来的概率,只是他那一万道菜谱中渺小的 1/10000。他被自己的“多才多艺(高复杂度)”给惩罚了。)
  • 适中模型 $M_2$:它的复杂度刚好能解释 $\mathcal{D}_{\text{obs}}$,它的参数空间没有被无端放大,因此概率分布没有被严重稀释。最终它的 Evidence 最大
模型复杂度Evidence原因
M₁(简单)拟合数据不好 → 似然低
M₂(适中)最大能拟合又不浪费参数
M₃(复杂)能拟合但概率"平摊"到太多可能
💡 说人话:复杂模型像满汉全席大厨——你只叫他煎蛋,他的本事被"浪费",分摊到每个可能菜单的概率都低。中等复杂度刚好够用 Evidence 最大。

9.3 Evidence 的两项竞争平衡

随参数数 M 增加:

  • 第一项(拟合):总更好(或不变差)
  • 第二项(复杂度惩罚):变差
  • 两者平衡处 = 最优 M

9.4 课程实例:核物理模型比较

GPR(仅 3 个超参数)在核质量外推中表现优于 BNN(参数太多可能 unstable)。

这完美体现奥卡姆剃刀——当数据有限时,简单模型往往更可靠

💡 BNN 虽然理论上更强大(提供参数分布),但其大量参数在有限数据下可能不稳定。GPR 以极少的超参数提供优秀的泛化能力,成为核物理外推的首选。

10. 置信区间与不确定度传播

10.1 经典 CI vs. Bayesian CI

方面经典 CIBayesian CI
定义重复抽样∞次,95%的区间包含真值给定数据,真值在区间内概率=95%
解释频率论(关于方法)概率论(关于参数本身)
依赖仅依赖抽样分布依赖先验 + 数据
💡 不能说"真值有 95% 概率在这个区间内"——这是频率论者的致命诱惑式错误。

但 Bayesian CI 可以这么说。

Bayesian CI 公式

$$ ∫_{ω_l}^{ω_h} P(ω|D) dω = CI $$

10.2 不确定度量化的道德要求

课程引用 Nazarewicz(Phys. Rev. C 98, 034318, 2018)的著名论断:

情况问题性质评价
CI 过窄虚假精确:声称比实际更准不诚实
CI 过宽(远>95%)虚假谦虚:浪费精度也是不诚实
不给误差无法判断可靠性"不给出误差的理论就是耍流氓"
💡 核物理领域对不确定度的要求近乎"道德"层面——过窄过宽都不行,必须有真实的误差评估。

10.3 Bayesian 不确定度传播链

数据不确定度 → 参数后验分布 P(ω|D) → 预测分布 P(y*|x*,D)

整个链条是概率分布的传播。Bayesian 框架天然支持端到端的不确定度量化和传播。


11. 物理信息机器学习

11.1 纯数据驱动 ML 的困境

  • 缺乏物理先验知识
  • 数据量不足时泛化差
  • 核反应数据:误差大、不完整、各数据库间有分歧
  • 核结构数据:精度较高,但有强量子效应(壳结构、奇偶效应、闯入态、轨道反转...)

11.2 四种物理信息融入方式

方法具体做法核物理例子
物理特征量输入将已知物理量作为输入特征壳修正、奇偶效应、分离能
物理约束 LossLoss 加入物理约束项归一化、非负值、守恒律
模型残差学习学习物理模型的残差 Model Mixing从核模型出发 ML 修正残差
物理嵌入先验用物理模型构造 Bayesian 先验迁移学习 → 物理模型 → 先验
💡 优势:综合物理信息(守恒律、对称性、量子效应等),即使数据少也能学好。

11.3 PINN(物理信息神经网络)

用于求解微分方程,将微分算符嵌入 Loss 函数:

Loss = MSE_data + λ · MSE_PDE

其中 MSE_PDE 惩罚网络输出不满足偏微分方程的程度。

应用领域:流体力学、热传导、量子力学中的微分方程求解。 参考文献:G.E. Karniadakis, Nature Reviews Physics 3, 422 (2021)

11.4 迁移学习策略

物理模型/已训练网络参数初始化 → 作为 Bayesian 先验 → 新数据上微调。

核物理实例:裂变产额评价(Pei 组 PRL 123, 122501 (2019))——累积产额与独立产额间的矩阵转换关系约束嵌入先验。


12. 其他经典机器学习方法

12.1 CNN(卷积神经网络)

输入图像 (32×32×3 像素)     ← 3=RGB 通道
     ↓  卷积核 5×5
特征图 (28×28×N channels)   ← 卷积提取特征
     ↓  池化 Pooling
降采样特征图                  ← 减小尺寸保留关键信息
     ↓  全连接 FC
分类输出

两大核心思想

  • 局部关联(Local Correlation):每个神经元只看一小块(感受野)
  • 参数共享(Parameter Sharing):同一个卷积核全图滑动,大幅减少参数
💡 仿生学设计:模仿生物视觉皮层的感受野(receptive field)机制。

12.2 RNN(循环神经网络)

隐藏层节点之间有循环连接 → 网络"记住"之前输入的上下文信息。

适用场景:序列相关数据——时间序列、自然语言、音频信号。

💡 与 Transformer 区别:RNN 逐字顺序处理;Transformer 通过自注意力机制并行处理整个序列。

12.3 Transformer 与 ChatGPT 技术栈

组件功能
Self-Attention对输入不同部分差异化加权(关注重要部分)
Encoder将输入编码为上下文表示
Decoder从编码生成输出序列
💡 ChatGPT = GPT(Generative Pre-trained Transformer):在大量无标注文本上预训练,通过人类反馈(RLHF)微调,生成类人文本。

12.4 GAN(生成对抗网络)

生成器 G → 生成假样本 → 判别器 D → 真假判断
                              ↑
                         真实样本

博弈过程:G 试图骗过 D,D 试图不被骗 → 两者共同进化 → G 学会生成逼真样本。属于无监督学习

12.5 各方法速览对比

方法类型核心思路监督方式
SVM分类Kernel映射→高维→最大间隔超平面监督
随机森林分类/回归多棵决策树投票/平均监督
XGBoost/LightGBM分类/回归梯度提升树,逐棵修正前树残差监督
CNN图像/语音卷积+池化+全连接监督
RNN序列数据循环连接的记忆机制监督
Transformer/GPT文本生成自注意力+Encoder-Decoder自监督预训练
GAN内容生成生成器vs判别器对抗博弈无监督
Deep Learning通用多隐藏层(>2),需大数据监督/强化
KAN通用Kolmogorov-Arnold网络,可解释高监督

12.6 AlphaGo 里程碑

技术栈:深度卷积神经网络 + 蒙特卡洛树搜索(MCTS)

💡 2016 年 AlphaGo 击败李世石——AI 发展史上的标志性事件,证明深度学习在复杂策略游戏中的能力。

13. Bayesian 优化

13.1 动机

当目标函数 f(x) 计算代价极高且解析形式不可知时,需要高效地找到最小值。

  • 机器学习超参数调优(每次训练代价高)
  • 实验设计优化(每次实验成本大)
  • 核物理中模型参数校准

13.2 算法四步循环

┌──────────────────────────────────────────────────┐
│ 1. 建立先验:用 GP 对 f(x) 建立概率信念           │
│    p(f) = GP(f; μ, K)                            │
│                      ↓                           │
│ 2. 加入观测数据 D = [(x₁,f₁), (x₂,f₂), ..., (xₙ,fₙ)] │
│                      ↓                           │
│ 3. 更新后验:p(f|D) = GP(f; μ_{f|D}, K_{f|D})    │
│                      ↓                           │
│ 4. 采集函数选下一个采样点 xₙ₊₁                    │
│    平衡 Exploitation(利用) 与 Exploration(探索)   │
│                      ↓                           │
│ 回到步骤 2,扩充 D → D∪{(xₙ₊₁,fₙ₊₁)}               │
└──────────────────────────────────────────────────┘

13.3 核心机制:Exploration vs Exploitation

策略做法风险
Exploitation(利用)在当前最优点附近采样精炼已知最优
Exploration(探索)在高不确定度区域采样可能发现更优
💡 物理直觉:Bayesian 优化如在黑暗中摸索——既深挖已知"好方向"(利用),又不敢错过未知中可能的"金矿"(探索)。采集函数 Acquisition Function 就是这只"导航手"。

14. 总结与对比表

14.1 课程知识体系全景

计算物理中的机器学习
│
├── 统计基础
│   ├── 描述统计:均值, 方差, 相关系数
│   ├── 信息论:熵, KL 散度, 条件熵
│   ├── 误差分析:协方差矩阵, 误差传播
│   └── Bayesian 定理:先验 → 似然 → 后验 → 证据
│
├── 回归方法
│   ├── 线性回归: β=(XᵀX)⁻¹Xᵀy, MLE=最小二乘
│   ├── 多项式回归 + SVD 求解
│   ├── GPR: 非参数, f~GP(μ,K), 天然误差棒
│   └── Bayesian 线性回归: 参数即分布
│
├── 神经网络
│   ├── 前馈 NN + BP 算法(梯度下降+动量)
│   ├── BNN: 权重为分布, MCMC/SGLD 训练
│   ├── 正则化 (L2 = 高斯先验)
│   └── 奥卡姆剃刀 (Evidence 框架模型选择)
│
├── 物理信息融合
│   ├── 特征输入, Loss 约束, Model Mixing
│   ├── 迁移学习 + 先验嵌入
│   └── PINN: 微分算符嵌入 Loss
│
└── 先进方法
    ├── CNN, RNN, Transformer/GPT, GAN
    ├── SVM, 随机森林, XGBoost
    ├── Deep Learning (AlphaGo)
    └── Bayesian Optimization

14.2 核心方法总对比

方法输出类型不确定度参数可解释性最佳场景
线性回归点估计+CI解析CI极高简单趋势
GPR预测分布天然自带3个数据少需不确定度
标准 NN点估计大量大数据分类/回归
BNN预测分布完整后验大量需参数+结构不确定度
CNN点估计大量图像/语音
Transformer概率分布softmax海量注意力NLP/ChatGPT
SVM分类决策距离度量中小数据分类
随机森林投票/均值方差可估结构化数据
Bayesian Opt最优点GP后验昂贵函数优化

14.3 方法选择决策树

需要不确定度?
├── 是 → 数据多?
│        ├── 是 → BNN(完整分布)或 GP(快速)
│        └── 否 → GPR(3个参数优于BNN多参数)
└── 否 → 数据类型?
         ├── 图像/语音 → CNN
         ├── 序列数据 → RNN/Transformer
         └── 结构化数据 → 随机森林/XGBoost 或 标准NN

有物理先验知识?→ Physics-Informed ML(嵌入特征/约束/Loss/先验)

14.4 六大核心理念

理念具体内涵
Bayesian 思维概率 = 信念程度;先验+数据→后验;持续更新
不确定度量化预测必附误差;"不给出误差的理论就是耍流氓"
奥卡姆剃刀适度模型适度学习;少则不及多则过
物理融合纯数据驱动不足 → 物理信息嵌入是正道
新科学范式方程不可解/不存在时 → 数据驱动+物理约束
实用主义按问题选方法:权衡数据量、不确定度、可解释性
💡 最终结论:机器学习不是物理学的敌人,而是强大补充。Bayesian 框架为数据驱动的科学发现提供了系统性的不确定度量化和模型选择方案。"AI for Science"已是不可逆转的趋势。

Akuiro整理补充 笔记结束 · 2026-06-08

← Back home