- نُشر في
- ·24 دقيقة للقراءة
لما صار التفكير كهرباء — الجزء الأول: السؤال
- Authors

- Name
- هاني الشاطر
هاي قصة.
مش أي قصة.
هاي قصة التفكير لما صار كهرباء.
قصة أعظم إنجاز تقني في تاريخ الإنسان: الكمبيوتر. الآلة اللي بدأت كفكرة عن الرموز والقواعد، وبعدين صارت مكتبك، وبنكك، وتلفونك، وصوت أمك على واتساب، والنظام اللي بقرر أي خبر تقرأه وأي إعلان يطاردك وأي نموذج ذكاء اصطناعي يكتبلك اعتذار لطيف عن خطأ هو أصلاً مش فاهمه.
القصص التاريخية مسلية، أكيد. فيها عباقرة، حروب، رسائل قصيرة بتدمر مشاريع ضخمة، وناس ماتوا وهم مش عارفين إنهم كانوا عم يبنوا المستقبل. بس القصص الكبيرة ما بتنحكى بس للتسلية. القصص الكبيرة هي ذاكرة النوع البشري. بنحكيها لأننا بدنا نعرف كيف وصلنا لهون، شو شافوا اللي قبلنا، وشو ما شافوا.
هدفي في هذا الكتاب بسيط وصعب: بدي إياك تكون أكثر من بنّاء.
بدي إياك تكون بنّاء فيلسوف.
مش فيلسوف بدل ما تكون بنّاء. ما بدنا شخص يوقف المشروع لأنه اكتشف إن زر تسجيل الدخول عنده أزمة هوية. ابني. اكتب الكود. درّب النموذج. اشحن المنتج. بس وإنت بتبني، اسأل: شو افترضت عن الإنسان؟ شو سمّيت نجاح؟ شو رميت برّا التعريف وقلت عنه noise؟ كل architecture شايلة نظرية عن العالم، حتى لو صاحبها سماها implementation detail.
لأن الآلات الكبيرة ما بتطلع من فراغ. كل آلة عظيمة شايلة حلم. أحياناً الحلم بكون واضح ومكتوب على الباب. وأحياناً بكون مدفون في الأساس، ساكت، مستني اللحظة اللي يكسر فيها البلاط ويطلع.
الفصل الأول — السؤال
عادةً بنبدأ بقصة ألطف.
القصة بتبدأ بآلان تورنغ. شاب عبقري، بريطاني، قاعد في مرج في الثلاثينات، بتخيل آلة. الآلة بتقرأ رموز من شريط. الرمز بصير قاعدة. القاعدة بتصير حساب. الحساب بصير كمبيوتر. بعدها الحرب، إنغما، مانشستر، أول الآلات الحقيقية، وبعدين موبايلك بصرخ عليك لأنك قاعد من ساعتين وما تحركت.
قصة جميلة. عبقري وحيد. فكرة نظيفة. حرب. تراجيديا. موسيقى بيانو خفيفة ومشهد عشب بتحرك بالهوا. بتحس التاريخ كان ماشي بخط مستقيم: الإنسان طلع من الجهل للعقل، من العقل للرياضيات، من الرياضيات للآلة، من الآلة للبرمجة، ومن البرمجة للذكاء الاصطناعي. التقدم شغال. اللي مش فاهم يلحقنا.
بس خلينا نرجع خطوة لورا.
هاي القصة بتخبي سؤال أهم: ليش احتجنا الآلة أصلاً؟
القصة مش إن الفلاسفة ضلوا يوجعوا راس البشرية، وبعدين إجى شخص عملي وقال: كفاية حكي، خلينا نبني. هاي نسخة مريحة للمهندسين لأنها بتخلي الهندسة لحظة النضج، والفلسفة كأنها مراهقة طويلة قبل ما البشرية تعقل وتفتح VS Code.
القصة الحقيقية أقدم وأخطر. قبل الكمبيوتر بزمن طويل، كان في رغبة عميقة إننا نكتب العقل نفسه.
الحلم بلّش كلغة دقيقة لدرجة إن الخلاف نفسه ينحسب. شخصين مختلفين؟ ما في داعي للصراخ. ما في داعي لـ«إنت مش فاهم» و«إنت أصلاً عندك عقدة من النجاح». بنقعد، بنكتب الرموز، وبنحسب مين معه حق. في القرن السابع عشر، لايبنتز — الرجل اللي شارك باختراع الـ calculus بين مهمة دبلوماسية وثانية — حكاها بكلمة وحدة صارت أشهر وعد بتاريخ الفكرة: Calculemus. خلينا نحسب.
بدل الجدال، معادلة. تخيل الإغراء. مش بس حل مسألة رياضيات. حل لعنة البشر القديمة: إن كل واحد شايف العالم من راسه ومقتنع إن راسه هو الكون. السياسة؟ نحسبها. الأخلاق؟ نحسبها. الحقيقة؟ نحسبها. حتى خالك اللي مصر إن عنده إحساس خاص بالسوق بنقله: ممتاز يا حج، هات المعادلة.
بعدين، وبعد قرنين ونص، دخل الحلم الرياضيات نفسها وصار مشروع بناء رسمي. قواعد، وبديهيات، واشتقاقات؛ أساس ما بتفوت فيه «هيك حسّيتها» من الشباك بآخر لحظة. مع بداية القرن العشرين، المشروع صار برنامج عمل: صياغة الرياضيات بقواعد رسمية، وإثبات اتساق أساسها، والسؤال إذا في إجراء ميكانيكي يحسم قابلية البرهان. مؤتمرات وتلاميذ وسنين شغل، وكل جيل مقتنع إنه قرب أكثر من البيت النظيف: عقل مكتوب، وخلاف محسوم، وحقيقة بتطلع من النظام زي الفاتورة من ماكينة الكاش.
وبآخر الطريق خبطوا بحد ما كان bug بالصياغة، ولا نقص عبقرية، ولا حجر مركّب غلط. المشكلة كانت بالطلب نفسه.
مش رح أحرق عليك الحريق من هلق. بكفي تعرف إن الحلم، وهو ينكسر، أجبر واحداً من الجيل الجاي يسأل سؤالاً أصغر وأذكى: إذا ما بنقدر نحوّل الحقيقة كلها لإجراء، شو بقدر الإجراء يعمل بالضبط؟ شو يعني «حساب»؟ وشو يعني «آلة»؟
ومن السؤال طلعت صورة الآلة اللي رح تصير واحداً من جذور الكمبيوتر النظرية.
هاي رهان الكتاب: الكمبيوتر مش ابن انتصار العقل النظيف وبس. هو كمان ابن اللحظة اللي اكتشف فيها العقل إن النظافة الكاملة مش معروضة. الحلم ما حقق اللي وعد فيه؛ تركلنا إشي ثاني ما كان أي واحد من أصحابه ناوي يبنيه.
هاي الرواية بتقلب علاقتنا بالآلة. إحنا مش ورثة عباقرة تركوا الفلسفة وراحوا يبنوا. إحنا ورثة حلم فلسفي حاول يبني العالم كمنظومة، فانكسرت المنظومة، ومن الكسر طلع الجهاز اللي بنبني عليه اليوم.
أنا ما شفت هذا لسنين.
كنت ببني أنظمة تعلم آلي بعقلية المهندس العادي: أعطيني data، أعطيني metric، أعطيني dashboard. إذا خرب النموذج، بدنا labels أحسن. إذا ما فهمنا النتيجة، نضيف monitoring. إذا اليوزر زعل، نعمل calibration.
بعدين دخل الإنتاج الحقيقي على الخط، والإنتاج الحقيقي ما بحترم أحلامك.
في أمازون، كنت أقود فريق applied science لتوصيات الهدايا. المهمة على الورق واضحة: رشّحلي هدية. المهمة على أرض الواقع وقفت على سؤال ما حدا حط له ticket: شو يعني هدية؟
جرّب تجاوب. هل الهدية category؟ في منتجات بتنشرى هدايا أكثر من غيرها، بس نفس الغلاية بتكون هدية لعمتك اليوم وشراء عادي لمطبخك بكرة. هل الهدية نية؟ النية مش عمود في الـ database. هل الهدية gift wrap؟ نص الناس ما بتغلف. كل تعريف جربناه انكسر على edge cases، وكل edge case فتح نقاش، وكل نقاش رجّعنا لنفس النقطة. الفريق عالق. وأنا، اللي المفروض أفك العقدة، كنت أعلق منهم كلهم. mind freeze كامل.
ليلة، للتسلية أكثر من أي إشي، فتحت ChatGPT وكتبت: اختار فيلسوف وقلي شو كان يعمل مكاني.
اختار جاك دريدا.
(دريدا الحقيقي أعقد من أي ملخص بمحادثة، وأهل الاختصاص رح يشدوا شعرهم من اللي جاي. معهم حق. بس أنا ما كنت أعمل PhD بالفلسفة الفرنسية، كنت أحاول أفك feature عالقة.)
الجواب، باختصار شديد: بطّل تدور على المعنى الحقيقي للهدية كأنه كنز مدفون تحت الـ data ومستنيك تحفر. ما في تعريف نهائي هناك برّا. المعنى ما بنكتشف، المعنى بنبنى.
طيب، كتبت له، شو أعمل أنا؟
الجواب الثاني هو اللي قلب الطاولة: إنت مش مكتشف. إنت مبتكر. ما تسأل «شو الهدية؟» — ابنِ تعريف الهدية بالشكل اللي بحسّن تجربة الزبون.
قعدت أتطلع عالشاشة.
السؤال اللي عطّلنا أسابيع — «شو الهدية؟» — كان سؤالاً بلا جواب، لأنه بفترض إن في جواباً واحداً صحيحاً مخبّى بمكان ما. السؤال الجديد — «أي تعريف للهدية بخلي التجربة أحسن؟» — سؤال إله iterations، وexperiments، وmetrics، وقرارات بتتاخد وبتتراجع. سؤال هندسي. الـ freeze فك. الفريق تحرك. وأنا صرت أحمل بجيبي أداة جديدة اسمها فيلسوف ميت.
والطريف إني سألت آلة، والآلة رجعتني لفيلسوف ميت عشان أفك مشكلة production. من وقتها بطلت أشوف أسئلة المعنى والسياق والقيم كحواشي على ML؛ هي بتدخل الـ backlog سواء سمّيناها فلسفة أو لا.
عشان هيك السؤال مش: هل لازم المهندس يقرأ فلسفة عشان يصير مثقف؟
لا يا حبيبي. السؤال: كم مرة بدك تخبط بنفس الحائط قبل ما تسأل مين رسم الخريطة؟
الهندسة بتسأل: هل النظام بشتغل؟
الفلسفة بتسأل: شو يعني «بشتغل»؟ لمين؟ تحت أي تعريف؟ مين طلع من التعريف؟ وليش واثق إن اللي طلع مش رح يرجع ويكسر الباب؟
الفلسفة مش بديل عن الهندسة. هي اللي بتخلّينا نفحص تعريف النجاح قبل ما نعمل optimize عليه.
اللي جاي ثلاث اصطدامات صغيرة بين أسئلة قديمة وأنظمة حديثة: سوسير وword2vec عند سؤال كيف بتطلع الدلالة من العلاقات؛ فيتغنشتاين والـ LLMs عند الفرق بين الكلام اللي بمشي داخل اللغة والكلام اللي لازم يصمد قدّام العالم؛ وهيوم مع كل model منطلب منه إن بكرا يضل قريباً من مبارح.
بعدها بنرجع للبداية، وبنمشي مع الحلم من أول شرارة: نشوفه وهو يطلع، يتشقق، ويترك من شرخه إشي ما كان أي واحد من أصحابه ناوي يبنيه.
الفصل الثاني — اصطدام أول
وعدتك بثلاث اصطدامات بين أسئلة قديمة وأنظمة حديثة. هاي أولها، وبتبلّش من الطرف القديم.
سنة 1913 مات لغوي سويسري اسمه فرديناند دو سوسير. ما ترك وراه كتاباً جاهزاً؛ بعد موته، حرّر زميلان له كتاباً بالاعتماد على ملاحظات طلاب حضروا محاضراته، ونشروه سنة 1916 بعنوان Course in General Linguistics («دروس في اللسانيات العامة»). الرجل عمره ما سمع بكمبيوتر، ولا كان عم يحاول يخترع إشي أصلاً. كل اللي كان بده يفهمه: كيف اللغة بتشتغل.
سؤال شكله بريء. من النوع اللي بتحس إنك عارف جوابه، لأنك بتحكي لغة من يوم ما فقت على الدنيا وعمرها ما عطلت معك.
الفكرة البديهية عن اللغة بتقول إن الكلمات ملصقات. العالم مليان أشياء، وإحنا لزقنا على كل إشي اسماً، وخلصت القصة. نظرية مريحة: بتخلي اللغة قاموساً كبيراً، والقاموس مراية للعالم.
سوسير قلب الصورة. العلامة عنده مركّبة من دال — الصورة الصوتية للكلمة — ومدلول، يعني المفهوم اللي بتستحضره. وما في رابط طبيعي بيفرض إن الشجرة لازم اسمها «شجرة»؛ لغة ثانية بتستعمل صوتاً ثانياً وبتعيش عادي. بعدين أضاف الحركة الأهم: قيمة العلامة ما بتيجي منها لحالها، بل من موقعها داخل نظام الفروق.
بالإنجليزي في sheep للحيوان وmutton للحمة. بالفرنسي، كلمة mouton بتغطي الاثنين. الحيوان نفسه ما تغيّر لما عبر المانش؛ شبكة الفروق هي اللي تغيّرت. المعنى مش مجرد خيط مباشر بين كلمة وغرض؛ هو كمان موقع داخل شبكة. زي العملة: قيمة الخمسين مش جاية من الورقة نفسها؛ جاية كمان من مكانها بين العشرة والمية.
وعنده تفريق ثاني بين الـ langue والـ parole: نظام اللغة الاجتماعي المشترك من جهة، وفعل الكلام الفردي من جهة ثانية. إنت ما اخترعت اللغة اللي بتحكيها؛ ورثتها زي اسم العيلة، وما حدا سألك إذا بدك «الشمس» مؤنثة و«القمر» مذكراً. الـ parole هو اللي بطلع من ثمك فعلاً؛ والـ langue هي القواعد والفروق السابقة عليك، اللي بتخلي كلامك مفهوماً لغيرك.
هذا مش معناه، عند سوسير نفسه، إن اللغة سجن بقرر كل إشي ممكن تفكر فيه؛ هاي قفزة رح يعملها ناس بعده. الادعاء الأضيق والأمتن إنك، لما تحكي، بتتحرك داخل نظام اجتماعي سابق عليك. وهاي الفكرة رح تضل تطل علينا مرة بعد مرة.
من جدول العدّ إلى مشكلة الفراغ
قبل ما نوصل لـ word2vec، خلينا نبني أبسط language model ممكن. خذ corpus كبيرة، وكل مرة تمرّ عليك جملة فيها «شرب الولد»، عدّ الكلمة اللي إجت بعدها. ممكن يطلع معك جدول تخيلي زي هذا:
| بعد «شرب الولد…» | العدد | الاحتمال |
|---|---|---|
| الحليب | 50 | 0.50 |
| الماء | 30 | 0.30 |
| العصير | 15 | 0.15 |
| البنزين | 5 | 0.05 |
إذا طلبت من النموذج يكمل، برمي نرداً موزوناً بهذا الجدول. غالباً «الحليب»، أحياناً «الماء»، ونادراً بنعمل حادثة عائلية مع البنزين.
هذا الـ n-gram model بعرف إشي حقيقي: الاستعمالات السابقة. ما حدا علّمه مفهوم الشرب، ولا تركيب الحليب الكيميائي، ولا إن البنزين قرار سيئ للأطفال. شاف سلاسل رموز وعدّها. ومع هيك طلع منه توقع معقول.
بس الجدول عنده مشكلة وحشية. لو شاف «شرب الطفل الحليب» آلاف المرات، وبعدين سألته عن «ارتشف الصبي الحليب»، ممكن يتصرف كأنه أول مرة بشوف الكون. بالنسبة إله، كل خانة جزيرة. «ولد» و«صبي» ما بينهم جسر إلا إذا بنينا الجسر بإيدنا.
بقاموس فيه مئة ألف كلمة، عشر كلمات متتالية إلها نظرياً احتمال. أكيد اللغة الحقيقية ما بتستعملهم بالتساوي، وأكيد smoothing والحيل الإحصائية بتنقذ كثيراً، بس المرض واضح: إذا خزّنت اللغة كجدول، أغلب الجمل الممكنة رح تكون فراغات.
الديمو التالي يبني الجدول فعلياً من corpus ظاهرة أمامك. افتح صف «شرب الولد»، وشوف الأعداد 50 / 30 / 15 / 5 تتحول إلى احتمالات، ثم خلّي النموذج يكتب بفتح صف وراء صف. بالنهاية بدّل «الولد» بـ«الطفل»: المعنى قريب عندك، لكن خانة الـ trigram فاضية. الـ backoff بقدر يرجع لسياق أقصر ويكمل؛ ما بقدر يخترع الجسر بين الكلمتين.
أول قفزة: الكلمة تصير إحداثيات
الحركة العصبية كانت: بدل ما تمثّل كل كلمة كخانة منفصلة، أعطها vector صغيراً من الأرقام، وتعلّم أرقامه مع المهمة. «ولد» مش العمود رقم 81,442 وبس؛ بصير نقطة في فضاء مستمر. لو تحركت شوي من «ولد»، ممكن تلاقي «طفل». الدليل عن واحدة بصير مفيداً للثانية.
هاي الفكرة أقدم من word2vec. سنة 2003 مثلاً، قدّم يوشوا بنجيو وزملاؤه neural probabilistic language model بيتعلّم تمثيل الكلمات واحتمال السلسلة معاً، تحديداً عشان يحارب لعنة الأبعاد اللي بتكسر الجداول. التاريخ الحقيقي مش سلّماً مدرسياً مرتباً: embeddings وneural language models وRNNs إلهم جذور قبل 2013.
طيب ليش كل الطرق بترجع لـ word2vec؟ لأنه شال كثيراً من العدة عن الطاولة وترك الحركة نفسها مكشوفة.
ميكولوف وskip-gram: علّم الكلمة من جيرانها
سنة 2013 نشر توماش ميكولوف، مع كاي تشن وغريغ كورادو وجيفري دين، ورقة قدّمت معماريتين سريعتين لتعلّم word vectors من corpora ضخمة: CBOW وskip-gram.
الفرق بينهم سهل إذا وقفت بنص جملة:
شرب الولد الحليب قرب النافذة
↑
الكلمة الوسطى
CBOW يأخذ الكلمات اللي حوالي الفراغ ويحاول يتوقع الكلمة بالنص. Skip-gram يعمل العكس: يأخذ الكلمة بالنص ويحاول يتوقع جيرانها.
إذا الكلمة الوسطى هي «الحليب» وحجم النافذة 2، التدريب يطلع أزواجاً موجبة مثل:
(الحليب ← شرب)
(الحليب ← الولد)
(الحليب ← قرب)
(الحليب ← النافذة)
السهم هون مش معنى فلسفياً. هو سؤال حسابي صغير: إذا أعطيتك الحليب، ارفع احتمال الولد وشرب وقرب والنافذة في السياق.
لكل كلمة فعلياً vectorان أثناء التدريب: واحد لما تلعب دور الكلمة المركزية، وواحد لما تلعب دور كلمة السياق. نأخذ الضرب النقطي بينهما؛ كل ما كان أكبر، اعتبر النموذج إن الزوج أنسب:
هو vector الكلمة المركزية، و هو vector كلمة السياق، والمقام بيمر على كل كلمات القاموس. هون بتطلع المشكلة: إذا القاموس فيه ملايين الكلمات، مش معقول نعيد جمع ملايين الحدود لكل زوج تدريب.
الحل اللي صار جزءاً من شهرة word2vec هو negative sampling. بدل ما تسأل النموذج عن القاموس كله، أعطه الزوج الحقيقي ومعه كم زوج مزيف:
حقيقي: (الحليب، الولد)
مزيف: (الحليب، مجرّة)
مزيف: (الحليب، برلمان)
مزيف: (الحليب، بركان)
وبدل softmax كاملة، درّبه كمسألة تصنيف: ارفع score الزوج الحقيقي، ونزّل scores الأزواج المسحوبة من توزيع الضجيج:
هاي المعادلة هي قلب الديمو الجاي. مش animation بتتظاهر إنها تدريب. النموذج يتدرّب فعلياً بـ skip-gram وnegative sampling على corpus عربية من 2,240 جملة، ويتعلم vectors من 24 بُعداً. بعدها فقط نضغطها للعرض: PCA لما بدنا نحافظ على الاتجاهات، وt-SNE لما بدنا نشوف الأحياء المحلية. زر التدريب يضيف عشرة آلاف update حقيقية، وعلاقة الملك − الرجل + المرأة تُحسب من الأوزان نفسها.
لاحظ شو صار. ما حدا قال للنموذج إن «حليب» و«عصير» مشروبات، ولا إن «ولد» و«بنت» بشر. الكلمات اللي كانت نافعة لتوقع جيران متشابهين تعرضت لقوى تدريب متشابهة، فتقاربت. والهندسة حملت فروقاً منتظمة كمان: جمع، جنس نحوي، زمن، عاصمة وبلد — حسب اللي موجود فعلاً في الـ corpus.
من هون إجت analogies اشتهر فيها word2vec من نوع:
مش قانوناً لغوياً، ولا مساواة مضمونة، ولا دليلاً إن كل معنى خط مستقيم. النتيجة حساسة للـ corpus، وطريقة التدريب، والـ bias الموجود بالنص، وحتى لطريقة القياس. بس إنها ظهرت أصلاً كان إشي ملفت: علاقة ما حدا كتبها كقاعدة طلعت من مواقع الكلمات واستعمالاتها.
word2vec نفسه مش language model بكتب فقرات. هو عزل حركة مهمة وخلاها واضحة: العلاقات اللغوية ممكن تنضغط لهندسة.
من النقطة إلى السلسلة: الـ RNN تتذكر
بس الـ vector لحاله ما بكفي للنص. ترتيب الكلمات مهم. «الكلب عضّ الرجل» مش نسخة styling من «الرجل عضّ الكلب».
نماذج الـ n-gram حلّت الترتيب بذاكرة قصيرة وثابتة: آخر كلمتين أو ثلاثة أو خمسة. الـ RNN عملت خطوة أبعد. بتقرأ الكلمات — أو الحروف — وحدة وحدة، وبتحمل معها hidden state، ملخصاً متحركاً للي قرأته لحد هلق:
ومن الحالة الجديدة تطلع logits، وبعد softmax يصير عندك توزيع لاحتمال الرمز الجاي:
الفكرة كلها تقريباً في السهم الراجع: يدخل في حساب . نفس الشبكة تنفّذ خطوة وراء خطوة، والذاكرة تتغير مع كل حرف.
في أيار 2015 نشر أندريه كارباثي تدوينة عنوانها The Unreasonable Effectiveness of Recurrent Neural Networks. كانت لحظة breakout ثقافية أكثر منها اختراعاً علمياً: فجأة صار بإمكان أي مهندس يفتح صفحة ويشوف LSTM تتعلم حرفاً حرفاً من مسرحيات شكسبير، وWikipedia، وLaTeX، وحتى Linux source code. النص كان يتماسك محلياً، يقلّد التنسيق، يفتح أقواساً ويسكرها، ويخترع أسماء ومراجع بثقة تسبق اسم «الهلوسة» الصناعي بسنين.
كارباثي نشر كمان char-RNN تعليمية بحوالي مئة سطر من Python/Numpy. النسبة بين بساطة الحلقة وغرابة الناتج كانت هي الصدمة. ما في grammar مكتوبة، وما في parser لشكسبير. فقط: أعطِ الشبكة الحرف السابق، خزن state، توقّع الحرف التالي، عاقب الغلط، وكرر ملايين المرات.
الديمو التالي ينفذ نفس الحلقة الأساسية على مستوى الكلمات: vanilla RNN بحالة مخفية من 24 قيمة، وcorpus عربية من 2,509 جمل. بتقدر تمشي كلمة كلمة وتشوف الـ hidden state واحتمالات الرمز التالي، وتقارن أوزاناً عشوائية مع checkpoints بعد 250 و8,000 جملة تدريب. زر «درّب» يعمل 250 تحديث BPTT وAdaGrad حقيقي داخل المتصفح؛ مش تبديل animation. وفي آخر الجولة خلية LSTM كاملة بتبيّن، على نفس الأسلاك، كيف صارت بوابات النسيان والكتابة والإخراج تخفف عنق الذاكرة.
الـ RNNs المبكرة كانت قادرة تكتب نصاً جيداً بما يكفي يخليك توقف. الجملة بتمشي؛ بعد مسافة، القصة بتنسى وين كانت رايحة. كل الماضي لازم ينضغط في state واحدة، والـ gradients وهي راجعة عبر خطوات كثيرة بتضعف أو تنفجر. LSTM وGRU خففوا المشكلة، ما محوها.
هون لازم نكون دقيقين مع كلمة «scale». الحجم كان مكوّناً ناقصاً، بس مش زرّاً سحرياً كان ممكن نضغطه سنة 1995. كان لازم تنضج العدة اللي بتخلي الحجم قابلاً للاستعمال: data، وGPUs، وoptimization، وsoftware، ومعمارية تتحمل التدريب المتوازي.
الـ transformer سنة 2017 فك الارتباط الإجباري بالتسلسل داخل التدريب. بالـ self-attention، كل token بقدر يرجع مباشرة للأجزاء المهمة من السياق، والحساب عبر المواضع يصير قابلاً للتوازي. بعدها صار ممكناً اختبار رهان جديد بجدية: ماذا يحدث إذا زدنا model size وdata وcompute معاً؟ القياسات اللاحقة أظهرت power-law منتظمة بشكل مزعج: كل ما تكبر الموارد ضمن النطاق المدروس، الـ loss تنزل بطريقة يمكن توقعها.
فـ scale ما اخترع المبدأ. هو رفعه من لعبة صغيرة بتقلّد شكسبير إلى بنية تلتقط قدراً هائلاً من regularities اللغة والعالم المترسبة في النص.
السلم المفاهيمي — لا الجدول الزمني
هلق بنقدر نشوف السلسلة، بشرط ما نكذب على التاريخ ونرتبها كأن كل درجة اخترعت بعد اللي قبلها:
جدول n-gram يعدّ السياق كما ظهر
↓
embedding يجعل التشابه مسافة قابلة للتعلّم
↓
skip-gram يعرّي التعلم من الجوار: كلمة تتنبأ بجيرانها
↓
RNN / LSTM تحمل ملخصاً متحركاً عبر السلسلة
↓
Transformer يفتح وصولاً مباشراً للسياق ويجعل التدريب قابلاً للتوازي
↓
Scale يضغط انتظامات أكثر مما توقعناه في نفس الهدف البسيط
هذا سلم تفسيري، مش timeline. الأوراق والأفكار تداخلت ورجعت واقتبست من بعض. بس معرفياً في خيط واضح: بدل قاموس سري بوصل كل كلمة بغرضها، في علامات تتعلم من علامات أخرى.
من جدول العدّ لأقوى LLM، سؤال التدريب الأساسي ظل من نفس العيلة:
شو الرمز المرجح بعد اللي انكتب؟ الجدول بجاوب بعدّ مباشر. الـ RNN بجاوب من hidden state. والـ transformer بجاوب من شبكة attention بمليارات الـ parameters. الفرق بالقدرة هائل؛ قناة المعرفة أثناء الـ pretraining بعدها نصاً يقود إلى نص.
هون القافية السوسيرية أعمق من word2vec. مش لأن سوسير اخترع الـ algorithm، ولا لأن مهندسي الـ LLMs طبّقوا نظريته. السلسلة العلمية المباشرة بتمر باللسانيات التوزيعية، ونمذجة اللغة، والشبكات العصبية. بس الإبستمولوجيا، بالمعنى الواسع، سوسيرية: النظام بتعلّم العلامة من موقعها بين العلامات، ومن الفروق والانتظامات اللي حواليها. من أبسط جدول لأقوى LLM، في استعمالات بتشرح استعمالات.
وهذا هو الاصطدام الأول: العلاقات وحدها طلّعت أكثر بكثير مما كان متوقعاً.
بس النجاح نفسه بفتح السؤال الجاي. كلمة «بقرة» ممكن تطلع قريبة من «حليب» و«مزرعة» وبعيدة عن «مفاعل نووي». هذا بقلك كثيراً عن مكانها باللغة. هل بقلك كل إشي عن معناها بالعالم؟
هون بيفوت فيتغنشتاين.
الفصل الثالث — اصطدام ثانٍ
سنة 1929، رجع لودفيغ فيتغنشتاين على كامبريدج بعد غياب 16 سنة.
والعودات الأكاديمية بالعادة أهدى إشي بالدنيا: محاضرة ترحيب، شوية تصفيق، شاي بارد. هاي كانت غير شكل. خلال غيابه، حمل مشروع كتابه عالحرب وكتب جزءاً كبيراً منه وهو بالخدمة وعلى الجبهة. الكتاب — «التراكتاتوس» — ادّعى إنه حل الفلسفة. مش ساهم فيها، حلّها.
وطريقة الحل بتستاهل وقفة، لأنك رح تحس فيها رنة مألوفة. اللغة، عند فيتغنشتاين الشاب، مراية: الجملة صورة منطقية لواقعة بالعالم، وحدود لغتي هي حدود عالمي. وكل اللي بوقع برّا حدود المراية — الأخلاق، والجمال، ومعنى الحياة — ما بننحكى فيه أصلاً، بس بنعيشه. الكتاب بسكّر على جملته الأشهر: «ما لا يمكن الكلام عنه، ينبغي السكوت عنه».
هذا مش مشروع لايبنتز نفسه، بس فيه رنة من الحلم القديم: الثقة إن شكلاً منطقياً نظيفاً بقدر يرسم حدود اللي ينقال.
بعدين ترك فيتغنشتاين الفلسفة — منطقياً، شو ضل يعمل؟ — وراح يشتغل معلماً بقرى النمسا. وهلق، سنة 1929، رجع بلا إشي معه غير نية واحدة: يبلّش من الأول.
وعلى مدار العقدين الجايين، أعاد بناء فلسفته وكتب كتاباً ثانياً هاجم فيه كثيراً من الأساس اللي بنى عليه الأول. نفس العقل، نفس الموضوع، وكتاب بقول لجزء كبير من سابقه: لا. وهاي حركة نادرة بتاريخ الأفكار: عادةً الخصوم هم اللي بهدموا نظامك، مش إنت شخصياً. بعد موته، حرّره ونشره اثنان من تلامذته ومنفّذي تركته سنة 1953 بعنوان Philosophical Investigations («تحقيقات فلسفية»).
الهدم بلّش من فكرة المراية نفسها. اللغة، عند فيتغنشتاين الثاني، مش صورة للعالم؛ اللغة صندوق عدة. ومن أشهر حركاته: «معنى الكلمة هو استعمالها في اللغة» — أو، بدقة أكثر، هيك بنشرح اللي بنسميه «معنى» بحالات كثيرة، مش كلها.
كلمة «مي» أداة: بتطلب فيها، وبتحذّر فيها، وبتعمّد فيها، وبتتذمر فيها عَ المي اللي قطعت من الصبح.
سمّى فيتغنشتاين هالأنشطة «ألعاب لغوية» — language games — مش لأنها مزح، بل لأن الكلمة، زي حجر الشطرنج، ما إلها معنى برّا اللعبة اللي بتنلعب فيها. حجر الحصان مش «حصان» لأنه شكله حصان؛ هو حصان لأنه بتحرك بشكل L وضمن قواعد بلعب فيها اثنين قاعدين مقابل بعض.
والألعاب اللغوية بتشتغل جوّا الخلفية المشتركة من فعل واهتمام وعواقب اللي سماها «شكل حياة». «يا الله شو حر» ممكن تكون شكوى، أو طلب إنك تفتح الشباك، أو مجرد فتح حكي مع اللي جنبك بالباص. نفس الكلمات؛ اللعبة هي اللي بتقرر شو صارت تعني هون.
وعنده تجربة ذهنية بتوجع الراس بالطريقة المفيدة، اسمها «الخنفساء بالعلبة». تخيل إن كل واحد منا معه علبة، وجوّاها إشي بسميه «خنفساء». ولا حدا بقدر يطلع بعلبة غيره؛ كل واحد بعرف الخنفساء بس من علبته هو.
هلق اسأل: شو بتعني كلمة «خنفساء» باللغة اللي بنحكيها مع بعض؟ فيتغنشتاين بجاوب: مهما كان جوّا العلب، وحتى لو العلب فاضية، وحتى لو اللي جوّا كل علبة إشي مختلف تماماً — الكلمة بتشتغل بيناتنا عادي. اللي جوّا العلبة «بسقط من الحساب». المعنى ما بعيش بالغرض الخاص المخبى؛ بعيش باللعبة العامة اللي بنلعبها بالكلمة.
النقاش المعتاد عن الذكاء الاصطناعي بسأل: «طيب بس هل النموذج فاهم من جوّا؟» — يعني بسأل شو جوّا العلبة. تجربة الخنفساء ما بتثبت إن النموذج فاهم، وما بتحسم سؤال الوعي. بس بتمنعنا من تعريف الفهم كجوهرة داخلية مستحيل نفحصها.
إحنا بنحكم إن الطفل فهم القسمة لما يقسم بمواقف جديدة، ويصلّح غلطه، ويعرف متى السؤال نفسه خربان. السؤال الهندسي بصير: بأي لعبة النموذج عم يلعب، وشو اللي لازم يقدر يعمله فيها حتى نستعمل كلمة «فهم»؟
بس معايير الاستعمال ما بتلغي الفرق بين قراءة النص والمشاركة بالعالم. النموذج النصي بعرف إن «بقرة» قريبة من «حليب» و«مزرعة» و«جاموس». عندك إنت، الكلمة مربوطة كمان بريحة ووزن وصوت؛ البقرة عن قرب جدار سخن بتنفس، وإنت فجأة بتحس حالك أصغر مما كنت مخطط.
هذا ما ببرهن إن النموذج ما بفهم ولا إشي. بحدد الفرق بين نوع الدليل اللي تدرب عليه ونوع الممارسة اللي أعطت الكلمة وزنها.
بعد سبعين سنة، جيل كامل من المهندسين بنى النماذج اللغوية الضخمة، الـ LLMs. درّبوا نسخها الأساسية على أجزاء هائلة من الأثر المكتوب للبشر: كتب، ومواقع، ومنتديات، وكود، وأسئلة بتنسأل الساعة ثلاثة الفجر وما حدا بعترف فيها الصبح.
والنماذج طلّعت نصاً سلساً، وجاوبت أسئلة، ونجحت بامتحانات، وكتبت كود. وعملت كمان إشي ما حدا طلبه منها: صارت تألّف. بالتفصيل الممل. مراجع بأسماء مؤلفين حقيقيين لكتب ما انكتبت بحياتها. وكل هذا بثقة كاملة، وبنفس النبرة المقنعة بالضبط اللي بتحكي فيها لما تكون معها حق. الصناعة استقرت على اسم مؤدب للظاهرة: الهلوسة، hallucination. والاسم المؤدب بنفع بالـ slides؛ أما «النموذج بألّف عليك وعينه ما بترف»، فهاي ما بتنفع.
هون سهل نتحمس ونقول: فيتغنشتاين شخّص الهلوسة قبل أول GPU. بس لازم نخفف الحماس نص درجة. الهلوسة مش غياب معنى؛ المرجع الملفّق مفهوم جداً، والمشكلة إنه مش موجود. وفيتغنشتاين ما كتب bug report للنماذج اللغوية.
عدسته بس بتكشف إشي مهم: نظام بتعلم من اللغة بقدر يلقط إشارات كثيرة عن الموثوقية، وأحياناً بيفرّق فعلاً. لكن الـ pretraining النصي لحاله ما بيعطي ضمان إن الأكثر احتمالاً لغوياً هو الأصح بالعالم. الـ loss بعاقب token غير اللي إجى بالنص؛ ما بعاقب مباشرةً كتاباً مش موجود، إذا المرجع المألّف راكب عالجملة ركوباً مقنعاً. الصدق والسلاسة مرتبطين بالـ data، بس مش نفس الإشي.
وهون بترجع رنة الحلم القديم: سهولة الخلط بين نظام مرتب من جوّا ونظام صادق عن برّا. لايبنتز، والتراكتاتوس، والـ LLMs مش مشاريع متطابقة، وما في خط تأثير تاريخي مباشر بينها. بس الإغراء نفسه برجع: إذا العلاقات الداخلية اشتغلت بإحكام، مننسى نسأل شو اللي بيربطها بالعالم.
هاي هي الفجوة: ما في شكل حياة عالطرف الثاني من الـ loss function. النص بوصل للنموذج ومعه آثار الحياة، مش عواقبها المباشرة.
ومن هون بتطلع بوصلة هندسية محدودة: إذا التدريب النصي ما عنده قناة يفحص فيها كلامه، أضف قنوات فحص. الـ retrieval، والأدوات، والـ verifiers، والـ feedback من بيئة فعلية، كلها بتعطي النظام إشي يرجعله غير احتمال الـ token الجاي.
هذا ما بحل الوعي، ولا بحوّل حساساً إلى «خبرة». حتى الـ world model ممكن يهلوس فيزيا. لكنه بقرّب المسافة بين الكلام والعاقبة، وهاي مسافة هندسية بنقدر نشتغل عليها.
تحوّل فيتغنشتاين من «التراكتاتوس» لـ«التحقيقات» هو العمود الأخلاقي للجزء الثاني من هالقصة — الرجل اللي بنى أنقى قصر بالحلم القديم، وبعدين طلع منه وهدمه بإيده. رح نمشيه خطوة خطوة لما نوصله.
أما هلق، فبضل سؤال أقدم من فيتغنشتاين نفسه: حتى لو وصلنا اللغة بالحياة، بأي حق بنتوقع إن بكرا يشبه مبارح؟
الفصل الرابع — اصطدام ثالث
الاصطدام الثالث أقدم واحد فيهم، بفرق قرنين تقريباً. ويمكن أعمقهم كمان، لأنه ما بمسك ظاهرة وحدة زي المعنى أو الهلوسة؛ بمسك السؤال اللي تحت التعلّم كله: بأي حق بنعطي الماضي سلطة على المثال الجاي؟
بين 1739 و1740، نشر اسكتلندي بآخر العشرينات اسمه ديفيد هيوم كتاباً بعنوان A Treatise of Human Nature («رسالة في الطبيعة البشرية»). نشره بلا اسم، وقعد يستنى العاصفة. وكان عنده كل الأسباب يتوقع وحدة: الكتاب كان يحفر تحت اليقينيات اللي الفلسفة الأوروبية نايمة عليها.
ولا عاصفة تُذكر. الكتاب أخذ شوية مراجعات، بس السوق استقبله استقبالاً أقرب لدليل تشغيل غسالة منه لقنبلة فلسفية. هيك، على الأقل، رواها هيوم لاحقاً لما قال إنه «وُلد ميتاً من المطبعة».
فقضى سنين يعيد كتابة أفكار الرسالة بكتب أقصر وأمضى، كتب الناس بتقرأها فعلاً. أول refactor كامل بالتاريخ لـ codebase ما حدا كلف خاطره يفتحه. وبهدوء، الحجّة المدفونة بالنسخة الأولى بلّشت تشتغل تحت أساسات الفلسفة الأوروبية.
الحجّة كانت عن الاستقراء. إحنا مقتنعين إن الشمس رح تشرق بكرا. ليش؟ لأنها شرقت كل صبح من أول التاريخ المسجل لليوم. هيوم سأل سؤالاً واحداً: شو اللي بعطيك رخصة تنط من «شرقت كل يوم لحد اليوم» لـ«رح تشرق بكرا»؟
الماضي ما بستلزم المستقبل منطقياً. وإذا قلت إن الطبيعة عادةً منتظمة، استعملت الاستقراء نفسه عشان تبرر الاستقراء: كانت منتظمة، إذن رح تضل منتظمة. لفّيت ورجعت لنقطة البداية.
ومع هيك منعمل النطة. كل يوم. إنت عملتها اليوم الصبح لما حطيت المي على النار ومتأكد سلفاً إنها رح تغلي زي كل مرة. ولازم نعملها: اللي بوقف يستنى برهان قبل ما ياكل، بموت من الجوع. بس خلينا نسميها باسمها: عادة. عادة ملمّعة بالتكرار، لابسة طقم استدلال.
هيوم ما كان فاكر إن هذا بخلي العلم حكي فاضي. بالعكس: كان فاكر إنه بخلي العلم صادق مع حاله أخيراً. المعرفة التجريبية شغالة على رهان. رهان منيح، رهان بكسب أغلب الوقت، بس رهان. والتظاهر بإنها شغالة على إشي أمتن من هيك كان دائماً الإغراء الجاهز للعقلانيين، من أفلاطون وجاي.
هيوم سبق المشروع الرسمي اللي رح يبنيه فريغه وهيلبرت بأكثر من قرن، وما كان من أصحابه. بس السؤال اللي تركه وراه رح يلاحق أي نظام بيتعلم من العالم: شو اللي بضمن إن النمط اللي اشتغل لحد هلق رح يضل شغال بالمثال الجاي؟
بعد ثلاث قرون، جزء كبير من الـ machine learning عايش على رهان قريب من رهان هيوم. بالتدريب، بنتعامل مع الأمثلة كأنها جاية من عملية مستقرة بما يكفي لنتعلّم منها. وبالـ production منراهن إن بكرا رح يضل قريباً بما يكفي من مبارح.
لما الرهان يزبط، النموذج بعمّم، والكل بتباهى بأرقام الـ benchmark. ولما تتغيّر الـ data، ممكن يفشل وهو محافظ على نفس الثقة ونفس ترتيب الـ outputs. الرياضيات بتعطينا ضمانات قوية، بس كل ضمان ببلّش بـ«إذا»: إذا التوزيع مستقر، إذا العيّنة ممثلة، إذا الافتراضات صامدة.
بتساعدنا نقيس الرهان ونراقبه؛ ما بتضمن إن المستقبل ملزم يحترمه. كل مرة الـ production data ما بتشبه اللي صار عليه التدريب، هذا هيوم عم يدق عالباب. الـ training set هو شروق الشمس تبع مبارح. والـ deployment هو بكرا.
الديمو الأخير يعطيك model بسيطاً متدرباً على «مبارح». حرّك slider الـ drift وخلي «بكرا» يبتعد. خط القرار نفسه، وثقة النموذج نفسها؛ اللي تغير هو العالم اللي وصل لعنده.
والصنعة، من غير ما تسمي المشكلة باسمها، بنت حولها عدة كاملة. الـ priors، وافتراضات الـ smoothness، وتقسيمة الـ train/test، والـ cross-validation بكل ركعاتها، والـ monitoring على الـ drift: كلها طرق هندسية لإدارة رهان هيوم.
بتختبره على قطع من الماضي ما استعملتها بالتدريب، وبتراقب متى العالم يبلّش يتغيّر؛ بس ما بتحوّل الماضي لكفالة على المستقبل. هون بالضبط ساكنة مشكلة التعميم.
أما خيط الـ optimization — كيف الآلة بتتحرك جوّا مساحة الغلط — فمنمسكه من جديد بالجزء الثالث.
هلق منرجع على أول القصة، عند أول شرارة بالحلم: عند الزلمة اللي قرر إن الخلاف البشري نفسه لازم يصير حساب.
قراءات أصلية وراء الفصل التقني
- Yoshua Bengio, Réjean Ducharme, Pascal Vincent, Christian Jauvin, A Neural Probabilistic Language Model, 2003.
- Tomas Mikolov et al., Efficient Estimation of Word Representations in Vector Space, 2013.
- Tomas Mikolov et al., Distributed Representations of Words and Phrases and their Compositionality, 2013 — الورقة اللي قدّمت negative sampling.
- Andrej Karpathy, The Unreasonable Effectiveness of Recurrent Neural Networks, 2015.
- Ashish Vaswani et al., Attention Is All You Need, 2017.
- Jared Kaplan et al., Scaling Laws for Neural Language Models, 2020.
Related Posts
وين تروح المحاولة الجاية؟ من الـ bandits للترتيب تحت الضجيج
معظم الخوارزميات بتفترض أرقام واضحة. الحياة بتعطيك إشارات ناقصة وفيها ضجيج. من اختيار مطعم، لترتيب لاعبين من مباريات غير مضمونة، لاختيار top-K كاملة: الفكرة وحدة — وين تصرف محاولتك الجاية؟
من ابن الحرام اللي مسكر الدخلة لابن الحرام اللي مسكر البلد
ثمن الفوضى، توازن ناش، و ليش لسا مصدقين إنه ممكن يكون في خلاص أصلاً؟
أهلاً بأعظم هلوسة
مش فقاعة—الفقاعات بتنفقع وبترجع لطبيعتك. هاي سيمولاكرا. ما في طبيعي ترجعله.