อธิบาย Back Propagation ของSoftmax Classifier แบบ Modular design


ในบล็อกที่แล้วที่แสดงวิธีการหา Backpropagation แบบ Modular design,เราได้อธิบายคร่าวๆว่าเราสามารถ Back propagate ได้อย่างไร  เพื่อให้เห็นภาพ เราจะยกตัวอย่างการทำ Back Propagation ของ Softmax Classifier.  ในบทความนี้เราจะแสดงให้เห็นว่า Softmax Classifier สามารถถูกมองเป็น2layers, layer บนคือ Softmax loss และ layer ล่างคือ fully connect layer.

Softmax classifier เป็นตัวแบ่งแยกทางสถิติคล้ายคลึงกับ SVM ที่อธิบายในโพสต์ก่อน   มันเป็น Multiclass Classifier.  Softmax Classifier สามารถบอกได้ว่าความน่าจะเป็นที่ class นั้นจะออกจะเป็นเท่าไหร่จากที่เรียนมา  เพื่อจะหลีกเลี่ยงคณิตศาสตร์โดยไม่จำเป็น  เราจะเริ่มจาก Loss function ของ Softmax Classifier

เราเริ่มจาก Fully Connect layer Fully connect layer มี $w_{ij}$ อยู่ $I \times J$ ตัว. สำหรับ $j=1$ เรามี $w_{i1}$ อยู่ $I$ ตัว. เพราะฉะนั้น เราสามารถมองว่าเรามี $w_{i}$ ที่เป็น Vector ขนาด $I$ อยู่ $J$ ชุด. ขอเขียนvectorนี้ตัวที่$j$ว่า $\mathbf{w}_j \in  \mathbb{R}^I$.  Activation ของ lower layer มีทั้งหมด I ตัว,เราแทนด้วยตัวแปร $\mathbf{y} \in \mathbb{R}^I$ . ที่ $y_j$ ใดๆ สำหรับ $\forall j \in {1...J}$ เราได้ว่า

\begin{equation}
y_j = \mathbf{w_i}^{(j)} \cdot \mathbf{y}^{lower} \quad \forall j \in {1....J}
\end{equation}
ประโยคทางคณิตศาสตร์ด้านบน ที่จริงไม่มีอะไรซับซ้อน มันคือการเขียนอีกแบบหนึ่งของสมการเชิง matrix
\begin{equation}
\mathbf{y}^{upper}_{size(J)} = \mathbf{W}_{size(J \times I)} \mathbf{y}^{lower}_{size(I)}
\end{equation}

จากนั้นเรานำผลของ Fully Connect layer ไปใช้ใน Softmax loss layerตามสมการด้านล่าง
\begin{equation}

 E_{ii} = -ln \frac{e^{y_{j=t_{ii}}}}{\sum_j e^{y_j}} = -ln \quad z_t \end{equation} where $ii$ is the $ii^{th}$ training sample, และ
\begin{equation}
 z_j = \frac{e^{y_{j}}}{\sum_q e^{y_q}}
\end{equation}

เพื่อให้ Notation มีความง่าย เราจะขอทำการตัด $ii$ ออกไป ขอให้จำไว้ว่าการคำนวนข้างล่างอยู่บนความคิดของ Loss function ต่อ dataset ตัวที่ $ii^{th}$.
และนั่นจบ Forward Propagation  ของ Softmax loss layer






เราได้แสดงให้ท่านเห็นว่าผลคูณของ matrix ก็คือ Fully Connect Layer ของนิวรอลเน็ตเวิร์ค จากสมการที่1)และ2)เหมือนที่เคยอธิบายไว้ก่อนหน้านี้ว่า Neural Network ก็คือ Composite Function. (สำหรับคนไทยจะจำได้ว่าถูกเขียนอยู่ในรูป $f(z(x))$). ในกรณีนี้สมการ1)ก็คือสมการ$f(z)$ และ สมการที่2)อธิบาย $z(x)$

จากวิธีการหา Backpropagation แบบ Modular design, เราเริ่มที่ข้อที่1) เราต้องการหา $\frac{\partial E}{\partial y_j} \quad \forall j \in \lbrace1,...,J\rbrace$
หรือเขียนเป็นสมการ Matrix ได้ว่า $\frac{\partial E}{\partial \mathbf{y_j}}$ ตามคำอธิบายในblogดังกล่าว เราต้องเริ่มจากการใช้ Calculus หาค่านี้มา เราเริ่มจากการหาความสำพันธ์ระหว่าง $\mathbf{y_j}$ กับ E.

กรณี1. $t \ne j$

\begin{equation}

\frac{\partial E}{\partial y_j} =  \frac{\partial (-y_t + ln \sum_q e^{y_q})}{\partial y_j}\\
\frac{\partial E}{\partial y_j} =   \frac{1}{\sum_q e^{y_q}} \frac{\partial \sum_q e^{y_q}}{\partial y_j}\\
\frac{\partial E}{\partial y_j} =   \frac{1}{\sum_q e^{y_q}} e^{y_j} = z_j
\end{equation}

กรณี1. $t = j$
\begin{equation}

\frac{\partial E}{\partial y_j} =  \frac{\partial (-y_j + ln \sum_q e^{y_q})}{\partial y_j}\\
\frac{\partial E}{\partial y_j} =  -1+\frac{1}{\sum_q e^{y_q}} \frac{\partial \sum_q e^{y_q}}{\partial y_j}\\
\frac{\partial E}{\partial y_j} = -1+ \frac{1}{\sum_q e^{y_q}} e^{y_j} = z_j -1
\end{equation}

เราเขียนรวมสองกรณีได้ว่า
\begin{equation}
 \frac{\partial E}{\partial y_j} = z_j - 1\lbrace j == t \rbrace
\end{equation}
where $\lbrace a == b\rbrace = 1$,if $a = b$, and $\lbrace a == b\rbrace = 0$,if $a \ne b$.

และนั่นคือ Back Propagation rule สำหรับ Softmax loss layer.

เพื่อที่จะหา Update rule สำหรับ $w_{ij}$ เราต้องคำนวน $\frac{\partial E}{\partial w_{ij}}$ ซึ่งจะได้ว่า
\begin{equation}
 \frac{\partial E}{\partial w_{ij}} = \frac{\partial E}{\partial y_j} \cdot \frac{\partial y_j}{\partial w_{ij}}
\end{equation}
แต่จาก $y_j = \sum_{i} w_{ij}y_i $ดังนั้น
\begin{equation}\frac{\partial y_j}{\partial w_{ij}} = y_i
\end{equation}
\begin{equation}
 \frac{\partial E}{\partial w_{ij}} = ( z_j - 1\lbrace j == t \rbrace ) \cdot y_i
\end{equation}
 แต่เรายังไม่เสร็จ เรายังต้องหา $\frac{\partial E}{\partial y_i}$ เพื่อใช้ Back propagate ลงชั้นล่าง  เราหาได้จาก
\begin{equation}\frac{\partial E}{\partial y_i} = \sum_j \frac{\partial E}{\partial y_j} \cdot \frac{\partial y_j}{\partial y_i}
\end{equation}

\begin{equation}
 \frac{\partial E}{\partial y_i} = \sum_j w_{ij}( z_j - 1\lbrace j == t \rbrace )
\end{equation}

ตอนนี้เราก็ได้ Back Propagate ลง weight ของ softmax ที่อยู่ในรูป fully connect layer และได้ back propagate ลง input ของ softmax เรียบร้อยแล้ว

จะเห็นได้ว่า Softmax Classifier ถูกมองเป็น 2 layer คือ Softmax loss layer และ fully connect layer. จะเห็นวิธีการใช้ Modular Designed Back Propgation ที่อธิบายไปแล้วในโพสต์ Backpropagation แบบ Modular design

ความคิดเห็น

บทความที่ได้รับความนิยม