الشبكة العصبية التلافيفية ودمجها في نظام iOS (الجزء 1)


وسائل التنفيذ.

يتم دمج خوارزميات التعلم الآلي المختلفة في العديد من لغات البرمجة عالية المستوى. الأكثر شيوعًا والأسرع نموًا هو Python.

TensorFlow هي مكتبة برمجيات مفتوحة للتعلم الآلي تم تطويرها بواسطة Google لحل مشاكل بناء شبكة عصبية وتدريبها من أجل العثور على الصور وتصنيفها تلقائيًا ، وتحقيق جودة الإدراك البشري. تم تنفيذ واجهة برمجة التطبيقات الرئيسية للعمل مع المكتبة لـ Python.

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

يتم حاليًا اختيار أحدث إصدار من Python 3.7.2 كمترجم. بيئة التطوير هي PyCharm Community.

إعداد البيانات.

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

رسم بياني 1. - الأرقام بلغة الإشارة.

ستحتاج الخوارزمية إلى الكشف عن وجود لفتة في الصورة وتصنيفها برقم من 0 إلى 9. قبل بناء بنية الشبكة العصبية ، تحتاج إلى إعداد البيانات لتدريبها. أولاً ، يتم تنزيل بيانات مجموعة بيانات أرقام لغة الإشارة. يحتوي الملف الأول على 2063 صورة بالأبيض والأسود مع أرقام بلغة الإشارة. الصور بحجم 64x64 بكسل. يحتوي الملف الثاني على ملصق (متجه) مطابق للصورة.

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

متوسط ​​القيمة في المصفوفة هو صفر ،
والتشتت في المصفوفة هو الوحدة.

يتم توحيد الصور وإضافتها إلى مصفوفة جديدة لتوليفها اللاحق مع البيانات السابقة (

الشكل 2) الشكل 2. - إجراء تحميل الصور ومعالجتها.

معمارية الشبكة العصبية.

Network_sign_lang.py - ملف المشروع الرئيسي الذي يتم وصف الشبكة العصبية فيه. في بداية النص ، تم وصف العديد من المتغيرات العالمية للشبكة العصبية (الشكل 3).

تين. 3. - الخيارات العالمية.

Batch_size - عدد الصور التي يتم إدخالها في الشبكة العصبية لكل تكرار. Num_classes - عدد الفئات التي سيتنبأ بها النموذج. Img_size - حجم الصور المقدمة لطبقة الإدخال.

يتم استيراد وظيفة train_test_split () من مكتبة Sklearn إلى المشروع ، وتقسم المصفوفات X و y بنسبة 80:20 إلى عينات تدريب واختبار ، وتخلط البيانات بشكل عشوائي حتى لا يتم فرزها حسب الفصل.

ثم يتم تهيئة النموذج (الشكل 4) ، تتم إضافة الطبقة الأولى من Conv2D. يتم إدخال الصور من مصفوفة Xtrain ، ويشار إلى أبعاد مساحة الإخراج - 64 ، ونواة الالتفاف - 4x4 ، وخط الالتفاف ووظيفة التنشيط لطبقة ReLU.

الشكل 4. - الشبكة العصبية

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

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

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

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

يبدأ تدريب الشبكة العصبية بحفظ البيانات حول عملها في المتغير التاريخي. Validation_split - يستغرق عشرة بالمائة من بيانات التدريب للتحقق من الصحة ، وهي طريقة أخرى لتنظيمها.

يبلغ حجم عينة التدريب 1965 مثالاً ، وعينة الاختبار 547 ، وعينة التحقق 219. بعد الانتهاء من عملية التدريب ، يتم إنشاء رسم بياني لاعتماد الدقة التي تم الحصول عليها على بيانات التدريب والاختبار (الشكل 5).

الشكل 5. - جدول التدريب.

يوضح الرسم البياني أن النموذج تم حفظه في العصر الخامس عشر (بأعلى دقة وأقل فجوة بين Xtrain و Xtest).

الخطوة التالية هي تحميل الشبكات العصبية الناتجة في برنامج نصي آخر للتحقق من عملها. يتم عرض قيم المقاييس في بيانات الاختبار (الشكل 6).

الشكل 6. - التحقق من أداء النموذج.

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

سنتحدث عن المعالجة المسبقة للبيانات وتكامل شبكة عصبية بتنسيق معين في تطبيق iOS في الجزء التالي.

All Articles