شعار زيفيرنت

تصور نماذج التعلم العميق باستخدام Visualkeras

التاريخ:

                                                               مصدر الصورة: المؤلف

المُقدّمة

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

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

الشبكات العصبية الاصطناعية هي أنظمة حوسبة مشابهة للشبكة العصبية البيولوجية في الدماغ البشري. ANN البسيط عبارة عن مجموعة من الوحدات أو العقد المتصلة تسمى الخلايا العصبية الاصطناعية التي يتم تشكيلها بشكل مشابه للخلايا العصبية في الدماغ البيولوجي. يستخدم ANN معالجة الدماغ كأساس لإنشاء خوارزميات يمكن استخدامها لنمذجة أنماط معقدة ومشاكل التنبؤ. يمكن تسمية ANN التي تحتوي على أكثر من ثلاث طبقات (طبقة الإدخال ، طبقة الإخراج ، طبقات مخفية متعددة) باسم "الشبكة العصبية العميقة". يشار إلى عدد الطبقات المخفية في الشبكة العصبية عمومًا على أنها "عميقة" في نموذج التعلم العميق. يمكن أن تحتوي الشبكات العصبية العميقة على عدة طبقات مخفية ، في حين أن الشبكات العصبية التقليدية عادة ما تحتوي على 2-3 طبقات فقط.

هندسة الشبكة العصبية

المكونات الرئيسية للشبكة العصبية هي:

  1. الإدخال - الإدخال هو مقياس لميزة النموذج. بكلمات بسيطة ، يمكننا القول أن المدخلات هي مجموعة السمات التي يتم إدخالها في النموذج لأغراض التعلم.
  2. الأوزان - الأوزان تشبه الضرب العددي. الغرض الأساسي من الأوزان في الشبكة العصبية هو التأكيد على السمات التي تساهم بشكل أكبر في عملية التعلم. يتم تحقيقه من خلال تطبيق الضرب القياسي على قيمة الإدخال ومصفوفة الوزن. يمكننا أن نفهم أهمية كل مدخلات والاتجاه من الأوزان ذات الصلة.
  3. وظيفة النقل - تختلف وظيفة النقل عن المكونات الأخرى لأنها تأخذ مدخلات متعددة. تجمع وظيفة النقل بين عدة مدخلات إلى قيمة إخراج واحدة بحيث يمكن تطبيق وظيفة التنشيط.
  4. وظيفة التنشيط - ستعمل وظيفة التنشيط على تحويل الرقم من وظيفة النقل إلى قيمة تمثل الإدخال. في معظم الأحيان ، ستكون وظيفة التنشيط غير خطية. بدونها ، سيكون الناتج خليطًا خطيًا من قيم الإدخال ، مع عدم القدرة على دمج اللاخطية في الشبكة. وظيفتان شائعتان للتنشيط هما - ReLu و sigmoid.
  5. الانحياز - الغرض من التحيز هو تغيير القيمة التي تنتجها وظيفة التنشيط.

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

تصور نماذج التعلم العميق

                                                           مصدر الصورة: المؤلف

تصور الشبكة العصبية باستخدام مكتبة Keras

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

تسمح مكتبة Keras بتصور الشبكات العصبية باستخدام الأمر plot_model.

إنشاء نموذج شبكة عصبية

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

لنبدأ بإنشاء شبكة عصبية اصطناعية أساسية (ANN) باستخدام Keras ووظائفها.

لا تتردد في إنشاء شبكة عصبية مختلفة نظرًا لأننا نتخيل النموذج النهائي فقط ، وبالتالي ، قد يكون من المثير للاهتمام استكشاف إمكانات مكتبة Keras المرئية (التي تمت مناقشتها لاحقًا في هذه المقالة) بنموذج مختلف.

من keras.models استيراد تسلسلي من استيراد keras.layers كثيف
model = نموذج تسلسلي (). add (Dense (12، input_dim = 8، Activation = 'relu')) model.add (Dense (8، activation = 'relu')) model.add (Dense (1، activation = ') sigmoid ')). الملخص ()

يمكننا عرض الصورة التي تم إنشاؤها باستخدام الأمر التالي.

من keras.utils.vis_utils import plot_model plot_model (model، to_file = 'model_plot.png'، show_shapes = True، show_layer_names = True)

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

من الصورة أعلاه ، يمكننا تصور بنية النموذج بوضوح وكيف ترتبط الطبقات المختلفة ببعضها البعض من خلال عدد من الخلايا العصبية. بعد ذلك ، دعونا نبني CNN ونتخيلها باستخدام مكتبة Keras.

من نماذج استيراد keras من keras.layer استيراد Dense و Conv2D و MaxPooling2D و Flatten و Activation من نموذج طبقات استيراد keras = نموذج تسلسلي (). add (Conv2D (64، (4,4،32,32,3)، input_shape = (2،2,2،2) ، activation = 'relu'، padding = 'same')) model.add (MaxPooling64D (pool_size = (4,4،32,32,3))) model.add (Conv2D (2,2، (0.2،2)، input_shape = (128،4,4، 32,32,3) ، التنشيط = 'relu' ، الحشو = 'نفسه')) النموذج. إضافة (MaxPooling2D (pool_size = (2,2،0.25))) model.add (Dropout (2)) model.add (Conv128D (4,4، (32,32,3 ، 2)، input_shape = (2,2،0.35،256)، activation = 'relu'، padding = 'same')) model.add (MaxPooling0.5D (pool_size = (10،XNUMX))) model.add (Dropout (XNUMX) ) model.add (ConvXNUMXD (XNUMX، (XNUMX،XNUMX)، input_shape = (XNUMX،XNUMX،XNUMX)، activation = 'relu'، padding = 'same')) model.add (MaxPoolingXNUMXD (pool_size = (XNUMX،XNUMX ))) model.add (Dropout (XNUMX)) model.add (Flaten ()) model.add (Dense (XNUMX، Activation = 'relu')) model.add (Dropout (XNUMX)) model.add (Dense () XNUMX ، التنشيط = 'softmax'))

يمكننا تصور أمر "plot_model" النموذجي المستخدم سابقًا.

نموذج الحبكة

هنا يمكننا تصور الطبقات المختلفة للشبكة العصبية مع عدد المرشحات وحجم الفلتر ، لا. من الخلايا العصبية ، إلخ. يعد الأمر plot_model من مكتبة Keras مفيدًا لعرض بنية ANN وكذلك CNN نظرًا لتخطيط نمط المخطط الانسيابي للشبكة العصبية. ولكن إذا كان هناك المزيد من الطبقات لشبكة CNN ، فإن أسلوب التصور هذا يتطلب مساحة أكبر ويصعب قراءته. هناك مكتبة أخرى ، "Visualkeras" ، والتي يمكن أن تساعدنا بسهولة في تصور هذه الشبكات. في هذا البرنامج التعليمي ، سوف نستكشف مكتبة Visualkeras ونطور تصورات باستخدامها.

استخدام Visualkeras لتصور الشبكة العصبية

Visualkeras هي مكتبة Python مفتوحة المصدر تساعد في تصور بنية الشبكة العصبية Keras. إنه يوفر تخصيصًا بسيطًا لتلبية مجموعة واسعة من المتطلبات. تقوم Visualkeras بإنشاء هياكل نمطية متعددة الطبقات ، والتي تعتبر مثالية لشبكات CNN (الشبكات العصبية التلافيفية) ، وبنيات أسلوب الرسم البياني ، والتي تناسب معظم الطرز ، بما في ذلك شبكات التغذية الأمامية البسيطة. إنها واحدة من أكثر المكتبات فائدة لفهم كيفية اتصال الطبقات المختلفة.

لنبدأ بتثبيت مكتبة Visualkeras في موجه الأوامر.

نقطة تثبيت فيجوالكراس

بعد ذلك ، سنقوم باستيراد جميع المكتبات المطلوبة لبناء نموذج تسلسلي.

استيراد keras استيراد tensorflow مثل tf من tensorflow استيراد keras من keras.models استيراد تسلسلي من tensorflow.keras.layers استيراد المدخلات ، Conv2D ، Dense ، Flatten ، Dropout من tensorflow.keras.layers استيراد GlobalMaxPooling2D ، MaxPooling2D من tensorflow.keras.models import Model من tensorflow.keras استيراد منظمون ومحسنون

سنقوم الآن ببناء نموذج بسيط مع بعض الطبقات التلافيفية والتجميعية.

model = Sequential()
model.add(Conv2D(64,(4,4),input_shape=(32,32,3),activation='relu',padding='same'))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Conv2D(128,(4,4),input_shape=(32,32,3),activation='relu',padding='same'))
model.add(MaxPooling2D(pool_size=(2,2)))

دعنا نبحث عن ملخص النموذج المحدد.

فيجوالكيراس | تصور نماذج التعلم العميق

الآن لتصور نموذج الشبكة العصبية ، سنقوم باستيراد حزمة مكتبة Visualkeras كما هو موضح أدناه.

استيراد visualkeras visualkeras.layered_view (نموذج)

مكتبة Visualkeras

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

دعنا نزيد التعقيد ونضيف بعض الطبقات مع عدد قليل من المتسربين لرؤية تأثير التصور.

model = Sequential()
model.add(Conv2D(64,(4,4),input_shape=(32,32,3),activation='relu',padding='same'))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Conv2D(64,(4,4),input_shape=(32,32,3),activation='relu',padding='same'))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Dropout(0.2))
model.add(Conv2D(128,(4,4),input_shape=(32,32,3),activation='relu',padding='same'))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Dropout(0.25))
model.add(Conv2D(128,(4,4),input_shape=(32,32,3),activation='relu',padding='same'))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Dropout(0.35))
model.add(Flatten())
model.add(Dense(256, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(10, activation='softmax'))

يتم عرض ملخص النموذج المحدد أدناه.

نموذج التصور

الآن ، نتخيل النموذج مع الطبقات المضافة حديثًا.

تصور نماذج التعلم العميق

الآن سنضيف الأسطورة إلى التصور. تشير خاصية وسيلة الإيضاح إلى الارتباط بين اللون ونوع الطبقة. من الممكن أيضًا توفير "PIL.ImageFont" مخصص لاستخدامه بخلاف ذلك ، ستستخدم Visualkeras الخط الافتراضي PIL. اعتمادًا على نظام التشغيل الخاص بك ، قد تحتاج إلى تحديد المسار الكامل للخط المفضل. في حالة google colab ، انسخ الخط المطلوب إلى مجلد خطوط truetype وإلا يمكنك استخدام الخط الافتراضي.

visualkeras.layered_view (model، legend = True) # بدون خط مخصص من PIL استيراد ImageFont font = ImageFont.truetype ("arial.ttf"، 12) visualkeras.layered_view (model، legend = True، font = font) # خط محدد

فيسوالكيراس

باستخدام الكود التالي ، يمكننا رؤية نموذج الشبكة العصبية في مساحة ثنائية الأبعاد أو بأسلوب مسطح.

visualkeras.layered_view (النموذج ، الأسطورة = صحيح ، الخط = الخط ، draw_volume = خطأ)

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

يمكن ضبط التباعد بين الطبقات باستخدام متغير "التباعد" ، كما هو موضح أدناه.

visualkeras.layered_view (النموذج ، الأسطورة = صحيح ، الخط = الخط ، draw_volume = خطأ ، التباعد = 30)

متغير التباعد | تصور نماذج التعلم العميق

يمكننا تخصيص ألوان الطبقات باستخدام الكود التالي.

من tensorflow. Layers.Dropout] ['fill'] = '# 2e' color_map [Layers.Dense] ['fill'] = '# fb00' color_map [layer.Flatten] ['fill'] = '# ffbe5b' visualkeras.layered_view ( model، legend = True، font = font، color_map = color_map)

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

نبذة عامة

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

اقرأ المزيد من المقالات على مدونتنا. انقر هنا.

كاتب السيرة الذاتية

Devashree حاصل على درجة M.Eng في تكنولوجيا المعلومات من ألمانيا وخلفية في علوم البيانات. إنها تحب العمل مع الإحصائيات واكتشاف الرؤى المخفية في مجموعات البيانات المتنوعة لإنشاء لوحات معلومات مذهلة. تستمتع بمشاركة معرفتها في مجال الذكاء الاصطناعي من خلال كتابة مقالات تقنية على مختلف المنصات التكنولوجية.
تحب السفر وقراءة القصص الخيالية وحل ألغاز سودوكو والمشاركة في مسابقات البرمجة في أوقات فراغها.

يمكنك متابعتها لينكدين:, GitHub جيثب:, Kaggle, متوسط, تويتر.

الوسائط الموضحة في هذه المقالة ليست مملوكة لشركة Analytics Vidhya ويتم استخدامها وفقًا لتقدير المؤلف. 

بقعة_صورة

أحدث المعلومات الاستخباراتية

بقعة_صورة

الدردشة معنا

أهلاً! كيف يمكنني مساعدك؟