من النظرية إلى التطبيق
ملاحظة: يستند هذا الفصل في أمثلته وطريقة عرضه إلى محاضرة أندريه كارباثي «مقدّمة تفصيلية لنمذجة اللغة: بناء makemore». نوصي بمشاهدتها بالتوازي مع هذه المادة، خصوصًا قسم النموذج ثنائي الحروف (أول 45 دقيقة تقريبًا). المحاضرة بالإنجليزية.
تعلّمت في الفصل الثاني قياس عدم اليقين بالإنتروبيا، وقياس جودة التنبؤ بالإنتروبيا المتقاطعة. كانت تلك أدوات نظرية؛ والآن نستخدمها مع بيانات فعلية.
ينقلك هذا الفصل من لعبة نمثلها بمصفوفة \(3\times3\) (حجر وورقة ومقص) إلى نموذج للحروف بمصفوفة \(28\times28\). سترى كيف ينجح العدّ على نطاق صغير، ثم تكتشف حدوده حين يزداد عدد الاحتمالات الممكنة. ومن خلال التجربة، ستفهم الدافع إلى استخدام الشبكات العصبية.
ستستخدم أيضًا أول خوارزمية تعلّم في الدورة، لتقدير الاحتمالات تلقائيًا من البيانات. لن نكشف آليتها الداخلية بعد؛ فهذا موضوع الفصل الرابع. لكنك ستستخدمها وترى نتائجها. سنقدّر الاحتمالات بطريقتين: حساب التكرارات مباشرةً، وتعلّمها تدريجيًا من البيانات.
اقرأ هذا الدرس بالتوازي مع الدفتر البرمجي؛ فكل قسم يقابل تمارين مرقّمة يمكنك تشغيلها.
0. حين وصلت النماذج الإحصائية إلى حدودها
في ثمانينيات القرن العشرين وتسعينياته، كانت نماذج اللغة الإحصائية سائدة في معالجة اللغة الطبيعية. بنى باحثون في IBM، منهم فريدريك جيلينك وروبرت ميرسر، أنظمة تعتمد على نماذج المقاطع المتتابعة (N-grams). تقدّر هذه النماذج احتمال الكلمة التالية بالاعتماد على تكرار تسلسلات الكلمات في مجموعات نصية كبيرة.
يقدّر النموذج الثنائي (Bigram) احتمال مجيء الكلمة B بعد الكلمة A. ويستخدم النموذج الثلاثي (Trigram) الكلمتين السابقتين. كانت هذه الأنظمة إحصائية في جوهرها: تعدّ التسلسلات المرصودة وتحوّل الأعداد إلى احتمالات، وغالبًا ما تستخدم تقنيات متقدّمة للتنعيم، مثل Katz backoff وGood–Turing وKneser–Ney، إلى جانب حذف المدخلات الأقل أهمية من الجداول للتعامل مع البيانات الناقصة وتقليل الحجم.
لكنها واجهت قيدًا أساسيًا: ندرة البيانات. يزداد عدد المقاطع الممكنة بسرعة هائلة مع حجم المفردات:
- الحروف (27 رمزًا في مثال عام): \(27^2 = 729\) زوجًا ممكنًا. حجم يسهل التعامل معه.
- الكلمات الإنجليزية (50,000 كلمة): \(50{,}000^2 = 2.5\) مليار زوج ممكن. معظمها لم يُرصد قط.
- مفردات مجزّئات النص الكبيرة (100,000 إلى 200,000 رمز): من 10 إلى 40 مليار زوج ممكن، مع قلة المشاهدات مقارنةً بعدد الأزواج الممكنة.
استخدمت الأنظمة الفعلية تخزينًا متناثرًا، مثل أشجار البادئات والبنى المضغوطة وحذف المدخلات الأقل أهمية، بدل الجداول الكثيفة. لم تكن المشكلة مجرد تخزين كل زوج، بل أن معظم التركيبات لم تظهر في البيانات أصلًا، وأن العدّ وحده لا يكفي لاستنتاج احتمالات أزواج الكلمات التي لم تظهر في البيانات.
هذه هي مشكلة ندرة البيانات (Data Sparsity)، أي قلّة المشاهدات مقارنةً بعدد التركيبات الممكنة. يتعامل نموذج العدّ مع «black cat» و«white cat» بوصفهما تركيبين يُحسب تكرار كل منهما على حدة. يمكنه حفظ الأنماط الشائعة، لكنه يجد صعوبة في التعميم على التركيبات النادرة أو غير المرصودة. ومع ازدياد المفردات وطول السياق، أصبح الاعتماد على عدّ التسلسلات وحده أقل ملاءمة.
ستبني في هذا الفصل نموذجًا ثنائيًا بالاعتماد على التكرارات، وتولّد به أسماء تبدو معقولة، ثم تواجه مشكلة ندرة البيانات بنفسك. ستكشف الأرقام لماذا يصل العدّ إلى حدوده، ولماذا احتجنا إلى أساليب أخرى.
أهداف التعلّم
بنهاية هذا الفصل، ستفهم:
- كيفية بناء مصفوفة انتقال بعدّ الأزواج في تسلسل.
- كيفية حساب إنتروبيا الصف لقياس قابلية التنبؤ عند معرفة السياق.
- الفرق بين العدّ (جدول تكرارات صريح) والتعلّم (طريقة آلية لتقدير الاحتمالات).
- كيفية توليد تسلسلات بأخذ عينات من توزيع احتمالي.
- لماذا تحدّ ندرة البيانات من قدرة العدّ الصريح على التعميم، وما الذي يدفعنا إلى أساليب مختلفة.
- كيف ينتج نموذج ثنائي بسيط نصوصًا مقنعة أحيانًا، وأين تظهر حدوده.
الجزء صفر: الإعداد
التمرين 0 في الدفتر. ثبّت حزمة الدورة في خلية الإعداد.
سنستخدم فئة مساعدة اسمها TransitionLearner تتعلّم احتمالات الانتقال تلقائيًا بتعديل المعاملات استنادًا إلى البيانات. تعامل معها الآن كصندوق أسود. لا تحتاج بعد إلى معرفة آليتها؛ يكفي أن تعرف أنها تستطيع الاقتراب من احتمالات العدّ في الصفوف التي تتوافر لها بيانات كافية، مع تدريب مناسب. يفتح الفصل الرابع هذا الصندوق ويشرح ما بداخله.
الجزء الأول: حجر وورقة ومقص (مصفوفة انتقال 3 × 3)
لديك 1,000 حركة مسجّلة لخصم يزعم أنه يلعب عشوائيًا. لنختبر هذا الادعاء.
التمرين 1: تحميل الحركات
التمرين 1 في الدفتر. حمّل الحركات وافحص تكراراتها الإجمالية.
يبدو التوزيع الإجمالي منتظمًا تقريبًا: نحو 33% حجر، و33% ورقة، و33% مقص. إذا اكتفيت بهذه التكرارات الهامشية، فقد تظن أن الخصم يلعب عشوائيًا.
لكن الإنتروبيا الهامشية، التي تتجاهل السياق، لا تروي القصة كاملة. هل تساعد معرفة الحركة السابقة على التنبؤ بالحركة التالية؟
التمرين 2: عدّ الانتقالات وحساب الإنتروبيا
التمرين 2 في الدفتر. ابنِ مصفوفة لأعداد الانتقالات بحجم \(3\times3\)، بحيث تحتوي الخانة
[i][j]على عدد المرات التي جاءت فيها الحركةjبعد الحركةi.
اعرض الأعداد وافحصها بصريًا بخريطة حرارية.
توقّع أولًا: بعد أن يلعب خصمك حجرًا، هل تتساوى احتمالات أن يلعب حجرًا أو ورقة أو مقصًا؟ أم أن هناك نمطًا؟
حساب إنتروبيا الصف
احسب الآن إنتروبيا كل صف. يمثّل كل صف توزيعًا شرطيًا: احتمال الحركة التالية عند معرفة الحركة السابقة، أي \(P(Y|X)\).
متابعة التمرين 2 في الدفتر. لكل حركة سابقة، احسب إنتروبيا توزيع الحركة التالية.
قارنها بالتوزيع المنتظم \((1/3,1/3,1/3)\)، الذي تبلغ إنتروبيته \(\log_2(3)\approx1.585\) بت.
الفكرة الأساسية: إنتروبيا أقل تعني قابلية أكبر للتنبؤ. إذا كانت إنتروبيا الصف أقل من 1.585 بت، فنتائج ذلك الصف ليست متساوية الاحتمال، وقد توجد أنماط يمكن استثمارها. ولقياس فائدة السياق عمومًا، نقارن الإنتروبيا الشرطية بالإنتروبيا الهامشية.
تعمّق اختياري: يوضّح الدفتر الإضافي entropy_from_counts.ipynb (بالإنجليزية) كيف نجمع إنتروبيا الصفوف، مرجّحةً باحتمالات السياقات، للحصول على الإنتروبيا الشرطية \(H(Y|X)\). ويشرح الفرق بينها وبين الإنتروبيا الهامشية \(H(Y)\)، والعلاقة \(H(Y|X)\leq H(Y)\): معرفة السياق تقلّل عدم اليقين في المتوسط.
التمرين 3: استثمار الأنماط
إذا أمكننا التنبؤ بالحركة التالية أفضل من التخمين العشوائي، نلعب الحركة التي تهزمها:
- نتوقّع حجرًا ← نلعب ورقة.
- نتوقّع ورقة ← نلعب مقصًا.
- نتوقّع مقصًا ← نلعب حجرًا.
التمرين 3 في الدفتر. جرّب استراتيجية عشوائية مرجعية، بنسبة فوز متوقّعة تقارب 33%. ثم جرّب استراتيجية تستخدم مصفوفة الانتقال لتحديد الحركة التالية الأرجح، وتلعب ما يهزمها.
توقّع أولًا: إلى أي مدى يمكنك التفوّق على التخمين العشوائي؟
في هذا التمرين نقيّم الاستراتيجية على السجل نفسه الذي استخرجنا منه الأنماط. هذا يوضّح الفكرة، لكن تقدير الأداء على حركات جديدة يتطلّب سجل اختبار مستقلًا.
التمرين 4: تعلّم الاحتمالات تلقائيًا
حتى الآن، قدّرت الاحتمالات بعدّ الانتقالات. لنجرب الآن تعلّم هذه الاحتمالات.
تبدأ TransitionLearner باحتمالات منتظمة، ثم تعدّل احتمالاتها تدريجيًا بالاعتماد على البيانات. ندرّبها 200 خطوة ونقارن النتائج باحتمالات العدّ؛ وقد تقترب منها دون أن تتطابق تمامًا.
كيف تفعل ذلك؟ هذا ما سنكشفه في الفصل الرابع. لاحظ الآن أن طريقتين مختلفتين تستطيعان الوصول إلى تقديرات متقاربة في هذه المسألة الصغيرة التي تتوافر لها بيانات كافية.
التمرين 4 في الدفتر. درّب
TransitionLearnerعلى انتقالات اللعبة، واعرض مصفوفة الاحتمالات المتعلّمة، ثم قارنها بمصفوفة العدّ.
الفكرة الأساسية: ينجح العدّ هنا لأن المسألة صغيرة: 3 حركات و9 انتقالات ممكنة، ولدينا 999 انتقالًا مسجّلًا موزّعًا بينها. ويمكن للتعلّم أن يقترب من الحل نفسه.
لكن ماذا لو لم نرَ كل انتقال مرات كثيرة؟ في المسائل الشحيحة بالبيانات، نحتاج إلى أساليب تسمح بالاستفادة من المعلومات المشتركة بين الأنماط، مثل التمثيلات المتعلّمة والمعاملات المشتركة. تحسين قيم جدول تُقدَّر فيه احتمالات الانتقالات كلٌّ على حدة، كما نفعل هنا، لا يمنح النموذج هذه القدرة تلقائيًا.
الجزء الثاني: النماذج ثنائية الحروف (مصفوفة انتقال 28 × 28)
الفكرة نفسها، لكن المسألة أكبر. بدل 3 حركات، لدينا 28 رمزًا: الحروف من a إلى z، والرمز <S> للبداية، والرمز <E> للنهاية. وبدل التنبؤ بالحركة التالية في اللعبة، نتنبّأ بالحرف التالي في اسم.
تكبر مصفوفة الانتقال من \(3\times3\) إلى \(28\times28\)، لكن الطريقة لا تتغيّر.
ما المقطع الثنائي؟
المقطع الثنائي (Bigram) هو زوج من العناصر المتتابعة؛ والعناصر هنا حروف ورمزان يحدّدان البداية والنهاية. ينتج الاسم emma الأزواج التالية:
<S> -> e
e -> m
m -> m
m -> a
a -> <E>
يشير الانتقال الأول إلى بداية الاسم بالحرف e، والأخير إلى انتهائه بعد a. يحدّد الرمزان <S> و<E> بداية الاسم ونهايته. ومن دونهما، لا يتعلّم النموذج بهذه الطريقة الحروف التي تميل إلى بدء الأسماء أو إنهائها.
التمرين 5: تحميل مجموعة بيانات الأسماء
التمرين 5 في الدفتر. حمّل نحو 32,000 اسم، وقسّمها بنسبة 90% للتدريب و10% للاختبار، وأنشئ قائمة مفردات تضم 28 رمزًا.
يتحوّل كل اسم إلى تسلسل من المقاطع الثنائية. يحتوي الاسم emma على 5 أزواج، ويحتوي اسم من 10 أحرف على 11 زوجًا عند تضمين رمزي البداية والنهاية.
التمرين 6: بناء مصفوفة تكرارات 28 × 28
التمرين 6 في الدفتر. ابنِ مصفوفة التكرارات من بيانات التدريب فقط. تحتوي الخانة
[i][j]على عدد المرات التي جاء فيها الحرفjبعد الحرفi.
اعرض الإحصاءات التالية:
- العدد الإجمالي لمرات ظهور المقاطع الثنائية.
- عدد الخانات غير الصفرية من أصل \(28\times28=784\) خانة.
- ما الذي يأتي بعد
m؟ اعرض أكثر 10 نتائج تكرارًا.
ثم حوّل تكرارات كل صف إلى احتمالات بقسمتها على مجموع الصف، لتحصل على احتمال الرمز التالي عند معرفة الرمز الحالي.
اعرض مصفوفة التكرارات ومصفوفة الاحتمالات في خريطتين حراريتين.
توقّع أولًا: ما الأنماط التي تتوقّعها؟ هل تأتي حروف العلّة بعد الحروف الساكنة أكثر مما تأتي الحروف الساكنة بعد بعضها؟
التمرين 7: توليد أسماء
لتوليد اسم:
- ابدأ بالرمز
<S>. - اختر الرمز التالي عشوائيًا وفق توزيع الاحتمالات المشروط بالرمز الحالي.
- كرّر حتى تحصل على
<E>؛ وتضع الدالة في الدفتر أيضًا حدًا أقصى للطول.
التمرين 7 في الدفتر. ولّد 20 اسمًا باستخدام الاحتمالات المستخرجة بالعدّ.
توقّع أولًا: هل ستبدو هذه الأسماء حقيقية؟
التمرين 8: تعلّم المقاطع الثنائية باستخدام TransitionLearner
كما في اللعبة، استخدم TransitionLearner لتعلّم مصفوفة الاحتمالات ذات الحجم \(28\times28\) من الصفر. ما زلنا نتعامل معها كصندوق أسود.
التمرين 8 في الدفتر. جهّز أزواج التدريب، بحيث يُمثَّل كل مقطع بالزوج
(input_id, target_id). درّب النموذج 200 خطوة، ثم قارن المصفوفة المتعلّمة بمصفوفة العدّ.
السؤال الأساسي: ما مدى تقاربهما؟ افحص أكبر فرق مطلق عبر الخانات البالغ عددها 784.
انتبه إلى أن الصف الخاص بـ<E> لا توجد له انتقالات إلى رموز تالية في بيانات التدريب؛ إذ تنتهي الأسماء عنده. يبقى صفّه صفريًا في مصفوفة العدّ، وقد يحتفظ النموذج المتعلّم بتوزيعه الابتدائي فيه. لذلك لا يعني أكبر فرق عبر المصفوفة كلها بالضرورة ضعف تقدير الاحتمالات في الصفوف التي نستخدمها للتوليد. كذلك، ليست جميع أزواج الحروف مرصودة بالقدر نفسه.
التمرين 9: التوليد من النموذج المتعلّم
التمرين 9 في الدفتر. ولّد 20 اسمًا من النموذج المتعلّم.
توقّع أولًا: هل ستختلف هذه الأسماء عن أسماء نموذج العدّ؟
إذا تقاربت احتمالات الصفوف المستخدمة في التوليد، فمن المفترض أن تتشابه الأنماط العامة للأسماء. لكن لا يلزم أن تتطابق الأسماء حرفيًا؛ فالتوليد يعتمد على أخذ العينات، وقد تغيّر فروق صغيرة في الاحتمالات مسار العيّنة.
يقرّبنا التعلّم هنا من تقديرات العدّ ضمن النموذج نفسه. أما التعميم على تركيبات غير مرصودة عند اتساع المفردات وندرة البيانات، فيحتاج إلى تصميم يستفيد من المعلومات المشتركة بين السياقات، لا إلى استبدال العدّ بخوارزمية تحسين فحسب.
التمرين 10: مشكلة ندرة البيانات
نموذجنا الثنائي مصفوفة بحجم \(V\times V\). وعندما يكون \(V=28\) رمزًا، لا نحتاج إلا إلى 784 خانة. هذا حجم صغير جدًا.
لكن ماذا لو استخدمنا الكلمات بدل الحروف؟
ملاحظة: لن ندرّب نموذجًا بديلًا في هذا التمرين. الهدف هو رؤية حدود جدول العدّ من خلال الأرقام.
التمرين 10 في الدفتر. اعرض جدولًا لحجم المفردات و\(V^2\) ومتطلّبات الذاكرة للحالات التالية، بافتراض تخزين قيمة
float32من 4 بايتات في كل خانة:
- حروف هذا الدفتر: 28 رمزًا.
- رموز GPT-2: 50,257 رمزًا.
- مثال لقائمة مفردات إنجليزية: 100,000 كلمة.
- رموز Llama 3: 128,256 رمزًا.
- مثال لقائمة مفردات مستخرجة من نصوص أخبار عربية: 300,000 كلمة.
الأرقام التقريبية:
| حجم المفردات | عدد الخانات | الذاكرة |
|---|---|---|
| 28 رمزًا | 784 | نحو 3 كيلوبايت |
| 50 ألف رمز | 2.5 مليار | نحو 10 غيغابايت |
| 128 ألف رمز | 16 مليارًا | نحو 65 غيغابايت |
| 300 ألف كلمة | 90 مليارًا | 360 غيغابايت |
وهذا للمقاطع الثنائية فقط، أي لسياق طوله رمز واحد. أما المقاطع الثلاثية، بسياق من رمزين، فتضرب عدد الخانات في \(V\) مرة أخرى.
الفكرة الأساسية: التخزين مشكلة فعلية، لكن المشكلة الأعمق هي التعميم.
حتى مع التخزين المتناثر، تبقى معظم أزواج الكلمات غير مرصودة. لا ينقل العدّ المستقل ما تعلّمناه من «black cat» إلى «white cat». فإذا لم ترَ «purple cat» في التدريب، فلن تستنتج احتمالها مباشرةً من تكرار «purple dog» و«black cat». يمكن للتنعيم إعطاء احتمال لزوج غير مرصود، لكنه لا يوفّر وحده تمثيلًا غنيًا للتشابه بين الكلمات.
يصل العدّ الصريح في النهاية إلى حدوده. نحتاج إلى طريقة تجعل الأنماط المتشابهة تستفيد من المشاهدات المتاحة لبعضها. كيف نفعل ذلك؟ هذا سؤال للفصول القادمة.
وهناك قيد آخر أساسي: طول السياق. حتى لو كان التخزين مجانيًا ورأينا كل زوج ممكن، فإن النموذج الثنائي يتذكّر رمزًا سابقًا واحدًا فقط، والثلاثي يتذكّر رمزين. لكن اللغة قد تعتمد على سياق يسبقها بعشرات الكلمات أو مئاتها: علاقات نحوية بعيدة، وترابط المعنى، والضمائر وما تشير إليه. تقتصر نماذج المقاطع المتتابعة على السياق القريب ضمن نافذة ثابتة. احتجنا إلى تمثيلات متعلّمة وبنى تتعامل مع سياقات أطول؛ وهنا يأتي دور المحوّلات (Transformers)، التي سنتناولها لاحقًا. وللمحوّلات العملية أيضًا حدود لطول السياق.
ملخّص
من العدّ إلى التعلّم:
- نعدّ مرات مجيء \(Y\) بعد \(X\)، ثم نحوّل الأعداد إلى احتمالات \(P(Y|X)\) لبناء مصفوفة انتقال.
- تقيس إنتروبيا الصف قابلية التنبؤ في سياق معيّن. انخفاضها يشير إلى أنماط يمكن استثمارها.
- ينجح العدّ عندما تكون المسألة صغيرة وتتوافر مشاهدات كافية للانتقالات التي نريد تقدير احتمالاتها.
- يستطيع التعلّم الاقتراب من احتمالات العدّ، لكنه قد لا يطابقها تمامًا بسبب التدريب التكراري والصفوف قليلة البيانات أو غير المرصودة. أما مشاركة المعلومات بين الأنماط فتحتاج إلى تصميم مناسب للنموذج، وهو ما تمهّد له الفصول التالية.
حجر وورقة ومقص (3 × 3):
- بدت الحركات عشوائية عند تجاهل السياق، لكن الانتقالات كشفت أنماطًا واضحة.
- حسّن استثمار هذه الأنماط نسبة الفوز مقارنةً بالاستراتيجية العشوائية، ويعتمد مقدار التحسّن على البيانات.
- أنتج العدّ والتعلّم استراتيجيتين متقاربتين.
المقاطع ثنائية الحروف (28 × 28):
- استخدمنا الطريقة نفسها مع مفردات أكبر ومصفوفة من 784 خانة ممكنة، لم تُرصد بعض انتقالاتها في التدريب.
- يمكن للنموذج توليد أسماء تبدو معقولة، مثل
kaleighوjaivionوadelynn، لأن لتتابع الحروف أنماطًا قابلة للتعلّم. تختلف النتائج الفعلية بحسب النموذج والعينات. - قارنّا تقديرات العدّ والتعلّم، وفحصنا مواضع اختلافهما.
عائق ندرة البيانات:
- يعمل العدّ الصريح بسهولة مع 28 رمزًا، لكن عند 50 ألفًا إلى 300 ألف رمز يصبح عدد الأزواج الممكنة هائلًا، ومعظمها لا يظهر في التدريب.
- تساعد البنى المتناثرة على التخزين، لكنها لا تحلّ وحدها مشكلة التعميم ومشاركة المعلومات بين الكلمات المتشابهة.
- دفعت هذه القيود إلى البحث عن أساليب أخرى، وهي موضوع الفصول اللاحقة.
ما التالي؟ استخدمت TransitionLearner في هذا الفصل دون أن ترى داخلها. يفتح الفصل الرابع هذا الصندوق.
ستتعلّم:
- ما العصبون الاصطناعي، وكيف يبدأ بتحويل بسيط من الشكل
y = w×x + b. - كيف يحدّد الحاسوب الاتجاه الذي يعدّل فيه الأوزان.
- لماذا تهم دوال التنشيط مثل sigmoid وReLU.
- ماذا يحدث عندما لا يكفي عصبون واحد، كما في مسألة XOR.
- كيف تتعلّم مجموعة عصبونات أنماطًا يعجز عنها عصبون واحد.
بنهاية الفصل الرابع، ستتمكّن من بناء TransitionLearner بنفسك من الصفر وفهم الرياضيات التي تجعلها تعمل.
أسئلة للنقاش
العدّ والتعلّم: إذا استطاع العدّ والتعلّم الوصول إلى احتمالات متقاربة، فلماذا نتعلّم؟ ومتى نحتاج إلى نموذج يتجاوز جدول العدّ؟ والأهم: كيف يجري التعلّم فعلًا؟ ماذا يحدث داخل الصندوق خلال خطوات التدريب البالغ عددها 200؟
إنتروبيا الصف والتنبؤ: صف إنتروبيته 0.8 بت أسهل في التنبؤ من صف إنتروبيته 1.5 بت. كيف تستخدم ذلك لتحديد متى تستثمر نمطًا بدل اللعب عشوائيًا؟
الأسماء المولّدة: قد ينتج النموذج أسماء معقولة مثل
kaleighوmaren، وأخرى غريبة مثلnglen، وقد يكرّر أسماء. ما الذي ينقصه؟ وما الأنماط التي يعجز نموذج ذو سياق من حرف واحد عن التقاطها؟تركيبات حروف غير مرصودة: افترض أنك رأيت
maألف مرة، وbaخمسمئة مرة، ولم ترَzaقط. توحي البيانات بأن حرف العلّةaيأتي كثيرًا بعد حروف ساكنة، لكن نموذج العدّ يقدّر احتمالaبعدzمن عدّzaوحده. ماذا يحتاج النموذج كي يستفيد من بيانات الأنماط المتشابهة؟ ولماذا يعامل العدّ الصريحmوbوzباستقلال؟التخزين المتناثر وندرة البيانات: استخدمت أنظمة المقاطع المتتابعة أشجار البادئات وحذف المدخلات الأقل أهمية لتجنّب تخزين الأصفار. لماذا لم يحلّ ذلك المشكلة كاملةً؟ ما الفرق بين تخزين الأعداد المرصودة بكفاءة، والتعميم على تركيبات لم نرَها؟
من المقاطع الثنائية إلى الثلاثية: عند استخدام سياق من حرفين، يصبح حجم الجدول الكثيف \(V^3\). إذا كان \(V=28\) فلدينا 21,952 خانة، وإذا كان \(V=50{,}000\) فلدينا 125 تريليون خانة. ما العوامل التي تحدّد متى يصبح الجدول المتناثر نفسه غير عملي؟ فكّر في عدد المقاطع المرصودة وحجم مجموعة البيانات والذاكرة المتاحة، إلى جانب حجم المفردات.