תוך כדי למידה חשבתי לעצמי: "היי, במקום לסכם, למה שלא אכתוב שרשור?".
אז הנה, היום נדבר על רשתות נוירונים גרפיות (GNNs).
מה זה גרף, למה זה טוב, למי זה עוזר ואיך זה קשור למלחמה בבוטים בטוויטר ול #בינהמלאכותית?
בואו נגלה #פידאטה, #פידטק🧵
(כרגיל - אין צורך בידע במתמטיקה או מחשבים)
(1/14) נתחיל בהתחלה. בכיתה ז' פתאום נכנסות אותיות למתמטיקה. לא רק פעולות חשבון, אלא איזה X מוזר שצריך למצוא. גרף הוא רעיון מתמטי כמו זה, שפשוט מגיח לחיים בשלב כלשהו באוניברסיטה. כמו שהX הזה הוא ציור שבא לתאר רעיון, הגרף הוא ציור של נקודות שמחוברות זו לזו, גם הן מתארות רעיון.
(2/14) טוויטר הוא סוג של גרף - כל נקודה ("צומת") היא צייצן, ואפשר לחבר אותה לכל מי שעוקב אחריה בחץ ("קשת"). שתי נקודות מחוברות נקראות "שכנות". אפשר להשתמש בחצים כדי לתאר קשר חד צדדי, או בקו לקשר דו"צ. גרפים מתארים המון תופעות בעולם שלנו, לא רק רשתות חברתיות. מולקולה היא סוג של
(3/14) גרף, עם חיבורים בין האטומים. מפות דרכים הן גרפים, כאשר כל צומת הוא, ובכן, ממש צומת. הקשתות הן הכבישים. אפשר להמיר הרבה בעיות בחיים לבעיות מתמטיות שקשורות לגרפים. למצוא את הדרך הקצרה ביותר בין שני צמתים, למצוא קבוצה של צמתים שלא מחוברים, למצוא מסלול מעגלי ועוד המון.
(4/14) את הרעיון של גרף אפשר להרחיב מאד. אפשר להחליט שעל כל קשת יש "משקל", נניח כמה זמן לוקח לרכב לעשות את הדרך מצומת לצומת. אפשר להחליט שכל צומת כולל רשימה של מאפיינים. אם כל צומת הוא צייצן, אני יכול לחליט שהצומת כולל את המידע על ארץ הלידה שלו והאם הוא קירח.
(5/14) אמרנו טוויטר? אמרנו #בינהמלאכותית? איך אפשר לקחת יוזר, לייצג את כל הקשרים השונים שלו, התגובות שלו ומה לא כגרף - ולנסות לחזות אם מדובר בבוט שרק מהדהד מפלגה או מסר? כדי לענות על זה, צריך רגע להבין איך בכלל אפשר להכניס גרף לאלגוריתם לומד. הרי זה ציור. אז גרפים אפשר לתאר גם
(6/14) כטבלאות. נתאר את העמודות כ"עוקב" והשורות כ"נעקב", ככה שאם יש 1 אז הצייצן בעמודה עוקב אחרי הצייצן בשורה, ואם יש 0 הוא לא. אפשר גם להשתמש בשם המתמטי המפונפן של זה: "מטריצת שכנויות". אם יש לכל צומת המון מאפיינים בתוכו, אפשר להשתמש באותו רעיון וליצור טבלה נוספת,
(7/14) בה כל עמודה היא רשימת כל המאפיינים של אותו צומת (רק בלי השכנויות). התוצאה היא שתי טבלאות מידע. האחת נותנת מידע על הקשרים, והשניה על המאפיינים של הצמתים. אוקי, מצאנו דרך "לארוז" את המידע בצורה נוחה. מה עכשיו?
(8/14) הרי יש לנו מידע בשתי טבלאות שונות, וצריך להכניס לאלגוריתם סוג של חיבור שלהן. כלומר, אני רוצה שהאלגוריתם יקבל בו זמנית את שתי הטבלאות, וחשוב יותר - אנחנו רוצים שילמד מהן משהו. שתהיה גם דרך לתת משקל (זוכרים מהשרשור השני?) לכל המידע הזה כדי לחזות או לגלות משהו על הגרף.
(9/14) במקום הסברים מוכללים, נרוץ על דוגמא. לכל צייצן חשוד בטוויטר נבנה גרף כך: כל מי שהוא אי פעם הגיב לו או עשה לו לייק יהיה שכן שלו, ובכל צומת של שכן כזה ימצא המידע של כמה לייקים וכמה תגובות הוא קיבל מהצייצן.
(10/15) כעת יש לנו את שתי הטבלאות המדוברות: שכנויות (למי הגיב\עשה לייק) ותכונות (כמה לייקים\תגובות). מכיוון שבטוויטר יש מיליארדי משתמשים ואי אפשר להכניס את כולם לטבלה, הטבלאות שלנו יכללו פוליטיקאים, עיתונאים ודמויות מפתח שרלוונטיות להדהוד המסרים שאנחנו חושדים שמבוטטים (מלשון בוט)
(11/14) הבחירה של מי ומה להכניס לטבלאות היא בדיוק בחירת מאפיינים רלוונטיים (שוב שרשור 2 שמצורף בסוף). לשתי הטבלאות מצטרפת טבלה שלישית, טבלת המשקלים. הטבלה הזו היא ה"מוח" של האלגוריתם, והיא תלמד איזה סוגים של קשרים ודפוסי התנהגות מתאימים לבוטים.
(12/14) נאתחל את הטבלה הזו במספרים אקראיים, ובכל פעם נשתמש בה כדי לחזות האם יוזר הוא בוט או לא. בכל שלב, האלגוריתם צריך "לאחד" את שלוש הטבלאות - שכנויות, מאפיינים ומשקלים. ככה בנויה רשת הנוירונים הגרפית. במקרה שלנו האיחוד הזה פולט מספר. 1 אם בוט, 0 אם לא. נוסחה מצורפת למתקדמים.
(13/14) הארכיטקטורה הזו יכולה לשמש אותנו לחזות דברים שקשורים בכל הגרף כבדוגמא, אך גם דברים ספציפיים על הצמתים או על הקשתות. מכאן רק תפעילו את הדימיון איך אפשר להשתמש ברשתות האלה ללמוד דברים מגניבים על כל דבר שאפשר לייצג כגרף.
(14/14) אז אם הגעתם עד כאן - כבוד!
מה שתפס אותי כאן הוא איך לוקחים משהו ציורי כזה ומזינים אותו לתוך מערכת לומדת שמכירה רק טבלאות ומספרים. זה מבריק בעיניי! 😁
ממש אשמח לשמוע ממי שלא מגיע מהתחום - זה מרגיש ברור? אני בדרך הנכונה?
מקורות והערות:
כרגיל, לפעמים אני לא מדייק למען הפשטות והנעימות של הקריאה, נא לקטול במשורה.
שרשור הרעיון של מאפיינים בלמידת מכונה -
פוסט של האקדמיה ללשון עברית על זה שצומת זה זכר -
facebook.com/AcademyOfTheHe…
הבלוג של @thomaskipf -
tkipf.github.io/graph-convolut…
Share this Scrolly Tale with your friends.
A Scrolly Tale is a new way to read Twitter threads with a more visually immersive experience.
Discover more beautiful Scrolly Tales like this.