תוך כדי למידה חשבתי לעצמי: "היי, במקום לסכם, למה שלא אכתוב שרשור?".
אז הנה, היום נדבר על רשתות נוירונים גרפיות (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) אז אם הגעתם עד כאן - כבוד!
מה שתפס אותי כאן הוא איך לוקחים משהו ציורי כזה ומזינים אותו לתוך מערכת לומדת שמכירה רק טבלאות ומספרים. זה מבריק בעיניי! 😁
ממש אשמח לשמוע ממי שלא מגיע מהתחום - זה מרגיש ברור? אני בדרך הנכונה?
מקורות והערות:
כרגיל, לפעמים אני לא מדייק למען הפשטות והנעימות של הקריאה, נא לקטול במשורה.
שרשור הרעיון של מאפיינים בלמידת מכונה -
לקח לי יותר מידי זמן לכתוב את השרשור הזה, אבל אחת ולתמיד:
"רשת נוירונים", מה זה ואיך זה עובד.
בגלל (בזכות!) @StavKislev רוב העוקבים שלי מ #פידרפואה, אז כל האנלוגיות כאן יהיו מהתחום. #פידאטה , #פידטק 🧵
(כרגיל - אין צורך בידע במתמטיקה או במחשבים. או ברפואה.)
(1/16) נתחיל רגע בשאלה פילוסופית - מה המשמעות של הביטוי "ליישם ידע"? מה התוצר של "ללמוד"?
למידה היא כמו מפעל.
אל מפעל כתר נכנסים בלוקים של פלסטיק, ויוצאים כיסאות מהודרים ומוכנים לקטטה. משהו קורה שם באמצע במפעל של כתר.
כשרופא מאבחן מחלה, הוא מכניס אל תוך המוח
(2/16) את כל מדדי החולה - ופולט החוצה "עגבת"!
רשת נוירונים היא ניסיון לחקות את מה שקורה שם באמצע, בשפה שמחשב מבין.
הרשת מקבלת המון מספרים, ומוציאה החוצה המון (או מעט) מספרים. כן, זה עד כדי כך פשוט. יש שלושה עניינים מעניינים:
מה הם המספרים האלה, ואיך יוצרים אותם ומה משמעותם.
(1/14) על הקונץ של @ClalitResearch למלחמה בקורונה עם #בינהמלאכותית.
בשרשור הקודם נחשפתי לעובדה המדהימה (!) שכבר במרץ 2020 (!!) היה לקופ"ח כללית מודל מתפקד לחיזוי תמותה של חולי קורונה. מה אפשר ללמוד ממנו? #פידאטה וקצת #פידרפואה על עצי החלטות ויערות 🧵
(2/14) נתחיל באמ;לק רציני: לכללית היה כבר מודל חיזוי לשפעת, אותו הם לקחו ובו ביצעו התאמות לקורונה. זהו, סיימנו, תודה. סתם. האמת שמה שאני באמת רוצה לספר לכם הוא מה עומד בבסיס מודל השפעת. תופתעו לגלות כמה זה פשוט: עץ החלטות (או נכון יותר - יער).
(3/14) עץ ההחלטות הוא אחד מעמודי התווך של עולם ה #AI, והוא עושה משהו ממש הגיוני: הוא יודע לקחת פיסת מידע (נתוני חולה, תמונה וכו) ולשאול עליה המון שאלות. לשאלות תשובות קטגוריות. אפשר כן\לא, אבל גם נגיד על "גיל?" אפשר לענות "מתחת ל30"\"בין 30 ל60"\"מעל 60"