← voidwest    research notes
سياق الملاحظة

الإعدادات والتقديرات والخطوات التالية هنا تخص وقت كتابة الملاحظة. نحتفظ بنتائج التشغيل كما هي؛ تحديث الصياغة ما يعني إننا أعدنا التجربة أو إن حالة التنفيذ القديمة لسه هي الحالية.

اختبار تمثيلات الصرف العربي داخل LLMs

a research plan · 2026-05-16
Arabic NLP probing ember morphology research plan
توضيح منهجي · تدقيق 2026-08

الملاحظة هذي تقترح نختبر إذا الـprobes تقدر تقرأ الجذر والوزن العربي من حالات النموذج. الخطة تجمع حوالي 200 جذر مبتكر مع 10 أوزان. هذي خطة تجربة، ولسه ما فيها نتيجة probing.

Open Question

ورقة morphemes without borders تسجل 97% لـGPT-4o في توليد أشكال الجذر والوزن المبتكرة، و20% لـALLAM رغم إن محاذاة الـtokenizer عنده أفضل. الفرق يفتح سؤال عن التمثيلات، بس ما يحدد فين النموذج يحسب الصرف، ولا يثبت إن ALLAM ما عنده تمثيلات صرفية.

ليش هذا السؤال؟

ورقة 2026 تخلّي سؤال مفتوح: الكفاءة الصرفية في الـ LLMs تنقاس بـ productive generalization، مو بمحاذاة الـ tokenizer، بس لسه ما نعرف كيف النموذج يحققها.

المؤلفون يقترحون "الاستدلال التركيبي + اتباع التعليمات" كآلية، لكن هذا وصف للسلوك، مو شرح mechanistic.

ثلاثة أشياء تخلي التجربة ممكنة دحين:

  1. ember يفتح وصول مباشر للـ hidden states. بعد كل transformer block، أقدر أنادي backend.data(&x) وأقرأ الـ activations؛ بدون hooks، وبدون CUDA synchronization، وبدون framework overhead.
  2. الـ behavioral probing رخيص. ما يحتاج أدرب probes على 100K مثال. مهمة الجذر والوزن المبتكرة من ورقة 2026 تعطينا ground truth نظيف: نعطي جذر + وزن، ونشوف هل المخرج صحيح. ونسوي probe في كل طبقة.
  3. المقارنة شبه جاهزة. نشغّل نفس الـ probe على GPT-2 (أسوأ محاذاة tokenizer، وأداء عربي غير معروف)، وLLaMA 3 (أكبر وأفضل، بمحاذاة متوسطة)، ونماذج عربية. وقت ما تنفصل المنحنيات نعرف متى تطلع التمثيلات الصرفية.

إعداد التجربة

الفرضية

الفرضية اللي نختبرها: النماذج اللي تنجح في توليد nonce قد تحمل تمثيلات نقدر نفصل منها الجذر والوزن خطياً. مكان ظهور الإشارة عبر الطبقات جزء من السؤال، مو نتيجة محسومة.

لو النموذج فشل في التوليد، ممكن تكون المشكلة في التمثيل أو القراءة أو اتباع التعليمات. الفشل لحاله ما يثبت إن المعلومة غائبة أو إنها ضاعت في طبقة متأخرة.

النماذج

المحفزات

من ورقة 2026: جذور nonce (مخترعة) + أوزان حقيقية. المهمة بسيطة: نعطي جذر nonce زي q-l-b مع وزن زي فَعَلَ، ونطلب الكلمة الصحيحة (qalaba).

توسعة. dataset الورقة فيها 100 nonce root مع 5 أوزان؛ نوسّعها لـ 200 nonce root مع 10 أوزان (2,000 محفز) عشان تكون الطاقة الإحصائية كافية للـ CCA والـ RSA.

أنواع الـprobes

كل probe يشتغل على hidden states النموذج اللي يطلعها ember:

  1. behavioral probe (على مستوى logit): هل النموذج يطلع الشكل الصحيح؟
  2. linear probe (على مستوى hidden state): ندرب مصنف خطي على hidden state كل طبقة عشان يتنبأ بالوزن (binary classification: وزن X أو لا؟). هذا يكمل الـ behavioral probe: إذا الـ linear probe جاب دقة عالية لكن السلوك ضعيف، فنقدر نسترجع الهدف من الحالات بالإعداد هذا رغم ضعف التوليد. هذا ما يثبت لحاله إن النموذج يستخدم نفس المعلومة أو يتجاهلها؛ نحتاج ضوابط للتسرب وتدخل سببي عشان نختبر الاستخدام. كود الـ probe يستخدم SGD من numpy، مو PyTorch، عشان يشتغل في نفس البيئة.

مسار التجربة

خط الأنابيب كامل كالتالي:

1. stimuli/generate_stimuli.py → nonce_root_pattern.json (مجموعة المحفزات)
2. src/main.rs --probe-input nonce_root_pattern.json → activations/ (سحب hidden states عبر ember)
3. probes/behavioral_probe.py → accuracy_by_layer.csv (دقة التوليد عبر الطبقات)
4. probes/train_linear_probe.py → probe_accuracy.csv (قابلية فك التشفير الخطي)
5. probes/cca_analysis.py → cca_scores.csv (تشابه عبر النماذج)
6. probes/rsa_analysis.py → rsa_plots/ (هندسة فضاء التمثيلات)
7. probes/plot_results.py → plots/ (الرسوم البيانية النهائية)

المقاييس والتوقعات

نقاط القياس

متطلبات التشغيل

هذي كانت تقديرات تخطيط، مو قياسات تشغيل: GPT-2 small بحجم 124M، و12 طبقة × 12 رأس × 64 بُعد = 768 بُعد للحالة. 200 محفز × 12 طبقة يعطينا 2,400 متجه، أو 4,800 مع لقطتين. تقدير أقل من دقيقة للـpipeline وحوالي 5GB لـLLaMA 3 8B بـQ4_K يحتاج تحقق فعلي حسب الـloader والسياق والحالات المحفوظة.

النتائج المحتملة وحدود تفسيرها

لو GPT-4 نجح وما نقدر نفحص حالاته

الخطة تحتاج نماذج مفتوحة الأوزان نقدر نقرأ hidden states منها. نتيجة GPT-4o المنشورة، 97% على nonce، مرجع سلوكي بس؛ مو سقف أثبتته تجربتنا ولا دليل على شكل تمثيلاته الداخلية.

لو الـprobes قرب الصدفة في كل الطبقات

النتيجة القريبة من الصدفة تقول إن الـprobe ونقطة الاستخراج والبيانات هذي ما استرجعت الهدف. يبقى احتمال تمثيل غير خطي، أو بيانات قليلة، أو واجهة قياس ضعيفة. ما نحسم السبب من النتيجة وحدها.

لو الجذر والوزن في نفس الفضاء

لو فضاءات أوزان الـprobes متداخلة، فهذا وصف للقراءتين اللي دربناها. ما يفرق لحاله بين جدول حفظ وقاعدة تركيبية؛ نحتاج ضوابط سلوكية وتدخلات إضافية.

لو الفرق ظهر بين 1B و3B

فرق بين 1B و3B يبرر دراسة حجم مضبوطة. ما يحدد لحاله حد يفيد تحته إدخال الصرف صراحة، ولا يثبت إن النموذج يتعلمه بدون مساعدة فوق هذا الحد.

أعمال مرتبطة

الخطوات التالية وقت كتابة الملاحظة

  1. إضافة سحب الـ activation لـ ember، تقريباً 30 سطر في model.rs. نضيف دالة forward_with_activations ترجع hidden states مع الـ logits.
  2. بناء مجموعة المحفزات، نبدأ بالـ dataset العامة من Alakeel et al.، ونفلتر الجذور المبتكرة فقط، ثم نوسّع لـ ~200 محفز مع +10 أوزان.
  3. نشغّل probes GPT-2، baseline. غالباً عربية GPT-2 ضعيفة، لكن هيكل الـ probe يشتغل في كل الأحوال.
  4. نشغّل probes LLaMA 3 1B/3B، وهنا المقارنة المهمة: وين نقطة الانعطاف؟
  5. نكتب، إذا كان منحنى التحجيم واضحاً، ورقة قصيرة (findings أو workshop). 6 صفحات بقصة نظيفة: "اللي وضحته ورقة 2026 على المستوى السلوكي، وإيش يصير داخل النموذج عشان يفسره."