แบบจำลองแบบแพร่ (diffusion model) หรือ แบบจำลองความน่าจะเป็นแบบแพร่ (diffusion probability model) ในสาขาการเรียนรู้ของเครื่อง คือแบบจำลองตัวแปรแฝง ประเภทหนึ่ง เป็นลูกโซ่มาร์คอฟ ที่ได้รับการฝึกโดยใช้วิธีแบบเบส์แบบแปรผัน[ 1] เป้าหมายของแบบจำลองแบบแพร่คือการเรียนรู้โครงสร้างแฝงของชุดข้อมูลโดยการสร้างแบบจำลองพฤติกรรมของจุดข้อมูลแต่ละจุดที่แจกแจงในปริภูมิแฝง ในสาขาคอมพิวเตอร์วิทัศน์ ได้มีการใช้แบบจำลองแบบแพร่สร้างโครงข่ายประสาทเทียม ซึ่งฝึกให้เรียนรู้ที่จะย้อนกลับกระบวนการการแพร่เพื่อการลดสัญญาณรบกวน ออกจากภาพที่ถูกทำให้เบลอด้วยสัญญาณรบกวนแบบเกาส์ [ 2] [ 3]
แบบจำลองแบบแพร่ได้รับการคิดค้นขึ้นมาในปี 2015 โดยได้รับแรงบันดาลใจจากอุณหพลศาสตร์ แบบไม่สมดุล[ 4] [ 5]
แบบจำลองแบบแพร่สามารถนำไปใช้กับการดำเนินการต่าง ๆ เช่น การลดสัญญาณรบกวนของภาพ, การซ่อมแซมภาพ, การเพิ่มความละเอียดภาพ การสร้างภาพ และการบีบอัดข้อมูล ตัวอย่างเช่น แบบจำลองการสร้างภาพสามารถสร้างภาพที่ดูเป็นธรรมชาติขึ้นมาใหม่ได้จากการใช้ภาพสัญญาณรบกวนแบบสุ่มเป็นค่าเริ่มต้น แล้วเรียนรู้กระบวนที่ตรงกันข้ามกับการแพร่ของภาพธรรมชาติ
ตัวอย่างการประยุกต์ใช้แบบจำลองแบบแพร่ที่มีชื่อเสียง ได้แก่ ตัวแบบสำหรับสร้างภาพจากข้อความ เช่น DALL-E 2 ของโอเพนเอไอ และ สเตเบิลดิฟฟิวชัน เป็นต้น DALL-E 2 ใช้แบบจำลองแบบแพร่สำหรับทั้งการแจกแจงก่อนของแบบจำลองสร้างภาพ และตัวถอดรหัสสำหรับการสร้างภาพขั้นสุดท้าย[ 6] การบีบอัดข้อมูล โดยใช้แบบจำลองแบบแพร่มีข้อดีตรงที่ไม่ต้องเข้ารหัส และมีประสิทธิภาพสูงกว่าวิธีการบีบอัดประสิทธิภาพสูงสุดแบบดั้งเดิม
หลักการทางคณิตศาสตร์
การสร้างภาพ
พิจารณาปัญหาการสร้างภาพ โดยให้
x
{\displaystyle x}
เป็นรูปภาพ และฟังก์ชันความหนาแน่นความน่าจะเป็น บนปริภูมิรูปภาพคือ
p
(
x
)
{\displaystyle p(x)}
ถ้ารู้
p
(
x
)
{\displaystyle p(x)}
ก็จะสามารถระบุความน่าจะเป็น ที่ภาพแต่ละชนิดจะถูกสร้างขึ้นได้ แต่โดยทั่วไปแล้ว เป็นการยากที่จะทราบความน่าจะเป็นนั้น
ในกรณีส่วนใหญ่ เราไม่สนใจความน่าจะเป็นเฉพาะที่ภาพหนึ่ง ๆ จะถูกสร้างขึ้น แต่ที่สนใจกว่าก็คือว่า ภาพนั้นมีแนวโน้มที่จะถูกสร้างขึ้นมากเพียงใดเมื่อเทียบกับภาพใกล้เคียง ตัวอย่างเช่น หากมีรูปภาพแมวที่มีหนวด 2 หนวด ปัญหาคือภาพนั้นมีแนวโน้มที่จะถูกสร้างขึ้นแค่ไหนเมื่อเทียบกับภาพที่คล้ายกัน เช่น รูปภาพแมวที่มีหนวด 3 หนวด หรือรูปภาพที่ถูกเติมสัญญาณรบกวนแบบเกาส์ เข้าไป
ดังนั้นเป้าหมายที่สนใจไม่ใช่ตัว
p
(
x
)
{\displaystyle p(x)}
นั้นเอง แต่เป็น
∇ ∇ -->
x
ln
-->
p
(
x
)
{\displaystyle \nabla _{x}\ln p(x)}
การพิจารณาแบบนี้มีข้อดีคือ
ประการแรก
p
(
x
)
{\displaystyle p(x)}
ไม่จำเป็นต้องทำให้เป็นมาตรฐาน แต่ใช้ในรูป
p
~ ~ -->
(
x
)
=
C
p
(
x
)
{\displaystyle {\tilde {p}}(x)=Cp(x)}
ได้ ในที่นี่
C
=
∫ ∫ -->
p
~ ~ -->
(
x
)
d
x
>
0
{\displaystyle C=\int {\tilde {p}}(x)dx>0}
เป็นค่าคงที่ตามที่ต้องการ และค่าที่แน่ชัดจะไม่มีผลต่อการคำนวณ
ประการที่สอง สามารถเปรียบเทียบ
p
(
x
)
{\displaystyle p(x)}
กับความน่าจะเป็นของภาพใกล้เคียง
p
(
x
+
d
x
)
{\displaystyle p(x+dx)}
ในรูป
p
(
x
)
p
(
x
+
d
x
)
=
e
− − -->
⟨ ⟨ -->
∇ ∇ -->
x
ln
-->
p
,
d
x
⟩ ⟩ -->
{\displaystyle {\frac {p(x)}{p(x+dx)}}=e^{-\langle \nabla _{x}\ln p,dx\rangle }}
ได้
ให้ฟังก์ชันคะแนนเป็น
s
(
x
)
:=
∇ ∇ -->
x
ln
-->
p
(
x
)
{\displaystyle s(x):=\nabla _{x}\ln p(x)}
แล้ว
s
(
x
)
{\displaystyle s(x)}
จะสามารถสุ่มตัวอย่างจาก
p
(
x
)
{\displaystyle p(x)}
โดยใช้พลศาสตร์อนุญาตให้สุ่มตัวอย่างโดยใช้พลศาสตร์ล็องฌ์แว็งความชันแบบเฟ้นสุ่ม (stochastic gradient Langevin dynamics) นี่เป็นรูปแบบที่เล็กที่สุดของวิธีมอนเตการ์โลลูกโซ่มาร์คอฟ [ 2]
รูปแบบต่าง ๆ
การชี้นำโดยตัวจำแนก (classifier guidance)
แทนที่จะสุ่มตัวอย่างจากกลุ่มของรูปภาพทั้งหมด เราสามารถพิจารณาสุ่มเอาตัวอย่างแค่จากช่วงขอบเขตที่กำหนดโดยคำอธิบายภาพ เช่น แทนที่จะดึงออกมาจากกลุ่มรูปภาพทั่วไป ให้ดึงมาเฉพาะภาพที่สอดคล้องกับคำอธิบายว่า "แมว สีดำ ตา สีแดง " เป็นต้น โดยทั่วไปแล้วนี่จะเป็นการสุ่มตัวอย่างบนการแจกแจง
p
(
x
|
y
)
{\displaystyle p(x|y)}
ในที่นี้รูปภาพ
x
{\displaystyle x}
จะได้มาจากช่วงของภาพทั้งหมด ในขณะที่ขอบเขตของรูปภาพ
y
{\displaystyle y}
จะถูกจำกัดอยู่ที่รูปภาพจำเพาะประเภท
จากมุมมองของแบบจำลองช่องสัญญาณที่มีสัญญาณรบกวน กระบวนการนี้สามารถเข้าใจได้ดังนี้ เมื่อต้องการจะสร้างภาพ
x
{\displaystyle x}
ภายใต้เงื่อนไขตามคำอธิบาย
y
{\displaystyle y}
ผู้ที่ต้องการสร้างภาพจะสร้างภาพขึ้นมานั้น จริง ๆ แล้วกำลังวาดภาพ
x
{\displaystyle x}
อยู่ แต่เนื่องจากว่าภาพนั้นผ่านช่องสัญญาณที่มีสัญญาณรบกวน จึงเกิดการผิดเพี้ยนของตัวอักษร จนจินตนาการไปว่าได้รับสัญญาณเป็นคำอธิบาย
y
{\displaystyle y}
ในกรณีนี้ การสร้างภาพในที่นี้เป็นแค่การทำนายภาพ
x
{\displaystyle x}
ที่ถูกจินตนาการไว้แต่แรกโดยบุคคลที่ต้องการสร้างภาพนั้น
กล่าวอีกนัยหนึ่ง การสร้างภาพแบบมีเงื่อนไขนั้นเป็นเพียงการแปลภาษาที่อธิบายด้วยข้อความให้กลายเป็นภาษาที่อธิบายด้วยภาพ ดังนั้น เช่นเดียวกับแบบจำลองช่องสัญญาณที่มีสัญญาณรบกวน เราสามารถใช้ทฤษฎีบทของเบส์ ได้ว่า
p
(
x
|
y
)
∝ ∝ -->
p
(
y
|
x
)
p
(
x
)
{\displaystyle p(x|y)\propto p(y|x)p(x)}
นั่นคือหากมีแบบจำลองที่ดีสำหรับปริภูมิรูปภาพทั้งหมด (
p
(
x
)
{\displaystyle p(x)}
) และตัวแปลคุณภาพสูงสำหรับแปลง"รูปภาพ → ประเภท" (
p
(
y
|
x
)
{\displaystyle p(y|x)}
) นั่นหมายความว่าเราสามารถจะได้ตัวแปล "ประเภท → รูปภาพ" ได้โดยไม่ต้องลำบากนัก
พลศาสตร์ล็องฌ์แว็งความชันแบบเฟ้นสุ่ม ใช้สมการต่อไปนี้
∇ ∇ -->
x
ln
-->
p
(
x
|
y
)
=
∇ ∇ -->
x
ln
-->
p
(
y
|
x
)
+
∇ ∇ -->
x
ln
-->
p
(
x
)
{\displaystyle \nabla _{x}\ln p(x|y)=\nabla _{x}\ln p(y|x)+\nabla _{x}\ln p(x)}
ในที่นี้
∇ ∇ -->
x
ln
-->
p
(
x
)
{\displaystyle \nabla _{x}\ln p(x)}
คือฟังก์ชันคะแนนที่เรียนรู้ตามที่อธิบายไว้ข้างต้น โดย
∇ ∇ -->
x
ln
-->
p
(
y
|
x
)
{\displaystyle \nabla _{x}\ln p(y|x)}
ได้มาจากการใช้ตัวจำแนกรูปภาพที่หาอนุพันธ์ ได้
การชี้นำโดยไร้ตัวจำแนก (classifier-free guidance, CFG)
แม้ในกรณีที่ไม่มีตัวจำแนก
p
(
y
|
x
)
{\displaystyle p(y|x)}
ก็สามารถสกัดเอาตัวจำแนกจากตัวแบบจำลองรูปภาพเองได้ดังนี้[ 8]
∇ ∇ -->
x
ln
-->
p
β β -->
(
x
|
y
)
=
(
1
− − -->
β β -->
)
∇ ∇ -->
x
ln
-->
p
(
x
)
+
β β -->
∇ ∇ -->
x
ln
-->
p
(
x
|
y
)
{\displaystyle \nabla _{x}\ln p_{\beta }(x|y)=(1-\beta )\nabla _{x}\ln p(x)+\beta \nabla _{x}\ln p(x|y)}
แบบจำลองดังกล่าวนั้นมักจะฝึกสอนโดยป้อนให้ทั้ง
(
x
,
y
)
{\displaystyle (x,y)}
และ
(
x
,
N
o
n
e
)
{\displaystyle (x,None)}
แล้วสร้างแบบจำลอง
∇ ∇ -->
x
ln
-->
p
(
x
|
y
)
{\displaystyle \nabla _{x}\ln p(x|y)}
และ
∇ ∇ -->
x
ln
-->
p
(
x
)
{\displaystyle \nabla _{x}\ln p(x)}
ขึ้นพร้อมกัน
CFG ได้กลายเป็นส่วนสำคัญที่ขาดไม่ได้สำหรับแบบจำลองต่าง ๆ เช่น GLIDE [ 9] , DALL-E [ 10] และ Google Imagen [ 11]
อ้างอิง
↑ Ho, Jonathan; Jain, Ajay; Abbeel, Pieter (19 June 2020). "Denoising Diffusion Probabilistic Models". arXiv :2006.11239 .
↑ 2.0 2.1 Song, Yang; Sohl-Dickstein, Jascha (2021-02-10). "Score-Based Generative Modeling through Stochastic Differential Equations". arXiv :2011.13456 [cs.LG ].
↑ Gu, Shuyang; Chen, Dong (2021). "Vector Quantized Diffusion Model for Text-to-Image Synthesis". arXiv :2111.14822 [cs.CV ].
↑ Sohl-Dickstein, Jascha; Weiss, Eric; Maheswaranathan, Niru; Ganguli, Surya (2015-06-01). "Deep Unsupervised Learning using Nonequilibrium Thermodynamics" (PDF) . Proceedings of the 32nd International Conference on Machine Learning (ภาษาอังกฤษ). PMLR. 37 : 2256–2265.
↑ "Introduction to Image Generation - Introduction to Image Generation" . Coursera (ภาษาญี่ปุ่น). สืบค้นเมื่อ 2023-11-12 .
↑ Ramesh, Aditya; Dhariwal, Prafulla (2022). "Hierarchical Text-Conditional Image Generation with CLIP Latents". arXiv :2204.06125 [cs.CV ].
↑ Ho, Jonathan; Salimans, Tim (2022-07-25). "Classifier-Free Diffusion Guidance". arXiv :2207.12598 [cs.LG ].
↑ Nichol, Alex; Dhariwal, Prafulla (2022-03-08). "GLIDE: Towards Photorealistic Image Generation and Editing with Text-Guided Diffusion Models". arXiv :2112.10741 [cs.CV ].
↑ Ramesh, Aditya; Dhariwal, Prafulla (2022-04-12). "Hierarchical Text-Conditional Image Generation with CLIP Latents". arXiv :2204.06125 [cs.CV ].
↑ Saharia, Chitwan; Chan, William (2022-05-23). "Photorealistic Text-to-Image Diffusion Models with Deep Language Understanding". arXiv :2205.11487 [cs.CV ].