公司网站可以用个人备案吗,搜索引擎网络推广公司上海,建网站选哪个,我是做颗粒在什么网站上参考
https://arxiv.org/pdf/2010.02502 一、背景与动机
去噪扩散隐式模型#xff08;DDIM#xff09; 是对DDPM的改进#xff0c;旨在加速采样过程同时保持生成质量。DDPM虽然生成效果优异#xff0c;但其采样需迭代数百至数千次#xff0c;效率较低。DDIM通过以下关键…参考
https://arxiv.org/pdf/2010.02502 一、背景与动机
去噪扩散隐式模型DDIM 是对DDPM的改进旨在加速采样过程同时保持生成质量。DDPM虽然生成效果优异但其采样需迭代数百至数千次效率较低。DDIM通过以下关键创新解决该问题
非马尔可夫反向过程打破严格的马尔可夫链假设允许跳步采样。确定性生成路径通过设定参数σ0实现确定性采样减少随机性带来的不确定性。兼容性使用与DDPM相同的训练模型无需重新训练。 二、DDIM与DDPM的核心区别
特性DDPMDDIM反向过程严格马尔可夫链非马尔可夫允许跳跃式采样采样速度慢需完整迭代所有时间步快可跳过中间步如50步代替1000步随机性控制固定方差调度βₜ可调参数σₜσ0时为确定性采样训练目标需完整训练噪声预测模型直接复用DDPM的预训练模型 三、数学推导与关键公式
1. 前向过程的一致性
DDIM沿用DDPM的前向扩散过程定义任意时刻( x_t )可表示为 x t α ˉ t x 0 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, \mathbf{I}) xtαˉt x01−αˉt ϵ,ϵ∼N(0,I) 其中 α ˉ t ∏ i 1 t α i \bar{\alpha}_t \prod_{i1}^t \alpha_i αˉt∏i1tαi, α t 1 − β t \alpha_t 1 - \beta_t αt1−βt。
2. 反向过程的重新参数化
DDIM将反向过程定义为非马尔可夫链允许从任意时间步( t )直接推断( x_{t-Δ} )Δ为跳跃步长。其核心公式为 x t − Δ α ˉ t − Δ ( x t − 1 − α ˉ t ϵ θ ( x t , t ) α ˉ t ) ⏟ 预测的 x 0 1 − α ˉ t − Δ − σ t 2 ⋅ ϵ θ ( x t , t ) σ t z x_{t-Δ} \sqrt{\bar{\alpha}_{t-Δ}} \underbrace{\left( \frac{x_t - \sqrt{1 - \bar{\alpha}_t} \epsilon_\theta(x_t, t)}{\sqrt{\bar{\alpha}_t}} \right)}_{\text{预测的 } x_0} \sqrt{1 - \bar{\alpha}_{t-Δ} - \sigma_t^2} \cdot \epsilon_\theta(x_t, t) \sigma_t z xt−Δαˉt−Δ 预测的 x0 (αˉt xt−1−αˉt ϵθ(xt,t))1−αˉt−Δ−σt2 ⋅ϵθ(xt,t)σtz
第一项基于当前 x t x_t xt和预测噪声 ϵ θ \epsilon_\theta ϵθ估计的原始数据 x 0 x_0 x0。第二项沿预测噪声方向的确定性更新。第三项可控的随机噪声项 z ∼ N ( 0 , I ) z \sim \mathcal{N}(0, \mathbf{I}) z∼N(0,I)。
3. 参数σₜ的作用
σₜ0完全确定性采样DDIM的标准设定生成结果唯一。σₜ√[(1−αₜ₋₁)/(1−αₜ)] · √(1−αₜ/αₜ₋₁)恢复DDPM的采样过程。 四、DDIM采样算法步骤 输入 预训练噪声预测模型 ϵ θ \epsilon_\theta ϵθ总时间步 T T T子序列步数 S S S如 S 50 S50 S50方差调度参数 { α t } \{\alpha_t\} {αt}随机性控制参数 σ t \sigma_t σt 生成时间步子序列 选择递减的子序列 { τ 1 , τ 2 , . . . , τ S } \{\tau_1, \tau_2, ..., \tau_S\} {τ1,τ2,...,τS}例如均匀间隔或余弦调度。 初始化采样初始噪声 x T ∼ N ( 0 , I ) x_T \sim \mathcal{N}(0, \mathbf{I}) xT∼N(0,I)。 迭代去噪从 τ S \tau_S τS到 τ 1 \tau_1 τ1 预测噪声 ϵ ϵ θ ( x τ s , τ s ) \epsilon \epsilon_\theta(x_{\tau_s}, \tau_s) ϵϵθ(xτs,τs)估计原始数据 x ^ 0 x τ s − 1 − α ˉ τ s ϵ α ˉ τ s \hat{x}_0 \frac{x_{\tau_s} - \sqrt{1 - \bar{\alpha}_{\tau_s}} \epsilon}{\sqrt{\bar{\alpha}_{\tau_s}}} x^0αˉτs xτs−1−αˉτs ϵ计算下一步状态 x τ s − 1 α ˉ τ s − 1 x ^ 0 1 − α ˉ τ s − 1 − σ τ s 2 ⋅ ϵ σ τ s z x_{\tau_{s-1}} \sqrt{\bar{\alpha}_{\tau_{s-1}}} \hat{x}_0 \sqrt{1 - \bar{\alpha}_{\tau_{s-1}} - \sigma_{\tau_s}^2} \cdot \epsilon \sigma_{\tau_s} z xτs−1αˉτs−1 x^01−αˉτs−1−στs2 ⋅ϵστsz 当 σ τ s 0 \sigma_{\tau_s}0 στs0时最后一项消失变为确定性更新。 输出 x 0 x_0 x0为生成的数据。 五、伪代码示例
def ddim_sample(model, T, S, alphas_bar, sigmas):# 生成时间步子序列如从T到0每隔k步取一次tau np.linspace(T, 0, S1, dtypeint) # 示例线性间隔x torch.randn_like(data) # x_T ~ N(0, I)for s in range(S, 0, -1):t_current tau[s]t_prev tau[s-1]# 预测噪声epsilon model(x, t_current)# 估计x0x0_hat (x - np.sqrt(1 - alphas_bar[t_current]) * epsilon) / np.sqrt(alphas_bar[t_current])# 计算系数coeff1 np.sqrt(alphas_bar[t_prev])coeff2 np.sqrt(1 - alphas_bar[t_prev] - sigmas[t_current]**2)# 更新xx coeff1 * x0_hat coeff2 * epsilon sigmas[t_current] * torch.randn_like(x)return x