מודלים של רשתות נוירונים עמוקות

בקטע הקודם ראינו איך להשתמש בפקודת מטריצות כדי ללמוד הטמעות. כמה מהמגבלות של פירוק לגורמים של מטריצות כוללות:

  • הקושי של השימוש בתכונות צדדיות (כלומר, כל תכונה מעבר מזהה השאילתה/מזהה הפריט). לכן אפשר להריץ את המודל שאילתה רק משתמש או פריט שקיימים בערכת האימון.
  • הרלוונטיות של ההמלצות. כפי שראיתם Colab, פריטים פופולריים הם בדרך כלל מומלצים לכולם, במיוחד כשמשתמשים כמדד דמיון. עדיף לפרט תחומי העניין של המשתמשים.

מודלים של רשתות נוירונים עמוקות (DNN) יכולים לטפל במגבלות האלה של מטריצות פירוק לגורמים. מספרי DNN יכולים לשלב בקלות תכונות שאילתה ותכונות של פריטים (בגלל הגמישות של שכבת הקלט של הרשת), וזה יכול לעזור לתעד את תחומי העניין הספציפיים של המשתמש ולשפר את הרלוונטיות של המלצות.

Softmax DNN להמלצה

אחד המודלים האפשריים של DNN הוא softmax, שמתייחס לבעיה כבעיית חיזוי מרובת סיווגים, שבה:

  • הקלט הוא השאילתה של המשתמש.
  • הפלט הוא וקטור הסתברות שגודלו שווה למספר פריטים בקורפוס, שמייצגים את ההסתברות לקיים אינטראקציה כל פריט; לדוגמה, ההסתברות ללחוץ על מודעה או לצפות בה סרטון ב-YouTube.

קלט

הקלט ל-DNN יכול לכלול:

  • תכונות צפופות (לדוגמה, זמן צפייה וזמן צפייה מאז הצפייה האחרונה)
  • תכונות מעטות יותר (לדוגמה, היסטוריית צפייה ומדינה)

בניגוד לגישה לפירוק לגורמים של מטריצות, אתם יכולים להוסיף תכונות צדדיות כמו הגיל או המדינה. נסמן את וקטור הקלט ב-x.

תמונה שמדגישה את שכבת הקלט ברשת נוירונים עמוקה מסוג softmax
איור 1. שכבת הקלט, x.

ארכיטקטורת מודל

ארכיטקטורת המודל קובעת את המורכבות והאקספרסיביות של המודל. באמצעות הוספת שכבות מוסתרות ופונקציות הפעלה לא ליניאריות (לדוגמה, ReLU), המודל יכול לתעד קשרים מורכבים יותר בנתונים. אבל, לפעמים הגדלת מספר הפרמטרים בדרך כלל מקשה על המודל רכבת ויקר יותר. נציין את הפלט של הפונקציה בשכבה של \(\psi (x) \in \mathbb R^d\).

תמונה שמדגישה את השכבות המוסתרות ברשת נוירונים עמוקה מסוג softmax
איור 2. הפלט של השכבות המוסתרות, \(\psi (x)\).

פלט Softmax: התפלגות הסתברות חזויה

המודל ממפה את הפלט של השכבה האחרונה, \(\psi (x)\), באמצעות להתפלגות של הסתברות \(\hat p = h(\psi(x) V^T)\), שבה:

  • \(h : \mathbb R^n \to \mathbb R^n\) היא הפונקציה ה-softmax, ניתן על ידי \(h(y)_i=\frac{e^{y_i}}{\sum_j e^{y_j}}\)
  • \(V \in \mathbb R^{n \times d}\) היא המטריצה של המשקולות ו-softmax.

שכבת ה-softmax ממפה וקטור של ציונים \(y \in \mathbb R^n\) (שלפעמים נקרא logits) להתפלגות של הסתברות.

תמונה שמציגה התפלגות חזויה של הסתברות ברשת נוירונים עמוקה מסוג softmax
איור 3. ההתפלגות החזויה של ההסתברות, \(\hat p = h(\psi(x) V^T)\).

פונקציית אובדן

לבסוף, מגדירים פונקציית הפסד שמשווה בין הנתונים הבאים:

  • \(\hat p\), הפלט של שכבת ה-softmax (התפלגות הסתברות)
  • \(p\), עקרונות הבסיס, שמייצגים את הפריטים שיש למשתמש הייתה אינטראקציה איתם (לדוגמה, סרטוני YouTube שהמשתמש לחץ עליהם או צפה בהם). אפשר לייצג את ההתפלגות הזאת כהתפלגות מנורמלת של ריבוי חם ).

לדוגמה, אפשר להשתמש בהפסד האנטרופיה כי אתם משווים שתי התפלגויות של הסתברות.

תמונה שמציגה את פונקציית האובדן ברשת נוירונים עמוקה מסוג softmax
איור 4. פונקציית האובדן.

הטמעות Softmax

ההסתברות של הפריט \(j\) נקבעת לפי \(\hat p_j = \frac{\exp(\langle \psi(x), V_j\rangle)}{Z}\), כאשר \(Z\) הוא קבוע נירמול שלא תלוי ב- \(j\).

במילים אחרות, \(\log(\hat p_j) = \langle \psi(x), V_j\rangle - log(Z)\), כך שהסתברות היומן של פריט \(j\) היא (עד קבוע נוסף) את המכפלה של שני \(d\)-וקטורים ממדיים, שניתן לפרש בתור הטמעות של שאילתות ופריטים:

  • \(\psi(x) \in \mathbb R^d\) הוא הפלט של השכבה המוסתרת האחרונה. אנחנו קוראים לכך 'הטמעת השאילתה' \(x\).
  • \(V_j \in \mathbb R^d\) הוא הווקטור של משקולות שמחברות את השכבה המוסתרת האחרונה לפלט j. אנחנו קוראים לו 'הטמעה של פריט' \(j\).
תמונה שמציגה הטמעות ברשת נוירונים עמוקה מסוג softmax
איור 5. הטמעה של הפריט \(j\), \(V_j \in \mathbb R^d\)

פירוק DNN ומטריצות

גם במודל ה-softmax וגם במודל הפירוק לגורמים של מטריצות, המערכת לומדת וקטור הטמעה אחד \(V_j\) לכל פריט \(j\). מה שנקרא מטריצת הטמעת פריטים \(V \in \mathbb R^{n \times d}\) במטריצה הפירוק לגורמים הוא עכשיו מטריצת המשקולות של שכבת הsoftmax.

עם זאת, הטמעות השאילתות הן שונות. במקום ללמוד הטמעה אחת \(U_i\) לכל שאילתה \(i\), המערכת לומדת מיפוי מתכונת השאילתה \(x\) להטמעה \(\psi(x) \in \mathbb R^d\). לכן אפשר להתייחס למודל ה-DNN הזה כאל הכללה של מטריצה שבו מחליפים את צד השאילתה בעמודה לא ליניארית \(\psi(\cdot)\).

האם אפשר להשתמש בתכונות הפריט?

האם אפשר ליישם את אותו רעיון גם בצד הפריט? כלומר, במקום ללמוד הטמעה אחת לכל פריט, האם המודל יכול ללמוד פונקציה לא ליניארית שממפה לתכונות של הפריט בהטמעה? כן. כדי לעשות זאת, צריך להשתמש רשת נוירונים חוזרת, שמורכבת משתי רשתות נוירונים:

  • אחת מתכונות השאילתות של רשת נוירונים \(x_{\text{query}}\) להרצת שאילתה על הטמעה \(\psi(x_{\text{query}}) \in \mathbb R^d\)
  • תכונה אחת של פריט במפות של רשת נוירונים \(x_{\text{item}}\) להטמעת פריטים \(\phi(x_{\text{item}}) \in \mathbb R^d\)

אפשר להגדיר את הפלט של המודל כמכפלה של המודל \(\langle \psi(x_{\text{query}}), \phi(x_{\text{item}}) \rangle\) חשוב לשים לב שזה כבר לא מודל Softmax. המודל החדש חוזה ערך אחד לכל צמד \((x_{\text{query}}, x_{\text{item}})\) במקום וקטור הסתברות לכל שאילתה \(x_{\text{query}}\).