بدايتك مع Machine learning

سواء كنت متابع مجال البروجرامينج أو لا فأكيد عارف أن التريند من وقت مش بعيد هو Artificial Intelligence وMachine Learning، في المقالة ديه هنشرح ايه هو الفرق بين الاتنين، وايه المجالات اللي ممكن تستخدمها فيها وايه أحسن طريق ممكن تاخده عشان تبدأ تتعلمه

خلينا الأول نفهم معنى البرمجة العادي، كل اللي أحنا بنعمله هو أننا ندي الكمبيوتر Rules أو قواعد يمشي عليها، وهو بيمشي وراها من غير أي تعديل، الUser يحط الinputs بتاعته، السوفت وير يطبق عليها rules ويطلع output بس كدا، الRules عندك زي أنه مثلا لما يدوس على الزرار دا أرفع الصورة اللي هو أختارها للسيرفر، لو داس على الزرار دا امسح الصورة من السيرفر.

ايه هو AI؟

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

أي محاكاة لطريقة تفكير الانسان

التعريف بسيط جدًا ودا بسبب أنه بيشمل حجات كتير اللي هي أي محاكاة، يعني أول شرط أنه مش لازم يكون في تفكير حقيقي للكمبيوتر في الموضوع أنه هو يحط القوانين بذات نفسه، لأ خالص، أنت ممكن تحط شوية rules بتكون شبه شئ عقل الانسان بيعمله ويعتبر AI، مش لازم كمان rules تكون معقدة، لأ ممكن تبقى بسيطة جدًا وهيطلق عليها اسم AI، شوف الأمثلة الجاية:

لعبة Tic-tac-toe:

اللي هي أشهر لعبة ولو مش عارفها -معتقدش- ممكن تجربها من جوجل هنا، اللعبة ديه مبنية بشوية rules بسيطة جدًا، كلها بتعتمد أنه يشوف المستخدم داس فين ويشوف احتمالية الأماكن اللي ممكن بيها يحتل تلت مربعات متتاليين ويقفلها عليك، الموضوع رغم أنه بسيط إلا أنه يعتبر AI، لأنه مجرد محاولة لمحاكاة تفكير الانسان، رغم أنه فقط ماشي على قواعد الانسان هو اللي حاططها لا أكثر ولا أقل.

الشخصيات في الالعاب:

المثال هنا أكبر شوية، معظم الألعاب بيكون فيها مفهوم enemies أو الاعداء، اللي تحركتها دايمًا وطريقة لعبة بتطون قريبة من انسان حقيقي بيلعب وبتحاول دايمًا انها تكسبك، دا يعتبر Ai برضو عشان هي بتحاكي لعب الانسان، والفرق بينها وبين اللي فوق أنها Complex شوية.

فكدا أحنا عرفنا أن مصطلح AI عبارة عن دائرة كبيرة بيشمل حجات كتير منها أن الكمبيوتر يمشي على rules الانسان حاططها عشان يعمل حجات شبه اللي الانسان بيعملها، أو حتى أن الكمبيوتر يبدأ هو بنفسه يحط الrules، وبسبب أن دايرة AI كبيرة فهي بتضم مجالات كتيرة وكل مجال في مجالات فرعية، عندك مثلاً الروبوتات، Computer Vision اللي منها التعرف على الوجوه، تحويل النص إلى الكلام والعكس، وMachine learning ودا الشئ اللي هنركز عليه النهاردة.

ليه الـAI؟

دا سؤال منطقي في ظل الاهتمام الكبير بAI في العشر سنين اللي فاتوا، الاجابة بسيطة أن AI هيسهل علينا حجات كتير في حياتنا اليومية، وبيخلينا نعرف نعمل حجات أحنا مكناش نعرف نعملها بنفس الدقة ومن غير مجهود كبير، هديك كام مثال عن ازاي AI بدأ يغير فكرتنا عن ازاي الكمبيوتر ممكن يعمل ايه

  • Deep blue : دا يمكن أشهر مثال، DB هو كمبيوتر شركة IBM اللي صنعته تسعينات القرن الماض وكان وظيفته انه يلعب شطرنج، الكمبيوتر دا كان أول كمبيوتر يكسب بطل العالم كاسباروف تحت ظروف ماتش عادية -40 حركة في ساعتين-، الموضوع دا أزهل الكل ساعتها، والكل وجه تفكيره في بداية أن الكمبيوتر يبدأ يتغلب على الانسان في التفكير.
  • OpenApi : عملت agent قادر أنه يتعلم المحادثة ويعمل لغة خاصة بيه تكون أكتر كفاءة، كمان OpenApi عملت كمان كمبيوتر قدر يتغلب على بطل العالم في لعبة DOTA 2.
  • AlphaGo: عملت كمان كمبيوتر قدر يتغلب على أفضل لاعب في لعبة Go ؟

الملخص من الموضوع أن AI دلوقتي بيخلي الكمبيوتر عنده قدرات كبيرة، وهو نفسه داخل في مجالات كتير جدًا

Machine Learning:

لازم تعرف أنه هنا فيه فرق بين AI وML، أو الحقيeة أن ML يعتبر مجال من مجالات الـAI، لو هنتكلم بقا على تعريف الML فهو :

Field of study that gives computers the ability to learn without being explicitly programmed

Arthur Samuel

زي ما أنت قريت أنه هو المجال اللي بتدي فيه الكمبيوتر امكانية أنه يتعلم من غير ما تكون أنت مبرمجه، لو هنشرح الموضوع دا بالتفصيل، افتكر شرح البرمجة العادية أننا بنحط Rules والمستخدم بيحط inputs وبعدين البرنامج يظهر outputs، هنا بقا الموضوع العكس تمامًا.

أنت بتدي الكمبيوتر الداتا وبتديه النواتج المتوقعة وهو بيبدأ يمشي على Algorithms معينة ويديك الrules او البرنامج ، بحيث أنه لما يكون عندك inputs بعد كدا انت مش عارف نواتجها ايه يعرف يديك outputs، هنشرح الموضوع دا بالتفصيل بس ركز في الصورة الجاية عشان تعرف الفرق بين البرمجة العادية والMachine learning

الفرق بين البروجرامينج العادي وML

Deep Learning:

أو Neural Network، دا نوع من ML، طريقة شغلها مستوحاه من طريقة شغل الدماغ، أن الداتا بتمشي في neurons بتكون موجودة في طبقات، فالملخص أنها بتاخد الداتا بيخشوا على أول layer اللي اسمها input layer وبعدين نتنتقل للـlayer اللي بعدها عن طريق حاجة اسمها Channels، في layer ديه بتحاول تطلع بpattern لمعالجتهم واسمها الhidden layers وفي الأخر تطلع output واسمها برضو output layer، ممكن متفهمهاش كويس دلوقتي، فمش مشكلة، أنصحك تشوف الفيديو دا هيفهمك معناها وازاي بتشتغل، بس في كل الأحال لازم تعرف أن Deep learning جزء من ML، وML جزء من AI

في ML عامة، في شوية مصطلحات لازم تكون فاهمها :

  • Feature : دا input بتاعنا اللي اللي هنستخدمه عشان نعمل prediction
  • Label : دا output، في أنواع من ML بيكون موجود وساعات مبيكنش موجود
  • Model : دا المكان اللي بيعمل prediction على حسب feature وlabel اللي عنده، وكل ما عملناله Training أكتر بFeature أكتر قدر أنه هو يطلع نتايج accurate أكتر

أنواع الـML:

فيه تلت أنواع رئيسية من ML بيتقسموا على حسب طريقة اللي الكمبيوتر بيطلع فيهم Rules وعلى حاسب الحجات اللي بتكون معانا، كل واحدة ليها أمثلة وتطبيقات استخدام معينة وليها مميزات وعيوب، هما:

  • Supervised learning : هنا بيكون معانا حاجتين وهما feature وlabel، وبيكون عندنا Model بيكون فيه “القليل” من rules مكتوبة ، وبنبدأ نعمله train بالداتا اللي معانا وممكن نعدل شوية على model عشان يبقى أحسن حاجة وساعتها ممكن نستخدمه بجد ونجيب input احنا مش عارفاين outputs وهو هيطلعهالنا، فهنا الاستخدام الاساسي اللي احنا ندرب Model بيقدر يعمل predict للـoutput من الـinput معانا، فيه أمثلة كتيرة على استخدمها زي Classification وRegression ، لو مفهمتش اسامي الأمثلة عادي لأن كل واحدة تعتبر مجال دراسة لوحدها
  • UnSupervised learning : هنا بيكون عندنا حاجة واحدة بس وهي Feature، والمهمة أن Model ياخد الداتا ديه ويبدأ في عملية تقسيمها على حسب الخواص بتاعتها، هنا أحنا مش عايزين أي prediction في الموضوع، كل الحكاية أننا عايزين نعرف معلومات أكتر عن الداتا، فيه برضو أمثلة لاستخدمها زي Clusters.
  • Reinforcement learning: هنا الموضوع مختلف شوية، الدنيا هنا متقسمة تلت حجات Agent و Enviroment وReward، هنا Agent بيكون موجود في Enviroment وبيحاول ياخد تحركات بحيث أنه يزود الـreward بتاعته لأقصى حاجة، التحركات ديه ممكن تكون عشوائية أو ممكن تكون عن طريقة حجات هو أتعلمها وقت الtrain، ولما تيجي تربط Agent بالEnviroment مرة تاني هيكون اتعلم انهي احسن طريق هيسلكه، النوع دا هو اللي استخدم في AlphaGo عشان يغلف أحسن لاعب في GO.

فيه تفاصيل كتيرة جدًا في كل موضوع وصعب جدًا أنها تتغطى في مقال واحد، أو أنك تبدأ بيها كشخص لسه مبتدئ في ML بس ديه أغلب الحجات اللي هتحتاجها عشان تبدأ تتعلم وتتعمق في المجال، والميزة في ML أنها مش مرتبطة بمجال واحد بس ممكن تطبق في معظم المجالات، حتى البعيدة عن Computer science زي الطب مثلاً، استخدموا الـML عشان يشخصوا حالا مصابة بفيروس عن طريق صورة CT.

Python:

خلصنا جزء قشور الأساسيات، خلينا نبدأ تتعلم منين، أول حاجة أنصحك تتعلمها سواء كان ليك علاقة بالبرمجة قبل كدا أو لسه مبدأتش قبل كدا، هو أنك تبدأ تتعلم بايثون، بايثون لغة ذكية جدًا ومتطورة فلو اعتبرنا اننا عندنا هرم لتطوير اللغات فلغة بايثون تعتبر في قمة الهرم ونوعًا ما تعلمها سهل بالمقارنة بباقي اللغات، معظم الFrameworks في ML شغالة بيها، غير أنك ممكن تعمل بيها حجات تانية كتير منها ممكن تكون Web developing عن طريق Django، بتخليك تعمل مواقع وWeb application قوية.

طيب هتتعلمها منين؟، لو عايز تتعلم الاساسيات ففيه كورسات كتير على اليوتيوب كويسة وكلها من غير فلوس، المصدر اللي انصحك بيه بشدو هو مبادرة 100 مليون مبرمج عربي، التراك الخاص بـFull-Stack Web Development، بيشرح أساسيات بيثون بطريقة حلوة كويسة ونوعًا ما المصدر جديد وهينفعك لو ملكش اي خلفية في بايثون أو في البرمجة عمومًا، بعد ما تخلصه تقدر تبدأ تقرا الdocs وتاتوريال من على النت لو عايز تزود خبرتك في اللغة

Tensor Flow:

فيه بيئات كتير ممكن تبدأ فيها ML بس أنا انصحك بTensor flow واللي شايفها من أحسن frameworks اللي موجودة، جوجل هي المسئولة عنها، الـDocumentation للغة جميلة جدًا وشارحين الدنيا بالتفصيل غير أنها جواها مستوايات سواء للناس المستواها عالي أو الناس اللي لسه بتبدأ تتعلم وغير كدا ليها مشاريع وأمثلة كتيرة، غير أن الContent بتاعها على النت كتير جدًا، فأغلب المشاكل اللي هتقبلك هتكون ليها حلول كتير على المواقع واخر حاجة أنها مفتوحة المصدر تمامًا.

اللغة المفضلة إلى الآن لـTensor flow هي البايثون، وموجودة كمان للجافا سكربت، الشئ الملفت هنا أنك لو هتبدأ بالبايثون فأنت مش لازم يكون عندك كمبيوتر قوي عشان يشغل الEnvironment ولا حتى محتاج تسطب البايثون أو Tensor flow أول حاجة على الكمبيوتر بتاعك، جوجل عاملة خدمة سحابية اسمها Colaboratory، بتخليك تشغل الكود بتاع الML على كومبيترات جوجل اللي بتكون Powerful وOptimized للموضوع دا.

TensorFlow Lite:

دا برضو يعتبر ميزة، تخليك تتجه لـTensorFlow عن أي فريم ورك تانية، وهي أنك ممكن تدرب Model على الكمبيوتر، وبعدين تستخدمه على الاندرويد أو IOS، بالنسبة للأندرويد فنسخة اندرويد ستوديو 4.1 بتدعم رسميًا ملفات الموديلز بتاعت Tensor flow lite، وممكن كمان تستخدمها في جهاز Internet of things، فيه مشاريع كتير أمثلة على الحجات اللي ممكن تعملها بالـTFLite زي Image classification، Smart reply، ممكن تشوف الList كاملة بالأمثلة من هنا ومتأكد أنهم هيعجبوك.

خلصت بايثون وعايز تبدأ TensorFlow، كبداية أنصحك بمكانين:

الكاتب: Mohamed Saber

Pharmacist, Android developer and UI/UX enthusiast

اترك ردا