شبکه‌های مولد تخاصمی یا همون GAN خودمون (بخش اول)

توی این قسمت می‌خوایم یه آشنایی کلی با شبکه‌های GAN پیدا کنیم.

شبکه‌های مولد تخاصمی (شاید معادل دیگه‌ای که بشه به‌جای تخاصمی استفاده کرد رقابتی باشه ولی خب به این عنوان معروف‌تره) یا Generative Adversarial Networks که مخففش میشه GAN یک روش جدید در یادگیری عمیق محسوب میشه (البته خیلیم جدید نیست و سال 2014 توسط آقای ایان گودفلو Ian Goodfellow و همکاراش معرفی شد). این شبکه‌ها از دو تا بخش تشکیل شدن و با هم تو رقابتن. اگر بخوایم خیلی کلی این شبکه‌ها رو مثال بزنیم می‌تونیم بگیم که این دو تا شبکه‌ مثل یک جاعل اسکناس و یک متخصص تشخیص اسکناس قلابین (که متخصص کلی اسکناس اصلی دیده) و با همدیگه توی یه رقابتن. جاعل میاد بدون داشتن هیچ اطلاعاتی شروع به ساختن اسکناس میکنه، این اسکناس به متخصص داده میشه و اون تشخیص میده که این پول آیا واقعی هست یا نه. بعدش جاعل با استفاده از بازخوردی که از متخصص گرفته سعی میکنه اسکناس واقعی‌تری رو تولید کنه. این فرایند بارها اتفاق میوفته تا جایی‌که بالاخره جاعل قصه‌ی ما میتونه اسکناس‌هایی به خوبی اسکناس‌های اصلی تولید کنه که حتی متخصص هم قادر به تشخیص اون نیست. این فرایند رو می‌تونید به‌صورت خیلی کلی در شکل 1 ببینید.


شکل 1: نحوه‌ی رقابت جاعل اسکناس و متخصص تشخیص اسکناس قلابی.
شکل 1: نحوه‌ی رقابت جاعل اسکناس و متخصص تشخیص اسکناس قلابی.

حالا اگه بخوایم یکم علمی‌تر به قضیه نگاه کنیم، شبکه‌های GAN از دو قسمت تشکیل شدن که این قسمت‌ها هر کدوم یک مدل یادگیری عمیق هستند: 1- شبکه‌ی مولد (Generator) که نقش همون جاعل رو داره. همونجوری که از اسمش پیداس، خروجی این شبکه قراره یک داده‌ای باشه که مورد نیازه (مثلا تصویر یک منظره، گفتار یک انسان، سروده شدن یک شعر یا کلی چیز میز دیگه). 2- شبکه‌ی متمایزگر (Discriminator) که نقش همون متخصص رو داره. این شبکه همونجوری که قبلا اشاره کردیم میاد و تشخیص میده داده‌ای که بش داده شده، داده‌ی واقعیه یا نه. این کار رو حالا چجوری انجام میده؟ با استفاده از داده‌هایی که از مجموعه داده یا همون دیتاستمون می‌بینه. در واقع این شبکه یک دسته‌بند دودوییه (Binary classifier) که میاد یک داده رو دسته‌بندی می‌کنه.

این دو شبکه با همدیگه توی یک بازی مجموع صفرن. اینجا منظور از بازی مفهومیه که در نظریه بازی وجود داره و بازی مجموع صفر بازی‌ایه که توی اون سود یک عامل برابر ضرر عامل حریفه. توی این بازی مولد سعی میکنه داده‌های واقعی‌تری تولید کنه تا خطای دسته‌بندی متمایزگرمون رو بالا ببره و ازونور متمایزگرمون سعی داره خطای دسته‌بندی خودشو کمتر کنه. همین باعث میشه که این دو در رقابت باشن. در واقع عاملی که این وسط باعث یادگیری مولد میشه، خطای دسته‌بندی متمایزگره.

تا اینجاش رو داشته باشید. ادامه‌‍ی ماجرا رو توی قسمتای بعدی بهتون میگم. خوشحال میشم نظرات و بازخوردتون رو بهم بگید.