مقدمة موجزة عن الشبكات

مع شرح الرياضيات ورمز

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

قبل: الأرقام الغامضة ، بعد: الوجوه الواقعية

قام متغيرات GANs الآن بأشياء مجنونة ، مثل تحويل صور الحمير الوحشية إلى خيول والعكس بالعكس.

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

إليك رابطًا إلى github repo الذي أدليت به لموارد GAN:

فكيف تعمل الشبكات؟

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

إليك مقالة رائعة تشرح توزيعات الاحتمال والمفاهيم الأخرى لأولئك الذين ليسوا على دراية بها:

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

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

تدريب شبكات الخصومة التوليدية ينطوي على هدفين:

  1. يزيد المُميِّز من احتمالية تعيين الملصق الصحيح إلى كل من أمثلة التدريب والصور التي تم إنشاؤها بواسطة المولد. أي يصبح الشرطي أفضل في التمييز بين المزيفة واللوحات الحقيقية.
  2. يقلل المولد من احتمالية أن يتنبأ المميّز بأن ما ينتج عنه مزيف. أي يصبح المولد أفضل في صنع المنتجات المقلدة

دعونا نحاول ترميز هاتين الفكرتين في برنامج.

سنتبع هذا الرمز في هذا البرنامج التعليمي

البيانات

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

يحتاج المولد أيضًا إلى متجهات إدخال عشوائي لإنشاء صور ، ولهذا ، سنستخدم متعبًا

وظيفة جان

تلعب GAN لعبة minimax ، حيث تحاول الشبكة بالكامل تحسين الوظيفة V (D ، G). هذه هي المعادلة التي تحدد ما تفعله GAN:

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

يتم تعريف المولد بواسطة G (z) ، والذي يحول بعض الضوضاء z التي ندخلها في بعض البيانات ، مثل الصور.

يتم تعريف أداة التمييز بواسطة D (x) ، مما يؤدي إلى احتمالية أن يكون الإدخال x من مجموعة البيانات الحقيقية أم لا.

المتصرف يتصرف مثل الشرطة

نريد أن تكون التنبؤات على مجموعة البيانات بواسطة المُميِّز قريبة من 1 قدر الإمكان ، وأن يكون المولد أقرب ما يكون إلى 0. لتحقيق ذلك ، نستخدم احتمال سجل D (x) و 1-D (z) في الوظيفة الهدف.

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

إليك شرح لفقدان السجل إذا لم تكن متأكدًا مما يفعله:

ترميز المولد

المولد هو مجرد نموذج لشبكة عصبية من الفانيليا يأخذ متجهًا عشوائيًا ويخرج متجهًا 784-bit ، والذي عند إعادة تشكيله ، يصبح صورة 28 * 28 بكسل.

ترميز التمييز

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

تجميعه في GAN

نقوم الآن بتجميع كلا النموذجين في شبكة عدائية واحدة ، مع تحديد المدخلات كمتجه 100-الأبعاد ، والإخراج كمخرج للمتمييز.

تدريب GAN

  1. أولاً ، نقوم بتحميل البيانات وتقسيم البيانات إلى عدة دفعات لإدخالها في نموذجنا
  2. نحن هنا نهيئ شبكة GAN الخاصة بنا استنادًا إلى الأساليب المحددة أعلاه
  3. هذا هو حلقة التدريب لدينا ، حيث نركض لعدد محدد من الحقبة.
  4. نولد بعض الضوضاء العشوائية ونخرج بعض الصور من مجموعة البيانات الخاصة بنا
  5. نقوم بإنشاء بعض الصور باستخدام المولد وإنشاء متجه X يحتوي على بعض الصور المزيفة وبعض الصور الحقيقية
  6. نقوم بإنشاء متجه Y الذي يحتوي على "الإجابات الصحيحة" التي تتوافق مع X ، مع الصور المزيفة المسمى 0 والصور الحقيقية المسمى 0.9. تم تصنيفها على أنها 0.9 بدلاً من 1 لأنها تساعد GAN على التدرب بشكل أفضل ، وهي طريقة تسمى تجانس التسمية من جانب واحد.
  7. نحتاج إلى تبديل التدريب بين المميّز والمولد ، لذا هنا ، نقوم بتحديث المميّز
  8. أخيرًا ، نقوم بتحديث أداة التمييز.

أول قان لدينا

بمجرد تشغيل الشفرة أعلاه ، أنشأنا بفاعلية أول شبكة GAN التي تنشئ أرقامًا من نقطة الصفر!

الصور التي تم إنشاؤها من GAN قمنا بتدريب!

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

شكرا للقراءة،

Sarvasv

هل تريد الدردشة؟ تجدني على Twitter و Linkedin

إليك بعض المشاركات الأخرى التي كتبت