פיתוח מערכת AI מבוססת רשתות נוירונים גרפיות (GNN)

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

תחומי פיתוח AI

שאלות נפוצות

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

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

למה רשתות נוירונים גרפיות מאבדות דיוק על נתונים חיים

על מדגם מוחזק רשתות נוירונים גרפיות מציגות איכות גבוהה, אבל במסלול העבודה דיוק המודל על נתונים אמיתיים יורד — לפעמים בחצי. הסיבה כמעט אף פעם לא בארכיטקטורה: נשברת החוליה "נתונים — גרף — מודל".

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

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

השלישי — אי-התאמה בין תמצית נתונים לזרימת אירועים. האימון מתבצע על חיתוך באצווה עם אגרגציות ועיכוב יומי, אבל בעבודה אירועים מגיעים באיחור וכפילויות. המאפיינים מחושבים לפי חלונות שונים, והגרף בכניסה למודל נראה אחרת מאשר באימון.

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

מה נותן המימוש: אפקט בגדלים מדידים

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

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

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

מצבי אימון והסקה: מה מתאים למשימה

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

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

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

בפועל משלבים מצבים: האימון מתבצע לפי תמצית, ההסקה — בזרימה, והכללים מבטחים החלטות קריטיות.

שלבי העבודה: מביקורת נתונים ועד מסירת המודל

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

  1. ביקורת נתונים. מפרקים את המקורות: באילו טבלאות, יומנים ושירותים נמצאות הישויות, ובאילו — הקשרים ביניהן. מתעדים ערכים חסרים, כפילויות, רשומות מיושנות ותדירות עדכון.
  2. תכנון סכימת הגרף. מגדירים סוגי צמתים וקשתות, כיוון קשרים, משקלים וחתימות זמן. את הסכימה בודקים מול ההיגיון התחומי: קשר שאינו קיים בתהליך האמיתי לא יופיע בגרף.
  3. הכנת מאפיינים לצמתים ולקשתות. מביאים מאפיינים לצורה אחידה, מקודדים קטגוריות, מנרמלים שדות מספריים, מוסיפים אגרגציות לפי צמתים שכנים.
  4. כיול האימון. בוחרים ארכיטקטורה לפי המשימה — סיווג צמתים, חיזוי קשרים או דירוג, — וכן עומק התפשטות ורגולריזציה.
  5. בדיקה על מדגם מוחזק. את האיכות מחשבים על תקופה שלא השתתפה באימון, עם חלוקה לפי זמן: חלוקה אקראית יוצרת זליגה ונתונים מנופחים.
  6. השוואה לפתרון הנוכחי. מריצים את המודל ואת הלוגיקה הקיימת על אותה ערכת נתונים ומראים את ההפרש במדדים, ולא רק את ערכם המוחלט.
  7. קבלה ומסירה. מוסרים משקלים, תצורות אימון, סכימת גרף, סקריפטים לבניית הגרף ותיעוד; מתעדים את המדדים שהושגו ואת נוהל האימון מחדש.

מה נשאר אצלכם: סכימות, תצורות, נהלים

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

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

הכול נמצא במאגר שלכם ובאחסון שלכם — ההרשאות נשארות אצלכם, אנחנו לא מחזיקים עותקים אצלנו.

מקרה בוחן: איך הפחיתו את שיעור ההתראות השגויות בחצי

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

האות הופעל על התאמה פורמלית של שדה, ושיעור ההתראות השגויות הגיע ל-58% — אנליסטים בדקו ידנית שישה מקרים מתוך עשרה.

מה שינו

מודל הנתונים הועבר לגרפי: ישויות הפכו לצמתים, ופעולות, חוזים ופרטי זיהוי משותפים — לקשתות עם סוג וחתימת זמן. מזהים עברו נורמליזציה וכפילויות אוחדו, כדי שצד מתקשר אחד לא יתפצל למספר צמתים; אחסון הגרף נבנה על Neo4j.

מאפיינים מחשבים לפי סביבה של 2-3 מעברים, ולא לפי רשומה אחת, ולכן להערכת הסיכון נכנסים מתווכים והתאמות מהדרג השני.

מדדים לפני ואחרי

מדד לפני אחרי
שיעור התראות שגויות 58% 27%
רגישות על תיוג האנליסטים 0.71 0.89
עומק השרשראות הנמצאות 2 צמתים 5 צמתים
בדיקת אות אחד שעות דקות

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

מודלים גרפיים או טבלאיים: מה לבחור למשימה?

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

מודל טבלאי רואה שורה: מאפייני האובייקט עם ערכים ידועים. גרפי מוסיף ערוץ שני — קשתות, שלפיהן בכל שכבה נאספים מאפייני שכנים, והאובייקט מקבל הקשר סביבתי.

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

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

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

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

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

ספקות טכניים: עמידות, נתונים, תמיכה

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

מה קורה כשמופיעים בגרף צמתים וקשרים חדשים?

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

האם תיוג יספיק אם יש מעט ממנו?

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

המקור שינה את סכימת הנתונים — יהיה צורך לכתוב את המודל מחדש?

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

מה נשאר לנו לאחר מסירת הפרויקט?

תצורה, סכימת מאפיינים, נוהל אימון מחדש ולוח בקרת הטיה — זה מספיק כדי לתחזק את המודל בכוחות עצמכם. עובדים על סטאק פתוח עם קהילה חיה, כולל PyTorch Geometric: מהנדסים למסלול כזה אפשר למצוא בשוק, בלי תלות בנו.

נדון במשימה: נחזור עם הערכה ותוכנית עבודה

כדי שהערכת הפרויקט תישען על עובדות, ולא על הנחות, להתחלה מספיק תיאור המשימה וגישה לחיתוך נתונים. העיקר ברשתות נוירונים גרפיות — לא נפח הטבלאות, אלא המבנה: אילו ישויות הופכות לצמתים, אילו קשרים ביניהן משמעותיים, האם יש תיוג וכמה часто הגרף משתנה. שלחו:

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

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