DDPM(Denoising Diffusion Probabilistic Models)
更详细解读可以参考(这几个视频看完基本对DDPM的原理就能够把握了)
李宏毅
大白话AI
b站公式推导1
b站公式推导2
基本过程
扩散模型受扩散现象的启发,通过逐步向图片中加入高斯噪声来模拟这种现象,并通过逆向过程从(随机)噪声中生成图片。
 添加噪声的两个条件:(1)整个过程的状态都服从马尔科夫性质(2)每一步加入的噪声变化都比较少,则变化过程可以近似为高斯分布。
前向过程
加入噪声的混合公式:
 将原始干净的图片x0通过此公式多次叠加噪声直到xT。
 可以用式子来表达前一时刻和后一时刻的关系:
 式中每一步的 
     
      
       
       
         ϵ 
        
       
      
        \epsilon 
       
      
    ϵ都是基于标准正太分布的重新采样的随机数。而且每一步的 
     
      
       
       
         β 
        
       
      
        \beta 
       
      
    β并不相同,从最开始某个接近0的数逐渐递增,到最后接近1,以模拟扩散过程的速度越来越快。即
 为简化推导,令 
     
      
       
        
        
          α 
         
        
          t 
         
        
       
         = 
        
       
         1 
        
       
         − 
        
        
        
          β 
         
        
          t 
         
        
       
      
        \alpha_t=1-\beta_t 
       
      
    αt=1−βt得到
 
      
       
        
         
         
           x 
          
         
           t 
          
         
        
          = 
         
         
          
          
            1 
           
          
            − 
           
           
           
             α 
            
           
             t 
            
           
          
         
        
          × 
         
         
         
           ϵ 
          
         
           t 
          
         
        
          + 
         
         
          
          
            α 
           
          
            t 
           
          
         
        
          × 
         
         
         
           x 
          
          
          
            t 
           
          
            − 
           
          
            1 
           
          
         
        
       
         x_t=\sqrt{1-\alpha_t}\times\epsilon_t+\sqrt{\alpha_t}\times x_{t-1} 
        
       
     xt=1−αt 
            ×ϵt+αt 
            ×xt−1
 则 
     
      
       
        
        
          x 
         
        
          t 
         
        
       
      
        x_t 
       
      
    xt和 
     
      
       
        
        
          x 
         
         
         
           t 
          
         
           − 
          
         
           2 
          
         
        
       
      
        x_{t-2} 
       
      
    xt−2的关系式:
 
      
       
        
         
         
           x 
          
         
           t 
          
         
        
          = 
         
         
          
           
           
             a 
            
           
             t 
            
           
          
            ( 
           
          
            1 
           
          
            − 
           
           
           
             a 
            
            
            
              t 
             
            
              − 
             
            
              1 
             
            
           
          
            ) 
           
          
         
         
         
           ϵ 
          
          
          
            t 
           
          
            − 
           
          
            1 
           
          
         
        
          + 
         
         
          
          
            1 
           
          
            − 
           
           
           
             a 
            
           
             t 
            
           
          
         
        
          × 
         
         
         
           ϵ 
          
         
           t 
          
         
        
          + 
         
         
          
           
           
             a 
            
           
             t 
            
           
           
           
             a 
            
            
            
              t 
             
            
              − 
             
            
              1 
             
            
           
          
         
        
          × 
         
         
         
           x 
          
          
          
            t 
           
          
            − 
           
          
            2 
           
          
         
        
       
         x_{t}=\sqrt{a_{t}(1-a_{t-1})}\epsilon_{t-1}+\sqrt{1-a_{t}}\times\epsilon_{t}+\sqrt{a_{t}a_{t-1}}\times x_{t-2} 
        
       
     xt=at(1−at−1) 
            ϵt−1+1−at 
            ×ϵt+atat−1 
            ×xt−2
 利用正态分布和重参数化技巧可以将两个单独采样的正太分布化为一个正太分布,即
 
      
       
        
         
         
           x 
          
         
           t 
          
         
        
          = 
         
         
          
          
            1 
           
          
            − 
           
           
           
             α 
            
           
             t 
            
           
           
           
             α 
            
            
            
              t 
             
            
              − 
             
            
              1 
             
            
           
          
         
        
          × 
         
        
          ϵ 
         
        
          + 
         
         
          
           
           
             α 
            
           
             t 
            
           
           
           
             α 
            
            
            
              t 
             
            
              − 
             
            
              1 
             
            
           
          
         
        
          × 
         
         
         
           x 
          
          
          
            t 
           
          
            − 
           
          
            2 
           
          
         
        
       
         x_t=\sqrt{1-\alpha_t\alpha_{t-1}}\times\epsilon+\sqrt{\alpha_t\alpha_{t-1}}\times x_{t-2} 
        
       
     xt=1−αtαt−1 
            ×ϵ+αtαt−1 
            ×xt−2
 同理,可以推断
 
      
       
        
         
         
           x 
          
         
           t 
          
         
        
          = 
         
         
          
          
            1 
           
          
            − 
           
           
            
            
              α 
             
            
              ‾ 
             
            
           
             t 
            
           
          
         
        
          × 
         
        
          ϵ 
         
        
          + 
         
         
          
           
           
             α 
            
           
             ‾ 
            
           
          
            t 
           
          
         
        
          × 
         
         
         
           x 
          
         
           0 
          
         
        
       
         x_t=\sqrt{1-\overline{\alpha}_t}\times\epsilon+\sqrt{\overline{\alpha}_t}\times x_0 
        
       
     xt=1−αt 
            ×ϵ+αt 
            ×x0
 其中,
 
      
       
        
         
          
          
            α 
           
          
            ‾ 
           
          
         
           t 
          
         
        
          = 
         
         
         
           a 
          
         
           t 
          
         
         
         
           a 
          
          
          
            t 
           
          
            − 
           
          
            1 
           
          
         
         
         
           a 
          
          
          
            t 
           
          
            − 
           
          
            2 
           
          
         
         
         
           a 
          
          
          
            t 
           
          
            − 
           
          
            3 
           
          
         
        
          . 
         
        
          . 
         
        
          . 
         
         
         
           a 
          
         
           2 
          
         
         
         
           a 
          
         
           1 
          
         
        
       
         \overline{\alpha}_t=a_ta_{t-1}a_{t-2}a_{t-3}...a_2a_1 
        
       
     αt=atat−1at−2at−3...a2a1
 论文里使用正太分布的公式表示:
 
      
       
        
        
          q 
         
        
          ( 
         
         
         
           x 
          
          
          
            1 
           
          
            : 
           
          
            T 
           
          
         
        
          ∣ 
         
         
         
           x 
          
         
           0 
          
         
        
          ) 
         
        
          : 
         
        
          = 
         
         
         
           ∏ 
          
          
          
            t 
           
          
            = 
           
          
            1 
           
          
         
           T 
          
         
        
          q 
         
        
          ( 
         
         
         
           x 
          
         
           t 
          
         
        
          ∣ 
         
         
         
           x 
          
          
          
            t 
           
          
            − 
           
          
            1 
           
          
         
        
          ) 
         
        
          , 
         
         
        
          q 
         
        
          ( 
         
         
         
           x 
          
         
           t 
          
         
        
          ∣ 
         
         
         
           x 
          
          
          
            t 
           
          
            − 
           
          
            1 
           
          
         
        
          ) 
         
        
          : 
         
        
          = 
         
        
          N 
         
        
          ( 
         
         
         
           x 
          
         
           t 
          
         
        
          ; 
         
         
          
          
            1 
           
          
            − 
           
           
           
             β 
            
           
             t 
            
           
          
         
         
         
           x 
          
          
          
            t 
           
          
            − 
           
          
            1 
           
          
         
        
          , 
         
         
         
           β 
          
         
           t 
          
         
        
          I 
         
        
          ) 
         
        
       
         q(\mathbf{x}_{1:T}|\mathbf{x}_{0}):=\prod_{t=1}^{T}q(\mathbf{x}_{t}|\mathbf{x}_{t-1}),\quad q(\mathbf{x}_{t}|\mathbf{x}_{t-1}):=\mathcal{N}(\mathbf{x}_{t};\sqrt{1-\beta_{t}}\mathbf{x}_{t-1},\beta_{t}\mathbf{I}) 
        
       
     q(x1:T∣x0):=t=1∏Tq(xt∣xt−1),q(xt∣xt−1):=N(xt;1−βt 
            xt−1,βtI)
 到最终 
     
      
       
        
        
          β 
         
        
          t 
         
        
       
      
        \beta_t 
       
      
    βt会趋于1,均值趋于0,方差趋于1,即最终的图像近似为高斯分布的随机噪声图像。
反向过程
由后一时刻的图片求解出前一时刻的图片,利用贝叶斯公式
 
      
       
        
        
          P 
         
        
          ( 
         
         
         
           x 
          
          
          
            t 
           
          
            − 
           
          
            1 
           
          
         
        
          ∣ 
         
         
         
           x 
          
         
           t 
          
         
        
          , 
         
         
         
           x 
          
         
           0 
          
         
        
          ) 
         
        
          = 
         
         
          
          
            P 
           
          
            ( 
           
           
           
             x 
            
           
             t 
            
           
          
            ∣ 
           
           
           
             x 
            
            
            
              t 
             
            
              − 
             
            
              1 
             
            
           
          
            , 
           
           
           
             x 
            
           
             0 
            
           
          
            ) 
           
          
            P 
           
          
            ( 
           
           
           
             x 
            
            
            
              t 
             
            
              − 
             
            
              1 
             
            
           
          
            ∣ 
           
           
           
             x 
            
           
             0 
            
           
          
            ) 
           
          
          
          
            P 
           
          
            ( 
           
           
           
             x 
            
           
             t 
            
           
          
            ∣ 
           
           
           
             x 
            
           
             0 
            
           
          
            ) 
           
          
         
        
       
         P(x_{t-1}|x_t,x_0)=\frac{P(x_t|x_{t-1},x_0)P(x_{t-1}|x_0)}{P(x_t|x_0)} 
        
       
     P(xt−1∣xt,x0)=P(xt∣x0)P(xt∣xt−1,x0)P(xt−1∣x0)
 化简得到
 
      
       
        
        
          P 
         
        
          ( 
         
         
         
           x 
          
          
          
            t 
           
          
            − 
           
          
            1 
           
          
         
        
          ∣ 
         
         
         
           x 
          
         
           t 
          
         
        
          , 
         
         
         
           x 
          
         
           0 
          
         
        
          ) 
         
        
          ∼ 
         
        
          N 
         
         
         
           ( 
          
          
           
            
             
             
               a 
              
             
               t 
              
             
            
           
             ( 
            
           
             1 
            
           
             − 
            
            
             
             
               a 
              
             
               ˉ 
              
             
             
             
               t 
              
             
               − 
              
             
               1 
              
             
            
           
             ) 
            
           
           
           
             1 
            
           
             − 
            
            
             
             
               a 
              
             
               ˉ 
              
             
            
              t 
             
            
           
          
          
          
            x 
           
          
            t 
           
          
         
           + 
          
          
           
            
             
             
               a 
              
              
              
                t 
               
              
                − 
               
              
                1 
               
              
             
            
           
             ( 
            
           
             1 
            
           
             − 
            
            
            
              a 
             
            
              t 
             
            
           
             ) 
            
           
           
           
             1 
            
           
             − 
            
            
             
             
               a 
              
             
               ˉ 
              
             
            
              t 
             
            
           
          
          
          
            x 
           
          
            0 
           
          
         
           , 
          
          
           
           
             ( 
            
            
             
              
               
               
                 1 
                
               
                 − 
                
                
                
                  a 
                 
                
                  t 
                 
                
               
              
              
               
               
                 1 
                
               
                 − 
                
                
                 
                 
                   a 
                  
                 
                   ˉ 
                  
                 
                 
                 
                   t 
                  
                 
                   − 
                  
                 
                   1 
                  
                 
                
               
              
             
             
              
              
                1 
               
              
                − 
               
               
                
                
                  a 
                 
                
                  ˉ 
                 
                
               
                 t 
                
               
              
             
            
           
             ) 
            
           
          
            2 
           
          
         
           ) 
          
         
        
       
         P(x_{t-1}|x_{t},x_{0})\sim N\left(\frac{\sqrt{a_{t}}(1-\bar{a}_{t-1})}{1-\bar{a}_{t}}x_{t}+\frac{\sqrt{a_{t-1}}(1-a_{t})}{1-\bar{a}_{t}}x_{0},\left(\frac{\sqrt{1-a_{t}}\sqrt{1-\bar{a}_{t-1}}}{\sqrt{1-\bar{a}_{t}}}\right)^{2}\right) 
        
       
     P(xt−1∣xt,x0)∼N(1−aˉtat 
                    (1−aˉt−1)xt+1−aˉtat−1 
                    (1−at)x0,(1−aˉt 
                      1−at 
                      1−aˉt−1 
                      )2)
 由于反向过程的 
     
      
       
        
        
          x 
         
        
          t 
         
        
       
      
        x_t 
       
      
    xt已知, 
     
      
       
        
        
          x 
         
        
          0 
         
        
       
      
        x_0 
       
      
    x0需要求解,故通过前向过程的关系式将 
     
      
       
        
        
          x 
         
        
          0 
         
        
       
      
        x_0 
       
      
    x0替换,得到
 
      
       
        
         
          
           
            
            
              P 
             
            
              ( 
             
             
             
               x 
              
              
              
                t 
               
              
                − 
               
              
                1 
               
              
             
            
              ∣ 
             
             
             
               x 
              
             
               t 
              
             
            
              , 
             
             
             
               x 
              
             
               0 
              
             
            
              ) 
             
            
           
          
          
           
            
             
            
              ∼ 
             
            
              N 
             
             
             
               ( 
              
              
               
                
                 
                 
                   a 
                  
                 
                   t 
                  
                 
                
               
                 ( 
                
               
                 1 
                
               
                 − 
                
                
                 
                 
                   a 
                  
                 
                   ˉ 
                  
                 
                 
                 
                   t 
                  
                 
                   − 
                  
                 
                   1 
                  
                 
                
               
                 ) 
                
               
               
               
                 1 
                
               
                 − 
                
                
                 
                 
                   a 
                  
                 
                   ˉ 
                  
                 
                
                  t 
                 
                
               
              
              
              
                x 
               
              
                t 
               
              
             
               + 
              
              
               
                
                 
                  
                  
                    a 
                   
                  
                    ˉ 
                   
                  
                  
                  
                    t 
                   
                  
                    − 
                   
                  
                    1 
                   
                  
                 
                
               
                 ( 
                
               
                 1 
                
               
                 − 
                
                
                
                  a 
                 
                
                  t 
                 
                
               
                 ) 
                
               
               
               
                 1 
                
               
                 − 
                
                
                 
                 
                   a 
                  
                 
                   ˉ 
                  
                 
                
                  t 
                 
                
               
              
             
            
           
          
         
         
          
           
            
           
          
          
           
            
             
            
              × 
             
             
              
               
               
                 x 
                
               
                 t 
                
               
              
                − 
               
               
                
                
                  1 
                 
                
                  − 
                 
                 
                  
                  
                    a 
                   
                  
                    ˉ 
                   
                  
                 
                   t 
                  
                 
                
               
              
                × 
               
              
                ϵ 
               
              
              
               
                
                
                  a 
                 
                
                  ˉ 
                 
                
               
                 t 
                
               
              
             
            
              , 
             
             
              
              
                ( 
               
               
                
                 
                  
                  
                    β 
                   
                  
                    t 
                   
                  
                 
                   ( 
                  
                 
                   1 
                  
                 
                   − 
                  
                  
                   
                   
                     a 
                    
                   
                     ˉ 
                    
                   
                   
                   
                     t 
                    
                   
                     − 
                    
                   
                     1 
                    
                   
                  
                 
                   ) 
                  
                 
                 
                 
                   1 
                  
                 
                   − 
                  
                  
                   
                   
                     a 
                    
                   
                     ˉ 
                    
                   
                  
                    t 
                   
                  
                 
                
               
              
                ) 
               
              
             
               2 
              
             
            
           
          
         
        
       
         \begin{aligned}P(x_{t-1}|x_{t},x_{0})&\sim N\left(\frac{\sqrt{a_{t}}(1-\bar{a}_{t-1})}{1-\bar{a}_{t}}x_{t}+\frac{\sqrt{\bar{a}_{t-1}}(1-a_{t})}{1-\bar{a}_{t}}\right.\\&\times\frac{x_{t}-\sqrt{1-\bar{a}_{t}}\times\epsilon}{\sqrt{\bar{a}_{t}}},\left(\sqrt{\frac{\beta_{t}(1-\bar{a}_{t-1})}{1-\bar{a}_{t}}}\right)^{2}\end{aligned} 
        
       
     P(xt−1∣xt,x0)∼N(1−aˉtat 
                            (1−aˉt−1)xt+1−aˉtaˉt−1 
                            (1−at)×aˉt 
                           xt−1−aˉt 
                           ×ϵ, 
                       1−aˉtβt(1−aˉt−1) 
                       
                       2
 其中的 
     
      
       
       
         ϵ 
        
       
      
        \epsilon 
       
      
    ϵ是 
     
      
       
        
        
          x 
         
        
          0 
         
        
       
      
        x_0 
       
      
    x0到任意时刻 
     
      
       
       
         t 
        
       
      
        t 
       
      
    t的图片 
     
      
       
        
        
          x 
         
        
          t 
         
        
       
      
        x_t 
       
      
    xt直接加噪的噪声,因此可以训练神经网络对输入 
     
      
       
        
        
          x 
         
        
          t 
         
        
       
      
        x_t 
       
      
    xt和步骤 
     
      
       
       
         t 
        
       
      
        t 
       
      
    t,输出估计的 
     
      
       
       
         ϵ 
        
       
      
        \epsilon 
       
      
    ϵ,从而求解出 
     
      
       
        
        
          x 
         
         
         
           t 
          
         
           − 
          
         
           1 
          
         
        
       
      
        x_{t-1} 
       
      
    xt−1,再将得到的 
     
      
       
        
        
          x 
         
         
         
           t 
          
         
           − 
          
         
           1 
          
         
        
       
      
        x_{t-1} 
       
      
    xt−1和 
     
      
       
       
         t 
        
       
         − 
        
       
         1 
        
       
      
        t-1 
       
      
    t−1输入神经网络得到 
     
      
       
        
        
          x 
         
         
         
           t 
          
         
           − 
          
         
           2 
          
         
        
       
      
        x_{t-2} 
       
      
    xt−2,从而一步步计算最终得到 
     
      
       
        
        
          x 
         
        
          0 
         
        
       
      
        x_0 
       
      
    x0。
 论文里提到反向过程可以看成如下公式:
 
      
       
        
         
         
           p 
          
         
           θ 
          
         
        
          ( 
         
         
         
           x 
          
          
          
            0 
           
          
            : 
           
          
            T 
           
          
         
        
          ) 
         
        
          : 
         
        
          = 
         
        
          p 
         
        
          ( 
         
         
         
           x 
          
         
           T 
          
         
        
          ) 
         
         
         
           ∏ 
          
          
          
            t 
           
          
            = 
           
          
            1 
           
          
         
           T 
          
         
         
         
           p 
          
         
           θ 
          
         
        
          ( 
         
         
         
           x 
          
          
          
            t 
           
          
            − 
           
          
            1 
           
          
         
        
          ∣ 
         
         
         
           x 
          
         
           t 
          
         
        
          ) 
         
        
          , 
         
         
         
         
           p 
          
         
           θ 
          
         
        
          ( 
         
         
         
           x 
          
          
          
            t 
           
          
            − 
           
          
            1 
           
          
         
        
          ∣ 
         
         
         
           x 
          
         
           t 
          
         
        
          ) 
         
        
          : 
         
        
          = 
         
        
          N 
         
        
          ( 
         
         
         
           x 
          
          
          
            t 
           
          
            − 
           
          
            1 
           
          
         
        
          ; 
         
         
         
           μ 
          
         
           θ 
          
         
        
          ( 
         
         
         
           x 
          
         
           t 
          
         
        
          , 
         
        
          t 
         
        
          ) 
         
        
          , 
         
         
         
           Σ 
          
         
           θ 
          
         
        
          ( 
         
         
         
           x 
          
         
           t 
          
         
        
          , 
         
        
          t 
         
        
          ) 
         
        
          ) 
         
        
       
         p_\theta(\mathbf{x}_{0:T}):=p(\mathbf{x}_T)\prod_{t=1}^Tp_\theta(\mathbf{x}_{t-1}|\mathbf{x}_t),\quad p_\theta(\mathbf{x}_{t-1}|\mathbf{x}_t):=\mathcal{N}(\mathbf{x}_{t-1};\boldsymbol{\mu}_\theta(\mathbf{x}_t,t),\boldsymbol{\Sigma}_\theta(\mathbf{x}_t,t)) 
        
       
     pθ(x0:T):=p(xT)t=1∏Tpθ(xt−1∣xt),pθ(xt−1∣xt):=N(xt−1;μθ(xt,t),Σθ(xt,t))
 使用神经网络来估计参数。
训练过程Loss推导
模型的输出为
 
      
       
        
        
          p 
         
        
          ( 
         
         
         
           x 
          
          
          
            ( 
           
          
            0 
           
          
            ⋯ 
           
          
            T 
           
          
            ) 
           
          
         
        
          ) 
         
        
          = 
         
        
          p 
         
        
          ( 
         
         
         
           x 
          
          
          
            ( 
           
          
            T 
           
          
            ) 
           
          
         
        
          ) 
         
         
         
           ∏ 
          
          
          
            t 
           
          
            = 
           
          
            1 
           
          
         
           T 
          
         
        
          p 
         
        
          ( 
         
         
         
           x 
          
          
          
            ( 
           
          
            t 
           
          
            − 
           
          
            1 
           
          
            ) 
           
          
         
        
          ∣ 
         
         
         
           x 
          
          
          
            ( 
           
          
            t 
           
          
            ) 
           
          
         
        
          ) 
         
        
       
         p\big(\mathbf{x}^{(0\cdots T)}\big)=p\big(\mathbf{x}^{(T)}\big)\prod_{t=1}^Tp\big(\mathbf{x}^{(t-1)}|\mathbf{x}^{(t)}\big) 
        
       
     p(x(0⋯T))=p(x(T))t=1∏Tp(x(t−1)∣x(t))
 由于我们只对最终的输出 
     
      
       
        
        
          x 
         
        
          0 
         
        
       
      
        x_0 
       
      
    x0感兴趣,因此对联合概率密度求积分得到 
     
      
       
        
        
          x 
         
        
          0 
         
        
       
      
        x_0 
       
      
    x0的边缘分布
 
      
       
        
         
          
           
            
            
              p 
             
            
              ( 
             
             
             
               x 
              
              
              
                ( 
               
              
                0 
               
              
                ) 
               
              
             
            
              ) 
             
            
              = 
             
            
              ∫ 
             
            
              d 
             
             
             
               x 
              
              
              
                ( 
               
              
                1 
               
              
                ⋯ 
               
              
                T 
               
              
                ) 
               
              
             
            
              p 
             
            
              ( 
             
             
             
               x 
              
              
              
                ( 
               
              
                0 
               
              
                ⋯ 
               
              
                T 
               
              
                ) 
               
              
             
            
              ) 
             
             
              
              
                q 
               
              
                ( 
               
               
               
                 x 
                
                
                
                  ( 
                 
                
                  1 
                 
                
                  ⋯ 
                 
                
                  T 
                 
                
                  ) 
                 
                
               
              
                ∣ 
               
               
               
                 x 
                
                
                
                  ( 
                 
                
                  0 
                 
                
                  ) 
                 
                
               
              
                ) 
               
              
              
              
                q 
               
              
                ( 
               
               
               
                 x 
                
                
                
                  ( 
                 
                
                  1 
                 
                
                  ⋯ 
                 
                
                  T 
                 
                
                  ) 
                 
                
               
              
                ∣ 
               
               
               
                 x 
                
                
                
                  ( 
                 
                
                  0 
                 
                
                  ) 
                 
                
               
              
                ) 
               
              
             
            
           
          
         
         
          
           
            
            
              = 
             
            
              ∫ 
             
            
              d 
             
             
             
               x 
              
              
              
                ( 
               
              
                1 
               
              
                ⋯ 
               
              
                T 
               
              
                ) 
               
              
             
            
              q 
             
            
              ( 
             
             
             
               x 
              
              
              
                ( 
               
              
                1 
               
              
                ⋯ 
               
              
                T 
               
              
                ) 
               
              
             
            
              ∣ 
             
             
             
               x 
              
              
              
                ( 
               
              
                0 
               
              
                ) 
               
              
             
            
              ) 
             
             
              
              
                p 
               
              
                ( 
               
               
               
                 x 
                
                
                
                  ( 
                 
                
                  0 
                 
                
                  ⋯ 
                 
                
                  T 
                 
                
                  ) 
                 
                
               
              
                ) 
               
              
              
              
                q 
               
              
                ( 
               
               
               
                 x 
                
                
                
                  ( 
                 
                
                  1 
                 
                
                  ⋯ 
                 
                
                  T 
                 
                
                  ) 
                 
                
               
              
                ∣ 
               
               
               
                 x 
                
                
                
                  ( 
                 
                
                  0 
                 
                
                  ) 
                 
                
               
              
                ) 
               
              
             
            
           
          
         
         
          
           
            
            
              = 
             
            
              ∫ 
             
            
              d 
             
             
             
               x 
              
              
              
                ( 
               
              
                1 
               
              
                ⋯ 
               
              
                T 
               
              
                ) 
               
              
             
            
              q 
             
            
              ( 
             
             
             
               x 
              
              
              
                ( 
               
              
                1 
               
              
                ⋯ 
               
              
                T 
               
              
                ) 
               
              
             
            
              ∣ 
             
             
             
               x 
              
              
              
                ( 
               
              
                0 
               
              
                ) 
               
              
             
            
              ) 
             
            
              ⋅ 
             
            
              p 
             
            
              ( 
             
             
             
               x 
              
              
              
                ( 
               
              
                T 
               
              
                ) 
               
              
             
            
              ) 
             
             
             
               ∏ 
              
              
              
                t 
               
              
                = 
               
              
                1 
               
              
             
               T 
              
             
             
              
              
                p 
               
              
                ( 
               
               
               
                 x 
                
                
                
                  ( 
                 
                
                  t 
                 
                
                  − 
                 
                
                  1 
                 
                
                  ) 
                 
                
               
              
                ∣ 
               
               
               
                 x 
                
                
                
                  ( 
                 
                
                  t 
                 
                
                  ) 
                 
                
               
              
                ) 
               
              
              
              
                q 
               
              
                ( 
               
               
               
                 x 
                
                
                
                  ( 
                 
                
                  t 
                 
                
                  ) 
                 
                
               
              
                ∣ 
               
               
               
                 x 
                
                
                
                  ( 
                 
                
                  t 
                 
                
                  − 
                 
                
                  1 
                 
                
                  ) 
                 
                
               
              
                ) 
               
              
             
            
              . 
             
            
           
          
         
        
       
         \begin{gathered} p\big(\mathbf{x}^{(0)}\big)=\int d\mathbf{x}^{(1\cdots T)}p\big(\mathbf{x}^{(0\cdots T)}\big)\frac{q\big(\mathbf{x}^{(1\cdots T)}|\mathbf{x}^{(0)}\big)}{q\big(\mathbf{x}^{(1\cdots T)}|\mathbf{x}^{(0)}\big)} \\ =\int d\mathbf{x}^{(1\cdots T)}q\big(\mathbf{x}^{(1\cdots T)}|\mathbf{x}^{(0)}\big)\frac{p\big(\mathbf{x}^{(0\cdots T)}\big)}{q\big(\mathbf{x}^{(1\cdots T)}|\mathbf{x}^{(0)}\big)} \\ =\int d\mathbf{x}^{(1\cdots T)}q\big(\mathbf{x}^{(1\cdots T)}|\mathbf{x}^{(0)}\big)\cdot p\big(\mathbf{x}^{(T)}\big)\prod_{t=1}^{T}\frac{p\big(\mathbf{x}^{(t-1)}|\mathbf{x}^{(t)}\big)}{q\big(\mathbf{x}^{(t)}|\mathbf{x}^{(t-1)}\big)}. \end{gathered} 
        
       
     p(x(0))=∫dx(1⋯T)p(x(0⋯T))q(x(1⋯T)∣x(0))q(x(1⋯T)∣x(0))=∫dx(1⋯T)q(x(1⋯T)∣x(0))q(x(1⋯T)∣x(0))p(x(0⋯T))=∫dx(1⋯T)q(x(1⋯T)∣x(0))⋅p(x(T))t=1∏Tq(x(t)∣x(t−1))p(x(t−1)∣x(t)).
 则negative log likelihood:
 
      
       
        
        
          − 
         
        
          L 
         
        
          = 
         
        
          d 
         
         
         
           x 
          
          
          
            ( 
           
          
            0 
           
          
            ) 
           
          
         
        
          q 
         
        
          ( 
         
         
         
           x 
          
          
          
            ( 
           
          
            0 
           
          
            ) 
           
          
         
        
          ) 
         
         
         
           l 
          
         
           o 
          
         
           g 
          
         
        
          ∫ 
         
        
          p 
         
        
          ( 
         
         
         
           x 
          
          
          
            ( 
           
          
            0 
           
          
            ) 
           
          
         
        
          ) 
         
        
       
         -L=d\mathbf{x}^{(0)}q\big(\mathbf{x}^{(0)}\big)\mathrm{log}\int p\big(\mathbf{x}^{(0)}\big) 
        
       
     −L=dx(0)q(x(0))log∫p(x(0))
 可化为
 
      
       
        
         
         
           E 
          
         
           q 
          
         
        
          [ 
         
        
          − 
         
        
          log 
         
        
           
         
         
          
           
           
             p 
            
           
             θ 
            
           
          
            ( 
           
           
           
             x 
            
            
            
              0 
             
            
              : 
             
            
              T 
             
            
           
          
            ) 
           
          
          
          
            q 
           
          
            ( 
           
           
           
             x 
            
            
            
              1 
             
            
              : 
             
            
              T 
             
            
           
          
            ∣ 
           
           
           
             x 
            
           
             0 
            
           
          
            ) 
           
          
         
        
          ] 
         
        
          = 
         
         
         
           E 
          
         
           q 
          
         
        
          [ 
         
        
          − 
         
        
          log 
         
        
           
         
        
          p 
         
        
          ( 
         
         
         
           x 
          
         
           T 
          
         
        
          ) 
         
        
          − 
         
         
         
           ∑ 
          
          
          
            t 
           
          
            ≥ 
           
          
            1 
           
          
         
        
          log 
         
        
           
         
         
          
           
           
             p 
            
           
             θ 
            
           
          
            ( 
           
           
           
             x 
            
            
            
              t 
             
            
              − 
             
            
              1 
             
            
           
          
            ∣ 
           
           
           
             x 
            
           
             t 
            
           
          
            ) 
           
          
          
          
            q 
           
          
            ( 
           
           
           
             x 
            
           
             t 
            
           
          
            ∣ 
           
           
           
             x 
            
            
            
              t 
             
            
              − 
             
            
              1 
             
            
           
          
            ) 
           
          
         
        
          ] 
         
        
       
         \mathbb{E}_q[-\log\frac{p_\theta(\mathbf{x}_{0:T})}{q(\mathbf{x}_{1:T}|\mathbf{x}_0)}]=\mathbb{E}_q[-\log p(\mathbf{x}_T)-\sum_{t\geq1}\log\frac{p_\theta(\mathbf{x}_{t-1}|\mathbf{x}_t)}{q(\mathbf{x}_t|\mathbf{x}_{t-1})}] 
        
       
     Eq[−logq(x1:T∣x0)pθ(x0:T)]=Eq[−logp(xT)−t≥1∑logq(xt∣xt−1)pθ(xt−1∣xt)]
 继续转化为论文里的公式
 关于最后一步化为 
     
      
       
        
        
          D 
         
         
         
           K 
          
         
           L 
          
         
        
       
      
        D_{KL} 
       
      
    DKL,即KL散度。
可以查看对KL散度简短的理解介绍
KL散度
其中, 
     
      
       
        
        
          L 
         
        
          T 
         
        
       
      
        L_T 
       
      
    LT项的 
     
      
       
       
         p 
        
       
         ( 
        
        
        
          x 
         
        
          T 
         
        
       
         ) 
        
       
      
        p(x_T) 
       
      
    p(xT)是已知的要变化的图像,近似为高斯噪声图像, 
     
      
       
       
         q 
        
       
         ( 
        
        
        
          x 
         
        
          t 
         
        
       
         ∣ 
        
        
        
          x 
         
        
          0 
         
        
       
         ) 
        
       
      
        q(\mathbf{x}_t|\mathbf{x}_0) 
       
      
    q(xt∣x0)在前向过程中推导过了,在前向过程中除了随机采样,其他的所有量都是已知的,因此 
     
      
       
        
        
          L 
         
        
          T 
         
        
       
      
        L_T 
       
      
    LT就是一个已知的正态分布进行随机采样,故不需要训练。
 而 
     
      
       
        
        
          L 
         
         
         
           t 
          
         
           − 
          
         
           1 
          
         
        
       
      
        L_{t-1} 
       
      
    Lt−1项的 
     
      
       
       
         q 
        
       
         ( 
        
        
        
          x 
         
         
         
           t 
          
         
           − 
          
         
           1 
          
         
        
       
         ∣ 
        
        
        
          x 
         
        
          t 
         
        
       
         , 
        
        
        
          x 
         
        
          0 
         
        
       
         ) 
        
       
      
        q(\mathbf{x}_{t-1}|\mathbf{x}_{t},\mathbf{x}_{0}) 
       
      
    q(xt−1∣xt,x0)是在反向过程中推导的已知的后验概率,而后一部分就是神经网络需要找到的分布
 
      
       
        
         
         
           p 
          
         
           θ 
          
         
        
          ( 
         
         
         
           x 
          
          
          
            t 
           
          
            − 
           
          
            1 
           
          
         
        
          ∣ 
         
         
         
           x 
          
         
           t 
          
         
        
          ) 
         
        
          : 
         
        
          = 
         
        
          N 
         
        
          ( 
         
         
         
           x 
          
          
          
            t 
           
          
            − 
           
          
            1 
           
          
         
        
          ; 
         
         
         
           μ 
          
         
           θ 
          
         
        
          ( 
         
         
         
           x 
          
         
           t 
          
         
        
          , 
         
        
          t 
         
        
          ) 
         
        
          , 
         
         
         
           Σ 
          
         
           θ 
          
         
        
          ( 
         
         
         
           x 
          
         
           t 
          
         
        
          , 
         
        
          t 
         
        
          ) 
         
        
          ) 
         
        
       
         p_{\theta}(\mathbf{x}_{t-1}|\mathbf{x}_{t}){:}=\mathcal{N}(\mathbf{x}_{t-1};\boldsymbol{\mu}_{\theta}(\mathbf{x}_{t},t),\boldsymbol{\Sigma}_{\theta}(\mathbf{x}_{t},t)) 
        
       
     pθ(xt−1∣xt):=N(xt−1;μθ(xt,t),Σθ(xt,t))
 根据两个高斯分布的KLD公式:
 
      
       
        
        
          log 
         
        
           
         
         
          
          
            σ 
           
          
            2 
           
          
          
          
            σ 
           
          
            1 
           
          
         
        
          + 
         
         
          
           
           
             σ 
            
           
             1 
            
           
             2 
            
           
          
            + 
           
          
            ( 
           
           
           
             μ 
            
           
             1 
            
           
          
            − 
           
           
           
             μ 
            
           
             2 
            
           
           
           
             ) 
            
           
             2 
            
           
          
          
          
            2 
           
           
           
             σ 
            
           
             2 
            
           
             2 
            
           
          
         
        
          − 
         
         
         
           1 
          
         
           2 
          
         
        
       
         \log\frac{\sigma_2}{\sigma_1}+\frac{\sigma_1^2+(\mu_1-\mu_2)^2}{2\sigma_2^2}-\frac12 
        
       
     logσ1σ2+2σ22σ12+(μ1−μ2)2−21
 由于两个时刻的高斯分布的方差相差无几,故 
     
      
       
       
         log 
        
       
          
        
        
         
         
           σ 
          
         
           2 
          
         
         
         
           σ 
          
         
           1 
          
         
        
       
      
        \log\frac{\sigma_2}{\sigma_1} 
       
      
    logσ1σ2可视为一个常数,因此的目标就是最小化两个均值差
 
      
       
        
         
         
           L 
          
          
          
            t 
           
          
            − 
           
          
            1 
           
          
         
        
          = 
         
         
         
           E 
          
         
           q 
          
         
         
         
           [ 
          
          
          
            1 
           
           
           
             2 
            
            
            
              σ 
             
            
              t 
             
            
              2 
             
            
           
          
         
           ∥ 
          
          
           
           
             μ 
            
           
             ~ 
            
           
          
            t 
           
          
         
           ( 
          
          
          
            x 
           
          
            t 
           
          
         
           , 
          
          
          
            x 
           
          
            0 
           
          
         
           ) 
          
         
           − 
          
          
          
            μ 
           
          
            θ 
           
          
         
           ( 
          
          
          
            x 
           
          
            t 
           
          
         
           , 
          
         
           t 
          
         
           ) 
          
          
          
            ∥ 
           
          
            2 
           
          
         
           ] 
          
         
        
          + 
         
        
          C 
         
        
       
         L_{t-1}=\mathbb{E}_q\left[\frac{1}{2\sigma_t^2}\|\widetilde{\boldsymbol{\mu}}_t(\mathbf{x}_t,\mathbf{x}_0)-\boldsymbol{\mu}_\theta(\mathbf{x}_t,t)\|^2\right]+C 
        
       
     Lt−1=Eq[2σt21∥μ 
              t(xt,x0)−μθ(xt,t)∥2]+C
 同理,替换 
     
      
       
        
        
          x 
         
        
          0 
         
        
       
      
        x_0 
       
      
    x0得到
 
      
       
        
         
          
           
            
             
             
               L 
              
              
              
                t 
               
              
                − 
               
              
                1 
               
              
             
            
              − 
             
            
              C 
             
            
           
          
          
           
            
             
            
              = 
             
             
             
               E 
              
              
               
               
                 x 
                
               
                 0 
                
               
              
                , 
               
              
                ϵ 
               
              
             
             
             
               [ 
              
              
              
                1 
               
               
               
                 2 
                
                
                
                  σ 
                 
                
                  t 
                 
                
                  2 
                 
                
               
              
             
               ∥ 
              
              
               
               
                 μ 
                
               
                 ~ 
                
               
              
                t 
               
              
              
              
                ( 
               
               
               
                 x 
                
               
                 t 
                
               
              
                ( 
               
               
               
                 x 
                
               
                 0 
                
               
              
                , 
               
              
                ϵ 
               
              
                ) 
               
              
                , 
               
               
               
                 1 
                
                
                 
                 
                   α 
                  
                 
                
                  t 
                 
                
               
              
                ( 
               
               
               
                 x 
                
               
                 t 
                
               
              
                ( 
               
               
               
                 x 
                
               
                 0 
                
               
              
                , 
               
              
                ϵ 
               
              
                ) 
               
              
                − 
               
               
                
                
                  1 
                 
                
                  − 
                 
                 
                  
                  
                    α 
                   
                  
                    ‾ 
                   
                  
                 
                   t 
                  
                 
                
               
              
                ϵ 
               
              
                ) 
               
              
                ) 
               
              
             
               − 
              
              
               
                
                
                  μ 
                 
                
                  θ 
                 
                
               
                 ( 
                
                
                
                  x 
                 
                
                  t 
                 
                
               
                 ( 
                
                
                
                  x 
                 
                
                  0 
                 
                
               
                 , 
                
               
                 ϵ 
                
               
                 ) 
                
               
                 , 
                
               
                 t 
                
               
                 ) 
                
               
              
                ‾ 
               
              
              
              
                ∥ 
               
              
                2 
               
              
             
               ] 
              
             
            
           
          
         
         
          
           
            
           
          
          
           
            
             
            
              = 
             
             
             
               E 
              
              
               
               
                 x 
                
               
                 0 
                
               
              
                , 
               
              
                ϵ 
               
              
             
             
             
               [ 
              
              
              
                1 
               
               
               
                 2 
                
                
                
                  σ 
                 
                
                  t 
                 
                
                  2 
                 
                
               
              
             
               ∥ 
              
              
              
                1 
               
               
                
                
                  α 
                 
                
                  t 
                 
                
               
              
              
              
                ( 
               
               
               
                 x 
                
               
                 t 
                
               
              
                ( 
               
               
               
                 x 
                
               
                 0 
                
               
              
                , 
               
              
                ϵ 
               
              
                ) 
               
              
                − 
               
               
                
                
                  β 
                 
                
                  t 
                 
                
                
                 
                 
                   1 
                  
                 
                   − 
                  
                  
                   
                   
                     α 
                    
                   
                     ˉ 
                    
                   
                  
                    t 
                   
                  
                 
                
               
              
                ϵ 
               
              
                ) 
               
              
             
               − 
              
              
              
                μ 
               
              
                θ 
               
              
             
               ( 
              
              
              
                x 
               
              
                t 
               
              
             
               ( 
              
              
              
                x 
               
              
                0 
               
              
             
               , 
              
             
               ϵ 
              
             
               ) 
              
             
               , 
              
             
               t 
              
             
               ) 
              
              
              
                ∥ 
               
              
                2 
               
              
             
               ] 
              
             
            
           
          
         
        
       
         \begin{aligned}L_{t-1}-C&=\mathbb{E}_{\mathbf{x}_{0},\boldsymbol{\epsilon}}\left[\frac{1}{2\sigma_{t}^{2}}\|\widetilde{\boldsymbol{\mu}}_{t}\left(\mathbf{x}_{t}(\mathbf{x}_{0},\boldsymbol{\epsilon}),\frac{1}{\sqrt{\boldsymbol{\alpha}}_{t}}\big(\mathbf{x}_{t}(\mathbf{x}_{0},\boldsymbol{\epsilon})-\sqrt{1-\overline{\alpha}_{t}}\boldsymbol{\epsilon}\big)\right)-\underline{\boldsymbol{\mu}_{\theta}(\mathbf{x}_{t}(\mathbf{x}_{0},\boldsymbol{\epsilon}),t)}\|^{2}\right]\\&=\mathbb{E}_{\mathbf{x}_{0},\boldsymbol{\epsilon}}\left[\frac{1}{2\sigma_{t}^{2}}\|\frac{1}{\sqrt{\alpha_{t}}}\left(\mathbf{x}_{t}(\mathbf{x}_{0},\boldsymbol{\epsilon})-\frac{\beta_{t}}{\sqrt{1-\bar{\alpha}_{t}}}\boldsymbol{\epsilon}\right)-\boldsymbol{\mu}_{\theta}(\mathbf{x}_{t}(\mathbf{x}_{0},\boldsymbol{\epsilon}),t)\|^{2}\right]\end{aligned} 
        
       
     Lt−1−C=Ex0,ϵ[2σt21∥μ 
                      t(xt(x0,ϵ),α 
                              t1(xt(x0,ϵ)−1−αt 
                      ϵ))−μθ(xt(x0,ϵ),t)∥2]=Ex0,ϵ[2σt21∥αt 
                            1(xt(x0,ϵ)−1−αˉt 
                             βtϵ)−μθ(xt(x0,ϵ),t)∥2]
 再将系数比值简化化为1,得到最核心的最小化目标:
 
      
       
        
         
         
           L 
          
          
          
            s 
           
          
            i 
           
          
            m 
           
          
            p 
           
          
            l 
           
          
            e 
           
          
         
        
          ( 
         
        
          θ 
         
        
          ) 
         
        
          : 
         
        
          = 
         
         
         
           E 
          
          
          
            t 
           
          
            , 
           
           
           
             x 
            
           
             0 
            
           
          
            , 
           
          
            ϵ 
           
          
         
        
          [ 
         
        
          ∥ 
         
        
          ϵ 
         
        
          − 
         
         
         
           ϵ 
          
         
           θ 
          
         
        
          ( 
         
         
          
           
           
             α 
            
           
             ‾ 
            
           
          
            t 
           
          
         
         
         
           x 
          
         
           0 
          
         
        
          + 
         
         
          
          
            1 
           
          
            − 
           
           
            
            
              α 
             
            
              ‾ 
             
            
           
             t 
            
           
          
         
        
          ϵ 
         
        
          , 
         
        
          t 
         
        
          ) 
         
         
         
           ∥ 
          
         
           2 
          
         
        
          ] 
         
        
       
         L_{\mathrm{simple}}(\theta){:}=\mathbb{E}_{t,\mathbf{x}_{0},\boldsymbol{\epsilon}}\big[\|\boldsymbol{\epsilon}-\boldsymbol{\epsilon}_{\theta}(\sqrt{\overline{\alpha}_{t}}\mathbf{x}_{0}+\sqrt{1-\overline{\alpha}_{t}}\boldsymbol{\epsilon},t)\|^{2}\big] 
        
       
     Lsimple(θ):=Et,x0,ϵ[∥ϵ−ϵθ(αt 
            x0+1−αt 
            ϵ,t)∥2]
 因此,DDPM的核心就是模拟预测输入图像的noise。
 而对于第三项 
     
      
       
        
        
          L 
         
        
          0 
         
        
       
      
        L_0 
       
      
    L0按如下公式进行离散化处理
 对于此处的边界认为从 
     
      
       
        
        
          x 
         
        
          0 
         
        
       
      
        x_0 
       
      
    x0到 
     
      
       
        
        
          x 
         
        
          1 
         
        
       
      
        x_1 
       
      
    x1和从 
     
      
       
        
        
          x 
         
        
          1 
         
        
       
      
        x_1 
       
      
    x1到 
     
      
       
        
        
          x 
         
        
          0 
         
        
       
      
        x_0 
       
      
    x0是完全相同的,实际上也可以将 
     
      
       
        
        
          x 
         
        
          1 
         
        
       
      
        x_1 
       
      
    x1直接当作最后的输出了。(CVPR2024有篇论文Tackling the Singularities at the Endpoints of Time Intervals in Diffusion Models针对 
     
      
       
        
        
          x 
         
        
          1 
         
        
       
      
        x_1 
       
      
    x1到 
     
      
       
        
        
          x 
         
        
          0 
         
        
       
      
        x_0 
       
      
    x0处进行处理从而解决了扩散模型生成纯白和纯黑的问题)
神经网络训练和采样过程
训练过程
采样过程生成图片
 进行采样时加入增加随机性,方差对结果影响不大。
相关论文和代码下载
有时候论文网站arXiv.org打开比较慢,已经将相关论文和代码上传到网盘,需要的可以自取
链接: https://pan.baidu.com/s/1J1h8R4KyY7k6NgS2t7YOZg?pwd=3ss8
总结