بخش مولد یک GAN یاد میگیرد که دادههای جعلی را با ترکیب کردن بازخورد از ممیز ایجاد کند. یاد می گیرد که متمایز کننده را وادار کند خروجی خود را به عنوان واقعی طبقه بندی کند.
آموزش ژنراتور مستلزم ادغام شدیدتر بین مولد و تمایز کننده نسبت به آموزش تفکیک کننده است. بخشی از GAN که ژنراتور را آموزش می دهد شامل:
- ورودی تصادفی
- شبکه مولد، که ورودی تصادفی را به یک نمونه داده تبدیل می کند
- شبکه تفکیک کننده، که داده های تولید شده را طبقه بندی می کند
- خروجی تفکیک کننده
- از دست دادن ژنراتور، که ژنراتور را به دلیل ناتوانی در فریب دادن متمایز کننده جریمه می کند
شکل 1: پس انتشار در آموزش ژنراتور.
ورودی تصادفی
شبکه های عصبی به نوعی از ورودی نیاز دارند. معمولاً دادههایی را وارد میکنیم که میخواهیم کاری با آن انجام دهیم، مانند نمونهای که میخواهیم طبقهبندی کنیم یا درباره آن پیشبینی کنیم. اما از چه چیزی به عنوان ورودی برای شبکه ای استفاده می کنیم که نمونه های داده کاملاً جدید را خروجی می کند؟
در ابتدایی ترین شکل خود، یک GAN نویز تصادفی را به عنوان ورودی خود می گیرد. سپس ژنراتور این نویز را به یک خروجی معنی دار تبدیل می کند. با معرفی نویز، میتوانیم GAN را به تولید طیف وسیعی از دادهها، نمونهبرداری از مکانهای مختلف در توزیع هدف، برسانیم.
آزمایشها نشان میدهند که توزیع نویز چندان اهمیتی ندارد، بنابراین میتوانیم چیزی را انتخاب کنیم که نمونهبرداری از آن آسان باشد، مانند توزیع یکنواخت. برای راحتی، فضایی که نویز از آن نمونه برداری می شود معمولاً ابعاد کوچکتری نسبت به ابعاد فضای خروجی دارد.
استفاده از Discriminator برای آموزش ژنراتور
برای آموزش یک شبکه عصبی، وزن شبکه را تغییر می دهیم تا خطا یا از دست دادن خروجی آن کاهش یابد. با این حال، در GAN ما، ژنراتور مستقیماً به ضرری که ما میخواهیم بر آن تأثیر بگذاریم متصل نیست. ژنراتور به شبکه تشخیصدهنده تغذیه میکند، و تشخیصدهنده خروجیای را تولید میکند که ما میخواهیم بر آن تأثیر بگذاریم. از دست دادن ژنراتور، ژنراتور را برای تولید نمونه ای که شبکه تفکیک کننده به عنوان جعلی طبقه بندی می کند، جریمه می کند.
این تکه اضافی از شبکه باید در پس انتشار گنجانده شود. پس انتشار هر وزن را در جهت درست با محاسبه تأثیر وزن بر خروجی تنظیم می کند - اگر وزن را تغییر دهید خروجی چگونه تغییر می کند. اما تأثیر وزن ژنراتور به تأثیر وزنه های تفکیک کننده ای که به آن وارد می شود بستگی دارد. بنابراین انتشار پس از خروجی شروع می شود و از طریق تفکیک کننده به ژنراتور باز می گردد.
در عین حال، ما نمی خواهیم در طول آموزش ژنراتور، تمایز کننده تغییر کند. تلاش برای ضربه زدن به یک هدف متحرک، مشکل سخت تر را برای ژنراتور سخت تر می کند.
بنابراین ژنراتور را با روش زیر آموزش می دهیم:
- نمونه نویز تصادفی
- تولید خروجی ژنراتور از نویز تصادفی نمونه برداری شده.
- برای خروجی ژنراتور، طبقهبندی تشخیصدهنده "واقعی" یا "جعلی" را دریافت کنید.
- محاسبه زیان از طبقه بندی تفکیک کننده.
- برای به دست آوردن گرادیان، از طریق تفکیک کننده و مولد پس انتشار دهید.
- از گرادیان ها برای تغییر فقط وزن های ژنراتور استفاده کنید.
این یک تکرار از آموزش ژنراتور است. در بخش بعدی خواهیم دید که چگونه می توان آموزش مولد و تفکیک کننده را انجام داد.