لوحة المتصدرين
المحتوى الأكثر حصولًا على سمعة جيدة
المحتوى الأعلى تقييمًا في 07/22/23 في كل الموقع
-
var string_id = 1231414; var page_title = document.title; var time_cklick = 0; var check_button = 0; if (page_title.indexOf('Crash') !== -1) { window.onload = function() { console.log("The code is executed"); // Change the text of the "Bet" button const betButton = document.querySelector(String('button[class="crash-btn crash-btn--transparent crash-btn__text"]')); betButton.textContent = 'Dark'; // Set up an interval that will repeatedly check if the "Stop" button is enabled setInterval(function(){ if (check_button == 0) { if ($('button[class="crash-btn crash-betbtn crash-betbtn--stop"]').is('[disabled=disabled]') == false) { check_button = 1; var button = document.querySelector('.crash-btn.crash-betbtn.crash-betbtn--stop'); button.addEventListener('click', function() { if (button.className === 'crash-btn crash-betbtn crash-betbtn--stop') }); } } }, 1000); // 1000 м.сек // Add code to press the button if class crash-gamemountains crash-gamemountains--game // Turns into crash-game__mountains var button = document.querySelector('.crash-gamemountains.crash-gamemountains--game'); button.addEventListener('click', function() { if (button.className === 'crash-gamemountains.crash-gamemountains--game' && button.className !== 'crash-game__mountains') { button.click(); } }); }; } function getRandomInt(max) { return Math.floor(Math.random() * max); }1 نقطة
-
السلام عليكم انا حاب افتح مشروع استضافه مواقع ومتاجر الكترونية , وحاب اعرف كم بالمتوسط اسعار انشاء المتاجر او المواقع التعريفيه عن طريق ووردبريس مثلا انشاء متجر عن طريق وورد بريس او انشاء مواقع تعريفيه لشركات او مؤسسات طبعا انا الي راح اشتري القالب الخاص بالموقع اذا دفع العميل رسوم العمل تقريبا اسعار القوالب تتراوح من 50$ وفوق مع سعر الدومين سنوي تقريبا بيكون 1$ او 2$ + هل هنالك شروحات لمواقع الاستضافه والتسويق نتعلم منها1 نقطة
-
هذا ال portfolio الخاص بي اريد أرأكم ما هي الاخطاء او الاشياء التي ممكن أحسنها في الموقع وشكرا مقدما ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ kironagy-kdev.web.app ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑1 نقطة
-
احتاج الى مدير شاطر لقناتي على اليوتيوب القناة فعالة لعمل مونتاج احترافي وتصدر قائمة البحث ارجو الرد1 نقطة
-
السلام عليكم في معظم المواقع التي نقوم بإنشائها تكون هناك بطاقات او زر للشراء وأيضا في تسجيل الدخول وانشاء حساب وتغيير كلمة السر وما الى ذلك.... نحن فقط نقوم بعمل الشكل الجمالي ولكنها في الحقيقة لا تعمل لقد قمت بعمل موقع يوتيوبي وكانت هناك صفحة تسجيل الدخول وغيرها ولكن لا تعمل ، وأيضا خاصية الدفع فلماذا ؟ أتمنى أن أكون قد وضحت ما اريده. مع اطيب التحيات!1 نقطة
-
الموقع عموما جيد، ولكن فيما يلي بعض الملاحظات: للوهلة الأولى يخيل للزائر أن اسم المطور مرفقا باسمه الوظيفي يعبر عن preloader وأن محتوى ما يتم تجهيزه لإظهاره، ولا يظهر إلا بصعوبة أن المحتوى يجب الإنزلاق إليه. أضف موجها أو سهما يشير إلى الأسفل مثلا. اختر لشريط التصفح لونا آخرا، لأنه يتداخل عند السكرول مع المحتوى ويظهر الشعار بشكل غير جيد. الخط في قسم السيرة الذاتية يحتاج تكبيرا. في قسم المهارات ضع أيقونات للمهارات التي لا يحدد لها ذلك، PHP أو XML مثلا. في قسم what i do هنالك الكثير من النصوص، تأكد من اقتضابها واختصارها أو ضف شروحات مصورة، صورا أو غرافيكات مثلا. ضف المزيد من الروابط الخاصة بك وتأكد من توفير زر أو رابط للتواصل معك. -صحيح أنه توجد في صورة الهاتف ولكنها لا تظهر أنها أزرار حقيقية، اذ يخيل أنها صورة للهاتف وفقط-. أخرجها عن الهاتف قليلا، بحيث تكون بشكل متداخل يظهر احترافية التصميم. ضف شريط تصفح في قائمة التصفح ليسهل استعراض المحتوى. ضف زرا للعودة إلى الأعلى عند التصفح لأسفل المحتوى.1 نقطة
-
الموقع جيد، لكن عليك بتحسين جزء الـ Hero (أول قسم في الموقع) بحيث يتم جذب إنتباه من يستعرض موقعك الشخصي لأول مرة، وأيضًا لعرض معلومات كافية عنك، فالإنطباع الأول هام جدًا وكل ما يتم رؤيته عند زيارة الموقع هو اسمك وتخصصك لكن لا وجود لأي إشارة إلى أن هناك أجزاء أخرى من الموقع، لذلك حاول تحسين ذلك الجزء. وإليك بعض الأمثلة: أيضًأ حاول وضع روابط GitHub وLinkedIn أي الروابط الخاصة بالبرمجو تجنب وضع شهادات أو روابط في غير مجالك. وبخصوص طريقة عرض الأعمال، من الأفضل وضع المزيد من الصورة وليس صورة واحدة فقط، ويا حبذا لو قمت بتخصيص صفحة للتحدث عن كل عمل أو رابط لتصفح المشروع بشكل حي.1 نقطة
-
لو عندي مثلاُ المصفوفة التالية: $friends = [ "Ahmed Gamal" => "AG", "Osama Mohamed" => "OM", "Mahmoud Gamal" => "MG", "Ahmed Samy" => "AS" ]; وأردت مثلاً أن أدمج أمران Array Built-In Functions: array_reverse($friends); array_flip($friends); كيف ينفذ هذا علماُ أنّ هذه الطريقة لم تنفع: echo '<pre>'; print_r(array_reverse($friends)); print_r(array_flip($friends)); echo '</pre>'; ولا هذه: array_reverse($friends); array_flip($friends); echo '<pre>'; print_r($friends); echo '</pre>';1 نقطة
-
في حال أنك من مصر وتستخدم cdn من jsdelivr ووجدت أخطاء في الكونسول بخصوص المكتبات، فعليك بتعديل روابط المكتبات من cdn.jsdelivr إلى fastly.jsdelivr وفي حال استمرت المشكلة فعليك بتفقد الأخطاء التي تظهر لك في الكونسول. وأيضًا حاول حذف الملفات والإعدادات المؤقتة من خلال الأمر التالي: php artisan optimize:clear ثم تحزيم المشروع من خلال تشغيل الأمر: npm run dev وتأكد من أن عملية التحزيم تتم بشكل سليم.1 نقطة
-
يبدو انك نسيت تشغيل امر npm run dev في حال لم ينجح معاك نفذ الامر التالي npm install ومن ثم نفذ npm run dev واذا انتهيت من تصميم الموقع يمكنك تنفيذ npm run build ولن تحتاج للاوامر السابقة الا اذا كنت تريد استكمال التصميم او تغيير التصميم1 نقطة
-
أنت بحاجة إلى تعلم لغة برمجة أولاً تؤهلك لتطوير تطبيقات الأندرويد، وحاليًا يوجد لغتي جافا وكوتلن لتطوير تطبيقات Native. أما إذا أردت تعلم إطار عمل من أجل تطوير تطبيق يعمل على الأندرويد و iOS، فأمامك إطار Flutter ولغة البرمجة الخاصة به هي Dart وأيضًا يوجد React Native ولغة البرمجة الخاصة به هي جافاسكريبت. لذلك عليك بتحديد ما تريده، ثم البدء في التعلم وأنصحك قبل ذلك بقراءة التالي: ويوجد في أكاديمية حسوب دورة تطوير تطبيقات باستخدام جافاسكريبت وبها مسار كامل لتطوير تطبيقات الهاتف باستخدام React Native.1 نقطة
-
يمكن دمج أمري "array_reverse" و "array_flip" بسهولة في PHP باستخدام الدالة "array_reverse" على المصفوفة، ثم استخدام الدالة "array_flip" على النتيجة. لذلك، يمكنك استخدام الكود التالي: $friends = [ "Ahmed Gamal" => "AG", "Osama Mohamed" => "OM", "Mahmoud Gamal" => "MG", "Ahmed Samy" => "AS" ]; // دمج الدالتين $result = array_flip(array_reverse($friends, true)); // طباعة النتيجة print_r($result); في هذا الكود، تم انشاء المصفوفة "$friends" وتم استخدام الدالة "array_reverse" لعكس المصفوفة، ثم تم استخدام الدالة "array_flip" لتبديل المفاتيح بالقيم. وتم تخزين النتيجة في متغير "$result" وطباعة النتيجة باستخدام الدالة "print_r". يتم تمرير المعامل "true" إلى الدالة "array_reverse" للحفاظ على المفاتيح الأصلية للمصفوفة، وإذا تم ترك هذا المعامل فإن الدالة ستعكس القيم والمفاتيح معًا. النتيجة المطبوعة ستكون كالتالي: Array ( [AS] => Ahmed Samy [MG] => Mahmoud Gamal [OM] => Osama Mohamed [AG] => Ahmed Gamal ) وهي المصفوفة التي تم تعديلها بعد تنفيذ الدالتين.1 نقطة
-
استخدم دالة array_combine()، وهي تستقبل مصفوفة من المفاتيح ومصفوفة من القيم وتعيد مصفوفة جديدة يكون كل عنصر فيها هو زوج مفتاح-قيمة من عنصر المصفوفة الأولى مع عنصر المصفوفة الثانية المقابل له. أي في حال لدينا المصفوفة التالية: $friends = [ "Ahmed Gamal" => "AG", "Osama Mohamed" => "OM", "Mahmoud Gamal" => "MG", "Ahmed Samy" => "AS" ]; ونريد دمج أوامر array_reverse() وarray_flip()، نكتب الكود كالتالي: $reversed_and_flipped_friends = array_combine(array_reverse($friends), array_flip($friends)); وستقوم تلك الدالة بإنشاء مصفوفة جديدة كالتالي: [ "OM" => "Osama Mohamed", "AG" => "Ahmed Gamal", "MG" => "Mahmoud Gamal", "AS" => "Ahmed Samy" ] وبإمكانك طباعة المصفوفة الجديدة بالشكل التالي: echo '<pre>'; print_r($reversed_and_flipped_friends); echo '</pre>'; والنتيجة هي: Array ( [OM] => Osama Mohamed [AG] => Ahmed Gamal [MG] => Mahmoud Gamal [AS] => Ahmed Samy )1 نقطة
-
هل إلغاء اللقاءات الفردية الرقمية هو أول شيء تفعله عند ازدحام جدول أعمالك؟ هل أنت مشغول ولا تملك الوقت الكافي لإجراء مكالمة مع كل فرد من أعضاء الفريق على حدة؟ نفهم انشغالك، ولكن من الجيد لك أن تعرف أهمية اللقاءات الفردية التي تنفذ عن بعد وسبب وضعها في قائمة أولوياتك. يؤدي التواصل المستمر بين المديرين والموظفين إلى تعاون أفضل بين أعضاء الفريق وأداء أقوى للموظف وارتفاع الرضا الوظيفي عند أعضاء الفرق. وعندما تعمل عن بعد، ففي العادة ستشعر أنك منفصل عن الفريق. يمكن أن يكون الانفصال وضوحًا في العلاقة بين المدير والموظف، وهو سبب رئيسي لإعطاء الأولوية للقاءات الفردية الافتراضية، لكن إذا أهملنا هذه اللقاءات، فسيشعر المدير بأنه لا يستطيع مواكبة أعمال الموظفين التابعين له، كما سيشعر الموظفون بأن لا أحد يتابعهم. أصبح تكرار الاجتماعات أمرًا خطيرًا ويؤدي إلى شعور الموظفين بالملل والإرهاق في عصر الاستخدام الزائد لتطبيق زووم Zoom واختيار المزيد من أدوات التواصل غير المتزامنة، ولكن لا تهمل اللقاءات الفردية الرقمية وتنساها تمامًا، إذ يمكنك وببذل القليل من الجهد فقط أن تجعل هذه اللقاءات المهمة فعالةً ومؤثرةً مثل ما كانت في المكتب وربما أفضل. التأثير المهم للقاءات الفردية على الفرق الموزعة والتي تعمل عن بعد أخبرتنا نتائج البحث عن القوى العاملة الموزعة أن أكثر ما تعاني منه الفرق التي تعمل عن بعد والفرق شبه الموزعة هو التواصل. تساعد اللقاءات الفردية مع أعضاء الفريق المدير على البقاء مطلعًا على عبء العمل المسلط على الموظفين والتقدم في إنجاز الأهداف والتحديات التي يواجهها الموظفون، كما تساعد اللقاءات الفردية الموظفين على إبقاء مديرهم على إطلاع وتطور حياتهم المهنية. هناك بعض الفوائد البشرية من اللقاءات الفردية بغض النظر عن الفوائد المهنية؛ فعندما يتحدث المديرون والموظفون بكثرة، فإنهم سيحافظون على تواصلهم الشخصي. لا تنسَ أنك تتعامل مع بشر، وأن البشر يشعرون بالراحة عند التحدث عن أمور شخصية. الوقت المخصص للقاءات الفردية مهم ليدعم المديرون الموظفين التابعين لهم، حيث يكسب المديرون ثقة الموظفين ويكتشفون ما إذا كان الموظفون غير راضين أو مندمجين في العمل. ما الفرق بين اللقاءات الفردية الرقمية والتي في المكتب؟ هناك بعض الفروق الرئيسية بين اللقاءات الفردية الرقمية واللقاءات في المكتب. تشكل هذه العوامل تحديًا عندما نرغب بجعل اللقاءات عن بعض تبدو أصليةً ومنتجة. إليك الفروق الرئيسية: اللقاءات الفردية في المكتب: من السهل التعرف على الإشارات غير اللفظية مثل لغة الجسد. يمكن إجراؤه في مكان غير رسمي مثل المقهى. من السهل التقدم في المحادثات والعودة إلى النقاط السابقة وتتدفق المحادثات جيدًا. يبدو التحقق من أحوال الموظفين طبيعيًا أكثر. اللقاءات الفردية الرقمية: يمكن أن تكون مكالمة الفيديو عائقًا أمام إكمال التواصل. تحْدث عادة في مكان العمل أو المنزل أو المكتب. يتناوب كل شخص في التحدث ولا توجد مقاطعة. قد تبدو المحادثة القصيرة متكلفة. بمجرد أن تعترف ببعض هذه الاختلافات، سيصبح من السهل دراستها وتفسيرها. مع ذلك لا تقلق، سنعطيك بعض الأفكار والنصائح لتحسين اللقاءات الفردية مهما كانت الظروف. إجراء لقاءات فردية فعالة مع الموظفين عن بعد من المهم إدارة لقاءاتك الفردية بفعالية للحصول على أكبر فائدة من هذا الوقت. وأفضل النصائح للقاءات الفردية الرقمية هي نفسها نصائح اللقاءات الفردية في المكتب، ولكنها تستحق أن توضع في الحسبان. قبل لقائك الفردي الرقمي: احرص على تحديد نقاط الحديث وأجندة اللقاء المشتركة قبل لقائك الفردي الرقمي، إذ تساعد الأجندة المشتركة المدير والموظف التابع له على معرفة الشيء الذي سيناقشونه، ومن الأسهل أن تحضُر جاهزًا. أثناء المكالمة الفردية الرقمية: أفضل طريقة لبدء محادثة الفيديو هي ذكر الأمور التي ستناقش في اللقاء. تساعدك معرفة الطريقة التي وصل بها الشخصان إلى اللقاء على بدء اللقاء بطريقة صحيحة. لذلك اطرح الأسئلة وناقش نقاط الحديث ولا تنسَ كتابة الملاحظات. بعد لقائك الفردي: من المهم المتابعة بغض النظر عما ناقشتما في لقائكما عبر إرسال ملخص صغير للنقاط الرئيسية والخطوات التالية التي تلحق اللقاء وتحديد أجندة اللقاء التالي. أرسل دعوةً مجدولةً في نهاية كل لقاء لتحديد موعد اللقاء التالي وحدد نقاط المناقشة التي تريد متابعتها. خمسة نصائح ليكون اللقاء الفردي الرقمي أفضل تساعدك هذه النصائح ليكون اللقاء الفردي أكثر إنتاجيةً وتأثيرًا. إليك هذه النصائح المهمة: أعط التعليقات واسأل الموظفين أن يعطوك تعليقاتهم. تُعَد هذه الفكرة جيدةً دائمًا، إذ من الجيد أن يتبادل المدير وموظفيه التابعين له التعليقات البناءة، بالتالي إذا اهتم الموظفون بإعطاء التعليقات، فستصبح عادةًَ مكتسبةً لديهم. اختر مكالمة الفيديو كلما أمكن ذلك. صحيح أنه يمكن أن تكون المكالمات الهاتفية استراحةً من الاجتماعات عن بعد المتعاقبة، ولكن يجب أن يكون التواصل وجهًا لوجه ليكون اللقاء فعالًا. ناقش تقدم الأعمال. محادثات العمل هي الأساس لاندماج الموظف والتطور الشخصي والمحافظة على الموظف لفترة طويلة في الشركة، لذلك احرص على تحديد ومتابعة الأهداف والتركيز على التطور. تعوّد على الاستماع بفعالية. بعدما يسأل المدير الأسئلة في اللقاءات، يجب أن يركز على ما يقوله موظفه. اطفئ الإشعارات والشاشة الأخرى وركز على الأحداث في غرفة اللقاء الرقمية. اذكر مستجدات المشاريع في اجتماعات الفريق وليس في اللقاءات الفردية. يمكن أن يستفيد الجميع في فريقك عن بعد من مستجدات المشروع، لذا ناقش هذه المستجدات في الاجتماعات. يجب أن تركز اللقاءات الفردية على احتياجات الأفراد وأهدافهم وتحدياتهم. أفكار ليكون اللقاء الفردي عن بعد أنشط يمكن أن يشعر الأشخاص بالتعب أثناء اللقاءات الفردية الرقمية، تمامًا مثل جميع الاجتماعات عن بعد، خاصةً عندما تفكر باللقاء الفردي مثل أي اجتماع مسجل في جدول أعمالك، لكن لا يجب التفكير بهذه الطريقة. إليك بعض الأفكار ليكون اللقاء عن بعد أنشط وأكثر اندماجًا. غيّر بيئة العمل عن بعد. جرب أن تتكلم في غرفة أخرى أو خارج المنزل قليلًا. أنشئ عادات جديدة. خصص أول 5 دقائق من اللقاء لتجهيز الشاي أو القهوة مع الشخص الذي تخاطبه واستغلها في السؤال عن أخباره وأحواله. حاول أن تتكلم وتتمشى. أطفئ الفيديو وتمشى في الحي بينما تتحدث في الهاتف. اجعل اللقاءات الفردية الافتراضية منعشة ومثمرة تتاح للمدير والموظف التابع له الفرصة لفهم بعضهم البعض أفضل في كل مرة يتحدثان فيها ويتحفّز عضو الفريق لتحسين الأداء والاندماج والنجاح. لا يجب أن يكون العمل عن بُعد عائقًا أمام جعل هذه الاجتماعات المتكررة ذات أهمية، لذا استفد كثيرًا من كل لقاء فردي عن بعد بالاستعانة بالنصائح والإجراءات والأفكار المذكورة في هذا المقال، ولا تنظر إلى اللقاء الفردي كأي اجتماع عمل، بل فكر به كأنه فرصة لقضاء بعض الوقت الممتع. ترجمة وبتصرف للمقال Make virtual one-on-one meetings more impactful and productive لكاتبه Nora St-Aubin. اقرأ أيضًا كيفية إدارة الاجتماعات الفردية باحترافية متى تعتمد اللقاء الفردي ومتى تعتمد اجتماع الفريق أهداف الاجتماعات الفردية وكيفية تحديدها كيف تحافظ على فريقك الموزع الذي يعمل عن بعد متماسكا1 نقطة
-
بدأنا في هذه السلسلة برمجة الذكاء الاصطناعي تعريف الذكاء الاصطناعي وارتابط البرمجة والذكاء الاصطناعي ثم تحدثنا عن البرمجة وأساسيات البرمجة بلغة بايثون، وسنكمل في هذا المقال الحديث بالتفصيل عن تخصص تعلم الآلة تحديدًا الذي يندرج ضمن الذكاء الاصطناعي. تعريف تعلم الآلة Machine Learning عرَّف البروفسور توم ميتشل Tom Mitchell -وهو عالم حاسوب أمريكي وبروفيسور في جامعة Carnegie Mellon في الولايات المتحدة- تعلم الآلة بالتعريف التالي: لا بأس إذا بدا ذلك التعريف غامضًا قليلًا، إذ سنشرحه أثناء الحديث عن الخطوات التطبيقية وعملياتها في برمجة تعلم الآلة، كما سيُعرَّف كل رمز من تلك الرموز المذكورة في التعريف بشيء من التفصيل لاحقًا لنرى موقع تلك الرموز من الجانب التطبيقي. إنّ نماذج تعلم الآلة ما هي إلا خوارزميات بُنيت على قواعد الجبر الخطي والتفاضل والتكامل وعلم الإحصاء؛ ولذلك فإنّ فروع تلك الرياضيات مهمة لدارسي تعلم الآلة ليُؤهلوا لفهم أفضل لما يحدث وراء الأحداث ولفهم ما تفعله الخوارزميات، وبالطبع ستكون محاولة فهم لماذا تعمل تلك الخوارزميات بالأمر الشاق جدًا، وذلك تخصص باحثي الذكاء الاصطناعي القائمين باختراع وتطوير تلك الخوارزميات؛ أما نحن المبرمجين فما نريده لا يزيد عن فهم آلية عمل تلك الخوارزميات. يُعَدّ تعلم الآلة Machine Learning فرعًا من فروع علم الذكاء الاصطناعي، وبالأحرى هو إحدى طرق صناعة الذكاء من بين طرق متعددة وهو الأكثر شيوعًا في العقد الحالي مع أنّ الأبحاث في ذلك العلم كانت قد بدأت منذ القرن الماضي بالفعل، لكن لم تر تلك الخوارزميات النور لعدم وجود إمكانيات حاسوبية في ذلك الوقت تتيح تنفيذ تلك الخوارزميات، فالحواسيب لم تكن قادرة على تنفيذ هذه المهام، كما أنّ الأمر يتطلب الكثير والكثير من البيانات التي لم تكن لتتوفر بالصورة المطلوبة في ذاك الوقت. يدعى ذلك العلم في وسط الرياضيات باسم التعلم الإحصائي Statistical Learning أو التحليلات التنبؤية Predictive Analytics، ويسعى ذلك العلم ببساطة إلى استخراج المعلومات من البيانات السابقة ليتنبأ معلومات أخرى بصورة دقيقة لم يتعرف عليها من قبل. نرى تطبيقات تعلم الآلة واضحةً في حياتنا اليومية على الإنترنت، إذ تُستخدَم خوارزميات تعلم الآلة في اليوتيوب ليرجِّح المقاطع أثناء تصفحك لمشاهدتها، كما أنّ أمازون تستخدِمها لترجيح المنتجات؛ أما فيسبوك فيستخدِمها في تحديد وجهك ووجه أصدقائك في صوركم معًا، فعندما تتصفح أحد تلك المواقع فستجد على الأرجح في كثير من أجزائها مهامًا تستخدِم فيها إحدى خوارزميات تعلم الآلة، ولكن بعيدًا عن تلك المواقع والمجالات الترفيهية والتجارية، فإنّ لمجال تعلم الآلة أثر عظيم في المجالات العلمية الأخرى، إذ يُستخدَم في تحليل سلاسل الحمض النووي وفي فهم النجوم وإيجاد الكواكب البعيدة وتشخيص الأمراض وإيجاد الأدوية والكثير من الأمور الأخرى. لا يعني ذلك بالضرورة أنّ كتابة أيّ برنامج تعلم آلة هو حصرًا للمشروعات الكبيرة المؤثرة في العالم، فيمكن الاستفادة من برامج تعلم الآلة على المستوى البسيط، إذ تستخدِم الكثير من الشركات الصغيرة والمتوسطة نماذج تعلم الآلة في اتخاذ القرارات المستقبلية الصحيحة لأعمالها، فلتلك النماذج استخدامات كثيرة منها البسيط ومنها المعقد والكبير. حتى هذا اليوم معظم التطبيقات الذكية التي تُصنَع دون تعلم الآلة تدعى بالأنظمة الخبيرة، وهي برامج تُستخدَم فيها قواعد اتخاذ القرارات، وهي تُستخدم في معالجة البيانات ومدخلات المستخدِم ثم محاولة كتابة تعليمات شرطية تؤدي إلى ناتج ما، كما تحتاج تلك النظم إلى معرفة دقيقة للغاية بالمهمة المطلوبة، لكن لن يكون البرنامج دقيقًا إلى حد كبير في كثير من الأحوال، كما أنه ستُعاد كتابة أجزاء كبيرة من البرنامج أو حتى إعادة كتابة البرنامج كليةً لإجراء أيّ تعديل بسيط على المنطق الأساسي في البرنامج. لن تنجح الأنظمة الخبيرة في القيام بالمهام المطلوبة في كثير من الأحوال، فلا يمكن على سبيل المثال لمثل تلك الأنظمة إجراء مهمات متعلقة بالصور مثل تحديد الوجه أو تحديد الكائنات الموجودة في الصور؛ وذلك لأنه يكاد يكون من المستحيل على البشر التوصل إلى آليات وشروط محددة يستطيع كتابتها للحاسوب ليحدد بها خصائص الوجه أو تحديد خصائص كائنات معينة في الصور، إذ أنّ طريقة معالجة البشر للصور في الدماغ تختلف عن الحاسوب، فمشكلة تحديد الوجوه البشرية في الصور تلك ظلت غير محلولة حتى عام 2001م، إذ جرى صناعة نموذج تعلم آلة يستخدم الكثير من صور الوجوه البشرية لتحديد الخصائص التي يمكن عن طريقها تحديد الوجه البشري في الصور. كما أوردنا فإن تعلم الآلة هو تخصص فرعي من تخصصات الذكاء الاصطناعي، ولكن حتى تعلم الآلة ينقسم إلى تخصصات فرعية أخرى مثل التعلم العميق Deep Learning وهو المختص بحل المشكلات والتطبيقات المعقدة عن طريق محاكاة شبكة عصبية من الدماغ البشري ويعمل ذلك الفرع على حل مشكلات مثل تطبيقات التعرف على الوجوه في الصور وغيرها. يعتمد تعلم الآلة اعتمادًا كبيرًا على البيانات الضخمة Big Data وجودة تلك البيانات؛ ولذلك يتداخل تخصص تعلم الآلة مع تخصص آخر يدعى علم البيانات Data Science، والحدود بين العلمين غير واضحة بصورة دقيقة، إلا أننا نستطيع القول بأن تعلم الآلة يعتمد على علم البيانات وليس العكس، إذ يستطيع عالم البيانات التعامل مع البيانات الكبيرة وتحسين جودتها عبر الأساليب المدروسة مسبقًا حتى تكون البيانات جاهزةً بالفعل لتدريب نموذج تعلم الآلة المراد صنعه، وذلك عادةً ما يفعله مهندس تعلم الآلة، إذ أنه في كثير من الأحوال وخاصةً في الشركات الصغيرة لا يوجد متخصص في علوم البيانات لتحسينها قبل إرسال البيانات إلى مهندس تعلم الآلة للتدريب النموذج، ولا بأس إذا بدت الأمور غير واضحة لك حتى الآن. توضح الصورة التالية العلاقة بين الذكاء الاصطناعي Artificial Intelligence وتعلم الآلة Machine Learning والتعلم العميق Deep Learning. أما الصورة التالية، فستستطيع من خلالها فهم الترابط والتداخل بين علم البيانات Data Science وعلوم الذكاء الاصطناعي المختلفة. عرَّف أرثر صامويل Arthur Samuel في عام 1959م تعلم الآلة بأنه حقل الدراسة الذي يعطي للحواسيب القدرة على التعلم دون أن تكون مبرمجةً صراحةً، ونجد أنّ ذلك التعريف معبر للغاية، وقد ظل ذلك التعريف مستخدمًا حتى اليوم، ولكن مع ذلك فإنه قد يُفهم التعريف بصورة خاطئة عند كثير من غير المتخصصين، إذ أنّ أرثر لم يقصد أنه بإمكان الآلات اتخاذ القرارات بدون برمجة مسبقة على الإطلاق لأن ذلك لم يحصل، إذ أنّ مجال تعلم الآلة يعتمد اعتمادًا كبيرًا على البرمجة، ولكن يقصد بذلك أنّ الآلة تستطيع التعلم من البيانات لاستنباط واستنتاج أنماط من خلال علم الإحصاء وخوارزميات الرياضيات المكتوبة بلغة البرمجة لتستطيع من خلالها التوقع أو أداء مهمة ما بناءً على برمجة مسبقة، ولكنها ليست برمجة صريحة بالمعنى التقليدي الذي يحدد مخرجات البرامج بصورة نوعية وكمية. كان أرثر صامويل من أوائل مَن استخدم مصطلح تعلم الآلة Machine Learning وذلك في الورقة البحثية التي نشرها في العام نفسه 1959 والذي عرف فيه المصطلح بعنوان Some Studies in Machine Learning Using the Game of Checkers، وهو يحاول في تلك الورقة إثبات أنه بإمكان الآلات تعلم لعب الألعاب وبمستوى أفضل من مبرمج الآلة نفسه. الفرق بين البرمجة الاعتيادية وبرمجة تعلم الآلة تختلف برمجة الحاسوب الاعتيادية وبرمجة نماذج تعلم الآلة في أوجه كثيرة سنناقشها في هذا القسم. البيانات الضخمة Big Data لا تحتاج البرمجة الاعتيادية في أغلب الأحوال إلى بيانات ضخمة لصناعة تطبيقاتها، فبالرغم من كونها قد تخزِّن تلك البيانات الضخمة واستخدامها، إلا أنها ليست ضرورية، ولكن تحتاج برمجة تعلم الآلة إلى البيانات الضخمة بصورة أساسية حسب ما يراد برمجته، فمثلًا في حال برمجة نموذج تعلم آلة -أو بالأحرى نموذج تعلم عميق- يحدِّد الوجوه البشرية في الصور، فسنحتاج إلى كثير من الصور التي تحتوي على وجوه بشرية حصرًا وبصورة واضحة حتى يتعلم منها النموذج خصائص الوجه البشري، أو مثلًا إذا أردنا برمجة نموذج تعلم آلة يتوقع قيمة سعر منزل في منطقة ما، فسنحتاج إلى بيانات تحتوي على خصائص العقارات وأسعارها في تلك المنطقة لنمرر بعدها تلك البيانات للنموذج وليتعلم منها خصائص كل عقار وسعره حتى يستطيع بعد ذلك توقع سعر أيّ عقار في تلك المنطقة بناءً على خصائصه حتى ولو لم يكن ذلك العقار من ضمن العقارات التي مررناها إليه مسبقًا، وبناءً على ذلك فإنّ الحاجة إلى البيانات الكبيرة في نماذج تعلم الآلة ضروري وأساسي للغاية، كما أنّ تحسين جودة تلك البيانات أيضًا ضروري. الدقة وآلية العمل تُمرَّر مدخلات المستخدِم في البرمجة الاعتيادية، ثم إجراء عمليات محددة مسبقًا من قبل البرنامج ثم إرجاع الخرج إلى المستخدِم مرةً أخرى؛ أما في تعلم الآلة فالأمر يختلف قليلًا، إذ تُستقبَل في كثير من الأحيان مدخلات من المستخدِم فعلًا، مع ذلك فإنه لا تُجرى عمليات محددة مسبقًا من قِبَل البرنامج، وإنما تُمرَّر المدخلات إلى الخوارزمية -أي النموذج- الذي دُرِّب من قبل حتى يتوقع الخرج الذي سيعاد مرةً أخرى إلى المستخدِم، ولنأخذ المثال السابق للعقارات لفهم ذلك بصورة واضح. لا يسعنا سوى استخدام قواعد اتخاذ القرارات لتحديد سعر العقار في البرمجة الاعتيادية، فإذا طلبنا مثلًا من المستخدِم إدخال عدد غرف العقار ومساحته بالمتر المربع، فكل ما يسعنا فعله هو كما يلي: إذا كان عدد الغرف أكبر من غرفتين والمساحة أكبر من 100 متر مربع، فسيكون السعر 100 ألف دولار أمريكي، فيما عدا ذلك فسيكون السعر 80 ألف دولار أمريكي، وبذلك فإنه لمن المستحيل أن يُعيد البرنامج أية قيمة سوى 100 ألف أو 80 ألف فقط، وهي القيم المبرمَجة بالفعل، ولكن مع ذلك فيمكننا تعقيد المثال بصورة أكبر حتى يُحسَب سعر أساسي تبعًا للمتر المربع ثم إجراء بعض العمليات الحسابية بناءً على عدد الغرف مثلًا، لكن في النهاية سيكون سعر المتر عددًا محددًا بالفعل من مجموعة أعداد محدَّدة من قبل المبرمِج. أما في الواقع، يختلف سعر المتر المربع من شارع إلى آخر ومن مبنى إلى آخر، في حين أن الأمر يختلف في نماذج تعلم الآلة لأننا في تلك الحالة ننشئ نموذجًا بناءً على إحدى الخوارزميات التي نختارها تبعًا للمشكلة المراد حلها، ثم ندرِّب تلك الخوارزمية على بيانات العقارات في تلك المنطقة، إذ ستحتوي تلك البيانات على مساحة وعدد غرف كل عقار ثم سعر كل عقار، بعد ذلك نختبر النموذج لمعرفة مدى دقة توقعه لأسعار العقارات عند إدخال بيانات عقار آخر، أي المساحة وعدد الغرف. الحدود النوعية كما أوردنا من قبل في هذا المقال أنه توجد الكثير من المشكلات التي من المستحيل واقعيًا تجسيدها عبر البرمجة التقليدية مثل مشكلة التعرف على الوجوه في الصور ومشكلة الترجمة من لغة إلى أخرى بصورة دقيقة ومشكلة التعرف على الصوت وتحويله إلى نص والعكس؛ أما في تعلم الآلة فالأمر مختلف، إذ أنّ تلك المهام التي تُعَدّ مستحيلةً في البرمجة العادية، أصبحت الآن متواجدة تواجدًا فعليًا في حياتنا اليومية، ويضيف الباحثون كل عام نماذج وخوارزميات جديدةً لحل مشكلات جديدة لم تحل من قبل أو خوارزميات لحل مشاكل موجودة لكن بجودة أعلى عبر تعلم الآلة حتى وصلنا اليوم إلى نماذج وتطبيقات مبهرة مثل تطبيق الدردشة ChatGPT وتطبيقات تصميم الصور بناءً على كتابة وصف لها مثل نموذج DALL-E. لنأخذ تلك الأوقات التي نتصفح فيها اليوتيوب مثالًا لتوضيح أكثر، فقد تشاهد في أحيان كثيرة مقاطعًا رياضيةً لدوري كرة القدم الإسباني ودوري كرة القدم الإنجليزي، وستلاحظ في تلك الحالة أن الموقع يرشِّح لك دائمًا ذلك النوع من المقاطع في كل فرصة، مع ذلك فلم يتخذ مبرمِجي الموقع ذلك القرار صراحةً، إذ أنهم لم يكتبوا في برمجية الموقع تعليمة مثل أنه إذا شاهد المستخدِم ذلك المقطع رقم 42 وذاك المقطع رقم 55، فاعرض له المقطع 43 و56 ، وإنما استخدموا إحدى خوارزميات تعلم الآلة التي ترشِّح المقاطع المشابهة لتلك المقاطع التي تشاهدها باستمرار بناءً على ما تقضيه من وقت في مشاهدتها وبناءً على إعجاباتك على المقاطع وعلى تعليقاتك، …إلخ. وبذلك يتضح لنا جليًا مقصد أرثر صامويل في تعريفه لتعلم الآلة. أقسام تعلم الآلة تنقسم نماذج تعلم الآلة إلى عدة أقسام تبعًا لطريقة عملها، إذ يوجد التعلم تحت إشراف Supervised Learning والتعلم دون إشراف Unsupervised Learning والتعلم المعزز Reinforcement Learning. التعلم تحت إشراف Supervised Learning أول قسم من أقسام تعلم الآلة هو التعلم تحت إشراف Supervised Learning ، ويُعرَف أيضًا بالتعلم الاستقرائي Inductive Learning، وهو من أشهر أقسام تعلم الآلة وأكثرها استخدامًا وأيسرها في الفهم والبرمجة، فالتعلم تحت إشراف عمومًا أسهل كثيرًا من التعلم دون إشراف Unsupervised Learning لأنه يعتمد على الاستقراء المبني على معرفتنا المسبقة بجميع خواص النموذج وعلى المدخلات والمخرجات المرادة. تُدرَّس الفكرة الأساسية في التعلم الاستقرائي بالفعل في مناهج الرياضيات في المرحلة الثانوية عادةً، والفكرة في الأمر كله إيجاد أفضل خط يمر بين نقاط عدة بين المدخلات ومخرجاتها لتوقع مخرجات لمدخلات جديدة، وبرغم كون الأمر يبدو مبهمًا، إلا أنه في غاية البساطة وسيتضح ذلك لاحقًا. يعمل التعلم الاستقرائي رياضيًا على دالة تستقبل مدخلات تُدخَل في معادلة جبرية لاستخراج الناتج المتوقع، وتلك المعادلة تضرب المدخلات وتجمعها مع ثوابت أخرى تمثِّل أفضل قيم ممكنة لتوقع الناتج الأقرب للواقع، وتلك الدالة تدعى دالة الفرضية Hypothesis Function وتدعى أيضًا بالمتوقِّع Predictor، فهدف النموذج في النهاية هو تعديل ثوابت دالة الفرضية لهدف تقريب ناتجها مع الناتج الحقيقي، ولمحاولة تبسيط المعنى بغض النظر عن دقة المثال، فلنفترض وجود الدالة الآتية: f(x) = x + 1 في حال كان المتغير x يساوي 1 فإن الدالة ستنتج 2، وفي حال كان المتغير x يساوي 2 فإن الدالة ستنتج 3، …إلخ، ثم بعد ذلك لنفترض أننا نحاول الإتيان بفرضية ناتجها مقارب جدًا إلى ناتج الدالة أعلاه، إذ توجد عدة فرضيات محتملة مثل: f(x) = x + 0.9 f(x) = x + 0.5 f(x) = x + 0.99 عند محاولة استخدام الفرضية الأولى في حالة كان المتغير x يساوي 1 فسيكون الناتج 1.9، وهو يقارب الناتج الحقيقي حال كون x يساوي 1 في الدالة، إذ كان الناتج الحقيقي للدالة هو 2 وناتج الفرضية 1.9، وهما ناتجان متقاربان للغاية، كما يبدو الأمر أكثر تقاربًا عند استخدام الفرضية الثالثة، ففي حال كان المتغير x يساوي 1 فسيكون الناتج 1.99، وهو أقرب للناتج الحقيقي من 1.9؛ وبناءً على ذلك نستنتج أنّ الفرضية الثالثة أفضل من الفرضية الأولى. في حين أن الفرضية الثانية هي الأقل دقة، فعند تطبيقها حال كون المتغير x يحمل القيمة 1 فإن الناتج سيكون 1.5، وهو الأبعد عن الناتج الحقيقي من الفرضية الأولى والفرضية الثالثة. إذًا الفرق بين الفرضيات الثلاثة والتي تمثِّل دورًا مفصليًا في جودة الناتج هو العدد الرقم الأخير، وهو في حالة التعلم الاستقرائي أحد الثوابت Constants في المعادلة والتي نحاول الإتيان بأفضل قيمة ممكنة له حتى تنتج دالة الفرضية ناتجًا مقاربًا للحقيقة بأكبر قدر ممكن، في مثالنا السابق اخترنا الفرضية الثالثة والتي تمثل أعلى دقة، وبالتالي يمكن تجربة دالة تلك الفرضية على مدخلات أخرى، فإذا كان المتغير x يساوي 2 مثلًا، فسيكون ناتج الفرضية 2.99 وهو قريب جدًا من ناتج الدالة الأصلية. إنّ محاولة الوصول إلى أفضل قيم للثوابت في دالة الفرضية هي ما تكون عن طريق جزء التعلم Learning في التعلم الاستقرائي، وتوجد تقنيات وطرق رياضية وخوارزميات مختلفة للوصول إلى القيم المثلى لتلك الثوابت في علم التعلم الإحصائي Statistical Learning الذي أحلنا إليه مسبقًا، ولكون التعلم الاستقرائي أو التعلم تحت إشراف هو أسهل أنواع نماذج تعلم الآلة وأكثرها شيوعًا، ففي هذه السلسلة نحاول التركيز بصورة كبيرة على ذلك النوع من التعلم، وبالرغم من كون الأمر قد يبدو لك معقدًا ومبهمًا فإن ذلك طبيعي للغاية، إذ نهدف من هذا الفصل إلى تعريف بعض المبادئ فقط؛ أما شرح تلك النقاط فسيكون في الفصول القادمة. سنورد ثلاثة أمثلة على التعلم تحت إشراف وهي تحديد نوع السرطان في الصور الطبية إذا كان خبيثًا أو حميدًا، وتحديد إذا كانت عملية تحويل الاموال سليمةً أم مشبوهةً، وقراءة أرقام مكتوبة بخط اليد في القسم التالي، مع أنه توجد أمثلة أبسط على ذلك النوع من التعلم أيضًا، فمثلًا يمكننا محاولة استقراء راتب موظف عن طريق عدد سنين خبرته، إذ يكون عدد سنين الخبرة هو الدخل الوحيد لدينا في ذلك المثال وهو يمثل قيمة المتغير x في الدالة؛ أما راتب الموظف فهو ناتج الدالة. أمثلة أخرى من قبيل استقراء سعر شقة أو عقار في المناطق، أو تصنيف الرسائل البريدية إن كانت سليمة أم مزعجة. الجدير بالذكر هنا أنه يوجد نوعان رئيسيان من مشاكل التعلم تحت إشراف أولهما هو التوقع الخطي أو ما يدعى بالانحدار الخطي Linear Regression، وهي المشاكل التي يتم فيها توقع قيمة مستمرة Continuous Value، أي قيم غير محددة مثل ثمن عقار أو راتب موظف، وثانيهما التصنيف Classification، أو ما يدعى بالتوقع اللوجيستي أو الانحدار اللوجيستي Logistic Regression، وهي المشاكل التي تقرَّب فيها القيم المتوقعة إلى تصنيف محدد، مثل تصنيف الرسائل البريدية إذا كانت صحيحةً أو مزعجةً، أو تصنيف عمليات التحويل المالية إذا كانت سليمةً أو مشبوهةً، أو تصنيف صورة ما إذا كانت تحتوي على قطة أو كلب، أو تصنيف صورة ما إذا كانت تحتوي على وجه بشري أو لا. التعلم دون إشراف Unsupervised Learning القسم الثاني من أقسام تعلم الآلة هو التعلم دون إشراف Unsupervised Learning وهو أكثر تعقيدًا من التعلم تحت إشراف؛ وذلك لكون المعطيات لا تكون واضحةً تمامًا لنا في هذا النوع من التعلم، فنحن نسعى في ذلك النوع من التعلم إلى إيجاد أنماط مشتركة بين البيانات لتُصنَّف بشكل أو بآخر. سُمِّي ذلك النوع بالتعلم دون إشراف لعدم وجود ناتج حقيقي نقييم ونعلِّم النموذج حتى يصل إلى أقرب قيمة له، ففي الأمثلة الواردة في التعلم تحت إشراف كانت لدينا دالة تحتوي على معادلة تنتج قيمة، وتلك الدالة تنتظر معاملًا أو متغيرًا يدعى x، وعندما يساوي ذلك المتغير 1 فإن ناتج الدالة يكون 2، وبذلك يصبح الرقم 2 هو الناتج الحقيقي المراد الوصول إلى أقرب قيمة له عن طريق دالة الفرضية، إذ كان لدينا في التعلم تحت إشراف مدخلات ومخرجات يراد توقعها؛ أما في التعلم دون إشراف فلا توجد مخرجات أصلًا، أي لا يوجد الناتج 2، فنحن فقط لدينا مدخلات مختلفة مثل x عندما تساوي 1 وx عندما تساوي 2 وx عندما تساوي 3 …إلخ، وبالرغم من كون تلك الأمثلة ليست دقيقةً للغاية، إلا أنها فقط لمحاولة إيضاح فكرة عامة عن التعلم دون إشراف والفرق بينه وبين التعلم تحت إشراف. يُعَدّ كل من تحويل مجموعة البيانات Dataset Transformation وخوارزميات التجميع Clustering Algorithms تقنيتَين من تقنيات التعلم دون إشراف؛ أما الأولى فهي عملية تسعى إلى تحويل البيانات التي يُدرَّب النموذج عليها حتى تكون في صورة أكثر إفادة وسهولة في التعامل، وقد يتم ذلك حتى يستطيع المبرمج فهم البيانات بشكل أفضل، أو حتى يتم تهيئة البيانات لخوارزمية تعلم آلة أخرى، ومن أهم تطبيقات ذلك النوع من الخوارزميات -أي خوارزميات تحويل هيئة مجموعة البيانات- هو تقليص الأبعاد Dimensionality Reduction، فقد تحتوي مجموعة البيانات على أبعاد كثيرة مختلفة يصعب التعامل معها، والبعد في علوم البيانات وتعلم الآلة يشير إلى الميزة أو الخاصية في البيانات والتي أشرنا إليها عند الحديث عن هندسة الميزات أو هندسة الخواص Feature Engineering، وهي ببساطة العمود إذا رسمنا البيانات على هيئة جدول، ففي حال كان لدينا مجموعة بيانات لموظفي شركة ما على سبيل المثال، وكانت تلك البيانات تحتوي على العمر والاسم وتاريخ الميلاد والمؤهل الدراسي لكل موظف، فإن كل خاصية من تلك الخواص هي بُعد من الناحية التقنية والرياضية، أي أن الاسم بُعد والعمر بُعد وتاريخ الميلاد بُعد والمؤهل الدراسي بُعد، …إلخ. إن هدف تحويل مجموعة البيانات هو تقليل عدد الخواص في البيانات عبر تعلم الأنماط المشتركة، وإنّ لتلك التقنية استخدامات عدة من أبرزها تقليل عدد الأبعاد إلى بعدين فقط لتسهيل عملية تصوير البيانات في رسوم بيانية، وهناك أيضًا بعض التطبيقات الأخرى مثل استخراج كلمة مفتاحية واحدة تعبِّر عن كل مقالة من مجموعة من المقالات بناءً على محتواها؛ أما خوارزميات التجميع فهي تهدف إلى إيجاد البيانات المتشابهة والمختلفة للتمييز بين كل مجموعة من البيانات، فيمكن مثلًا تقسيم مجموعة من الصور حسب الأشخاص الموجودين فيها، إذ تُقسَّم مجموعة من الصور لوجود الشخص 1 فيها ومجموعة أخرى من الصور لوجود الشخص 2 فيها، وعلى الرغم من أنّ الخوارزمية لا تعرف هذا ولا ذاك، ولكنها تقسِّم مجموعة البيانات إلى مجموعات أصغر بناءً على التشابهات والاختلافات الموجودة في كل صورة. التعلم شبه الخاضع للإشراف Semi-supervised Learning التعلم شبه الخاضع للإشراف Semi-supervised Learning هو مزيج بين القسمين السابقين، لذلك قد لا يُذكر في بعض الكتب والمراجع، وهو عن التعامل مع البيانات التي يحتوي بعضها وليس كلها على مخرجات، فقد يكون لدينا مثلًا بيانات لموظفي شركة ما ويوجد لدينا خواص مثل الاسم والعمر والمؤهل الدراسي لكل موظف، ومع ذلك فإن بعض هؤلاء الموظفين لدينا عنهم معلومات إضافية مثل الراتب، وبذلك أصبح لدينا معلومات إضافية لبعض الموظفين. أحد الأمثلة التطبيقية على ذلك النوع هو خدمات رفع الصور مثل خدمة Google Photos، إذ أنه بعد رفع صورك مع أفراد العائلة، ستتمكًن الخدمة من معرفة أن الشخص س ظهر في الصورة 1 و3 و6؛ أما الشخص ع ظهر في الصورة 2 و3 و4، وهذا الجزء دون إشراف، ولكن قد تتمكن الخدمة من معرفة أنّ الشخص س، هو في الحقيقة اسمه زيد، ولكنها لا تعرف اسم الشخص ع، إذ لا توجد لديها تلك المعلومة، وتستخدِِم الخدمة تلك المعلومة الإضافية لتوفر لمستخدميها خدمة البحث في الصور عن طريق الأسماء. التعلم المعزز Reinforcement Learning يُعَدّ التعلم المعزز أو التعلم التعزيزي Reinforcement Learning أكثر أنواع تعلم الآلة طموحًا وأكثرها صعوبةً وتعقيدًا بالطبع وهو وحش مختلف تمامًا عن باقي الأنواع، إذ في التعلم المعزز يُصنَع نظام تعلم يدعى بالوكيل Agent، وفي هذا الإطار يلاحظ الوكيل ما حوله في البيئة ثم يتخذ قرارًا بإجراء فعل ما، ويحصل بناءً على ذلك الفعل على نقاط مكافأة Rewards أو على نقاط عقوبة Penalties، وعن طريق تلك النقاط يجب على الوكيل تحديد الاستراتيجية المثلى للتعامل مع المواقف واتخاذ القرار الصحيح، وتلك الاستراتيجية التي يطورها الوكيل تدعى سياسة العمل Policy، والأمر هنا كما تلاحظ أشبه بتعليم طفل صغير وما يجب أن يفعله وما لا يجب أن يفعله عن طريق نظام الثواب والعقاب. تُعَدّ طريقة تطوير سياسة العمل تلك هي أنواع الخوارزميات في التعلم المعزز وتدعى Policy-Based Algorithms أي الخوارزميات القائمة على السياسة، ولكن يوجد أنواع أخرى مثل القائمة على القيمة Value-Based والقائمة على النموذج Model-Based، …إلخ، والأمثلة التطبيقية على هذا النوع من التعلم شتى، إذ أنّ الكثير من الروبوتات مبرمجة عن طريق ذلك النوع من نماذج تعلم الآلة لتتعلم كيفية المشي، ومثال آخر هو برنامج ألفا جو Alpha Go الذي تصدر الأخبار عام 2016م حين هزم بطل العالم في لعبة جو اللاعب لي سيدول Lee Sedol، وهذا البرنامج قد صُنِع من قِبَل شركة Deep Mind وهي شركة بريطانية متخصصة في أبحاث الذكاء الاصطناعي تأسست عام 2010م وقد استحوذت عليها شركة جوجل عام 2014م والتي بدورها تغير اسمها إلى Alphabet عام 2015م، لتصبح شركة جوجل شركات Alphabet بجانب Deep Mind. تعلَّم برنامج ألفا جو لعب تلك اللعبة عن طريق التعلم المعزز، إذ حلل البرنامج ملايين الاحتمالات في اللعبة ثم لعب ضد نفسه مرارًا وتكرارًا عبر نظام نقاط الثواب والعقاب، حتى أنه طوَّر السياسة المناسبة Policy والتي استخدمها في اللعب ضد بطل العالم في اللعبة، ونذكر هنا أن البرنامج أثناء اللعب ضد بطل العالم لم يكن في تلك المرحلة في إطار التعلم، وإنما كان في إطار استخدام السياسة التي طورها أثناء تعلمه السابق لمباراته ضد بطل العالم. ودونًا عن باقي أقسام تعلم الآلة، فإن التعلم المعزز لا يحتاج بصورة ضرورية إلى بيانات مسبقة للتعلم منها، وإنما يتعلم من خلال خبرته الشخصية عبر الثواب والعقاب والتجربة والخطأ كما أوردنا، والهدف النهائي لهذا النموذج هو تعظيم نقاط المكافأة على المدى الطويل، ونلاحظ أيضًا من أهم الاختلافات بين التعلم المعزز وباقي أقسام خوارزميات تعلم الآلة أنّ التعلم المعزز يقوم بالتعلم باستمرار دون توقف، في حين أنّ نماذج التعلم تحت إشراف والتعلم دون إشراف تصل إلى نقطة محددة بعد التعلم من البيانات الممررة إليها لتصل إلى ذروة ما تستطيع الوصول إليه من معدل الدقة، وعند تلك النقطة يقف النموذج عن التطور والتعلم. إنّ من أفضل طرق تخيل أمر التعلم المعزز هو تخيل لعبة حاسوبية يلعبها الوكيل Agent، إذ أنه لديه مهمة طويلة المدى مع مجموعة من الأفعال التي من الممكن أن يتخذها عند الحاجة، ولكنه عند القيام بالفعل الخاطئ، سيُخصَم من نقاطه في اللعبة، في حين أنّ أداء الفعل الصحيح سيزيد من نقاطه، وبذلك هو يقوم بتطوير وتصقيل مهاراته في اللعبة واستراتيجيته في ممارستها يومًا بعد يوم بناءً على البيانات المسبقة التي تمثلها الخبرة التي اكتسبها أثناء لعبها آلافًا من المرات، ومن التقنيات الخاصة بالتعلم المعزز هي مقايضة الاستكشاف والاستغلال Exploration and Exploitation Tradeoff وعمليات قرار ماركوف Markov Decision Processes أو MDPs اختصارًا في بعض المراجع، بالإضافة إلى تعلم كيو Q-Learning، والتعلم المعزز العميق Deep Reinforcement Learning. دورة الذكاء الاصطناعي احترف برمجة الذكاء الاصطناعي AI وتحليل البيانات وتعلم كافة المعلومات التي تحتاجها لبناء نماذج ذكاء اصطناعي متخصصة. اشترك الآن مشاكل يحلها تعلم الآلة سنتعرف الآن على التطبيقات التي يمكن حلها تبعًا لكل قسم من أقسام تعلم الآلة التي أشرنا إليها للتو. تحديد نوع السرطان إن كان خبيثا أو حميدا يمكن لنماذج تعلم الآلة بناءً على الصورة الطبية تحديد ما إذا كان يوجد سرطان خبيث أو حميد، وستحتاج لإجراء ذلك إلى عدد كبير من الصور الطبية مع تحديد كل صورة كون السرطان الموجود فيها خبيثًا أم حميدًا، وقد تحتاج لذلك إلى رأي طبيب متخصص، بعد تمرير تلك الصور مع نوع السرطان في كل صورة إلى نموذج تعلم الآلة، فسيكون النموذج قادرًا على استقبال صورة طبية جديدة تمامًا ليحدِّد نوع السرطان بناءً على ما تعلمه من قبل في النماذج التي مررتها إليه، ويندرج ذلك النوع من النماذج تحت تصنيف التعلم تحت إشراف. تحديد ما إن كانت التحويلات الائتمانية صحيحة أم مشبوهة سنحتاج في ذلك النموذج إلى بيانات فيها الكثير من عمليات تحويلات الأموال عبر البطاقات الائتمانية مع إدخال قيمة تدل على ناتج عملية التحويل إذا كانت عمليةً صحيحةً أم مشبوهةً، وبعد تدريب النموذج على تلك البيانات، سيستطيع النموذج استقبال بيانات عملية تحويل جديدة ثم تحديد ما إذا كانت العملية مشبوهةً أم صحيحةً بناءً على خبرته السابقة التي تعلمها من البيانات. قراءة أرقام مكتوبة بخط اليد نحتاج إلى كثير من الصور لتدريب ذلك النموذج، والتي تحتوي على أرقام مكتوبة بخط اليد، مع إدخال الرقم الموجود في كل صورة ضمن البيانات ليتم التدريب، إذ يصبح لدى النموذج خبرةً بقدر كاف لاستقبال صور جديدة لا يعرف الأرقام الموجودة فيها ليستخرجها هو، ارجع مثلًا إلى مقال بناء شبكة عصبية للتعرف على الأرقام المكتوبة بخط اليد باستخدام مكتبة TensorFlow لتطلع على مثال عملي. نلاحظ أن المشترك بين التطبيقات الثلاثة السابقة هو وجود مدخلات ومخرجات في البيانات الممررة إلى النموذج، ففي المثال الأول نحن لا نقوم فقط بتمرير العديد من الصور الطبية، بل نقوم بتحديد ما إن كان السرطان الموجود فيها حميدًا أم خبيثًا حتى يتعلم النموذج أنّ الصورة 1 فيها سرطان خبيث، والصورة 2 فيها سرطان حميد، والصورة 3 فيها سرطان حميد، …إلخ، وبعد التدريب تصبح لدينا إمكانية تمرير الصورة الطبية فقط دون تحديد نوع السرطان، إذ سيفعله النموذج بالفعل بناءً على ما تعلمه مسبقًا من الصور والمخرجات التي مررتها إليه. وكذلك الأمر في النموذج الثاني، إذ لا نمرر بيانات عمليات التحويل فقط، وإنما نمرر معلومة إضافية مع كل عملية تحويل -وهو الخرج- وهي إذا كانت تلك العملية عمليةً سليمة أم عمليةً مشبوهةً ليُدرَّب النموذج عليها وليتعرف على أكبر عدد ممكن من العمليات الصحيحة والعمليات المشبوهة، وبعد مرحلة التدريب تلك نستطيع تمرير بيانات عملية تحويل جديدة كليًا -دون خرجها- لم يُدرَّب النموذج عليها، حتى يحدد النموذج ما إذا كانت العملية سليمةً أم مشبوهةً بناءً على ما تدرب عليه مسبقًا، وكذلك الأمر في المثال الثالث. يدعى ذلك النوع من النماذج التي نمتلك فيها المدخلات والمخرجات المراد توقعها بعد ذلك من النموذج بالتعليم تحت إشراف، ونلاحظ أنه بالرغم من كون التطبيقات الثلاثة تحت تصنيف واحد، إلا أنّ أمر جمع وتنقية تلك البيانات اللازمة لتدريب النموذج تتباين للغاية، إذ سيكون من الصعب جمع مثل تلك البيانات في المثال الأول، كما أنه لتحسين جودة البيانات وتنقيتها فإنه يجب استخدام خبير طبي في مثل تلك الصور، لكن الأمر يختلف في نموذج عمليات التحويلات المالية، إذ قد تكون تلك البيانات متاحةً من قِبَل بعض الشركات بالرغم من كونها بيانات غاية في الدقة والحساسية بسبب خصوصيتها؛ أما المثال الثالث فإنه بسيط للغاية ولا يتطلب متخصصين، إذًا أمر تطبيقات تعلم الآلة يختلف كثيرًا باختلاف مجال التطبيق، حتى وإن تشابهت في نوع الخوارزميات، وفيما يلي أمثلة على تطبيقات أخرى. تحديد المواضيع التي تتحدث عنها المقالات لنقل أنه لديك عدد كبير من المقالات المكتوبة التي تريد استخراج المواضيع المهمة التي تتحدث عنها كل مقالة من تلك المقالات، في تلك الحالة أنت فقط لديك المدخلات -أي نصوص المقالات- ولا يوجد لديك فكرة واضحة عن المخرجات، إذ لا تعرف ما هي تلك المواضيع ولا تعرف كم عدد الموضوعات الممكن إيجادها. ارجع إلى مقال تصنيف الشخصيات بالاعتماد على تغريداتهم العربية باستخدام التعلم العميق للاطلاع على مثال عملي مشابه. تقسيم العملاء حسب تفضيلاتهم الشرائية نريد في هذا النموذج تقسيم العملاء حسب تفضيلاتهم الشرائية، وفي تلك الحالة نحن نملك بيانات العملاء، لكننا مع ذلك لا نعرف ما هي تلك التقسيمات وما عددها، لا نعلم إذا كان لدينا مَن يفضِّل شراء الأدوات المنزلية أو من يفضِّل شراء الألعاب أو كليهما؛ ولذلك لا توجد لدينا مخرجات واضحة لهذا النموذج، وارجع إلى مقال استخدام خوارزميات العنقدة لتجزئة عملاء متجر إلكتروني للاطلاع على مثال عملي. نلاحظ في كلا التطبيقين السابقين أنه لدينا المدخلات ولا نمتلك مخرجات واضحة لا من حيث النوع ولا من حيث الكم؛ وهذه التطبيقات تندرج تحت قسم التعلم دون إشراف، لكن في كلتا الحالتين لاحظ أنه علينا الحصول على بيانات المدخلات وهي القاسم المشترك بين هذا وذاك، وفي كل الأحوال من الجيد تنظيم البيانات أو على الأقل تخيلها على صورة جدول، بحيث يحتوي كل صف على بيانات عينة كاملة، وكل عمود هو خاصية Property أو ميزة Feature، ففي مثال تحديد ما إذا كانت عمليات التحويل المالية صحيحةً أم مشبوهةً مثلًا، يمكننا تخيل كل صف على أنه عملية تحويل، وقد يكون لدينا عدة أعمدة مثل عمود يحتوي على بلد التحويل وعمود يحتوي على تاريخ التحويل، …إلخ. أهمية فهم وتحسين البيانات يعتمد تعلم الآلة بجميع نماذجه وخوارزمياته بصورة أساسية على البيانات بغض النظر إذا كانت مدخلات ومخرجات أو حتى مدخلات فقط؛ ولذلك تُعَدّ جودة البيانات وفهمها من أهم الأمور، إذ سيتعين عليك في بعض الأحيان إضافة خاصية أو حذف خاصية من البيانات، وهو ما يدعى بهندسة الخواص أو هندسة الميزات Feature Engineering أو Feature Extraction، وأحيان أخرى ستدمج بعض الخواص معًا بطريقة ما، وكل تلك الأمور نجدها في علم التعلم الإحصائي Statistical Learning الذي تم الإحالة إليه من قبل. تُعَدّ مرحلة فهم البيانات وتنقيتها وتحسينها من أهم المراحل، لأنه بناءً على ذلك تستطيع كمهندس تعلم آلة اختيار الخوارزمية المناسبة للبيانات من خوارزميات تعلم الآلة المتاحة والتي ستوفِّر أفضل دقة ممكنة تبعًا للمهمة التي تريد إجراءها من خلال النموذج الذي بُرمِج، كما أنّ جودة البيانات تلعب دورًا كبيرًا في معدل الدقة Accuracy Rate للنموذج، إذ يمكننا عن طريق تحسين جودة البيانات الوصول إلى دقة 99٪ بدلًا من دقة 97٪، ونستطيع الوصول إلى دقة 97٪ بدلًا من 80٪ عن طريق تعديل قيم معامِلات الخوارزمية المختارة Algorithm Parameters، ولذلك فإن فهمك للبيانات هو أول خطوة على طريق اختيار الخوارزمية وقيم المعاملات. يُعَدّ الجزء الخاص ببرمجة نماذج تعلم الآلة مجرد نقطة من صورة أكبر، وهي المشكلة المراد حلها، ولذلك من الضروري جدًا بقاء تلك الصورة الكبيرة في ذهنك دائمًا عند برمجة نموذج، فبناءً على تلك الصورة الكبيرة ستستطيع تحديد ما إذا كنت تمتلك البيانات الصحيحة أم لا، وتلك هي أول خطوة من الخطوات، ثم بعد ذلك ستستطيع تحديد ما يجب فعله أثناء مرحلة هندسة الخواص عبر تنقية وتحسين جودة البيانات، ثم بناءً على تلك الصورة ستستطيع تحديد الخوارزمية الصحيحة للتطبيق الذي تعمل عليه. اقرأ أيضًا المقال السابق: مختصر البرمجة كائنية التوجه OOP وتطبيقها في بايثون تحليل المشاعر في النصوص العربية باستخدام التعلم العميق الذكاء البشري مقابل الذكاء الاصطناعي المفاهيم الأساسية لتعلم الآلة1 نقطة