برنامه نویسی

شبکه متخاصم مولد (GAN) – انجمن DEV

در زمینه یادگیری ماشین، انواع مدل ها و معماری ها هر ساله توسط محققان در سراسر جهان برای حل یک مشکل خاص پیشنهاد می شود. یکی از این مدل‌ها شبکه‌های متخاصم Generative Adversarial یا به اختصار GAN نامیده می‌شود. امروز می خواهیم به آن بپردازیم و یاد بگیریم که چیست، چگونه کار می کند و همچنین کاربرد آن در دنیای واقعی.

چیست؟

بنابراین اول از همه، من فرض می‌کنم که شما با شبکه عصبی کانولوشن (CNN) آشنا هستید، زیرا GAN با کمی تغییرات بیشتر در بالای آن ساخته شده است. اگر هنوز نمی دانستید CNN چیست، می توانید مجموعه پست های وبلاگ من در مورد آن را اینجا بخوانید

بنابراین اکنون که این کار از بین رفته است، بیایید به آن شیرجه بزنیم. GAN مخفف چیست؟ این شبکه مخالف تولید کننده است. به بیان ساده، شبکه شامل قسمتی متخاصم یا به عبارت دیگر رقیب است که چیزی را تولید می کند. بنابراین برای اینکه مسابقه ای برگزار شود، حداقل باید دو نفر یا چیزهایی وجود داشته باشند درست است؟ بنابراین در این زمینه، دو چیز عبارتند از Generator Discriminator و Discriminator.

تبعیض کننده

بیایید با ممیز شروع کنیم. وظیفه اصلی آن تمایز داده های جعلی از داده های واقعی است. معنی آن چیست؟ فرض کنید ما از یک GAN برای تولید چهره های جعلی انسان استفاده می کنیم. کار تمایزگر ساده است: می گوید که آیا یک تصویر چهره واقعی انسان است یا نه. می توانید ساختار این مدل را شبیه به یک CNN معمولی با یک تابع سیگموئید در لایه خروجی تصور کنید که احتمال این را می دهد که تصویر یک چهره انسان است. خیلی ساده، درست است؟

ژنراتور

اکنون، وظیفه مولد این است که تصاویر جعلی ایجاد کند که برای فریب دادن آن به ممیز وارد می شود. به مثال چهره انسان برگردیم، نقش ژنراتور ایجاد چهره‌های انسان جعلی است که از نویز تصادفی شروع می‌شود و یک تصویر را خروجی می‌دهد تا به عنوان ورودی به متمایزکننده منتقل شود. از نظر ساختاری، مولد شبیه یک CNN است که مقادیر پیکسلی یک تصویر را خروجی می‌کند.

ترکیب آنها با هم

ابتدا مدل تفکیک کننده را آموزش می دهیم. ما آن را با ترکیبی از تصاویر واقعی و جعلی چهره انسان آموزش می دهیم که برچسب گذاری شده اند تا بتواند آنها را متمایز کند. این کار را با استخراج ویژگی های تصاویر انجام می دهد، مانند تشخیص اینکه صورت انسان دو چشم و یک بینی دارد. هنگامی که متمایز کننده در کار خود خوب شد، آموزش ژنراتور را شروع می کنیم. در ابتدا، ژنراتور تصاویر تصادفی را تولید می کند که اصلا شبیه چهره نیستند. این تصاویر به تشخیص دهنده ارسال می شود که به درستی آنها را جعلی تشخیص می دهد.

بر اساس نتایج، مدلی که از دست می دهد (به اشتباه شناسایی یا تولید می کند) خود را به روز می کند تا بهبود یابد. برای مثال، اگر تمایزکننده به درستی یک چهره جعلی را شناسایی کند، مولد از این بازخورد یاد می‌گیرد و برای تولید چهره‌های واقعی‌تر تنظیم می‌کند. برعکس، اگر متمایز کننده به اشتباه چهره واقعی را جعلی تشخیص دهد، خود را به روز می کند تا دقت آن را بهبود بخشد. این روند به طور مکرر ادامه می یابد تا زمانی که ژنراتور تصاویر واقعی متقاعد کننده ای تولید کند.

نتیجه

این ایده اصلی GAN است. موارد استفاده زیادی از آن وجود دارد، از بینایی کامپیوتری، پردازش زبان طبیعی و حتی توسعه بازی و واقعیت مجازی. با این حال، در پست بعدی خواهیم دید که چگونه GAN در کار وضوح تصویر فوق العاده با استفاده از GAN یا به اختصار SRGAN بر اساس یک مقاله تحقیقاتی نسبتاً جدید در سال 2017 پیاده سازی می شود. تا آن زمان، امیدوارم بچه ها پست را دوست داشته باشید و یاد بگیرید. چیزی از آن به امید دیدار!

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا