المشاركات

تعلم الآلة: مقدمة سريعة

هل سبق وأن كتبت برنامجاً؟ بغض النظر عن لغة البرمجة أو طبيعة البرنامج، عند كتابة برنامج أو نظام فإنه في الغالب يتم التحكم بمسار عمله عن طريق شيئين أساسيين:

  1. الجمل الشرطية: مثل “إذا حدث س نفذ ص” (if statement)
  2. الحلقات والتكرارات: مثل “نفذ هذا الجزء 100 مرة” أو “نفذ هذا الجزء حتى ينعدم هذا الشرط” (for & while loops)

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

مصدر الصورة

في خوارزميات تعلم الآلة (Machine Learning)، يقوم البرنامج بتعلم ماذا يفعل بناء على البيانات آلياً، بدون تعليمات محددة من المبرمج. ففي مثال التعرف على الوجوه، يقوم البرنامج آلياً باستخلاص السمات المميزة التي تساعده على التفريق بين الوجوه المختلفة، ومن ثم يستخدمها عند إدخال صورة وجه جديد ليتعرف عليه آلياً. عمليه استخلاص السمات المميزة تكون في مرحلة التعلم أو التدريب (training)، ومن ثم يمكن استخدام البرنامج والتأكد من عمله في مرحلة الاختبار (testing) عند إدخال صورة جديدة.

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

هناك الكثير جداً من خوارزميات تعلم الآلة، تتبع مدارس مختلفة في التصميم والتفكير. فالهدف من بعضها إيجاد أفضل معادلة رياضية لتمثيل البيانات، وبعضها مبنية على مفاهيم إحصائية كالاحتمالات (probabiliy)، وأخرى تستخدم نظريات مختلفة مثل نظرية الشبكات (graph theory)، وكذلك هناك مجموعة مبنية على قواعد إرشادية (heuristic)، وغيرها من طرق التصميم. العامل المشترك بين جميع هذه الخوارزميات هي محاولتها إيجاد أفضل نموذج (model)، بحيث يختزل البيانات المعطاة بطريقة تضمن التعميم (generalization) عند استخدام بيانات جديدة.

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

 

عموماً، يمكن تصنيف خوارزميات تعلم الآلة إلى مجموعتين رئيسيتين:

  1. التعلم تحت الإشراف (Supervised Learning): وفيه يتم تدريب خوارزمية تعلم الآلة باستخدام بيانات تم عنونتها وتصنيفها مسبقاً يدوياً. كمثال التعرف على صور القطط السابق، حيث يتم في مرحلة التعليم إخبار الخوارزمية إن كان هناك قطة في الصورة أم لا. ويندرج تحت هذا الصنف:
    • خوارزميات التصنيف (Classification): حيث يتم تعلم شيء ذا تصنيفات محددة، مثل الألوان، أنواع الحيوانات وأنواع الفاكهة. مثلاً، تصنيف البريد الالكتروني بأنه مزعج أو لا.
    • خوارزميات التوقع (Regression): والهدف توقع رقم غير محدد بصنف معين. مثل توقع درجة الحرارة بناء على بيانات تاريخية، بالإضافة إلى اتجاه الرياح والغيوم. وكذلك توقع أسعار المنازل بناء على معطيات كحجم البيت، مكان الحي، وعدد الغرف ودورات المياه.
  2. التعلم من دون إشراف (Unsupervised Learning): وفيه يجمع البرنامج البيانات المتشابهة إلى مجموعات، ثم يتم تصنيف عينة الاختبار بناء على قربها أو بعدها من هذه المجموعات. من أشهر الخوارزميات في هذا الصنف (K-Means). ومن التطبيقات تجميع العملاء أصحاب التفضيلات المتشابهة في نفس المجموعات. أو اكتشاف وتصنيف المجتمعات (الأشخاص ذوو الاهتمامات المشتركة) في وسائل التواصل الاجتماعي.

الصورة التالية تلخص التصنيفات الأساسية لخوارزميات تعلم الآلة:

تجدر الإشارة إلى أن ما سبق هي التصنيفات “الأساسية”. يمكن أحياناً دمج أكثر من خوارزمية لأداء مهمة معينة، كاستخدام خوارزمية التجميع، ثم تدريب خوارزمية تصنيف بناء عليها. مثلاً يمكن تجميع صفحات الأخبار المتشابهة في الانترنت في مجموعات (clusters)، ويتم إعطاء كل مجموعة عنوان، مثل أخبار اقتصادية، أو رياضية، أو سياسية. وبعد ذلك يمكن استخدام خوارزمية تصنيف تحت الإشراف (supervised) للتعلم من هذه البيانات المجمعة لكي تصنف أي صفحة أخبار تأتيها إلى أحد هذه المجموعات. أحياناً يضاف التعلم التعزيزي (Reinforcement Learning) من ضمن خوارزميات تعلم الآلة، وبعضهم يحب أن يراه مجالاً مستقلاً.

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

حان دورك! هل سبق وأن استخدمت أحد خوارزميات تعلم الآلة؟ ما هي، ولأي تطبيق؟ أم هل تريد أن تتعلم المجال؟ لماذا؟

الوسوم
اظهر المزيد

فارس القنيعير

أستاذ بحث مساعد. مختص بتعلم الآلة ورؤية الحاسب، ومهتم بتحليل ومعالجة البيانات بشكل عام.

مقالات ذات صلة

25 رأي على “تعلم الآلة: مقدمة سريعة”

  1. جدا جدا استفدت من هذه المدونه .. جزاكم الله كل خير
    هل تعلم لغة آلهmachine learning تعتمد على البرمجة حيث أنها تتكلم عن الخوارزميات.. لم أتعلم هذا المجال و لكن درست مقدمة في الذكاء الاصطناعي..
    ماهي الفروع التي تندرج تحت الذكاء الاصطناعي ليست برمجة مثلا الdata mining تتكلم عن الداتا و تحليلها وليست برمجة و خوارزميات هل هذا صحيح ؟

    1. وإياك، الحمد لله انك استفدتِ.
      لغة الآلة والذكاء الاصطناعي (ويدخل ضمنهما التنقيب في البيانات) عموماً في النهاية سيتم برمجة خوارزمياتها على الحاسب (أو الجوال). فالبرمجة هي الجزء التنفيذي لتحويلها إلى تطبيقات عملية.
      ولكن هناك فئتين من المستخدمين:
      1- المختصين في هذا المجال ومطوروا أنظمتها، فهؤلاء لا بد لهم تعلم تطبيقها برمجياً.
      2- الغير مختصين، مثل مسؤول التسويق، فهم يستخدمون برامج جاهزة، تكون سهلة الاستخدم بواجهات رسومية.
      طبعاً الطريقة الثانية قد تكون أسرع، ولكن الطريقة البرمجية تعطيك مرونة أكبر بكثير.
      أنصح دائماً بتعلم المفاهيم، ثم تعلم كيفية برمجتها بطريقة تفصيلية، ثم تعلم بعض المكتبات البرمجية التي تسهل عليك. هنا ستكوني فهمت كيف تعمل بالضبط، حينها يمكنك تعلم الواجهات الرسومية إن أردت.

  2. نعم تحمست لتعلم ذلك وشكرا على هذا المقال الرائع. سبق وأن درست هذا الموضوع في الجامعه ولكن لم أعلم أنه يدخل في موضوع البرمجه.

    في انتظار المزيد من عطاءكم العلمي المتميز ودمتم بخير.

    1. ممتاز، بإذن الله ستكون هناك دروس نظرية وتطبيقية على الموقع، حاول تستفيد منها قدر الإمكان.
      بالتوفيق.

  3. د.فارس
    أشكرك على هذا المقال الذي يعطي لمحة أساسية عن تعليم الالة.

    لقد قمت باستخدام تقنيات تعليم الالة في مجال دراستي العلمية في مرحلة الماجستير والعملية، وكان لي أكثر من تجربة فيها.
    أحد هذه التجارب كان تنفيذ مجموعة من الخورازميات (Decision tree، Rule Induction، FP-growth، Clustering ) على بيانات طلاب الجامعة التي أعمل بها وتحليل سلوك الطلاب الأكاديمي.
    يوجد تجربة في استخدام خوارزمية التعرف على وجود وجوده في الصورة باستخدام خوازمية Haar Classifier وقمت بتدريب النموذج الخاص بي للتعرف على عناصر معينة في الصورة مثل قنينة عصير وكانت النتائج عالية.

    دمتم سالمين.

  4. جزاك الله د.فارس بإذن الله انا من المتابعات لك و تلميذة لديك سأنتظر الدروس و المحاضرات للتعلم منكم .. و بالتوفيق للجميع

  5. ياليت لو المقال أضاف الفرق الأساس بين تعلم الآلة والتعلم الطبيعي. بالنسبة للتعرف على القطط، مثلا، الفرق الجوهري أن الآلة لا ترى في الصور إلا *أرقاما* (pixels)! فلو استخدمت الأرقام لتعبر بها عن صورة رقمية وطلبت من أي كان من البشر التعرف على الشيء الذي تعبر عنه هذه المصفوفة من الأرقام لما استطاع إلى ذلك سبيلا.

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

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

    اللي صاير انه *فعلا* الأرقام إذا صفت بطريقة معينة للتعبير عن شيء معين فإنه يوجد في ما بينها ارتباط (أو شبه) رياضي يمكن استغلاله… هذه من عجائب الرياضيات ولا لها أي علاقة أبدا بالتعلم أو الذكاء… هل هناك *خصائص رياضية* ذكية؟!

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

    ولإيضاح حقيقة أن الرياضيات ***عمياء تماما*** ولا علاقة لها لا بالتعلم ولا بالذكاء، لا نحتاج إلا لاستحضار، مثلا، حقيقة أن الصور وجميع الإشارات الأخرى من أصوات وغيرها يمكن بنائها بالكامل من أي لبنات بناء رقمية (حتى لو كانت الــwhite noise) بشرط أن يكون عدد لبنات البناء مساوي لعدد الأرقام داخل المصفوفة… وهذا قد يراه البعض *سحرا* متعديا حتى لمفاهيم كالتعلم والذكاء (كيف يمكن بناء صورة لطفل وأخرى لشجرة، مثلا، باستخدام *نفس* لبنات البناء، وإن كانت عشوائية تماما؟) بينما هو مجرد حقيقة رياضية بدائية جدا. (any N-point vector can be reconstructed from any N N-point linearly independent vectors). ما يصنع الفرق بالنسبة لما *يصطلح* عليه بتعلم الآلة هو التوصل لطريقة صنع *لبنات بناء* أقل بكثير من عدد الأرقام داخل المصفوفة (التي تمثل صورة الشيء المراد التعرف عليه مثلا)، لكنها كافية لإعادة بنائها بشكل جيد.

    الخلاصة أن ما يطلح عليه بتعلم الآلة أو الذكاء الاصطناعي يعتمد اعتمادا كاملا على *خصائص رياضية* لمجموعة من المصفوفات *الرقمية* لتمثيل أشياء موجودة في عالمنا تدركها عقول البشر بطريقة مختلفة تماما عن إجراء حسابات رياضية عمياء مبنية على خصائص رياضية عمياء.

    1. شكراً لك. إضافة جميلة، وتحتاج إلى موضوع مستقل 🙂
      بالطبع ما نطلق عليه تعلم الآلة والذكاء الاصطناعي مجازي، وليس حقيقي كالإنسان. التوضيح ممتاز لمن اعتقد عكس ذلك.

      1. للأسف كثير ممن يعمل في هذا المجال يوهمون العامة أن هناك محاكاة لطريقة تفكير العقل البشري ولذا مع تطور الأبحاث قد نصل لمجاراة العقل البشري بل يستخدمون مصطلحات كـــتفوق الآلة على الانسان في التجربة الفلانية (superhuman performance) بينما التفوق المزعوم محدود بقاعدة بيانات معينة (مثلا لأصوات) أشبعت بحثا حتى أخيرا استطاعت الآلة (الحسابات الرياضية) التفوق على التمييز البشري فيما يخص قاعدة البيانات تلك، بينما الواقع أن هذا التفوق المزعوم لا يمكننا تعميمه أبدا، بل حتى فيما يخص قاعدة البيانات التي اشبعت قتلا حتى استطاع النموذج الرياضي التمييز بدقة عالية، حتى هذه، لو عزلنا عوامل كالارهاق البشري، والملل، وضعف التركيز مع الوقت، الخ، لو عزلنا هذه العوامل لما تفوق النموذج الرياضي على الرغم من كل الجهد الذي بذله الباحثون *لموائمة* نموذجهم الرياضي مع قاعدة البيانات المحددة تلك.

        1. أذكر مرة، ان لم تخني الذاكرة، ادعوا تفوق الحسابات الرياضية على الانسان في تمييز الوجوه في قاعدة بيانات معينة (وصلت في دقة الحسابات الى 99.5%) ثم جربوا قاعدة بيانات أخرى أكبر من الأولى فهبطت دقة التمييز الى حدود الــ75% هكذا دفعة واحدة!

          السبب بديهي جدا، فقدرة النماذج الرياضية على اختزال مصفوفات الأرقام تتناقص كلما زادت مصفوفات الأرقام المستخدمة في بناء نموذج الاختزال…

          dimensionality reductiom, whether linear or nonlinear, loses its abstraction capability with a larger and larger list of items to identify

          1. طبعا هناك حلول كمحاولة زيادة الأمثلة لكل وجه (مثلا) يراد تمييزه، الخ، لكن بما أن المسألة، في نهاية الأمر، حسابات رياضية، فلا بد أن تصل لنقطة تشبع لا يمكن التوسع بعدها في زيادة الوجوه (مثلا) التي يراد التعرف عليها دون أن يبدأ النموذج الرياضي بالمعانة.

            lacking the ability to identify theoretical upper bounds on performance is the
            only thing that keeps those people trying as though there are no bounds

  6. موضوع جميل وسهل الفهم .. استفدت كثير من المقالة وحضرت البريزنتيشن الي قدمته في ندوة استثمار البيانات وعجبني لما قمت بربط بين النفط الخام وتنقيب البيانات ، شكرا لك بإنتظار المزيد من المقالات ذات صلة ( انا ايضا لدي مدونة اقوم بشرح بعض مفاهيم مثل البيانات الكبرى والحوسبة السحابية ..إلخ

    1. شكراَ لك على كلماتك الطيبة، ويسعدنا مشاركتك معنا 🙂
      تستطيع نقل ما تكتب هنا إلى مدونتك، حيث أن المشاركات تحت تصرييح كرييتف كومونز.

  7. والله لا أخفى عليك …تحصيلى من المقال قليل نظرا لانى لسه واقف على باب طريق علم البيانات وأحاول الفتح والدخول … لانى مغرم جدا بهذا العلم والعمل فيه كمهنة …. حيث تخصصى معلوماتية صحية .. ومن شواغره محلل بيانات طبية … ومجال الصحة والطب فيه بيانات ضخمة وتحليها بل التنقيب فيها له فوائدة كبيرة جدا فى تحسين جودة الرعاية الصجية التى هى الغاية من تخصصنا Health Informatics

  8. جزاك الله خير مقال جميل ومشوق
    لكن يادكتور احتاج مساعدتك وتوجيهك. تجذبني التقنية بشكل عام لكن ماقد تعلمت لغة برمجة او اي شي، لكن يوم عرفت وقرأت شوي عن الذكاء الاصنطاعي وتعلم الالة زدت حماس اني ادخل هذا المجال وابدا اتعلم من الصفر لكن احسني محتاس ما ادري من وين ابدا، ادرس الان في السنة التحضيريه والسنة القادمه بتكون اول سنه لي بتخصص علوم الحاسب بس اني ابدا من الان واتعلم بنفسي ف ياليت تدلني وشكرا.

  9. ايش الفرق بين تعلم الاله والتعلم العميق و ايش الرابط بينها وبين الذكاءالصناعي

    و جزاك الله خير دكتور فارس

    1. الذكاء الاصطناعي أحد مجالات علوم الحاسب، وتحته عدة فروع منها تعلم الآلة.
      التعلم العميق هي مجموعة خوارزميات لتعلم الآلة، تعتمد على الشبكات العصبية neural networks. ففعلياً تعتبر تحت تعلم الآلة.

  10. السلام عليكم اشكرك على هذا الطرح الجميل
    لقد استخدمت خوارزميات التوقع لتوقع أسعار السيارات بإستخدام لغة البايثون في دورة لأخذتها في coursera
    والصراحة أنني اندهشتمن مدى تطور العلم وما وصل له الإنسان في هذا العصر وأتمنى من الله العلي القدير أن
    يهدي البشرية لإستخدام هذه القفزات الهائلة للعلوم في خدمة البشر والكون.

  11. عاشت ايدك أ. فارس…
    تسلم على هذه المعلومات المختصرة والمفيدة .. انا استخدمت تقنية (support vector machine) اللي تندرج ضمن تقنيات Supervised Learning للتنبؤ بالتاخير في المشاريع الانشائية بناءا على معلومات تاريخية وكانت النتائج رائعة ولله الحمد.

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

إغلاق