退火机制在机器学习中的应用研究

摘要

"退火"(Annealing) 作为一个源于物理学的概念,在机器学习和优化算法领域得到了广泛应用。本文档系统研究了退火机制在两个重要领域的应用:扩散模型中的郎之万动力学采样组合优化中的模拟退火算法。通过对比分析,本文揭示了这两种看似不同的方法背后的共同物理学基础,并探讨了它们在实际应用中的联系与区别。本文详细阐述了扩散模型中的温度调度策略及其与郎之万采样的关系,以及模拟退火在组合优化问题中的应用原理。

在我看来,退火本身是一个物理过程,同时满足一种概率体系,而learning的过程也是基于概率的体系,天然是同根同源的。同时,借用能量这种模型,很好地能够满足随机探索到逐渐稳定这么一个收敛的过程。所以diffusion沿用这种退火的过程来进行推理。


1. 退火的物理学起源

1.1 金属退火工艺

退火 (Annealing) 原本是金属材料加工中的一种热处理工艺:

  1. 加热阶段: 将金属加热至高温(接近或超过再结晶温度)
  2. 保温阶段: 在高温下保持一段时间,使原子获得足够能量重新排列
  3. 缓慢冷却: 以可控的速率降温,使原子逐渐稳定在低能量状态

物理原理:

  • 高温状态: 原子动能大,可以克服局部势垒,探索更多构型空间
  • 缓慢降温: 系统逐渐失去能量,原子倾向于占据能量更低的稳定位置
  • 最终结果: 获得具有均匀晶粒结构、内应力小的材料(接近全局最优状态)

1.2 统计物理学的数学描述

在统计物理学中,系统在温度 TTT 下处于某状态 sss 的概率由玻尔兹曼分布给出:

P(s)=1Zexp⁡(−E(s)kBT) P(s) = \frac{1}{Z} \exp\left(-\frac{E(s)}{k_B T}\right) P(s)=Z1exp(−kBTE(s))

其中:

  • E(s)E(s)E(s) 是状态 sss 的能量
  • kBk_BkB 是玻尔兹曼常数
  • TTT 是温度(控制随机性)
  • Z=∑sexp⁡(−E(s)/kBT)Z = \sum_s \exp(-E(s)/k_B T)Z=∑sexp(−E(s)/kBT) 是配分函数(归一化常数)

温度的作用:

  • 高温 (T→∞T \to \inftyT→∞): 分布趋于均匀,P(s)≈constP(s) \approx \text{const}P(s)≈const,系统随机探索
  • 低温 (T→0T \to 0T→0): 分布集中在低能态,P(s)≈δ(s−smin⁡)P(s) \approx \delta(s - s_{\min})P(s)≈δ(s−smin),系统稳定

退火的本质: 通过控制温度参数 T(t)T(t)T(t) 从高到低变化,引导系统从随机探索平稳过渡到确定性收敛。


2. 扩散模型中的退火机制

2.1 扩散模型基础

扩散模型(Diffusion Models)是一类基于迭代去噪的生成模型,核心思想是:

  1. 正向过程 (Forward Process): 逐步向数据添加高斯噪声,直至变为纯噪声
  2. 反向过程 (Reverse Process): 学习逐步去除噪声,从噪声恢复数据
2.1.1 数学框架

前向扩散过程:

q(xt∣xt−1)=N(xt;1−βtxt−1,βtI) q(x_t | x_{t-1}) = \mathcal{N}(x_t; \sqrt{1-\beta_t} x_{t-1}, \beta_t I) q(xt∣xt−1)=N(xt;1−βt xt−1,βtI)

其中 βt\beta_tβt 是噪声调度参数(noise schedule),t∈{1,2,...,T}t \in \{1, 2, ..., T\}t∈{1,2,...,T}。

通过重参数化技巧,可以直接从 x0x_0x0 采样 xtx_txt:

xt=αˉtx0+1−αˉtϵ,ϵ∼N(0,I) x_t = \sqrt{\bar{\alpha}_t} x_0 + \sqrt{1-\bar{\alpha}_t} \epsilon, \quad \epsilon \sim \mathcal{N}(0, I) xt=αˉt x0+1−αˉt ϵ,ϵ∼N(0,I)

其中 αt=1−βt\alpha_t = 1 - \beta_tαt=1−βt,αˉt=∏i=1tαi\bar{\alpha}t = \prod{i=1}^t \alpha_iαˉt=∏i=1tαi。

反向去噪过程:

pθ(xt−1∣xt)=N(xt−1;μθ(xt,t),Σθ(xt,t)) p_\theta(x_{t-1} | x_t) = \mathcal{N}(x_{t-1}; \mu_\theta(x_t, t), \Sigma_\theta(x_t, t)) pθ(xt−1∣xt)=N(xt−1;μθ(xt,t),Σθ(xt,t))

2.2 噪声调度即温度退火

2.2.1 噪声水平与温度的对应关系

在扩散模型中,噪声水平 βt\beta_tβt 实际上对应于统计物理中的温度概念:

扩散模型 物理系统 含义
高噪声 (t→Tt \to Tt→T) 高温 (TTT 大) 系统高度随机,探索空间广
低噪声 (t→0t \to 0t→0) 低温 (TTT 小) 系统确定性强,收敛到数据分布
噪声调度 βt\beta_tβt 温度调度 T(t)T(t)T(t) 控制探索-利用平衡

数学联系:

扩散过程的边际分布可以写成能量形式:
p(xt)∝exp⁡(−∥xt−αˉtx0∥22(1−αˉt)) p(x_t) \propto \exp\left(-\frac{\|x_t - \sqrt{\bar{\alpha}_t} x_0\|^2}{2(1-\bar{\alpha}_t)}\right) p(xt)∝exp(−2(1−αˉt)∥xt−αˉt x0∥2)

这与玻尔兹曼分布形式一致,其中 (1−αˉt)(1-\bar{\alpha}_t)(1−αˉt) 对应于"温度"参数。

2.2.2 常见的噪声调度策略

在扩散模型实践中,常使用 DDPMScheduler 配合不同的调度策略。例如 squaredcos_cap_v2 (余弦平方调度):

python 复制代码
noise_scheduler = DDPMScheduler(
    num_train_timesteps=100,           # 总步数 T
    beta_schedule='squaredcos_cap_v2', # 余弦平方调度
    clip_sample=True,
    prediction_type='epsilon'          # 预测噪声 ε
)

Squared Cosine Schedule 的定义:
αˉt=f(t)f(0),f(t)=cos⁡2(t/T+s1+s⋅π2) \bar{\alpha}_t = \frac{f(t)}{f(0)}, \quad f(t) = \cos^2\left(\frac{t/T + s}{1 + s} \cdot \frac{\pi}{2}\right) αˉt=f(0)f(t),f(t)=cos2(1+st/T+s⋅2π)

其中 sss 是小的偏移量(通常为 0.008),防止 β0\beta_0β0 过小。

退火曲线特性:

以100步为例:

text 复制代码
t = 0:   β₁ ≈ 0.0001  (极低噪声,几乎确定性)
t = 20:  β₂₀ ≈ 0.001  (低噪声,小幅调整)
t = 50:  β₅₀ ≈ 0.01   (中等噪声,探索局部)
t = 80:  β₈₀ ≈ 0.05   (高噪声,大范围探索)
t = 100: β₁₀₀≈ 0.15   (最高噪声,几乎随机)

退火效果:

  • 训练阶段: 随机选择时间步 ttt,模型学习在不同噪声水平下预测噪声
  • 推理阶段: 从 t=Tt=Tt=T 到 t=0t=0t=0 依次去噪,实现从高温到低温的退火过程

其他常见调度策略:[^2]

  • Linear Schedule: βt=β1+tT(βT−β1)\beta_t = \beta_1 + \frac{t}{T}(\beta_T - \beta_1)βt=β1+Tt(βT−β1),简单但可能在两端变化过快
  • Cosine Schedule: 余弦函数调度,在中间阶段变化较平缓
  • Sigmoid Schedule: S型曲线,可控制变化的陡峭程度

2.3 郎之万动力学采样 (Langevin Dynamics Sampling)

2.3.1 郎之万方程

郎之万动力学 (Langevin Dynamics) 是描述粒子在势场中受热噪声驱动的随机运动方程:

dx=−∇E(x)dt+2TdWt dx = -\nabla E(x) dt + \sqrt{2T} dW_t dx=−∇E(x)dt+2T dWt

其中:

  • E(x)E(x)E(x) 是能量函数(对应负对数概率)
  • TTT 是温度
  • WtW_tWt 是维纳过程(布朗运动)

离散化形式:

xt+1=xt−η∇E(xt)+2ηTϵt,ϵt∼N(0,I) x_{t+1} = x_t - \eta \nabla E(x_t) + \sqrt{2\eta T} \epsilon_t, \quad \epsilon_t \sim \mathcal{N}(0, I) xt+1=xt−η∇E(xt)+2ηT ϵt,ϵt∼N(0,I)

物理直觉:

  • 确定性项 −∇E(x)-\nabla E(x)−∇E(x): 使粒子沿能量梯度下降(类似梯度下降)
  • 随机性项 2Tϵ\sqrt{2T} \epsilon2T ϵ: 热噪声驱动粒子探索(类似随机游走)
2.3.2 退火郎之万动力学 (Annealed Langevin Dynamics)

在采样任务中,我们希望从目标分布 p(x)∝exp⁡(−E(x))p(x) \propto \exp(-E(x))p(x)∝exp(−E(x)) 采样。标准方法是:

朴素郎之万采样:
xt+1=xt+η∇log⁡p(xt)+2ηzt x_{t+1} = x_t + \eta \nabla \log p(x_t) + \sqrt{2\eta} z_t xt+1=xt+η∇logp(xt)+2η zt

在固定温度 T=1T=1T=1 下运行,最终 xtx_txt 收敛到 p(x)p(x)p(x)。

退火版本:

为了加速收敛并避免陷入局部最优,引入温度退火 :
xt+1=xt+η∇log⁡p(xt)+2ηTtzt x_{t+1} = x_t + \eta \nabla \log p(x_t) + \sqrt{2\eta T_t} z_t xt+1=xt+η∇logp(xt)+2ηTt zt

其中 TtT_tTt 是随时间递减的温度调度:T0>T1>...>TN→0T_0 > T_1 > ... > T_N \to 0T0>T1>...>TN→0。

退火策略示例:

  • 线性退火: Tt=Tmax⁡(1−tN)T_t = T_{\max} \left(1 - \frac{t}{N}\right)Tt=Tmax(1−Nt)
  • 指数退火: Tt=Tmax⁡⋅γtT_t = T_{\max} \cdot \gamma^tTt=Tmax⋅γt
  • 余弦退火: Tt=Tmax⁡⋅cos⁡2(πt2N)T_t = T_{\max} \cdot \cos^2\left(\frac{\pi t}{2N}\right)Tt=Tmax⋅cos2(2Nπt)
2.3.3 扩散模型作为退火郎之万采样

关键洞察: 扩散模型的反向过程本质上是一种离散化的退火郎之万动力学

对比两者的更新公式:

郎之万动力学 扩散模型反向过程
xt+1=xt+η∇log⁡p(xt)+2ηTtztx_{t+1} = x_t + \eta \nabla \log p(x_t) + \sqrt{2\eta T_t} z_txt+1=xt+η∇logp(xt)+2ηTt zt xt−1=1αt(xt−βt1−αˉtϵθ(xt,t))+σtztx_{t-1} = \frac{1}{\sqrt{\alpha_t}}\left(x_t - \frac{\beta_t}{\sqrt{1-\bar{\alpha}t}} \epsilon\theta(x_t, t)\right) + \sigma_t z_txt−1=αt 1(xt−1−αˉt βtϵθ(xt,t))+σtzt
分数(梯度): ∇log⁡p(xt)\nabla \log p(x_t)∇logp(xt) 噪声预测转分数: −ϵθ(xt,t)1−αˉt-\frac{\epsilon_\theta(x_t, t)}{\sqrt{1-\bar{\alpha}_t}}−1−αˉt ϵθ(xt,t)
温度: TtT_tTt 方差: σt=βt\sigma_t = \sqrt{\beta_t}σt=βt

统一解释:[^5]

  • 扩散模型通过神经网络 ϵθ(xt,t)\epsilon_\theta(x_t, t)ϵθ(xt,t) 学习分数函数 ∇log⁡p(xt)\nabla \log p(x_t)∇logp(xt)
  • 反向采样过程等价于在时变温度 σt\sigma_tσt 下运行郎之万动力学
  • 噪声调度 {βt}\{\beta_t\}{βt} 定义了退火的温度表

2.4 扩散模型中的退火采样实现

2.4.1 训练阶段:噪声预测
python 复制代码
# 采样随机时间步(相当于随机温度)
timesteps = torch.randint(
    0, noise_scheduler.config.num_train_timesteps,  # [0, T)
    (B,), device=device
).long()

# 添加噪声(前向扩散)
noisy_data = noise_scheduler.add_noise(
    clean_data,  # 真实数据 x_0
    noise,       # 标准高斯噪声 ε
    timesteps    # 时间步 t
)
# 数学: noisy_data = √(ᾱ_t) * clean_data + √(1-ᾱ_t) * ε

# 预测噪声
noise_pred = model(
    sample=noisy_data,    # x_t
    timestep=timesteps,   # t
    condition=condition   # 条件信息(可选)
)

# 损失函数:预测噪声与真实噪声的L2距离
diffusion_loss = F.mse_loss(noise_pred, noise)

训练目标: 学习在任意噪声水平 ttt 下预测噪声 ϵθ(xt,t)≈ϵ\epsilon_\theta(x_t, t) \approx \epsilonϵθ(xt,t)≈ϵ。

2.4.2 推理阶段:退火采样
python 复制代码
# 初始化:从纯高斯噪声开始(最高温度)
x_T = torch.randn(data_shape, device=device)

# 设置采样步骤(退火时间表)
noise_scheduler.set_timesteps(num_inference_steps)

# 迭代去噪(温度逐步降低)
x_t = x_T
for t in noise_scheduler.timesteps:  # [T, T-1, ..., 1, 0]
    # 预测当前时间步的噪声
    noise_pred = model(
        sample=x_t,          # 当前带噪样本 x_t
        timestep=t,          # 当前时间步
        condition=condition  # 条件信息(可选)
    )
    
    # 去噪一步(郎之万更新)
    x_t = noise_scheduler.step(
        model_output=noise_pred,  # 预测的 ε_θ(x_t, t)
        timestep=t,               # 当前 t
        sample=x_t                # 当前 x_t
    ).prev_sample                 # 返回 x_{t-1}

# x_t 现在是生成的样本 x_0
generated_sample = x_t

退火过程可视化:

以图像生成为例(100步):

text 复制代码
Step 0 (t=100):  x₁₀₀ ~ N(0, I)        [高温,完全随机噪声]
                 ↓ 去噪(郎之万步)
Step 25 (t=75):  x₇₅ = ...             [温度降低,开始出现模糊轮廓]
                 ↓
Step 50 (t=50):  x₅₀ = ...             [中温,主要结构形成]
                 ↓
Step 75 (t=25):  x₂₅ = ...             [低温,细节逐渐清晰]
                 ↓
Step 100 (t=0):  x₀ ≈ 真实图像分布    [零温,高质量输出]
2.4.3 温度在不同应用中的影响

图像生成中的退火过程:

高温阶段 (t=100~70):

  • 行为: 图像完全是噪声,没有可识别的结构
  • 作用: 探索整个图像空间,确定大致的构图和主要物体位置
  • 类比: 艺术家的草图阶段

中温阶段 (t=70~30):

  • 行为: 图像轮廓逐渐清晰,颜色和形状开始显现
  • 作用: 细化主要特征,建立物体间的关系
  • 类比: 描绘基本形状和阴影

低温阶段 (t=30~0):

  • 行为: 图像细节不断精修,纹理、边缘变得清晰
  • 作用: 添加高频细节,生成最终的高质量图像
  • 类比: 添加细节和润色

文本生成中的退火:

在离散扩散模型(如用于文本生成)中:

  • 高温: 词汇选择高度随机,句子结构不确定
  • 中温: 句子主题和语法结构逐渐确定
  • 低温: 精确选择每个词,确保语义连贯

2.5 退火的必要性:理论与实验

2.5.1 理论分析

为什么需要多步退火?

  1. 避免模式崩塌: 直接一步生成容易陷入单一模式,缺乏多样性
  2. 提高样本质量: 渐进式去噪能更准确地捕捉数据分布
  3. 稳定性: 小步长的迭代更新比大步长更稳定

数学直觉:

一步生成等价于求解:
x0=arg⁡max⁡xp(x∣xT) x_0 = \arg\max_{x} p(x | x_T) x0=argxmaxp(x∣xT)

多步退火等价于求解:
x0=arg⁡max⁡x∫p(x∣x1)p(x1∣x2)⋯p(xT−1∣xT)dx1:T−1 x_0 = \arg\max_{x} \int p(x | x_1) p(x_1 | x_2) \cdots p(x_{T-1} | x_T) dx_{1:T-1} x0=argxmax∫p(x∣x1)p(x1∣x2)⋯p(xT−1∣xT)dx1:T−1

后者通过分解复杂分布为多个简单条件分布,更容易学习和采样。

2.5.2 实验对比

对比实验: 不同退火步数的影响(以图像生成为例)

方法 FID ↓ 推理时间 样本多样性
无退火(直接预测) 45.2 10ms
少步退火(T=10) 28.6 100ms 中等
标准退火(T=50) 12.3 500ms
多步退火(T=100) 10.8 1000ms
过度退火(T=1000) 10.5 10s 高(边际收益小)

结论:[^6]

  • 退火显著提升生成质量(FID降低70%)
  • 50-100步是效率与质量的平衡点
  • 退火步数太少会导致模式崩塌和伪影
  • 步数过多的边际收益递减

3. 模拟退火算法 (Simulated Annealing)

3.1 算法起源与动机

模拟退火 (Simulated Annealing, SA) 由 Kirkpatrick 等人于 1983 年提出[^7],专门用于解决组合优化问题

3.1.1 组合优化的挑战

考虑旅行商问题(TSP):给定 nnn 个城市,寻找最短遍历路径。

搜索空间: (n−1)!/2(n-1)!/2(n−1)!/2 种可能的路径(指数级)

局部搜索的困境:

  • 贪心算法易陷入局部最优
  • 梯度方法在离散空间不适用
  • 随机搜索效率极低

模拟退火的思路: 借鉴物理退火,在搜索过程中引入可控的随机性,允许暂时接受更差的解以逃离局部最优。

3.2 算法框架

3.2.1 基本流程
text 复制代码
输入: 初始解 s₀, 初始温度 T₀, 冷却速率 α, 终止温度 T_min
输出: 近似最优解 s*

1. 初始化: s = s₀, T = T₀
2. 当 T > T_min:
     对于 i = 1 到 L(马尔可夫链长度):
         a) 从 s 的邻域生成新解 s'
         b) 计算能量差 ΔE = E(s') - E(s)
         c) 如果 ΔE < 0:  接受 s' (更优)
            否则以概率 P = exp(-ΔE/T) 接受 s' (可能接受更差)
         d) 如果接受,更新 s = s'
     降温: T = α * T  (典型 α ∈ [0.8, 0.99])
3. 返回最佳解 s*
3.2.2 Metropolis 准则

接受概率公式 (Metropolis准则):

P(接受 s′)={1if E(s′)<E(s)exp⁡(−E(s′)−E(s)T)if E(s′)≥E(s) P(\text{接受 } s') = \begin{cases} 1 & \text{if } E(s') < E(s) \\ \exp\left(-\frac{E(s') - E(s)}{T}\right) & \text{if } E(s') \geq E(s) \end{cases} P(接受 s′)={1exp(−TE(s′)−E(s))if E(s′)<E(s)if E(s′)≥E(s)

温度的作用:

  • 高温 (TTT 大): P→1P \to 1P→1,几乎接受所有解(全局探索)
  • 低温 (TTT 小): P→0P \to 0P→0,只接受更优解(局部利用)
  • 退火过程: TTT 逐渐减小,从探索平滑过渡到收敛

3.3 关键要素

3.3.1 温度调度策略
策略 公式 特点
线性降温 Tk+1=Tk−ΔTT_{k+1} = T_k - \Delta TTk+1=Tk−ΔT 简单但可能过快
几何降温 Tk+1=αTkT_{k+1} = \alpha T_kTk+1=αTk 常用,平衡性好
对数降温 Tk=T0log⁡(1+k)T_k = \frac{T_0}{\log(1+k)}Tk=log(1+k)T0 理论保证全局最优但极慢
自适应 根据接受率动态调整 最灵活但难调参
3.3.2 邻域结构

对于不同问题,邻域定义不同[^8]:

  • TSP: 交换两个城市 / 2-opt翻转
  • 背包问题: 添加或删除一个物品
  • 图着色: 改变一个节点的颜色

类比: 扩散模型中的"邻域"是通过添加小量高斯噪声 N(0,σ2)\mathcal{N}(0, \sigma^2)N(0,σ2) 定义的。

3.4 算法示例:TSP求解

3.4.1 Python伪代码
python 复制代码
import numpy as np

def simulated_annealing_tsp(cities, T0=1000, alpha=0.95, T_min=0.01):
    """
    用模拟退火求解TSP
    
    Args:
        cities: (N, 2) 城市坐标
        T0: 初始温度
        alpha: 冷却速率
        T_min: 终止温度
    """
    N = len(cities)
    current_tour = np.random.permutation(N)  # 随机初始解
    current_energy = tour_length(cities, current_tour)
    
    best_tour = current_tour.copy()
    best_energy = current_energy
    
    T = T0
    iteration = 0
    
    while T > T_min:
        for _ in range(100 * N):  # 马尔可夫链长度
            # 生成邻域解(2-opt)
            i, j = np.random.choice(N, 2, replace=False)
            if i > j:
                i, j = j, i
            
            new_tour = current_tour.copy()
            new_tour[i:j+1] = new_tour[i:j+1][::-1]  # 翻转片段
            
            # 计算能量差
            new_energy = tour_length(cities, new_tour)
            delta_E = new_energy - current_energy
            
            # Metropolis准则
            if delta_E < 0 or np.random.rand() < np.exp(-delta_E / T):
                current_tour = new_tour
                current_energy = new_energy
                
                if current_energy < best_energy:
                    best_tour = current_tour.copy()
                    best_energy = current_energy
        
        # 降温
        T *= alpha
        iteration += 1
        
        if iteration % 10 == 0:
            print(f"Iter {iteration}, T={T:.2f}, Best={best_energy:.2f}")
    
    return best_tour, best_energy

def tour_length(cities, tour):
    """计算路径总长度"""
    total = 0
    for i in range(len(tour)):
        total += np.linalg.norm(cities[tour[i]] - cities[tour[(i+1) % len(tour)]])
    return total
3.4.2 温度演化实例

假设求解20城市TSP:

text 复制代码
初始化:
  T = 1000, 随机路径长度 = 5432

迭代过程:
  Iter 10,  T=599,  接受率=85%, Best=4521  [高温,大量探索]
  Iter 50,  T=277,  接受率=62%, Best=3845  [中温,平衡]
  Iter 100, T=81,   接受率=28%, Best=3102  [低温,精修]
  Iter 200, T=6.6,  接受率=3%,  Best=2987  [极低温,几乎贪心]
  
终止: T=0.01, 最终路径 = 2987(接近最优解2950)

对比无退火的贪心: 最优路径 = 3452(陷入局部最优,差15%)

3.5 理论保证

定理(Hajek 1988): [^9] 如果温度按照 T(k)≥ΔEmax⁡log⁡(1+k)T(k) \geq \frac{\Delta E_{\max}}{\log(1+k)}T(k)≥log(1+k)ΔEmax 降温,则模拟退火以概率1收敛到全局最优解。

实际应用: 对数调度太慢(需百万次迭代),工程上使用几何降温并接受次优解。


4. 两种退火的深层联系

4.1 数学统一:马尔可夫链蒙特卡罗(MCMC)

两种退火方法都基于马尔可夫链蒙特卡罗(MCMC) 框架:

方面 郎之万动力学(扩散模型) 模拟退火(组合优化)
目标 从分布 p(x)p(x)p(x) 采样 最小化函数 E(x)E(x)E(x)
状态空间 连续空间 Rd\mathbb{R}^dRd 离散空间(如排列)
转移核 q(x′∣x)=N(x+η∇log⁡p,σ2)q(x' \vert x) = \mathcal{N}(x + \eta \nabla \log p, \sigma^2)q(x′∣x)=N(x+η∇logp,σ2) q(x′∣x)q(x' \vert x)q(x′∣x) 由邻域定义
接受准则 总是接受(已含随机性) Metropolis准则
温度作用 控制噪声方差 σ2∝T\sigma^2 \propto Tσ2∝T 控制接受概率 P∝e−ΔE/TP \propto e^{-\Delta E/T}P∝e−ΔE/T
退火方式 噪声调度 βt\\{\beta_t\\}βt 温度调度 Tk\\{T_k\\}Tk

4.2 共同的物理基础

两者都源自统计力学的正则系综:

平衡态分布:
P(x)=1Z(T)exp⁡(−E(x)kBT) P(x) = \frac{1}{Z(T)} \exp\left(-\frac{E(x)}{k_B T}\right) P(x)=Z(T)1exp(−kBTE(x))

退火的目的: 通过降低温度 TTT,使系统从均匀分布(高熵)过渡到集中在低能态(低熵)。

能量-概率对应:[^10]

  • 扩散模型: E(x)=−log⁡pdata(x)E(x) = -\log p_{\text{data}}(x)E(x)=−logpdata(x),目标是采样高概率区域
  • 模拟退火: E(x)=f(x)E(x) = f(x)E(x)=f(x),目标是找到低能量(高适应度)解

4.3 差异与互补

4.3.1 本质区别
维度 扩散模型退火 模拟退火
任务类型 生成建模(采样) 优化搜索(最优化)
输出形式 分布的样本集合 单个最优解
学习方式 需要训练神经网络 无需训练,启发式规则
适用空间 高维连续(如图像) 离散组合(如路径)
可微性 依赖梯度信息 不需要梯度
4.3.2 互补性

组合应用场景:

  1. 神经网络结构搜索(NAS):

    • 用模拟退火搜索离散的网络架构空间
    • 用扩散模型采样连续的权重初始化
  2. 机器人路径规划:

    • 用扩散模型生成连续的轨迹分布
    • 用模拟退火优化离散的动作序列
  3. 分子设计:

    • 用模拟退火搜索分子图结构
    • 用扩散模型生成连续的原子坐标
  4. 图像编辑:

    • 用扩散模型生成图像内容
    • 用模拟退火优化离散的编辑操作序列

4.4 现代融合:梯度引导的模拟退火

近年来出现了将两者结合的方法[^11]:

例:SGLD(Stochastic Gradient Langevin Dynamics):

xt+1=xt−ηt∇E(xt)+2ηtTtϵt x_{t+1} = x_t - \eta_t \nabla E(x_t) + \sqrt{2\eta_t T_t} \epsilon_t xt+1=xt−ηt∇E(xt)+2ηtTt ϵt

  • 当 Tt=1T_t = 1Tt=1 且 ηt\eta_tηt 固定:标准MCMC采样
  • 当 Tt→0T_t \to 0Tt→0:退化为梯度下降(优化)
  • 当 TtT_tTt 按退火调度:兼顾探索与优化

相关推荐
AngelPP3 小时前
OpenClaw 架构深度解析:如何把 AI 助手搬到你的个人设备上
人工智能
宅小年3 小时前
Claude Code 换成了Kimi K2.5后,我再也回不去了
人工智能·ai编程·claude
九狼4 小时前
Flutter URL Scheme 跨平台跳转
人工智能·flutter·github
ZFSS4 小时前
Kimi Chat Completion API 申请及使用
前端·人工智能
天翼云开发者社区5 小时前
春节复工福利就位!天翼云息壤2500万Tokens免费送,全品类大模型一键畅玩!
人工智能·算力服务·息壤
知识浅谈5 小时前
教你如何用 Gemini 将课本图片一键转为精美 PPT
人工智能
Ray Liang5 小时前
被低估的量化版模型,小身材也能干大事
人工智能·ai·ai助手·mindx
shengjk17 小时前
NanoClaw 深度剖析:一个"AI 原生"架构的个人助手是如何运转的?
人工智能
西门老铁9 小时前
🦞OpenClaw 让 MacMini 脱销了,而我拿出了6年陈的安卓机
人工智能