מודל דיפוזיה

תמונה שנוצרה על ידיי מודל פיזור
מודל דיפוזיה (באנגלית: Diffusion model) הוא סוג של מודל גנרטיבי ללמידת מכונה שתוכנן על ידי ג'ונתן הו ועמיתיו מאוניברסיטת קליפורניה בשנת 2020<ref></ref>

בהינתן סט אימון, ניתן להשתמש במודל בשביל ללמוד את ההתפלגות שממנה מגיעים הנתונים, וכתוצאה מכך ניתן להשתמש בו בשביל ליצור דגימות חדשות שנראות כמו דגימות ששייכות למאגר הנתונים. לדוגמה, מודל שאומן על מאגר תצלומים של בני אדם, יוכל ליצור תצלומים חדשים של בני אדם שנראים אותנטיים ומכילים מאפיינים מציאותיים רבים. דוגמאות למודלי דיפוזיה מוכרים הם DALL-E של OpenAI או parti של גוגל.

== היסטוריה ==
הרעיון של מודל דיפוזיה הועלה לראשונה ב-2015 במחקר שפורסם על ידי גסצ'ה סול דיקסטיין ועמיתיו בתור אופציה נוספת על פני מודלים גנרטיבים אחרים כגון GAN.<ref></ref>

ב-2021 זכה לתהודה כאשר המודל DALL-E של OpenAi העושה שימוש במודל, הצליח ליצור תמונות מפורטות במגוון סגנונות. התחום קיבל גל חדש של עניין בשל כך וחברות רבות עלו עם מודלי דיפוזיה משלהם.

== תהליך האימון ==
תהליך האימון מתחלק לשני חלקים, בחלק הראשון מוסיפים רעש גאוסיאני לתמונת האימון בהדרגה והמודל לומד את ההתפלגות הפוסטריורית <math>q(\mathrm{x}_{1...T}|\mathrm{x}_0)</math> (התפלגות המצבים בשרשרת המרקוב בהינתן התמונה ההתחלתית). בשלב השני הופכים את התהליך ומנסים לשחזר את התמונה המקורית מהתמונה עם הרעש על ידי הורדת הרעש שנוסף בכל שלב והמודל לומד את ההתפלגות ההפוכה <math>p_\theta(\mathrm{x}_{t-1}|\mathrm{x}_{t})</math> (התפלגות התמונה בהינתן תמונה עם הוספת רעש).
=== שלב הוספת הרעש ===
בכל שלב מוסיפים רעש גאוסיאני לתמונת האימון וממשיכים כך באופן באופן איטרטיבי מספר קבוע של פעמים <math>T</math> (בדרך כלל <math>T</math> גדול מספיק כך שהתמונה הופכת לרעש גאוסיאני ללא אפשרות לזיהוי של התמונה המקורית).

את תהליך הוספת הרעש אפשר לתאר על ידי שרשרת מרקוב <math>q(\mathrm{x}_{1...T}|\mathrm{x}_0)=\prod_{t=1}^T{q(\mathrm{x}_t|{\mathrm{x}}_{t-1})}=\prod_{t=1}^T{N(\mathrm{x}_t;\sqrt{1-\beta_t}\mathrm{x}_{t-1},\beta_t{\mathrm{I}})}</math> כאשר <math>t</math> מייצגת את מספר האיטרציה ו-<math>\beta</math> מייצגת את גודל הצעד (<math>\beta</math> נקבעת לפי המתזמן שבחרנו). אפשר לחשב את האיטרציה ה-<math>t</math> בחישוב אחד על ידי <math>q(\mathrm{x}_t|{\mathrm{x}}_0)=N(\mathrm{x}_t;\sqrt{\bar{a_t}}\mathrm{x}_0,1-\bar{a_t})
</math> כאשר <math>a_t=1-\beta_t
</math> ו- <math>\bar{a_t}=\textstyle \prod_{s=1}^t \displaystyle{a_s}
</math>.

=== שלב ניחוש הרעש שנוסף ===
בשלב זה לוקחים את תמונת הרעש מהשלב הקודם ומנסים לשחזר ממנה את התמונה המקורית בעזרת רשת עצבית מלאכותית שמקבלת את התמונה <math>\mathrm{x}_t</math> ומנסה לנחש את הרעש שנוסף לתמונה <math>\mathrm{x}_{t-1}</math> (מנסים לנחש את הרעש ולא את התמונה<math>\mathrm{x}_{t-1}</math> ישירות מכיוון שזה נותן תוצאה טובה יותר. אפשר להשיג את התמונה <math>\mathrm{x}_{t-1}</math> ברגע שיש לנו את הרעש) ואת התהליך נבצע <math>T</math> פעמים עד שנקבל את התמונה המשוחזרת. את התהליך אפשר לתאר כשרשרת מרקוב <math>p_\theta(\mathrm{x}_{1...T})=p(\mathrm{x}_T)\prod_{t=1}^T p_\theta(\mathrm{x}_{t-1}|\mathrm{x}_{t})</math> כאשר <math>p(\mathrm{x}_T)</math> היא ההסתברות ההתחלתית למצב <math>\mathrm{x}_T</math> (התפלגות גאוסיאנית).

== לקריאה נוספת ==
* Jonathan Ho, Denoising Diffusion Probabilistic Models
* Alex Nichol, Improved Denoising Diffusion Probabilistic Models
* Prafulla Dhariwal, Diffusion Models Beat GANs on Image Synthesis

== קישורים חיצוניים ==
* [https://colab.research.google.com/drive/1NFxjNI-UIR7Ku0KERmv7Yb_586vHQW43?usp=sharing#scrollTo=YsdVzE6wSfo_ מימוש מודל פיזור], במחברת colab
* [https://www.assemblyai.com/blog/diffusion-models-for-machine-learning-introduction/ הסבר מפורט על המתמטיקה של מודל הפיזור] באתר assemblya
* [https://www.youtube.com/watch?v=HoKDTa5jHvg&ab_channel=Outlier סרטון המסביר על מודלי פיזור] באתר יוטיוב
*[https://towardsdatascience.com/diffusion-models-made-easy-8414298ce4da הסבר על המודל]

== הערות שוליים ==

2022 09
קטגוריה:למידת מכונה
קטגוריה:אלגוריתמים