תרגול 10
CNN

Print

Convolutional Neural Networks (CNN) -
רשתות קונבולוציה


  • מודל MLP (Fully Connected (FC) network) אינו רגיש לסדר בכניסה לרשת.

  • לפעמים תכונה זו הינה רצויה, אך באה במחיר של מספר רב של פרמטרים.

  • במקרים בהם למידע יש מבנה מרחבי (לדוגמא תמונות) נרצה לנצל זאת.

  • רשתות קונבולציה הינם סוג אחד רשתות feed-forward בעלת ארכיטקטורה אשר מנצלת תכונה זו.

1D Convolutional Layer

שכבת קונבולוציה חד-ממדית מבצעת פעולת קרוס קורלציה בין וקטור הכניסה ווקטור משקולות באורך :

  • וקטור המשקולות נקרא גרעין הקונבולוציה (convolution kernel)

הערה: שכבת קונבולוציה מחשבת קרוס-קורלציה, ולא קונבולוציה ().

1D Convolutional Layer - המשך

באופן גרפי:

Conv layer

1D Convolutional Layer - המשך 2

הבדלים מרשת FC:

  1. היציאות מחוברות רק לחלק מהכניסות, כאשר הכניסות קרובות אחת לשניה

  2. כל היציאות מופקות מאותן משקולות


ההנחות הארכיטקטורה:

  • הקשר בין כניסות קרובות הוא יותר חזק ומשמעותי מאשר כניסות רחוקות.

  • אזורים שונים בכניסה מתנהגים באופן דומה.


בשכבת FC קיימות משקולות בעוד שלשכבת קונבולציה יש משקולות.

1D Convolutional Layer - המשך 3

דרך נוספת להצגת שכבת קונבולוציה:

Conv layer

  • היינו איבר ההסט.

אקטיבציה לא לינארית

בדומה לשכבות FC, נעשה שימוש בפונקציות אקטיבציה לא לינאריות.

פונקציית האקטיבציה הנפוצה ביותר הינה ReLU: .

Conv layer + non-linear layer

קלט רב-ערוצי

נרצה לרוב ששכבת הקונבולציה תקבל קלט רב ערוצי. לדוגמא:

  • תמונה בעלת שלושה ערוצי צבע.
  • שמע ממספר ערוצי הקלטה.

במקרים אלו הניורון יהיה פונקציה של כל ערוצי הקלט:

multi-channel conv layer

פלט רב-ערוצי

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

multi-input multi-output conv layer

  • בשכבות אלו אין שיתוף של משקולות בין ערוצי הפלט השונים.
  • מספר הפרמטרים בשכבת שכזאת הינו:

כאשר:

  • - מספר ערוצי קלט.
  • - מספר ערוצי פלט.
  • - גודל הגרעין.

היפר-פרמטרים של שכבות קונבולוציה

בנוסף להיפר-פרמטרים של גודל הגרעין ו מספר ערוצי הפלט, מקובל להגדיר גם את הפרמטרים הבאים:


Padding - ריפוד

ניתן לרפד את וקטור הכניסה באפסים על מנת לשמר את אורך הוקטור במוצא:

padding

היפר-פרמטרים של שכבות קונבולוציה - המשך

Stride - גודל צעד

ניתן לבצע את הקונבולוציה בדילוגים על מנת לדלל את המוצא.

לרוב גודל הצעד מסומן ב . בדוגמא הבאה גודל הצעד היינו .

stride

היפר-פרמטרים של שכבות קונבולוציה - המשך 2

Dilation - התרחבות

על מנת להקטיןן עוד את מספר הפרמטרים, ניתן לדלל את המשקולות בגרעין הקונבולוציה. פעולה זו נקראת הרחבה (dilation) של הקונבולוציה.

לרוב נסמן את ההתרחבות ב בדוגמא הבאה .

dilation

Max Pooling

  • לרוב ב CNN נעשה שימוש בשכבת נוספות על מנת לצמצם את גודל הקלט.
  • שכבה לדוגמא היינה שכבת Max Pooling.
  • שכבה זאת לוקחת את המקסימום מבין ערכי הכניסה.
  • המוטיבציה לפעולה זאת היינה שהערכים הגבוהים מייצגים מאפיינים בעלי יותר אינפורמציה.

לדוגמא Max Pooling בגודל 2 עם גודל צעד (stride) 2:

max pooling

בשכבה זאת אין פרמטרים נלמדים, אך גודל הגרעין היינו היפר-פרמטר נוסף.

2D Convolutional Layer

ניתן להגדיר גם שכבות קנבולוציה למימדים גבוהים יותר, לדוגמא, בדו מימד:

הכניסות והיציאות הן מטריצות. השכבה הכחולה היא הקלט והירוקה היא הפלט.

kernel size=3
padding=0
stride=1
dilation=1
kernel size=4
padding=2
stride=1
dilation=1
kernel size=3
padding=1
stride=1
dilation=1
(Half padding)
kernel size=3
padding=2
stride=1
dilation=1
(Full padding)
kernel size=3
padding=0
stride=2
dilation=1
kernel size=3
padding=1
stride=2
dilation=1
kernel size=3
padding=1
stride=2
dilation=1
kernel size=3
padding=0
stride=1
dilation=2

By Vincent Dumoulin, Francesco Visin

תרגילים

תרגיל 10.1

נתונה רשת קונבולוציה קטנה, הממירה תמונה בגודל 13×13 לווקטור מוצא בגודל 4×1. הרשת מורכבת מהפעולות הבאות:

network


  • שכבת קונבולוציה עם 3 פילטרים (גרעינים) בגודל 4x4
  • פונקציית אקטיבציה Relu
  • max pooling 2x2 עם stride=2
  • שכבת Fully-connected (FC)
  • פונקציית אקטיבציה Relu

ברשת זאת אין שימוש בbias.

תרגיל 10.1 - המשך 2

network

א) כמה פרמטרים נלמדים יש בשכבת הקונבולוציה

פתרון

א) סה”כ 48 פרמטרים. קיימים 3 פילטרים בגודל 4×4, לכן 3⋅4⋅4=48.

תרגיל 10.1 - המשך 2

network

ב) כמה פעולות אקטיבציה מבוצעות (Relu) במעבר קדמי אחד (forward pass)?

פתרון

ב) מבוצעות 304 פעולות Relu. פעולת האקטיבציה מתבצעת לכל מאפיין במוצא שכבת הקונבולוציה ועוד 4 במוצא שכבת הFC. כלומר:

תרגיל 10.1 - המשך 2

network

ג) כמה משקולות יש בכל הרשת?

פתרון

ג) 348 פרמטרים. נפרט את החישוב. בשכבת הקונבולוציה יש 48 פרמטרים (סעיף א), בשכבת הFC יש כניסות שמחוברות ל יציאות, סה”כ .

תרגיל 10.1 - המשך 2

network

ד) האם רשת בקישוריות מלאה (FC) בעלת גודל שכבות זהה – כלומר רשת זהה שבה שכבת הקונבולוציה מוחלפת בשכבת FC, יכולה לייצג את אותה הפונקציה אותה ממשת הרשת המקורית?

פתרון

ד) כן, הרשת עם שכבת הקונבולוציה הינה מקרה פרטי של רשת FC, עם בחירה ספציפית של המשקולות.

תרגיל 10.1 - המשך 2

network

ה) מה ההבדל העיקרי בין רשת CNN ל FC שיכולות לייצג את אותו מסווג?

פתרון

ה) הרשת עם שכבת הקונבולוציה מתארת תת-תחום של מרחב הפונקציות שאותה יכולה לתאר רשת הFC. היתרון שברשת עם שכבת הקונבולוציה הינה שהיא עושה זאת על ידי מספר קטן משמעותית של פרמטרים. לכן, בהנחה שניתן לקרב במידה טובה מספיק את פונקצייית המטרה על ידי פונקציות מתת-תחום זה, היא תגרום פחות לoverfit ולכן בעלת סיכוי להניב תוצאות טובות יותר. לשם השוואה ברשת הFC ישנם כ50k פרמטרים.

תרגיל 10.2

התמך או הrecptive field של משתנה מסויים ברשת מוגדר להיות כל התחום בכניסה אשר משפיע על אותו המשתנה.

א) מצאו את הrecptive field של ערך מסויים במוצא של שלוש שכבות קונבולוציה רצופות עם גרעין של .

ב) רשמו באופן מטריצי את פעולת הקונבולוציה.

תרגיל 10.2 - פתרון

א) הrecptive field של שלוש שכבות קונבולוציה הינו :

First convilution

Second convilution

Third convilution

תרגיל 10.2 - פתרון - המשך

ב. נרשום את הפילטרים ככפל מטריצות, עבור הפילטר הראשון:

ובאופן זהה עבור פילטר מס’ שתיים ושלוש.

נרשום את הקלט בצורה וקטורית:

וסה”כ נקבל:

סכמות אתחול

מוטיבציה

ראינו בתרגול 8 שבחירה לא טובה של האתחול יכולה להוביל לכך שפונקציית האקטיבציה תהיה ברוויה והעדכון של המשקולות יהיה איטי ולא אפקטיבי:


  • בעבור משקולות קטנות, האות דועך בין שכבה לשכבה ולא מחלחל לשכבות ראשונות. (vanishing gradients).

  • בעבור משקולות גדולות, האות גדל בין שכבה לשכבה מה שיכול לגרום לחריגה מתחום ייצוג. (exploding gradients).

סכמות אתחול

initilization 1

initilization 2

בגרפים אלו ניתן לראות את הבעיה של הvanishing gradients.

נרצה למצוא אתחול טוב של המשקולות אשר יאפשר לאות לפעפע דרך הרשת בצורה טובה.

תרגיל 10.3

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

Graph

א) נניח כי כל רכיבי המשקולות וכל רכיבי הכניסה הם משתנים אקראיים IID. בנוסף, נניח כי התפלגות המשקולות סימטרית סביב 0.

תרגיל 10.3 א

1) חשבו את התוחלת של המוצא כתלות בתוחלות של המשקולות והכניסה. בפרט, הראו כי .


פתרון:

תרגיל 10.3 א - המשך

2) הראו כי לכל זוג משתנים אקראיים בלתי תלויים מתקיים:


פתרון:

נעזר בקשר :

תרגיל 10.3 א - המשך 2

3) כעת, נניח כי לכל : (בסעיף הבא נראה הצדקה להנחה זו). השתמשו בנוסחה מהסעיף הקודם על מנת לבטא את השונות של באמצעות השונות של .


פתרון:

תחת ההנחה כי התוחלות של המשקולות ושל הכניסה הן 0, הנוסחה שהוכחנו בסעיף הקודם מצטמצמת ל. בנוסף, עבור מוצא הניורון ניתן לכתוב:

מכיוון שהנחנו שכל המשתנים מפולגים IID נקבל:

תרגיל 10.3 א - המשך 3

4) כיצד ניתן לשמור על השונות של המוצא זהה לשונות של כל אחת מרכיבי הכניסה ?


פתרון:

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

תרגיל 10.3 -המשך

ב) כעת, נרצה להרחיב את הסכמה לנוירונים לא ליניאריים:

Graph

  • כעת מתקיים כי
  • היא פונקציית האקטיבציה.
  • הם המוצאים של ניורונים מהשכבה הקודמת ברשת.

תרגיל 10.3 ב

1) לאילו מפונקציות האקטיבציה הבאות: sigmoid, tahn ו-ReLU, ההנחה שביצענו בסעיף הקודם היא עדיין הנחה “סבירה”? תזכורת:

Activation function

תרגיל 10.3 ב1

פתרון:

אם התפלגות המשקולות סימטרית סביב 0, נקבל כי התפלגות סימטרית סביב 0 לכל . לכן, ההנחה עדיין סבירה עבור tanh אך לא עבור ReLU וsigmoid. עבור tanh נקבל:

כאשר סימנו .

תרגיל 10.3 ב - המשך

2) כעת לא נניח דבר על התוחלת של . כיצד ישתנה הביטוי של השונות של מסעיף א.3?

פתרון:

משימוש בתוצאות הסעיפים הקודמים, נקבל:

תרגיל 10.3 ב - המשך

3) עבור פונקציית האקטיבציה ReLU, בטאו את השונות של באמצעות השונות של אחת הכניסות . הניחו כי

פתרון:

אם התפלגות המשקולות סימטרית סביב 0, נקבל כי התפלגות סימטרית סביב 0 לכל . לכן, עבור פונקציית אקטיבציה ReLU נקבל:

תרגיל 10.3 ב - המשך

נשלב את התוצאה יחד עם תוצאות הסעיפים הקודמים ונקבל:

לכן, על מנת לשמור על שונות זהה בין כניסה למוצא נבחר את אתחול המשקולות כך שיתקיים:

חלק מעשי

LeNet-5

בחלק זה נעבור על היישום המעשי הראשון של רשתות קונבולוציה. הארכיטקטורה זאת שימשה ב1998 ושימש לזהות ספרות בכתב יד על צק’ים במערכות בנקאיות.

LeNet results

הרשת מקבלת תמונה רמת אפור בגודל 32x32 ומשתמש באריטקטורה הבאה על מנת להוציא וקטור פלט באורך 10 אשר מציג את הסבירות שהתמונה שייכת לכל אחת מ 10 הספרות.

אריכטקטורה

LeNet architecture

  • C1: Conv + ReLU: kernel size=5x5, output channels=6.
  • S2: Max pooling layer: size=2x2, stride=2
  • C3: Conv + ReLU: kernel size=5x5, output channels=16.
  • S4: Max pooling layer: size=2x2, stride=2
  • C5: Conv + ReLU: kernel size=5x5, output channels=120.
    (this is, in fact, a fully connected layer)
  • F6: Fully connected layer + ReLU: output vector length= 84
  • Output layer: Fully connected layer: output vector length=10

על מנת לייצג הסתברות נעשה ביציאה שימוש בשכבת Softmax.

Dataset: MNIST

לאימון הרשת נעשה שימוש במאגר המידע MNIST. הוא סט פופולרי מאוד שנעשה בו שימוש נרחב עד היום. הסט מורכב 70000 תמונות בינאריות בגודל 28x28 של ספרות בכתב יד, מתוכן 10000 הינם בסט המבחן.

mnist

הגדרת הבעיה

  • המשתנים בבעיה:
    • תמונה בגודל 28x28 של סיפרה בכתב יד -
    • ערך הסיפרה: [0-9] -


  • רשת הנוירוניים תשמש כמשפחה הפרמטרית אשר בעזרתה ננסה ללמוד את הפילוג :

  • הלימוד יעשה בעזרת MLE (אשר שקול למזעור של הcross entropy).


  • החזאי אשר ימזער את ה missclassification rate יהיה:

חלוקה של מאגר המידע

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

לימוד

נשתמש באלגוריתם הגרדיאנט בגרסת ה-mini-batch, או בשמו stochastic gradient descent (SGD), המשמעות הסטוכנסטית היינה שהBatch מוגרל באופן אחיד מתך מאגר המידע. האלגוריתם ישמש למציאת משקולות הרשת להקטנת פונקצית המחיר.

תזכורות: משקולות הרשת הינם המשקולות בגרעיני קונבולוציה, בשכבות FC ואיברי ההסט.

Hyper-parameters

  • הארכיטקטורה של הרשת, שבה לא נעשה כל שינוי.
  • אלגוריתם SDG:
    • גודל צעד הלימוד.
    • גודל הBatch, אשר אותו נשאיר קבוע בגודל 64.
    • מס’ מקסימלי של epochs. epochs - מס המעברים על כל סט האימון

בחירת גודל צעד הלימוד

נבחן את השפעת גדלי צעד לימוד על תהליך הלימוד. נריץ את האלגוריתם למשך epoch אחד עם הגדלים הבאים: png

קיבלנו שעבור המערכת לא מצליחה לבצע למידה (להקטין את פונקציית המחיר). ניתן להגיד שצעד הלימוד גדול מידי משום שעבור צעד לימוד קטן יותר המערכת כן מצליחה ללמוד.

כמו כן עבור קיבלנו תהליך התכנסות מהיר הרבה יותר ולמחיר נמוך יותר על פני . לכן נבחר את גודל הצעד להיות

האימון

נריץ את באלגוריתם עבור גודל צעד למשך 20 epochs.

png

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

הערכת ביצועים

קיבלנו misclassification rate של כמעט אחוז בודד, כלומר שעבור אחוז מסט המבחן טעינו בחיזוי הסיפרה או לחילופין צדקנו ב99% מסט המבחן.

png