לקח לי יותר מידי זמן לכתוב את השרשור הזה, אבל אחת ולתמיד:
"רשת נוירונים", מה זה ואיך זה עובד.
בגלל (בזכות!) @StavKislev רוב העוקבים שלי מ #פידרפואה, אז כל האנלוגיות כאן יהיו מהתחום. #פידאטה , #פידטק 🧵
(כרגיל - אין צורך בידע במתמטיקה או במחשבים. או ברפואה.)
(1/16) נתחיל רגע בשאלה פילוסופית - מה המשמעות של הביטוי "ליישם ידע"? מה התוצר של "ללמוד"?
למידה היא כמו מפעל.
אל מפעל כתר נכנסים בלוקים של פלסטיק, ויוצאים כיסאות מהודרים ומוכנים לקטטה. משהו קורה שם באמצע במפעל של כתר.
כשרופא מאבחן מחלה, הוא מכניס אל תוך המוח
(2/16) את כל מדדי החולה - ופולט החוצה "עגבת"!
רשת נוירונים היא ניסיון לחקות את מה שקורה שם באמצע, בשפה שמחשב מבין.
הרשת מקבלת המון מספרים, ומוציאה החוצה המון (או מעט) מספרים. כן, זה עד כדי כך פשוט. יש שלושה עניינים מעניינים:
מה הם המספרים האלה, ואיך יוצרים אותם ומה משמעותם.
(3/16) הרעיון המתמטי הוא כזה: אנחנו מאמינים עמוק בלב שבתוך כל המדדים (מאפיינים), נניח: לחץ דם, בדיקות דם וכו, מסתתרת אבחנה. כלומר אפשר לקחת את כל המדדים, להכניס למפעל ולהוציא החוצה אבחנה.
מה קורה במפעל אנחנו שואלים?
אז המפעל מוכר לנו: חיבור, חיסור, כפל, חילוק ואולי
(4/16) קצת חזקות. ממש תרגיל דבילי כזה: לחץ דם כפול 8 ועוד 5, זה ועוד הערך של בדיקת הדם חלקי 2 ועוד 3. את שניהם נחבר וכו..
ומה בסוף? זה תלוי בנו. טעות רווחת היא לחשוב שרשת כזו יכולה ללמוד הכל. לא! אנחנו צריכים להגיד לה בול מה לחפש ולהחליט מראש בדיוק מה יכנס לתוכה. תכף נבין מדוע.
(5/16) נניח ואנחנו רוצים ללמוד לבצע אבחנה מבדלת בין שפעת\קורונה\לא שניהם. אז למודל יכנסו מספר מדדים שנחליט, יופעלו עליהם כל התרגילים המדוברים ונקבל בסוף משהו שנראה כמו בתמונה. ההחלטה של המודל תהיה לפי המספר הכי גבוה.
עכשיו נלך אחורה להתחלה ונחשב - איך הגענו למספרים האלה?
(6/16) חוזרים לכיתה ח'! כל מספר נכנס לתוך תרגיל של קו ישר:
y=mx+n
רק שהפעם הm נקרא "משקולת" והn נקרא "הטיה" (bias). כל עיגול - נוירון.
אל תוך הנוירונים בהתחלה נכנסים המדדים כמו שהם.
לכל קו יש m וn שונים, והם המשחק שלנו כדי לקבל בסוף תשובה נכונה.
(7/16) אחרי שכל המאפיינים עוברים את השינוי הזה, הם מחוברים. ככה פשוט, לערך בודד, בכל נוירון בנפרד.
הערך הזה נכנס ליצור בעל השם המפחיד "פונקציית אקטיבציה". הדוגמא הכי פשוטה היא ReLu - אם הערך גדול מ0 נשאיר אותו, אם הערך קטן מ0 - נהפוך אותו ל0 (דוגמא מספרית בסוף השרשור).
(8/16) אחרי שכל הנוירונים בשכבה השניה קיבלו מספר, והעבירו אותו דרך האקטיבציה - כל התהליך מתחיל שוב, ושוב, ושוב - לפי כמות השכבות שבחרנו שיהיו לרשת. השכבה האחרונה מכילה 3 נוירונים והיא מוציאה בסוף את ההחלטה.
ועכשיו לשאלת השאלות:
איך לעזאזל מגלים את הmים והnים לכל קו כזה ברשת?
(9/16) כאן נכנס הקסם המכונה Back Propagation (בקפרופ). האמת חד משמעית, אבל קיבלנו משהו מערובב. בהתחלה, נגדיר את כל הmים והnים אקראית. בכל פעם נסתכל על הפער בין הרצוי למצוי.
הבקפרופ הוא מניפולציה מתמטית שעונה על השאלה
"איזה נוירון הכי תרם להבדל הזה וכמה?".
(10/16) אחרי הבקפרופ, אנחנו משנים קצת (="קצב הלמידה") את הmים וnים של הנוירונים, ומריצים את הדוגמא הבאה, לפי סוג ומידת ההשפעה.
מדוע משנים קצת ולא הרבה?
כי אנחנו רוצים ליצור מה שנקרא "הכללה".
הרי אם נשנה המון, מספיק שניתן חולה קצת אחר והרשת תטעה לגמרי. אנחנו רוצים "למשוך" את הרשת
(11/16) בכל פעם לכיוון הדוגמאות הנכונות, מתוך הבנה שיש שונות מסויימת בין החולים.
המונח המקצועי הוא Over Fitting - התאמת יתר, ממנה נרצה להמנע.
מה שמדהים הוא שאת החישובים של הבקפרופ ניתן לבצע במקביל. זה מה שלוקח כל כך הרבה זמן וחשמל באימון רשת, ובזה הGPU's - כרטיסי המסך, טובים.
(12/16) ועכשיו Recap:
כל המאפיינים עוברים בy=mx+n, מחוברים ונכנסים לכל אחד מהנוירונים בשכבה הבאה, ואז עוברים אקטיבציה.
זה קורה עד השכבה האחרונה, שאותה אנחנו "מתרגמים" לתשובה של הרשת לשאלה שאנחנו רוצים לשאול.
תמיד יש פער בין הרצוי למצוי. בעזרת הפער אנחנו מחשבים איזה נוירונים
(13/16) השפיעו על הפתרון, ואותם אנחנו משנים קצת בכל פעם, בהתאם לדוגמא הנוכחית.
בסוף אחרי עשרות אלפי דוגמאות כאלה שעברו שוב ושוב ברשת, כל מה שעשינו הוא ליצור תרגיל סופר מורכב שמקבל מספרים, מוציא מספרים - ומספר סיפור.
😮💨ה-ס-ו-ף-! 😮💨
עכשיו הגיגים: במקרה הזה בנינו מסווג, רשת שיודעת
(14/16) להבדיל בין מצבים. זאת הדוגמה הקלאסית, יש כמובן דוגמאות הרבה יותר מסובכות ומגניבות (ראו ערך #dalle2), אך רשת מסווגת היא הבסיס לכל התחום. בנוסף, כמות הנוירונים\שכבות הנכונה היא עדיין סוג של חידה. אנחנו יודעים שלא טוב יותר מידי ופחות מידי, אבל אין נוסחה לכמות המדוייקת.
(15/16) אותו דבר נכון גם לקצב הלמידה, מי מחובר למי ועוד המון החלטות על מבנה הרשת המכונות "היפר-פרמטרים". הרבה ניסוי וטעיה. אגב, למה נוירונים בכלל? אז אפשר לדמיין נוירונים שיורים בעוצמות שונות, ואנחנו משחקים עם העוצמות האלה בתגובה לגירוי, שהוא המאפיינים, כדי לייצר תגובה.
נו שוין
אם הגעתם עד כאן אז כרגיל - כבוד!
כרגיל, לפעמים אני לא מדייק למען הפשטות והנעימות של הקריאה, נא לקטול במשורה.
זה היה שרשור שרציתי לכתוב מזמן, ולקח לי המון זמן To get it right.
אשמח מאד לתגובות מאנשים שלא מגיעים מהתחום - ברור? ג'יבריש?
• • •
Missing some Tweet in this thread? You can try to
force a refresh
תוך כדי למידה חשבתי לעצמי: "היי, במקום לסכם, למה שלא אכתוב שרשור?".
אז הנה, היום נדבר על רשתות נוירונים גרפיות (GNNs).
מה זה גרף, למה זה טוב, למי זה עוזר ואיך זה קשור למלחמה בבוטים בטוויטר ול #בינהמלאכותית?
בואו נגלה #פידאטה, #פידטק🧵
(כרגיל - אין צורך בידע במתמטיקה או מחשבים)
(1/14) נתחיל בהתחלה. בכיתה ז' פתאום נכנסות אותיות למתמטיקה. לא רק פעולות חשבון, אלא איזה X מוזר שצריך למצוא. גרף הוא רעיון מתמטי כמו זה, שפשוט מגיח לחיים בשלב כלשהו באוניברסיטה. כמו שהX הזה הוא ציור שבא לתאר רעיון, הגרף הוא ציור של נקודות שמחוברות זו לזו, גם הן מתארות רעיון.
(2/14) טוויטר הוא סוג של גרף - כל נקודה ("צומת") היא צייצן, ואפשר לחבר אותה לכל מי שעוקב אחריה בחץ ("קשת"). שתי נקודות מחוברות נקראות "שכנות". אפשר להשתמש בחצים כדי לתאר קשר חד צדדי, או בקו לקשר דו"צ. גרפים מתארים המון תופעות בעולם שלנו, לא רק רשתות חברתיות. מולקולה היא סוג של
(1/14) על הקונץ של @ClalitResearch למלחמה בקורונה עם #בינהמלאכותית.
בשרשור הקודם נחשפתי לעובדה המדהימה (!) שכבר במרץ 2020 (!!) היה לקופ"ח כללית מודל מתפקד לחיזוי תמותה של חולי קורונה. מה אפשר ללמוד ממנו? #פידאטה וקצת #פידרפואה על עצי החלטות ויערות 🧵
(2/14) נתחיל באמ;לק רציני: לכללית היה כבר מודל חיזוי לשפעת, אותו הם לקחו ובו ביצעו התאמות לקורונה. זהו, סיימנו, תודה. סתם. האמת שמה שאני באמת רוצה לספר לכם הוא מה עומד בבסיס מודל השפעת. תופתעו לגלות כמה זה פשוט: עץ החלטות (או נכון יותר - יער).
(3/14) עץ ההחלטות הוא אחד מעמודי התווך של עולם ה #AI, והוא עושה משהו ממש הגיוני: הוא יודע לקחת פיסת מידע (נתוני חולה, תמונה וכו) ולשאול עליה המון שאלות. לשאלות תשובות קטגוריות. אפשר כן\לא, אבל גם נגיד על "גיל?" אפשר לענות "מתחת ל30"\"בין 30 ל60"\"מעל 60"