المعلوماتية > عام

رحلة البحث عن الخوارزمية الخارقة - الجزء الأول

استمع على ساوندكلاود 🎧

حاولوا أن تتخيلوا شكل العالم الذي نعيش فيه إذا توقفت برامجُ الحاسوب عن العمل، والتي تديرُ محطات الكهرباء التي تغذي مدننا بالطاقة! لو افترضنا جدلًا أننا استيقظنا في صباح توقفت فيه كل الخوارزمياتِ في عالمنا عن العمل، فقد تكون تلك هي نهاية العالم كما نعرفه!

صحيح أننا لا نستطيع أن نراها، ولكن تأثيراتها علينا واسعةٌ وممتدة على مدار الساعة، وبعضها له تأثيرات مباشرة في صورةِ خدماتٍ نتلقاها مثل شراء وبيع منتجات من الإنترنت، وكثير من هذه التأثيرات غير مباشرة من خلال دراسة وتحليل البيانات الكثيرة التي نتركها من وراءنا والتأثير أو التحكم في تفكيرنا وقراراتنا وأذواقنا. لا تكاد تمرّ ساعةٌ واحدة من ليل أو نهار من دون أن نتعاملَ مع إحدى هذه الخوارزميات (Algorithms) حتى ولو لم نشعر بها. لا يقتصر وجودُها على شبكة الإنترنت أو على الهاتف الذكي الذي نُمسكه بين أيدينا والتطبيقات الكثيرة المُحمّلة عليه أو الحاسوب المحمول الذي نجلس من أمام شاشته في المنزل أو العمل، ولكنها حاضرة بقوة في السيارات ومحطات الكهرباء وإدارة شبكات الاتصالات وقيادة الطائرات والقطارات وتنظيم حركة المرور. وتكادُ تكون جميع الآلات أو الأنظمة الآلية التي نتعامل معهما تحوي نوعًا من هذه الخوارزميات التي تديرُ معظمَ أنشطة وشؤون حياتنا.

الخوارزمية هي طريقةٌ محددة لإنجاز وتنفيذ هدفٍ محدد، وخطواتها وتفاصيلها مرسومة ومحددة بدقة. وما لم تستطع ترجمةَ أي هدف لديك إلى خوارزمية محددة وخطوات متسلسلة وواضحة، فعندها عليك أن تراجعَ هدفك، فقد تكون الصورةُ غيرَ واضحة لديك، أو هناك بعض التفاصيل الغائبة عنك.

وفي مجال علم الحاسوب، فالخوارزمية هي عبارة عن مجموعة من التعليمات والخطوات الواضحة، التي تخبرُ الحاسوبَ ما الذي يجبُ أن ينفذَه، وكيف يستطيعُ تنفيذَه. والطريقة الوحيدة لإخبار الحاسوب بتنفيذ أمر ما، هي أن تكتبَ له خوارزمية، وبها كل التفاصيل التي ستحدد للحاسوب كيف سينفذ ما تريده منه، بدءًا من خوارزمية سهلة لجمع رقمين، وحتى خوارزمية معقدة مثلَ تلك التي تسافرُ بالطائرات عبر الصحاري والمحيطات.

يصنعُ العلماء النظرياتِ التي قد تبدو في نظرِ غير المتخصصين جامدة ولا تتحرك، والمهندسون يصنعون من النظريات أدواتٍ وتطبيقات قادرة على الحركة، وأما من يشتغلون بعلوم الحاسوب فهم يصنعون الخوارزميات، وهي نظريات تمتلكُ الأجنحة التي تتحرك بها، أي أنها نظرية وتطبيق في الوقت نفسه.

هذا مثال لخوارزمية بسيطة حتى تساعدنا على تصور الأمر، وهي خوارزمية لعبة (tic-tac-toe)، وهي لعبةٌ لها رقعة شبيهة برقعة الشطرنج وكل خط مكون من ثلاث مربعات، وتتقدم الخوارزميةُ بالترتيب من خُطوة إلى التي تليها فقط إذا لم تتحقق الخُطوة الحالية.

⦁ إذا كان لديك أو لدى منافسك مربعان مشغولان في أحد الخطوط، فالعب في المربع الفارغ.

⦁ وإلا إذا كانت هناك حركةٌ تجعل خطين لصالحك وكل منهما فيه مربعين مشغولين، فالعب هذه الحركة.

⦁ وإلا إذا كان المربعُ في منتصف رقعة اللعب فارغًا، فالعب فيه.

⦁ وإلا إذا لعب منافسك في أحد أركان رقعة اللعب، فالعب في الركن المقابل له.

⦁ وإلا إذا كان هناك ركنٌ فارغ، فالعب فيه.

⦁ وأخيرا فإذا لم تتحقق أي من الخُطوات السابقة، فعليك باللعب في أي مربع فارغ.

تحتاجُ هذه الخوارزمية، حتى تعملَ بشكل كامل، إلى بعض التفاصيل والخطوات الإضافية، ولكن تصميمَها بهذه الطريقة يضمنُ لها الفوز في كل مرة، مهما كان من يلعب أمامها.

الخطوة التي تلي تصميمَ الخوارزمية، هي ترجمتها بواسطة مُبرمج الحاسوب لإحدى لغات البرمجة التي يفهمها الحاسوب، مثل جافا (JAVA) أو بيثون (Python) أو أي لغة برمجة أخرى. وبعد الانتهاء من البرنامج واختباره، سيكون لدينا خادمًا مطيعًا، يشغله الحاسوب ملايين المرات لينفذ لنا ما جرى تصميم البرنامج لأجله من دون كللٍ أو ملل. وقد يجعل هذا البرنامجُ من اشتركوا في بنائه من أصحاب الملايين أو المليارات، لو أن المشكلةَ التي صُمم البرنامج لأجلها حيوية وموجودة على نطاق واسع وتمس حياة الآلاف والملايين.

عمليةُ ابتكار وتصميم الخوارزميات الجديدة مستمرة ولا تتوقف، وغالبًا لا تبدأ هذه العملية من الصفر، حيث تعتمدُ على خوارزمياتٍ جرى تطويرها من قبل، وفي الوقت نفسه الذي من الممكن أن تكونَ فيه هذه الخوارزميات الجديدة نقطةَ بداية لخوارزميات أخرى جديدة سيجري تطويرها لاحقًا.

الخوارزميات تستطيع أن تتعلم!

لو أن أمامنا مشكلتين مختلفتين وأردنا توظيفَ الحاسوب وقدراته في حلّهما، فسيكون لكل مشكلة الخوارزميات والبرامج الخاصة بها، والتي سيجري تطويرها خصيصًا لأجلها، حتى إن اشتركوا معًا في لغة البرمجة المستخدمة أو نظام قواعد البيانات أو أية أشياء مشتركة أخرى. فلو أننا طوّرنا برنامجًا يُمكّن الحاسوب من لعب الشطرنج ومنافسة أبطال العالم في هذه اللعبة، فإن هذا البرنامجَ سيصبح عديمَ القيمة إذا أردنا استخدامه لقيادة الطائرات بطريقة آلية.

في الخوارزمية العادية، يُحَدّد لها المشكلة التي ستتعامل معها عند صناعتها لأول مرة، ولا تستطيعُ التعامل إلا مع هذه المشكلة المحددة لها. ولكن هناك نوعٌ آخر مختلف من الخوارزميات والبرامج يستطيع الواحد منها أن يقومَ بمهمتين مختلفتين أو أكثر، وقد لا يكون بينهما علاقة أو رابط. كل ما يحتاجه هذا النوع من الخوارزميات أن تُتاح لها البيانات المناسبة- كماً وكيفاً- حتى تستطيعَ التعلم منها ومواجهة المشاكل على اختلافها وتنوعها.

تتفوق الخوارزمياتُ القادرة على التعلم Learning Algorithms (Learners) على الخوارزميات العادية، حيث تستطيعُ كلُّ خورازمية التعلمَ من البيانات المتاحة لها لتصنعَ وتكتب خوارزميات جديدة حسب المشكلات المختلفة التي تواجهها، أي أن الحواسيبَ ستصبحُ قادرةً على كتابة البرامج التي تحتاجها بنفسها من دون تدخل منا. وتمثّلُ الخوارزميات القادرة على التعلم القلبَ النابض لمجال جديد وواعد وهو تعليم الآلات.

تعليم الآلات الإبداع!

علاقةُ الإنسان بالأدوات قديمة جدًا؛ منذ أن بدأ أجدادُنا الأوائل سَنَّ الأحجار ليستعينوا بها في الصيد، حتى وصلنا إلى لأدوات والآلات التي نستخدمُها اليوم من طائرات ومركبات فضاء وهواتف ذكية. ويُعدّ مجالُ تعليم الآلات مجالًا وواعدًا، وهي تقنيةٌ تمتلك القدرةَ على بناء وتطوير نفسها بنفسها، وتستطيع أن تجعلَ الأدوات والآلات والتطبيقات قادرة على تصميم وبناء أدوات وتطبيقات أخرى حسب الحاجة.

الحواسيب هي إحدى أهم الأدوات والآلات التي بناها الإنسان، وهي ليست قادرة على الإبداع؛ حيث أنها من المفترض أن تفعلَ بدقة ما يُطلب منها أن تفعله. ولكي نجعل الحواسيبَ آلات مبدعة، علينا أن نعلّمها وهنا يأتي دور مجال تعليم الآلات (Machine Learning).

يمكنك أن تقرأَ مقدمة في مجال تعلم الآلة من هنا: هنا

تلعب الخوارزمياتُ القادرةُ على التعلّم من البيانات دورَ البطولة في مجال تعليم الآلات، حيث تستطيعُ تحويلَ البيانات المتاحة لها إلى خوارزميات جديدة، وكل خوارزمية مصنوعة وموجّهة لتناسب مشكلةً بعينها، وكل خوارزمية قادرة على التعلم هي رسّامٌ مبدع وكل لوحة تخرج من بين يديه فريدةٌ من نوعها.

عمليةُ البرمجة التقليدية التي تعتمدُ على الخوارزميات العادية هي عمليةٌ أشبهَ بعملية التصنيع، حيث يمرّ البرنامجُ بخطِ إنتاجٍ شبيه بخطوط إنتاج المصانع لبناء أجزائه وتجميعها معًا لتكوين المنتج النهائي. وعلى الجانب الآخر فإن عمليةَ تعليم الآلات التي تعتمدُ على الخوارزميات القادرة على التعلم هي أقربُ لزراعة الأرض بالأشجار والمحاصيل المختلفة؛ حيث الخوارزميات هي البذور والبيانات هي التربة، ومن هذه البذور تنمو أنواعٌ مختلفة من البرامج والخوارزميات، لتستطيعَ التعامل مع مواقف ومشاكل مختلفة، وبأقلِّ تدخّلٍ من خبراء تعليم الآلات. تمامًا كما تنمو البذورُ بأقل تدخل من الفلاح، فهو يراقبُها من بعيد، ويتدخل فقط عند الضرورة.

البياناتُ هي عنصرٌ حيوي وأساسي في عملية تعليم الآلات، فكلما توفرت البيانات- كمّاً وكيفاً- فهناك الكثير لتتعلمه الآلة. أما في غياب البيانات فلا يوجد هناك ما يمكن أن تتعلَمه. وفي حالة توافر كميات هائلة من البيانات والتي بتراكمها تكون البيانات الضخمة (Big Data)، فهناك الكثير والكثير لتتعلمه الآلات، وهو ما صعد في العقد الأخير بتعليم الآلات للواجهة لتواجه وتحلل هذه الكميات الضخمة والهائلة من البيانات التي تتدفّقُ من كل مكان بدون توقف. لو أن تعليمَ الآلات كان منتجًا نحصل عليه من أحد المتاجر، فسنجد في دليل استخدامه جملةً مكتوبة بخط كبير: "فقط غذّه بالبيانات".

إلى أين ستأخذنا الآلات بعد أن نُعلّمها؟

يأتي ذكرُ تعليم الآلات بأسماء مختلفة تشير في النهاية لشيء واحد: التنقيب في البيانات (Data Mining)، اكتشاف المعرفة (Knowledge Discovery)، علم البيانات (Data Science)، التعرف على الأنماط (Pattern Recognition)، وغيرها الكثير والكثير.

تَستخدم «غوغل» تعليمَ الآلات لعرض نتائج البحث المناسبة لك، وكأن محركَ بحث «غوغل» قد جرى تطويره وبناوه لك بشكلٍ خاص. وتستخدمُه أيضًا لحماية صناديق بريدنا من سيل رسائل البريد الإلكتروني المتطفلة. كما تستخدم أمازون تعليمَ الآلات لتقترح عليك الكتبَ المناسبة لك. وتستخدمه «فيس بوك» و«تويتر» لعرض المنشورات التي ستظهر لك، وتستخدمُه بعض الشركات لفرز السير الذاتية للمتقدمين لوظيفة شاغرة، وغير ذلك الكثير من التطبيقات التي تتعلق بكل أمور وشؤون حياتنا، وفي كل يوم تتم الاستعانةُ بتعليم الآلات في مجالات وأماكن جديدة.

ما الذي جعل من علاج السرطان أمرا صعبًا ومكلفًا؟ المشكلة أن السرطان ليس مرضًا واحدًا، ولكنه مجموعةٌ أمراض مختلفة ومتنوعة، ويكاد يكون كل مريض هو حالة خاصة وفريدة، وهو ما جعل من الوصول للمشكلة وعلاجها أمرًا صعبًا. اقرأ من هنا هنا كيف يمكن للبيانات الكبيرة أن تهزمَ السرطان. لو أننا توصلنا لبرنامج قادر على التعلم يستطيع التعامل مع السرطان واختيار خطوات العلاج المناسبة لكل مريض حسب حالته وتاريخه المرضي، فكأننا قدّمنا لكل مريض مركزَ أبحاث متكامل يعمل لصالحه على مدار الساعة حتى يصل للعلاج المناسب له.

يمثل الخبراء في مجال تعليم الآلات نخبةً قليلة العدد من المشتغلين بعلوم الحاسوب، ويتصاعدُ احتياج عالمنا لخبراء في هذا المجال بشكل كبير وخاصة في السنوات الأخيرة. طبقًا لأحد مراكز الأبحاث فإن احتياجَ الولايات المتحدة وحدها من الخبراء في هذا المجال سيصل من 140 ألف إلى 190 ألف خبير بحلول عام 2018.

كل خوارزمية قادرة على التعلم ليست قادرة فقط على حلِّ قائمةٍ طويلة من المشاكل المختلفة والمتنوعة، ولكنها تجعلُ هذه الحلولَ أبسطَ وأكثر قابلية للصيانة والتطوير. فمعظم هذه الخوارزميات القادرة على التعلم من الممكن برمجتها في بضعة مئات أو آلاف من سطور الشيفرات المصدرية (Computer (Code، ليستبدل بها مئات الآلاف أو الملايين من سطور الشيفرات المصدرية التي جرى كتابتها استنادًا على خوارزميات عادية ليست لديها القدرة على التعلم.

يتقدّمُ مجال تعليم الآلات في السنوات القليلة التي مضت بخطواتٍ ثابتة وسريعة اعتمادًا على الخوارزميات والبرامج القادرة على التعلم، وفي كل يوم تزداد تطبيقاتُه المتعلقة بمعظم أنشطة حياتنا. وليس من الحكمة أن نتعاملَ مع أمر بهذه الأهمية كالصندوق الأسود، فليس كل قائد سيارة يحتاج لمعرفة كل تفاصيل عملها من الداخل، ولكنه سيحتاج لمعرفة أن تدويرَ عجلة القيادة يغير اتجاه السيارة، والضغط على المكابح سيدفع السيارة للتوقف. وفي الجزء الثاني من هذا الموضوع، سنستكمل معكم مشاركة المعرفة الأساسية التي لا غنى عنها لإنسان القرن الحادي والعشرين ليستخدم هذه التقنية لصالحه بكفاءة.

المصادر:

هنا

هنا

هنا