הרצאה 10 - Neural Networks

PDF

מה נלמד היום

רשת נוירונים מלאכותית כמודל פרמטרי

  • נתקלנו במספר מקרים בהם ניסינו למצוא פונקציה שתבצע פעולה או תתאר תופעה כלשהי (מציאת חזאי או פונקציית פילוג).
  • דרך נוחה לעשות זאת היא בעזרת מודל פרמטרי ומציאת הפרמטרים האופטימאלים.
  • עד כה עבדנו עם מודלים לינאריים בפרמטרים.
  • ניתן לקרב הרבה מאד פונקציות בעזרת פולינום מסדר מספיק גבוה.
  • מודלים אלו הם לא מאד מוצלחים ובעייתיים וכאשר x\boldsymbol{x} הוא ממימד גבוה.
  • האם ישנם מודלים מתאימים יותר?

רשתות נוירונים מלאכותיות
Artificial Neural Networks - ANN

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

רשתות עצביות ביולוגיות



תקשורת בין תאי עצב

רשתות עצביות ביולוגיות



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

נוירון ביולוגי



נוירון ביולוגי

בצורה פשטנית ניתן לתאר את האופן בו נוירון ביולוגי פועל כך:

נוירון ביולוגי

באופן סכימתי ניתן למדל את פעולת הנוירון באופן הבא:

y=I{xw+b>0}y=I\{\boldsymbol{x}^{\top}\boldsymbol{w}+b>0\}

נוירונים ברשת נוירונים מלאכותית

  • פונקציית המדרגה היא בפועל מאד בעייתית.
  • לשם כך נחליף את פונקציית המדרגה בפונקציה אחרת כל שהיא φ()\varphi(\cdot).
  • פונקציה זו מכונה פונקציית ההפעלה (activation function).
  • בחירות נפוצות של פונקציית ההפעלה כוללות את:

    • הפונקציה הלוגיסטית (סיגמואיד): φ(x)=σ(x)=11+ex\varphi(x)=\sigma(x)=\frac{1}{1+e^{-x}}
    • טנגנס היפרבולי: φ(x)=tanh(x/2)\varphi(x)=\tanh\left(x/2\right)
    • φ(x)=max(x,0)\varphi(x)=\max(x,0) :ReLU (Rectified Linear Unit).
  • פונקציות נוספות שנמצאות הן כל מיני וריאציות של ReLU.

נוירונים ברשת נוירונים מלאכותית

באופן סכימתי נסמן נוירון בודד באופן הבא:

רשת נוירונים

נשלב מספר נוירונים יחד על מנת לבנות רשת נוירונים:



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

רשת נוירונים


לרוב הנוירונים יהיו מהצורה של:

hj(x;wj,bj)=φ(xwj+bj)h_j(\boldsymbol{x};\boldsymbol{w}_j,b_j)=\varphi(\boldsymbol{x}^{\top}\boldsymbol{w}_j+b_j)

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

הארכיטקטורה של הרשת

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

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

הארכיטקטורה של הרשת

  • יחידות נסתרות (hidden units): הנוירונים אשר אינם מחוברים למוצא הרשת.
  • רשת עמוקה (deep network): רשת אשר מכילה מסלולים אשר עוברים דרך יותר מיחידה נסתרת אחת.

Feed-forward vs. Recurrent

אנו מבדילים בין שני סוגי ארכיטקטורות:

  • רשת הזנה קדמית (feed-forward network): ארכיטקטורות אשר אינן מכילות מסלולים מעגליים.
  • רשתות נשנות (recurrent neural network - RNN): בקורס זה לא נעסוק ברשתות מסוג זה. אלו ארכיטקטורות אשר כן מכילות מסלולים מעגליים.

על החשיבות של פונקציות ההפעלה

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

המוצא של הרשת

Regression + ERM

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

המוצא של הרשת

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

  • הרשת תמדל את pyx(1x)p_{\text{y}|\mathbf{x}}(1|\boldsymbol{x}).
  • אנו נרצה שהרשת תוציא ערך סקלרי רציף בתחום בין 0 ל-1.
  • שהמוצא של הרשת יתנקז לנוירון בודד עם פונקציית הפעלה שמוציאה ערכים בתחום [0,1][0,1] כדוגמאת הפונקציה הלוגיסטית.

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

  • הרשת תמדל את כל ההסתברויות pyx(yx)p_{\text{y}|\mathbf{x}}(y|\boldsymbol{x}).
  • נרצה שהרשת תוציא וקטור באורך CC שעליו נפעיל את פונקציית ה softmax.

מציאת הפרמטרים של המודל

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

  • ב ERM אנו ננסה למזער את ה risk האמפירי.
  • בגישה הדיסקרימינטיבית ההסתברותית נשתמש ב MLE או MAP. במקרה של רגרסיה לוגיסטית נוכל להשתמש בפונקציה מהרצאה 9

כדי לפתור את בעיית האופטימיזציה נשתמש ב gradient descent.

מציאת הפרמטרים של המודל

נסמן את מוצא הרשת f(x;W)Rf(x;W)\in\mathbb{R}.

רגרסיה: לדוגמה, פונקציית ההפסד של least squares היא

L(W)=i=1n(y(i)f(x(i);W))2\mathcal{L}(W)=\sum_{i=1}^{n}\left(y^{(i)}-f\left(x^{(i)};W\right)\right)^{2}

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

L(W)=i=1N[y(i)log(σ(f(x(i);W)))+(1y(i))log(1σ(f(x(i);W)))]\mathcal{L}(W)=-\sum_{i=1}^{N}\left[y^{(i)}\log\left(\sigma\left(f\left(x^{(i)};W\right)\right)\right)+\left(1-y^{(i)}\right)\log\left(1-\sigma\left(f\left(x^{(i)};W\right)\right)\right)\right]

עם פונקציית הסיגמואיד σ(z)=1/(1+exp(z))\sigma(z)=1/\left(1+\exp(-z)\right).

במקרה של סיווג רב מחלקתי f(x;W)=(f1(x;W),,fc(x;W))RCf(x;W)=\left(f_{1}(x;W),\ldots,f_{c}(x;W)\right)\in\mathbb{R}^{C}, ניתן להשתמש בפונקציית softmax ופונקציית ההפסד משקף 28 בהרצאה 9.

MultiLayer Perceptron (MLP)

  • הנוירונים מסודרים בשכבות (layers), כשתייים או יותר
  • השכבות הן Fully Connected (FC) (כל נוירון מוזן מכל הנוירונים שבשכבה שלפני).

MultiLayer Perceptron (MLP)

מה שמגדיר את הארכיטקטורה במקרה של MLP הוא מספר השכבות הנסתרות וכמות הנוירונים בכל שכבה (רוחב השכבה). בדוגמה הזו, יש ברשת 3 שכבות ברוחב 2, 3 ו 2.

רישום מטריצי

  • Wi=[wi,1wi,2]W_i= \begin{bmatrix} -&\boldsymbol{w}_{i,1}&-\\ -&\boldsymbol{w}_{i,2}&-\\ &\vdots&\\ \end{bmatrix}
  • bi=[bi,1,bi,2,]\boldsymbol{b}_i=[b_{i,1},b_{i,2},\dots]^{\top}

כאשר Wi,biW_i, b_i הם סט המשקלים וההסטים המתאימים לשכבה ii. בשכבה ה-ii ישנם did_i נוירונים וכן dind_{in}, doutd_{out} הם ממדי המטריצות בהתאם.

הפונקציה אותה מממשת השכבה כולה הינה:

zi=φ(Wizi1+bi)\boldsymbol{z}_i=\varphi(W_i\boldsymbol{z}_{i-1}+\boldsymbol{b}_i)

רישום מטריצי

עבור MLP כללי עם LL שכבות ניתן לכתוב

zL=φL(WLzL1+bL)=φL(WLφL1(WL1zL2+bL1))=hLhL1h1(x)z_{L}=\varphi_{L}\left(W_{L}z_{L-1}+b_{L}\right)=\varphi_{L}\left(W_{L}\varphi_{L-1}\left(W_{L-1}z_{L-2}+b_{L-1}\right)\right)=h_{L}\circ h_{L-1}\circ\cdots\circ h_{1}(x)

כאשר

h(z1)=φ(Wz1+b)h_{\ell}\left(z_{\ell-1}\right)=\varphi_{\ell}\left(W_{\ell}z_{\ell-1}+b_{\ell}\right)

שימו לב, φ\varphi_{\ell} יכולה להיות תלויה בשכבה.

ניתן לכתוב זאת בצורה רקורסיבית

z0=xu=Wzl1+bfor l=1 to Lz=φ(u)for l=1 to L\begin{aligned}\mathbf{z}_{0} & =\mathbf{x}\\ \mathbf{u}_{\ell} & =W_{\ell}\mathbf{z}_{l-1}+\mathbf{b}_{\ell}\quad\text{for }l=1\text{ to }L\\ \mathbf{z}_{\ell} & =\varphi_{\ell}(\mathbf{u}_{\ell})\quad\text{for }l=1\text{ to }L \end{aligned}

כאשר פעולת האקטיבציה φ\varphi_{\ell} מתבצעת איבר-איבר ו-yL=zL\mathbf{y}_{L}=\mathbf{z}_{L}.

"משפט הקירוב האוניברסלי"

בהינתן:

  • פונקציית הפעלה רציפה כלשהיא φ\varphi שאינה פולינומיאלית.
  • ופונקציה רציפה כלשהיא על קוביית היחידה f:[0,1]Din[0,1]Doutf:[0,1]^{D_{\text{in}}}\rightarrow[0,1]^{D_{\text{out}}}.

אזי ניתן למצוא פונקציה fε:[0,1]Din[0,1]Doutf_{\varepsilon}:[0,1]^{D_{\text{in}}}\rightarrow[0,1]^{D_{\text{out}}} מהצורה:

fε(x)=W2φ(W1x+b1)+b2f_{\varepsilon}(\boldsymbol{x})=W_2\varphi(W_1\boldsymbol{x}+\boldsymbol{b}_1)+\boldsymbol{b}_2

כך ש:

supx[0,1]Dinf(x)fε(x)<ε\underset{x\in[0,1]^{D_{\text{in}}}}{\text{sup}}\lVert f(\boldsymbol{x})-f_{\varepsilon}(\boldsymbol{x}) \rVert<\varepsilon

הערה לגבי נגזרות וקטוריות

זכרו כי עבור פונקציה סקלרית f(θ),θRnf(\boldsymbol{\theta}),\boldsymbol{\theta}\in\mathbb{R}^{n}

f(θ)=f(θ)θ=[f(θ)θ1,,f(θ)θn]R1×n\nabla f(\theta)=\frac{\partial f(\theta)}{\partial\theta}=\left[\frac{\partial f(\theta)}{\partial\theta_{1}},\ldots,\frac{\partial f(\theta)}{\partial\theta_{n}}\right]\in\mathbb{R}^{1\times n}

תהי g(θ)\boldsymbol{g}(\boldsymbol{\theta}) פונקציה וקטורית של וקטור θ\mathbf{\boldsymbol{\theta}}, g:θRm\mathbf{g}:\mathbf{\theta}\mapsto\mathbb{R}^{m}, g(θ)=(g1(θ),,gm(θ))\mathbf{g}(\mathbf{\boldsymbol{\theta}})=\left(g_{1}(\mathbf{\mathbf{\boldsymbol{\theta}}}),\ldots,g_{m}(\mathbf{\boldsymbol{\theta}})\right).

אזי

g(θ)θ=[gi(θ)θj]ijRm×n\frac{\partial\mathbf{g}(\boldsymbol{\theta})}{\partial\boldsymbol{\theta}}=\left[\frac{\partial g_{i}(\boldsymbol{\theta})}{\partial\theta_{j}}\right]_{ij}\in\mathbb{R}^{m\times n}

ובמקרה הפשוט בו g(θ)=(g1(θ1),,gm(θm))\mathbf{g}(\boldsymbol{\theta})=\left(g_{1}(\theta_{1}),\ldots,g_{m}(\theta_{m})\right) מתקיים כי

g(θ)θ=diag(g1(θ1),,gm(θm))=diag(g(θ))\frac{\partial\mathrm{\mathbf{g}}(\boldsymbol{\theta})}{\partial\boldsymbol{\theta}}=\mathrm{diag}\left(g'_{1}(\theta_{1}),\ldots,g'_{m}(\theta_{m})\right)=\mathrm{diag}\left(\mathbf{g}'\left(\boldsymbol{\theta}\right)\right)

Back-Propagation

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

L(W)W\frac{\mathcal{\partial L}(W)}{\partial W_{\ell}}

כאשר WW_{\ell} הם המשקולות של השכבה ה-\ell. שימו לב כי

L(W)W=L(W)zzW=L(W)zzuuWuW=z1zu=diag(φ(u))\begin{aligned} \frac{\mathcal{\partial L}(W)}{\partial W_{\ell}} &= \frac{\mathcal{\partial L}(W)}{\partial z_{\ell}}\frac{\partial z_{\ell}}{\partial W_{\ell}}=\frac{\mathcal{\partial L}(W)}{\partial z_{\ell}}\frac{\partial z_{\ell}}{\partial u_{\ell}}\frac{\partial u_{\ell}}{\partial W_{\ell}} \\ \frac{\partial\mathbf{u}_{\ell}}{\partial W_{\ell}} & =\mathbf{z}_{\ell-1} \\ \frac{\partial\mathbf{z}_{\ell}}{\partial\mathbf{u}_{\ell}} & =\mathrm{diag}\left(\varphi'_{\ell}\left(\mathbf{u}_{\ell}\right)\right) \end{aligned}

כאשר הנגזרת המאתגרת היחידה לחישוב היא הראשונה.

Back-Propagation

שיטה המקלה על חישוב הנגזרות על ידי שימוש בכלל השרשרת.

כלל השרשרת - תזכורת

במקרה הסקלרי:

(f(g(x)))=f(g(x))g(x)\left(f(g(x))\right)'=f'(g(x))\cdot g'(x)

במקרה של מספר משתנים:

ddxf(z1(x),z2(x),z3(x))=(z1f(z1(x),z2(x),z3(x)))ddxz1(x)+(z2f(z1(x),z2(x),z3(x)))ddxz2(x)+(z3f(z1(x),z2(x),z3(x)))ddxz3(x)\begin{aligned} \frac{d}{dx} f(z_1(x),z_2(x),z_3(x)) =& &\left(\frac{\partial}{\partial z_1} f(z_1(x),z_2(x),z_3(x))\right)\frac{d}{dx}z_1(x)\\ &+&\left(\frac{\partial}{\partial z_2} f(z_1(x),z_2(x),z_3(x))\right)\frac{d}{dx}z_2(x)\\ &+&\left(\frac{\partial}{\partial z_3} f(z_1(x),z_2(x),z_3(x))\right)\frac{d}{dx}z_3(x)\\ \end{aligned}

Back-Propagation

לאלגוריתם 2 שלבים:

  • Forward pass: העברה של הדגימות דרך הרשת ושמירה של כל ערכי הביניים.
  • Backward pass: חישוב של הנגזרות של הנוירונים מהמוצא של הרשת לכיוון הכניסה.

Back-Propagation :דוגמא פשוטה


נרצה לחשב את L/θi\partial\mathcal{L}/\partial\theta_{i} עבור פרמטר θi\theta_{i} כלשהו. למשל, עבור פונקציית ההפסד הריבועית L=(yt)2,L=(y-t)^{2}, כאשר tt הוא הערך האמיתי

Lθi=2(yt)yθi\frac{\partial L}{\partial\theta_{i}}=2\left(y-t\right)\frac{\partial y}{\partial\theta_{i}}

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

Back-Propagation :דוגמא פשוטה


נרשום את הנגזרת של yy לפי θ2\theta_2:

yθ2=yz2z2θ2=yz2θ2h2(z1;θ2)\frac{\partial y}{\partial\theta_2}=\frac{\partial y}{\partial z_2}\frac{\partial z_2}{\partial \theta_2}=\frac{\partial y}{\partial z_2}\frac{\partial}{\partial \theta_2}h_2(z_1;\theta_2)

נוכל לפרק גם את הנגזרת של dydz2\frac{dy}{dz_2}:

yz2=yz3z3z2=z3h4(z3;θ4)z2h3(z2;θ3)\frac{\partial y}{\partial z_2}=\frac{\partial y}{\partial z_3}\frac{\partial z_3}{\partial z_2}=\frac{\partial}{\partial z_3}h_4(z_3;\theta_4)\frac{\partial}{\partial z_2}h_3(z_2;\theta_3)

לכן:

yθ2=yz3z3z2z2θ2=z3h4(z3;θ4)z2h3(z2;θ3)θ2h2(z1;θ2)\frac{\partial y}{\partial\theta_2}=\frac{\partial y}{\partial z_3}\frac{\partial z_3}{\partial z_2}\frac{\partial z_2}{\partial\theta_2}=\frac{\partial}{\partial z_3}h_4(z_3;\theta_4)\frac{\partial}{\partial z_2}h_3(z_2;\theta_3)\frac{\partial}{\partial \theta_2}h_2(z_1;\theta_2)

Back-Propagation :דוגמא פשוטה

yθ2=yz3z3z2z2θ2=z3h4(z3;θ4)z2h3(z2;θ3)θ2h2(z1;θ2)\frac{\partial y}{\partial\theta_2}=\frac{\partial y}{\partial z_3}\frac{\partial z_3}{\partial z_2}\frac{\partial z_2}{\partial\theta_2}=\frac{\partial}{\partial z_3}h_4(z_3;\theta_4)\frac{\partial}{\partial z_2}h_3(z_2;\theta_3)\frac{\partial}{\partial\theta_2}h_2(z_1;\theta_2)

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

  • לחשב את כל ה ziz_i לאורך הרשת (forward pass).
  • לחשב את כל הנגזרות מהמוצא של הרשת ועד לנקודה בה נמצא הפרמטר שלפיו רוצים לגזור (backward-pass).

Back-Propagation :דוגמא מעט יותר מורכבת


נחשב את הנגזרת של y1y_1 לפי θ3\theta_3.

Back-Propagation :דוגמא מעט יותר מורכבת


נפרק את הנגזרת של y1θ3\frac{\partial y_1}{\partial\theta_3} בדומה למה שחישבנו קודם:

y1θ3=y1z7z7z6z6z3z3θ3=z7h8(z7;θ8)z6h7(z6;θ7)z3h6(z5;θ6)θ3h3(z2;θ3)\begin{aligned} \frac{\partial y_1}{\partial\theta_3} &=\frac{\partial y_1}{\partial z_7}\frac{\partial z_7}{\partial z_6}\frac{\partial z_6}{\partial z_3}\frac{\partial z_3}{\partial\theta_3}\\ &=\frac{\partial}{\partial z_7}h_8(z_7;\theta_8)\frac{\partial}{\partial z_6}h_7(z_6;\theta_7)\frac{\partial}{\partial z_3}h_6(z_5;\theta_6)\frac{\partial}{\partial\theta_3}h_3(z_2;\theta_3) \end{aligned}

Back-Propagation :דוגמא מעט יותר מורכבת

y1θ3=y1z7z7z6z6z3z3θ3=z7h8(z7;θ8)z6h7(z6;θ7)z3h6(z5;θ6)θ3h3(z2;θ3)\begin{aligned} \frac{\partial y_1}{\partial\theta_3} &=\frac{\partial y_1}{\partial z_7}\frac{\partial z_7}{\partial z_6}\frac{\partial z_6}{\partial z_3}\frac{\partial z_3}{\partial\theta_3}\\ &=\frac{\partial}{\partial z_7}h_8(z_7;\theta_8)\frac{\partial}{\partial z_6}h_7(z_6;\theta_7)\frac{\partial}{\partial z_3}h_6(z_5;\theta_6)\frac{\partial}{\partial\theta_3}h_3(z_2;\theta_3) \end{aligned}
  • נריץ את ה forward-pass בשביל לחשב את ערכי ה ziz_i.
  • נריץ את ה backward-pass בו נחשב את הנגזרות מהמוצא של הרשת עד לנגזרת של h3h_3.

Back-Propagation - MLP

משוואות ה forward-pass:

z1=φ(W1x+b1u1),W1d1×dinz2=φ(W2z1+b2u2),W2d2×d1y=w3Tz2+b3,w3d2×1\boldsymbol{z}_1=\varphi(\underbrace{W_1\boldsymbol{x}+\boldsymbol{b}_1}_{\boldsymbol{u}_1}), \qquad W_1 \sim d_1 \times d_{in} \\ \boldsymbol{z}_2=\varphi(\underbrace{W_2\boldsymbol{z}_1+\boldsymbol{b}_2}_{\boldsymbol{u}_2}), \qquad W_2 \sim d_2 \times d_1 \\ y=\boldsymbol{w}_3^T\boldsymbol{z}_2+\boldsymbol{b}_3, \qquad w_3 \sim d_2 \times 1 \\

Back-Propagation and MLPs

Forward pass

z0=xu=Wzl1+bfor l=1 to Lz=φ(u)for l=1 to L\begin{aligned}\mathbf{z}_{0} & =\mathbf{x}\\ \mathbf{u}_{\ell} & =W_{\ell}\mathbf{z}_{l-1}+\mathbf{b}_{\ell}\quad\text{for }l=1\text{ to }L\\ \mathbf{z}_{\ell} & =\varphi_{\ell}(\mathbf{u}_{\ell})\quad\text{for }l=1\text{ to }L \end{aligned}

Backward pass

δL=diag(φL(uL))LzLδ=diag(φ(u))W+1δ+1for l=L1 to 1\begin{aligned} \delta_{L} &=\mathrm{diag}\left(\varphi'_{L}(u_{L})\right) \frac{\mathcal{\partial L}}{\partial z_{L}} \\ \delta_{\ell} &= \mathrm{diag}\left(\varphi'_{\ell}(u_{\ell})\right) W_{\ell+1}^{\top}\delta_{\ell+1}\quad\text{for }l=L-1\text{ to }1 \end{aligned}

Back-Propagation and MLPs

חישוב הגרדיאנט יתבצע באמצעות

WL=δz1;bL=δ\nabla_{W_{\ell}}\mathcal{L}=\delta_{\ell}z_{\ell-1}^{\top}\quad;\quad\nabla_{b_{\ell}}\mathcal{L}=\delta_{\ell}

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

W(t+1)=W(t)ηδ(t)z1(t);b(t+1)=b(t)ηδ(t)W_{\ell}^{(t+1)}=W_{\ell}^{(t)}-\eta\delta_{\ell}^{(t)}z_{\ell-1}^{(t)\top}\quad;\quad b_{\ell}^{(t+1)}=b_{\ell}^{(t)}-\eta\delta_{\ell}^{(t)}