→ بازگشت به بینایی کامپیوتری

شبکه‌های مولد رقابتی (GANs)

در بخش قبلی، درباره مدل‌های تولیدی صحبت کردیم: مدل‌هایی که می‌توانند تصاویر جدیدی مشابه تصاویر موجود در مجموعه داده‌های آموزشی تولید کنند. VAE یک مثال خوب از یک مدل تولیدی بود.

با این حال، اگر بخواهیم چیزی بسیار معنی‌دار مانند یک نقاشی با وضوح مناسب تولید کنیم، با VAE مشاهده خواهیم کرد که آموزش به خوبی همگرا نمی‌شود. برای این نوع کاربرد، باید درباره یک معماری دیگر که به طور خاص برای مدل‌های تولیدی طراحی شده است – شبکه‌های مولد رقابتی، یا GANs صحبت کنیم.

ایده اصلی یک GAN این است که دو شبکه عصبی وجود داشته باشند که در مقابل یکدیگر آموزش ببینند:

تصویر از دیمیتری سوشنیکوف

✅ برخی واژگان:

  • تولیدکننده شبکه‌ای است که یک وکتور تصادفی را می‌گیرد و تصویر را به عنوان نتیجه تولید می‌کند.
  • متمایزکننده شبکه‌ای است که یک تصویر را می‌گیرد و باید بگوید آیا این یک تصویر واقعی (از مجموعه داده‌های آموزشی) است یا این که توسط تولیدکننده تولید شده است. در واقع، این یک طبقه‌بندی‌کننده تصویر است.

تمایز‌دهنده

معماری تمایز‌دهنده به طور کلی مشابه یک شبکه طبقه‌بندی تصویر معمولی است. در ساده‌ترین حالت، این معماری می‌تواند به صورت یک طبقه‌بند کاملاً متصل باشد، اما به احتمال زیاد بیشتر به شکل یک شبکه‌ عصبی پیچشی طراحی می‌شود.

✅ یک GAN که بر اساس شبکه‌های کانولوشن عمل می‌کند، به عنوان DCGAN شناخته می‌شود.

یک تمایز‌دهنده CNN معمولاً شامل لایه‌های زیر است: چندین لایه کانولوشن و تطبیق (pooling) که اندازه فضایی آن‌ها کاهش یافته و همچنین یک یا چند لایه کاملاً متصل برای استخراج "بردار ویژگی" و طبقه‌بندی نهایی به صورت دوتایی.

✅ در این زمینه، تطبیق (pooling) به عنوان یک تکنیک شناخته می‌شود که اندازه تصویر را کاهش می‌دهد. لایه‌های تطبیق ابعاد داده‌ها را با ترکیب خروجی‌های خوشه‌های نورون در یک لایه به یک نورون واحد در لایه بعدی کاهش می‌دهند. - منبع

تولیدکننده

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

✅ به دلیل اینکه لایه کانولوشن به عنوان یک فیلتر خطی عمل می‌کند که تصویر را عبور می‌دهد، دکنولوشن به طور اساس مشابه کانولوشن است و می‌توان آن را با استفاده از منطق همان لایه پیاده‌سازی کرد.

تصویر از دیمیتری سوشنیکوف

آموزش GAN

شبکه‌های مولد تخاصمی (GAN) به‌خاطر وجود رقابت مداوم بین تولیدکننده و متمایزکننده شناخته می‌شوند. در این رقابت، هر دو شبکه بهبود می‌یابند و در نتیجه شبکه یاد می‌گیرد تا تصاویر بهتری تولید کند.

آموزش این شبکه در دو مرحله انجام می‌شود:

  • آموزش متمایزکننده: این مرحله نسبتاً ساده است. ما یک دسته از تصاویر را با استفاده از تولیدکننده تولید می‌کنیم و آن‌ها را با برچسب 0، که نشان‌دهنده تصویر جعلی است، مشخص می‌نماییم. همچنین یک دسته از تصاویر را از مجموعه داده‌های ورودی (با برچسب 1، که نشان‌دهنده تصویر واقعی است) به‌دست می‌آوریم. پس از آن، مقدار ضرر متمایزکننده محاسبه و به‌وسیله روش پس‌انتشار (backpropagation) به‌روزرسانی می‌شود.

  • آموزش تولیدکننده: این مرحله به‌مراتب پیچیده‌تر است، زیرا خروجی مورد انتظار برای تولیدکننده به‌طور مستقیم مشخص نیست. ما کل شبکه GAN، که شامل تولیدکننده و متمایزکننده است، مورد ارزیابی قرار می‌دهیم و آن را با برخی وکتورهای تصادفی تغذیه می‌کنیم و انتظار داریم که نتیجه 1 (مربوط به تصاویر واقعی) باشد. در این مرحله، پارامترهای متمایزکننده قفل می‌شوند تا از آموزش آنها جلوگیری شود و سپس روش پس‌انتشار انجام می‌گیرد.

در طول این فرآیند، ضررهای هر دو تولیدکننده و متمایزکننده به‌طور قابل توجهی کاهش نمی‌یابند. در وضعیت ایده‌آل، این ضررها باید نوسان کنند، که این موضوع به بهبود عملکرد هر دو شبکه مربوط می‌شود.

✍️ تمرینات: GANها

مشکلات آموزش GAN

شبکه‌های تولیدی Adversarial Generative (GAN) به دلیل دشواری‌های معمول در فرآیند آموزش، شناخته شده‌اند. در زیر به چند مشکل رایج اشاره می‌شود:

  • فروپاشی حالت. این اصطلاح به حالتی اطلاق می‌شود که تولیدکننده یاد می‌گیرد یک تصویر موفق را تولید کند که بتواند تمایزدهنده را فریب دهد، به جای اینکه تنوعی از تصاویر مختلف خلق کند.
  • حساسیت به ابرپارامترها. در بسیاری از موارد، مشاهده می‌شود که یک GAN به طور کامل همگرا نمی‌شود و سپس به طور ناگهانی نرخ یادگیری کاهش یافته، که منجر به همگرایی می‌گردد.
  • حفظ تعادل میان تولیدکننده و تمایزدهنده. در بسیاری از موارد، از دست دادن تمایزدهنده ممکن است به سرعت به صفر برسد که این امر باعث می‌شود تولیدکننده نتواند از آموزش‌های بیشتری بهره‌مند شود. برای غلبه بر این مشکل، می‌توان تلاش کرد تا نرخ‌های یادگیری متفاوتی برای تولیدکننده و تمایزدهنده تنظیم شود یا آموزش تمایزدهنده را در مواقعی که از دست دادن آن به طرز قابل توجهی کاهش یافته است، متوقف کرد.
  • آموزش برای رزولوشن بالا. این معضل انعکاسی از همان مشکل در خودرمزگذار‌ها است و به علت بازسازی بیش از حد از لایه‌های شبکه‌های پیچیده، به بروز اثرات جانبی منجر می‌گردد. این مشکل معمولاً با استفاده از روش معروف به رشد تدریجی حل می‌شود، که در آن ابتدا چند لایه روی تصاویر با رزولوشن پایین آموزش دیده و سپس لایه‌ها "باز" یا اضافه می‌شوند. راه‌حل دیگری، افزودن اتصالات اضافی بین لایه‌ها و آموزش چندین رزولوشن به طور همزمان می‌باشد؛ برای جزئیات بیشتر به این مقاله Multi-Scale Gradient GANs مراجعه فرمایید.

انتقال سبک

شبکه‌های تولیدی رقابتی (GAN) ابزار مناسبی برای تولید تصاویر هنری به شمار می‌روند. تکنیک جالب دیگری به نام انتقال سبک وجود دارد که یک تصویر محتوا را به شیوه‌ای متفاوت طراحی می‌کند، با اعمال فیلترهایی از تصویر سبک.

نحوه‌ی عملکرد این تکنیک به صورت زیر است:

  • ما با یک تصویر نویز تصادفی (یا یک تصویر محتوا، اما برای درک بهتر، شروع با نویز تصادفی راحت‌تر است) آغاز می‌کنیم.
  • هدف ما ایجاد تصوری است که به هر دو تصویر محتوا و تصویر سبک نزدیک باشد. این هدف با استفاده از دو تابع از دست رفتن (Loss Function) تعیین می‌شود:
    • از دست رفتن محتوا بر اساس ویژگی‌های استخراج‌شده توسط شبکه‌های عصبی کانولوشنی (CNN) از برخی لایه‌ها معمولی در تصویر جاری و تصویر محتوا محاسبه می‌شود.
    • از دست رفتن سبک به روشی هوشمندانه بین تصویر جاری و تصویر سبک محاسبه می‌شود که از ماتریس‌های گرام بهره می‌برد (جزئیات بیشتر در دفترچه مثال).
  • به منظور صیقل دادن تصویر و حذف نویز، از دست رفتن واریانس نیز معرفی می‌شود که فاصله میانگین بین پیکسل‌های همسایه را محاسبه می‌کند.
  • حلقه اصلی بهینه‌سازی، تصویر جاری را با استفاده از روش‌های نزول گرادیان (یا سایر الگوریتم‌های بهینه‌سازی) تنظیم می‌کند تا مجموع کل از دست رفتن را که حاصل‌جمع وزنی از همه سه نوع از دست رفتن است، به حداقل برساند.

✍️ مثال: انتقال سبک

نتیجه‌گیری

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

🚀 چالش

از دفترچه انتقال سبک استفاده کنید و آن را با تصاویر خود اجرا نمایید.

مرور و مطالعه خودآموز

برای مرجع بیشتر، درباره‌ی شبکه‌های تولیدی رقابتی (GAN) در این منابع مطالعه کنید:

تکلیف

یکی از دو دفترچه مرتبط با این درس را مجدداً بررسی کنید و شبکه‌های تولیدی رقابتی (GAN) را با تصاویر خود آموزش دهید. چه چیزهایی می‌توانید خلق کنید؟