كتاب "التعلم العميق على R"

الصورة التعلم العميق هو مجموعة من خوارزميات التعلم الآلي التي تمثل نماذج تجريدية عالية المستوى في البيانات باستخدام بنى تتكون من العديد من التحولات غير الخطية. موافق ، هذه العبارة تبدو مهددة. لكن كل شيء ليس مخيفًا جدًا إذا تحدث فرانسوا شولاي ، الذي أنشأ Keras ، أقوى مكتبة للعمل مع الشبكات العصبية ، عن التعلم العميق. تجربة التعلم العميق مع أمثلة عملية من مجموعة واسعة من المجالات. ينقسم الكتاب إلى جزأين ، الأول يعطى الأسس النظرية ، والثاني مكرس لحل مشاكل معينة. سيسمح لك هذا ليس فقط بفهم أساسيات DL ، ولكن أيضًا تعلم كيفية استخدام الفرص الجديدة في الممارسة. تم كتابة هذا الكتاب للأشخاص ذوي الخبرة في برمجة R الذين يريدون التعرف بسرعة على التعلم العميق في الممارسة ، وهو ترتيب للكتاب الأكثر مبيعًا من قبل فرانسوا شول ، "Deep Learning in Python" ، ولكن باستخدام أمثلة تستند إلى واجهة R لـ Keras.

عن هذا الكتاب


كتاب "التعلم العميق على R" موجه إلى الإحصائيين والمحللين والمهندسين والطلاب الذين لديهم مهارات برمجة في R ، ولكن ليس لديهم معرفة كبيرة في مجال الآلة والتعلم العميق. هذا الكتاب هو نسخة منقحة من كتاب سابق ، Deep Learning in Python ، يحتوي على أمثلة تستخدم واجهة R لـ Keras. الغرض من هذا الكتاب هو إعطاء مجتمع R دليلاً يحتوي على كل ما تحتاجه ، من النظرية الأساسية إلى التطبيقات العملية المتقدمة. سترى أكثر من 30 مثالًا على رمز البرنامج مع التعليقات التفصيلية والتوصيات العملية والتفسيرات العامة البسيطة لكل ما تحتاج إلى معرفته لاستخدام التعلم العميق في حل مشكلات معينة.

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

مقتطفات. 5.4.1. تصور التنشيط المتوسط


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

> library(keras) > model <- load_model_hdf5("cats_and_dogs_small_2.h5") > model________________________________________________________________ Layer (type) Output Shape Param # ============================================================== conv2d_5 (Conv2D) (None, 148, 148, 32) 896 ________________________________________________________________ maxpooling2d_5 (MaxPooling2D) (None, 74, 74, 32) 0 ________________________________________________________________ conv2d_6 (Conv2D) (None, 72, 72, 64) 18496 ________________________________________________________________ maxpooling2d_6 (MaxPooling2D) (None, 36, 36, 64) 0 ________________________________________________________________ conv2d_7 (Conv2D) (None, 34, 34, 128) 73856 ________________________________________________________________ maxpooling2d_7 (MaxPooling2D) (None, 17, 17, 128) 0 ________________________________________________________________ conv2d_8 (Conv2D) (None, 15, 15, 128) 147584 ________________________________________________________________ maxpooling2d_8 (MaxPooling2D) (None, 7, 7, 128) 0 ________________________________________________________________ flatten_2 (Flatten) (None, 6272) 0 ________________________________________________________________ dropout_1 (Dropout) (None, 6272) 0 ________________________________________________________________ dense_3 (Dense) (None, 512) 3211776 ________________________________________________________________ dense_4 (Dense) (None, 1) 513 ================================================================ Total params: 3,453,121 Trainable params: 3,453,121 Non-trainable params: 0 

بعد ذلك ، حدد صورة إدخال قطة ليست جزءًا من مجموعة التدريب.

الصورة

قائمة 5.25. اختبار صورة العرض

 plot(as.raster(img_tensor[1,,,])) 

لاستخراج خرائط المعالم ليتم تصورها ، قم بإنشاء نموذج Keras الذي يقبل حزم الصور ويعرض تفعيل جميع المستويات التلافيفية والجمع. للقيام بذلك ، استخدم الدالة keras_model من إطار عمل Keras ، والتي تأخذ حجتين: موتر الإدخال (أو قائمة موتر الإدخال) وموتر الإخراج (أو قائمة موتر الإخراج). ستكون النتيجة كائن نموذج Keras مشابهًا للنماذج التي تم إرجاعها بواسطة دالة keras_sequential_model () التي كنت معتادًا عليها بالفعل ؛ يعين هذا النموذج مدخلات لمخرجات معينة. نماذج الميزات
هذا النوع هو القدرة على إنشاء نماذج ذات مخرجات متعددة (على عكس keras_sequential_model ()). تمت مناقشة وظيفة keras_model بمزيد من التفصيل في القسم 7.1.

الصورة

الصورة

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

الصورة

خذ على سبيل المثال تنشيط الطبقة التلافيفية الأولى لصورة إدخال قطة:

 > first_layer_activation <- activations[[1]] > dim(first_layer_activation) [1] 1 148 148 32 

هذه خريطة مميزة 148 × 148 مع 32 قناة. دعونا نحاول عرض بعض منهم. أولاً ، نحدد وظيفة لتصور القناة.

قائمة 5.28. وظيفة تصور القناة

 plot_channel <- function(channel) { rotate <- function(x) t(apply(x, 2, rev)) image(rotate(channel), axes = FALSE, asp = 1, col = terrain.colors(12)) } 

الآن سنعرض القناة الثانية لتفعيل المستوى الأول من النموذج الأصلي (الشكل 5.18). يبدو أن هذه القناة تمثل كاشف حلقة.
قائمة 5.29. تصور القناة 2

 plot_channel(first_layer_activation[1,,,2]) 

الآن دعونا نلقي نظرة على القناة السابعة (الشكل 5.19) ، ولكن ضع في اعتبارك أن قنواتك قد تكون مختلفة ، لأن تعلم فلاتر معينة ليس عملية حتمية. هذه القناة مختلفة قليلاً ويبدو أنها تبرز قزحية القطة.
قائمة 5.30. تصور القناة 7

 plot_channel(first_layer_activation[1,,,7]) 

الصورة

الآن سنقوم ببناء تصور كامل لجميع التنشيط على الشبكة (القائمة 5.31). للقيام بذلك ، قم باستخراج وعرض كل قناة في جميع خرائط التنشيط الثمانية ، ووضع النتائج في موتر واحد أكبر مع الصور (الشكل 5.20-5.23).

قائمة 5.31. تصور جميع القنوات لجميع التنشيط المتوسط

 image_size <- 58 images_per_row <- 16 for (i in 1:8) { layer_activation <- activations[[i]] layer_name <- model$layers[[i]]$name n_features <- dim(layer_activation)[[4]] n_cols <- n_features %/% images_per_row png(paste0("cat_activations_", i, "_", layer_name, ".png"), width = image_size * images_per_row, height = image_size * n_cols) op <- par(mfrow = c(n_cols, images_per_row), mai = rep_len(0.02, 4)) for (col in 0:(n_cols-1)) { for (row in 0:(images_per_row-1)) { channel_image <- layer_activation[1,,,(col*images_per_row) + row + 1] plot_channel(channel_image) } } par(op) dev.off() } 

الصورة

الصورة

هنا بعض التعليقات على النتائج.

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

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

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

الصورة


»يمكن العثور على مزيد من المعلومات حول الكتاب على موقع الناشر على الويب
» المحتويات
» مقتطفات

قسيمة خصم 20٪ للمتجولين - Deep Learning with R

Source: https://habr.com/ru/post/ar421769/


All Articles