→ رجوع إلى اللعب

كيف يعمل الدماغ الجماعي

هذه شبكة عصبية حقيقية، لا قواعد if/else مخفية وراء الستارة. الكود مكتوب بالـ JavaScript الخالص ويعمل في متصفحك، والتدريب يحدث هنا فعليًا: حساب تدرجات، انتشار عكسي، وتحديث أوزان.

١. ما الذي تتعلمه؟

المهمة: «في شبكة ٤×٤، شخص يقف في مربع معين وتحرك مؤخرًا في اتجاهين محددين — أي اتجاه سيختار الآن؟». أربعة احتمالات، فالتخمين العشوائي يعطي ٢٥٪. البشر ليسوا عشوائيين: يميلون للبقاء في المنتصف، لمواصلة الطريق المستقيم، وللانعطاف مع عقارب الساعة. الشبكة تتعلم هذه الانحيازات من كل زائر حقيقي.

٢. البنية

الطبقةالحجمالوظيفة
المدخلات (one-hot)2416 للمربع الحالي + 4 للاتجاه السابق + 4 للاتجاه قبل السابق
مخفية32tanh(W₁x + b₁)
المخرجات4softmax(W₂h + b₂) = توزيع الاتجاهات

عدد الأوزان = 32×24 + 32 + 4×32 + 4 = 932 معاملًا فقط، أي 3728 بايت. لهذا يمكن وضع «الدماغ» كاملًا في صف واحد داخل قاعدة بيانات، وتحميله في أقل من جزء من الثانية على أي جهاز — حتى بدون بطاقة رسومية.

٣. التدريب: انتشار عكسي مع Adam

الدالة هي الإنتروبيا المتقاطعة مع تلطيف التسمية (label smoothing = 0.06). الاشتقاق يُحسب يدويًا:

dz  = p − t                       # خطأ الطبقة الأخيرة
dW₂ = dzᵀ · h        db₂ = dz
dh  = (W₂ᵀ dz) ⊙ (1 − h²)         # مشتقة tanh
dW₁ = dhᵀ · x        db₁ = dh

ولأن المدخلات one-hot، فإن x فيه ثلاثة أصفار فقط من أصل 24، فيُحدَّث فقط عمود W₁ المقابل للمربع والاتجاهين السابقين. هذا يخفض تكلفة العيّنة الواحدة إلى ~900 عملية ضرب-جمع، فتنهي دورة تدريب على 2500 عيّنة في ثانية واحدة على معالج مركزى عادي.

المحسِّن هو Adam (β₁=0.9، β₂=0.999) مع تصحيح التحيز ومعدل تعلّم متناقص (0.93 لكل دفعة)، ودفعات حجمها 32، و24 دورة تدريبية.

٤. كيف «يتعلم من الناس» ولا يُخترَع؟

  1. كل زائر يلعب ١٢ نقرة، فتُرفع النقرات كصفوف رقمية إلى Cloudflare D1.
  2. الزائر ينزّل آخر ~2500 تفاعلة من كل العالم، يدرّب عليها نسخته محليًا، ثم يرسل الأوزان (وليس نقراته فقط).
  3. السيرفر لا يصدّق أي رقم يرسله المتصفح. يعيد تشغيل شبكة الزائر داخل الـ Worker ويقيس دقتها بنفسه.
  4. القياس يتم على دفعة محجوزة: صفوف محددة بقاعدة id % 11 = 3، ونقطة API الخاصة بالعيّنات لا تُرجعها أبدًا. فلا أحد يستطيع الحفظ عليها.
  5. تُقبَل الأوزان فقط إذا حسّنت أفضل دقة مسجّلة بنفس الأساس بفارق ٠٫٤٪. لذلك الدماغ لا يرتجع — كل إصدار أقوى من سابقه، وكل الزوار اللاحقين يلعبون ضد النموذج الأحسن.

هذه ليست متوسطات فيدرالية كلاسيكية (FedAvg)، بل «قاعة أفضل الأوزان»: تنافس بين متدرّبين، والفائز هو ما يُوزَّع على الجميع — لأنها أرخص كثيرًا على الخطة المجانية وتقاوم التلويث: الأوزان السيئة تُرفض تلقائيًا لأنها تُقيس نفسها على بيانات محجوزة.

٥. التهيئة الباردة

في اليوم الأول لا توجد نقرات، فيُزرَع نموذج أولي مدرَّب على محاكي سلوك بشري (وليس على بيانات ناس). هذا مُعلَن في قاعدة البيانات بعمود source='sim'، وبمجرد تجاوز ١٢٠ تفاعلة محجوزة حقيقية ينتقل القياس إلى الأساس 'play' ويبدأ سجلّ جديد للدقة البشرية الخالصة. الإحصائيات المعروضة تفرّق بينهما دائمًا.

٦. نقاط API

المسارالوظيفة
GET /api/brainأوزان الدماغ الحالي + الدقة المقاسة + الإصدار
POST /api/feedرفع تفاعلات (صفوف رقمية محقَّق من نطاقها ومشروعية حركة كل منها)
GET /api/samples?limit=2500عيّنات تدريب بدون الصفوف المحجوزة
POST /api/brainترشيح أوزان جديدة؛ السيرفر يقيس ويقبل أو يرفض
GET /api/statsأعداد مجمّعة + تاريخ دقة الإصدارات

٧. حدود التصميم

٩٣٢ وزن تعني نموذجًا صغيرًا بوعيه: يتعلم انحيازات موضعية ولا يفهم «نية» بعيدة المدى. لا يوجد حماية من شخص يغرق السيرفر بنقرات مصطنعة مبنية على نفس الانحيازات — الحد الأقصى بالساعة يخفف لكن لا يمنع. وكل دقة تراها هنا مقاسة على بضع مئات من الصفوف، فهي ±٢٪ تقريبًا كخطأ معايرة.

→ رجوع