חצי שנה לפני הפוגרום, במרץ 2023, טוויטר של אז,
ואיקס היום, ביצעה מהלך חסר תקדים בהיסטוריה של הטכנולוגיה המודרנית.
חשיפה פומבית של קוד המקור לאלגוריתם ההמלצות,
זה שאחראי לסדר הציוצים שאני ואתם רואים ב-For You.
אילון מאסק, הקשקשן עם הבלורית הבטיח וקיים, עידן חדש של שקיפות, פלטפורמה גלויה יותר,
הבטיח וסיפק לתעשיה, והאקדמיה, הצצה נדירה לתוך הקרביים
של מה שהיא היום אחת ממכונות התודעה הגלובליות.
צריך להבין,
אלגוריתם של חברה,
בטח רשת חברתית, נחשב לסוד מסחרי סופר שמור,
"קופסה שחורה",
כמו הנוסחה למים השחורים של קוקה קולה.
בפרק הזה נצלול למערכת שמאפשרת
ל-X למיין 500 מיליון ציוצים תוך שניה וחצי,
ונראה איך אפשר להשאיל חלקים מהארכיטקטורה למיזם
שלכם, או לנצל אותם להגברת המוניטין שלכם,
ב-X ומעבר.
האתגר המרכזי של X הוא סקייל ומיידיות. בניגוד לנטפליקס, ואפילו אמזון,
שבהן הקטלוג הוא סטטי יחסית, טוויטר היא פלטפורמה של "כאן ועכשיו".
אמרנו, חצי מיליארד ציוצים בכל רגע נתון, מתוכם צריך לבחור 1,500
רלוונטים ביותר תוך חלון זמן אפסי. כישלון במשימה שווה לחווית משתמש איטית,
משעממת וגם - נטישה.
הבעיה המרכזית של כל אלגוריתם המלצות, וזה לא משנה אם אתה טינדר או Uber,
היא דילמת ה-Multi-Armed Bandit.
תדמיין שעלית על אלגנט,
יצאת לקזינו בלג'יו או MGM Grand (מפרק 38) ואתה עומד בפני 10 מכונות מזל זהות.
אתה משלשל quarter לימנית ביותר והיא משלמת לך מיד.
אתה מוסיף עוד 4 ומפסיד את כולם.
לצידך עוד 9 מכונות שמשלמות בהסתברות שונה,
אבל אתה לא יודע אם להישאר בזו שנתנה לך את ה"ברכה" או לנסות אחת חדשה.
ברכותיי - אתה חלק מניסוי Exploitation vs. Exploration
(ניצול מול גילוי, או מיצוי מול חיפוש). בעיה סופר מעניינת, גם באדטק - כי
בכל פעם שאתה מחפש חיתולים למבוגרים, גוגל צריכה להחליט, אם לתת לך מודעה
שאחוז הלחיצה עליה קבוע ב-3%, או לנסות מודעות חדשות שהן כרגע ב-0.8% - אולי
הדאטה שלהם ישתנה אם יראו יותר טראפיק. הפיתרון הקלאסי, epsilon-greedy - בוא נשים
90% על הסוס המוביל וב-10% ננסה את האחרים.
אבל מה שעובד טוב לגוגל (וזה שווה פרק שלם), פחות מתאים
לאיקס, שבחרה להיות פחות חמדנית ויותר נועזת -
רק 50% מהתוכן שתראה בפיד יהיו אנשים שאתה עוקב אחרים
או In-Network, ו-50% תוכן מאנשים אחרים Out-of-network.
הבחירה הזו, היא המשימה הראשונית של ה-Mixer,
שירות שהוא "הברמן" ותפקידו לקבל את ה-
בקשה ל-Feed חדש,
טרי ורענן, ולתזמר את התהליך מול עשרות שירותים פנימיים, כמו משפך רב-שלבי.
השלב הראשון, איסוף המועמדים. אמרנו, 50% ציוצים מאנשים שאתה עוקב אחריהם,
אבל אילו? יש אנשים שעוקבים אחרי אלפים.
הבחירה של איקס מתבצעת באמצעות מודל RealGraph, שמנבא את הסבירות לאינטראקציה
בין משתמשים, מעין גרף סבוך שכל קשת בין משתמש מקבלת ציון.
האם יפה נוטה לעשות לייק למוט'ל?
האם הם מתייגים אחד את השני?
מתכתבים בהודעות פרטיות?
אם יש לי היסטוריה של האינטראקציות, אני יכול למנוע הצפה של הפיד ע"י חשבונות שהם "רעש".
גם אני עוקב אחרי מוטל' אבל נמאס לי מהתוכן שלו ואני מתבייש להוריד עוקב -
המודל של RealGraph יקח את זה בחשבון -
אני יראה הרבה פחות ממנו, הוא ידעך לי, אבל הקשר ביננו יכול להתחזק שוב אם אחזור להגיב לו.
אבל איך בוחרים 50% ציוצים מחוץ לבועה שלי? באמצעות שתי גישות. גישת ה-Social
Graph, שמניחה - "אם אנשים שאני מעריך התעניינו בציוץ הזה, כנראה שגם אני אתעניין בו" - מנגנון
של "הוכחה חברתית". השניה - גישת ה-Embedding או מרחבי ההתאמה שמסתכלת לא על מי עשה לייק,
אלא על איזה תוכן. גישה שמבוססת על ייצוג וקטורי, מהסוג שמשתמשים בו בחיפוש סמנטי -
"תביא לי תוכן על כלבים,
פחות אם חיפשתי נקניק,
יותר אם חיפשתי קרציה". כדי למצוא תוכן קשור, אבל לא בהכרח דומה, איקס הייתה צריכה
למפות את תחומי העניין האנושיים למספרים, וגם את זה היא עשתה, עם שני מודלים מהפכניים.
הראשון, SimCluster ממפה 145,000 קהילות ייחודיות שחולקות עוקבים, קצב והשפעה דומים.
שבטים דיגיטליים וירטואליים,
למשל "חובבי NBA",
"מפתחי JavaScript" או "פנסיונרים של ועד
בית". לכל משתמש מחושב וקטור
(כיוון ועוצמה) לכל אחד מהשבטים האלה.
אם אתה עוקב אחרי הרבה שחקני כדורסל,
יהיה לך ציון גבוה בקהילות ספורט.
השני, TwHIN או Twitter Heterogeneous Information Network, ממפה קשרים
ברמת התוכן ובונה גרף ידע שמחבר לא רק ציוצי
טקסט, אלא יכול לזהות שמי שעשה לייק ל-BYD, עשוי
להתעניין בתמונת משפיען שצבע את הטסלה שלו בורוד.
למרות 500 מיליון ציוצים ביום, איקס משתמשת בווקטורים כדי להתגבר על בעיית דלילות.
זה חצי מיליארד ציוצים, אבל רובם חדש לחלוטין.
כשממקמים משתמשים וציוצים במרחב רב מימדי ענק, אז גם
אם תהיה ממש בפינה, ולא צייצת מעולם, תמיד
יהיה מישהו או משהו מעניין לחשוף אותך אליו, ואם אין - אפשר להגדיל את רדיוס החיפוש.
עד כאן רק אספנו מועמדים.
1,500 ציוצים שעוברים לשני שלבי דירוג. הקל, שמסיר תוכן שהוא בבירור לא רלוונטי, ספאם,
או שמפר מדיניות, וגם נותן Boost התחלתי משמעותי לציוצים עם תמונות או וידאו. ואז
הכבד, שהוא רשת נוירונים עמוקה,
אולי הלב הכי פועם של המערכת, בה כל ציוץ שנותר מקולף לקלטים, ונכנס למודל
שמנבא את ההסתברות שהמשתמש יבצע כלפיו פעולה מסוימת, כמו לייק או תגובה.
נאמר וצייצתי -
"אני בתחנת דלק דרורים, והבייגלה אוסם החדש עושה אותי צמא!".
הציוץ הזה מפורק לאלפי פיצ'רים
(מספר מילים? 9,
מספר סימני קריאה? 1.
כולל אמוג'י?
לא.
מזכיר ברנד מפורסם?
כן,
2,
מכיל שגיאות כתיב?
לא.
קללות?
לא.
סימני פיסוק - יש. מיקום? השרון.
יום בשבוע?
שלישי. זמן?
ערב מוקדם.
אלפי ערכים לכל פיצ'ר, וזה בסדר אם יש פיצ'רים בלי ערך, נכנסים למכונה שמפיקה 8 ציונים -
מה הסיכוי שאתן לזה לייק? נניח 30%, שאצייץ את זה מחדש? 2%. שאחסום?
חצי אחוז. שאדווח על זה? כנראה אפס. אבל איך ה-8 ציונים האלה נקבעים? בלמידת
מכונה קלאסית.
מישהו ב-X
לקח מיליארד ציוצים,
חישב להם את כל הפיצ'רים האלה ובדק היסטורית,
כמה מהם קיבלו לייק,
כמה נחסמו. בלמידת מכונה קלאסית, אימון של מיליארדים, שיכול לקחת ימים או שבועות, פולט בסוף
משקלים, למשל שקללה עסיסית מעלה את ה-engagement פי 2, אבל גם את הסיכוי לחסימה.
אימון של מיליארדים מוצא גם הקשרים שהם לא ברורים לבן אנוש, שמורכבים בכלל
מכמה פיצ'רים, מובהקים סטטיסטית רק בתנאים מסוימים, או שצריך להעיף אותם בכלל.
למידת מכונה קלאסית הייתה, ועודנה, הדרך הכי מרתקת לחזות את העתיד,
אבל המודל הזה צריך הרבה מאוד דאטה.
טוויטר לא חשפה את המשקלים של המודל - אנחנו לא
יודעים כמה "שווה" שימוש בסימני פיסוק או אמוג'י. טוויטר
גם לא חשפה את הדאטה שהשתמשה בו לאימון -
היא לא מצאה דיסקט גדול מספיק וגם לא יכלה לחשוף מידע פרטי על משתמשים.
היא גם השחירה את קבצי הקונפיגורציה,
ניקתה את היסטוריית השינויים לאורך השנים ולא פירטה על מנגנוני
ה-Trust & Safety לזיהוי תוכן בעייתי.
טוויטר כן חשפה כמה שווה כל אינטראקטציה בציון הסופי.
אמרנו, 8 ציונים, נניח בין 0 ל-100%,
אבל הם צריכים להתלכד לערך אחד שאיתו נמיין את כל המועמדים.
טבלת האינטראקציות הזו, היא המפתח להבנת ה-DNA
של איקס.
לייק למשל,
הוא אינדיקטור חלש,
פעולה "זולה" ופסיבית ששווה לכל היותר נקודת בסיס אחת.
ריטוויט או ציוץ מחדש שווה כבר 20 -
אינדיקציה חזקה להפצה, לכך שהמשתמש מוכן להמר עם המוניטין שלו על התוכן.
תגובה? היא סינגל חיובי של 27 עד 54 - איקס
רוצה להיות "כיכר העיר" ותגובה מעידה על מעורבות אקטיבית.
והגביע הקדוש? שיחה דו כיוונית או תגובה עם תשובה של המחבר -
משקל של 75 עד 150 - האינדיקטור החזק ביותר לאיכות.
יש גם קליק לפרופיל, 12 עד 24, שמביע עניין בזהות היוצר מעבר לתוכן הרגעי,
ושהייה של מעל 2 דקות, משקל של 22 שרומז על תוכן איכותי.
בצד ההפוך,
דיווח, מדרדר את הציון לתהום במשקל מינוס 369, והשתקה (או חסימה) מייצרים סיגנל שלילי של 74.
המשקל האסטרונומי שניתן לשיחה הוא חותמת לכך,
שאיקס היא פחות פלטפורמת Broadcast ויותר פלטפורמת Conversation.
ה"נוסחה" הפשוטה לוויראליות היא לא רק לייקים,
אלא יצירת דיון.
אבל בטוויטר שום דבר לא פשוט. ההבדל בינה לפלטפורמות אחרות היא ברכיב ה-Recency.
באיקס, ציוץ בן 24 שעות נחשב "מת", עם דעיכה של 50% כל 6 שעות.
ב-TikTok וידאו יכול להתפוצץ שבועיים אחרי שעלה, ובנטפליקס -
סרט בורקס צרפתי מלפני עשור יכול להיות מומלץ היום.
יוצרים באיקס צריכים לשמור על דופק גבוה ולייצר תוכן,
בתדירות, אבל גם להשתייך, כמו בבני-ברק לקהילה הנכונה.
אם תבחרו נישה אחת ותתמידו בה (באנגלית: "Niche Down"), תוכלו
לבנות את הסמכות שלכם בתוך שבט ספציפי. וגם להיפך -
אם אתה מומחה פיננסי, ציוץ על כדורגל עלול לפגוע, כי
הקהילה הפיננסית, שעוקבת אחריך כמו חתולה, לא תגיב לו.
האלגוריתם עשוי לסמן אותך, זמנית, כפחות רלוונטי.
עוד משהו, וזה מהשנתיים האחרונות, הוא הדרישה של X לשלם כדי לשחק.
מנויי Premium (וי כחול) מקבלים Boost של פי 2 עד 4 בחשיפה.
עבור מותג או יוצר רציני,
המנוי הזה הוא כנראה הוצאה עסקית הכרחית, או נחיתות אלגוריתמית מובנית.
וכמובן, אל תהיו בוט. בקוד יש המון פילטרים שליליים,
מ-HighCryptoSpam דרך UntrustedUrl והפעלת ShadowBan על משתמשים -
הסתרת הציוצים שלהם ללא ידיעתם.
יש גם העדפה - לשים לינקים בתגובה הראשונה או בפוסט השני בשרשור,
להימנע מקישור לרשתות מתחרות, ולגוון -
אל תפרסמו את אותו טקסט לעולם.
למפתחים שביניכם -
הריפו חושף דומיננטיות כמעט מוחלטות של שפות JVM.
מעל 60% מהקוד הוא Scala,
שפה פונקציונלית שמצטיינת בטיפול מקבילי, ו-20% ג'אווה.
Python,
השפה הנפוצה בעולמות ה-Data Science מוגבלת בעיקר לאימון המודלים, ולא לוקחת חלק ב-Runtime.
איקס היא מיקרוסרביס ענק שמשתמש ב-Thrift, פרוטוקול RPC שחושף
את מבנה הסכמות והשירותים בבינארי, מעין קטלוג לכל הפעולות,
שמנהל גרסאות ומייצר קוד אינטגרציה לכל שפה. למסד נתונים
מבוזר, היא פיתחה את Manhattan, סוג של Key-Value Store
לאחסון פרופילים,
ציוצים והיסטוריה ארוכת-טווח במבנה מאופטם.
לגרפים, היא בנתה את GraphJet, שמחזיק את כל האינטראקציות האחרונות בזיכרון
כך שיאפשרו סריקה,
traversal או חיפוש נתיב במילישניות.
ה-Message Bus שלה, שמזרים לעיבוד מיליארדי אירועים ביום,
הוא Kafka.
תביטו רגע בטלפון שלכם,
וזה לא חייב להיות X.
עכשיו תשאלו את עצמכם - מי באמת מחליט מה תראו בו?
מי שולף לכם פיסת תוכן מתוך עשרות מיליונים, ודוחף אותה בדיוק כשאתם משועממים,
טעונים רגשית או פגיעים?
זו לא מקריות.
זו הנדסה.
אלגוריתם שמכוונן לכם את התודעה.
ואם הפיד שלנו כל כך רועש ומכעיס
אולי זה לא רק האלגוריתם.
אולי זה כי אנחנו כאלה,
או שהחברים שלנו כאלה.
והאלגוריתם? רק מגביר את הווליום…
עד הפעם הבאה,
תהיו טובים ותמשיכו להיות סקרנים.
יאללה
ביי.