ژنراتور

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

آموزش ژنراتور مستلزم ادغام شدیدتر بین مولد و تمایز کننده نسبت به آموزش تفکیک کننده است. بخشی از GAN که ژنراتور را آموزش می دهد شامل:

  • ورودی تصادفی
  • شبکه مولد، که ورودی تصادفی را به یک نمونه داده تبدیل می کند
  • شبکه تفکیک کننده، که داده های تولید شده را طبقه بندی می کند
  • خروجی تفکیک کننده
  • از دست دادن ژنراتور، که ژنراتور را به دلیل ناتوانی در فریب دادن متمایز کننده جریمه می کند

نمودار یک شبکه متخاصم مولد. در مرکز           نمودار کادری با برچسب "تبعیض کننده" است. دو شاخه به این می خورند           جعبه از سمت چپ  شاخه بالا از سمت چپ بالا شروع می شود           نمودار با کادری با عنوان "تصاویر دنیای واقعی". یک فلش منجر می شود           از این سیلندر به جعبه ای با برچسب "نمونه". یک فلش از جعبه           با برچسب "نمونه" به کادر "مشخص کننده" تغذیه می شود. شاخه پایین           وارد کادر «تمایزکننده» می شود که با کادری با برچسب «تصادفی» شروع می شود           ورودی'. یک فلش از کادر "ورودی تصادفی" به کادری با برچسب منتهی می شود           "ژنراتور". یک فلش از کادر "Generator" به یک ثانیه منتهی می شود           جعبه "نمونه". یک فلش از کادر "نمونه" به سمت           جعبه تبعیض. در سمت راست کادر «مشخص کننده»، دو           فلش ها به دو منتهی می شوند           کادرهای سمت راست نمودار یک فلش به یک جعبه منتهی می شود           با برچسب "از دست دادن تبعیض". فلش دیگر به جعبه ای با برچسب منتهی می شود           "از دست دادن ژنراتور". یک کادر زرد با یک فلش سمت چپ و           کلمه "Backpropagation" در اطراف کادر "Random Input" کشیده شده است،           کادر «تولیدکننده»، کادر پایین «نمونه»، «مشخص کننده»           جعبه، جعبه با برچسب "واقعی" و "جعلی" و "ژنراتور".           جعبه loss' نشان می دهد که پس انتشار بر روی بخشی از           سیستم محصور در کادر زرد رنگ

شکل 1: پس انتشار در آموزش ژنراتور.

ورودی تصادفی

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

در ابتدایی ترین شکل خود، یک GAN نویز تصادفی را به عنوان ورودی خود می گیرد. سپس ژنراتور این نویز را به یک خروجی معنی دار تبدیل می کند. با معرفی نویز، می‌توانیم GAN را به تولید طیف وسیعی از داده‌ها، نمونه‌برداری از مکان‌های مختلف در توزیع هدف، برسانیم.

آزمایش‌ها نشان می‌دهند که توزیع نویز چندان اهمیتی ندارد، بنابراین می‌توانیم چیزی را انتخاب کنیم که نمونه‌برداری از آن آسان باشد، مانند توزیع یکنواخت. برای راحتی، فضایی که نویز از آن نمونه برداری می شود معمولاً ابعاد کوچکتری نسبت به ابعاد فضای خروجی دارد.

استفاده از Discriminator برای آموزش ژنراتور

برای آموزش یک شبکه عصبی، وزن شبکه را تغییر می دهیم تا خطا یا از دست دادن خروجی آن کاهش یابد. با این حال، در GAN ما، ژنراتور مستقیماً به ضرری که ما می‌خواهیم بر آن تأثیر بگذاریم متصل نیست. ژنراتور به شبکه تشخیص‌دهنده تغذیه می‌کند، و تشخیص‌دهنده خروجی‌ای را تولید می‌کند که ما می‌خواهیم بر آن تأثیر بگذاریم. از دست دادن ژنراتور، ژنراتور را برای تولید نمونه ای که شبکه تفکیک کننده به عنوان جعلی طبقه بندی می کند، جریمه می کند.

این تکه اضافی از شبکه باید در پس انتشار گنجانده شود. پس انتشار هر وزن را در جهت درست با محاسبه تأثیر وزن بر خروجی تنظیم می کند - اگر وزن را تغییر دهید خروجی چگونه تغییر می کند. اما تأثیر وزن ژنراتور به تأثیر وزنه های تفکیک کننده ای که به آن وارد می شود بستگی دارد. بنابراین انتشار پس از خروجی شروع می شود و از طریق تفکیک کننده به ژنراتور باز می گردد.

در عین حال، ما نمی خواهیم در طول آموزش ژنراتور، تمایز کننده تغییر کند. تلاش برای ضربه زدن به یک هدف متحرک، مشکل سخت تر را برای ژنراتور سخت تر می کند.

بنابراین ژنراتور را با روش زیر آموزش می دهیم:

  1. نمونه نویز تصادفی
  2. تولید خروجی ژنراتور از نویز تصادفی نمونه برداری شده.
  3. برای خروجی ژنراتور، طبقه‌بندی تشخیص‌دهنده "واقعی" یا "جعلی" را دریافت کنید.
  4. محاسبه زیان از طبقه بندی تفکیک کننده.
  5. برای به دست آوردن گرادیان، از طریق تفکیک کننده و مولد پس انتشار دهید.
  6. از گرادیان ها برای تغییر فقط وزن های ژنراتور استفاده کنید.

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