تعلم الآلة

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

نسمع مؤخراً في الأخبار العديد من الإنجازات المبهرة للذكاء الاصطناعي (Artificial Intelligence)، وبالرغم من احتواء العديد منها لمزاعم غير صحيحة إلا أن بعضها حقيقي وله أثر على العمل والحياة اليومية. أغلب هذه النجاحات في السنوات العشر الماضية كانت عن طريق تطبيقات لأحد المجالات الفرعية للذكاء الاصطناعي، وهو تعلم الآلة (Machine Learning)، وقد تحدثت عنه سابقاً في هذا المقال لمن أراد أن يتعرف عليه. إحدى مجموعات خوارزميات تعلم الآلة هي الشبكات العصبية (Neural Networks)، استوحيت فكرتها في البداية من طريقة عمل العقل البشري، ثم تطورت بعد ذلك إلى أشكال متعددة. مع التطور في المجال، صار في الإمكان تدريب شبكات عصبية أعقد وذات طبقات أكثر بكثير مما كان في الماضي، ويسمى المجال الذي يهتم بهذه الشبكات العصبية العميقة والمعقدة التعلم العميق (Deep Learning)، وهو موضوعنا هنا. يرجع انتشار استخدام خوارزميات التعلّم العميق إلى قدرتها على تعلّم نماذج بالغة التعقيد كان من الصعب تعلمها سابقاً، مما أتاح العديد من التطبيقات التي تعالج احتياجات واقعية، كرؤية الحاسب (Computer Vision) ومعالجة اللغات الطبيعية (NLP).

تعد الشبكات العصبية من الخوارزميات المهمة في مجال تعلّم الآلة، وهي تتبع لمدرسة تسمى التشبيكية (connectiontist)، والتي استقت أفكارها من محاولة محاكاة الدماغ البشري وتشابك الأعصاب. ترجع بدايات فكرة الشبكات العصبية لعام 1943م، ببحث نشره كلاً من وارن مكولش (Warren McCulloch) ووالتر بيتز (Walter Pitts)، حيث تم وضع نموذج رياضي لكيفية عمل العقل وشرح نموذج للعصبونات (neurons) التي تستخدم حتى الآن كمكون أساسي للشبكات العصبية [1]. وفي عام 1949م قام دونالد هيب (Donald Hebb) بنشر بحث يوضح كيف يتم التعلم في الدماغ، حيث شرح كيف أن الروابط بين العصبونات البيولوجية التي تستخدم سوياً تقوى مع كل استخدام  [2].

بناء على هذه النماذج تم اقتراح عدة شبكات عصبية أشهرها جهاز المُستَقبِل (Perceptron) [3]، وهو محاكاة للنموذج الذي قام بوضعه كل من مكولش وبيتز عام 1943. المُستَقبِل هو عبارة عن مصنّف خطي (linear classifier) يستقبل مُدخلات ويقوم بجمعها بشكل موزون حسب الأوزان ثم إخراج القيمة 0 أو 1 بناءً على قيمة الحد (threshold). ما كان يعيب الشبكات العصبية في تلك الأثناء أنها كانت مصنّف خطّي لا تتمكن من تصنيف المشاكل اللّاخطّية (non-linear)، وقد دخلت الأبحاث في الشبكات العصبية لمرحلة جمود حتى تم حل المشكلة لاحقاً.

لعل من أهم الأمور التي أثَّرَت في تطور الشبكات العصبية هما خوارزميتي الانتشار العكسي (backpropagation) والنزول الاشتقاقي (gradient descent) الذين من خلالهما صار في الإمكان تدريب شبكات عصبية متعددة الطبقات يمكن من خلالها الخروج بمصنّفات غير خطية. بالرغم من اقتراحها في الستينات، إلا أن خوارزمية الانتشار العكسي تم إعادة شرحها بشكل أوضح وإشهارها عن طريق كتاب (Learning Internal Representation by Error Propagation) الذي نشر عام 1986م من تأليف روميلهارت (Rumelhart) وهينتون (Hinton) وويليامز (Williams) [4]. وفي التسعينات وما بعدها تم اقتراح العديد من أنواع الشبكات العصبية التي لا تزال تستخدم حتى الآن، مثل LSTM وCNN و GAN وغيرها.

كما ذكرت سابقاً، التعلم العميق هو فعلياً شبكات عصبية ولكن بطبقات أكثر ومعماريات أعقد. فتاريخ التعلم العميق مرتبط بشكل كبير بالشبكات العصبية. ولكن كان هناك مشاكل تعيق تدريب شبكات بهذا التعقيد، كقلة البيانات وضعف القدرة الحاسوبية وبعض المشاكل في الخوارزميات التي تم حلها مع الوقت. لا يوجد حد واضح لبداية ظهور مجال التعلم العميق، قد يكون بدأ على الأرجح عام 2006م ببحث منشور يشرح كيفية تدريب شبكات عميقة من نوع Deep Belief Networks [5]. ولكن الشهرة الحقيقية التي سببت انتشار استخدام التعلم العميق هو فوز خوارزمية تعلم عميق (AlexNet [6] بتحديLarge Scale Visual Recognition Challenge  (ILSVRC) باستخدام مجموعة البيانات ImageNet عام 2012م بالمركز الأول بفارق كبير جداً بين المركزين الأول والثاني. هذا التفوق الكبير فتح أعين الباحثين على القدرة الكبيرة للتعلم العميق في بعض المجالات كرؤية الحاسب ومعالجة اللغات الطبيعية. ولا يزال المجتمع البحثي نشط جداً في الأبحاث المتعلقة بالتعلم العميق وكيفية تطبيقه في مختلف المجالات.

أسباب نجاح التعلم العميق

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

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

2- المعالجات الرسومية: يتطلب تدريب الشبكات العميقة عمليات حسابية كثيرة جداً، حيث يتم تعلم ملايين الأوزان. باستخدام المعالجات الرسومية صار بالإمكان توزيع العمليات الحسابية بالتوازي (parallel)، مما ساهم في تسريع التدريب بشكل كبير.

3- تطور خوارزميات الشبكات العصبية: مما ساهم في نجاح تدريب الشبكات العميقة حل بعض المشاكل كتلاشي المشتقة (vanishing gradient) وانفجار المشتقة (exploding gradient). وكذلك اقتراح استخدام دوال تفعيل جديدة مثل دالة ريلو (Relu)، وطرق مثل التسوية الحزمية (Batch normalization)، وغيرها من التطويرات العديدة.

4- ثقافة المشاركة في مجتمعات الذكاء الاصطناعي وتعلم الآلة: أحد العوامل المهمة في انتشار استخدام التعلم العميق هو ثقافة المشاركة في مجتمعات الذكاء الاصطناعي. وثقافة المشاركة تتضمن نتائج الأبحاث والأوراق العلمية عن طريق نشرها مجاناً على مواقع مثل arxiv.org، مما يتيح للجميع الوصول لها بدون اشتراكات باهظة الثمن. بالإضافة إلى مشاركة الأكواد والبرامج والبيانات.

مكونات الشبكات العصبية

تتكون الشبكات العصبية بشكل أساسي من عصبونات (neurons) وأوزان الروابط (weights) ودوال تفعيل (activation functions)، وكذلك من مدخلات (inputs) ومخرجات (outputs)، كما هو موضح في الشكل التالي. وهي تتكون غالباً من عدة طبقات (layers).

شبكة عصبية بسيطة

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

 h(X,W,b) = \Phi(XW+b) = \Phi(\sum_{n}^{i=1}x_i.w_i+b)

حيث X مصفوفة تحتوي على قيم المدخلات أو الطبقة السابقة، W مصفوفة بقيم الأوزان، وb متجه بقيم الانحياز (bias)، و \Phi هي دالة التفعيل. يجدر التأكيد أن المعادلة السابقة تمثل حساب عصبون واحد فقط، ويجب أن تحسب لكل عصبون في كل طبقة.

تعد دالة التفعيل من المكونات الأساسية للشبكات العصبية، فمن خلالها تكتسب قوتها في التصنيف غير الخطي. هناك عدة أنواع لدالة التفعيل، سابقاً كان الأكثر استخداماً هما دالتي سيجمويد (sigmoid):

 \Phi(z) = \frac{1}{1-e^{-z}}

ودالة الظل الزائدي (Tanh):

 \Phi(z) = \frac{e^z-e^{-z}}{e^z+e^{-z}}

ولكن مؤخراً تم التوجه إلى دوال أخرى أكثر فعالية للتعلم العميق، أشهرها وأكثرها استخداماً هي دالة ريلو (ReLU):

 \Phi(z) = max(0,z)

وغيرها الكثير من الدوال التي يتم اقتراحها كل فترة لتحسين عملية تدريب الشبكات العصبية.

تدريب الشبكات العصبية

الخوارزمية الأشهر استخداماً لتدريب الشبكات العصبية هي خوارزمية الانتشار العكسي (backpropagation). وفيها يتم استهلال الأوزان عشوائياً في البداية ثم حساب المخرجات كما تم شرحه لكل عصبون في كل طبقة. بعد ذلك يتم حساب دالة التكلفة (cost function) التي توضح مقدار الخطأ في المخرجات. هناك عدة دوال لحساب التكلفة ويتم اختيارها حسب المهمة المطلوبة. فمثلاً لتوقع قيم رقمية (مشاكل الانحدار regression) من الدوال المستخدمة Mean Squared Error (MSE):

 MSE = \frac{1}{n}\sum_{n}^{i=1}(\hat{y_i}-y_i)^2

حيث y هي القيم الحقيقية لعينات التدريب، و /hat{y} هي قيمة المخرجات من الشبكة العصبية.

ومن الدوال المستخدمة لتدريب مُصَنّف متعدد الفئات دالة Categorical cross-entropy:

 L(y, \hat{y}) = -\sum^M_{j=0}\sum^N_{i=0}(y_{ij}.log(\hat{y}_{ij}))

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

معماريات الشبكات

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

المُستَقبِل متعدد الطبقات (Multi-Layer Perceptron (MLP))

يعد المستقبل متعدد الطبقات أحد أشهر خوارزميات الشبكات العصبية، وهي النسخة التي يكون شرح الشبكات العصبية عليها في البداية غالباً، وقد تم شرحها في قسم مكونات الشبكة العصبية لطبقة واحدة. ويتم تسمية طريقة تشابك طبقاتها بـ “الطبقات تامة الاتصال” (fully connected layers)، حيث في الغالب يتصل كل عصبون في طبقة مع جميع العصبونات في الطبقات التي تسبقها.

شبكة المُستَقبِل متعدد الطبقات (MLP)

الشبكات العصبية الترشيحية (Convolutional Neural Networks)

تتعامل الشبكات العصبية الترشيحية في الغالب مع مصفوفات ثنائية الأبعاد، والتي تكون على الأرجح صور. طريقة التعلم قريبة من الآلية التي تم شرحها هنا، ولكن الفرق في طريقة تمثيل الطبقات وتشابهها. في الشبكات الترشيحية بدلاً من تعلم الأوزان بين كل عصبون والمقابل له في الطبقة التي تليه، يتم تعلم عدة مرشحات (filters/kernals) يمكن تطبيقها على الصور ككل. بهذه الطريقة يتم تقليل عدد الأوزان التي يجب تعلمها بشكل كبير جداً، مما يسهم في تسريع عملية التعلم وتقليل فرط التخصيص (overfitting). هذه الخاصية يطلق عليها مشاركة المُدخلات (parameter sharing). هناك عدة أنواع للطبقات في الشبكات الترشيحية، أهمها:

1- طبقات الترشيح (convolutional layer): وفيها يتم تطبيق المرشحات التي يتم تعلم أوزانها

2- طبقات التقليص (pooling layer): وفيها يتم تقليص حجم الصور، وقد يكون التقليص بالمعدل (mean pooling) أو بالقيمة الأكبر (max pooling)

3- الطبقات تامة الاتصال (fully connected layers): وهي مثل التي تم شرحها في السابق، يتم تحويل المصفوفات ثنائية الأبعاد إلى متجه من بعد واحد. وقد تكون هناك أكثر من طبقة تامة الاتصال قبل طبقة المخرجات (output layer)

 

شبكة عصبية ترشيحية

الشبكات العصبية التكرارية (Recurrent Neural Networks)

في أنواع الشبكات التي تم شرحها حتى الآن لا يؤخذ الزمن أو العلاقة بين سلاسل البيانات بالاعتبار. ولكن هناك العديد من التطبيقات التي يجب أن تأخذ في الحسبان علاقة البيانات بين بعضها في السياق الزمني، كالتعرف على الكلام (Speech Recognition)، أو المكاني كالتعرف على النصوص المطبوعة (Optical Character Recognition). في الشبكات التي تم شرحها حتى الآن المدخلات والمخرجات مستقلة عن بعضها، لذا يصعب أن نستخدم السياق الذي تأتي المدخلات فيها (كمكان الحرف في الكلمة أو الكلمة في الجملة). الشبكات العصبية التكرارية تحل هذه المشكلة عن طريق تذكر ما تم تعلمه من المدخلات السابقة، وبهذا يمكن تعلم الحالة الماضية واستخدامها مع المدخلات الحالية. ويتم حساب قيمة كل عصبون كالتالي:

 h_t = \Phi(X_{hx}x_t + W_{hh}h_{t-1} + b_h)

حيث h_t تأخذ قيمة المدخلات مضروبة بالأوزان الخاصة بها، وقيمة h_{t-1} مضروبة بالأوزان الخاصة بها، و t تشير إلى الترتيب.

شبكة عصبية تكرارية

من المشاكل التي تواجهها هذه الشبكات هي تلاشي المشتقة (vanishing gradient) وانفجار المشتقة (exploding gradient) في السلاسل الطويلة. وقد جرى اقتراح عدة خوارزميات لحلها أشهرها LSTM وGRU. تم نشر خوارزمية الذاكرة قصيرة المدى المطولة (LSTM) في بحث لهوتشريتر (Hochreiter) وشميدهوبر (Schmidhuber) عام 1997م [7]، وقد تم اقتراح العديد من التحسينات والأنواع المختلفة لها بعد ذلك. تحل LSTM المشاكل التي تواجهها شبكات RNN، بحيث تقلل من حدة التغير في المشتقات مقارنة بـ RNN، كما أنها مصممة بحيث يكون لديها نوعين من الذاكرة، قصيرة المدى وطويلة المدى. الفارق الأساسي في LSTM هي آلية التذكر والنسيان، وقد تم تصميم الشبكة عن طريق استبدال الطبقات البسيطة بأخرى أكثر تعقيداً تتكون من عدة بوابات، يطلق على هذا النوع من الطبقات خلية (cell). أحد الخوارزميات المشتقة من LSTM هي الوحدة التكرارية المبوبة (GRU) [8]، وتعد تبسيطاً لها من عدة جهات. فمثلاً في GRU تم دمج بوابتي الإدخال والنسيان إلى بوابة واحدة اسمها بوابة التحديث (update gate)، كما تم دمج خلية ذاكرة الخلية وحالة الخلية (cell and hidden states).

معماريات أخرى

معماريات متنوعة للشبكات العصبية
معماريات متنوعة للشبكات العصبية (اضغط على الصورة للتكبير) [المصدر]
خلال السنوات العشرين الماضية تم اقتراح العديد من المعماريات للشبكات العصبية لحل مشاكل ذات طابع متنوع. فمثلاً بعض أنواع الشبكات تهتم باستخلاص الخصائص الأساسية من المدخلات بحيث يسهل تكوينها مرة أخرى، مثل شبكات Auto Encoders. وأنواع أخرى من الشبكات هدفها توليد صور وأصوات محاكية للحقيقية بشكل كبير، مثل شبكات Variational Autoencoders و Generative Adversarial Networks. بعض الأفكار ساعدت بشكل كبير في تدريب شبكات ذات عمق يصل إلى المئات من الطبقات، مثل الفكرة من residuals في شبكات Residual Networks. من أنواع الشبكات التي تستخدم في الترجمة الآلية Sequence to Sequence، وفي بناء النماذج اللغوية (واستخدمت لاحقاً في مجالات أخرى) Transformers. ولا يتسع المجال لذكر جميع المعماريات لكثرتها، وليس المقام هنا للسرد، ولكن لتوضيح التنوع الكبير في المجال. الصورة على اليسار تبين بعض أنواع الشبكات، وستجد مزيد شرح لكل منها في المصدر من هنا.

تطبيقات التعلم العميق

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

خاتمة

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

المراجع

[-] خوارزميات الذكاء الاصطناعي في تحليل النص العربي، فصل التعلم العميق وتطبيقاته في معالجة اللغة،مركز الملك عبدالله بن عبدالعزيز الدولي لخدمة اللغة العربية، الطبعة الأولى، 1441 هـ

[1] McCulloch, W., & Walter, P. (1943). A Logical Calculus of Ideas Immanent in Nervous Activity. Bulletin of Mathematical Biophysics, 115–133.

[2] Hebb, D. (1949). The Organization of Behavior. New York: Wiley, .

[3] Rosenblatt, F. (1958). The Perceptron: A Probabilistic Model For Information Storage And Organization In The Brain. Psychological Review, 386–408.

[4] Rumelhart, D. E., Hinton, G. E., & Williams, R. J. (1986). Learning Internal Representations by Error Propagation. In Parallel Distributed Processing: Explorations in the Microstructure of Cognition, 318-362.

[5] Hinton, G. E., Osindero, S., & Teh, Y.-W. (2006). A Fast Learning Algorithm for Deep Belief Nets. Neural Computation, 1527-1554.

[6] Krizhevsky, A., Sutskever, I., & Hinton, G. E. (2012). ImageNet Classification with Deep Convolutional Neural Networks. In Proceedings of the 25th International Conference on Neural Information Processing Systems, (pp. 1097-1105)

[7] Hochreiter, S., & Schmidhuber, J. (1997). Long Short-Term Memory. Neural Comput., 1735-1780.

[8] Cho, K., Merrienboer, B. v., Bahdanau, D., & Bengio, Y. (2014). On the Properties of Neural Machinetranslation: Encoder-decoder Approaches. arXiv preprint.

 

 

 

اظهر المزيد

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

‏‏‏‏‏‏‏‏‏‏‏‏‏مختص بالذكاء الاصطناعي، تعلم الآلة ورؤية الحاسب. مهتم بتحليل ومعالجة البيانات بشكل عام. ضمن خبراء جووجل في تعلم الآلة (ML GDE).

‫4 تعليقات

  1. مقال جميل جدا
    جزاك الله خيرا ونفع بك
    الشكر موصول لكم ايضا على الجهد الرائع في كتاب. “خوارزميات الذكاء الاصطناعي في تحليل النص العربي”
    هل هناك كتب اخرى توصي بها في مجال معالجة اللغة الطبيعية؟

  2. المقال جميل جدا و معد بعناية، لدي بعض الملاحظات البسيطة جدا عن ترجمة بعض المصطلحات و هي لا تنقص ابدا من قيمة المقال. شكر الله لك جهدك المبارك في اثراء المحتوى العربي.

اترك تعليقاً

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

زر الذهاب إلى الأعلى