قياس عدم اليقين
تعرّفت في الفصل الأول إلى العملية الأساسية لنموذج اللغة: التنبؤ بالرمز التالي. لكن كيف نقيس جودة هذه التنبؤات؟ وإلى أي مدى يمكن التنبؤ باللغة أصلًا؟
في عام 1948، قدّم كلود شانون فكرة تجمع بين هذين السؤالين. نتدرّج في فهم هذه الفكرة: نبدأ بالإنتروبيا (مقياس عدم اليقين)، ثم ننتقل إلى الإنتروبيا المتقاطعة (مقياس جودة التنبؤ).
اقرأ هذا الدرس بالتوازي مع الدفتر البرمجي؛ فأرقام التمارين هنا تطابق أرقامها في الدفتر.
أهداف التعلّم
بنهاية هذا الفصل، ستفهم:
- معنى الإنتروبيا (Entropy) من ثلاث زوايا: الحد الأدنى لمتوسط عدد الأسئلة اللازمة لتحديد نتيجة، والحد الأمثل لحجم البيانات المضغوطة، ومتوسط المفاجأة.
- كيفية حساب الإنتروبيا من توزيع احتمالي، وما الذي تقيسه وحدة «البت» فعلًا.
- معنى الإنتروبيا المتقاطعة (Cross-Entropy): عدد البتات لكل رمز عند الضغط باستخدام توزيع غير مطابق للبيانات.
- الفرق بين البت (bits) باستخدام \(\log_2\) والنات (nats) باستخدام \(\ln\)، ولماذا نستخدم النات في تعلّم الآلة.
- لماذا التنبؤ هو ضغط للمعلومات، وكيف يربط ذلك نظرية المعلومات بتعلّم الآلة.
لكن أولًا، من أين جاءت هذه الأفكار؟ ولماذا تهمّنا؟
0. كيف نقيس المعلومات؟
في عام 1948، نشر كلود شانون بحثًا أصبح من أهم الأعمال في تاريخ الاتصالات الرقمية. كان يعمل في مختبرات بيل، ويشغله سؤال واحد: ما مقدار المعلومات في رسالة؟
كانت شركة الهاتف بحاجة إلى معرفة عدد الأسلاك اللازمة، وإلى أي حد يمكن ضغط إشارة مع الحفاظ على المعلومات التي تحملها، ومقدار المعلومات المفقودة حين يشوّش الضجيج على رسالة.
لكن لم يكن أحد يعرف حتى كيف يقيس المعلومات. هل نقيسها بالوزن؟ بالطول؟ بعدد الكلمات؟ لا شيء من ذلك يعبّر عن جوهر المعلومات.
كانت فكرة شانون: المعلومات هي تقليل عدم اليقين.
إذا أخبرتك بشيء تعرفه مسبقًا، فلن تحصل على معلومات جديدة. وإذا أخبرتك بشيء شديد المفاجأة، فستحصل على قدر كبير من المعلومات. كلما كان عدم يقينك أكبر قبل معرفة الإجابة، زادت المعلومات التي تكتسبها عند معرفتها.
عبّر شانون عن هذه الفكرة بمقياس رياضي سمّاه الإنتروبيا: عدد واحد يعبّر عن مدى صعوبة التنبؤ بشيء ما. وأصبحت هذه الصيغة أساسًا لنظرية المعلومات وخوارزميات الضغط والتشفير وتعلّم الآلة الحديث.
لفهم الإنتروبيا وكيفية عملها، لنبدأ بمثال بسيط.
1. الإنتروبيا: لعبة التخمين
لنبدأ بلعبة بسيطة تقرّب المعنى قبل أن نكتب أي برنامج.
اللعبة: أفكّر في عدد بين 1 و8. يمكنك أن تسألني أسئلة إجابتها نعم أو لا. كم سؤالًا تحتاج؟
إذا اتبعت استراتيجية مثلى (البحث الثنائي):
- «هل العدد أكبر من 4؟» ← «لا».
- «هل العدد أكبر من 2؟» ← «نعم».
- «هل العدد يساوي 3؟» ← «لا».
الإجابة: 4. احتجت إلى 3 أسئلة.
لم يكن هذا حظًا. مع 8 خيارات متساوية الاحتمال، تحتاج الاستراتيجية المثلى إلى \(\log_2(8) = 3\) أسئلة نعم/لا في المتوسط، وهو ما يساوي إنتروبيا التوزيع.
التمرين 1 في الدفتر. اعرض شجرة القرار الثنائية للحالة المنتظمة (الأعداد من 1 إلى 8).
لنجرّب الآن لعبة مختلفة. القواعد نفسها، لكنني أخبرك هذه المرة: «العدد هو 1 في 50% من الحالات. أما نسبة 50% الباقية فتتوزّع بالتساوي على الأعداد من 2 إلى 8».
تتغيّر استراتيجيتك:
- «هل العدد هو 1؟» ← في 50% من الحالات: تصل إلى الإجابة بسؤال واحد. وفي النصف الآخر من الحالات تكون الإجابة «لا»، فتتبقّى 7 خيارات متساوية الاحتمال، إنتروبيتها \(\log_2(7) \approx 2.807\) بت.
المتوسط النظري للمعلومات المطلوبة:
\[0.5 \times 1 + 0.5 \times (1 + 2.807) = 2.4035 \text{ bits}\]
التمرين 2 في الدفتر. اعرض شجرة القرار الثنائية للحالة المنحازة، وقارنها بالحالة المنتظمة.
التمرين 3 في الدفتر. اعرض التوزيعات الاحتمالية، ولاحظ علاقة الإنتروبيا بمدى «انتشار» الاحتمالات.
لماذا «2.4035 سؤالًا»؟ أليست إجابة كل سؤال نعم أو لا؟
نعم، وعدد الأسئلة في كل جولة عدد صحيح، لكن القيمة المتوقّعة (المتوسط عبر جولات كثيرة) قد تكون كسرية. أحيانًا يحالفك الحظ وتحتاج إلى سؤال واحد، وأحيانًا تحتاج إلى أربعة.
وللدقة، فإن 2.4035 بت هي الإنتروبيا، أي الحد الأدنى النظري للمتوسط، وليست متوسط عدد الأسئلة في شجرة ثنائية لجولة واحدة. فالخيارات السبعة لا يمكن تمييزها جميعًا في 2.807 سؤال فعلي؛ أفضل شجرة لهذه اللعبة تحقق متوسطًا قدره \(17/7 \approx 2.4286\) سؤال. يمكن الاقتراب من حد الإنتروبيا عند ترميز مجموعات طويلة من النتائج معًا.
الحساب نفسه بثلاث طرق
الطريقة الأولى: تجميع النتائج (كما فعلنا قبل قليل)
\[0.5 \times 1 + 0.5 \times (1 + 2.807) = 2.4035\]
الطريقة الثانية: حساب مساهمة كل عدد على حدة
بدل جمع الأعداد من 2 إلى 8 في مجموعة واحدة، نحسب مساهمة كل منها:
- العدد 1: احتماله 0.5، ومقدار المعلومات فيه 1 بت، فتكون مساهمته \(0.5 \times 1 = 0.500\).
- الأعداد من 2 إلى 8: احتمال كل منها \(0.5/7\)، ومقدار المعلومات فيه نحو 3.807 بت، فتكون المساهمة الكلية \(7 \times ((0.5/7) \times 3.807) \approx 1.9035\).
- المجموع: \(0.5 + 1.9035 = 2.4035\) بت.
الطريقة الثالثة: صيغة الإنتروبيا
لكل عدد احتمال \(P\)، ومقدار معلومات مثالي يساوي \(\log_2(1/P)\). بالتعويض:
- العدد 1: \(P = 0.5\)، إذن \(\log_2(1/0.5) = \log_2(2) = 1\).
- الأعداد من 2 إلى 8: مجموع احتمالاتها \(P = 0.5\) موزّع بالتساوي، إذن \(\log_2(1 / (0.5/7)) = \log_2(14) \approx 3.807\) لكل عدد.
\[0.5 \times \log_2(2) + 7 \times (0.5/7) \times \log_2(14) = 0.5 \times 1 + 0.5 \times 3.807 \approx 2.4035 \text{ bits}\]
وهذا هو النمط العام:
\[H = \sum P(x) \times \log_2(1/P(x)) \approx 2.4035 \text{ bits}\]
هذه هي صيغة الإنتروبيا! لقد اشتققناها من المبادئ الأولى.
التمرين 4 في الدفتر. احسب الإنتروبيا لتوزيعات احتمالية مختلفة باستخدام الصيغة.
الفكرة الأساسية: إنتروبيا أقل تعني قابلية أكبر للتنبؤ، وعددًا أقل من الأسئلة في المتوسط.
- التوزيع المنتظم (احتمالات متساوية): 3.00 بت.
- التوزيع المنحاز (50% لنتيجة واحدة): 2.4035 بت.
- اليقين (100% لنتيجة واحدة): 0.00 بت.
2. الإنتروبيا: الصيغة
هذه هي الصيغة العامة. الأهم من حفظها أن تفهم كيف تجمع مقدار المعلومات مرجّحًا باحتمال كل نتيجة:
\[H(X) = \sum_{x} P(x) \log_2\left(\frac{1}{P(x)}\right) = -\sum_{x} P(x) \log_2 P(x)\]
لماذا «البت»؟ يمثّل البت مقدار المعلومات الناتج عن التمييز بين نتيجتين متساويتي الاحتمال، كما في إجابة نعم أو لا على سؤال يقسم الخيارات بالتساوي. ولأن لكل سؤال نتيجتين ممكنتين، فإن استخدام \(\log_2\) يجعل البت وحدة مناسبة لقياس المعلومات.
import math
def entropy(probs: list[float]) -> float:
"""Average number of yes/no questions (bits) to guess the outcome."""
return sum(p * math.log2(1/p) for p in probs if p > 0)
# it's also written as
# -sum(p * math.log2(p) for p in probs if p > 0)
# Question: Why? How are both equivalent?التمرين 5 في الدفتر. نفّذ دالة الإنتروبيا واختبرها على توزيعات مختلفة.
ثلاثة أمثلة:
# Uniform: maximum uncertainty
uniform_8 = [1/8] * 8
print(f"Uniform: {entropy(uniform_8):.2f} bits") # 3.00
# Biased: less uncertainty
biased = [0.5, 0.5/7, 0.5/7, 0.5/7, 0.5/7, 0.5/7, 0.5/7, 0.5/7]
print(f"Biased: {entropy(biased):.2f} bits") # ~2.4
# Certain: no uncertainty
certain = [1.0, 0, 0, 0, 0, 0, 0, 0]
print(f"Certain: {entropy(certain):.2f} bits") # 0.00اختبر فهمك الحدسي:
- أعلى إنتروبيا ← توزيع منتظم ← لا توجد نتيجة أرجح من غيرها.
- إنتروبيا منخفضة ← توزيع منحاز ← يمكنك التخمين جيدًا.
- إنتروبيا صفرية ← نتيجة حتمية ← تعرف الإجابة.
تقيس الإنتروبيا صعوبة التنبؤ. وبعد أن عرفنا كيف نقيس عدم اليقين في البيانات، كيف نقيس مدى نجاح نموذج في تمثيله؟
3. ثلاث طرق لفهم الإنتروبيا
يمكن فهم الإنتروبيا من ثلاث زوايا مترابطة. اختر أقربها إلى فهمك؛ فكلها تستند إلى الرياضيات نفسها.
أ. لعبة التخمين (رأيتها للتو)
الإنتروبيا هي الحد الأدنى لمتوسط عدد أسئلة نعم/لا اللازمة لتحديد النتيجة.
ب. الضغط
تحدّد الإنتروبيا الحد النظري لحجم البيانات بعد ضغطها، بوحدة البت لكل رمز.
إذا كان لديك ملف AAAAAABBCD (10 أحرف):
- الترميز البسيط: نعطي كل حرف بتّين (
00=A، و01=B، و10=C، و11=D)، فيصبح الحجم 20 بت. - ترميز يستفيد من التكرار: نخصّص شفرات أقصر للأحرف الأكثر تكرارًا:
- الحرف A (60%):
0(بت واحد). - الحرف B (20%):
10(بتّان). - الحرف C (10%):
110(3 بتات). - الحرف D (10%):
111(3 بتات).
- الحرف A (60%):
الناتج: 0 0 0 0 0 0 10 10 110 111 = 16 بت، أي 1.6 بت لكل حرف.
إنتروبيا التوزيع \([0.6, 0.2, 0.1, 0.1]\) تساوي نحو 1.57 بت، لذا فالترميز قريب من الحد النظري الأمثل!
التمرين 6 في الدفتر. شاهد كيف يوفّر الضغط المبني على الإنتروبيا مساحة التخزين.
الفكرة الأساسية: إذا كان تسلسل ما منخفض الإنتروبيا، أمكن ضغطه بكفاءة. أما إذا كانت إنتروبيته مرتفعة، فهو أقرب إلى العشوائية وأقل قابلية للضغط.
ج. المفاجأة
الإنتروبيا هي متوسط المفاجأة عند رؤية النتيجة.
عندما يقع حدث احتماله \(p\)، يكون مقدار المفاجأة:
\[I(p) = \log_2(1 / p) = -\log_2(p)\]
| الحدث | الاحتمال | المفاجأة (بت) |
|---|---|---|
| شروق الشمس | 0.99 | \(\log_2(1 / 0.99) \approx 0.01449\) |
| نتيجة رمية عملة | 0.50 | \(\log_2(1 / 0.50) = 1.00\) |
| الفوز باليانصيب | 0.000001 | \(\log_2(1 / 0.000001) \approx 19.9315\) |
الإنتروبيا هي ببساطة المفاجأة المتوقّعة: متوسط المفاجأة عبر جميع النتائج الممكنة، مرجّحًا باحتمالاتها.
التمرين 7 في الدفتر. اعرض منحنى المفاجأة، ولاحظ علاقتها بالاحتمال.
هذه الزاوية أساسية لما يأتي: تقيس الإنتروبيا المتقاطعة متوسط المفاجأة المحسوب وفق احتمالات النموذج عند ظهور البيانات الفعلية. كلما أسند النموذج احتمالات أعلى للنتائج التي تحدث فعلًا، قلّت هذه المفاجأة.
التمرين 8 في الدفتر. استكشف الإنتروبيا عبر توزيعات احتمالية مختلفة باستخدام رسوم تفاعلية: الإنتروبيا الثنائية، والإنتروبيا لثلاث نتائج، والخصائص الرياضية.
خصائص الإنتروبيا
بعد أن رأيت الإنتروبيا عمليًا، إليك أبرز خصائصها الرياضية. هذه الخصائص تعبّر عن حقائق أساسية حول المعلومات وعدم اليقين.
1. عدم السلبية
\[H(X) \geq 0\]
الإنتروبيا غير سالبة دائمًا. وتساوي صفرًا فقط عندما يكون احتمال إحدى النتائج 1، أي عند اليقين التام.
2. القيمة العظمى للإنتروبيا
\[H(X) \leq \log_2(n)\]
لمتغيّر عشوائي متقطّع له \(n\) نتائج ممكنة، تبلغ الإنتروبيا أقصاها عندما تتساوى احتمالات جميع النتائج (التوزيع المنتظم). والقيمة العظمى هي \(\log_2(n)\) بت.
3. الاستمرارية
الإنتروبيا \(H\) دالة مستمرة في التوزيع الاحتمالي؛ فالتغيّرات الصغيرة في الاحتمالات تؤدي إلى تغيّرات صغيرة في الإنتروبيا.
4. التناظر
لا تتغيّر \(H\) عند إعادة ترتيب النتائج. الترتيب لا يهم؛ الاحتمالات وحدها هي المهمة.
5. قابلية الجمع (للمتغيّرات المستقلة)
\[H(X,Y) = H(X) + H(Y)\]
عندما يكون \(X\) و\(Y\) مستقلّين، تساوي إنتروبيتهما المشتركة مجموع إنتروبيا كل منهما.
6. قاعدة السلسلة
\[H(X,Y) = H(X) + H(Y|X)\]
الإنتروبيا المشتركة تساوي إنتروبيا \(X\) مضافًا إليها الإنتروبيا الشرطية لـ\(Y\) عند معرفة \(X\).
7. الاشتراط يقلّل الإنتروبيا
\[H(Y|X) \leq H(Y)\]
معرفة \(X\) تقلّل عدم اليقين حول \(Y\) أو تبقيه كما هو في المتوسط. وتتحقق المساواة عندما يكون \(X\) و\(Y\) مستقلّين.
التمرين 8ج في الدفتر. شاهد هذه الخصائص من خلال أمثلة ملموسة.
4. الإنتروبيا المتقاطعة: الترميز بتوزيع غير مطابق
راجع الجزء الثاني من الدفتر. يقابل هذا القسم التمارين من 9 إلى 15.
ننتقل الآن من قياس عدم اليقين في البيانات إلى قياس ما يحدث عندما تصمّم ترميزًا لتوزيع غير مطابق لها.
المثال:
لنفترض أنك تضغط الملف AAAAAABBCD (10 أحرف).
التوزيع الحقيقي: \(P = \{A: 60\%, B: 20\%, C: 10\%, D: 10\%\}\).
ماذا يحدث إذا صمّمت الترميز بافتراض توزيع مختلف \(Q\)؟
الفكرة الأساسية:
تقيس الإنتروبيا المتقاطعة متوسط كلفة الترميز وفق هذا الافتراض:
\[H(P,Q) = -\sum_{x} P(x) \log_2 Q(x)\]
وهي المتوسط النظري لعدد البتات اللازمة لكل رمز عندما:
- تأتي البيانات من التوزيع \(P\) (الواقع).
- يُصمّم الترميز وفق التوزيع \(Q\) (افتراضك).
إنتروبيا متقاطعة أقل = ضغط أفضل = هدر أقل.
لنرَ ذلك عمليًا بأربعة جداول ترميز مختلفة، مع تثبيت توزيع البيانات:
\[P = \{A: 60\%, B: 20\%, C: 10\%, D: 10\%\}\]
الحالة الأولى: جدول ترميز أمثل للتوزيع الحقيقي (Q = P)
التمرين 9 في الدفتر. الشجرة الأولى: الترميز الأمثل للتوزيع الحقيقي \(P\).
تعرف التوزيع الحقيقي، فتصمّم ترميز هوفمان أمثل:
- الحرف A (60%):
0(بت واحد). - الحرف B (20%):
10(بتّان). - الحرف C (10%):
110(3 بتات). - الحرف D (10%):
111(3 بتات).
متوسط عدد البتات لكل رمز: \(0.6 \times 1 + 0.2 \times 2 + 0.1 \times 3 + 0.1 \times 3 = 1.6\) بت.
هذا قريب من \(H(P) \approx 1.57\) بت. يفرض ترميز هوفمان عددًا صحيحًا من البتات لكل حرف، لذلك لا يساوي متوسطه الإنتروبيا تمامًا في هذا المثال.
الحالة الثانية: جدول ترميز منتظم
التمرين 10 في الدفتر. الشجرة الثانية: جدول الترميز المنتظم.
تفترض أن جميع الرموز متساوية الاحتمال:
\[Q = \{A: 25\%, B: 25\%, C: 25\%, D: 25\%\}\]
يحصل كل رمز على بتّين: A=00، وB=01، وC=10، وD=11.
متوسط عدد البتات لكل رمز: \(0.6 \times 2 + 0.2 \times 2 + 0.1 \times 2 + 0.1 \times 2 = 2.0\) بت.
الهدر مقارنةً بترميز هوفمان الأمثل: \(2.0 - 1.6 = 0.4\) بت لكل رمز، أي زيادة بنسبة 25%.
الحالة الثالثة: جدول ترميز منحاز في الاتجاه الخطأ
التمرين 11 في الدفتر. الشجرة الثالثة: جدول الترميز ذي الانحياز الخاطئ.
تفترض خطأً أن C هو الأكثر تكرارًا:
\[Q = \{C: 50\%, A: 25\%, B: 12.5\%, D: 12.5\%\}\]
لكن A هو الأكثر تكرارًا في الواقع! لذلك يستخدم ترميزك بتات أكثر مما يلزم:
- يحصل C على
0(بت واحد)، مع أنه لا يظهر إلا في 10% من الحالات. - يحصل A على
10(بتّان)، مع أنه يظهر في 60% من الحالات.
متوسط عدد البتات لكل رمز: \(0.6 \times 2 + 0.2 \times 3 + 0.1 \times 1 + 0.1 \times 3 = 2.2\) بت.
الهدر: \(2.2 - 1.6 = 0.6\) بت لكل رمز، أي زيادة بنحو 38%.
الحالة الرابعة: عكس الأولويات
التمرين 12 في الدفتر. الشجرة الرابعة: جدول ترميز بأولويات معكوسة.
نعكس الأولويات تمامًا:
\[Q = \{D: 50\%, C: 25\%, A: 12.5\%, B: 12.5\%\}\]
- يحصل D (احتماله الحقيقي 10%) على بت واحد: أقصر شفرة لأحد أقل الرموز تكرارًا!
- يحصل A (احتماله الحقيقي 60%) على 3 بتات: أطول شفرة للرمز الأكثر تكرارًا!
متوسط عدد البتات لكل رمز: \(0.6 \times 3 + 0.2 \times 3 + 0.1 \times 2 + 0.1 \times 1 = 2.7\) بت.
الهدر: \(2.7 - 1.6 = 1.1\) بت لكل رمز، أي زيادة بنحو 69%!
التمرين 13 في الدفتر. قارن الأشجار الأربع جنبًا إلى جنب.
التمرين 14 في الدفتر. احسب الإنتروبيا والإنتروبيا المتقاطعة عدديًا لجميع الحالات.
التمرين 15 في الدفتر. استكشف تفاعليًا النطاق الكامل لخيارات الترميز.
الفكرة الأساسية: تقيس الإنتروبيا المتقاطعة كفاءة الترميز. عندما يبتعد افتراضك \(Q\) عن الواقع \(P\) بمعنى إسناد احتمالات صغيرة للنتائج التي تحدث كثيرًا، يزداد هدر البتات. في أمثلتنا، الافتراض شديد الخطأ أسوأ من افتراض منتظم لا يفضّل أي رمز.
5. البت والنات
راجع الجزء الثالث من الدفتر. يقابل هذا القسم التمرين 16.
حتى الآن، قسنا الإنتروبيا بوحدة البت باستخدام \(\log_2\). في تعلّم الآلة، ننتقل إلى وحدة النات باستخدام اللوغاريتم الطبيعي \(\ln\).
لماذا؟
- تستخدم الدالة
nn.CrossEntropyLoss()في PyTorch اللوغاريتم الطبيعي. - المشتقات أبسط: \(\frac{d}{dx}(\ln x) = \frac{1}{x}\)، مقارنةً بـ\(\frac{d}{dx}(\log_2 x) = \frac{1}{x \ln 2}\).
- هذا هو الاصطلاح الشائع في أوراق تعلّم الآلة وأطره البرمجية.
التحويل:
\[\text{bits} = \frac{\text{nats}}{\ln(2)} \approx \text{nats} \times 1.443\]
من الآن فصاعدًا، عندما نكتب الإنتروبيا المتقاطعة والخسارة، سنستخدم النات (اللوغاريتم الطبيعي) ما لم نذكر خلاف ذلك.
التمرين 16 في الدفتر. قارن الإنتروبيا المتقاطعة بوحدتي البت والنات.
ملخّص
الإنتروبيا:
- الإنتروبيا مقياس لصعوبة التنبؤ. نفهمها من خلال الحد الأدنى لمتوسط أسئلة نعم/لا، والحجم الأمثل للضغط، ومتوسط المفاجأة.
- أبرز خصائصها: غير سالبة، وتبلغ أقصاها عند التوزيع المنتظم، ويقلّل الاشتراط قيمتها في المتوسط.
- نقيسها بالبت باستخدام \(\log_2\)، أو بالنات باستخدام \(\ln\).
الإنتروبيا المتقاطعة: الضغط بافتراضات غير مطابقة:
- الإنتروبيا المتقاطعة \(H(P,Q)\) هي المتوسط النظري لعدد البتات لكل رمز عند تصميم ترميز وفق \(Q\) لبيانات تأتي من \(P\).
- إذا كان \(Q = P\)، فالحد الأمثل للضغط هو \(H(P)\) بت لكل رمز.
- إذا كان \(Q \neq P\)، فستحتاج إلى \(H(P,Q) > H(P)\) بت لكل رمز: مساحة مهدرة!
- يمكن أن يهدر التوزيع شديد الخطأ بتات أكثر من التوزيع المنتظم.
الصلة بتعلّم الآلة:
قد تتساءل: ما علاقة الضغط بالتنبؤ بالرمز التالي؟
التنبؤ الجيد يتيح ضغط المعلومات بكفاءة.
فكّر في الأمر: إذا استطاع المُرسِل والمُستقبِل التنبؤ تمامًا بما يأتي بعد ذلك، فلا حاجة إلى تخزين الرمز نفسه؛ تكفي قاعدة التنبؤ المشتركة. وإذا لم تستطع التنبؤ إطلاقًا، فعليك تخزين كل رمز كاملًا. التنبؤ الجيد يعني ضغطًا جيدًا.
بيّن شانون أن حد الضغط الأمثل يرتبط بإنتروبيا المصدر، أي بعدم اليقين في التنبؤ بالرمز التالي. هكذا تتصل المسألتان رياضيًا.
لهذا تقلّل نماذج اللغة خسارة الإنتروبيا المتقاطعة. عندما يتنبّأ النموذج بالرمز التالي:
- يُنتج النموذج توزيعًا \(Q\) للاحتمالات على الرموز التالية الممكنة.
- يكشف الواقع الرمز التالي الفعلي، المأخوذ من التوزيع \(P\).
- تقيس الإنتروبيا المتقاطعة \(H(P,Q)\) عدد «البتات لكل رمز» لو ضغطنا وفق \(Q\) بينما الواقع هو \(P\).
- يقلّل التدريب الإنتروبيا المتقاطعة، فيقلّل البتات المطلوبة ويحسّن جودة التنبؤ.
جودة التنبؤ، وكفاءة الضغط، وانخفاض الإنتروبيا المتقاطعة: ثلاث زوايا للفكرة نفسها.
في الفصل الثالث، سترى هذه الصلة عمليًا ببناء نماذج تتنبّأ بتسلسلات حقيقية، وتضغطها ضمنيًا.
أسئلة للنقاش
حسبت الإنتروبيا بثلاث طرق: لعبة التخمين، والضغط، والمفاجأة. أي زاوية قرّبت الفكرة إليك؟ وأيها بدت أقل وضوحًا؟
في التمرين 14، حسبنا أن جدول الترميز المنتظم يستخدم 2.0 بت لكل حرف، بينما يستخدم ترميز هوفمان الأمثل 1.6 بت. من أين جاءت الـ0.4 بت المهدرة؟ وأي الرموز أسهم أكثر في هذا الهدر؟
في الأمثلة، يؤدّي التوزيع شديد الخطأ (توزيع \(Q\) المعاكس لأولويات \(P\)) إلى إنتروبيا متقاطعة أعلى من التوزيع المنتظم. لماذا قد يكون الترميز غير الملائم أسوأ من عدم الضغط؟ ومتى تفضّل ترميزًا عامًا على ترميز متعلّم من البيانات؟
تعرض مقارنة الأشجار الأربع متوسطات لأطوال الترميز تتراوح من 1.6 إلى 2.7 بت. لكن الدفتر يذكر أن الإنتروبيا المتقاطعة يمكن أن تتجه إلى ما لا نهاية. كيف؟ وأي توزيع \(Q\) يعطي إنتروبيا متقاطعة لا نهائية لبياناتنا \(P = \{A: 60\%, B: 20\%, C: 10\%, D: 10\%\}\)؟
انتقلنا من البت باستخدام \(\log_2\) إلى النات باستخدام \(\ln\) في تعلّم الآلة. هل يؤثّر اختيار أساس اللوغاريتم في الضغط أو التنبؤ، أم في المقياس العددي فقط؟