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

Jun 12, 2023, 21 tweets

איך הענקנו לבינה המלאכותית את חוש הראיה?
היום נצלול אל הCNN, לא רשת הטלוויזה, רשת נוירונים (NN) שעושה.. קונבולוציות (C).
קוֹנְ - בּוֹ - לוּ - צִיּוֹת.
כן.
מוכנים? בואו איתי 🧵>>
#פידטק #פידאטה #פידטכנולוגיה
(אה כן, אם שמתם Bookmark - תוסיפו איזו הקלקת לייק, זה סופר עוזר לי 🥰)

כדי להבין מה קורה בשרשור הזה, אני בונה על זה שאתם יודעים בגדול איך עובדת רשת נוירונים בסיסית. לא יודעים?
הנה!
נמשיך >>

1. אפשר להכניס תמונות לרשת נוירונים רגילה.
הן אוסף של פיקסלים.
"נשטיח" אותן לטור מספרים ונכניס אל הרשת.
העניין הוא שזה עובד.. לא משהו.
הקלט ענק, וקשה לרשת להתמודד עם שונות בו.
ה9 הזה יכול להיות ממוקם בכל מקום על מפת הפיקסלים הזו.
בקיצור, קונבולוציות! >>
(אנימציה של 3b1b)

2. קונבו.. מה?
וול, קונבולוציה היא פעולה מתמטית שסורקת תמונה באופן מאד מיוחד.
בואו נדמיין תמונה שחור לבן.
נגדיר שחור מוחלט כ0, לבן מוחלט כ255.
הכנתי הפתעה, מוכנים?
אנחנו הולכים לעשות קונבולוציות יחד, באקסל!
עוד לפני המתמטיקה וה"איך", בואו נראה "מה" עושה קונבולוציה, לאינטואציה. >>

3. שימו ♥️ לציור האקסלי הבא - הספרה אחת.
בנוסף לספרה, יש גם פס שחור בצד שמאל, כי יהיה מעניין לראות איך הוא נתפס בקונבולוציה.
כמו שאמרתי, נתחיל מלראות מה התוצאה של הקונבולוציה, ואחרי שתהיה לנו תפישה טובה למה קורה - נדבר על איך זה קורה.
לכל קונבולוציה יש גרעין, Kernel >>

4. במקרה הזה בחרתי גרעין מיוחד, בגודל 2x2 - גרעין שידוע כמזהה קצוות אנכיים, בצהוב בתמונה.
בואו נסתכל על התוצאה.
שימו לב לאיך הפעולה "זיקקה" את הקצוות.
זה לא בדיוק מאורגן, כי יש שם את ה0 הזה וה255 בשני הצדדים, נטפל בזה בהמשך.
אבל איזה מגניב?!
מצאנו קצוות אנכיים! >>

5. מה קרה כאן מתמטית?
אז אותו גרעין סרק את התמונה (בסרטון בצבע, אצלנו שחור לבן), ובכל פעם כפל את ערכי הפיקסלים בערכי הגרעין - וחיבר אותם ביחד.
מטעמתי ויזואליה, נירמלתי את התוצאה בין 0 ל255.
התוצאה היא בעצם "זיקוק" של מאפיין ספציפי בתמונה, קצה.
אחרי שעושים קונבולוציה, >>

6. נהוג לבצע פעולה בשם Max Pooling, שתזקק את הזיקוק עוד יותר.
אותו מקס פולינג הוא בעצם לקחת בלוקים מהתמונה לפי סדר ובכל פעם להחזיר את הערך המקסימלי.
הפעם בלי חפיפה, הצבעים הם דוגמא למה ממופה לאן, האדום החזיר 128, הכחול 177.
אנחנו רואים טור של 177, שמייצג גבול בין השחור לאפור. >>

7. ואת זיקוק הגבול השמאלי של ה1.
אפשר לבצע אותו דבר גם על גבול ימני עם גרעין מתאים.
בגדול, הפולינג מקטין את התמונה ושומר על ה"זיהוי" של המאפיינים.
תמונה קטנה = רשת מהירה יותר.
הנה עוד המחשה בפייתון, עם שני גרעינים שונים.
הקוד בגיטהאב שלי, בסוף הציוץ. >>

8. בכל מקרה, הקונבולוציות עם הגרעינים המוכנים שירתו אלגוריתמי ראיה ממוחשבת במשך שנים, הנה עוד דוגמא למה קורה ברזולוציות גבוהות.
יש זיהוי ממש ברור של הקצוות, זה לפני פולינג.
אבל.. זה סתם גרעין מהונדס שאני בחרתי.
אז מה חדש ב"רשתות קונבולוציה"?
איך הן משתמשות בעיקרון הזה? >>

9. רשתות קונבולוציה כוללות שכבות קונבולוציה - שמבצעות את הפעולה הזו המון פעמים, ולומדות איזה גרעין יתן להן את התוצאות הכי טובות.
המספרים בגרעין - הם המשקולות הנלמדות!
פעולת הקונבולוציה מזקקת מאפיינים, וכמובן שאפשר לקחת גרעינים גדולים מ2x2, ולעבוד בצורה היררכית.
אם נסתכל >>

10. על התוצאות של הקונבולוציות בתוך רשתות מסוג CNN, נראה דבר מדהים.
ככל שנכנסים יותר לעומק רשת הקונבולציה, מגלים שהן הופכות להיות סורקות שמחפשת רעיונות מופשטים.
הביצוע שלהן במקביל ואחת אחרי השניה עם גרעינים שונים ונלמדים הופך את הסורק למזהה צורות, ולא סתם קצוות.
מה שרואים כאן >>

11. הוא חלק ממה שנמצא ב"מוח" שהרשת. לא AI גנרטיבי.
זה ה"פרצוף הסטטיסטי" שהרשת לומדת.
לא משוגע?
רשתות CNN בנויות ככה שעל התמונה נעשות הרבה קונבולציות עם גרעינים שונים (יותר מפעם אחת), על כולן עושים פולינג ומכניסים לרשת נוירונים קלאסית שהכל מחובר להכל.
וזה. עובד. >>

12. מבחינת כוונון, יש כל מיני משתנים (היפרפרמטרים) להתאים כשמחליטים על קונבולציות מעבר לגודל הגרעין (במקרה שלנו היה 2x2).
המעבר יכול להיות גס - אפשר להזיז את הקונבולציות בקפיצות של יותר מ1 כל פעם, זה מכונה Stride.
אפשר לשמר את גודל התמונה, ולהוסיף "ריפוד" לקונבולוציה, Padding.

13. אפשר לבצע גם קונבולוציה מורחבת, מה שמכונה Dilation, נזקק מאפיינים באותה רזולוציה, אבל על שטח רחב יותר.
מאפשר לתפוס מאפיינים גסים יותר בלי "לשלם" על גרעין גדול יותר.

14. יש גם סוגים שונים של Pooling, לאו דווקא שלוקחים את המקסימום.
יש כאלה שסוכמים, עושים ממוצע ומה לא.
בקיצור - יש הרבה דברים שאפשר לכוונן כשבונים רשת קונבולוציה.
התכלית?
אפשר לבחור כל משימה שרוצים, זיהוי חיות או אנשים, כל תיוג שהתמונות מגיעות איתו, רגרסיה, מה שתרצו!>>

15. ארכיטקטורת הקונבולוציה היא "חוש הראיה" של הרשת, בלי קשר למשימת הלמידה והנה תראו,
עכשיו אנחנו יודעים איך רשתות נוירונים רואות.
וכן, כן, אני יודע, בא לכם לנסות לשחק באקסל הזה.
אז כמובן שתוכלו, הוא בקבוצת הטלגרם שלי! >>

16. ככה גם תוכלו לעשות קונבולציות על פיקסל-ארט של סבתא וגם לא לפספס תוכן חדש!
קדימה בואו:
linktr.ee/tsoofbaror
מה שווה לנסות?
מה קורה אם כל הערכים בגרעין הם 1? מה הגרעין עושה?
(זה גם קישור לגיטהאב, לקוד של הקונבולוציה)

אם זה השרשור הראשון שלי שאתם קוראים, היי!
מוזמנים לחקור איתי את הקישקע של הAI,
כל פעם קצת אחרת.
זה הזמן לעקוב אחרי:
twitter.com/tsoofbaror
אהבתם את מה שקראתם?
התמורה הכי טובה מכם היא לרטווט את הציוץ הראשון.
אני רואה אתכם, מרטווטים, אם אבנה AI שישתלט על העולם הוא יחוס עליכם.

הערות ומקורות!
אם בא לכם להעמיק בקונספט של קונבולוציה, ממליץ מאד על הסרטון של @3blue1brown:

אה כן,
וגרעין לפעמים נקרא גם "פילטר".
סתם כדאי לדעת.

מחילה ענקית:
קונבולוציות עם ב לא דגושה, נהגת כV כמובן
עמכם הסליחה

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