תרגול 9 - Logistic Regression and Gradient Descent

תקציר התיאוריה

הגישה הדיסקרימינטיבית הסתברותית

בגישה זו ננסה ללמוד מודל פרמטרי אשר ימדל ישירות את pyx(yx)p_{\text{y}|\mathbf{x}}(y|\boldsymbol{x}) (מבלי ללמוד את הפילוג של x\mathbf{x}). גישה זו יעילה מאד לבעיות סיווג, בהם קל לבנות מודלים פרמטריים pyx(yx;θ)p_{\text{y}|\mathbf{x}}(y|\boldsymbol{x};\boldsymbol{\theta}) שהם פונקציות הסתברות חוקיות (חיובית שהסכום עליה הוא 1). את הפרמטרים של המודל הפרמטרי נלמד לרוב בעזרת MLE או MAP.

הפונקציה הלוגיסטית (סיגמואיד)

הפונקציה הלוגיסטית מקבלת מספר בתחום [,][-\infty,\infty] ומחזירה מספר בין 0 ל 1. היא לרוב מסומנת ב σ\sigma:

σ(z)=11+ez\sigma(z)=\frac{1}{1+e^{-z}}

והיא נראית כך:

פונקציה זו שימושית לצורך הגדרת מודלים הסתברותיים של משתנים בינארים.

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

תכונות

  • σ(z)=1σ(z)\sigma(-z)=1-\sigma(z).
  • zlog(σ(z))=1σ(z)\frac{\partial}{\partial z}\log(\sigma(z))=1-\sigma(z)

פונקציית ה Softmax

פונקציית ה softmax היא הרחבה של הפונקציה הלוגיסטית, והיא יכולה לשמש למידול פונקציות הסתברות של משתנים דיסקרטיים לא בינאריים (אך סופיים). הפונקציה לוקחת וקטור כלשהו z\boldsymbol{z} באורך CC ומייצרת ממנו וקטור חדש חיובי שסכום האיברים שלו הוא 1. הפונקציה מוגדרת באופן הבא:

softmax(z)=1c=1Cezc[ez1,ez2,,ezC]\text{softmax}(\boldsymbol{z})=\frac{1}{\sum_{c=1}^C e^{z_c}}[e^{z_1},e^{z_2},\dots,e^{z_C}]^{\top}

או לחילופין, הערך של האיבר ה ii של הפונקציה הינו:

softmax(z)i=ezic=1Cezc\text{softmax}(\boldsymbol{z})_i=\frac{e^{z_i}}{\sum_{c=1}^C e^{z_c}}

תכונות

  • אינווריאנטיות לתוספת של קבוע (לכל אברי הוקטור): softmax(z+a)i=softmax(z)i i\text{softmax}(\boldsymbol{z} + a)_i=\text{softmax}(\boldsymbol{z})_i\ \forall i.
  • zjlog(softmax(z))i=δi,j=I{i=j}softmax(z)j\frac{\partial}{\partial z_j} \log(\text{softmax}(\boldsymbol{z}))_i=\underbrace{\delta_{i,j}}_{=I\{i=j\}}-\text{softmax}(\boldsymbol{z})_j

Logistic Regression

בניגוד לשם, logistic regression היא שיטה לפתרון בעיות סיווג בגישה הדיסקרימינטיבית הסתברותית. בשיטה זו אנו נבחר CC פונקציות פרמטריות כלשהן fc(x;θc)f_c(\boldsymbol{x};\boldsymbol{\theta}_c) ונשתמש בהן על מנת לבנות מודל פרמטרי. נסמן:

  • את הוקטור θ\boldsymbol{\theta} כוקטור אשר כולל את כל CC וקטורי הפרמטרים: θ=[θ1,θ2,,θC]\boldsymbol{\theta}=[\boldsymbol{\theta}_1^{\top},\boldsymbol{\theta}_2^{\top},\dots,\boldsymbol{\theta}_C^{\top}]^{\top}.
  • את הפונקציה f\boldsymbol{f} כפונקציה המאגדת את כל CC הפונקציות הפרמטריות: f=[f1(x;θ1),f2(x;θ2),,fC(x;θC)]\boldsymbol{f}=[f_1(\boldsymbol{x};\boldsymbol{\theta}_1),f_2(\boldsymbol{x};\boldsymbol{\theta}_2),\dots,f_C(\boldsymbol{x};\boldsymbol{\theta}_C)]^{\top}

את הפילוג המותנה נמדל באופן הבא:

pyx(yx;θ)=softmax(f(x;θ))y=efy(x;θy)c=1Cefc(x;θc)p_{\text{y}|\mathbf{x}}(y|\boldsymbol{x};\boldsymbol{\theta}) =\text{softmax}(\boldsymbol{f}(\boldsymbol{x};\boldsymbol{\theta}))_{y} =\frac{e^{f_y(\boldsymbol{x};\boldsymbol{\theta}_y)}}{\sum_{c=1}^C e^{f_c(\boldsymbol{x};\boldsymbol{\theta}_c)}}

לבעיות ה MLE וה MAP של מודל זה אין פתרון סגור ואנו נחפש את הפתרון לבעיית האופטימיזציה בעזרת gradient descent.

ביטול היתירות של המודל

בגלל האינווריאנטיות של פונקציית ה softmax המודל הפרמטרי המוגדר על ידי הפונקציות fcf_c יהיה אינווריאנטי לשינויים מהצורה של: fc(x;θc)fc(x;θc)+g(x)f_c(\boldsymbol{x};\boldsymbol{\theta}_c)\rightarrow f_c(\boldsymbol{x};\boldsymbol{\theta}_c)+g(\boldsymbol{x}). דרך נפוצה לבטל יתירות זו הינה על ידי קיבוע של אחת הפונקציות הפרמטריות, לרוב הראשונה c=1c=1, להיות שווה זהותית ל 0: f1(x;θ1)=0f_1(\boldsymbol{x};\boldsymbol{\theta}_1)=0.

המקרה הבינארי

במקרה הבינארי ישנם רק שתי מחלקות (C=2C=2), אותן נסמן ב 0 ו 1. נקבע את הפונקציה הפרמטרית של המחלקה y=0\text{y}=0 להיות זהותית 0. נקבל את המודל הפרמטרי הבא:

pyx(0x;θ)=11+ef(x;θ)=1σ(f(x;θ))p_{\text{y}|\mathbf{x}}(0|\boldsymbol{x};\boldsymbol{\theta}) =\frac{1}{1+e^{f(\boldsymbol{x};\boldsymbol{\theta})}} =1-\sigma(f(\boldsymbol{x};\boldsymbol{\theta})) pyx(1x;θ)=ef(x;θ)ef(x;θ)+1=11+ef(x;θ)=σ(f(x;θ))p_{\text{y}|\mathbf{x}}(1|\boldsymbol{x};\boldsymbol{\theta}) =\frac{e^{f(\boldsymbol{x};\boldsymbol{\theta})}}{e^{f(\boldsymbol{x};\boldsymbol{\theta})}+1} =\frac{1}{1+e^{-f(\boldsymbol{x};\boldsymbol{\theta})}} =\sigma(f(\boldsymbol{x};\boldsymbol{\theta}))

רגרסיה לוגיסטית לינארית

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

fc(x;θc)=θcxf_c(\boldsymbol{x};\boldsymbol{\theta}_c)=\boldsymbol{\theta}_c^{\top}\boldsymbol{x}

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

Gradient descent (שיטת הגרדיאנט)

בעבור בעיית המינימיזציה:

argminθg(θ)\underset{\boldsymbol{\theta}}{\arg\min}\quad g(\boldsymbol{\theta})

Gradient descent מנסה למצוא מינימום לוקאלי של g(θ)g(\boldsymbol{\theta}) על ידי כך שהוא מתחיל בנקודה אקראית כלשהי במרחב ואז מתקדם בצעדים קטנים בכיוון ההפוך מהגרדיאנט, שהוא הכיוון שבו ה objective קטן בקצב המהיר ביותר. זהו אלגוריתם חמדן (greedy) אשר מנסה בכל צעד לשפר במעט את מצבו ביחס לשלב הקודם.

האלגוריתם

  • מאתחלים את θ(0)\boldsymbol{\theta}^{(0)} בנקודה אקראית כלשהי.
  • חוזרים על צעד העדכון הבא עד שמתקיים תנאי עצירה כל שהוא:

    θ(t+1)=θ(t)ηθg(θ(t))\boldsymbol{\theta}^{(t+1)}=\boldsymbol{\theta}^{(t)}-\eta \nabla_{\boldsymbol{\theta}}g(\boldsymbol{\theta}^{(t)})

הפרמטר η\eta קובע את גודל הצעדים שהאלגוריתם יעשה.

תנאי עצירה

ישנם מספר דרכים להגדיר תנאי עצירה לאגוריתם:

  • הגעה למספר צעדי עדכון שנקבע מראש: t>max-itert>\text{max-iter}.
  • כאשר הנורמה של הגרדיאנט קטנה מתחת לערך סף מסויים שנקבע מראש: θg(θ)2<ϵ\lVert\nabla_{\boldsymbol{\theta}}g(\boldsymbol{\theta})\rVert_2<\epsilon
  • כאשר השיפור ב objective קטן מערך סף מסויים שנקבע מראש: g(θ(t1))g(θ(t))<ϵg(\boldsymbol{\theta}^{(t-1)})-g(\boldsymbol{\theta}^{(t)})<\epsilon
  • שימוש בעצירה מוקדמת על מנת להתמודד עם overfitting (נרחיב על כך בהרצאה הבאה)

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

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

תרגיל 9.1 - אופטימליות של כיוון גרדיאנט שלילי

תהי f(x),xRdf(x), x\in\mathbb{R}^d פונקציה ממשית גזירה פעמיים.

נתונה נקודה

xα=x+αd,dRd,d=1,α0.x_{\alpha} = x + \alpha d, \qquad d\in\mathbb{R}^d, \lVert d \rVert =1, \alpha \ge 0.

מפיתוח טיילור לסדר שני עם שארית מתקיים

f(xα)=f(x)+αdf(x)+O(α2)f(x_{\alpha}) = f(x) + \alpha d^\top\nabla f(x) + O(\alpha^2)

כאשר O(α2)O(\alpha^2) קטן בהרבה מ-αdf(x)\alpha d^\top\nabla f(x) עבור α\alpha קטנה מספיק.

שאלה מה הכיוון dd שמוביל לירידה הכי גדולה בערך של f(x)f(x) עבור ערך α\alpha קטן?

תזכורת אי שוויון קושי שוורץ קובע כי עבור מרחב מכפלה פנימית VV מתקיים לכל x,yVx,y\in V

x,yxy\langle x,y \rangle \le \lVert x \rVert \cdot \lVert y \rVert

כאשר שוויון מתקיים כאשר שני הווקטורים באותו הכיוון.

פתרון 9.1

כדי לענות על שאלה זאת נרצה שהביטוי αd(f(x))\alpha d^\top(-\nabla f(x)) יהיה גדול ככל האפשר.

נשים לב כי מדובר במכפלה פנימית ולכן נשתמש באי שוויון קושי שוורץ

αd(f(x))=αd,f(x)αdf(x)=αf(x)\alpha d^\top(-\nabla f(x)) = \langle \alpha d, -\nabla f(x) \rangle \le \lVert \alpha d \rVert \cdot \lVert -\nabla f(x) \rVert = \alpha \lVert \nabla f(x) \rVert

לכן הכיוון dd עבורו נקבל את הירידה הכי גדולה בערך של f(x)f(x) הוא

d=f(x)f(x)d = - \frac{\nabla f(x)}{\lVert \nabla f(x) \rVert}

מסקנה

הכיוון השלילי של הגרדיאנט, df(x)d \propto - \nabla f(x), הוא הכיוון שמוביל לירידה המקסימלית בערך הפונקציה בסביבה מקומית של xx.

הבחנה

כל כיוון dd עבורו d(f(x))>0d^\top (-\nabla f(x)) > 0 מוביל לירידה בערך הפונקציה f(x)f(x).

תרגיל 9.2 - אלגוריתם הגרדיאנט

נתונה בעיית האופטימיזציה הבאה:

argminθ 12θ2+5sin(θ)\underset{\theta}{\arg\min}\ \tfrac{1}{2}\theta^2+5\sin(\theta)

1) נסו לפתור את הבעיה על ידי גזירה והשוואה ל-0. הגיעו למשוואה (סתומה) אשר מגדירה את נקודות המינימום האפשריות.

2) רשמו את צעד העידכון של אלגוריתם הגרדיאנט.

3) חשבו את שלושת צעדי העדכון הראשונים עבור אתחול של θ(0)=0\theta^{(0)}=0, וצעד לימוד של η=0.1\eta=0.1.

4) חשבו את שלושת צעדי העדכון הראשונים עבור אתחול של θ(0)=2.5\theta^{(0)}=2.5, וצעד לימוד של η=0.1\eta=0.1. מודע האלגוריתם יתכנס כעת לפתרון אחר מבסעיף הקודם?

5) הגרפים הבאים מציגים עשר איטרציות של gradient descent בעבור ארבעה ערכים שונים של גודל צעד: η={0.003,0.03,0.3,3}\eta=\{0.003, 0.03,0.3,3\}. התאם בין גודל הצעד לגרפים.

פתרון 9.2

1)

נסמן את ה objective (פונקציית המטרה) של בעיית האופטימיזציה ב:

t(θ)=12θ2+5sin(θ)t(\theta)=\tfrac{1}{2}\theta^2+5\sin(\theta)

נגזור אותו ונשווה אותו ל-0:

θt(θ)=0θ+5cos(θ)=0θ=5cos(θ)\begin{aligned} \frac{\partial}{\partial\theta}t(\theta)&=0 \\ \Leftrightarrow \theta+5\cos(\theta)&=0 \\ \Leftrightarrow \theta&=-5\cos(\theta) \end{aligned}

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

למשוואה זו אין פתרון אנליטי.

2)

צעד העדכון של הגרדיאנט יהיה:

θ(t+1)=θ(t)ηθt(θ)=θ(t)η(θ(t)+5cos(θ(t)))\theta^{(t+1)}=\theta^{(t)}-\eta\frac{\partial}{\partial\theta}t(\theta)=\theta^{(t)}-\eta\left(\theta^{(t)}+5\cos(\theta^{(t)})\right)

3)

נאתחל את האלגוריתם עם θ(0)=0\theta^{(0)}=0 ונבצע שלושה צעדים (עם η=0.1\eta=0.1):

θ(1)=θ(0)η(θ(0)+5cos(θ(0)))=00.1(0+5cos(0))=0.5\theta^{(1)} =\theta^{(0)}-\eta\left(\theta^{(0)}+5\cos(\theta^{(0)})\right) =0-0.1\left(0+5\cos(0)\right)=-0.5 θ(2)=θ(1)η(θ(1)+5cos(θ(1)))=0.50.1(0.5+5cos(0.5))=0.889\theta^{(2)} =\theta^{(1)}-\eta\left(\theta^{(1)}+5\cos(\theta^{(1)})\right) =-0.5-0.1\left(-0.5+5\cos(-0.5)\right)=-0.889 θ(3)=θ(2)η(θ(2)+5cos(θ(2)))=0.8890.1(0.889+5cos(0.889))=1.115\theta^{(3)} =\theta^{(2)}-\eta\left(\theta^{(2)}+5\cos(\theta^{(2)})\right) =-0.889-0.1\left(-0.889+5\cos(-0.889)\right)=-1.115

(נקודת האופטימום האמיתי הינה θ=1.30644\theta=-1.30644)

4)

נחזור על הפתרון עם אתחול של θ(0)=2.5\theta^{(0)}=2.5 ונבצע שלושה צעדים:

θ(1)=2.65\theta^{(1)}=2.65 θ(2)=2.83\theta^{(2)}=2.83 θ(2)=3.02\theta^{(2)}=3.02

בעבור האתחול הזה אלגוריתם יתכנס לפתרון אחר מאשר הפתרון בסעיף הקודם. זאת כמובן משום ש gradient descent מתכנס למינימום לוקאלי, לכן בעבור איתחולים שונים האלגוריתם עלול להתכנס לפתרונות שונים.

5)

הפרמטר η\eta קובע כאמור את גדול הצעד.

  • גודל צעד גדול מידי עשוי להרחיק בכל צעד את האלגוריתם מנקודת המינימום, כפי שקורה במקרה של η1\eta_1. גודל הצעד שמתאים למקרה זה הינו הערך הגדול ביותר, זאת אומרת 3.
  • גודל הצעד השני הכי גדול הינו 0.3 והוא מתאים ל η3\eta_3. במקרה זה הצעדים עושים "over shoot" ועוברים במרבית הפעמים את המינימום אך עדיין מתקרבים אליו בכל צעד.
  • גודל הצעד השלישי הכי גדול הינו 0.03 הוא מתאים ל η4\eta_4. כאן האופטימיזציה מתקדמת לאט לאט באופן עקבי לכיוון המינימים.
  • גודל הצעד הקטן ביות הינו 0.0030.003 והוא מתאים ל η2\eta_2 במקרה זה ההתקדמות היא מאד איטית ויקח לאלגוריתם מספר רב של צעדים על מנת להתקרב למינימום.

תרגיל 9.3 - צעד העדכון של logistic regression

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

pyx(yx;θ)=σ((1)y+1f(x;θ))p_{\text{y}|\mathbf{x}}(y|\boldsymbol{x};\boldsymbol{\theta})=\sigma\left((-1)^{y+1} f(\boldsymbol{x};\boldsymbol{\theta})\right)

2) נסתכל על אלגוריתם gradient descent אשר מנסה למצוא פיתרון לבעיית ה MLE בעבור רגרסיה לוגיסטית בינארית. הראו שניתן לרשום את צעד העדכון של האלגוריתם באופן הבא:

θ(t+1)=θ(t)ηi=1N(1pyx(y(i)x(i);θ(t)))(1)y(i)θf(x(i);θ(t))\boldsymbol{\theta}^{(t+1)}=\boldsymbol{\theta}^{(t)}-\eta\sum_{i=1}^{N}(1-p_{\text{y}|\mathbf{x}}(y^{(i)}|\boldsymbol{x}^{(i)};\boldsymbol{\theta}^{(t)}))(-1)^{y^{(i)}} \nabla_{\boldsymbol{\theta}}f(\boldsymbol{x}^{(i)};\boldsymbol{\theta}^{(t)})

3) ננסה לתת פרשנות אינטואיטיבית לתפקיד של האיברים השונים בצעד העדכון מהסעיף הקודם.

נתחיל בכך שנתעלם מהביטוי (1pyx(y(i)x(i);θ))(1-p_{\text{y}|\mathbf{x}}(y^{(i)}|\boldsymbol{x}^{(i)};\boldsymbol{\theta})). ונקבל את צעד העדכון הבא:

θ(t+1)=θ(t)ηi=1N(1)y(i)θf(x(i);θ(t))\boldsymbol{\theta}^{(t+1)}=\boldsymbol{\theta}^{(t)}-\eta\sum_{i=1}^{N}(-1)^{y^{(i)}} \nabla_{\boldsymbol{\theta}}f(\boldsymbol{x}^{(i)};\boldsymbol{\theta}^{(t)})

הסבירו כיצד ישפיע כל צעד עידכון על הפונקציה f(x;θ)f(\boldsymbol{x};\boldsymbol{\theta}). ספציפית הסבירו מה יקרה לערך של הפונקציה בנקודות x(i)\boldsymbol{x}^{(i)}? התייחסו להשפעה השונה יש לדגימות עם y=1y=1 ולדגימות עם y=0y=0 מהמדגם.

4) נחזיר כעת את האיבר (1pyx(y(i)x(i);θ))(1-p_{\text{y}|\mathbf{x}}(y^{(i)}|\boldsymbol{x}^{(i)};\boldsymbol{\theta})). למה שווה איבר זה במקרים בהם המודל הפרמטרי נותן הסתברות גבוהה לדגימה כלשהי {x(i),y(i)}\{\boldsymbol{x}^{(i)},y^{(i)}\}? ולמה הוא שווה במקרים בהם המודל נותן הסתברות נמוכה לדגימה כלשהי?

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

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

θc(t+1)=θc(t)+ηi=1N(δy(i),cpyx(cx(i);θ(t)))θcfc(x(i);θc(t))c\boldsymbol{\theta}^{(t+1)}_c=\boldsymbol{\theta}^{(t)}_c+\eta\sum_{i=1}^{N} \left(\delta_{y^{(i)},c}-p_{\text{y}|\mathbf{x}}(c|\boldsymbol{x}^{(i)};\boldsymbol{\theta}^{(t)})\right) \nabla_{\boldsymbol{\theta}_c} f_c(\boldsymbol{x}^{(i)};\boldsymbol{\theta}^{(t)}_c)\quad\forall c

הסבירו את התפקיד של θcfc(x;θ(t))\nabla_{\boldsymbol{\theta}_c} f_c(\boldsymbol{x};\boldsymbol{\theta}^{(t)}) ושל (δy,cpyx(cx(i);θ(t)))\left(\delta_{y,c}-p_{\text{y}|\mathbf{x}}(c|\boldsymbol{x}^{(i)};\boldsymbol{\theta}^{(t)})\right) בצעד העדכון.

פתרון 9.3

1)

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

pyx(yx;θ)={σ(f(x;θ))y=11σ(f(x;θ))y=0={σ(f(x;θ))y=1σ(f(x;θ))y=0=σ((1)y+1f(x;θ))\begin{aligned} p_{\text{y}|\mathbf{x}}(y|\boldsymbol{x};\boldsymbol{\theta}) &=\begin{cases} \sigma(f(\boldsymbol{x};\boldsymbol{\theta})) & y=1 \\ 1-\sigma(f(\boldsymbol{x};\boldsymbol{\theta})) & y=0 \\ \end{cases}\\ &=\begin{cases} \sigma(f(\boldsymbol{x};\boldsymbol{\theta})) & y=1 \\ \sigma(-f(\boldsymbol{x};\boldsymbol{\theta})) & y=0 \\ \end{cases}\\ &=\sigma\left((-1)^{y+1} f(\boldsymbol{x};\boldsymbol{\theta})\right) \end{aligned}

2)

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

θ=argminθ i=1Nlog(pyx(y(i)x(i);θ))=argminθ i=1Nlog(σ((1)y(i)+1f(x(i);θ)))=Δt(θ)\begin{aligned} \boldsymbol{\theta}^* &=\underset{\boldsymbol{\theta}}{\arg\min}\ -\sum_{i=1}^{N}\log\left(p_{\text{y}|\mathbf{x}}(y^{(i)}|\boldsymbol{x}^{(i)};\boldsymbol{\theta})\right)\\ &=\underset{\boldsymbol{\theta}}{\arg\min}\ \underbrace{ -\sum_{i=1}^{N}\log\left(\sigma\left((-1)^{y^{(i)}+1} f(\boldsymbol{x}^{(i)};\boldsymbol{\theta})\right)\right) }_{\overset{\Delta}{=}t(\boldsymbol{\theta})} \end{aligned}

לשם הנוחות, סימנו את ה objective של בעיית האופטימיזציה ב t(θ)t(\boldsymbol{\theta}). נחשב את הגרדיאנט של ה objective וננסה להביא אותו לצורה דומה לזו שבקשו בשאלה:

θt(θ)=i=1Nθlog(σ((1)y(i)+1f(x(i);θ)))=i=1N(1σ((1)y(i)+1f(x(i);θ)))θ((1)y(i)+1f(x(i);θ))=i=1N(1pyx(y(i)x(i);θ))(1)y(i)θf(x(i);θ)\begin{aligned} \nabla_{\boldsymbol{\theta}}t(\boldsymbol{\theta}) &=-\sum_{i=1}^{N}\nabla_{\boldsymbol{\theta}}\log\left(\sigma\left((-1)^{y^{(i)}+1} f(\boldsymbol{x}^{(i)};\boldsymbol{\theta})\right)\right)\\ &=-\sum_{i=1}^{N}\left(1-\sigma\left((-1)^{y^{(i)}+1}f(\boldsymbol{x}^{(i)};\boldsymbol{\theta})\right)\right)\nabla_{\boldsymbol{\theta}}\left((-1)^{y^{(i)}+1} f(\boldsymbol{x}^{(i)};\boldsymbol{\theta})\right)\\ &=\sum_{i=1}^{N}(1-p_{\text{y}|\mathbf{x}}(y^{(i)}|\boldsymbol{x}^{(i)};\boldsymbol{\theta}))(-1)^{y^{(i)}} \nabla_{\boldsymbol{\theta}}f(\boldsymbol{x}^{(i)};\boldsymbol{\theta})\\ \end{aligned}

צעד העדכון של אלגוריתם ה gradient descent יהיה אם כן:

θ(t+1)=θ(t)ηi=1N(1pyx(y(i)x(i);θ(t)))(1)y(i)θf(x(i);θ(t))\boldsymbol{\theta}^{(t+1)}=\boldsymbol{\theta}^{(t)}-\eta\sum_{i=1}^{N}(1-p_{\text{y}|\mathbf{x}}(y^{(i)}|\boldsymbol{x}^{(i)};\boldsymbol{\theta}^{(t)}))(-1)^{y^{(i)}} \nabla_{\boldsymbol{\theta}}f(\boldsymbol{x}^{(i)};\boldsymbol{\theta}^{(t)})

3)

נתייחס לצעד עדכון מהצורה של:

θ(t+1)=θ(t)ηi=1N(1)y(i)θf(x(i);θ(t))\boldsymbol{\theta}^{(t+1)}=\boldsymbol{\theta}^{(t)}-\eta\sum_{i=1}^{N}(-1)^{y^{(i)}} \nabla_{\boldsymbol{\theta}}f(\boldsymbol{x}^{(i)};\boldsymbol{\theta}^{(t)})

נסתכל על התרומה של הדגימות מהמדגם ששייכים למחלקה y=1y=1 (אשר גורר: (1)y=1(-1)^y=-1). איברים אלו ינסו לשנות את θ\boldsymbol{\theta} בכיוון הגרדיאנט בנקודות x(i)\boldsymbol{x}^{(i)} ששיכות למחלקה. זאת אומרת, שהם ינסו לגרום לשינוי של הפרמטריים כך שהערך של הפונקציה הפרמטרית f(x;θ)f(\boldsymbol{x};\boldsymbol{\theta}) בנקודות x(i)\boldsymbol{x}^{(i)} יהיה גדול יותר.

באופן הפוך, התרומה של הדגימות מהמחלקה y=0y=0(1)y=1(-1)^y=1) תהיה לנסות ולעדכן את θ\boldsymbol{\theta} בכיוון ההפוך מהגרדיאנט. זאת אומרת, שהם ינסו להקטין את הערך של f(x;θ)f(\boldsymbol{x};\boldsymbol{\theta}) בנקודות x(i)\boldsymbol{x}^{(i)} מהמחלקה y=0y=0.

בסה"כ הכל נקבל שהאלגוריתם ינסה בכל צעד לשנות את f(x;θ)f(\boldsymbol{x};\boldsymbol{\theta}) כך שיניב ערכים גבוהים על הנקודות x\boldsymbol{x} שמתאימות ל y=1y=1 וערכים נמוכים על הנקודות שמתאימות ל y=0y=0. התנהגות זו הגיונית משום שזה בדיוק מה שאנחנו רוצים מהמודל שלנו, שאמור לחזות את ההסתברות ש y=1\text{y}=1 בהינתן x\mathbf{x}. משום שהסתברות זו שווה ל σ(f(x;θ))\sigma(f(\boldsymbol{x};\boldsymbol{\theta})) אנו רוצים רוצים ש ff יניב ערכים גבוהים באיזורים שבהם y=1\text{y}=1 בסבירות גבוהה בהינתן x\mathbf{x} וערכים נמוכים בשאר המקומות.

4)

נסתכל על הביטוי (1pyx(y(i)x(i);θ))(1-p_{\text{y}|\mathbf{x}}(y^{(i)}|\boldsymbol{x}^{(i)};\boldsymbol{\theta})). נזכור שההסתברות pyxp_{\text{y}|\mathbf{x}} היא מספר בין 0 ל 1.האיבר כולו יהיה לכן קרוב ל-0 כאשר הסתברות של yy מסויים בהינתן x\boldsymbol{x} היא גבוהה והוא יהיה קרוב ל-1 כאשר ההסתברות נמוכה.

נזכור גם כי pyx(y(i)x(i);θ)p_{\text{y}|\mathbf{x}}(y^{(i)}|\boldsymbol{x}^{(i)};\boldsymbol{\theta}) היא אינה ההסתברות האמיתית של x\mathbf{x} ו y\text{y} אלא ההסתברות שהמודל שלנו נותן לדגימה כלשהי מהמדגם. (אנו רוצים שבסופו של דבר שמודל זה יהיה קרוב להסתברות האמיתית). היינו מעניינים שככל שנעשה יותר צעדי עדכון המודל יגדיל לאט לאט את ההסתברות שהוא נותן לדגימות במדגם (זו בעצם המטרה של MLE ו MAP).

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

5)

בעיית ה MLE הינה:

θ=argminθ i=1Nlog(pyx(y(i)x(i);θ))=argminθ i=1Nlog(softmax(f(x(i);θ))y(i))=Δt(θ)\begin{aligned} \boldsymbol{\theta}^* &=\underset{\boldsymbol{\theta}}{\arg\min}\ -\sum_{i=1}^{N}\log\left(p_{\text{y}|\mathbf{x}}(y^{(i)}|\boldsymbol{x}^{(i)};\boldsymbol{\theta})\right)\\ &=\underset{\boldsymbol{\theta}}{\arg\min}\ \underbrace{ -\sum_{i=1}^N \log\left(\text{softmax}(\boldsymbol{f}(\boldsymbol{x}^{(i)};\boldsymbol{\theta}))_{y^{(i)}}\right) }_{\overset{\Delta}{=}t(\boldsymbol{\theta})} \end{aligned}

נחשב את הגרדיאנט של ה objective:

θct(θ)=i=1Nθclog(softmax(f(x(i);θ))y(i))=i=1N(δy(i),csoftmax(f(x(i);θ))c)θcfc(x(i);θ)=i=1N(δy(i),cpyx(cx(i);θ))θcfc(x(i);θ)\begin{aligned} \nabla_{\boldsymbol{\theta}_c}t(\boldsymbol{\theta}) &=-\sum_{i=1}^{N}\nabla_{\boldsymbol{\theta}_c} \log\left(\text{softmax}(\boldsymbol{f}(\boldsymbol{x}^{(i)};\boldsymbol{\theta}))_{y^{(i)}}\right)\\ &=-\sum_{i=1}^{N} \left(\delta_{y^{(i)},c}-\text{softmax}(\boldsymbol{f}(\boldsymbol{x}^{(i)};\boldsymbol{\theta}))_c\right) \nabla_{\boldsymbol{\theta}_c} f_c(\boldsymbol{x}^{(i)};\boldsymbol{\theta})\\ &=-\sum_{i=1}^{N} \left(\delta_{y^{(i)},c}-p_{\text{y}|\mathbf{x}}(c|\boldsymbol{x}^{(i)};\boldsymbol{\theta})\right) \nabla_{\boldsymbol{\theta}_c} f_c(\boldsymbol{x}^{(i)};\boldsymbol{\theta}) \end{aligned}

צעד העדכון יהיה:

θc(t+1)=θc(t)+ηi=1N(δy(i),cpyx(cx(i);θ(t)))θcfc(x(i);θc(t))c\boldsymbol{\theta}^{(t+1)}_c=\boldsymbol{\theta}^{(t)}_c+\eta\sum_{i=1}^{N} \left(\delta_{y^{(i)},c}-p_{\text{y}|\mathbf{x}}(c|\boldsymbol{x}^{(i)};\boldsymbol{\theta}^{(t)})\right) \nabla_{\boldsymbol{\theta}_c} f_c(\boldsymbol{x}^{(i)};\boldsymbol{\theta}^{(t)}_c)\quad\forall c

האיבר (δy(i),cpyx(cx(i);θ(t)))\left(\delta_{y^{(i)},c}-p_{\text{y}|\mathbf{x}}(c|\boldsymbol{x}^{(i)};\boldsymbol{\theta}^{(t)})\right) הוא חיובי כאשר c=y(i)c=y^{(i)} ושלילי אחרת. איבר זה גורם לכך שבעבור כל דגימה מהמדגם צעד העדכון ינסה לגדיל את הפונקציה הפרמטרית fc(x(i);θc(t))f_c(\boldsymbol{x}^{(i)};\boldsymbol{\theta}^{(t)}_c) שבה c=y(i)c=y^{(i)} ויקטין את הפונקציות הפרמטריות שבהם cy(i)c\neq y^{(i)}.

בדומה למקרה הבינארי ככל שהסבירות של הדגימה במדגם pyx(y(i)x(i);θ)p_{\text{y}|\mathbf{x}}(y^{(i)}|\boldsymbol{x}^{(i)};\boldsymbol{\theta}) כך ההשפעה של הדגימה על העדכון יהיה קטן יותר.

תרגיל 9.4 - MLE and KL divergence

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

נתון לנו מדגם של NN דגימות i.i.d. של משתנה אקראי כלשהו x\text{x}:

D={x(i)}i=1N\mathcal{D}=\{x^{(i)}\}_{i=1}^N

ומודל פרמטרי כל שהוא px(x;θ)p_{\text{x}}(x;\boldsymbol{\theta}). נרצה לבחור את הפרמטרים של המודל θ\boldsymbol{\theta} כך שהמודל יתאר בצורה טובה את הדגימות במדגם.

לשם כך נשתמש במדד הבא אשר מודד עד כמה פונקציית צפיפות הסתברות כלשהי qx(x)q_{\text{x}}(x) תהיה טובה בכדי לתאר דגימות המגיעות מצפיפות הסתברות אחרת px(x)p_{\text{x}}(x). המדד נקרא Kullback-Leibler divergence והוא מוגד באופן הבא:

DKL(px(x)qx(x))=px(x)log(px(x)qx(x))=E(p)[log(px(x)qx(x))]D_{\text{KL}}(p_{\text{x}}(x)||q_{\text{x}}(x)) =\int p_{\text{x}}(x)\log\left(\frac{p_{\text{x}}(x)}{q_{\text{x}}(x)}\right) =\mathbb{E}_{(p)}\left[\log\left(\frac{p_{\text{x}}(x)}{q_{\text{x}}(x)}\right)\right]

הסימון E(p)\mathbb{E}_{(p)} הוא תוחלת לפי הפילוג pxp_{\text{x}}. מדד זה מגיע מתורת האינפורמציה ואנו לא ניכנס למשמעות ולמקור של מדד זה. ככל שהמדד נמוך יותר כך הפילוגים קרובים יותר.

השתמשו במדד זה על מנת להגדיר בעיית אופטימיזציה שבוחרת את הפרמטרים של המודל כפרמטרים כך שהם ממזערים את ה Kullback-Leibler divergence בין המודל הפרמטרי לפילוג האמיתי. בכדי להיפתר מהתוחלת על הפילוג הלא ידוע החליפו אותו בתוחלת אמפירית על המדגם. הראו כי בעיית האופטימיזציה המתקבלת זהה לזו של משערך ה MLE.

פתרון 9.4

נסמן את הפילוג האמיתי (הלא ידוע) של x\text{x} ב px(x)p_{\text{x}}(x) (בלי θ\boldsymbol{\theta}). בעיית האופטימיזציה שהיינו רוצים לפתור הינה:

θ=argminθ DKL(px(x)px(x;θ))=argminθ E(p)[log(px(x)px(x;θ))]=argminθ E(p)[log(px(x))]E(p)[log(px(x;θ))]=argminθ E(p)[log(px(x;θ))]\begin{aligned} \boldsymbol{\theta}^* &=\underset{\boldsymbol{\theta}}{\arg\min}\ D_{\text{KL}}(p_{\text{x}}(x)||p_{\text{x}}(x;\boldsymbol{\theta})) \\ &=\underset{\boldsymbol{\theta}}{\arg\min}\ \mathbb{E}_{(p)}\left[\log\left(\frac{p_{\text{x}}(x)}{p_{\text{x}}(x;\boldsymbol{\theta})}\right)\right] \\ &=\underset{\boldsymbol{\theta}}{\arg\min}\ \mathbb{E}_{(p)}\left[\log(p_{\text{x}}(x))\right] - \mathbb{E}_{(p)}\left[\log(p_{\text{x}}(x;\boldsymbol{\theta}))\right] \\ &=\underset{\boldsymbol{\theta}}{\arg\min}\ -\mathbb{E}_{(p)}\left[\log(p_{\text{x}}(x;\boldsymbol{\theta}))\right] \\ \end{aligned}

נחליף את התוחלת בתוחלת אמפירית על המדגם:

θ=argminθ 1Ni=1Nlog(px(x(i);θ))\begin{aligned} \boldsymbol{\theta}^* &=\underset{\boldsymbol{\theta}}{\arg\min}\ -\frac{1}{N}\sum_{i=1}^N \log(p_{\text{x}}(x^{(i)};\boldsymbol{\theta})) \\ \end{aligned}

שזה בדיוק המינימיזציה של ה log-likelihood עד כדי החלוקה ב NN שלא משנה את בעיית האופטימיזציה.

תרגיל מעשי - איבחון סרטן שד

שיטה נפוצה כיום לאבחון של סרטן הינה בשיטת Fine-needle aspiration. בשיטה זו נלקחת דגימה של רקמה בעזרת מחט ומבוצעת אנליזה בעזרת מיקרוסקופ על מנת לאבחן שני מקרים:

  • Malignant - רקמה סרטנית
  • or Benign - רקמה בריאה

להלן דוגמא לתמונת מיקרוסקופ של דגימה שכזו:

בתרגול זה נעבוד עם מדגם בשם Breast Cancer Wisconsin Diagnostic אשר נאסף על ידי חוקרים מאוניברסיטת ויסקונסין. הוא כולל 30 ערכים מספריים, כגון שטח התא הממוצע והרדיוס ההמוצע, אשר חושבו בעבור 569 דגימות שונות. בנוסף יש לכל דגימה במדגם תווית של האם הדגימה הינה סרטנית או לא.

את המדגם המקורי ניתן למצוא פה: Breast Cancer Wisconsin (Diagnostic) Data Set, אנחנו נשתמש בגרסא מעט מעובדת שלו הנמצאת פה.

נציג כמה עמודות ושורות מייצגות מהמדגם:

diagnosis radius_mean texture_mean perimeter_mean area_mean smoothness_mean compactness_mean concavity_mean
0 M 17.99 10.38 122.8 1001 0.1184 0.2776 0.3001
1 M 20.57 17.77 132.9 1326 0.08474 0.07864 0.0869
2 M 19.69 21.25 130 1203 0.1096 0.1599 0.1974
3 M 11.42 20.38 77.58 386.1 0.1425 0.2839 0.2414
4 M 20.29 14.34 135.1 1297 0.1003 0.1328 0.198
5 M 12.45 15.7 82.57 477.1 0.1278 0.17 0.1578
6 M 18.25 19.98 119.6 1040 0.09463 0.109 0.1127
7 M 13.71 20.83 90.2 577.9 0.1189 0.1645 0.09366
8 M 13 21.82 87.5 519.8 0.1273 0.1932 0.1859
9 M 12.46 24.04 83.97 475.9 0.1186 0.2396 0.2273

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

  • radius_mean - רדיוס התא הממוצא בדגימה.
  • texture_mean - סטיית התקן הממוצעת של רמת האפור בצבע של כל תא בדגימה.

השדה של התוויות y\text{y} הינו:

  • diagnosis - התווית של הדגימה: M = malignant (סרטני), B = benign (בריא)

(בחרנו להתחיל עם 2 שדות משום שמעבר לכך כבר לא נוכל לשרטט את הפילוג של הדגימות ואת החיזוי).

נרצה למצוא חזאי אשר יפריד בין הנקודות הכתומות לנקודות הכחולות. לשם כך נפצל את המדגם ל 60% train / 20% validation / 20% test. נתאים שלושה מודלים: LDA, QDA, linear logistic regression.

LDA

נחשב את פרמטרים של המודל:

py(0)=I0N=0.37p_{\text{y}}(0)=\frac{|\mathcal{I}_0|}{N}=0.37 py(1)=I1N=0.63p_{\text{y}}(1)=\frac{|\mathcal{I}_1|}{N}=0.63 μ0=1I0iI0x(i)=[12.3,17.9]\boldsymbol{\mu}_0 = \frac{1}{|\mathcal{I}_0|}\sum_{i\in \mathcal{I}_0}\boldsymbol{x}^{(i)}=[12.3,17.9]^{\top} μ1=1I1iI1x(i)=[17.5,21.3]\boldsymbol{\mu}_1 = \frac{1}{|\mathcal{I}_1|}\sum_{i\in \mathcal{I}_1}\boldsymbol{x}^{(i)}=[17.5,21.3]^{\top} Σ=1Ni(x(i)μy(i))(x(i)μy(i))T=[5.80.670.6713.5]\Sigma = \frac{1}{N}\sum_{i}\left(\boldsymbol{x}^{(i)}-\boldsymbol{\mu}_{y^{(i)}}\right)\left(\boldsymbol{x}^{(i)}-\boldsymbol{\mu}_{y^{(i)}}\right)^T =\begin{bmatrix} 5.8 & 0.67 \\ 0.67 & 13.5 \end{bmatrix}

פרמטרים אלו יתנו את החיזוי הבא:

נזכיר כי החזאי המתקבל ממודל ה LDA הינו חזאי אשר מחלק את המרחב לשני חלקים על ידי משטח לינארי (במקרה זה קו ישר).

ביצועי חזאי זה על ה validation set (במובן של misclassification rate) הינם: 0.09. זאת אומרת שאנו צפויים לצדוק באבחון ב 91% מהמקרים.

QDA

נחשב את פרמטרים של המודל. הפרמטרים של py(y)p_{\text{y}}(y) ו μc\boldsymbol{\mu}_c לא ישתנו. נחשב לכן רק את מטריצות הקווריאנס:

Σ0=1I0iI0(x(i)μ0)(x(i)μ0)T=[3.30.130.1313.8]\Sigma_0 = \frac{1}{|\mathcal{I}_0|}\sum_{i\in \mathcal{I}_0}\left(\boldsymbol{x}^{(i)}-\boldsymbol{\mu}_0\right)\left(\boldsymbol{x}^{(i)}-\boldsymbol{\mu}_0\right)^T =\begin{bmatrix} 3.3 & -0.13 \\ -0.13 & 13.8 \end{bmatrix} Σ1=1I1iI1(x(i)μ1)(x(i)μ1)T=[10.22213.2]\Sigma_1 = \frac{1}{|\mathcal{I}_1|}\sum_{i\in \mathcal{I}_1}\left(\boldsymbol{x}^{(i)}-\boldsymbol{\mu}_1\right)\left(\boldsymbol{x}^{(i)}-\boldsymbol{\mu}_1\right)^T =\begin{bmatrix} 10.2 & 2 \\ 2 & 13.2 \end{bmatrix}

פרמטרים אלו יתנו את החיזוי הבא:

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

ביצועי חזאי זה על ה validation set הינם: 0.08. זהו שיפור של 1% מביצועיו של מודל ה LDA.

שימוש בכל 30 העמודות במדגם

אם נחזור על החישוב של מודל ה QDA רק עם כל 30 העמודות שבמדגם נקבל miscalssification rate של 0.02.

Linear Logistic Regression

ננסה כעת להתאים מודל של linear logistic regression מהצורה:

pyx(1x;θ)=σ(xθ))p_{\text{y}|\mathbf{x}}(1|\boldsymbol{x};\boldsymbol{\theta}) =\sigma(\boldsymbol{x}^{\top}\boldsymbol{\theta}))

בעיית האופטימיזציה של MLE תהיה:

θ=argminθ i=1NI{y(i)=1}log(σ(x(i)θ))+I{y(i)=0}log(1σ(x(i)θ))\boldsymbol{\theta}^* =\underset{\boldsymbol{\theta}}{\arg\min}\ -\sum_{i=1}^{N} I\{y^{(i)}=1\}\log(\sigma(\boldsymbol{x}^{(i)\top}\boldsymbol{\theta})) +I\{y^{(i)}=0\}\log(1-\sigma(\boldsymbol{x}^{(i)\top}\boldsymbol{\theta}))

נשתמש ב gradient descent על מנת למצוא את הפרמטרים של המודל. בכדי לבחור את גודל הצעד ננסה כמה ערכים שונים ונריץ את האלגוריתם מספר קטן של צעדים (1000) ונבחר את גודל הצעד הגדול ביותר אשר גורם למודל להתכנס. בדוגמא זו נציג את התוצאות בעבור 4 ערכים של גודל הצעד:

בגרפים האלה רואים את החישוב של ה objective על ה train set ועל ה validation set כפונקציה של מספר הצעדים. נשים לב שבעבור בחירה של η=0.1\eta=0.1 או η=1\eta=1 המודל מתבדר לערכים מאד גדולים וזה ימנע ממנו להתכנס למינימום של הפונקציית המטרה. נבחר אם כן את גודל הצעד להיות η=0.01\eta=0.01 ונריץ את האלגוריתם מספר רב של צעדים (1000000):

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

הביצועים של המודל עם הפרמטרים המתקבלים אחרי מיליון צעדים נותנים miscalssification rate של 0.02 שזה דומה לתוצאה שקיבלנו על ידי שימוש ב QDA.

ביצועי המודל על ה test set הינם: 0.04.