אימון מודלים להמלצות: Two-Tower, ALS, דגימה שלילית

מודלים להמלצות often fail in production due to unfair evaluation: metrics on random splits look great, but in reality the system brings no value. We train custom recommendation systems with time-based splits and proper negative sampling, so the model works in real-world conditions. Our team delivers the project turnkey—from data analysis to deployment and ongoing support.

תחומי פיתוח AI

שאלות נפוצות

העבודות האחרונות

  • פיתוח אפליקציית ווב עבור FEEDME
    פיתוח אפליקציית ווב עבור FEEDME
    1359
  • פיתוח חנות מקוונת לחברת FURNORO
    פיתוח חנות מקוונת לחברת FURNORO
    1330
  • עיצוב לוגו לחברת B2B Advance
    עיצוב לוגו לחברת B2B Advance
    776
  • פיתוח אפליקציית ווב עבור Enviok
    פיתוח אפליקציית ווב עבור Enviok
    1077
  • פיתוח לוגו חברת AIDER
    פיתוח לוגו חברת AIDER
    1022
  • פיתוח CRM עבור Chasseurs
    פיתוח CRM עבור Chasseurs
    1113

אנו מפתחים מודלים מותאמים אישית של המלצות שעובדים בתנאים אמיתיים, לא על מדדים מותאמים יתר על המידה. אימון מודלים של המלצות שלנו משתמש ב-Two-Tower, פירוק מטריצות, דגימה שלילית ופיצול זמני.

מקרה טיפוסי: לקוח מסחר אלקטרוני השתמש בפיצול אקראי, קיבל NDCG@10 = 0.65, אך לאחר הפריסה המודל ביצע ב-0.4. לאחר מעבר לפיצול זמני, המדדים הלא-מקוונים ירדו, אך מבחן ה-A/B הראה עלייה של +5% בהכנסות.

הלקוח ציין: "פיצול אקראי נתן מדדים מנופחים — פיצול זמני התברר כיחיד ההגון." הסטאק שלנו: PyTorch, Hugging Face Transformers, Faiss לחיפוש ANN, ONNX Runtime להסקה. לצוות יש 5+ שנות ניסיון ב-ML ו-50+ מערכות המלצה שנפרסו במסחר אלקטרוני, מדיה ופינטק.

אנו משתמשים ב-Weights & Biases למעקב אחר ניסויים וב-MLflow לניהול מודלים. הזמן ניתוח נתונים מקדים — נעריך את המשימה שלך ונציע את הפתרון האופטימלי.

בעיות שאנו פותרים

יצירת דוגמאות שליליות שגויות

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

מודל ה-Two-Tower שלנו outperforms ALS פי 1.2 ב-NDCG@10, ודגימת דוגמאות שליליות קשות outperforms אחידה פי 1.3 ב-Recall@20.

התחלה קרה למשתמשים ופריטים חדשים

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

הטיה זמנית

תרחישים אמיתיים הם רצפים של פעולות. אם תערבב נתונים באופן אקראי, המודל "רואה" את העתיד במהלך האימון. פיצול זמני עם סטי אימות/בדיקה מבוססי זמן הוא חובה.

איך אנחנו עושים את זה: מקרה מפורט

בין הפרויקטים שלנו נמצא חנות מקוונת עם 5M אינטראקציות ו-200K פריטים. בנינו מודל Two-Tower עם אינדקס HNSW לאחזור. הצינור כלל:

  • עיבוד מקדים של לוגים: הסרת כפילויות, סינון בוטים, שקלול אינטראקציות (רכישה > צפייה);
  • יחס דגימה שלילית 4:1 עם שקלול פופולריות; פיצול זמני: 28 ימים אימון, 7 ולידציה, 7 בדיקה;
  • Two-Tower: מגדל משתמש — שכבת embedding + Dense(256), מגדל פריט — אותו דבר + נרמול L2. Loss — Weighted BCE עם log-weight לדוגמאות חיוביות;
  • אימון 20 אפוקים עם early stopping על NDCG@10, באמצעות AdamW (LR=1e-3). על GPU A100 — 45 דקות;
  • פריסה דרך Triton Inference Server עם מודל ONNX. השהיית p99 — 12 מ״ש.

תוצאה: שיפור NDCG@10 של 22% לעומת בסיס ALS, מבחן A/B מקוון הראה +8% בהוספות לסל.

מדוע דגימה שלילית נכונה חשובה

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

מה מספק פיצול טמפורלי

הערכת מודל על פיצול טמפורלי היא הדרך היחידה לקבל מדדים כנים. פיצול אקראי יכול "להציץ" אל העתיד, ולנפח את התוצאות. NDCG@10 על פיצול טמפורלי מתאם עם תוצאות מבחני A/B מקוונים: סטייה <15%.

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

מודל איכות (NDCG@10) זמן אימון (5M) השהיית הסקה הערות
ALS (פירוק מטריצות) 0.42 30 דקות (CPU) <1 ms בסיס פשוט, ללא מידע צדדי
Two-Tower (Dense 256) 0.53 45 דקות (A100) 3–12 ms גמיש, התחלה קרה באמצעות פיצ'רים
BERT4Rec (transformer) 0.58 4 שעות (A100) 50 ms רצפים בלבד, ללא התחלה קרה

בהשוואה ל-ALS, Two-Tower מספק שיפור של פי 1.2 ב-NDCG@10 עם זמן הסקה דומה.

השוואת אסטרטגיות דגימה שלילית

אסטרטגיה איכות (Recall@20) מהירות אימון מורכבות מימוש
אחידה 0.48 גבוהה נמוכה
מבוססת פופולריות 0.55 בינונית בינונית
שלילית קשה (מקוונת) 0.61 נמוכה (בגלל חישוב מחדש של embedding) גבוהה

בפועל, אנו משלבים שליליות מבוססת פופולריות ושליליות קשות: 80% פופולריות, 20% שליליות קשות. זה מאזן בין איכות למהירות.

התהליך שלנו 1. אנליטיקה: לימוד יומני אינטראקציה, זיהוי צווארי בקבוק (דלילות, התחלה קרה, חוסר איזון). 2. עיצוב: בחירת ארכיטקטורה, פונקציית הפסד, אסטרטגיית דגימה שלילית. 3. מימוש: כתיבת pipeline ב-PyTorch + Hugging Face, אינטגרציה עם מערכת הלוגים שלך. 4. בדיקות: מדדים לא מקוונים (NDCG, recall@k) + בדיקת A/B מקוונת למשך 2–4 שבועות. 5. פריסה: קונטיינריזציה, ניטור (data drift, latency), תיעוד.

לוחות זמנים ועלויות

לוחות זמנים: משבועיים (בסיס + התאמות) ועד חודשיים (צינור מלא עם ארכיטקטורה מותאמת אישית). העלות נקבעת באופן פרטני לאחר ניתוח נתונים. הלקוחות שלנו מדווחים על חיסכון של עד 40% בתשתיות ועל הפחתה של 30% בעלויות התחזוקה הודות לאופטימיזציה של הצינור. ההשקעה האופיינית נעה בין по индивидуальному расчётуל-по индивидуальному расчёту

מה כלול בעבודה

  • מערך נתונים מוכן לאימון מחדש
  • Baseline (ALS או Two-Tower) עם דוח מדדים
  • מודל סופי מאומן (PyTorch/ONNX)
  • תיעוד לשחזור ה-pipeline
  • קוד ה-pipeline (עיבוד מקדים, אימון, הסקה)
  • מדריך לכוונון עדין עם נתונים חדשים
  • מפגש אימון לצוות שלך
  • 30 ימי תמיכה לאחר פריסה
  • ייעוץ בנושא כלי NDCG ו-Temporal Split

קבלו ייעוץ מומחה — נדון בפרויקט שלכם ונציע את הפתרון האופטימלי.