离散图扩散模型中的转移公式推导

问题

原文Digress项目源码中直接给出了这一段(类似)

python 复制代码
    # 二值边的 t 步边际混合(对应 docstring 里的 Q_bar_t):
    # - clean=1 的边,以概率 alpha_bar_t 保持原值;否则以概率 (1-alpha_bar_t) 按边际采样
    # - clean=0 的边,只能来自"按边际采样"的那部分
    p_keep = alpha_bar_t + (1.0 - alpha_bar_t) * p_e
    p_flip = (1.0 - alpha_bar_t) * p_e

在理解上就是已有边就有两种转移状态(保持原状或者变成空边),但是空边只有一种转移状态(变成实边)。空边:为什么?这不公平!!!

开庭

为什么这里是这种情况呢?其实源自后续要求的目标是 P(Et=1)P(E_t =1)P(Et=1) 的概率分布是边际分布,请听我细细道来:

首先整体上设置的转移矩阵形式是这样的,这里假定边类别只有两种 也就是在有边、无边的状态间转移,nnn是节点个数:
Qt=aIn×n+(1−a)MM=[1−pepe⋮⋮1−pepe]n×2 Q_t = aI_{n \times n} + (1-a)M \qquad M = \begin{bmatrix} 1-p_e & p_e \\ \vdots & \vdots \\ 1-p_e & p_e \end{bmatrix}_{n \times 2} Qt=aIn×n+(1−a)MM= 1−pe⋮1−pepe⋮pe n×2

以上噪声强度也就是变化的概率,即以 aaa 的概率保持不变,1−a1-a1−a 的概率按边际分布采样; pep_epe 是期望最后数据集层面的实边密度(实边的密度,比如实边占了60%,那么这里就是0.6),令mmm是期望的边际概率密度向量 [P(Et=0),P(Et=1)]=[1−pe,pe][P(E_t=0),P(E_t=1)]=[1-p_e,p_e][P(Et=0),P(Et=1)]=[1−pe,pe],我们想让整体的边状态都符合期望也就是最终每条边的概率分布都是 mmm,所以确定了 MMM 的样子。

那么把上面的公式拆开:

1.原本为实边:

P(Et=1∣E0=1)=a+(1−a)pe P(E_t=1|E_0=1)=a+(1-a)p_e P(Et=1∣E0=1)=a+(1−a)pe

让最后的状态为实边的一种情况是保持不变的话就是概率 aaa,另一种情况如果变了的话还想让状态是实边就需要:变化的概率乘以最终实边的概率也就是 (1−a)∗pe(1-a)*p_e(1−a)∗pe,两者之和既是 P(Et=1∣E0=1)P(E_t=1|E_0=1)P(Et=1∣E0=1)

为了对称这里也可以得到实边最后变成空边的概率,但是这个没用,因为后面要的是实边的分布(但是也可以反向对应)
P(Et=0∣E0=1)=(1−a)(1−pe) P(E_t=0|E_0=1)=(1-a)(1-p_e) P(Et=0∣E0=1)=(1−a)(1−pe)

2.原本为空边

P(Et=1∣E0=0)=(1−a)pe P(E_t=1|E_0=0)=(1-a)p_e P(Et=1∣E0=0)=(1−a)pe

这里如果要让状态是实边那么,对原本是空的边只存在一种方法也就是按照边际分布采样并且选择实边(1−a)pe(1-a)p_e(1−a)pe

为了对称这里也可以得到空边保持不变的概率(后续不会用到,道理同上)
P(Et=0∣E0=0)=a+(1−a)(1−pe) P(E_t=0|E_0=0)=a+(1-a)(1-p_e) P(Et=0∣E0=0)=a+(1−a)(1−pe)

以上其实就足以回答为什么代码中要那样设置了。但是下面我们再推一步,验证这样可以符合我们的转移要求。

3.全概率公式

现在问题就变简单了,验证一下,我要求 P(Et=1)P(E_t=1)P(Et=1),全概率公式展开:
qt=P(Et=1)=P(E0=1)P(Et=1∣E0=1)+P(E0=0)P(Et=1∣E0=0)=q0[a+(1−a)pe]+(1−q0)(1−a)pe=aq0+(1−a)peq_t=P(E_t=1)=P(E_0=1)P(E_t=1|E_0=1)+P(E_0=0)P(E_t=1|E_0=0)=q_0[a+(1-a)p_e]+(1-q_0)(1-a)p_e=aq_0+(1-a)p_eqt=P(Et=1)=P(E0=1)P(Et=1∣E0=1)+P(E0=0)P(Et=1∣E0=0)=q0[a+(1−a)pe]+(1−q0)(1−a)pe=aq0+(1−a)pe

可以看到最后qt=aq0+(1−a)peq_t=aq_0+(1-a)p_eqt=aq0+(1−a)pe,这个时候就满足我们的需求了,因为:
a=1qt=q0完全保持原有边密度a=1\qquad q_t=q_0 完全保持原有边密度a=1qt=q0完全保持原有边密度a=0qt=pe完全是噪声分布(给定的边际分布)a=0\qquad q_t=p_e完全是噪声分布(给定的边际分布)a=0qt=pe完全是噪声分布(给定的边际分布)0<a<1qt=aq0+(1−a)pe0<a<1\qquad q_t=aq_0+(1-a)p_e0<a<1qt=aq0+(1−a)pe

也就是边密度是原始边密度和噪声边密度的凸组合,逐步向 pep_epe 靠拢。这个状态的实现和前面 QtQ_tQt 转移公式的形式相呼应。

注意这里Digress为了保证噪声偏得不是太远这里设定上是 q0=peq_0=p_eq0=pe 的也就是边密度全程是保持不变的,这确实意味着在边密度层面上"不用转换",但是:

  • 边的具体分布仍然会被扰动(因为噪声过程会随机翻转边)
  • 只是总体边密度不变

这里降低难度方便模型训练。

相关推荐
m0_466525292 小时前
绿盟科技发布2025年年报: 收入稳中有升,亏损大幅收窄,现金流持续为正
人工智能·科技
wayz112 小时前
Day 10:集成学习进阶(Boosting: AdaBoost, GBDT)
算法·机器学习·集成学习·boosting
墨染天姬2 小时前
【AI】图路由 AI 记忆引擎M-FLow
人工智能
nuoxin1142 小时前
CH6001FN/BW-富利威
网络·人工智能·嵌入式硬件·fpga开发·dsp开发
Omics Pro2 小时前
华大等NC|微生物多样性与抗菌物质发现
大数据·人工智能·深度学习·语言模型·excel
传说故事2 小时前
【论文阅读】Being-H0.7: A Latent World-Action Model from Egocentric Videos
论文阅读·人工智能·具身智能
葡萄城技术团队2 小时前
智慧表格(SpreadJS + AI):拥抱 Web 端对话式办公新时代
前端·人工智能
Jagger_2 小时前
Claudian 插件安装与 Claude Code 配置指南
人工智能
gsls2008082 小时前
常见AI编码助手
人工智能·ai编码