الذكاء الصنعي والتعلم العميق من الداخل.. دليلٌ للجميع

0 405

يحتلّ كلّ من الذّكاء الصّنعيّ (Artificial Intelligence: AI) والتعلّم الآليّ (Machine Learning: ML) موضعًا ساخنًا للنقاشِ والدّراسةِ في الأوساطِ العلميّةِ، إذْ يُمكن أن يعترضك مُصطلح “الذّكاء الصّنعيّ” كلّ يوم، أو تسمع عن مطوّرين شغوفين أنّهم يريدون تعلّم أحد تقنياتِه الجديدة، أو عن مديري شركاتٍ أنّهم سيطبّقونه لتحسين خدماتهم. لكنّ- غالبًا- الكثيرٌ من هؤلاءِ الأشخاصِ لا يَعوْنَ هذا المصطلحَ بالضّبطِ!

سنعرض في هذا المقالِ أساسياتِ كلّ من الذكاء الصّنعيّ والتعلّم الآليّ. وبمجرّد إنهاء القراءة، ستكون على درايةٍ بالمفهومينِ من الدّاخلِ، وستكون قد تعرّفت على آليةِ عملِ “التعلّم العميق Deep Learning” الذي يُعدّ أكثر أنواع التعلّم الآليّ شيوعًا.

والخبر الألمعُ هُنا هو خلوّ ما سنقدّمه من تعقيداتِ المعادلاتِ والمفاهيمِ الرياضيّة التي ترتكزُ عليها الخوارزمياتُ والتقنياتُ الذّكيّة، وانسيابُ الأفكار ببساطةٍ وسلاسةٍ، هيّا بنا فلنبدأ.

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

إقرأ أيضا: هل يمكن للآلة أن تفكر؟

ما بين الذّكاءِ الصّنعيّ و التعلِّم الآليّ

الذكاءُالصّنعيّ (Artificial Intelligence)

هو فرعٌ من علمِ الحاسبِ، يختصُّ بتصميمِ أنظمةٍ حاسوبيّةٍ ذكيّةٍ  تُحاكي السلوكَ الذكيَّ للإنسانِ مثل فهمِ اللّغاتِ الطبيعيّةِ، والتعلّمِ، والتفكيرِ، والتخطيطِ، وحلّ المشكلاتِ والاستدلالِ المنطقيّ، وغيرها.

ولطالما كان محطّ جدلٍ؛ إذْ يُعتبر السؤال “هل يمكن للآلة أن تفكّر؟” محطّ اهتمام فلاسفة، وعلماء، ومهندسين. وفي مقالٍ مشهور لأحد مؤسسي علوم الحاسب “آلان تيورينغ” أعاد قولبة ذلك السؤال ضمن اختبار تجريبي أُطلق عليه “اختبار تيورينغ”، ويُعتمد حتى الآن في تحديد ما إذا كانت الآلة ذكيّة (قادرة على التفكير كالبشر) حقًّا أم لا.

إقرأ أيضا: عُلماء التشفير: عمل تحت الظلام!

في بداياتِ قيامِ الأبحاثِ المتعلّقة بالذّكاء الصّنعيّ، حاول الباحثون محاكاةَ الذكاءِ البشريّ ضمن سياقٍ محدّدٍ، مثل لعْبِ لعبةٍ معيّنةٍ (يطلقُ عليها الألعاب الذكيّة كلعبة 8-puzzle، ولعبة x-o، وغيرها). وكان الجزء المهم بشكل عام هو فهمُ طرقِ تمثيلِ المعرفةِ وترابُطِها ضمنَ النّظام لكي يتمّ إجراءُ نماذجَ حاسوبيةٍ، ولإنجازِ مثل هذهِ النّظم، أُدخِلَ عددٌ كبيرٌ من القواعدِ التي يحتاجُ الحاسوب أخذها بعينِ الاعتبارِ، بحيث توجدُ قائمةٌ محدّدةٌ بالأفعالِ المُمكنةِ، وتُتخذُ القرارات بالاعتمادِ على تلكَ القواعدِ. وتُسمّى هذه النّظم “النّظمُ المعتمدةُ على المعرفةِ Knowledge Based System”، حيث توجدُ قاعدةُ معرفةٍ تُستخرجُ المعلوماتُ منها، ويُبنى النّظام عليها.

التعلّم الآليّ (Machine Learning)

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

ويمكن تعريف التعلّم الآليّ، حسب الرائد في هذا المجال آرثر صاموئيل Arthur Samuel، أنّه حقل الدراسة الذي يتيح للحواسيب القدرة على التعلّم (أو التدرّب) باستخدام مجموعات كبيرة من البيانات (التي تُسمّى مجموعات التدريب)، من دون الحاجة إلى برمجة صريحة. تستثمر تقنيات التعلّم الآليّ قوة المعالجة للحواسيب الحديثة، التي يمكنها معالجة هذه الكميّات الضخمة من البيانات.

تُقسم طرق التعلّم الآليّ، بشكلٍ أساسيٍّ، إلى:

تعلّم بإشراف معلّم (Supervised learning)

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

من الأمثلة على هذه الطريقة في التعلّم:

  • مسائل التنبؤ Prediction، مثل التنبؤ بالطقس (Weather- predicting): بالاعتماد على مجموعة تدريب تحتوي على بيانات دخل تخصّ، مثلاً، الضغط، والرطوبة، وسرعة الرياح، مع خرج متوقّع هو درجة الحرارة. طبعًا لا تكون هذه البيانات اعتباطيّة، وإنّما تعتمد على قياسات حقيقية جرت بالفعل؛ أي على سبيل المثال، إذا كانت قيمة الضغط p1، وقيمة الرطوبة h1، وقيمة سرعة الرياح w1، وقيْسَت قيمة درجة الحرارة وكانت T1. وإذا كانت قيمة الضغط p2، وقيمة الرطوبة  h2، وقيمة سرعة الرياح w2، وقيْسَت قيمة درجة الحرارة وكانت T2، وهكذا إلى أن نصل إلى n عيّنة (حيث n  عدد عيّنات التدريب). حيث يكون المطلوب تعلّم كيفية ربط الدّخل مع الخرج ليصبح بالإمكان التعميم على عيناتٍ غير موجودةٍ في مجموعة التدريب (أي التنبؤ بالخرْج من أجل أيّ دخْلٍ جديد). ففي مثالنا، عندما تُعطى قيمُ الضغط p، والرطوبة h، وسرعة الرياح w، يقوم النّظام بالتنبؤ بدرجة الحرارة المتوقّعة T.
  • مسائل التصنيف Classification، من مثل تصنيف الكتبِ (علمية، أو تاريخية، أو سيرة ذاتية، أو روايات… ) بالاعتماد على مجموعاتِ تدريبٍ تتضمن أسماء كتبٍ وتصنيفاتها مثلًا، أو تصنيف رسائل البريد الإلكتروني إلى مهمةٍ أو غير مهمّةٍ، وغيرها من الأمثلة.

تعلّم بدون إشراف معلّم (Unsupervised learning)

في هذه الطريقة يُدرَب الحاسوب باستخدام مجموعة تدريب، لكن على عكس الطريقة السابقة، دخْل بدون معرفة الخرْج مسبقًا. يتمثّل التدريب هُنا بإجراء تصنيفاتٍ منطقيةٍ على البيانات، واستنتاج علاقاتٍ تربط فيما بينها. باختصار، عَنْقَدَة (تجميع Clustring) بيانات الدخل ضمن مجموعاتٍ غير معروفةٍ مسبقًا.

ولفهْمِ الفكرة أكثر، سنأخذ الأمثلة التالية على هذه الطريقة في التعلّم:

  • التنبؤ بالسلوك على مواقع التجارة الإلكترونية، لكنه ليس كالتنبؤ بإشراف معلّم، يتم هنا تجميع المستخدمين في مجموعاتٍ تبعًا لسلوكيات التصفح، والتقييمات، وعمليات الشراء. ومن ثمّ التنبؤ بالأخبار والإعلانات التي تهمّهم، واقتراحها عليهم.

حان الأوان للدخول في صلب الموضوع..

التعلّم العميق (Deep Learning)

أصبحتَ الآن جاهزًا لتفهمَ بسلاسة، ماذا يعني التعلّم العميق، وكيفَ يعمل.

التعلّم العميق هو أحد طرقِ التعلّم الآليّ، لتدريب النّظام الذكي حتى يصبح قادرًا على التنبؤ بالخرْج من أجل مجموعةِ دخْلٍ معيّنةٍ، ويتمّ ذلك بإحدى طريقتي التعلّم آنفتي الذكر(التعلّم بإشراف معلّم، أو بدون إشراف معلّم).

سوف نتعلّم كيفية عمل التعلّم العميق من خلال بناء تطبيق يقوم بتقدير سعر تذكرة الطائرة (Price)، علمًا أنه سيتم التدريب باستخدام طريقة التعلم بإشراف معلّم. حيث يستخدم التطبيق من أجل التنبؤ معلومات الدخل التالية (لتبسيط العملية سنستثني تذكرة الإياب):

  • المطار الذي أقلعت منه الطائرة (Origin Airport).
  • المطار الذي تتجه إليه الطائرةُ (Destination Airport).
  • تاريخ المغادرة (Departure Date).
  • شركة الطيران (Airline).

الشبكات العصبونية الصّنعيّة (Artificial Neural Networks: ANN)

فلنلقِ نظرةً أعمق على دماغ تطبيقنا الذكيّ.

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

تُوزَّع العصبونات على ثلاث مجموعات (هي عبارة عن ثلاثِ طبقاتٍ مختلفةٍ، لكلٍّ منها دوره في المعالجة)، كما الآتي:

  • طبقة الدخل (Input Layer).
  • الطبقة/الطبقات المخفيّة (Hidden Layer(s)).
  • طبقة الخرج (Output Layer).

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

أحد التحديات عند اختيار التدريب باستخدام الشبكات العصبونية هو تحديد عدد الطبقات المخفية المناسبة للتطبيق، بالإضافة على عدد العصبونات ضمن كل طبقة، لأن هذا يؤثر على الأداء (سرعة التدريب)، والدقّة.

وهُنا مربط الفرس، “عميق” في مصطلح التعلّم العميق تشير إلى استخدام أكثر من طبقة مخفيّة واحدة.

  • طبقة الخرج: تُعطي خرْج الشبكة، الذي يكون موافقًا لحالة الدخل المطبّق، كحالة الطقس المُتنبَأ به (صحو/ ماطر)، أو الحالة الصحية لمريض (سليم/ مريض). وفي حالتنا هذه، تردّ السعر المتوقع.

ماهي العملات المشفرة؟

الآن، كيف يُنجَز التنبؤ بالسعر؟

هُنا يبدأ الاستعراض السحري لعضلات “التعلّم العميق”.

أشرنا منذ قليل إلى وجود وصلات بين عصبونات كلّ طبقتين متتاليتين، كلُّ وصلة مرفقة بوزن (weight)، يمكن أن تتخيّلها كوصلات العصبون اللّيفية في الشبكة العصبيّة الحيّة. تعمل هذه الأوزان على زيادة (تهييج excitatory)، أو إنقاص (تخميد inhibitory) إشارات دخل العصبون (الإشارات الداخلة إلى العصبون). أي، بكلمات أخرى، تحدّد أهميّة قيم الدخل الواصلة إلى العصبون. أما بالنسبّة إلى تهيئة الأوزان (وضع قيم ابتدائية لها) فتتمّ عشوائيًّا.

عند توقّع سعر تذكرة الطائرة، يكون “تاريخ المغادرة” أحد العوامل الأكثر تأثيرًا على تقدير السعر، نقول أنه ذو درجةِ أهميةٍ كبيرة. لهذا، تحمل وصلات عصبونات “تاريخ المغادرة” وزنًا أكبر.

يمكن أن تكون قيم الأوزان حقيقيّة أو ثنائية (0،1)، لكنها تفرض عادةً حقيقيّةً موجبةً للتهييج، وسالبةً للتخميد.

قلنا منذ قليل أنه ضمن الطبقة المخفيّة، تُجرى حساباتٌ رياضيةٌ على دخْل عصبونات الطبقة. وبالتالي، لكلّ عصبونٍ تابعُ تفعيل، هذه التوابع صعبة الفهم بدون أساس رياضي متين. ببساطة أحد الأهداف المرجوّة منه هو إعطاء خرج العصبون (Standardize).

بمجرّد أن تمرّ بيانات الدخل عبر كلّ طبقات الشبكة العصبونية، نكون قد حصلنا على الخرج الموافق لهذه البيانات عبر طبقة الخرج.

ما من تعقيدٍ حتى الآن، أليس كذلك؟

إذًا فلنواصل الطريق نحو تدريب الشبكة العصبونية. لكن قبل ذلك سنلخّص التعابير الأساسية التي تتميز بها الشبكات العصبونية الصّنعيّة: أولًا، نموذج الوصل بين العصبونات (يُسمّى البنية Architecture). وثانيًا، طريقة تعيين الأوزان المرافقة للوصلات (يُسمّى التدريب training، أو التعليم Learning، أو الخوارزمية Algorithm). وثالثًا، تابع التفعيل Activation.

تدريب الشبكة العصبونية الصّنعيّة (Training the ANN)

يُعتبر تدريب المنظومة الذكية أصعب مرحلة من مراحل التعلّم العميق، لماذا؟

أولًا: تحتاج إلى مجموعة تدريب data set ضخمة.

ثانيّا: تحتاج إلى قدرة معالجة computational power  ضخمة.

من أجل تطبيقنا، نحتاج لإيجاد بياناتٍ سابقةٍ تخصّ أسعار التذاكر. ونظرًا للكمية الضخمة المحتملة من المطارات وتواريخ المغادرة للرحل الجويّة، نحتاج إلى قائمةٍ كبيرةٍ جدًا جدًا من أسعار التذاكر.

إذًا مجموعة التدريب لدينا مقسومة إلى بيانات الدخل (المطار الذي أقلعت منه الطائرة، والمطار الذي تتجه إليه الطائرة، وتاريخ المغادرة، وشركة الطيران)، وبيانات الخرج (سعر التذكرة) من أجل كلّ رباعيةٍ.

ولتدريب النّظام، نعطيه بيانات الدخل من مجموعة التدريب، ونقارن خرج الشبكة العصبونية مع الخرج الموجود ضمن مجموعة التدريب (بيانات الخرج)، لكن قبل قطع أشواطٍ من التدريب، سيكون الخرج خاطئًا، بل سيكون بعيدًا أكثر ما يمكن عن القيم المرغوبة.

وبمجرّد أن تُدرَّب الشبكة على كلّ عناصر مجموعة التدريب، يمكن استخدام تابع يظهر مدى الخطأ في خرج الشبكة العصبونية بالنسبة للخرج الحقيقي الموجود في مجموعة التدريب، يُسمّى هذا التابع تابع الكلفة أو الخطأ (Cost Function).

نحن نرغب أن تكون قيمة هذا التابع “صفر”، أي خرج الشبكة العصبونية هو ذاته الخرج المرغوب. لكن هذا مثالي للغاية، الوصول لهذه النتيجة صعب المنال، وإن حصل فيكون مؤشرَ خَطِرٍ يهدد دقّة النّظام في المستقبل، إذ من المحتمل أن يصبح النّظام غير قادر على *التعميم أي غير قادر على التنبؤ إذا أُعطيَ دخلٌ غير موجودٍ في مجموعة التدريب!

كيف يمكن تقليل قيمة تابع الخطأ؟

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

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

بدلًا من العشوائية سنستخدم تقنية تدرج الهبوط (Gradient Descent). إنّها تقنيّة تسمح لنا بإيجاد النهاية الصغرى لتابع رياضي مُعطى. وفي حالتنا هُنا، نسعى للحصول على النهاية الصُغرى لتابع الخطأ.

يعمل عن طريق تغيير الأوزان بزيادات صغيرة بعد كلّ دورٍ لمجموعة التدريب، من خلال حساب المشتق (أو الـ gradient) لتابع الخطأ من أجل شعاع معيّن من أشعة الأوزان (أي في نهاية دور واحد)، يمكننا معرفة اتجاه النهاية الصغرى.

لإيجاد النهاية الصغرى لتابع الخطأ، تحتاج إلى إجراء المعالجة على مجموعة التدريب من أجل عدّة أدوار (تحددها قبل البدء). لهذا السبب تحتاج إلى قدرة حسابية عالية.

تُعدَّل الأوزان باستخدام تقنية تدرّج الهبوط تلقائيًّا، هُنا يكمن سحر التعلّم العميق.

وبالعودة إلى تطبيقنا، بمجرّد تدريب النّظام على مجموعة التدريب، يمكن استخدامه للتنبؤ بالأسعار المستقبليّة.

لمعرفة المزيد عن التعلّم التلقائي

توجد عدّة أنواع للشبكات العصبونية وضمن عدّة تصنيفات، منها الشبكة العصبونية الالتفافيّة Convolutional Neural Networks التي يمكن أن تستخدم في مجال الرؤية الحاسوبيّة، والشبكة العصبونية التكرارية Recurrent Neural Networks التي يمكن أن تستخدم في معالجة اللغات الطبيعية.

ولمعرفة المزيد فيما يخصّ الجانب التقني للتعلّم العميق، يمكنك حضور دورات تدريبية على الإنترنت. نقترح عليك السلسلة التدريبية التالية (Deep learning) ، بإشراف البروفيسور Andrew Ng @andrewng ، مقدّمة من جامعة Stanford. يمكنك حضور دورات السلسلة والتعلّم مجانًا، إن لم تكن مهتمًا بالحصول على شهادة حضور.

أو يمكنك انتظار مقالاتنا القادمة عن هذا الموضوع، بقوالبَ علميّة مُزخرفة ومعلوماتٍ واضحّة وشيّقة..

الخلاصة:

  • تُستخدم لتحقيق التعلّم العميق شبكةٌ عصبونيةٌ صنعيّةٌ.
  • الشبكات العصبونية الصّنعيّة هي نظام معالجة للمعلومات له مميزاتُ أداء معيّنة بأسلوب يحاكي الشبكات العصبيّة الحيّة.
  • مكوّناتها وكيفية معالجتها للمعلومات:
  1. تُعالَج المعلومات في عناصر معالجة بسيطة تُدعى العصبونات.
  2. تمر الإشارات بين العصبونات عبر خطوط ربط تُدعى وصلات.
  3. تُرفق كلّ وصلةٍ بوزنٍ معيّنٍ (قيمة عددية)، والذي يضرب مع الإشارات الداخلة إلى العصبون (تمثّل المعطيات الأولية التي تُحل المسألة على أساسها).
  4. يطبّق على كل عصبون تابع تنشيط إلى دخل الشبكة (مجموع إشارات الدخل الموزونة) ليحدد إِشارة الخرج الناجمة منه.
  • لدينا ثلاث طبقاتٍ (أنواع) من العصبونات: طبقة الدخل، وطبقة الخرج، وبينهما الطبقة/ الطبقات المخفيّة.
  • تُستخدم مجموعة تدريب ضخمة لتدريب الشبكة العصبونية الصّنعيّة.
  • إجراء المعالجة على مجموعة التدريب من أجل عدّة أدوار.
  • في كلّ دورٍ، مقارنة خرج الشبكة مع الخرج المرغوب تُعطي تابع الخطأ أو الكلفة، الذي يشير إلى مقدار الخطأ في خرج الشبكة، من أجل تقليله خلال الدور التالي.
  • بعد كلّ دورٍ، إجراء تعديل الأوزان بين العصبونات باستخدام آلية لإيجاد النهاية الصغرى لتابع الخطأ، وقد اقترحنا طريقة تدرّج الهبوط (Gradient Descent).

هامش:

  • ما بين التعليم والتعميم (Learning and Generalization

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

إن كان لديك أيّ تساؤلات في هذا الخصوص، اسأل بلا تردد في التعليقات أدناه أو على رسائل الموقع، فريق الفضائيون يجيبك.

المصادر: 

  • إعداد: نور عبدو
  • تدقيق لغوي: رأفت فياض
تعليقات
Loading...

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More