بات الذكاء الاصطناعي يحتل العالم من حولنا ويغزو جميع المجالات التي نعرفها بالإضافة إلى المجالات الجديدة التي تظهر كل يوم، ومع تزايد المطلوب منه أصبحنا نتوقع أن يكون أكثر ذكاءًا وأن يشبه الإنسان والذكاء البشري أكثر وأكثر، مما دفع العلماء ومهندسين الذكاء الاصطناعي أن يحاولوا بكل الطرق جعله أكثر ذكاءًا مما هو عليه الآن.
كانت الشبكات العصبية الاصطناعية Artificial Neural Networks (ANN) أو الشبكات العصبية Neural Networks (NN) -اختصارًا- هي البداية في ثورة الذكاء الاصطناعي وكذلك تطويرها. والعمل عليها هو الحل للوصول لذكاء اصطناعي أكثر ذكاءًا، وهي طريقة تمكن الذكاء الاصطناعي أن يتعامل مع العالم من حوله كما يتعامل معه العقل البشري.
ما هي الشبكات العصبية الاصطناعية Artificial Neural Networks؟ وكيف تتفاعل مع العالم من حولها مثل العقل البشري؟ وكيف بدأت وأين هي الآن؟ هذه كلها أسئلة سوف يجيب عليها هذا المقال.
ما هي الشبكات العصبية الاصطناعية Artificial Neural Networks؟
البرمجة المعتادة التي نعرفها؛ هي عملية إعطاء جهاز الكمبيوتر أو الآلة مجموعة من الخطوات أو المهام التي يجب أن تؤديها بشكل محدد من أجل إتمام مهمة ما، وهذا ما يسمى بالخوارزمية Algorithm.
ويكون جهاز الكمبيوتر في هذه الحالة غبي أو بتعبير آخر لا يفهم ما يفعله بالتحديد، ولا لماذا يفعله وإنما هو ينفذ بالضبط المطلوب منه من خلال استقبال مدخلات Inputs لا يفهمها، وإصدار مخرجات Outputs لا يدري ما فائدتها.
هذا في العادة يفي بالغرض وزيادة، فالمتصفح الذي تقرأ هذه المقالة من عليه مثلًا؛ لا يقوم من تلقاء نفسه بالسحب إلى أسفل المقالة بدون أن تفعل هذا، ولا يمكنه أن يجعل هذه المقالة في المفضلة بدون أن تضغط أنت الأزرار المطلوبة.
ولكن العلماء لم يرضهم هذا فهم يريدون أن ينقلوا البرمجيات إلى المستوى الآخر، الذي يُمكنهم من أن يفهموا ويتخذوا القرارات بأنفسهم بأقل قدر من التدخل البشري أو بلا أي تدخل بشري على الإطلاق.
فنتفليكس Netflix مثلًا تستخدم ذكاءًا اصطناعيًا يقوم بترشيح المسلسلات والأفلام من خلال سجل مشاهداتك السابقة، وذلك لكي يضمن أنك سوف تستمتع وتشاهد العرض المُقترح لك، فكيف تفعل هذا إذًا؟
لو فكرت في فعل هذا بالبرمجة العادية فستحتاج أن تكتب أكوادًا طويلة للغاية تقول فيها للخوارزمية؛ أنه إذا اختار المشاهد العرض أ اقترح عليه العرض ب، وأنه إذا أعجب بالعرض ج اختر له العرض د.
وهكذا لمئات الآلاف من العروض والأفلام والمسلسلات مما يجعل من المستحيل تقريبًا عمله، كما أنه سيحتوي على الكثير من الأخطاء نظرًا لكيفية بناءه لاقتراحاته على عرض أو مسلسل واحد فقط، وليس على نشاط المستخدم ومشاهداته ككل.
هنا يأتي دور الشبكات العصبية والخوارزميات الذكية التي تعتمد عليها، والتي تستطيع بمفردها وبدون تدخل بشري أن تفهم ما سيود الشخص مشاهدته من خلال تاريخ المشاهدات والتقييمات الخاصة به، بالإضافة إلى التشابه مع المستخدمين الآخرين في نمط المشاهدة، وكل هذا من خلال أكثر من 7500 تصنيف للعروض لتتخذ القرار لأكثر من 100 مليون مستخدم على المنصة.
الشبكات العصبية، مثل الشبكات العصبية الملتفة Convolutional Neural Network أو CNN اختصارًا التي تستخدمها نتفليكس Netflix في نظام الترشيح الخاص بها… تستطيع من خلال إمدادها بالبيانات أن تفهم وتتوغل في نفسية المشاهد من أجل تقديم الاقتراح المناسب له.
والذي سيجعله يستمر في مشاهدة العروض وتجديد اشتراكه الشهري.
لقد توصل العلماء إلى فكرة الشبكات العصبية من خلال محاولة فهم العقل البشري، ولذا كان لعلماء النفس والأعصاب دور كبير في تطور الشبكات العصبية والذكاء الاصطناعي حتى وقت قريب، فمن خلال فهم كيف يمكن للإنسان أن يرى أو يسمع أو يفهم الكلمات ويستوعب معانيها يمكننا أن نخلق محاكاة لجهاز الكمبيوتر تمكنه من فعل المثل.
هذه المحاكاة سوف تعتمد على البيانات والأرقام، أو بتعبير أكثر دقة سوف تعتمد على النماذج الإحصائية والتنبؤية من أجل محاولة التوصل للنتائج الأكثر دقة والأكثر صحة.
ومن خلال عدة أساليب رياضية مثل أصل الانحدار Gradient Descent والانتشار الخلفي backpropagation سنستطيع أن نجعل هذه الشبكات العصبية تخرج نتائج منطقية بنسب خطأ مقبولة.
لذا نستطيع أن نعبر عن الشبكات العصبية بأنها مدفوعة من قبل البيانات أو Data Driven، ومن خلال فهمنا واستيعابنا لهذا سنفهم كيف تحاكي هذه الشبكات العقل البشري، وكيف تستطيع القيام بكل هذه الأشياء التي تفعلها والتي سنستعرضها في مقالنا.
اقرأ أيضًا: مجالات الذكاء الاصطناعي: أبواب المستقبل المفتوحة على مصارعها
الشبكات العصبية الاصطناعية تقليد للخلايا العصبية في جسم الإنسان
في تجربة معقدة تسمى إعادة توصيل الخلايا العصبية Neural Rewiring Experiment استطاع العلماء أن يستخدموا خلايا عصبية في غير مواضعها. أي على سبيل المثال قاموا بإيصال الخلايا العصبية المسئولة عن السمع إلى العين في أحد الحيوانات، ومن خلال المراقبة وجدوا أن هذا الحيوان قد استطاع عقله أن يدرب خلاياه العصبية لكي تقوم بعملية الإبصار بفعالية.
كانت من أبرز نتائج هذه التجربة أن استطاع العلماء بشكل حاسوبي مساعدة قرد مُصاب بالشلل على استعادة قدرة تحريك معصميه، وذلك من خلال توصيل معصميه بشكل مباشر مع مخه من خلال حاسوب، بينهما يقوم الحاسوب بترجمة نشاط المخ إلى شحنات كهربية تفهمها العضلات لتوصيلها إلى عضلات المعصم وتحريكها بسلاسة.
نتائج هذه التجربة قد أعطت فكرة لعلماء الذكاء الاصطناعي أن الخلايا العصبية البشرية تعمل بكفاءة من خلال التجربة، وأنها تتمتع بمرونة شديدة يمكن التحكم بها من خلال التدريب، مما جعلهم يفكرون في محاكاة هذه الخاصية بشكل حاسوبي رياضي بما يسمى الشبكات العصبية الاصطناعية التي نتحدث عنها في مقالنا هذا.
ولم يقتصر ما فعله العلماء على هذا فقط، بل هذا مجرد تجربة حديثة ساعدت في تطور الشبكات العصبية، ولكن في بداية هذا العلم ومع تطور علوم الأعصاب واكتشافها لكيفية عمل الخلايا والشبكات العصبية البيولوجية، قد قام علماء الحاسوب بتقليد هذه الشبكات البشرية من أجل خلق الشبكات العصبية الاصطناعية Artificial Neural Networks (ANN) التي نتحدث عنها.
كيف تعمل الخلية العصبية البيولوجية Neuron؟
تعمل الخلية العصبية Neuron من خلال عدد من الأجزاء الأساسية، والتي تعمل سويًا في تناغم لكي تحقق لنا النتائج التي نرجوها، وهي:
- التشعبات العصبية Dendrites: هذه التشعبات وظيفتها الأساسية هي استقبال المدخلات Inputs التي تأتيها على هيئة شحنات.
- جسم الخلية Cell Body أو Soma: يقوم هذا الجزء بالتعامل ومعالجة القيم والشحنات التي تأتيها من التشعبات العصبية Dendrites لتحدد إذا ما كنت ستنتقل عبر العقد العصبية Axon أم لا.
- العقد العصبية أو المحور العصبي Axon: وظيفة هذا الجزء أن ينقل الإشارات العصبية عبر الخلية العصبية Neuron.
- النهايات العصبية Synapses: هذا الجزء هو المسئول عن إصدار المخرجات Outputs من الخلية، ويحدد فعالية وتأثير هذه الإشارة على الخلية التي ستنتقل إليها.
وهكذا فإن التشابك بين العديد من الخلايا العصبية يمكنها من خلق شبكة عصبية بيولوجية تستطيع أداء وظيفة محددة بكثافة ودقة شديدتان، وذلك من خلال استقبال العديد من المدخلات Inputs ومعالجتها، ومن ثم إصدار مخرجات Outputs للاستجابة.
وسوف نرى في الجزء القادم كيف تحاكيها الشبكات العصبية الصناعية Artificial Neural Networks (ANN).
كيف تعمل الخلية العصبية الاصطناعية Artificial Neuron؟
كما نرى في الخلية العصبية الاصطناعية Artificial Neuron في الصورة، فإنها تتم أيضًا من خلال استقبال عدة مدخلات Inputs (الرمز X في الصورة)، والتي يتم التعامل معها ومعالجتها من خلال الأوزان Weights (الرمز W في الصورة) التي سنتكلم عنها بعد قليل.
من ثم يتم معالجة قيمها باستخدام دالة رياضية تسمى دالة السيجمويد Sigmoid Function (الرمز σ في الصورة) لتخرج قيمة بين الواحد والصفر، هذه القيمة تشكل المخرجات Outputs الخاصة بالخلية (الرمز Y في الصورة).
عبر تجمع للعشرات والمئات بل والآلاف من هذه الخلايا العصبية الاصطناعية يتكون لنا ما نعرفه على أنه الشبكات العصبية الصناعية Artificial Neural Networks (ANN).
مقارنة بين الشبكات العصبية الاصطناعية Artificial Neural Networks (ANN) والشبكات العصبية البيولوجية Biological Neural Networks (BNN)
هناك 3 محاور أساسية يمكننا من خلالها المقارنة بين الشبكات العصبية البيولوجية Biological Neural Networks (BNN) والشبكات العصبية الاصطناعية Artificial Neural Networks (ANN).
وهذه المحاور هي:
1. السرعة
الشبكات العصبية الاصطناعية ANN تتفوق على الشبكات العصبية البيولوجية BNN في عامل السرعة، حيث يُقدر زمن استجابتها بالنانو ثانية بينما الآخرى بالمللي ثانية.
2. المعالجة
الشبكات العصبية البيولوجية BNN لديها قدرة هائلة على المعالجة، ولها نمط متوازي في المعالجة أي أنها تستطيع معالجة عدد كبير من المدخلات المختلفة بشكل متوازي (Parallel Processing)، بينما الشبكات العصبية الاصطناعية ANN تقوم بمعالجة متسلسلة للمدخلات الخاصة بها (Serial Processing) أي أن المدخلات تمر بعدد من الخطوات المتعاقبة.
3. التعقيد
الشبكات العصبية البيولوجية BNN على قدر كبير للغاية من التعقيد التي لا تصل له بأي شكل من الأشكال الشبكات العصبية الصناعية ANN.
اقرأ أيضًا: تعلم الذكاء الاصطناعي (كل المصادر والمعلومات التي تحتاجها)
تاريخ الشبكات العصبية الصناعية Artificial Neural Networks (ANN)
تاريخ الشبكات العصبية الصناعية طويل ومعقد للغاية، ويتضمن جهود الكثير من العلماء في مختلف التخصصات الذين أسهموا في وصولنا إلى الشكل الحالي من الشبكات العصبية المتطورة شديدة الذكاء التي نعرفها.
وسوف نقوم باختصار هذا التاريخ الطويل إلى عدد من النقاط من أجل التسهيل ومعرفة كيفية تطورها:
1. في العام 1943 قاما عالم فيزيولوجيا الأعصاب وارن مككولوك ورفيقه عالم الأعصاب والرياضيات والتر بيتس بعمل نموذج لخلية عصبية صناعية بدائية لأول مرة.
وجدير بالذكر أن في هذا الوقت كانت تستخدم وتصنع الخلايا العصبية الصناعية من أجل توضيح وفهم عمل الخلايا العصبية البيولوجية، والتي كانت تختصر حسب معرفتهم في هذا الوقت بمصطلح الاتصالية Connectionism.
2. في العام 1954 قام الباحثون أخيرًا بعمل تطبيق حاسوبي يمثل هذه النماذج الرياضية التي تمت صناعتها، وهذا بعد محاولات كثيرة مضنية في الأربعينات وبدايات الخمسينات.
3. في العام 1958 قام عالم النفس الشهير فرانك روزنبلات باكتشاف ما يسمى بالـ Perceptron أو الخلية العصبية الصناعية، وقام بعمل نموذج لها يعتمد على نموذج العام 1943 الذي ذكرناه بالأعلى، ومما يميز نموذج روزنبلات الذي تحدثنا عنه احتواءه على فكرة الأوزان واستطاعته تحديدها بنجاح.
4. في العام 1959 قاما العالمان من جامعة ستانفورد برنارد ويدرو ومارسيان هوف بعمل أول شبكة عصبية صناعية يتم استخدامها في الحياة الواقعية، وكانت هذه الشبكة مصممة من أجل تقليل الضوضاء في الهواتف وهي مازالت تستخدم حتى اليوم.
5. في العام 1969 خرج للنور كتاب Perceptron أو الخلية العصبية الصناعية للعالم الشهير في مجال الذكاء الاصطناعي مارفن مينسكي، والذي ناقش استحالة صنع شبكة عصبية متعددة الطبقات، وهو ما عطل الشبكات العصبية و التعلم العميق والذكاء الاصطناعي بشكل عام حوالي عقد أو أكثر من الزمان.
6. في العام 1982 انتهت فترة الجمود هذه، والتي عرفت بشتاء الذكاء الاصطناعي من خلال ورقة بحثية قدمها العالم المرموق جون جوزيف هوبفيلد، والتي ناقشت ما أسماه شبكة هوبفيلد العصبية.
7. في العام 1985 قام معهد الفيزياء الأمريكي ببدء ما أسماه الاجتماع السنوي لـ “الشبكات العصبية في الحوسبة Neural Networks in Computing”، والذي تلاه في العام 1987 المؤتمر السنوي الأول للشبكات العصبية من معهد مهندسي الكهرباء والإلكترونيات IEEE.
8. وهكذا عاد الاهتمام بالشبكات العصبية وبالذكاء الاصطناعي مرة أخرى، والذي لولاهما لما كان شكل عالمنا كما نعرفه الآن، ولما كنا تطورنا هذا التطور الهائل في مجرد ثلاثة عقود فقط.
اقرأ أيضًا: لغة بايثون Python: الأداة التي ستجعلك قادرًا على فعل المعجزات
أهم المصطلحات الخاصة بالشبكات العصبية الاصطناعية
قبل الانتقال إلى صلب المقال، والتعرف على كيفية عمل الشبكات العصبية الاصطناعية -والتي سوف نسميها من الآن للاختصار الشبكات العصبية Neural Networks- يجب أن نتعرف على عدد من المصطلحات التي سنستخدمها، وهذا لكي يكون شرح طريقة عملها وأنواعها سهل وسلس، ولتسهيل العودة وفهم هذه المصطلحات في حالة نسيانها أو اختلاطها ببعض.
لا أنصحك بحفظ هذه المصطلحات، ولكن فقط اقرأها حتى يحين دورها، كما أنني لا أتوقع أن تفهم الكثير منها، بل ستكون كمصباح ينير في عقلك عندما يأتي ذكرها في حديثي، ولذا لا تقلق إذا لم تفهمها بشكل عميق من البداية، وهذه المصطلحات هي:
1. المدخلات Inputs
المدخلات هي القيم التي تستقبلها الخلايا العصبية، فمن أجل جعل الشبكات العصبية تتعامل مع المشاكل أو الظواهر التي تواجهنا يجب علينا تحويلها إلى شكل رقمي تستطيع الشبكة العصبية التعامل والتفاعل معه، وتستقبل الشبكة العصبية أقل شيء مدخلين بينما قد يصل عدد المدخلات في الشبكة العصبية إلى آلاف أو أكثر من القيم.
إذا أردنا على سبيل المثال جعل الشبكة العصبية ترى صورة بالأبيض والأسود، فإننا نجعلها تتعامل مع كل بيكسل Pixel على حدا.
فلو كانت الصورة حجمها 100*100 بيكسل، فإنها تتعامل مع حوالي 10000 بيكسل، ونجعل كل بيكسل يحتوي على قيمة ولتكن هذه القيمة تتراوح بين الواحد والصفر حسب تدرج لونها بين الأبيض والأسود، بحيث يكون البيكسل 0 هو اللون الأبيض و0.5 يكون الرمادي و 1 يكون الأسود.
أما إذا كنا نريد إدخال صورة ملونة للشبكة العصبية، فنستخدم نموذج RGB، والذي يتعامل مع الألوان على أنها خليط من اللون الأحمر Red واللون الأخضر Green واللون الأزرق Blue، وبالتالي يكون لكل بيكسل في الصورة ثلاثة قيم من حيث تداخل الألوان الثلاثة هذه فيه.
اقرأ أيضاً: الزيف العميق Deepfake: أعجوبة تقنية وخطر يهددنا جميعًا
2. قيم التفعيل Activation Value
قيمة التفعيل هي مخرج كل خلية من خلايا الشبكة العصبية التي تخرجها الخلية بعد أن تقوم الخلية بإجراء عمليات المعالجة الخاصة بها، أو حتى بعد تعريضها لدالة السيجمويد Sigmoid Function، وتحل محل المدخل الأولي في الطبقات التي تليها.
3. المخرجات Outputs
المخرجات هي الناتج النهائي للشبكات العصبية، فمثلًا لو كان لدينا شبكة عصبية تتعرف على الأرقام المكتوبة بخط اليد فسوف يكون لديها عشر أرقام، والتي تتراوح بين الصفر 0 والرقم تسعة 9.
وعند إدخال صورة أي رقم مكتوب بخط اليد لها، فإن المخرج يكون هو الرقم الذي يتم التعرف عليه، فلو كان 7 مثلًا لوجدنا الخلية في طبقات المخرجات التي تشير للرقم 7 هي المفعلة.
4. الأوزان Weights
الأوزان هي واحدة من أهم المصطلحات التي يجب عليك معرفتها لفهم كيفية عمل الشبكات العصبية، والأوزان هي القيم التي تضرب فيها المدخلات من أجل تحديد قيمتها أو أهميتها في عمل وظيفة الشبكة العصبية.
ويتم في البداية تحديدهم بشكل عشوائي تمامًا وبخوارزميات وأساليب رياضية معينة. في مرحلة تدريب النموذج يتم تحديد القيم الصحيحة للأوزان التي تساهم في عمل الشبكة العصبية بشكل أكثر دقة، وإخراجها في شكل نتائج يمكن الاعتماد عليها.
فمثلًا بافتراض وجود مدخلين فقط في الخلية العصبية، فإنه بعد تدريب النموذج والوصول لنسبة خطأ مقبولة، يتم ضرب كل واحد منهم في وزن خاص به، بحيث يكون المدخل المضروب في وزن أكبر هو المدخل الأهم، والذي يجب على الشبكة العصبية الاهتمام به على عكس المدخل المضروب في وزن أقل، والذي تتجاهله الشبكة بنسبة ما.
5. قيمة التحيز Bias
قيمة التحيز هو ثابت يشبه إلى حد كبير الثابت في معادلة الخط المستقيم، ومن خلال هذه القيمة نستطيع بكل سهولة أن نتحكم بشكل النتائج التي لدينا، بحيث نستطيع عرضها واستخدام دالة السيجمويد Sigmoid Function عليها وإعطائنا نتائج أفضل.
اقرأ أيضاً: ما هو ChatGPT وما استخداماته وكيف تستعمله من أي بلد
6. دالة السيجمويد Sigmoid Function
دالة السيجمويد هي دالة أو معادلة رياضية من خلالها نستطيع تحويل قيم التفعيل إلى القيم Z، والتي تسمح لنا بجعل مجموعات قيم التفعيل تتراوح بين الرقمين 0 و 1.
7. القيم Values
القيم والتي يرمز لها بالرمز Z هي الناتج بعد تطبيق دالة السيجمويد على قيم التفعيل، بحيث تكون بين رقمي الصفر والواحد، وبالتالي يسهل التعامل معها وفهمها.
8. الطبقة Layer
الطبقة واحدة من أهم المصطلحات التي يجب علينا التعرض لها عند الحديث عن الشبكات العصبية، وهي المسئولة عن تسمية التعلم العميق Deep Learning بالعميق، فمن خلال كون الشبكات العصبية الخاصة بالتعلم العميق كثيرة فإنها تضفي عليها صفة العمق. الطبقة هي مجموعة الخلايا التي تتشارك في نفس المستوى في الشبكة العصبية.
9. طبقة المدخلات Inputs Layer
طبقة المدخلات هي الطبقة الأولى في أي خلية عصبية، وهي التي نقوم من خلالها بإعطاء الشبكة العصبية المدخلات Inputs، على سبيل المثال تكون في مثال الصورة هي الطبقة التي تحتوي على عدد خلايا يساوي عدد البيكسلز في الصورة، والذي تحتوي كل خلية منه على القيمة الخاصة بتدرج اللون من الأبيض والأسود في حالة صور الأبيض والأسود، أو قيم RGB في حالة الصور الملونة.
10. طبقة المخرجات Output Layer
طبقة المخرجات هي الطبقة الأخيرة في أي شبكة عصبية، وهي تتكون من الخلايا التي تشير إلى نتيجة معالجة الشبكات العصبية للبيانات، فعلى سبيل المثال في مثال شبكة الأرقام المكتوبة بخط اليد تحتوي طبقة المخرجات على 10 خلايا كل واحدة منها تشير للرقم الذي يوجد بين الصفر 0 والتسعة 9.
11. الطبقات الخفية Hidden Layers
الطبقات الخفية هي الطبقة أو الطبقات الموجودة بين طبقة المدخلات وطبقة المخرجات، ومن خلال هذه الطبقة أو الطبقات نستطيع معالجة البيانات للتوصل لقيم المخرجات واتخاذ القرارات، وكلما زادت عدد هذه الطبقات كلما كانت الشبكة العصبية أذكى وأكثر دقة، إلا أنها أيضًا تصير ابطئ وأكثر تعقيدًا وصعوبة في فهم طريقة عملها.
زيادة عدد الطبقات الخفية في الشبكات العصبية للتعلم العميق هو ما جعلنا نطلق عليها صفة العمق، لأنها بهذا الشكل تستطيع توفير طاقات هائلة لمعالجة البيانات وعمل نماذج أكثر قوة، ولكن هذا سيجعلنا نحتاج لطاقة حاسوبية أكبر بكثير.
12. قيمة الخطأ Cost
عندما تعمل الشبكات العصبية خاصة في مرحلة التدريب، فإنها كثيرًا ما تخرج نتائج غير منطقية وغير صحيحة، ومن خلال نماذج وخوارزميات رياضية نستطيع تحسين نتائجها من خلال التوصل لقيم الخطأ فيها، وعند تطبيق قيم الخطأ هذه نستطيع التوصل إلى النتائج المرغوب فيها، والتي نستطيع أن نعتمد عليها، ولشرح هذه المفهوم سأعطي مثال:
في خلية التصنيف المتعدد Multi Classification، والتي نريد منها أن تحدد من صور الأرقام المكتوبة بخط اليد التي نقدمها لها كمدخلات ما إذا كان هذا الرقم 0 أم 1 أم 2 وهكذا حتى الرقم 9، ونحن نتوقع منها في النهاية تحديد الرقم الذي يمثل الصورة بكون خليته لها قيمة 1 والخلايا الثمانية الأخرى لها قيمة 0.
لكننا نفاجئ أثناء التدريب أنها قامت بوضع قيم متدرجة في عدة خلايا في طبقة المخرجات، وهذا غير منطقي إذ أن من المستحيل أن تكون الصورة التي بها رقم واحد أكثر من رقم، ولذا فأننا نعرضها لبعض الخوارزميات ونحدد قيم الخطأ لها لكي نجعلها في النهاية تضع القيمة 1 في خلية الرقم الصحيح في طبقة المخرجات، وتضع 0 في الطبقات الثمانية الأخرى.
اقرأ أيضًا: ما هو علم البيانات Data Science: التخصص الأكثر إثارة في العالم
كيف تعمل الشبكات العصبية الاصطناعية Artificial Neural Networks؟
الشبكات العصبية هي نماذج رياضية إحصائية في الأساس بجميع أنواعها، ولذا فإن الكثير من المصطلحات والمفاهيم التي طرحناها منذ قليل؛ عبارة عن دوال ومعادلات رياضية تُستخدم لجعل الشبكة الصناعية قادرة على فهم المعطيات والتعامل معها ومعالجتها.
ومن ثم إخراج النتائج الصحيحة التي نريدها ونتوقعها لنستطيع الاعتماد عليها واتخاذ القرارات من خلالها، ونحن لا نغوص في التفاصيل الرياضية في هذا الشرح، وإنما سنعالجها بشكل سطحي للفهم.
ويمكننا شرح كيفية عمل الشبكات العصبية بكل سهولة ووضوح من خلال 7 خطوات رئيسية هي:
1. إدخال البيانات
في الخطوة الأولى نقوم بإدخال بيانات التدريب التي نعرف مسبقًا المخرجات الصحيحة الخاصة بها، وبعد ذلك يتم معالجتها عبر الطبقات الخفية للشبكة العصبية.
2. معالجة البيانات من خلال الخلايا العصبية (الأوزان)
في البداية يتم ضرب قيم المدخلات في الأوزان، ومن ثم نقلها إلى خلايا الطبقات الخفية، وجدير بالذكر أن كل خلية في الطبقة تتصل بجميع الخلايا في الطبقة التي تليها.
3. إضافة قيمة التحيز إلى قيم التفعيل
بعد ضرب الأوزان الخاصة بكل خلية بشكل فردي يتم إضافة هذه القيم جميعها إلى ثابت يسمى قيمة التحيز واحد لكل القيم.
4. تحويل القيم إلى دالة التفعيل
تمر قيم التفعيل بعد هذا إلى دالة تسمى دالة التفعيل لكي تحدد دالة التفعيل إذا ما كانت الخلية في الطبقة التي تليها ستضيئ أما لا.
5. تكرار العملية مع الطبقات الخفية الأخرى
تتكرر هذه العمليات مع الطبقات الأخرى في الشبكة العصبية حتى الطبقة الأخيرة، وهي طبقة المخرجات.
6. تحديد المخرجات في النهاية
تتحدد قيم المخرجات في النهاية حسب نوع ووظيفة الشبكة العصبية، وبهذا نكون حصلنا على النتائج ونقارنها بالتي لدينا.
7. تعديل الأوزان للحصول على نتائج أدق من خلال مقارنتها بمدخلات بيانات التدريب
تعيد الشبكة العصبية تحديد قيم الأوزان لكي تحصل على نتائج أدق بالتي حصلت عليها في المرة السابقة، وهذه الخطوة تحدث فقط عند تدريب النموذج أما إذا كان النموذج مدربًا فأنه يقف عند الخطوة السابقة.
هذه هي طريقة عمل الشبكة العصبية بطريقة مجردة بعض الشيء لكي تكون نظريتنا واضحة، ولكن في السطور القادمة سوف أستعرض مثال محدد، وهو الخاص بشبكة عصبية تقوم بقراءة صور لأرقام مكتوبة بخط اليد، وتحدد هذه الأرقام في المخرجات:
في البداية ستكون المدخلات عبارة عن البيكسلز الخاصة بالأرقام المكتوبة بخط اليد، ولنفترض بأن هذه الصورة دقتها 28*28، وبهذا ستكون عدد البيكسلز 784 ما يعني بأن عدد المدخلات في الطبقة الأولى طبقة المدخلات سيساوي 784.
وسوف تكون قيم المدخلات هي قيمة تدرج لون البيكسلز بين الأبيض والأسود بحيث تكون على سبيل المثال بالنسبة للصورة التي أدرجناه 0 للون الأسود و1 للون الأبيض والرمادي 0.5.
بعد هذا سوف يتم ضرب هذه المدخلات بالأوزان الخاصة بها، ومن ثم إضافة قيمة التحيز، وهذا لكي تتعامل معها الطبقة الخفية الأولى ولنفترض بأن هذه الطبقة تتعامل مع خلايا المدخلات وتقوم بالتعرف على أشكال الخلايا المُضيئة إذا ما كانت أفقية أو رأسية أو دائرية، وهكذا بحيث تكون كل خلية من الخلايا الـ 784 الخاصة بالمدخلات تتصل بكل خلية من خلايا الطبقة المخفية الأولى.
بعد معالجة القيم خلال الطبقة الخفية الأولى تقوم الشبكة العصبية بضربها بالأوزان وإضافة قيمة التحيز الخاصة بها، وتتصل جميع خلايا الطبقة الخفية الأولى بخلايا الطبقة الخفية الثانية.
ولنتخيل أن وظيفة هذه الطبقة هي أن تقوم بجمع أشكال البكسلز وتحديد أجزاء الأرقام الأساسية، مثل: الدائرة الخاصة بالرقم تسعة 9 والرقم 6، وأن تتعرف على الخط الأفقي في الرقم 4 أو الخط الرأسي للرقم 1 وهكذا.
تتصل كل خلية من خلايا الطبقة الثانية بخلايا طبقة المخرجات العشرة-الأرقام من صفر إلى تسعة- ويتم ضرب القيم الخاصة بالأوزان وإضافة قيمة التحيز الخاصة بها، ليتم تجميع الأجزاء الأساسية التي ناقشنها في الطبقة الثانية لتجمع الأرقام نفسها في طبقة المخرجات بحيث الخلية المشتعلة أو العاملة تشير للرقم المكتوب، وبهذا تكون حققت الشبكة العصبية دورها.
إذا كانت الشبكة العصبية في مرحلة التدريب تكون قيم الأوزان في جميع الطبقات عشوائية، وهو ما يتسبب في حدوث الكثير أو القليل من الأخطاء.
فمثلًا نجد أن الشبكة العصبية تشغل عدة خلايا في طبقة المخرجات، وهذا ما يعد مستحيلًا لأن الرقم المكتوب لا يمكن أن يكون 3 و 6 و8 في ذات الوقت.
ولذا من خلال مقارنة المخرجات بالنتائج التي نعرفها في الأساس نستطيع تحديد قيم الخطأ وتعديل الأوزان في الشبكة العصبية لتصحيح النتائج، وفكر في هذا كأنك تغشش الشبكة العصبية لكي تقوم بتصحيح الخطأ الذي قامت به، ويتم هذا من خلال نماذج رياضية وإحصائية.
بعد مرحلة التدريب هذه يتم اختبار الشبكة العصبية باستخدام بيانات التدريب، والتي لم تتعامل معها الشبكة العصبية من قبل، ومن خلال نسبة دقة الشبكة نقوم بالاعتماد عليها أو إعادة تعديلها من خلال النماذج الرياضية والخوارزميات بحيث تكون أكثر دقة وذكاءًا.
اقرأ أيضًا: شرح Internet of Things (إنترنت الأشياء)
أنواع الشبكات العصبية الاصطناعية
هناك العديد من الشبكات العصبية التي لكل منها وظائف محددة وقدرات تميزها من أجل القيام بالمهام المطلوبة منها، ويمكنك رؤية بعضها في هذه الصورة:
وتختلف الشبكات عن بعضها بشكل عام في عدد الطبقات واتجاه البيانات والسرعة، وسوف نقوم باستعراض أهم 6 شبكات عصبية وأكثرها استخدامًا في الوقت الحالي، وهي:
- شبكات التغذية الأمامية Feed Forward Neural Networks
- الشبكات العصبية الملتفة Convolutional Neural Network (CNN)
- الشبكات العصبية المتكررة Recurrent Neural Networks (RNN)
- شبكات الأساس الدائري Radial Basis Function Neural Networks
- الشبكات ذاتية التدريب Self-Organizing Map Neural Network
- شبكات الوحدات العصبية Modular Neural Network (MNN)
أولًا: شبكات التغذية الأمامية Feed Forward Neural Networks
شبكات التغذية الأمامية هي واحدة من أبسط الشبكات العصبية وأقلها في الحجم، ولكنها تتميز ببساطتها وبسرعتها، ولكنها بسبب هذا تكون دقتها ليست الأفضل بين الشبكات العصبية الأخرى، وتسمى بالأمامية لأن البيانات تمشي في اتجاه واحدK ولا يتم استخدام خوارزمية الانتشار العكسي أو الـ Backpropagation فيها.
قد تحتوي على طبقة خفية واحدة أو قد لا تحتوي على أي طبقة خفية، ونستخدم في هذه الشبكة دالة السيجمويد Sigmoid Function، ويتم استخدامها في التعرف على الأصوات وتمييزها عن بعضها بالتحديد، وفي الرؤية الحاسوبية Computer Vision، والسيارات ذاتية القيادة Self-driven Cars وقد تستخدم في التصنيف البسيط.
جدير بالذكر أن هناك تحديث لهذه الشبكة العصبية إلى ما يعرف بشبكة التغذية الأمامية متعددة الطبقات أو Multi Layers Feed Forward Neural Networks (MLFFNN).
اقرأ أيضاً: ما هو الانترنت في شرح مبسط
ثانيًا: الشبكات العصبية الملتفة Convolutional Neural Network (CNN)
الشبكات العصبية الملتفة هي أكثر الشبكات العصبية استخدامًا، والتي من المؤكد أننا نستخدم تطبيق واحد على الأقل من تطبيقاتها يوميًا في حياتنا اليومية، وهي مشهورة للغاية في استخدامها في التعرف على الصور والفيديوهات، ولكن رغم ذلك يتم استخدامها في العديد من خوارزميات الاقتراحات، مثل خوارزمية نتفليكس التي تحدثنا عنها من قبل.
هذه الشبكات العصبية معروفة بكونها تعتمد على معاملات أقل من معاملات الشبكات الأخرى، ولكنها على الجانب الأخر بطيئة ومعقدة بعض الشيء ومن الصعب تصميمها وتعديلها.
رغم تعقيد هذه الخوارزمية إلا أننا شرحناها ببساطة في تطبيق التعرف على الأرقام المكتوبة يدويًا بالأعلى، وهذه الخوارزمية تستخدم في تحليل الصور والفيديوهات، وفي التعرف على الوجوه، والرؤية الحاسوبية، والتعرف على الصوت، وفي عدد كبير من الاستخدامات الطبية.
ثالثًا: الشبكات العصبية المتكررة Recurrent Neural Networks (RNN)
هذه الشبكات المتكررة هي واحدة من أكثر الشبكات العصبية المستخدمة، وهي الأكثر استخدامًا في عملية التنبؤ والتعلم المعزز، إذا أنها تعتمد على تغذية المدخلات بالأراء أو بالتقييمات لكي تتعامل معها، وتستخدم في تطبيقات مثل اقتراحات الصداقة في فيسبوك أو استكمال الكتابة أو الترجمة أو تحويل الصوت لنصوص.
رابعًا: شبكات الأساس الدائري Radial Basis Function Neural Networks
هذه الشبكات تشبه بشكل كبير شبكات التغذية الأمامية، ولكنها عوضًا عن دالة السيجمويد Sigmoid Function تستخدم دالة الأساس الدائري radial basis function (RBF)، وهي تعتمد على المسافة بين مركز الدائرة والنقاط، وهي تستخدم في التصنيف Classification ودوال الترتيب الزمني والتحكم في الآلات.
خامسًا: الشبكات ذاتية التدريب Self-Organizing Map Neural Network
تسمى هذه الشبكات كذلك لشبكات كوهونين نسبة إلى العالم الفنلندي الذي اخترعها، وتقوم هذه الشبكات باستقبال الكثير من المدخلات، ومن ثم تقوم بتقسيمها وتوزيعها Clustering، ولذا فإنها تستخدم في التعلم بدون إشراف Unsupervised Learning، وتتم على 3 خطوات وهي: البناء والتدريب والتعريف.
فمثلًا إذا كان لدي صفات لمليون شخص وأريد أن أرقمهم وأصنفهم إلى مجموعات أو أقم بتحليلهم عنقوديًا Clustering استخدم هذه الشبكة العصبية، وهي تقوم بفعل كل العمل وتقوم بإصدار المخرجات المناسبة، وتستخدم هذه الشبكة في تطبيقات الملاحة وفي الخرائط وفي التنقيب عن المياه والبترول بالإضافة إلى تحليل البيانات الضخمة.
سادسًا: شبكات الوحدات العصبية Modular Neural Network (MNN)
هذه الشبكة لها فكرة مبتكرة للغاية وهي الجمع بين أكثر من وحدة من وحدات الشبكات العصبية أو الجمع بين عدد من الشبكات العصبية، والتي تعمل بالتوازي مع بعضها البعض وتتشابك في النهاية من أجل تجميع القيم المُعالجة ومن ثم يتم من خلالها إصدار مخرج واحد.
وقد تكون هذه الشبكات المتوازية مختلفة بحيث واحدة تعالج النصوص والثانية تعالج الصوت والأخرى تعالج الفيديو.
تتميز هذه الشبكات بالسرعة الشديدة مقارنة بالبيانات التي تعالجها، وتستخدم في التحليلات المالية والاقتصادية، ولها العديد من الاستخدامات في علم الأحياء.
اقرأ أيضًا: ما هو تعلم الآلة وفوائده وأنواعه وتطبيقاته (شرح مبسط وسهل)
مشكلات وقصور الشبكات العصبية الاصطناعية
الشبكات العصبية مثل كل شيء أخر ليست وردية تمامًا، بل أن هناك العديد من المشكلات ونقاط القصور التي تحد من استخدامها أو تشكل عقبة كبيرة أمام استخدامها في جميع جوانب حياتنا، وسوف أقوم بتلخيص أهم 4 نقاط ضعف للشبكات العصبية، وهي:
متطلبات الشبكات العصبية الاصطناعية من البيانات
تحتاج الشبكات العصبية للكثير والكثير من البيانات من أجل تغذيتها، ورغم أن هذا أحيانًا ما يكون متاحًا إلا أنه لاستخدامها في بعض التطبيقات الأخرى يكون الأمر مرهقًا للغاية أو حتى مستحيلًا، وهذا لأنك تريد جمع المعلومات ومن ثم تصنيفها لتدريب الشبكة العصبية والنموذج عليها، بالإضافة إلى أن مشكلة البيانات هذه تساهم أيضًا في جعل الشبكة تستغرق وقت كبير للغاية من أجل أم تعمل.
اقرأ أيضاً: ما هي البيانات الضخمة Big Data وكيف تغير العالم
من المخاوف الموجودة على الساحة أيضًا كون الشبكات العصبية باتت تحتاج لعدد أكبر من البيانات لكي تكون فعالة، ولكي يمكننا استخدامها خاصة في تطبيقات التعلم العميق، وهذا ما يجعلنا مضطرين لتوفير أكبر كم من البيانات من أجل زيادة فعالية الشبكة العصبية أو حتى جعل فعاليتها مقبولة.
احتياج الشبكات العصبية الاصطناعية لقدرات حاسوبية هائلة
كما أن الشبكات العصبية تحتاج للكثير والكثير من البيانات لمعالجتها، فهي كذلك تحتاج إلى طاقات حاسوبية هائلة من أجل معالجة هذا الكم من البيانات، وهي القدرات التي عادة لا تتوافر في الأجهزة العادية المتاحة للاستخدامات اليومية، بل وأحيانًا كثيرة لا تتواجد في الحواسيب الأكثر تطورًا وقوة، إذا أن المعالجة المركزية CPU والمعالجة الرسومية GPU المطلوبتان هائلان للغاية.
بجانب هذا فإن الشبكات العصبية مكلفة أيضًا عندما يتعلق الأمر بالزمن، فلمعالجة هذا الكم الهائل من البيانات وحتى عند توافر الطاقات الحاسوبية اللازمة… فإننا نحتاج إلى وقت كبير، قد يصل إلى شهور من أجل تدريب النموذج والشبكة العصبية والوصول إلى كفاءة مقبولة يمكن الاعتماد عليها.
الصعوبة والعمى الخاص بالشبكات العصبية الاصطناعية
الصعوبة في الشبكات العصبية الاصطناعية تكمن في كونها معقدة، وأنه من الصعب تصميم شبكات عصبية جديدة لها وظائف أقوى، وهذا لكونها شديدة التعقيد وتحتاج إلى فهم عبقري للرياضيات وربط العديد من الأمور ببعضها البعض، ولذا فإن عدد الشبكات العصبية أو النماذج الموجودة شبه محدود.
أما العمى في الشبكات العصبية، فهو يظهر جليًا في الشبكات العصبية المعقدة حيث لا يمكننا أن نرى طريقة معالجة الشبكات العصبية للبيانات، وأنما يمكننا فقط الاطلاع على النتائج وتحديد مدى صحتها من عدمها، ولذا فأننا لا نعرف كيف تفكر الشبكة في ما تقوم به، وهو الذي من الممكن أن يتسبب في كارثة فيما بعد.
فعلى سبيل كان هناك نموذج يقوم بالتفريق بين الكلاب وبين الذئاب، وكان النموذج يخرج نتائج ذات فعالية كبيرة وبعد ذلك عند تقديم صور غير معنونة له قام بارتكاب أخطاء شنيعة وكانت فعاليته سيئة للغاية.
وبعد الكثير من الوقت والمجهود اكتشف الفريق البحثي أن الشبكة العصبية تحدد كون الكائن ذئب أم كلب من خلال الخلفية لأن صور الذئاب المقدمة لها في التدريب كانت في خلفية ثلجية.
ربما لا تعتقد بأن هذا الخطأ جسيم، إلا أنه سيكون كذلك إذا كان هذا نموذج لتشخيص الأمراض السرطانية المختلفة، أو للتحكم بمفاعل نووي، أو الإشراف على الصواريخ العسكرية، أو أي تطبيق عسكري آخر.
فعالية الشبكات العصبية الاصطناعية على المدى الطويل
يعتقد الكثير من الباحثين بأن الشبكات العصبية ليس لها فائدة أو وجود على المدى البعيد، ولا يعني هذا أنها غير مفيدة بل يعني أنها محدودة وتعاني من قصور شديد، ولكن للوصول لشكل الذكاء الاصطناعي العام الذي نفكر فيه على أنه الذكاء المشابه أو المتفوق على الذكاء البشري… فإن الشبكات العصبية في شكلها الحالي بعيدة للغاية عن الوصول إلى هذه الدرجة من التعقيد والتطور.
كلمات أخيرة ومصادر هامة لتعلم الشبكات العصبية الاصطناعية
هذا المقال هو أكثر مقال مجهد كتبته في حياتي كلها -ولكنه كان ممتع لهذه الدرجة أيضًا-، فلقد أعدت الكورسات والدروس التي استمعت لها من قبل، والتي تجاوزت العشر ساعات.
كما أنني قرأت عشرات المقالات بدون مبالغة، واستغرقت حوالي 9 ساعات ونصف من الكتابة والتعديل وإضافة المعلومات أو حذفها، وهذا من أجل أن يخرج المقال بهذه الصورة السلسة والمتدرجة ليجعل الشخص الذي لا يعرف شيء عن الشبكات العصبية يفهم أساسيتها.
لقد خرجت من هذه التجربة اللطيفة بنصيحة هامة، وهي أنه لا يجب عليك فهم كل شيء من المرة الأولى، ولذا لا تيأس ستحتاج لاستيعاب المفهوم أو التطبيق لأن تستمع للدرس أو لقراءة المقال عدة مرات، ومن الطبيعي أن تظل هناك نقاط لا تفهمها بشكل كامل.
ولذا إن لم تفهم أي نقطة من النقاط التي شرحتها في هذه المقالة قم بقراءتها مرة واثنان، وابحث عنها على اليوتيوب وشاهد الدروس الأخرى التي تشرحها، أو ابحث عنها على جوجل وخذ غطسة في المقالات المختلفة عنها.
من المصادر التي أرشحها لك لتعلم الشبكات العصبية الاصطناعية هو القسم الخامس الخاص بالشبكات العصبية من كورس تعلم الآلة لمهندس الذكاء الاصطناعي الشهير هشام عاصم.
والذي اعتمدت عليه في كثير من شروحاتي هذه، لأنه برأيي المصدر العربي الأقوى لشرح الشبكات الصناعية، وهو أيضًا مذهل في شرح تعلم الآلة والتعلم العميق ومعالجة اللغات الطبيعية بشكل عام.
كذلك سلسلة Neural networks من قناة 3Blue1Brown على اليوتيوب بمقاطعها الأربعة هي واحدة من أفضل الشروحات المرئية التي تعلمت منها على الإطلاق.
وصاحبها جراند ساندرسون هو واحد من أفضل من يستطيعون شرح المفاهيم الرياضية بشكل سهل وبسيط، ولذا أنصحك للغاية بأن تشاهدها إن كانت لغتك الإنجليزية قوية.
في النهاية أتمنى أن يعجبك المقال، وإذا كانت لديك أي سؤال أو استفسار اطرحه علي في التعليقات، وسوف أجيبك عنه في أسرع وقت ممكن.
السلام عليكم شكرا على هذا المقال المفيد
ولو سمحت احتاج الى مراجع
وعليكم السلام أخي.
للأسف لا نوفر عمالة من خلالنا.
السلام عليكم اخي , شرح جميل بارك الله فيك لكن لماذا لا يوجد شيئ يخص المحولات (tranformers) لم افهم هل هي نوع من انواع الشبكات العصبية ولماذا لا توجد معلومات كافية عليه
أرجو ان تجيبني وشكرا
وعليكم السلام
سنحاول طرح مقال حول الأمر.
مقالة رائعة ومبسطة لكن لتصحيح فقط بعد ضرب المدخلات من الطبقة السابقة بالاوزان وجمع حاصل الضرب يتم جمعها مع ثابت التحيز او bais ولا تضرب وهذا موجود في المصدر الي ذكرته قناة 3Blue1Brown
شكراً لك أخي علاء.
نعم كلامك صحيح، وكان هناك خطأ بالفعل، تقبل اعتذاري لذلك.
لقد تم تحديث المقال وتصحيح الخطأ وكل الشكر والتقدير لك للفت انتباهنا لهذا الخطأ.
بالتوفيق لك.
تقبل تحياتي واحترامي وتقديري.
مقال جميل جدا
في CNN تكون وظيفية الطبقة الالتفافية هو استخلاص الميزات الهامة من صورة الادخال . اما طبقة التجميع فغرضها هو تقليل ابعاد هذه الميزات واختزالها بطريقة ال Max pooling في حال كان غرض الشبكة هو اختيار الميزات الاعلى قيمة . او ال average pooling اذا كان الغرض فقط تقليل ابعاد الميزات الى الطبقة التالية .
اخيرا يتم جمع الميزات ف مصفوفة احادية تدعى المسطرة (Flatten Vector) والتي تمثل ميزات مهيكلة قابلة للتصنيف .
تمر هذه الميزات بشكل دفعات الى طبقة اخرى تدعى بالطبقة المتصلة بالكامل وظيفتها اخذ الميزات من ال Flatten و تحويلها الى نتائج قابلة للتفسير أو للاستخدام في مهمة محددة.في هذه الطبقة، يُحسَب تأثير كل ميزة مستخرجة على نتائج التصنيف النهائية. وتتم هذه العملية عن طريق ضبط وزن وانحياز كل خلية في الطبقة المتصلة بالكامل. يتم تدريب هذه الوزن والانحياز باستخدام خوارزميات التعلم العميق مثل الانحدار العكسي (Backpropagation) لضمان أن تكون نتائج التصنيف دقيقة. واخيرا تتم عملية التصنيف بطبقة الاخراج مثل طبقة Softmax التي تكون مسؤولة عن الاخراج النهائي واللذي يمثل تحديد اختيار واحد فقط من بين عدة اختيارات . كأن يكون تحديد الرقم 3 من بين الارقام 0 الى 9 .
شكراً لك أخي.
إضافتك رائعة جداً…. شكراً لك.
مقال رائع جدا سلمت يداك نادر ما اجد محتوى عربي منظم ومتسلسل الافكار ومفيد
شكراً لك أخي.
شهادة نعتز بها جداً وأفرحتنا جميعاً في الرابحون.
يمكنك المساهمة في نشر هذا المحتوى المفيد من خلال مشاركته على منصات السوشيال ميديا.
شكراً لك.