الطبيعة خير معلم
محمد زهران
آخر تحديث:
الجمعة 12 يوليه 2024 - 8:15 م
بتوقيت القاهرة
نحن فى عصر تسيطر عليه التكنولوجيا، إذا نظرت حولك ستجد أن جميع جوانب حياتك تتحكم فيها التكنولوجيا سواء أردت ذلك أم لا. التكنولوجيا فى النهاية هى أداة لحل المشكلات الحياتية التى يواجهها البشر. فى القلب من هذه الثورة التكنولوجية نجد أجهزة الكمبيوتر بمختلف أشكالها (تلك التى فى ساعتك أو تليفونك وحتى الأجهزة العملاقة التى تدير مواقع التواصل الاجتماعى). هذا معناه أن جهاز الكمبيوتر هو أداة نستخدمها لحل مشكلاتنا. لكن كيف «نطوع» تلك الأداة لإيجاد الحل؟ هذا يحدث بطريقتين: بناء أجهزة كمبيوتر مصممة لحل أنواع معينة من المشكلات وتصميم برمجيات لحل تلك المشكلات. مقالنا اليوم يتحدث عن الطريقة الثانية. إذا أردت استخدام الكمبيوتر لتصميم مركب كيميائى يصلح لأن يكون مصلا ضد مرض معين أو لتصميم سيارة تستهلك وقودا أقل إلخ فكيف تفعل ذلك؟ هناك خطوتان لذلك:
• تصميم خوارزم (algorithm) يصف خطوات الحل. هذه الخطوة لا تستلزم استخدام لغات برمجة. يمكن لمصمم الخوارزم استخدام اللغة الإنجليزية العادية (أو أية لغة يفضلها) أو الرسم أو أية طريقة أخرى يفضلها المصمم.
• تحويل هذا الخوارزم إلى لغة برمجة. هذه الخطوة تحتاج مبرمجين.
الخطوة الأولى أصعب من الثانية لأنه قد توجد عدة حلول لنفس المشكلة فكيف سيختار المصمم من بينها؟ وقد يكون إيجاد حل للمشكلة صعبا فكيف سيتصرف مصمم الخوارزميات؟ جميع الجامعات فى العالم التى لديها تخصص هندسة الحاسبات أو علوم الحاسب لديها مادة دراسية سواء فى مرحلة البكالوريوس أو الدراسات العليا عن تصميم الخوارزميات. فى مقال اليوم سنتحدث عن نوع مهم جدا من طريقة التفكير التى تساعد على تصميم خوارزميات وبالتالى برمجيات لحل المشاكل، هذه الطريقة هى: النظر إلى الطبيعة حولنا واستنباط الحلول منها. كيف نفعل ذلك؟ سنرى عدة أمثلة فى مقال اليوم.
...
لنتخيل مثلا أننا نريد استخدام الكمبيوتر لتصميم جسم طائرة، ليس من السهل كتابة خطوات لذلك، مهندس الطيران يستخدم خبرته ومهارته لإيجاد تصميم ثم تأتى مرحلة الحسابات للتأكد أن التصميم صحيح ويحقق الهدف. كيف نأتى بتصميم جيد؟ إذا نظرنا إلى الطبيعة حولنا سنجد أن الأطفال تولد وقد ورثت بعض صفات من الأب والأم وأيضا بعض الصفات الجديدة فى بعض الأحيان التى تعتبر طفرات، فلماذا لا نستفيد من ذلك؟ يمكننا تصميم خوارزم يعمل كالآتى (نأخذ تصميم جسم الطائرة كمثال):
• انتاج تصميمات عديدة دون النظر إلى كفاءتها
• تزاوج كل تصميمين اثنين أى توليد تصميم ثالث يجمع نقاط القوة فى التصميمين.
• نتخلص من التصميمات الأقل كفاءة
• نعيد عملية «التزاوج» بين التصميمات الباقية حتى نجد تصميما يحقق الهدف.
هذه النوعية من الخوارزميات يُطلق عليها الخوارزميات الجينية (genetic algorithms).
...
عندما ننظر إلى النمل أو النحل أو الأسماك سنجد أن هذه الكائنات تتحرك كمجموعة وتتخذ القرارات كمجموعة، كل فرد فى هذه المجموعة يجمع معلومة صغيرة ويمررها لباقى الأفراد القريبين منه ثم يتخذ قرارا تبعا للمعلومات المتوفرة له. طبعا الموضوع أعقد من ذلك لكن هذا التوصيف يكفى. هل يمكننا دراسة ذلك وتصميم برمجيات تشبهه؟ البرمجيات فى السيارات ذاتية القيادة يمكنها الاستفادة من ذلك. تخيل أن هناك سيارات عديدة فى الشارع وكلها ذاتية القيادة، كل سيارة منها تتبادل معلومات مع السيارات المحيطة عن حالة الطريق والجو الاختناق المرورى إلخ ثم تتخذ القرار تبعا لذلك. هذا النوع من الخوارزميات يطلق عليها «ذكاء السرب» أو (swarm intelligence).
...
الذكاء الاصطناعى (موضة هذا العصر) جاء أيضا من النظر إلى الطبيعة. عندما نتحدث عن الذكاء الاصطناعى فى أيامنا هذه فإننا نعنى فرعا واحدا أساسيا من الذكاء الاصطناعى وهو ما يسمى بتعليم الآلة (machine learning) وهو فى أغلبه يحاول أن يحاكى الخلايا العصبية فى المخ واتصالاتها ببعضها وهو ما نطلق عليه الشبكات العصبية. يجب أن ننبه هنا أننا نحاول أن نتعلم من الطبيعة لا أن نحاكيها بالضبط، فنحن ما زلنا لا نعلم يقينا كيف يعمل المخ، وأيضا ننحن كبشر ننسى أو نتذكر بعض الأشياء بالتقريب فهل نريد خوارزميات وبالتالى برمجيات بنفس الصفات؟ بالقطع لا. إذا فنحن نتعلم بعض «الحيل» من الطبيعة فقط.
...
ذكرنا أن هناك مادة دراسية أساسية فى كليات الهندسة وعلوم الحاسب لتصميم الخوارزميات وطبعا البرمجيات، لكن القليل جدا من الجامعات على مستوى العالم تقوم بتدريس مادة قائمة بذاتها عن التعلم من الطبيعة (Nature Inspired Computing) فهل نأخذ الريادة فى ذلك؟ هذه المادة الدراسية تدرس ليس فقط ما تعلمناه من الطبيعة، ولكن أيضا كيف نجد ما نريد أن نتعلمه من الطبيعة عندما نواجه مشكلة نرغب فى حلها. أيضا الباب مفتوح على مصراعيه فى البحث العلمى المستوحى من الطبيعة، فمثلا:
• إذا نظرنا إلى الكيفية التى يحارب بها الجسم الميكروبات فهل يمكن إيجاد وسيلة لتصميم برمجيات تحافظ على جهاز الكمبيوتر من الاختراق ومن الفيروسات؟
• إذا نظرنا إلى الكيفية التى تتعاون بها الطيور عندما تسافر معا هل يمكن أن نتعلم كيف نجعل الطائرات المسيرة تتعاون معا؟
• إذا نظرنا إلى الوسيلة التى تتطور بها الفيروسات لتقاوم الأمصال هل يمكن تصميم برمجيات تطور من نفسها لتصبح أكثر أمنا وكفاءة؟
هذه فقط بعض الأمثلة وهناك مجموعات بحثية تبحث فيها وأكثر لكن الباب ما زال مفتوحا لباحثينا للنظر والتفكر فى كتاب الكون حولنا واستنباط أفكار جديدة لحل المشكلات الحياتية حولنا باستخدام الكمبيوتر.