الذكاء الاصطناعي: التعليم الموجه

الذكاء الاصطناعي (Artificial Intelligence): هو ذكاء الأجهزة، وعلم من علوم الحاسب الذي يحاول صناعته.

تعلم الأجهزة (Machine Learning): العلم المتعلق بتصميم وتطوير اللغورثميات التي تجعل الحاسب يطور سلوكه ويتأقلم بناء على المعلومات المتوفرة لديه.

التعليم الموجه (Supervised Learning): في علم تعلم الأجهزة، تعطي الجهاز معلومات معينة، تخبره فيما ان كانت هذه المعلومات يجب أن تكون صحيحة أم خاطئة، وهو يتأقلم ويكيف نفسه على المدخلات الجديدة.

يمكن استخدام التعليم الموجه في اتخاذ قرارات (نعم أو لا) فقط. لأن التعليم الموجه يفصل المعلومات الى صنفين.

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

ما تعلمناه هو فصل نوعين من المعلومات التي يمكن فصلها بخط مستقيم، مثل معادلة “أو” أو “و” (AND OR)

بفرض أن لدينا مدخلان: “س” و “ص” وسيستخدما في معادلة “أو” فهذه هي النتيجة (بافتراض أن “ع” هي القرار “نعم” أو “لا”)

  • لا “و” لا = لا
  • لا “و” نعم = لا
  • نعم “و” لا = لا
  • نعم “و” نعم = نعم

وهنا رسمة توضح كيف تم الفصل:


(تم استخدام AbdullahKonashGL في الرسم)

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

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

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

هذه رسمة مشابهة ولكن لمعادلة “أو”:

  • لا “أو” لا = لا
  • لا “أو” نعم = نعم
  • نعم “أو” لا = نعم
  • نعم “أو” نعم = نعم

كما ترون، لم يكن هناك داعٍ لتغير الحد الا مرة واحدة، وترون أيضا اختلاف ألوان النقاط وموقع الخط الاحمر الفاصل.

طبعا هذا تطبيق بسيط لها، ان أردنا ان نأخذ هذا الى مرحلة أخرى، فمن الممكن أن نستخدم 100 نقطة مثلا ونفصلهم الى مجموعتين باستخدام البرنامج:

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

طبعا كلما زادت النقاط التي نتعلم منها، كلما كانت اختيارات البرنامج بعد وضع الخط أدق.

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

(المعلومات المتوفرة والتي تعلمها البرنامج)

(نختبر المعلومات التي تعلمها البرنامج، وقد أخطأ في واحدة من النقاط وذلك لأن معلوماته لم تكن كافية. طبعا المعلومات ال10 الموجودة هنا، البرنامج لا يعرفها مسبقا، لكنه يجيب بناء على خبرته السابقة)

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

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

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

المشتركين في المشروع: مَنَاف أبو الروس، وعبدالله كونش

18 Comments

  • Aizmov
    9 سبتمبر, 2010 - 2:47 م | Permalink

    هل يقدر الذكاء الاصطناعي انه يعطيك معلومات ما يعرفها او تم ادخالها من قبل ؟

  • 9 سبتمبر, 2010 - 2:52 م | Permalink

    أكيد، هذا معنى أنه قاعد “يتعلم” حيث انه مع التعلم ممكن مستقبلا انه يعطيك أجوبة بناء على توقعاته الخاصة.

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

  • 9 سبتمبر, 2010 - 3:01 م | Permalink

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

  • Aizmov
    9 سبتمبر, 2010 - 3:18 م | Permalink

    لنربط ما في فكرك بما في فكري
    لنفترض ان لديك آله جديده من المفترض ان ترتب لك مجموعه من الصناديق و تضعهم في قسمين مختلفين
    عندما تعرض الآله على 1000 صندوق الواحد تلو الآخر لا اتوقع من الآله ان تضع الصناديق في اماكنها الصحيحه لانه لم يتم توجيهها بعد
    حتى اذا وجهنا الآله بأن أول صندوق للقسم أ بينما الصندوق الثاني للقسم ب ، لا اتوقع من الآله ان تعرف أين ستضع الصندوق الثالث
    كما ذكرت مسبقا في احد البنود في الموضوع كلما كثرت عدد المعطيات الموجهه سوف يقل امكانيه الآله فعل أي خطأ
    كخلاصه قبل أن أتوقع اجابه أو تصرف صحيح من الآله علي أن ادخل معطيات تدريبيه لها … في مثال الصناديق … علي توجيهها و تدريبها مع كل الصناديق الموجوده و كلما زاد عدد المدخلات التدريبيه زاد استيعاب الآله ، 3 صناديق لا تكفي ان تستوعب الآله ماهي آليه التوزيع ، لكن مع ألف صندوق أو أكثر قد تستوعب الآله أكثر عن ما هيه هذا التوزيع
    المثال بشكل تصويري:
    لنفترض أن على الآله ان تدفع بالصندوق السليم الى اليمين و الصندوق التالف الى اليسار ، لكن الآله لا تعرف الفرق بين الصندوق السليم و الصندوق التالف ، فكيف لها ان تقسمهم ؟ الآن لنفترض ان لدينا 1000 صندوق نريد تدريب الآله عليهم ، نوجه الآله الى أي صندوق الذي يجب ان يدفع الى اليمين و أي صندوق يدفع الى اليسار بعد ذلك نتوقع من الآله ان تستوعب ماهيه التوزيع ، من ابعاد الصندوف لونه او أي صفه يلاحظها الذكاء الصطناعي كفرق بين ما قد دفعه الى اليمين و ما قد دفعه الى اليسار

  • مالك
    9 سبتمبر, 2010 - 3:19 م | Permalink

    الله يعطيك العافية عبد الله
    عمل جميل صراحة

    لدي ملاحظة بسيطة
    “يمكن استخدام التعليم الموجه في اتخاذ قرارات (نعم أو لا) فقط”
    في الحقيقة التعليم الموجه يستخدم لعمل دالة (function) تعطي سواءً نتائج من نوع (نعم أو لا) وهو ما يسمى بالمصنّف،
    أو دالة تعطي قيم متّصلة regression function
    http://en.wikipedia.org/wiki/Supervised_learning

  • Aizmov
    9 سبتمبر, 2010 - 3:27 م | Permalink

    لكن فيه سؤال رهيب:
    لو نقول جاء صندوق مغطى بعد آلاف الصناديق الي تدرب عليها … ايش راح يسوي ؟

  • 9 سبتمبر, 2010 - 3:28 م | Permalink

    Aizmov
    شكرا لك، شرحت الموضوع بمثال آخر (: البشر يتعلموا بنفس الطريقة، ما أتكلم عن انهم يسووا معادلات والخ، لكن هو كيف يبدأ يصنف الأشياء ويحطها في محلها.

    مالك
    بالفعل كما قلت
    كان المقصود أنك لا تستطيع أن تسأل الجهاز مثلا “أين آكل وجبة الغداء غدا؟”. ولن تستطيع أن تسأل شيئا مماثلا تتخذ فيه قرار بالايجاب أو بالسلب.
    زشكرا لك (:

  • 9 سبتمبر, 2010 - 3:29 م | Permalink

    Aizmov
    ما هي طبيعة الصناديق السابقة؟ الصندوق صندوق، تخيلي لأي صندوق هو صندوق مغلق

  • Aizmov
    9 سبتمبر, 2010 - 3:51 م | Permalink

    مغطى و ليس مغلق … عليه قطعه قماش تغطيه

  • 9 سبتمبر, 2010 - 3:59 م | Permalink

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

  • Aizmov
    9 سبتمبر, 2010 - 4:09 م | Permalink

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

  • 9 سبتمبر, 2010 - 4:15 م | Permalink

    أنا ذكرت، انه هذا يا يقول ايه أو لأ
    فاذا في لون جديد، على طول حيروح مع اللأ لأنه أصلا محل استخدمنا لو خاطئ

    وعلى فكرة، في كثير من تطبيقات الcomputer vision اللون يكون غير مهم، لكن طبعا في حالات أخرى يجب أخذها بالحسبان.

  • 9 سبتمبر, 2010 - 4:18 م | Permalink

    علشان أوضح الفكرة مرة ثانية
    فلنفترض، أن الصناديق في من لونين، أزرق وأحمر
    السؤال سيكون “هل لون الصندوق أزرق؟”
    اذا أتى صندوق أزرق، نعم
    اذا أتى صندوق أحمر، لا
    اذا أتى صندوق بطّيخي، لا

    أتوقع وصلت الفكرة

  • مالك
    10 سبتمبر, 2010 - 7:53 ص | Permalink

    عبد الله
    اعذرني، بس تقدر تسأله وين تتغدى بكرة
    وممكن حتى تسأله أسئلة أعقد من هذا بكثير

    المهم إنك تعرف تحدد المتغيرات -التي قد تكون بالآلاف- ونتيجتها، أياًّ كانت هذه النتيجة.

    تعريجاً على مثال الصناديق -الممتاز صراحة:
    في البداية يجب أن تعرف نظامك بمتغيرات الصندوق، مثلاً: حجمه، لونه، وزنه…..،والقيم الممكنة لكل متغيّر، ليس بالضرورة أن تعرفه بجميع المتغيرات الممكنة، فهو سيقوم فقط بملاحظة المتغيرات التي حددتها له أنت.
    عندما يصله الصندوق الأول، احتمالية تصنيفه في المكان الصحيح-ولنسميها “إصابة”- هي 50%، لأنه أمّي، لم يتعلم بعد.
    -إذا أخبرته أن جوابه صحيح، سترتبط القيم الخاصة بهذا الصندوق -بالنسبة للمتغيرات التي حددناها- بالتصنيف الذي اختارهز
    -إذا أخبرته أن جوابه خاطئ، سترتبط تلك القيم بالتصنيف الآخر

    وهكذا مع كل صندوق خلال عملية التدريب.
    ما يتعلمه النظام في الحقيقة هو ارتباط مزيج “combination” المتغيرات التي تتوافق مع كل من التصنيفين.

    عفواً للإطالة، أتمنى أن أكون قد أفدتكم

  • 10 سبتمبر, 2010 - 10:43 ص | Permalink

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

  • 11 سبتمبر, 2010 - 5:45 ص | Permalink

    مستمتع :)
    جدا شغل أوكيه
    وش المرحلة المقبلة بالنسبة لك ؟؟

  • 11 سبتمبر, 2010 - 2:26 م | Permalink

    أني أرد على ردك P:

  • 11 سبتمبر, 2010 - 9:20 م | Permalink

    لول :P

  • أضف تعليق

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

    يمكنك استخدام أكواد HTML والخصائص التالية: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>