Structured Denoising Diffusion Models in Discrete State-Spaces

Austin J., Johnson D. D., Ho J., Tarlow D. and van den Berg R. Structured denoising diffusion models in discrete state-spaces. In Advances in Neural Information Processing Systems (NIPS), 2021.

DPM 在离散空间上的探讨.

符号说明

  • forward process: q(x1:T|x0)=t=1Tq(xt|xt1),x0q(x0);
  • reverse process: pθ(x0:T)=p(xT)t=1Tpθ(xt1|xt).
  • 这里向量 x 都表示行向量.

Motivation

  • DDPM 已经在图像生成领域取得了巨大成功, 它分为上述的前向和后向过程, 并通过如下损失进行优化:

    (1)Lvb=Eq(x0)[DKL[q(xT|x0p(xT))]LT+t=2TEq(xt|x0)[DKL[q(xt1|xt,x0)pθ(xt1|xt)]]Lt1Eq(x1|x0)[logpθ(x0|x1)].]

  • 之前的扩散模型主要研究连续空间的情形 (故而通常采用比较好采样的高斯分布), 那么如何把 DPM 推广到离散空间中呢.

  • 首先, 合适的前向扩散过程需要满足:

    1. q(xt|x0) 对任意的时间戳 t 的采样都是容易的;
    2. q(xt1|xt,x0) 最好是有容易求解的显示表达, 这样有利于求解 Lt1.

基于转移概率矩阵的 D3PM

  • 假设离散空间中有 K 个元素, 记为 1,2,,K, 则对于任意的时间戳 t 的状态 xt 都可以取遍这些元素. 我们知道, DPM 通常假设前向以及反向过程都是满足马氏性的, 而马氏性通常可以用转移概率矩阵 Q 来描述.

  • QtRK×K, [Qt]ij=q(xt=j|xt1=i), 则

    q(xt=j|xt1=i)=[0,0,,0i1,1,0,,0]Qt[0,0,,0j1,1,0,,0]T.

  • 不妨假设 xtR1×K 为一 one-hot 向量 (注意和之前的定义区分), 即 [0,0,,0j1,1,0,,0], 则,

    q(xt|xt1)=xt1QtxtTCat(xt;p=xt1Qt).

  • 进而注意到

    q(xt|x0)=x1:t1k=1tq(xk|xk=1)=x1:t1k=1txk1QkxkT=x1:t1x0Q1x1Txk1QkxkTxt1QtxtT=x0Q1(x1x1Tx1)(xk1xk1Txk1)Qk(xkxkTxk)(xt1xt1Txt1)QtxtT=x0Q1IQ2IQkIIQtxtT=x0Q1Q2QkQtQ¯txtT=x0Q¯txtTCat(xt;p=x0Q¯t).

  • 以及

    q(xt1|xt,x0)=q(xt|xt1,x0)q(xt1|x0)q(xt|x0)=q(xt|xt1)q(xt1|x0)q(xt|x0)=xt1QtxtTx0Q¯t1xt1Tx0Q¯txtT=(xtQtTxt1T)(x0Q¯t1xt1T)x0Q¯txtT=(xtQtT)(x0Q¯t1)(xt1T)x0Q¯txtT(?)Cat(xt1;p=(xtQtT)(x0Q¯t1)x0Q¯txtT).

    需要注意的是, (?) 处成立完全是因为 xt 是 one-hot 的向量, 否则一般情况下是不成立的.

  • 现在, 我们以及搭建好了基于转移概率矩阵的一个整体框架, 下面我们就需要讨论如何设计 Qt 使得 Q¯t 是易求得. 此外, Qt 的行和应当为 1, 且 Q¯t,t+ 应当是收敛的.

转移概率矩阵的设计

  • Q 是 double stochastic 的时候, 即 行和, 列和 均为1, 此时倘若 Qt=Q, 则该分布必收敛到均匀分布:

    [πQ]j=i=1K1K[Q]ij=1K=πj.

接下来, 我们具体介绍几种设计.

Uniform diffusion

  • 构造:

    [Qt]ij={1K1Kβt if j=i,1Kβt if ji.

  • 用人话说就是, 知道了上一个状态 xt1, xt 仍为 xt1 的概率为 1K1Kβt, 否则它等概率地成为其它状态.

  • 矩阵表示为

    Qt=(1βt)I+βt1T1/K.

  • 容易发现:

    Q¯t=QtQt1Q1=k=1t(1βk)I+(1k=1t(1βk))1T1/K.

Diffusion with an absorbing state

  • 构造

    [Qt]ij={1 if j=i=m1βt if j=im,βt if j=m,im.

    这里 m 是一个特殊的吸收态, 比如语言模型里的 [mask].

  • 用人话说就是,

    1. 如果 xt1 已经是 m 了, 那么 xt 必为 m;
    2. 如果 xt1 不为 m, 则 xtβt 的概率成为 m, 否则仍为 xt1.
  • 矩阵表示为

    Qt=(1βt)I+βt1Tem,

    这里 em 表示第 m 个元素为 1, 其余均为 0 的行向量.

  • 显然, 这不是一个 double stochastic 的转移矩阵.

  • 容易发现:

    Q¯t=QtQt1Q1=k=1t(1βk)I+(1k=1t(1βk))1Tem.

注: 作者还介绍了如何把高斯离散化, 以及利用 embedding 的相似度来刻画转移矩阵的方法, 这里不作介绍了.

注: 作者对于 noise schedule 的一些见解非常有趣, 但是说实话, 我只能看懂一半, 写在这里就不懂装懂了.

代码

[official]

posted @   馒头and花卷  阅读(1565)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示