ما هي دالة Softmax؟
تأخذ دالة Softmax متجهاً مكوّناً من K من الأعداد الحقيقية وتحوّله إلى توزيع احتمالي؛ فكل قيمة ناتجة تقع حصراً بين 0 و1، ويبلغ مجموع كل النواتج الـ K بالضبط 1. وهي دالة التنشيط القياسية في الطبقة الأخيرة لمصنّفات الشبكات العصبية، حيث تحوّل الدرجات الخام للنموذج (اللوغاريتمات أو logits) إلى احتمالات للأصناف. ولأنها دالة بلا أبعاد، فإن المدخلات أعداد صرفة لا تحمل أي وحدات قياس.
كيفية استخدام الحاسبة
اكتب متجه الإدخال داخل الصندوق على شكل قائمة من الأعداد مفصولة بفواصل أو مسافات أو أسطر جديدة (مثل 1, 2, 3). يمكن أن تكون الأعداد موجبة أو سالبة أو صفراً أو كسرية. اضغط على «احسب» فتحصل على احتمال Softmax لكل عنصر، ومجموع النواتج (الذي ينبغي أن يساوي 1)، إضافة إلى argmax — أي ترتيب أكبر احتمال بدءاً من 1.
شرح المعادلة
لكل عنصر j تُعطى دالة Softmax بالعلاقة \(\sigma(z)_j = \dfrac{e^{z_j}}{\sum_k e^{z_k}}\). فرفع العدد إلى الأس يجعل كل حد موجباً، ثم تؤدي القسمة على المجموع إلى تطبيع القيم بحيث يصبح مجموعها 1. ولأجل الاستقرار العددي، تطرح هذه الحاسبة القيمة العظمى m من كل عنصر قبل رفعه إلى الأس:
$$\sigma(z)_j = \frac{e^{z_j - m}}{\sum_k e^{z_k - m}}$$ويُختزل العامل المشترك \(e^{-m}\)، فتبقى النتيجة مطابقة تماماً مع تفادي حدوث طفح عددي (overflow) عند المدخلات الكبيرة.
مثال محلول
لنأخذ \(z = (1, 2, 3)\): فيكون \(e^{1} = 2.71828\)، و\(e^{2} = 7.38906\)، و\(e^{3} = 20.08554\)، ومجموعها \(30.19287\). وبقسمة كل قيمة على هذا المجموع نحصل على
$$\sigma = (0.09003,\ 0.24473,\ 0.66524)$$ومجموعها 1. أما argmax فهو العنصر رقم 3، وهو أكبر مدخل، وله الاحتمال \(0.66524\).
الأسئلة الشائعة
لماذا يكون مجموع النواتج دائماً 1؟ لأن كل قيمة أسية تُقسم على مجموع كل القيم الأسية، فيضمن هذا التطبيع أن يكون المجموع الكلي 1.
ماذا لو كانت كل المدخلات متساوية؟ تكون النتيجة توزيعاً منتظماً تساوي فيه كل قيمة ناتجة \(1/K\).
هل تتغير النتيجة عند إضافة ثابت إلى كل المدخلات؟ لا. فدالة Softmax ثابتة تحت الإزاحة: إضافة الثابت نفسه \(c\) إلى جميع المدخلات لا تغيّر الناتج، وهذا تحديداً ما يجعل طرح القيمة العظمى آمناً.