به‌روزرسانی پارامترهای نرون سیگمویدی با Cross-Entropy

مدل نرون:

\[\hat y = g(z) = \sigma(z) = \sigma(w^T x + b)\]

که در آن:

  • $x$ بردار ویژگی‌ها
  • $w$ وزن‌ها
  • $b$ بایاس
  • $z = w^T x + b$
  • $\sigma(z) = \frac{1}{1+e^{-z}}$

مسئله: طبقه‌بندی دودویی


تابع ضرر Cross-Entropy دودویی

برای یک نمونه با برچسب واقعی $y \in {0,1}$:

\[L = -\big[y \log(\hat y) + (1-y)\log(1-\hat y)\big]\]

هدف یادگیری

\[\min_{w,b} L\]

با گرادیان کاهشی:

\[w \leftarrow w - \eta \frac{\partial L}{\partial w}\] \[b \leftarrow b - \eta \frac{\partial L}{\partial b}\]

محاسبه گرادیان — مرحله به مرحله

مشتق loss نسبت به خروجی

\[\frac{\partial L}{\partial \hat y} = -\left(\frac{y}{\hat y} - \frac{1-y}{1-\hat y}\right)\]

مشتق سیگموید

\[\frac{d\sigma}{dz} = \sigma(z)(1-\sigma(z)) = \hat y(1-\hat y)\]

نتیجه مهم (ساده‌سازی بزرگ)

با قاعده زنجیره:

\[\frac{\partial L}{\partial z} = \hat y - y\]

این ساده شدن دلیل اصلی استفاده Cross-Entropy با سیگموید است.


گرادیان نسبت به وزن‌ها

چون:

\[z = w^T x + b\]

داریم:

\[\frac{\partial z}{\partial w} = x\]

پس:

\[\frac{\partial L}{\partial w} = (\hat y - y) x\]

گرادیان نسبت به بایاس

\[\frac{\partial L}{\partial b} = \hat y - y\]

قانون به‌روزرسانی پارامترها

وزن‌ها:

\[w \leftarrow w - \eta (\hat y - y)x\]

بایاس:

\[b \leftarrow b - \eta (\hat y - y)\]

تفسیر شهودی

ترم خطا:

\[(\hat y - y)\]
  • اگر $\hat y > y$ → بیش‌برآورد → وزن‌ها کاهش
  • اگر $\hat y < y$ → کم‌برآورد → وزن‌ها افزایش

فرم برداری برای یک Batch

اگر $X$ ماتریس داده باشد:

\[\nabla_w L = X^T(\hat y - y)\]

استفاده از Cross-Entropy در شبکه‌های عصبی عمیق

در شبکه‌های عصبی عمیق، Cross-Entropy پرکاربردترین تابع ضرر برای مسائل طبقه‌بندی است.
ایده همان است که قبلاً در نرون سیگمویدی دیدید — فقط اکنون خروجی از چندین لایه عبور می‌کند و گرادیان با Backpropagation به همه لایه‌ها منتقل می‌شود.


ساختار کلی شبکه

\[x → Layers → z^{(L)} → g(z^{(L)}) → \hat y\]
  • $z^{(L)}$ خروجی خطی لایه آخر
  • $g$ تابع فعال‌سازی خروجی
  • $\hat y$ پیش‌بینی احتمالاتی

انتخاب تابع خروجی + Cross-Entropy

✅ طبقه‌بندی دودویی

خروجی: Sigmoid

\[\hat y = \sigma(z)\]

Cross-Entropy دودویی:

\[L = - [ y \log(\hat y) + (1-y)\log(1-\hat y) ]\]

✅ طبقه‌بندی چندکلاسه

خروجی: Softmax

\[\hat y_i = \frac{e^{z_i}}{\sum_j e^{z_j}}\]

Cross-Entropy چندکلاسه:

\[L = - \sum_i y_i \log(\hat y_i)\]

(برچسب‌ها معمولاً one-hot هستند)


خاصیت طلایی Softmax + Cross-Entropy

اگر Softmax و Cross-Entropy با هم استفاده شوند:

گرادیان بسیار ساده می‌شود:

\[\frac{\partial L}{\partial z_i} = \hat y_i - y_i\]

👉 این همان ساده‌شدنی است که در سیگموید هم دیدیم.


روند آموزش در شبکه عمیق

پیاده‌سازی در کتابخانه‌ها

PyTorch

loss = torch.nn.CrossEntropyLoss()

TensorFlow / Keras loss = tf.keras.losses.CategoricalCrossentropy(from_logits=True)

خلاصه تصویری جریان گرادیان Softmax + CrossEntropy ↓ delta = y_hat − y ↓ Backprop در کل شبکه ↓ به‌روزرسانی همه وزن‌ها