All posts

تاريخ الـ Machine Learning

Machine Learning · · 4 min read

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

وفجأة حد يطلعلك ويقولك: "أنا عاوز الكمبيوتر ده يتعلم لوحده."

الفكرة دي اللي كانت بتبان خيال علمي وقتها، هي اللي النهارده بقت الـ Machine Learning.

1. البداية: الفكرة جت منين؟

الغريب إن الحكاية ما بدأتش من الكمبيوتر، بدأت من محاولة فهم المخ البشري.

في سنة 1949، عالم نفس كندي اسمه Donald Hebb نشر كتاب اسمه The Organization of Behavior، وقدم فيه فكرة عن إزاي الخلايا العصبية بتتفاعل مع بعض.

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

وده اللي بقى بعد كده أساس لحاجات كتير في الـ Machine Learning، لأن الشبكات العصبية الاصطناعية (Artificial Neural Networks) شغالة بنفس المنطق تقريبا: الروابط بين الخلايا العصبية (Neurons) بتتغير قوتها حسب البيانات اللي النموذج بيشوفها.

وقبل كده كمان، اتنين باحثين هما Warren McCulloch و Walter Pitts قدموا أول نموذج رياضي للشبكات العصبية، بخوارزميات بتحاول تقلد طريقة تفكير الإنسان.

2. أول برنامج "بيتعلم"

في الخمسينيات، واحد اسمه Arthur Samuel كان شغال في IBM، عمل برنامج بيلعب الداما (Checkers).

checkers game

البرنامج ده كان بيحسب فرصة الفوز لكل لاعب في كل موقف، وده يعتبر أول برنامج Machine Learning ظهر.

وفي سنة 1959، Samuel هو اللي طلع مصطلح Machine Learning نفسه.

وكان فيه اسم تاني بيستخدموه وقتها برضه، وهو "الكمبيوترات اللي بتعلم نفسها" (Self-teaching computers).

3. لما الآلات بقا عندها فرصة تتعلم

في أوائل الستينيات، شركة اسمها Raytheon عملت آلة تجريبية اسمها Cybertron.

الآلة دي كانت بتحلل حاجات زي:

  • إشارات السونار.
  • رسم القلب.
  • أنماط الكلام.

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

لما الآلة تاخد قرار غلط، المدرب يدوس على الزرار، فهي تعيد تقييم قرارها.

ودي كانت صورة بدائية جدًا من الـReinforcement Learning.

وبعد كده الاهتمام كمل بموضوع التعرف على الأنماط (Pattern Recognition) طول الستينيات والسبعينيات، ولحد سنة 1981 اتعمل تقرير عن شبكة عصبية اتعلمت تتعرف على 40 رمز من شاشة كمبيوتر (26 حرف، و10 أرقام، و4 رموز خاصة).

4. طب يعني إيه البرنامج "بيتعلم" أصلا؟

هنا بقى ظهر سؤال مهم: إمتى نقدر نقول إن البرنامج اتعلم فعلا؟

جاوب Tom Mitchell جاوب على السؤال ده بتعريف بقى من أشهر التعريفات في المجال:

البرنامج بيتعلم من خبرة E، بالنسبة لنوع من المهام T، ومقياس أداء P، لو أداؤه في المهام T (مقاسا بـ P) بيتحسن مع زيادة الخبرة E.

خلينا نفهمها بمثال الإيميلات اللي اتكلمنا عنه قبل كده في البوست ده :

  • المهمة (T): إن البرنامج يصنف الإيميل Spam ولا Not Spam.
  • الخبرة (E): الإيميلات اللي بيتدرب عليها.
  • مقياس الأداء (P): نسبة الإيميلات اللي بيصنفها صح.

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

5. الانفجار الكبير

بعد سنين طويلة من الأبحاث، المجال بدأ يتحرك بسرعة رهيبة:

  • سنة 2012: نموذج اسمه AlexNet عمله Alex Krizhevsky و Ilya Sutskever و Geoffrey Hinton، وكسب مسابقة ImageNet للتعرف على الصور بنتايج أحسن بكتير من اللي قبله، وده خلى الناس تبدأ تهتم بالـ Deep Neural Networks بجد.
  • سنة 2013: Tomáš Mikolov وزمايله طلعوا word2vec، وهي طريقة بتحول الكلمات لأرقام (Vectors) بتعبر عن معناها، وده من نصوص ضخمة جدًا.
  • سنة 2014: Ian Goodfellow وزمايله طلعوا الـ GANs، وهي فكرة إن عندك نموذجين بيتنافسوا مع بعض، واحد بيولد بيانات والتاني بيحاول يكشفها.
  • سنة 2016: برنامج AlphaGo بقى أول برنامج يكسب لاعب محترف في لعبة Go على رقعة كاملة ومن غير أي أفضلية، باستخدام الـ Deep Learning والـ Reinforcement Learning.
  • سنة 2017: Ashish Vaswani وزمايله قدموا الـ Transformer، وهو معمارية بتعتمد أساسًا على حاجة اسمها Attention.

والـ Transformer ده بالمناسبة هو الأساس اللي معظم نماذج اللغة الكبيرة اللي بنستخدمها النهارده مبنية عليه.

Keep reading