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

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

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

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

DNN Softmax להמלצה

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

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

הזנת קלט

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

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

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

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

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

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

תמונה המדגישה את השכבות המוסתרות ברשת נוירונים רכה
איור 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)\).

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

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

  • אחת התכונות של מפות Google לחיבורות רשת נוירונים \(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}}\).