+16

Giới thiệu về Diffusion model (series 2)

1. Variable Diffusion model (VDM)

1.1 Lịch sử hình thành

Những ý tưởng để hình thành nên mô hình diffussion model đã có từ rất lâu về trước nhưng đến tận năm 2021 chúng mới được phát triển mạnh mẽ .Trong bài viết này mình sẽ nói chung nguyên tắc cơ bản của diffussion_model . Diffussion model được biết đến sớm nhất về ý tưởng này là dựa trên paper năm 2015 Deep Unsupervised Learning using Nonequilibrium Thermodynamics by Jascha Sohl-Dickstein et al. from Stanford University and UC Berkeley đã có từ 7 năm trước tức đã có từ rất rất lâu . Mọi ý tưởng chính bắt đầu từ nhiệt động lực học ( thermodynamics) , nếu bạn chưa biết nhiệt động lực học thì mình sẽ lấy một ví dụ đơn giản như sau:

Giả sử ta pha một tách cà phê với nước nóng quá trình trộn cà phê với nước đến khi cà phê hòa tan hoàn toàn đây được gọi là khuyếc tán thuận . Sau đó ta sẽ cố gắng tách cà phê ra khỏi nước nóng đây được gọi là khuyếc tán ngược . Tuy nhiên đây chỉ là câu nói mang tính chất giải trí vì hầu như ta không thể tách cà phê ra khỏi nước sau khi đã hòa tan hoàn toàn được nữa.

Mọi chuyện về ý tưởng khuyến tán vẫn tiếp tục sau 5 năm vắng bóng tất cả nguyên nhân là do sự áp đảo của GAN đã khiến mô hình khuyếc tán bị lu mờ trong những năm tháng qua đi . Mãi cho đến năm 2020 by Jonathan Ho et al., also from UC Berkeley với tên gọi Denoising Diffusion Probabilistic Models (DDPM) tuy nhiên chúng chưa đủ mạnh mẽ để có thể thực sự đánh bại GAN . Sau một năm qua đi 2021 Improved Denoising Diffusion Probabilistic Models by OpenAI researchers Alex Nichol and Prafulla Dhariwal đã tạo nên một cú hích lớn để từ đó ta có các mô hình text2img nổi tiếng như bây giờ . Họ nhận thấy rằng diffussion model dễ đào tạo hơn GAN , hình ảnh đa dạng hơn và chất lượng ảnh cao hơn . Nhược điểm là chúng tồn rất nhiều thời gian để tạo ảnh do vấn đề T( Gaussian tiêu chuẩn ) số bước cần phải lớn như trong ví dụ trên đến khi cà phê thực sự hòa tan với nước.

1.2 Bắt đầu với khuyến tán thuận và khuyến tán ngược

Tiếp túc từ series (1) chúng ta sẽ bắt đầu tìm hiểu thêm về quá trình khuyến tán dữ liệu .Như chúng ta đã biết về mô hình phân cấp VAE(Hierar-chical Variational Autoencode) thì chúng có ba điểm chính.

1 . Layer tiềm ẩn zz bằng với layer đầu vào xx hay như trên hình tức là số nút ẩn zz bằng số nút đầu vào xx

2 . Cấu trúc các layer tiềm ẩn zz ở mỗi bước TT không được học mà chỉ quanh quanh đầu ra trước đó tức là ví dụ z2{z_{2}} thì chúng chỉ hoạt đông dựa trên gaussion z3{z_{3}}

3 . Các tham số của layer zz sẽ thay đổi theo thời gian TT , TT là gaussian tiêu chuẩn

Miêu tả lại công thức quá trình decoder từ series 1:

p(x0,T)=p(xT)t=1Tpθ(xt1xt)p ( x _ { 0 , T } ) = p ( x _ { T } ) \prod _ { t = 1 } ^ { T } p _ { \theta } ( x _ { t - 1 } | x _ { t } )

Hình 1:Mô tả quá trình hierarchical variational autoencoders

image.png

Hình 2: Mô tả quá trìn diffussion model

image.png

Dựa trên hình 2 ta sẽ xem xét điểm thứ nhất với một số điều chỉnh thay vì zz là layer tiềm ẩn ở đây ta sẽ thay đổi xtx_{t} là layer tiềm ẩn ở mội bước thời gian TT với t=0t=0 là ảnh input và t=[1,T]t= [1,T] là các layer tiềm ẩn , vì vậy ta có thể viết lại chúng thành.

1.2.1 Forward process (Khuyến tán thuận )

(1)

q(x1:Tx0)=t=1Tq(xtxt1)q ( x _ { 1 : T } | x _ { 0 } ) = \prod _ { t = 1 } ^ { T } q ( x _ { t } | x _ { t - 1 } )

Tiếp theo xét điểm thứ hai diffussion model . Chúng là một gaussian tuyến tính với trung bình và phương sai đôi có thể được đặt như hyparameter . Ở diffussion model chúng tôi sẽ học tham số ở mỗi bước thời gian T luôn với giá trị trung bình .

Đặt αt=1βt{\alpha _ { t } = 1 - \beta _ { t }} trong đó βt{\beta _ { t }} với t=[1,T]t= [1,T] là một hyparameter sau đó được học thành parameter chính là lịch trình phương sai , nếu chúng hoạt động tốt chắc chắn xTx_{T} sẽ là một gaussian tiêu chuẩn với phương sai là 1 và trung bình là 0 .

Suy ra trung bình tổng thể:

(2)

μt(xt)=αtxt1\mu _ { t } ( x _ { t } ) = \sqrt { \alpha _ { t } } x _ { t - 1 }

Phương sai:

(3)

Σt(xt)=(1αt)I\Sigma _ { t } ( x _ { t } ) = ( 1 - \alpha _ { t } ) I

Quá trình encoder hay khuyến tán thuận ở mỗi layer tiềm ẩn luôn bảo toàn phương sai ( phương sai không hề thay đổi ở mỗi zt{z_{t}}) . Từ đó ta có thể nhận thấy rằng tỉ lệ noise ở mỗi bước t thời gian là như nhau và α{\alpha} giống như β{\beta} đều là một hyparameter sau đó đươc học thành parameter với các parameter thay đổi theo thời gian tt. Từ giờ ta sẽ sử dụng αt{\alpha_{t}} thay vì βt{\beta_{t}} , nhiều hướng dẫn hay bài báo để sử dụng β{\beta} chúng vẫn là như nhau đều là lịch trình phương sai thay đổi theo thời gian tt.

Gói gọn từ phương trình (1) (2) (3) ta được

(4)

q(xtxt1)=N(xt;αtxt1,(1αt)I)q ( x _ { t } | x _ { t - 1 } ) = N ( x _ { t } ; \sqrt { \alpha _ { t } } x _ { t - 1 } , ( 1 - \alpha _ { t } ) I )

Tuy nhiên mặc dù ta đã biết đầu vào ảnh xt{x_{t}} với t=0t=0 là ảnh gốc tuy nhiên việc tính xt{x_{t}} với t=[1,T]t=[1,T] khi noise ảnh đầu vào chưa có thông tin . Điều này mình sẽ giải thích một chút . Ta có thể tượng tượng từ hình ảnh 2 và phương trình 4 giả sử rằng x1{x_{1}} sẽ là ảnh đầu vào và x0{x_{0}} kết hợp với một gaussian với trung bình sẽ tạo ra ảnh x1{x_{1}} noise. Dựa trên câu nói trên ta biết được rằng.

(5)

xtN(xt1,1)xt=Xt1+N(0,1)x _ { t } \sim \N ( x _ { t - 1 } , 1 ) \Leftrightarrow x _ { t } = X _ { t - 1 } + N ( 0 , 1 )

ta biết rằng phân phối gaussian được viết là:

N(x;μ,σ)=1σ2πexp(12(xμσ)2)\N ( x ; \mu , \sigma ) = \frac { 1 } { \sigma \sqrt { 2 } \pi } \exp ( - \frac { 1 } { 2 } ( \frac { x - \mu } { \sigma } ) ^ { 2 } )

Chứng minh công thức (5) với tích phân luật xác suất toàn phần:

image.png

Nghĩa là nếu xt1...{x_{t-1}... } sẽ tạo thành một không gian liên tục . Khi đó xtx_t sẽ là:

pXt(xt)=p(xtxt1)p(xt1)dxt1p _ { X _ { t } } ( x _ { t } ) = \int p ( x _ { t } | x _ { t - 1 } ) p ( x _ { t - 1 } ) d x _ { t - 1 }

Sau đó, chúng tôi thay thế phân phối có điều kiện bằng dạng Gaussian đã biết của nó

=N(xt;xt1,1)p(xt1)dxt1= \int N ( x _ { t } ; x _ { t - 1 } , 1 ) p ( x _ { t - 1 } ) d x _ { t - 1 }

Bây giờ chúng ta sẽ xắp xếp lại quy hoạch chúng như một phân phối gaussian chuẩn

=N(xtxt1;0,1)p(xt1)dxt1= \int N ( x _ { t } - x _ { t - 1 } ; 0 , 1 ) p ( x _ { t - 1 } ) d x _ { t - 1 }

Áp dụng định nghĩa của tích chập ta được

=(N(0,1)pXt1)(xt)= \left ( \N \left ( 0 , 1 \right ) * p _ { X _ { t - 1 } } \right ) \left ( x _ { t } \right )

Ghép vào định luật xác xuất toàn phần ta được:

pXt(xt)=(N(0,1)pXt1)(xt)p _ { X _ { t } } ( x _ { t } ) = ( \N ( 0 , 1 ) * p _ { X _ { t - 1 } } ) ( x _ { t } )

Chia 2 vế đi Pxt{P_{x_{t}}} rút gọn:

(6)

Xt=X(0,1)+Xt1X _ { t } = X ( 0 , 1 ) + X _ { t - 1 }

Từ (6) ta chứng minh được điều rằng là phân phối ở mỗi bước thời gian tt sẽ thông qua gausian trung bình và phân phối t1t-1 thời gian trước đó như đã nói ở điểm thứ 2 .Tuy nhiên lưu ý một điều rằng là mình chưa sử dụng các tham số α{\alpha} lịch trình phương sai . Vì đây chỉ là một lời giải thích ngắn gọn trước khi chúng ta kết hợp các trung bình và gaussian có α{\alpha}. Đây chính là nguyên nhân tại sao có reparameter trick.Điều này cực kỳ quan trọng

1.2.2 Reverse process(Khuyến tán ngược)

Xét điểm thứ 3 Các tham số của layer zz sẽ thay đổi theo thời gian TT (TT là gaussian tiêu chuẩn) của HVAE nếu chuyển sang diffussion thì αt{\alpha_{t}} cập nhật lịch trình phương sai và p(xT){p_(x_{T})} vẫn là một gaussian tiêu chuẩn và được viết lại theo toán học thành

(7)

p(x0:T)=p(xT)t=1Tpθ(xt1xt)p ( x _ { 0 : T } ) = p ( x _ { T } ) \prod _ { t = 1 } ^ { T } p _ { \theta } ( x _ { t - 1 } | x _ { t } )

khi đó

p(xT)=N(xT;0,I)p ( x _ { T } ) = N ( x _ { T } ; 0 , I )

Lưu ý rằng các phân phối bộ encoder q(xtxt1)q (x_{t} | x_{t-1}) của chúng tôi không còn được tham số hóa bởi ϕ{\phi} nữa, vì chúng hoàn toàn được mô hình hóa dưới dạng Gaussian với các parameter trung bình và phương sai xác định tại mỗi bước thời gian. Do đó, trong một VDM, chúng ta chỉ quan tâm đến việc học các điều kiện pθ(xt1xt){p_{\theta} (x_{t-1} | x_{t})} , để chúng ta có thể mô phỏng dữ liệu mới. Sau khi tối ưu hóa VDM, quy trình lấy mẫu đơn giản như lấy mẫu nhiễu Gaussian từ p(xT){p(x_{T})} và chạy lặp đi lặp lại các bước chuyển đổi làm giảm pθ(xt1xt){p_{\theta} (x_{t-1} | x_{t})} cho T bước để tạo ra một x0{x_{0}} mới. Giống như HVAE ta sẽ tối ưu hóa ELBO để cập nhật được các tham số θ{\theta} tốt nhất , mọi quy tắc thức hiện giống y như series 1 đã viết.

(8)

logp(x)=logp(x0:T)dx1:T\log p ( x ) = \log \int p ( x _ { 0 : T } ) d x _ { 1 : T }

(9)

=logp(x0:T)q(x1:Tx0)q(x1:Tx0)dx1:T= \log \int \frac { p ( x _ { 0 : T } ) q ( x _ { 1 : T } | x _ { 0 } ) } { q ( x _ { 1 : T } | x _ { 0 } ) } d x _ { 1 : T }

Định nghĩa kỳ vọng (10)

=logEq(x1:Tx0)[p(x0:T)q(x1:Tx0)]= \log E _ { q ( x _ { 1 : T } | x _ { 0 } ) } [ \frac { p ( x _ { 0 : T } ) } { q ( x _ { 1 : T } | x _ { 0 } ) } ]

BDT jense (11)

Eq(x1:Tx0)[logp(x0:T)q(x1:Tx0)]\geq \operatorname { E } _ { q ( x _ { 1 : T } | x _ { 0 } ) } [ \log \frac { p ( x _ { 0 : T } ) } { q ( x _ { 1 : T } | x _ { 0 } ) } ]

Áp dụng phương trình số (1) và (7) ta được (12)

= Eq(x1:Tx0)[logp(xT)t=1Tpθ(xt1xt)t=1Tq(xtxt1)]= \ E _ { q ( x _ { 1 : T } | x _ { 0 } ) } [ \log \frac { p ( x _ { T } ) \prod _ { t = 1 } ^ { T } p _ { \theta } ( x _ { t - 1 } | x _ { t } ) } { \prod _ { t = 1 } ^ { T } q ( x _ { t } | x _ { t - 1 } ) }]

Tách tiếp (13)

= Eq(x1:Tx0)[logp(xT)pθ(x0x1)t=2Tpθ(xt1xt)q(xTxT1)t=1T1q(xtxt1)]= \ E _ { q ( x _ { 1 : T } | x _ { 0 } ) } [ \log \frac { p ( x _ { T } ){p_{\theta}(x_{0}|x_{1})} \prod _ { t = 2 } ^ { T } p _ { \theta } ( x _ { t - 1 } | x _ { t } ) } { q(x_{T}|x_{T-1})\prod _ { t = 1 } ^ { T-1 } q ( x _ { t } | x _ { t - 1 } ) }]

Tách tiếp (14)

= Eq(x1:Tx0)[logp(xT)pθ(x0x1)t=1T1pθ(xtxt+1)q(xTxT1)t=1T1q(xtxt1)]= \ E _ { q ( x _ { 1 : T } | x _ { 0 } ) } [ \log\frac { p ( x _ { T } ) p _ { \theta } ( x _ { 0 } | x _ { 1 } ) \prod _ { t = 1 } ^ { T - 1 } p _ { \theta } ( x _ { t } | x _ { t + 1 } ) } { q ( x _ { T } | x _ { T - 1 } ) \prod _ { t = 1 } ^ { T - 1 } q ( x _ { t } | x _ { t - 1 } ) }]

(15)

= Eq(x1:Tx0)[logp(xT)pθ(x0x1)q(xTxT1)]+ Eq(x1:Tx0)[logt=1T1pθ(xtxt+1)q(xtxt1)]= \ E _ { q ( x _ { 1 : T } | x _ { 0 } ) } [ \log\frac { p ( x _ { T } ) p _ { \theta } ( x _ { 0 } | x _ { 1 } ) } { q ( x _ { T } | x _ { T - 1 } ) }] + \ E _ { q ( x _ { 1 : T } | x _ { 0 } ) } [ \log\prod _ { t = 1 } ^ { T - 1 } \frac { p _ { \theta } ( x _ { t } | x _ { t + 1 } ) } { q ( x _ { t } | x _ { t - 1 } ) }]

(16)

=Eq(x1:Tx0)[logpθ(x0x1)]+Eq(x1:Tx0)[logp(xT)q(xTxT1)]+Eq(x1:Tx0)[t=1T1logp0(xtxt+1)q(xtxt1)]= E _ { q \left ( x _ { 1 :T} | x _ { 0 } \right ) } \left [ \log p _ { \theta } \left ( x _ { 0 } | x _ { 1 } \right ) \right ]+E _ { q ( x _ { 1 : T } | x _ { 0 } ) } [ \log \frac { p ( x _ { T } ) } { q ( x _ { T } | x _ { T - 1 } ) } ] + E _ { q ( x _ { 1 : T} | x _ { 0 } ) } [ \sum _ { t = 1 } ^ { T - 1 } \log \frac { p _ { 0 } ( x _ { t } | x _ { t + 1 } ) } { q ( x _ { t } | x _ { t - 1 } ) } ]

(17)

=Eq(x1:Tx0)[logpθ(x0x1)]+Eq(x1:Tx0)[logp(xT)q(xTxT1)]+t=1T1Eq(x1:Tx0)[logp0(xtxt+1)q(xtxt1)]= E _ { q \left ( x _ { 1 :T} | x _ { 0 } \right ) } \left [ \log p _ { \theta } \left ( x _ { 0 } | x _ { 1 } \right ) \right ]+E _ { q ( x _ { 1 : T } | x _ { 0 } ) } [ \log \frac { p ( x _ { T } ) } { q ( x _ { T } | x _ { T - 1 } ) } ] + \sum _ { t = 1 } ^ { T - 1 } E _ { q ( x _ { 1 : T} | x _ { 0 } ) } [ \log \frac { p _ { 0 } ( x _ { t } | x _ { t + 1 } ) } { q ( x _ { t } | x _ { t - 1 } ) } ]

(18)

=Eq(x1x0)[logpθ(x0x1)]+Eq(xT1,xTx0)[logp(xT)q(xTxT1)]+t=1T1Eq(xt1,xt,xt+1x0)[logpθ(xtxt+1)q(xtxt1)]= E _ { q ( x _ { 1 } | x _ { 0 } ) } [ \log p _ { \theta } ( x _ { 0 } | x _ { 1 } ) ] + E _ { q ( x _ { T - 1 } , x _ { T } | x _ { 0 } ) } [ \log \frac { p ( x _ { T } ) } { q ( x _ { T } | x _ { T - 1 } ) } ] + \sum _ { t = 1 } ^ { T - 1 } E _ { q \left ( x _ { t - 1 } , x _ { t } , x _ { t + 1 } | x _ { 0 } \right ) } \left [ \log \frac { p _ { \theta } \left ( x _ { t } | x _ { t + 1 } \right ) } { q \left ( x _ { t } | x _ { t - 1 } \right ) } \right ]

Trong phương trình 18 có 3 đoạn tuy nhiên hãy để ý rằng Eq(x1:Tx0){E_{q(x_{1:T}|x_{0})}} đã được thay đổi tùy theo các đoạn khác nhau sẽ có một chút thác mắc với bạn đọc , vậy nên tôi sẽ giải theo ý hiểu của bản thân rằng là. Giả sử đoạn 1.

Eq(x1x0)[logpθ(x0x1)]E _ { q ( x _ { 1 } | x _ { 0 } ) } [ \log p _ { \theta } ( x _ { 0 } | x _ { 1 } ) ]

Do ta nhận thấy rằng pθ(x0x1){p_{\theta}(x_{0}|x_{1})} không tồn tại trong encoder khuyến tán thuận q(x0x1){q(x_{0}|x_{1})} tuy nhiên để ý rằng trong hình 2 q(x1x0){q(x_{1}|x_{0})}p(x0x1){p(x_{0}|x_{1})} chắc chắn rằng chúng phải thỏa mãn với điều kiện bằng nhau(tương đương với nhau) nên ở đây mới có q(x0x1){q(x_{0}|x_{1})}. Hơn nữa x0{x_{0}} là giá trị ảnh đầu vào tức luôn luôn có điều kiện x0{x_{0}} mọi yếu tố của các bước thời gian tt khi khuyến tán thuận luôn có điều kiện quan trọng ảnh đầu vào , x0{x_{0}} luôn luôn liên kết liên tiếp với các ảnh noise theo thời gian t.Tương tự với các đoạn còn lai cũng giải thích như vậy.

1.3 Loss Function

(19) Từ phương trình (18)

image.png

Ta sẽ giải thích 3 đoạn của phương trình (19) như sau:

  • Đoạn 1: reconstruction term :dự đoán log xác suất của ảnh dựa trên ảnh noise đầu tiên
  • Đoạn 2 : prior matching term : Mặc định bằng 0 do không có parameter khoảng cách phân phối khuyến tán thuận qT{q_{T}} cuối cùng và khuyến tán ngược pT{p_{T}} đầu tiên và do cả hai chắc chắn là một gaussian tiêu chuẩn nên chắc chắn là bằng 0
  • Đoạn 3: consistency term : Khoảng cách giữa các layer tiềm ẩn khi khuyến tán thuận và các layer tiềm ẩn khi khuyến tán ngược chúng phải cố gắng tối ưu hóa sao cho chúng bằng nhau tức nhỏ nhất 0. Mình sẽ cố gắng giải thích bằng hình minh họa sau:

image.png

Tôi ưu hóa : Optimizers và sử dụng xấp xỉ để ấm chỉ hai thứ đó gần bằng nhau và đều bằng 0 đó chính xác là mục tiêu mà chúng ta muốn tối ưu hóa và trên hết decoder khuyến tán ngược có tham số theta sẽ cập nhật Sau đây mình sẽ chia sẻ nốt về KL dùng để đo khoảng cách giữa hai phân phối.

DKL(PQ)=p(x)log(p(x)q(x))dxD _ { K L } ( P | | Q ) = \int _ { - \infty } ^ { \infty } p ( x ) \log ( \frac { p ( x ) } { q ( x ) } ) d x

Dưới đây, bạn có thể thấy sự phân kỳ KL của một phân phối thay đổi P (xanh lam) từ một phân phối tham chiếu Q (đỏ). Đường cong màu xanh lá cây biểu thị hàm trong tích phân trong định nghĩa cho phân kỳ KL ở trên và tổng diện tích dưới đường cong biểu thị giá trị của phân kỳ KL của P từ Q tại bất kỳ thời điểm nào, một giá trị cũng được hiển thị bằng số.

Mặc dù phương trình số (18) đã đem lại cho chúng ta một hàm tối ưu hóa ELBO nhưng thực sự có phải vậy chăng , đó có chinh xác là một thuật ngữ tối ưu hóa cho ELBO . Không hãy để ý đoạn 3 của phương trình 18 có 2 biến ngẫu nhiên {xt1{x_{t-1}}xt+1{x_{t+1}}} mà ước tính Monte Carlo chỉ có khả năng dự đoán tốt với duy nhất 1 biến ngẫu nhiên , đối với T lớn ELBO

t=1T1Eq(xt1,xt,xt+1x0)[logpθ(xtxt+1)q(xtxt1)]\sum _ { t = 1 } ^ { T - 1 } E _ { q \left ( x _ { t - 1 } , x _ { t } , x _ { t + 1 } | x _ { 0 } \right ) } \left [ \log \frac { p _ { \theta } \left ( x _ { t } | x _ { t + 1 } \right ) } { q \left ( x _ { t } | x _ { t - 1 } \right ) } \right]

có khả năng mang lại phương sai cao tức là ovefting . Vậy nên ở đây ta tạo ra một hình vẽ minh họa cho diffussion model tiếp theo để chỉnh sửa chút về ELBO. Tìm hiểu thêm về Monte carlo tham khảo

Hình 3: image.png Mục tiêu lần này của chúng ta sẽ cố gắng để cho consistency term kỳ vọng duy nhất vào một biến ngẫu nhiên đây sẽ là mục tiêu của chúng tôi. Ở đây ta áp dụng đinh lý bayess để viết lại encoder khuyến tán thuận như sau , lưu ý :

(20)

q(xtxt1,x0)=q(xtxt1)=N(xt;αtxt1,(1αt)I)q ( x _ { t } | x _ { t - 1 } , x _ { 0 } ) = q ( x _ { t } | x _ { t - 1 }) = N ( x _ { t } ; \sqrt { \alpha _ { t } } x _ { t - 1 } , ( 1 - \alpha _ { t } ) I )

Định lý bayess 21

q(xtxt1,x0)=q(xt1xt,x0)q(xtx0)q(xt1x0)q ( x _ { t } | x _ { t - 1 } , x _ { 0 } ) = \frac { q ( x _ { t - 1 } | x _ { t } , x _ { 0 } ) q ( x _ { t } | x _ { 0 } ) } { q ( x _ { t - 1 } | x _ { 0 } ) }

Áp dụng phương trình (11)

(22)

logp(x)Eq(x1:Tx0)[logp(x0:T)q(x1,Tx0)]\log p ( x ) \geq E _ { q ( x _ { 1 : T } | x _ { 0 } ) } [ \log \frac { p ( x _ { 0 : T} ) } { q ( x _ { 1 , T } | x _ { 0 } ) } ]

(23) Dựa trên phương trình (1) và (7)

=Eq(x1:Tx0)[logp(xT)t=1Tpθ(xt1xt)t=1Tq(xtxt1)]= E _ { q ( x _ { 1 } : _ { T } | x _ { 0 } ) } [ \log \frac { p ( x _ { T } ) \prod _ { t = 1 } ^ { T } p _ { \theta } ( x _ { t - 1 } | x _ { t } ) } { \prod _ { t =1} ^ { T } q ( x _ { t } | x _ { t - 1 } ) } ]

(24)

=Eq(x1:Tx0)[logp(xT)p0(x0x1)t=2Tp0(xt1xt)q(x1x0)t=2Tq(xtxt1)]= E _ { q ( x _ { 1 :T} | x _ { 0 } ) } [ \log \frac { p ( x _ { T } ) p _ { 0 } ( x _ { 0 } | x _ { 1 } ) \prod _ { t = 2 } ^ { T } p _ { 0 } ( x _ { t - 1 } | x _ { t } ) } { q ( x _ { 1 } | x _ { 0 } ) \prod _ { t = 2 } ^ { T } q ( x _ { t } | x _ { t - 1 } ) } ]

(25) Dựa trên phương trình (20)

=Eq(x1:Tx0)[logp(xT)p0(x0x1)t=2Tp0(xt1xt)q(x1x0)t=2Tq(xtxt1,x0)]= E _ { q ( x _ { 1 :T} | x _ { 0 } ) } [ \log \frac { p ( x _ { T } ) p _ { 0 } ( x _ { 0 } | x _ { 1 } ) \prod _ { t = 2 } ^ { T } p _ { 0 } ( x _ { t - 1 } | x _ { t } ) } { q ( x _ { 1 } | x _ { 0 } ) \prod _ { t = 2 } ^ { T } q ( x _ { t } | x _ { t - 1 },x_{0} ) } ]

(26) bảng log(a.b) = log(a)+ log(b)

=Eq(x1:Tx0)[logpθ(xT)pθ(x0x1)q(x1x0)+logt=2Tpθ(xt1xt)q(xtxt1,x0)]= E _ { q ( x _ { 1 :T } | x _ { 0 } ) } [ \log \frac { p _ { \theta } ( x _ { T } ) p _ { \theta } ( x _ { 0 } | x _ { 1 } ) } { q ( x _ { 1 } | x _ { 0 } ) } + \log \prod _ { t = 2 } ^ { T } \frac { p _ { \theta } ( x _ { t - 1 } | x _ { t } ) } { q ( x _ { t } | x _ { t - 1 } , x _ { 0 } ) } ]

(27) Dựa trên phương trình (21)

=Eq(x1:Tx0)[logpθ(xT)pθ(x0x1)q(x1x0)+logt=2Tpθ(xt1xt)q(xt1xt,x0)q(xtx0)q(xt1x0)]= E _ { q ( x _ { 1 :T } | x _ { 0 } ) } [ \log \frac { p _ { \theta } ( x _ { T } ) p _ { \theta } ( x _ { 0 } | x _ { 1 } ) } { q ( x _ { 1 } | x _ { 0 } ) } + \log \prod _ { t = 2 } ^ { T } \frac { p _ { \theta } ( x _ { t - 1 } | x _ { t } ) } {\frac { q ( x _ { t - 1 } | x _ { t } , x _ { 0 } ) q ( x _ { t } | x _ { 0 } ) } { q ( x _ { t - 1 } | x _ { 0 } ) }}]

(28)

=Eq(x1:Tx0)[logpθ(xT)pθ(x0x1)q(x1x0)+logt=2Tpθ(xt1xt)q(xt1x0)q(xt1xt,x0)q(xtx0)]= E _ { q ( x _ { 1 :T } | x _ { 0 } ) } [ \log \frac { p _ { \theta } ( x _ { T } ) p _ { \theta } ( x _ { 0 } | x _ { 1 } ) } { q ( x _ { 1 } | x _ { 0 } ) } + \log \prod _ { t = 2 } ^ { T } \frac { p _ { \theta } ( x _ { t - 1 } | x _ { t } ) { q ( x _ { t - 1 } | x _ { 0 } ) }} { q ( x _ { t - 1 } | x _ { t } , x _ { 0 } ) q ( x _ { t } | x _ { 0 } ) }]

mà ta có :

t=2Tq(xt1x0)=q(x1x0)q(x2x0)q(x3x0)q(x4x0)q(x5x0).....q(xT1x0)\prod_ { t = 2 } ^ { T } { q ( x _ { t - 1 } | x _ { 0 } ) }= q(x_{1}|x _ { 0 })q(x_{2}|x _ { 0 })q(x_{3}|x _ { 0 })q(x_{4}|x _ { 0 })q(x_{5}|x _ { 0 }).....q(x_{T-1}|x _ { 0 })

t=2Tq(xtx0)=q(x2x0)q(x3x0)q(x4x0)q(x5x0).....q(xTx0)\prod_ { t = 2 } ^ { T } { q ( x _ { t } | x _ { 0 } ) }= q(x_{2}|x _ { 0 })q(x_{3}|x _ { 0 })q(x_{4}|x _ { 0 })q(x_{5}|x _ { 0 }).....q(x_{T}|x _ { 0 })

Từ hai phương trình trên ta có thể khẳng định rằng là:

t=2Tq(xt1x0)q(xtx0)=q(x1x0)q(x2x0)q(x3x0)q(x4x0)q(x5x0).....q(xT1x0)q(x2x0)q(x3x0)q(x4x0)q(x5x0).....q(xT1x0)q(xTx0)\prod_ { t = 2 } ^ { T } \frac{ q ( x _ { t - 1 } | x _ { 0 } ) } { q ( x _ { t } | x _ { 0 } ) } = \frac {q(x_{1}|x _ { 0 })q(x_{2}|x _ { 0 })q(x_{3}|x _ { 0 })q(x_{4}|x _ { 0 })q(x_{5}|x _ { 0 }).....q(x_{T-1}|x _ { 0 })}{q(x_{2}|x _ { 0 })q(x_{3}|x _ { 0 })q(x_{4}|x _ { 0 })q(x_{5}|x _ { 0 }).....q(x_{T-1}|x _ { 0 })q(x_{T}|x _ { 0 })}

t=2Tq(xt1x0)q(xtx0)=q(x1x0)q(xTx0)\prod_ { t = 2 } ^ { T } \frac{ q ( x _ { t - 1 } | x _ { 0 } ) } { q ( x _ { t } | x _ { 0 } ) } =\frac {q(x_{1}|x _ { 0 })}{q(x_{T}|x _ { 0 })}

(29)

=Eq(x1:Tx0)[logp(xT)pθ(x0x1)q(x1x0)+logq(x1x0)q(xTx0)+logt=2Tpθ(xt1xt)q(xt1xt,x0)]= E _ { q ( x _ { 1 : T } | x _ { 0 } ) }[log \frac { p ( x _ { T } ) p _ { \theta } ( x _ { 0 } | x _ { 1 } ) } { q ( x _ { 1} | x _ { 0 } ) } + log \frac { q ( x _ { 1 } | x _ { 0 } ) } { q ( x _ { T } | x _ { 0 } ) }+ \log \prod _ { t = 2 } ^ { T } \frac { p _ { \theta } ( x _ { t - 1 } | x _ { t } ) } { q ( x _ { t - 1 } | x _ { t } , x _ { 0 } ) }]

(30) chia 2 vế đầu cho q(x1x0){q_(x{1}|x{0})} ta được:

=Eq(x1:Tx0)[logp(xT)pθ(x0x1)q(xTx0)+t=2Tlogpθ(xt1xt)q(xt1xt,x0)]= E _ { q ( x _ { 1 : T } | x _ { 0 } ) } [ \log \frac { p ( x _ { T } ) p _ { \theta } ( x _ { 0 } | x _ { 1 } ) } { q ( x _ { T } | x _ { 0 } ) } + \sum _ { t = 2 } ^ { T } \log \frac { p _ { \theta } ( x _ { t - 1 } | x _ { t } ) } { q ( x _ { t - 1 } | x _ { t } , x _ { 0 } ) } ]

(31)

=Eq(x1:Tx0)[logpθ(x0x1)]+Eq(x1:Tx0)[logp(xT)q(xTx0)]+t=2TEq(x1:Tx0)[logpθ(xt1xt)q(xt1xt,x0)]= E _ { q \left ( x _ { 1 :T } | x _ { 0 } \right ) } \left [ \log p _ { \theta } \left ( x _ { 0 } | x _ { 1 } \right ) \right ] + E _ { q ( x _ { 1 : T } | x _ { 0 } ) } [ \log \frac { p ( x _ { T } ) } { q ( x _ { T } | x _ { 0 } ) } ]+ \sum _ { t = 2 } ^ { T } E _ { q ( x _ { 1 :T } | x _ { 0 } ) } [ \log \frac { p _ { \theta } ( x _ { t - 1 } | x _ { t } ) } { q ( x _ { t - 1 } | x _ { t } , x _ { 0 } ) } ]

(32)

=Eq(x1x0)[logpθ(x0x1)]+Eq(xTx0)[logp(xT)q(xTx0)]+t=2TEq(xt,xt1x0)[logpθ(xt1xt)q(xt1xt,x0)]= E _ { q \left ( x _ { 1 } | x _ { 0 } \right ) } \left [ \log p _ { \theta } \left ( x _ { 0 } | x _ { 1 } \right ) \right ] + E _ { q ( x _ { T } | x _ { 0 } ) } [ \log \frac { p ( x _ { T } ) } { q ( x _ { T } | x _ { 0 } ) } ]+ \sum _ { t = 2 } ^ { T } E _ { q ( x _ { t },x_{t-1} | x _ { 0 } ) } [ \log \frac { p _ { \theta } ( x _ { t - 1 } | x _ { t } ) } { q ( x _ { t - 1 } | x _ { t } , x _ { 0 } ) } ]

(33)

image.png

Ở đây chúng tôi đã viết ại ELBO một cách khiến có phương sai thấp hơn , hơn nữa chúng ta đã làm được một điều đó là khiến các kỳ vọng ở mỗi đoạn có đúng một biến ngẫu nhiên. Đây chính là Loss function của diffussion mà chúng ta cần tìm Ta sẽ tiếp tục giải thích phương trình (33) như sau:

  • Đoạn 1 : reconstruction term (tái tạo ) dự đoán log xác suất của ảnh dựa trên ảnh noise đầu tiên tối ưu hóa bằng cách sử dụng ước tính Monte Carlo

argmaxθEq(x1x0)[logpθ(x0x1)]DKL(q(xTx0)p(xT))\underset { \theta } { \arg \max } E_{ q \left ( x _ { 1 } | x _ { 0 } \right ) } [ \log p _ { \theta } ( x_{0} | x_{1} ) ] - D _ { K L } ( q _ { } ( x_{T} | x_{0} ) \| p ( x_{T} ) )

  • Đoạn 2: prior matching term : Mặc định bằng 0 do không có parameter khoảng cách phân phối khuyến tán thuận qT{q_{T}} cuối cùng và khuyến tán ngược pT{p_{T}} đầu tiên và do cả hai chắc chắn là một gaussian tiêu chuẩn nên chắc chắn là bằng 0
  • Đoạn 3: denoising matching term:Khoảng cách giữa các layer tiềm ẩn khi khuyến tán thuận và các layer tiềm ẩn khi khuyến tán ngược chúng phải cố gắng tối ưu hóa sao cho chúng bằng nhau tức nhỏ nhất 0. Nhìn vào hình 5 ta biết được rằng đường màu hồng và đường màu xanh q(xt1xt,x0=p(xt1xt){q(x_{t-1}|x_{t},x_{0} = p(x_{t-1}|x_{t})} (điều kiện tối ưu hóa mong muốn) hay q(xtxt+1,x0=p(xtxt+1){q(x_{t}|x_{t+1},x_{0} = p(x_{t}|x_{t+1})}

Hình 5:

image.png

Trong phương trình (33) phần lớn khả năng tính toán dựa vào reconstruction term trong khi denoising matching term rất khó để học chúng do sự phức tạp giữa chúng khi phải tính tham số decoder p(xt1xt){p(x_{t-1}|x_{t})} và cả bộ encoder mặc dù encoder không có parameter . Vậy nên ta sẽ tiếp tục đào sâu về gaussian chuyển tiếp để tối ưu hóa chúng , áp dụng đinh lý bayess:

(35)

q(xt1xt,x0)=q(xtxt1,x0)q(xt1x0)q(xtx0)q ( x _ { t - 1 } | x _ { t } , x _ { 0 } ) = \frac { q ( x _ { t } | x _ { t - 1 } , x _ { 0 } ) q ( x _ { t - 1 } | x _ { 0 } ) } { q ( x _ { t } | x _ { 0 } ) }

Như ta đã biết áp dụng phương trình (4) và (20) ta được

q(xtxt1,x0)=q(xtxt1)=N(xt;αtxt1,(1αt)I)q ( x _ { t } | x _ { t - 1 } , x _ { 0 } ) = q ( x _ { t } | x _ { t - 1 } ) = N ( x _ { t } ; \sqrt { \alpha _ { t } } x _ { t - 1 } , ( 1 - \alpha _ { t } ) I )

Từ kết luận từ phương trình số (6) ta biết được tại sao có reparameter trick:

xtq(xtxt1)x _ { t } \sim q ( x _ { t } | x _ { t - 1 } )

có thể viết lại thành (36)

xt=αtxt1+1αtϵ with ϵN(ϵ;0,I)x _ { t } = \sqrt { \alpha _ { t } } x _ { t - 1 } + \sqrt { 1 - \alpha _ { t } } \epsilon \quad \text { with } \epsilon \sim N ( \epsilon ; 0 , I )

Rất giống với phương trình số (6) duy nhất có sự thay đổi ở đây là các parameter alpha lịch trình học tập tương ứng với trung bình mẫu và phương sai Tương tự như vậy thì:

xt1q(xt1xt2)x _ { t -1} \sim q ( x _ { t -1} | x _ { t -2 } )

có thể viết lượng thành (37)

xt1=αt1xt2+1αt1ϵ with ϵN(ϵ;0,I)x _ { t-1 } = \sqrt { \alpha _ { t-1 } } x _ { t - 2 } + \sqrt { 1 - \alpha _ { t -1} } \epsilon \quad \text { with } \epsilon \sim N ( \epsilon ; 0 , I )

Hình 5 miêu tả một cách phương sai thấp hơn để tối ưu hóa Diffussion model , tính toán các layer tiềm ẩn khuyến tán thuận q(xt1xt,x0){q (x_{t-1} | x_{t}, x_{0})} bằng cách sử dụng quy tắc Bayes và giảm thiểu Phân kỳ KL của nó sao cho gần đúng pθ(xt1xt){p_{\theta}(x_{t-1} | x_{t})}. Hiển thị bằng các mũi tên màu xanh lá cây với các phân bố của các mũi tên màu hồng.,mỗi mũi tên màu hồng cũng phải xuất phát từ x0{x_{0}}, vì nó cũng là một thuật ngữ denoising matching term. Khi đó q(xt1xt,x0){q (x_{t-1} | x_{t}, x_{0})} với

{ϵt,ϵt}t=0TN(ϵ;0,I)\{ \epsilon _ { t } ^ { * } , \epsilon _ { t } \} _ { t = 0 } ^ { T } \stackrel { } { \sim } N ( \epsilon ; 0 , I )

Ta sẽ tính mọi ảnh noise theo thời gian t dựa trên đầu vào ảnh, điều này cực kỳ quan trọng vì nó chính là mọi quy tắc của ảnh noise tiếp theo của khuyến tán thuận. Ta sẽ ký hiệu chúng là:

(*)

xtq(xtx0)x _ { t} \sim q ( x _ { t } | x _ { 0 } )

xt{x_{t}} với t=[1,T]t = [1,T ] được viết lại thành:

(38)

xt=αtxt1+1αtϵt1x _ { t } = \sqrt { \alpha _ { t } } x _ { t - 1 } + \sqrt { 1 - \alpha _ { t } } \epsilon _ { t - 1 } ^ { * }

(39) thay (37) vào (38)

=αt(αt1xt2+1αt1ϵt2)+1αtϵt1= \sqrt { \alpha _ { t } } ( \sqrt { \alpha _ { t - 1 } } x _ { t - 2 } + \sqrt { 1 - \alpha _ { t - 1 } } \epsilon _ { t - 2 } ^ { * } ) + \sqrt { 1 - \alpha _ { t } } \epsilon _ { t - 1 } ^ { * }

(40) quy tắc nhân căn bậc 2 với 2 số không âm

=αtαt1xt2+αt1αt1ϵt2+1αtϵt1= \sqrt { \alpha _ { t } } \sqrt { \alpha _ { t - 1 } } x _ { t - 2 } + \sqrt { \alpha _ { t } }\sqrt { 1 - \alpha _ { t - 1 } } - \epsilon _ { t - 2 } ^ { * } + \sqrt { 1 - \alpha _ { t } } \epsilon _ { t - 1 } ^ { * }

(41)

=αtαt1xt2+1αtαtαt1ϵt2+1αtϵt1= \sqrt { \alpha _ { t } \alpha _ { t - 1 } } x _ { t - 2 } + \sqrt { 1\alpha _ { t } - \alpha _ { t } \alpha _ { t - 1 } } \epsilon _ { t - 2 } ^ { * } + \sqrt { 1 - \alpha _ { t } } \epsilon _ { t - 1 } ^ { * }

Bình phương 2 vế bên phải trong căn để dễ dàng tính Tổng các biến ngẫu nhiên có trong phân phối

(42)

=αtαt1xt2+αtαtαt12ϵt2+1αt2ϵt1= \sqrt { \alpha _ { t } \alpha _ { t - 1 } } x _ { t - 2 } + \sqrt { \sqrt { \alpha _ { t } - \alpha _ { t } \alpha _ { t - 1 } } ^ { 2 }\epsilon _ { t - 2 }^{*} + \sqrt { 1 - \alpha _ { t } }^{2} \epsilon _ { t - 1 }^{*}}

Nên nhớ rằng đây là phân phối gaussian chuẩn nên trung bình mẫu là 0. Hãy xét vé bên phải căn bình phương đầu tiên sẽ được viết thành như này:

(43)

αtαtαt12ϵt2N(0,(αtαtαt1)I)\sqrt { \alpha _ { t } - \alpha _ { t } \alpha _ { t - 1 } } ^ { 2 }\epsilon _ { t - 2 }^{*} \sim N ( 0 , ( \alpha _ { t } - \alpha _ { t } \alpha _ { t - 1 } ) I )

Vế bên phải căn bình phương cuối cùng như sau: (44)

1αt2ϵt1N˙(0,(1αt)I)\sqrt { 1 - \alpha _ { t } }^{2} \epsilon _ { t - 1 }^{*}\sim \dot { N } ( 0 , ( 1 - \alpha _ { t } ) I )

(45) Tổng các biến ngẫu nhiên có trong phân phối (43) và (44)

N(0,(1αt+αtαtαt1)I)=N(0,(1αtαt1)I)N ( 0 , ( 1 - \alpha _ { t } + \alpha _ { t } - \alpha _ { t } \alpha _ { t - 1 } ) I ) = N ( 0 , ( 1 - \alpha _ { t } \alpha _ { t - 1 } ) I )

Từ (45) ta có (46)

=αtαt1xt2+αtαtαt1+1αtϵt1ϵt2= \sqrt { \alpha _ { t } \alpha _ { t - 1 } } x _ { t - 2 } + \sqrt { \alpha _ { t } - \alpha _ { t } \alpha _ { t - 1 } + 1 - \alpha _ { t } } \epsilon _ { t - 1 }^{*}\epsilon _ { t - 2 }^{*}

(47)

=αtαt1xt2+1αtαt1ϵt1ϵt2= \sqrt { \alpha _ { t } \alpha _ { t - 1 } } x _ { t - 2 } + \sqrt { 1 - \alpha _ { t } \alpha _ { t - 1 } } \epsilon _ { t - 1 }^{*}\epsilon _ { t - 2 }^{*}

(48) Ở đây ta sẽ tiếp tục viết tương tự như vậy:

xt2=αt2xt3+1αt2ϵ with ϵN(ϵ;0,I)x _ { t-2 } = \sqrt { \alpha _ { t-2 } } x _ { t - 3 } + \sqrt { 1 - \alpha _ { t -2} } \epsilon \quad \text { with } \epsilon \sim N ( \epsilon ; 0 , I )

(49) Từ (48) ta thay tiếp vào (47):

=αtαt1(αt2xt3+1αt2ϵt3)+1αtαt1ϵt1ϵt2= \sqrt { \alpha _ { t } \alpha _ { t - 1 } } (\sqrt { \alpha _ { t-2 } } x _ { t - 3 } + \sqrt { 1 - \alpha _ { t -2} } \epsilon_ { t - 3 }^{*}) +\sqrt { 1 - \alpha _ { t } \alpha _ { t - 1 } } \epsilon _ { t - 1 }^{*}\epsilon _ { t - 2 }^{*}

(50)

=αtαt1αt2xt3+αtαt1αtαt1αt2ϵt3+1αtαt1ϵt1ϵt2= \sqrt { \alpha _ { t } \alpha _ { t - 1 }\alpha _ { t-2 } }x _ { t - 3 } + \sqrt{\alpha _ { t } \alpha _ { t - 1 } - \alpha _ { t } \alpha _ { t - 1 }\alpha _ { t-2 }}\epsilon_ { t - 3 }^{*} +\sqrt { 1 - \alpha _ { t } \alpha _ { t - 1 } } \epsilon _ { t - 1 }^{*}\epsilon _ { t - 2 }^{*}

(51)

=αtαt1αt2xt3+αtαt1αtαt1αt22+1αtαt12ϵt1ϵt2ϵt3= \sqrt { \alpha _ { t } \alpha _ { t - 1 }\alpha _ { t-2 } }x _ { t - 3 } + \sqrt{\sqrt{\alpha _ { t } \alpha _ { t - 1 } - \alpha _ { t } \alpha _ { t - 1 }\alpha _ { t-2 }}^{2} +\sqrt { 1 - \alpha _ { t } \alpha _ { t - 1 } }^{2}} \epsilon _ { t - 1 }^{*}\epsilon _ { t - 2 }^{*}\epsilon_ { t - 3 }^{*}

(52)

=αtαt1αt2xt3+1αtαt1αt2ϵt3= \sqrt { \alpha _ { t } \alpha _ { t - 1 }\alpha _ { t-2 } }x _ { t - 3 } + \sqrt{1-\alpha_{t}\alpha _ { t - 1 }\alpha _ { t-2 }} \epsilon_ { t - 3 }

=................................................................................= ................................................................................

Do mọi ϵ{\epsilon} đều có phân phối chuản nên khi nhân với nhau chúng vẫn giữ nguyên mặc định nên ở đây tôi gói gọn trong ϵt3{\epsilon_{t-3}}

(53) rút gọn về thành:

=i=1tαix0+1i=1tαiϵ0= \sqrt { \prod _ { i = 1 } ^ { t } \alpha _ { i } x _ { 0 } + } \sqrt { 1 - \prod _ { i = 1 } ^ { t } \alpha _ { i } \epsilon _ { 0 } }

(54)

=αtx0+1αtϵ0= \sqrt { \overline { \alpha } _ { t } } x _ { 0 } + \sqrt { 1 - \overline { \alpha } _ { t } } \epsilon _ { 0 }

(55)

N(xt;αtx0,(1αt)I)\sim N ( x _ { t } ; \sqrt { \overline { \alpha } _ { t } } x _ { 0 } , ( 1 - \overline { \alpha } _ { t } ) I )

Đây chính là reparameterization trick của Diffussion model

Do đó, chúng tôi suy ra Gaussian của q(xtx0){q (x_{t} | x_{0})}. Đạo hàm của chúng có thể biến thành parameterization Gaussian q(xt1x0){q (x_{t − 1} | x_{0})}. Bây giờ, khi biết q(xtx0){q (x_{t} | x_{0})}q(xt1x0){q (x_{t − 1} | x_{0})} từ (*) chúng ta có thể tiến hành tính dạng của q(xt1xt,x0){q (x_{t − 1} | x_{t}, x_{0})} bằng cách thay thế vào khai triển quy tắc Bayes:

(56)

q(xt1xt,x0)=q(xtxt1,x0)q(xt1x0)q(xtx0)q ( x _ { t - 1 } | x _ { t } , x _ { 0 } ) = \frac { q ( x _ { t } | x _ { t - 1 } , x _ { 0 } ) q ( x _ { t - 1 } | x _ { 0 } ) } { q ( x _ { t } | x _ { 0 } ) }

Từ (*) và (55) ta biết :

q(xtx0)N(xt;αtx0,(1αt)I){ q ( x _ { t } | x _ { 0 } ) } \sim N ( x _ { t } ; \sqrt { \overline { \alpha } _ { t } } x _ { 0 } , ( 1 - \overline { \alpha } _ { t } ) I )

Từ đó:

q(xt1x0)N(xt1;αt1x0,(1αt1)I){ q ( x _ { t -1 } | x _ { 0 } ) } \sim N ( x _ { t -1 } ; \sqrt { \overline { \alpha } _ { t -1 } } x _ { 0 } , ( 1 - \overline { \alpha } _ { t -1 } ) I )

(57) Dựa trên (20)

=N(xt;αtxt1,(1αt)I)N(xt1;αt1x0,(1αt1)I)N(xt:αtx0,(1αt)I)= \frac { N ( x _ { t } ; \sqrt { \alpha _ { t } } x _ { t - 1 } , ( 1 - \alpha _ { t } ) I ) N ( x _ { t - 1 } ; \sqrt { \overline\alpha _ { t - 1 } } x _ { 0 } , ( 1 - \overline { \alpha } _ { t - 1 } ) I ) } { N ( x _ { t : } \sqrt { \overline { \alpha } _ { t } } x _ { 0 } , ( 1 - \overline { \alpha } _ { t } ) I ) }

(58)

Áp dụng công thức logarit tự nhiên và gaussian:

exp{[(xtαtxt1)22(1αt)+(xt1αt1x0)22(1αt1)(xtαtx0)22(1αt)]}\propto \exp \{ - [\frac { ( x _ { t } - \sqrt { \alpha _ { t } } x _ { t - 1 } ) ^ { 2 } } { 2 ( 1 - \alpha _ { t } ) }+ \frac { ( x _ { t - 1 } - \sqrt { \overline { \alpha } _ { t - 1 } } x _ { 0 } ) ^ { 2 } } { 2 ( 1 - \overline { \alpha } _ { t - 1 } ) } - \frac { ( x _ { t } - \sqrt { \overline { \alpha } _ { t } } x _ { 0 } ) ^ { 2 } } { 2 ( 1 - \overline { \alpha } _ { t } ) }]\}

(59)

=exp{12[(xtαtxt1)21αt+(xt1αt1x0)21αt1(xtαtx0)21αt]}= \exp \{ -\frac{1}{2} [\frac { ( x _ { t } - \sqrt { \alpha _ { t } } x _ { t - 1 } ) ^ { 2 } } { 1 - \alpha _ { t } }+ \frac { ( x _ { t - 1 } - \sqrt { \overline { \alpha } _ { t - 1 } } x _ { 0 } ) ^ { 2 } } { 1 - \overline { \alpha } _ { t - 1 } } - \frac { ( x _ { t } - \sqrt { \overline { \alpha } _ { t } } x _ { 0 } ) ^ { 2 } } { 1 - \overline { \alpha } _ { t } }]\}

(60)

=exp{12[(2αtxtxt1+αtxt12)1αt+(xt122αt1xt1x0)1αt1+C(xt,x0)]}= \exp \{ -\frac{1}{2} [\frac { ( - 2 \sqrt { \alpha _ { t } } x _ { t } x _ { t - 1 } + \alpha _ { t } x _ { t - 1 } ^ { 2 } ) } { 1 - \alpha _ { t } } + \frac { ( x _ { t - 1 } ^ { 2 } - 2 \sqrt {\overline \alpha _ { t - 1 } } x _ { t - 1 } x _ { 0 } ) } { 1 - \overline { \alpha } _ { t - 1 } } + C ( x _ { t } , x _ { 0 } )]\}

(61)

exp{12[2αtxtxt11αt+αtxt121αt+xt121αt12αt1xt1x01αt1+C(xt,x0)]}\propto \exp \{ -\frac{1}{2} [\frac { 2 \sqrt { \alpha _ { t } } x _ { t } x _ { t - 1 } } { 1 - \alpha _ { t } } + \frac { \alpha _ { t } x _ { t - 1 } ^ { 2 } } { 1 - \alpha _ { t } } + \frac { x _ { t - 1 } ^ { 2 } } { 1 - \overline { \alpha } _ { t - 1 } } - \frac { 2 \sqrt { \alpha _ { t - 1 } } x _ { t - 1 } x _ { 0 } } { 1 - \overline { \alpha } _ { t - 1 } }+ C ( x _ { t } , x _ { 0 } )]\}