نظرية المعلومات للذكاء الاصطناعي
لماذا Cross-Entropy هي خسارة التصنيف؟ وما معنى Perplexity لنماذج اللغة؟ هذا الدرس يشرح الإنتروبيا وتباعد KL والمعلومات المتبادلة Softmax — بلغة عملية تربط Shannon بشبكاتك العصبية.
لماذا نظرية المعلومات أساس هندسة الذكاء الاصطناعي؟
بعد أن تعلّمت في الدرس الثالث الاحتمالات ودوال الخسارة، حان وقت السؤال الأعمق: لماذا Cross-Entropy؟ نظرية المعلومات (Information Theory) — التي أسّسها Shannon — تقيس «كمية المفاجأة» في رسالة أو تنبؤ. في التعلم العميق تظهر في كل مكان: خسارة التصنيف، تقييم LLMs، تنظيم VAEs، واختيار الميزات.
يفترض هذا الدرس فهم الاحتمال الشرطي، Softmax كمخرجات احتمالية، ومتوسط الخسارة من الدرس الثالث. المستوى: متوسط.
المعلومات الذاتية / المفاجأة (Self-Information)
المعلومات الذاتية \(I(x)\) تقيس كم «مفاجأة» يحمل حدث باحتمال \(p(x)\). الحدث النادر أكثر إفادةً (ومفاجأة) من الحدث الشائع.
\[I(x) = -\log p(x)\]
إذا \(p(x)=1\) (مؤكد) فإن \(I(x)=0\). إذا \(p(x)\to 0\) فإن \(I(x)\to\infty\).
رمي عملة عادلة: \(p=\tfrac{1}{2}\) ⇒ \(I = -\log_2(0.5) = 1\) بت. رمي نرد سداسي: \(I = -\log_2(1/6)\approx 2.585\) بت — أكثر مفاجأة.
خسارة \(-\log\hat{y}_{y}\) لعينة مصنَّفة بشكل صحيح هي بالضبط المعلومات الذاتية للتنبؤ. النموذج الذي يعطي احتمالًا صغيرًا للصنف الصحيح يُعاقَب بشدة.
الإنتروبيا (Entropy)
الإنتروبيا \(H(X)\) هي متوسط المعلومات الذاتية — مقياس عدم اليقين في التوزيع كاملًا.
\[H(X) = -\sum_x p(x)\log p(x) = \mathbb{E}_{x\sim p}\bigl[-\log p(x)\bigr]\]
للمتصل: \(H(X)=-\int p(x)\log p(x)\,dx\) (إنتروبيا تفاضلية).
خصائص مهمة
- \(H(X)\ge 0\) للتوزيعات المنفصلة، وتساوي 0 فقط إذا كان التوزيع حتميًا (Dirac)
- للتوزيع المنتظم على \(K\) أصناف: \(H=\log K\) — أقصى إنتروبيا
- التوزيع الأكثر تركزًا ⇒ إنتروبيا أصغر
حساب يدوي سريع
لتوزيع Bernoulli باحتمال نجاح \(p\): \(H = -p\log p -(1-p)\log(1-p)\). عند \(p=0.5\) نحصل على \(1\) بت (أقصى قيمة). عند \(p=0.9\): \(H\approx 0.469\) بت — أقل عدم يقين.
نموذج واثق جدًا (\(\hat{y}\) حاد) له إنتروبيا تنبؤ منخفضة. النموذج المرتبك (قريب من المنتظم) له إنتروبيا عالية — وقد تحتاج معايرة (temperature scaling) قبل النشر.
الإنتروبيا المشتركة والشرطية
المشتركة \(H(X,Y)\) تقيس عدم اليقين في الزوج \((X,Y)\). الشرطية \(H(Y|X)\) تقيس ما يبقى من عدم يقين حول \(Y\) بعد معرفة \(X\).
\[H(X,Y) = -\sum_{x,y} p(x,y)\log p(x,y)\]
\[H(Y|X) = H(X,Y) - H(X) = \mathbb{E}_{x\sim p}\bigl[H(Y|X=x)\bigr]\]
قاعدة السلسلة: \(H(X,Y)=H(X)+H(Y|X)=H(Y)+H(X|Y)\).
في نماذج اللغة: \(H(w_t|w_{<t})\) هو عدم اليقين حول الرمز التالي بعد السياق — وهذا أساس Perplexity لاحقًا.
الإنتروبيا المتقاطعة (Cross-Entropy)
الإنتروبيا المتقاطعة \(H(P,Q)\) تقيس متوسط عدد البتات اللازمة لترميز عينات من \(P\) باستخدام شفرة مثالية لـ \(Q\).
\[H(P,Q) = -\sum_x p(x)\log q(x) = \mathbb{E}_{x\sim P}\bigl[-\log q(x)\bigr]\]
دائمًا \(H(P,Q) \ge H(P)\)، والمساواة فقط عندما \(P=Q\).
صنف صحيح one-hot: \(p=[0,1,0]\). النموذج يتوقع \(q=[0.1,0.7,0.2]\). إذن \(H(P,Q)=-\log 0.7\approx 0.357\) nat. لو توقّع \(0.2\) فقط للصنف الصحيح: \(-\log 0.2\approx 1.61\) — خسارة أعلى بكثير.
nn.CrossEntropyLoss = Softmax + \(-\log q_{y}\) على اللوجيتات. هذا هو \(H(P,Q)\) عندما يكون \(P\) one-hot.
لماذا لا نُصغّر الإنتروبيا وحدها؟
تدريب التصنيف لا يُصغّر \(H(P)\) (ثابتة للتسميات)، بل يُصغّر \(H(P,Q)\) أي يدفع \(Q\) نحو \(P\). ومن العلاقة \(H(P,Q)=H(P)+D_{\mathrm{KL}}(P\|Q)\) نرى أن تصغير Cross-Entropy = تصغير KL نحو التسميات.
| الخسارة | الهدف المعلوماتي | ملاحظة |
|---|---|---|
| CE متعددة الأصناف | \(H(P,Q)\) | \(P\) one-hot عادة |
| Label smoothing | \(H(P_\epsilon,Q)\) | \(P_\epsilon\) ليّن يمنع ثقة زائدة |
| Focal loss | CE مرجّحة | تركّز على الأمثلة الصعبة |
تباعد كولباك–ليبلر (KL Divergence)
تباعد KL يقيس كم «معلومة إضافية» تحتاج عندما تستخدم \(Q\) بدل \(P\). ليس مسافة بالمعنى الهندسي (غير متماثل!).
\[D_{\mathrm{KL}}(P\|Q) = \sum_x p(x)\log\frac{p(x)}{q(x)} = H(P,Q) - H(P)\]
\[D_{\mathrm{KL}}(P\|Q)\ge 0,\quad =0 \iff P=Q\]
اتجاهان مهمان في الذكاء الاصطناعي
| الاتجاه | المعنى | أين يظهر |
|---|---|---|
| \(D_{\mathrm{KL}}(P\|Q)\) | فرض تغطية دعم \(P\) | تقطير المعرفة، بعض الـ RL |
| \(D_{\mathrm{KL}}(Q\|P)\) | وضع الكتلة حيث \(P\) كبير | VAEs (تقريب خلفي) |
| JS / Wasserstein | بدائل متماثلة/هندسية | GANs |
KL في ELBO للـ VAE
\[\mathcal{L} = \mathbb{E}_{q(z|x)}[\log p(x|z)] - D_{\mathrm{KL}}\bigl(q(z|x)\,\|\,p(z)\bigr)\]
الحد الأول يشجّع إعادة البناء؛ حد KL يدفع الخلفية التقريبية \(q\) نحو السابق \(p(z)\) (غالبًا \(\mathcal{N}(0,I)\)). بدون KL ينهار الفضاء الكامن.
وزن KL (\(\beta\)-VAE) يتحكم في المفاضلة. \(\beta\) كبير جدًا ⇒ تمثيل غير مُعبّر؛ صغير جدًا ⇒ تجاهل السابق.
المعلومات المتبادلة (Mutual Information)
المعلومات المتبادلة \(I(X;Y)\) تقيس كم معلومة عن \(Y\) تحصل عليها بمعرفة \(X\) (والعكس).
\[I(X;Y) = H(X) - H(X|Y) = H(Y) - H(Y|X) = H(X)+H(Y)-H(X,Y)\]
\[I(X;Y) = D_{\mathrm{KL}}\bigl(p(x,y)\,\|\,p(x)p(y)\bigr)\]
اختيار الميزات: اختر \(X\) الذي يعظّم \(I(X;Y)\) مع التسمية. في التمثيلات: نريد تمثيلًا \(Z\) غنيًا عن المهمة (\(I(Z;Y)\) كبير) ومضغوطًا عن الإدخال (\(I(Z;X)\) محدود) — فكرة Information Bottleneck.
Softmax ومبدأ أقصى إنتروبيا
Softmax يحوّل لوجيتات \(z\in\mathbb{R}^K\) إلى توزيع احتمالي. وهو التوزيع ذو أقصى إنتروبيا تحت قيود على التوقعات (مبدأ MaxEnt).
\[\mathrm{softmax}(z)_i = \frac{e^{z_i}}{\sum_{j=1}^{K} e^{z_j}}\]
مع درجة حرارة \(T\): \(\mathrm{softmax}(z/T)\). \(T\to 0\) ⇒ توزيع حاد؛ \(T\to\infty\) ⇒ منتظم (أقصى إنتروبيا).
الحيرة Perplexity لنماذج اللغة
الحيرة (Perplexity) هي أُسّ الإنتروبيا المتقاطعة — مقياس بديهي: «كم خيارًا فعّالًا يحتار النموذج بينها؟»
\[\mathrm{PPL} = \exp\bigl(H(P,Q)\bigr) = \exp\Bigl(-\frac{1}{N}\sum_{t=1}^{N}\log q(w_t\mid w_{<t})\Bigr)\]
PPL أقل ⇒ نموذج أفضل (على نفس مجموعة الاختبار ونفس الـ tokenizer).
إذا كان متوسط \(-\log q = \ln 100\) فإن PPL \(=100\): كأن النموذج يختار بين 100 رمز متساوٍ في كل خطوة. نماذج اللغة الحديثة تهدف إلى PPL منخفضة جدًا على نصوص طبيعية.
مقارنة عادلة لـ Perplexity
- نفس مجموعة الاختبار ونفس الـ tokenization ضروريان
- Byte-level vs BPE يغيّران مقياس PPL جذريًا
- بعض الأوراق تبلّغ bits-per-byte بدل PPL لتسهيل المقارنة
جملة من 4 رموز باحتمالات نموذج \(0.5,0.25,0.5,0.25\). متوسط \(-\ln\): \(\tfrac{1}{4}(\ln2+\ln4+\ln2+\ln4)=\ln2\). إذن \(\mathrm{PPL}=e^{\ln 2}=2\).
Bits مقابل Nats
قاعدة اللوغاريتم تحدد وحدة القياس:
| القاعدة | الوحدة | الاستخدام |
|---|---|---|
| \(\log_2\) | بت (bit / shannon) | ضغط، نظرية الاتصالات |
| \(\ln = \log_e\) | نات (nat) | التعلم الآلي، PyTorch |
| \(\log_{10}\) | ديت / هارتلي | نادر في الذكاء الاصطناعي |
التحويل: \(1\,\mathrm{nat} = \log_2 e \approx 1.443\) بت. في التدريب لا يهم الفرق طالما أنت متسق — التدرج يتأثر بعامل ثابت فقط.
اشتقاق خسارة Cross-Entropy من Softmax
لنموذج تصنيف بـ Softmax: \(\hat{y}_i = e^{z_i}/\sum_j e^{z_j}\)، والخسارة للعينة ذات الصنف الصحيح \(c\):
\[L = -\log\hat{y}_c = -z_c + \log\sum_j e^{z_j}\]
\[\frac{\partial L}{\partial z_i} = \hat{y}_i - \mathbf{1}[i=c]\]
التدرج بسيط: خطأ الاحتمال \((\hat{y}-y)\). لا حاجة لاشتقاق Softmax و\(\log\) يدويًا في الكود — الإطار يدمجهما لاستقرار عددي (log_softmax).
استقرار عددي: log-sum-exp
\[\log\sum_j e^{z_j} = m + \log\sum_j e^{z_j-m},\quad m=\max_j z_j\]
تمنعoverflow عند أسّ اللوجيتات الكبيرة. أطر التعلم العميق تطبقها داخل log_softmax.
حدس عنق الزجاجة المعلوماتي (Information Bottleneck)
الفكرة: تعلّم تمثيل مضغوط \(Z\) من الإدخال \(X\) يحافظ على المعلومات المفيدة للمهمة \(Y\).
\[\min_{p(z|x)}\; I(X;Z) - \beta\, I(Z;Y)\]
\(\beta\) يوازن بين الضغط والفائدة. في الشبكات العميقة، الطبقات العميقة تميل طبيعيًا لضغط التفاصيل غير المفيدة — تفسير IB شائع (مع جدل علمي).
تطبيقات عملية في الذكاء الاصطناعي
| المجال | المفهوم | الاستخدام |
|---|---|---|
| التصنيف | Cross-Entropy | خسارة Softmax القياسية |
| نماذج اللغة | Perplexity / CE | تدريب وتقييم LLMs |
| VAE | KL(\(q\|p\)) | تنظيم الفضاء الكامن |
| التقطير | KL / CE بدرجة حرارة | نقل معرفة المعلم للطالب |
| الانتباه | Softmax | توزيع أوزان على المفاتيح |
| اختيار الميزات | Mutual Information | تصفية المتغيرات |
دراسة حالة: تقطير المعرفة
المعلم يُنتج توزيعًا ليّنًا \(q_T=\mathrm{softmax}(z_T/T)\). الطالب يُصغّر خليطًا من CE مع التسميات الصلبة و\(T^2\mathrm{KL}(q_T\|q_S)\). درجة الحرارة العالية تكشف «البنية المظلمة» بين الأصناف التي لا تظهر في one-hot.
خلاصة الدرس الرابع
بعد فهم ماذا نُحسّن (الخسارة المعلوماتية)، الدرس الخامس يغطي كيف نُحسّن: Adam، الزخم، جداول معدّل التعلم، والتنظيم.
بطاقة معادلات نظرية المعلومات
\[I(x)=-\log p(x)\]
\[H(X)=-\sum p\log p\]
\[H(P,Q)=-\sum p\log q\]
\[D_{\mathrm{KL}}(P\|Q)=H(P,Q)-H(P)\]
\[I(X;Y)=H(X)-H(X|Y)=D_{\mathrm{KL}}(p(x,y)\|p(x)p(y))\]
\[\mathrm{PPL}=\exp(H(P,Q))\]
\[\frac{\partial L_{\mathrm{CE}}}{\partial z}=\hat{y}-y\]
تمارين للتحقق من الفهم
وزّع \(p=(0.5,0.5)\) و\(q=(0.9,0.1)\). احسب \(H(P)\) و\(H(P,Q)\) و\(D_{\mathrm{KL}}(P\|Q)\) بالـ nats. تحقق أن \(H(P,Q)=H(P)+\mathrm{KL}\).
نموذج لغة أعطى لـ 3 رموز احتمالات شرطية \(0.8,0.5,0.4\). ما هي Perplexity؟
لماذا Label smoothing يرفع أحيانًا CE على التدريب لكنه يُحسّن المعايرة على الاختبار؟ اربط إجابتك بـ \(H(P_\epsilon,Q)\).
أخطاء شائعة
- الخلط بين \(D_{\mathrm{KL}}(P\|Q)\) و\(D_{\mathrm{KL}}(Q\|P)\)
- مقارنة PPL عبر tokenizers مختلفة
- نسيان أن CE مع one-hot = \(-\log\hat{y}_c\) فقط
- استخدام Softmax ثم CE منفصلتين بدل الدمج المستقر