Tsoof Bar Or Profile picture
צוף, 29, Data Science (BGU) בתהליך. פראמדיק לשעבר, שומע את אותם שירים מגיל 14 וכותב על AI בשפה של בני אדם.

Aug 29, 2022, 17 tweets

לקח לי יותר מידי זמן לכתוב את השרשור הזה, אבל אחת ולתמיד:
"רשת נוירונים", מה זה ואיך זה עובד.
בגלל (בזכות!) @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.
אשמח מאד לתגובות מאנשים שלא מגיעים מהתחום - ברור? ג'יבריש?

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.

Keep scrolling