في كل يوم نسمع عن تطورات جديدة في الذكاء الاصطناعي Artificial Intelligence، وكيف اصبح بارعا وماهرا بشكل هائل، وكيف أنه يفكر ويقرر ويفهم! وكيف أنه يقترب الان من مستوي البشر بل وكيف أن الذكاء الاصطناعي سيغزو العالم في يوم من الايام! لكن الحقيقة أن الذكاء الاصطناعي هو خرافة أسطورية لا يمكن الحصول عليها بتقنيات الحوسبة الحالية، إن تطوير ذكاء اصطناعي بالشكل الحالي للتقنية يشبه أن يقوم المرء بتسجيل صوته علي الحاسب، ثم يقوم بتشغيل ملف التسجيل ويستمع له، ثم يدعي حينها أن الحاسب يتكلم الآن كالبشر! لقد نسي البشر أغلب أصول الحاسب الأولي! نسوا كيف بنينا هذه الحواسيب فائقة السرعة لأول مرة، وكيف علمناها العد، وكيف سخرناها لتعمل وتخدم أغراضنا!
فلنتذكر معا اذن! فلنتذكر ما نسينا، ولقد نسينا الكثير.
الهدف الأول للانسان كان تعليم الحاسب كيفية العدّ، ولأن الحاسب هو دوائر كهربية صغيرة، تشحن كهربيا، فقد كان من الاسهل والابسط شحن الدوائر كهربيا ثم تعليمه عدّ الدوائر المشحونة، مثل الطفل الذي يتعلم عد الاكواب المملوئة بالماء .. لكن هذا الأمر سيتعقد بما لا يقاس اذا ما وضعنا في الاعتبار حاجتنا لاستعمال عدد لا نهائي من الدوائر لتمثيل عدد لا نهائي من الأرقام .. هل تريد تخزين الرقم 2؟ حسنا تحتاج الي دائرتين مشحونتين، هل تريد تمثيل الرقم 2 مليون؟ حسنا تحتاج الي 2 مليون دائرة مشحونة! وهذا مستحيل بالطبع! وخصوصا في الايام الاولي للحاسب. ولم يكن أمام المصممون الأوائل من حل سوي تعليم الحاسوب شفرة اختصارية تختصر من تمثيل الأرقام .. فكما نختصر نحن البشر كل الأرقام في نظام للعد يبدأ من 0 الي 9، سيفعل الحاسوب المثل. لكن حتي نظام عد البشر لم يكن ليصلح للحاسوب، فهو معقد ومكلف حتي وهو مختصر في 10 عناصر، ان 10 عناصر هو عدد اكبر من قدرات الحاسب الناشئ، لذا اقتضت الحاجة نظاما بعناصر أقل .. و لقد رأي المصممون الأوائل أن أقل نظام للعد يمكن للحاسب أن يحصل عليه هو العد برقمين، أول رقمين: الصفر والواحد .. سيعد الحاسب الآن دوائره الغير مشحونة (الصفر)، مع دوائره المشحونة (الواحد).. وسيدمج ما بينهما في شفرة أو قيمة ثنائية Binary تختصر من التمثيل أكثر وأكثر!
لم يكن أمام احد اي حل آخر، فالعد الثنائي هو أبسط نظام للعد عرفه البشرية، لقد اقتضت الحاجة ذلك، ولا مفر. ان النظام الثنائي هذا سيوفر في استهلاك الذاكرة للمعلومات، فالمعلومات الحقيقية ستحتاج مستويات هائلة العدد من الشحنات والدوائر لتسجيلها، وهذا يزيد من شحن الحاسب ككل ويزيد من استهلاكه للطاقة، اضافة الي عدم وجود نظام ذاكرة يستطيع استيعاب كل هذه الشحنات متفاوتة الشدة من الأصل، فكان الحل الأرخص هو اعتماد قيمتين مختلفتين للشحنات، ثم التبديل والتوفيق بينهما لتكون رموزا لشفرة بسيطة اختصارية. تسجل بسهولة علي أي وسط تخزين، وبأقل تكلفة ممكنة. الآن نبدأ في فهم اول التضحيات التي اضطررنا لتقديمها، منذ البداية الأولي والحاسب يعجز حتي عن العد مثل الانسان. انه محدود في تصميمه وقدرته، لكن تلك لم تكن التضحية الأخيرة ولا الأخيرة، بل تبعها الآلاف.
لكن تلك لم تكن التضحية الأخيرة ولا الأخرة، بل تبعها الآلاف.
بعد أن تعلم الحاسب العد، جاء وقت تعليمه الحساب، انها العملية التي نعرفها جميعا باسم المعالجة Processing، و التي تقوم بها المعالجات Processors، الكل يعرف المعالجات، والكل يعرف انها عقل الحاسب .. والكل يعرف أن المعالجة هي أمر يبرع فيه الحاسب ويبدع فيه بما يفوق طاقة البشر. لكن عملية المعالجة نفسها لا تحوي معالجة ولا حساب، فالمعالجات باختصار هي ادوات تحويل كهربية Conversion "محولات" لا اكثر، مصممة بطريقة ثابتة بحيث تحول الشفرة الثنائية لشئ معين الي شفرة اخري. مثلا تحول قيمة الرقم 3 والرقم 6 الي الرقم 9.. او قيمة اللون الاحمر واللون الاصفر معا الي قيمة اللون البرتقالي. والعملية كلها عملية صماء منحوتة نحتا بالأسلاك والبوابات الكهربية Hardwired، وتخلو من أي علامة علي التفكير والتدبر.
والسبب في هذا ان المعالجات حقيقة ليست الا
عدادات للشحنات الكهربية، عدادات تستقبل الواحدات والاصفار وتراكمهم معا، ثم تلفظهم خارجا بترتيب مختلف، والترتيب يعتمد علي تصميم كل معالج. فتارة يجمع الشحنات معا، وتارة يلغيها كلية، أو يلغي نصفها، أو يضاعفها ..الخ. في النهاية هي دارات كهربية تتحكم في شحنات كهربية بحرية تامة. هكذا "يحسب" المعالج المعلومات، لا تفكير لا ادراك، فقط عداد للشحنات في أبسط عناصرها. الشئ الوحيد الذي يبرع فيه الحاسب هو أنه يحول أو يخلط ملايين الألوان والأصوات والأرقام بسرعات فائقة للغاية في أجزاء صغيرة من الثانية، باختصار هو خلاط بارع للمعلومات اذا شئنا الدقة. لكن حتي هذا الأمر، لا يبرع فيه بهذه القوة، فلكي تصل المعلومة الي المعالج تمر بالبنية التحتية للحاسب، تلك البنية التي تمثل ثلاثة ارباع الحاسب وتستنفذ جلّ وقته في غير ذكاء حقيقي، فهي نواقل واسلاك لنقل الشحنات (المعلومات) للمعالجات، هناك معدل تأخير في النقل وتأخير في استقرار الشحنة، وتشوش للشحنة مع سرعات النقل العالية، إنها كهرباء تتحكم في كهرباء ومعها تأتي كل العيوب الناجمة عن هذه الأنظمة. ان منظومة الذاكرة وحدها مسئولة عن جانب كبير من التاخير والتعطيل للمعالج ، فهي تكرر نفسها عدة مرات بمستويات كثيرة من الذاكرة، فتارة ذاكرة ثابتة Solid/Hard Drives، وذاكرة مؤقتة RAM، وذاكرة مساعدة Cache وذاكرة ادخال Register .. الخ، كل هذا فقط لغرض توصيل المعلومة للمعالج بشكل يلائمه.
السبب الرئيسى ..
لكننا وبعد كل هذا لم نضع يدنا علي السبب الرئيسي لقصور الحاسب بعد! وهو سبب قد يدهش البعض أكثر من كل ما سبق .. والسبب الأساسي في قصور كل التقنيات المعاصرة كونها ببساطة تعمتد علي التطبيقات المنطقية Software Applications، وهي بالأساس مجرد تعليمات يلقنها المطور للحاسب، وهي المعني الحقيقي لكلمة Program، يٌلقن من التلقين أي التعليم. إن المطور يٌعلم الحاسب منطق الحساب الذي سيقوم به، قبل أن يقوم به. لكن الغالبية العظمي من تعليمات أي تطبيق هي مجرد أوامر نسخ Copy للمعلومات من مواقع الذاكرة لمواقع أخري. حتي عملية المعالجة نفسها هي نسخ للمعلومات من ذاكرة ضخمة الي ذاكرة ادخال تسمي مٌسجل Register وهناك تتولي المعالجات "تعديل" معلومات تلك الذاكرة الي معلومات جديدة! ولو قامت جرثومة Virus غدا بحذف أمر النسخ Copy من كل التطبيقات، فان أي تطبيق مهما كانت بساطته أو تعقيده سينهار في غمضة عين.
أوامر النسخ نفسها لها خصوصية ومحدودية شديدة، فهي موجهة لمواقع محددة في الذاكرة، ومواقع معينة في معمارية كل معالج، بحيث أن عملية نقل التطبيق من معالج معين الي معالج آخر مختلف تصبح مستحيلة، فاختلاف المعمارية يعني اختلاف العناوين، ويعني إختلاف أوامر النسخ، ويعني أن كل تطبيق سيعمل فقط علي المعالج الذي صمم له!
وتلك العقبة الأساسية في أية عملية لتوليد منطقيات آلية Automatic Software Logic من الحاسب نفسه، فالحاسب لا يدرك تركيب معماريته بشكل حقيقي، لا يعرف العناوين ولا يعرف كيف يخاطب أجزاؤه المختلفة، لهذا هو لا يعرف كيفية ابتكار تطبيقات جديدة، أو تغيير تطبيقاته الحالية، أو حتي كيفية اعادة كتابتها. يحتاج في كل هذا الي مصمم أو ملقن Programmer، وبدونه سيرتكب الحاسب أخطاء هائلة ويدمر التطبيقات والمعلومات كلها.
لا ذكاء في أي من هذا، ولا في كل هذا. فلا يمكن استخلاص الذكاء من الاختصار، او التوفير، او التكرار الأصم. ان الحاسب أشبه بدابة تحفظ جدولا ضخما او صحيفة sheet هائلة للمعلومات، ثم بحسب الطلب تسترجع فحواهم بقدرتها الهائلة علي الحفظ.
والاسوا من كل هذا اننا لا نستطيع تشغيل الحاسب علي نحو متواصل او مستمر، بل يجب ان يعمل باسلوب متردد، يعمل في لحظة ثم يقف في اللحظة التي تليها، ليعاود العمل من جديد بعدها مباشرة، وهكذا دواليك. لقد صار هذا مبدأ محوريا لا يمكن الاستغناء عنه.
والحاسب يفعل هذا علي دقات ساعة Clock منتظمة سريعة النبض، كل دقة تحدد متي يبدا عمله ومتي ينتهي، والسبب في هذا ان اجزاء الحاسب متفاوتتة السرعة، بعضها يعمل ابطا من البعض الاخر، لابد من وقفات في عمل المعالجات حتي تستطيع الأجزاء البطيئة انهاء عملها وحتي يكون ارسال واستقبال البيانات محكوما في وقت محدد .. لابد من منظم يضع في حسبانه سرعة ابطا الاجزاء ليلزم بها باقي الاجزاء الاخري، حتي لا تتداخل المعلومات معا، او تخرج معلومات قبل اوانها، هذا المنظم هو الساعة نفسها. والساعة هنا هي التردد الذي يعمل به الحاسب، الساعة هي كل ال MHz و ال GHz التي تصدعنا الشركات بها، وسرعتها تساوي سرعة ابطا جزء في الحاسب. ولولا هذه المواءمة، لما اضطررنا للقلق بشان التردد. لكننا نقلق ونقلق بشدة ايضا، اننا نريد من المعالجات ان تعمل بتردد اكبر واكبر في كل جيل.
لكن المعالجات تفعل هذا بالفعل، انها تتطور وتتعقد في كل جيل، ويقول الحالمون انها قد صارت أذكي واكثر براعة! حسنا ربما كان هذا صحيحا علي المستوي الهندسي البحت، لكنه ليس صحيحا علي مستوي الذكاء والفطنة. إن تطور المعالجات يمكن اختصاره في جملة واحدة للاسف: كيف احشر معلومات اكثر في هذا العداد المسمي بالمعالج؟ نعم! مليارات الدوائر والأسلاك والتعليمات والتصميمات لكي يحل الحاسب مسألة يظن أي عاقل أنها حسمت منذ زمن بعيد! في البداية كانت المعالجات أُحادية، أي تحوي وحدة حساب واحدة، ثم قررنا أن هذا غير كافي، فليكن للمعالج وحدتين حساب بل فيلكن له أكثر من اثنتين، ثم قررنا أن هذا سيحتاج تجزئة/تقسيم للمعلومات حتي تتوزع جيدا علي وحدات الحساب، ثم قررنا ان مجرد زيادة العدد هو أمر غير كاف، وسنحتاج وحدات حساب أكبر حجما وأضخم، وسنحتاج أيضا لاستقبال كم زائد من المعلومات وسنحتاج لاكتساب القدرة علي تغيير ترتيب استقبال المعلومات بما يتناسب مع قوة المعالج، ثم أصبح كل هذا غير كافيا، فقررنا استخدام أكثر من معالج واحد، سنلصق معالجين أو أكثر معا، لنحصل علي معالجات متعددة! ثم قررنا أن هذا غير كاف أيضا، فسنحتاج أكثر من معالج متعدد علي منصة واحدة، أي تعدد المعالجات المتعددة!
باختصار كان كل التطوير الذي خضعت له المعالجات محصورا في زيادة عدد وحدات الحساب أو حجمها، مع ما يصاحبه هذا من تعقيد في التصميم واستهلاك الطاقة، إن الفقرة السابقة تلخص نصف دستة من مصطلحات المعالجات المركزية CPUs علي مدار نصف قرن، فالآن اللوحة الأم الواحدة تحوي معالجين كاملين Multi Processor لكل منهم ذاكرته الخاصة، كل معالج منهم يحوي عدد من المعالجات الأصغر تسمي أنوية Cores أي أن كل معالج متعدد الأنوية Multi Core، وكل نواة Core تحوي وحدات حساب مفردة Scalar ووحدات حساب متعددة Super Scalar، ووحدات حساب ضخمة SIMD أو VLIW، وكل نواة تستقبل بيانات متعددة HyperThreading أو Simultaneous MultiThreading و تجزئها Pipelining وترتبها بما يتوافق مع قدراتها Out Of Order Execution.
والنبيه يلاحظ أن الأمر كله مسميات مختلفة للتعدد، بدءا من أسفل: البيانات ثم الوحدات ثم الأنوية ثم المعالجات نفسها. لا ذكاء أو عبقرية في أي من هذا!
هل هو الذكاء الاصطناعي بالفعل ؟!
الآن ندرك كيف يمتزج هذا كله ليصنع وهم أن الحاسب يفكر ويقرر، وهو لا هذا ولا ذاك، إن الذكاء الذي لا يعرف العد مثل الانسان، ويحتاج للقوالب المنحوتة كي يحسب، ويحتاج للعمل والتوقف علي دقات ساعة، ويحتاج لانظمة نقل وارسال أضخم من المعالج ثلاثة مرات ويحتاج لعمل مواءمات في كل خطوة .. ان هذا الذكاء المزعوم يفتقر لأبسط صفات الذكاء الطبيعي. ان الانظمة الحيوية التي يشتق منها ذكاء الانسان لا تحتاج لتردد او دقات ساعة لتعمل باحكام، ولا تضيع جل وقتها في تعليمات نسخ وازمان تاخير في النقل والذاكرة، ولا تحتاج للتعدد في في كل مستوي ممكن و لا تعمل باختصارات رقمية، بل تعالج معلومات تماثلية Analogue كاملة التعقيد، و بسرعات كمومية Quantum فائقة ليس بامكان اي حاسوب يعتمد علي التردد ان يلحق بها. ان الانسان يبصر من خلال استقباله للضوء علي هيئته الحقيقية، بوهيجه وبشدته ولونه الطبيعي، ويحول كل هذا لاشارات كهربية متغيرة الشدة والتردد والكم، يستقبلها المخ، ويقوم بعدها والتعامل معها، المخ يخزن معلومات حقيقية كاملة التعقيد، لا مجرد شحنات صغيرة مختصرة. وفوق كل هذا، فان المخ يدرك ماهية وطبيعة هذه المعلومات، يدركها ويشعر بها ويفهمها، بطريقة لم نسبر أغوارها نحن بعد، بل ان المخ يفعل ما يفوق كل ذلك، فهو يرتب المعلومات بداخله طبقا لفهمه، يرتبها ويربطها معا ويستخلص منها معلومات جديدة دون تلقين او تعليم، ان كل خلايا المخ تمتلك اذرع تتصل بها مع باقي الخلايا الاخري، ثم تنفصل وترتبط مع خلايا اخري، وهكذا باستمرار في عملية حيوية نشطة، من التشابك وفك التشابك تمتلك حياة بذاتها، لم نفهمها بعد، وليست مجرد اسلاك ومسارت منحوتة جامدة تخلو من اي حركة. ويترتب علي كل هذا، ان الانسان يفكر حقا، ويشعر بالنقص ويسعي للكمال، ويقرر ويبدع ما هو جديد، ويبتكر، وهذا هو الذكاء الحقيقي.
ولكي نحصل علي مستوي مقبول من الذكاء الاصطناعي، فان الحاسب يحتاج ان يقتبس ولو صفحة من كل ماسبق، يحتاج ان يتخلى عن الاختصار والتوفير الذين يزيدا من اخطاءه واعطاله، يحتاج أن يمتلك القدرة الذاتية علي تغيير التطبيقات بنفسه، أو كتابة تطبيقات جديدة كليا بناء علي ما تعلمه، يحتاج انظمة ذاكرة تخزن معلومات تماثلية اصلية، فليسجل الحاسب موجة الضوء الخاصة باللون الأحمر بدلا من قيمة اللون الأحمر الثنائية، نحتاج عقلا الكترونيا حقيقيا، يشعر ويدرك وليس انظمة تسجيل واسترجاع مفخمة. باختصار، نحتاج لتصفير مفهومنا للحاسب، والبدء بتصور جديد كليا، نحتاج لاعادة النظر في تصميم الحاسب التماثلي Analogue Computer بتصور عصري وتقنيات معقدة حديثة، إن الأمر سيكون مكلفا وشاقا بلا شك، أن نُلقي خلاصة عقود من تطور الحاسب الرقمي Digital Computer لصالح حواسيب جديدة كليا وأن نعيد الكرة لثالث مرة ..
لن يحدث هذا في يوم وليلة، لكنه مجهود يستحق، هذا اذا كنا جادين في سعينا لذكاء اصطناعي قد يفكر ويقرر وليس -للمرة الثانية- مجرد الات استرجاع مُفَخّمة.