مدلهای تولیدی عمیق (به انگلیسی: Deep Generative Models) یکی از شاخههای یادگیری عمیق در شبکههای عصبی محسوب میشوند. یکی از دلایل فراگیر شدن این مدلها ارائه روشی بهینه برای تحلیل و درک دادههای بدون برچسب میباشد. ایده اصلی مدلهای تولیدی عمیق به دست آوردن توزیع احتمال ذاتی دادهها به نحویست که قادر به تولید دادههای مشابه باشد. این ویژگی خصوصاً برای شاخصگذاری سریع و بازیابی داده مورد استفاده قرار میگیرد. مدلهای تولیدی در زمینههای مختلفی از جمله مسائل شناخت بصری، شناسایی و تولید گفتار، پردازش زبان طبیعی و روباتیک مورد استفاده قرار میگیرند. از مهمترین انواع مدلهای تولیدی عمیق میتوان به ماشین بولتزمن محدود، ماشین بولتزمن عمیق، شبکه باور عمیق، شبکههای رمزگذار خودکار و شبکههای تخاصمی مولد اشاره کرد.
به صورت کلی مدلهای تولیدی به دو دسته اصلی تقسیم میشوند:
مدلهای مبتنی بر تابع هزینه مانند شبکههای رمزگذار خودکار و شبکههای شبکههای تخاصمی مولد
مدلهای مبتنی بر انرژی مانند ماشین بولتزمن و انواع آن و شبکههای باور عمیق
ماشین بولتزمن
ماشین بولتزمن (به انگلیسی: Boltzmann Machine) یک مدل مبتنی بر انرژی میباشد که برای اولین بار توسط Geoffrey Hinton در سال ۱۹۸۳ ارائه شد. هدف اصلی این شبکه انجام جستجوی کارامد برای ترکیب فرضیهها به نحوی بود که احتمال مشاهده دادههای آموزشی حداکثر شود. ماشین بولتزمن باینری یک شبکه متقارن غیرجهتدار است که از تعدادی یونیت (نورون) باینری تشکیل شدهاست. این یونیتها به دو لایه پنهان و آشکار تقسیم میشوند. در ماشین بولتزمن، یادگیری از نوع هبین میباشد یعنی برای بهروزرسانی وزنهای شبکه تنها به اطلاعات نورونهای همسایه نیاز است و این به روزرسانی در واقع بر اساس همبستگی میان نورونهای متصل به یکدیگر صورت میگیرد. در این حالت در صورت فعال شدن همزمان دو نورون متصل به یکدیگر، اتصال میان آنها تقویت شده و در غیر این صورت اتصال میان آنها تضعیف میشود. در این مدل هدف یادگیری، یافتن تابع انرژی به گونهای میباشد که مقادیر کمتری را به پیکربندی درست و مقادیر بیشتری را به پیکربندی اشتباه نسبت دهد؛ و به این ترتیب برای پیشبینی، پیکربندی با انرژی حداقل انتخاب میشود. ماشین بولتزمن باینری مانند شبکه هاپفیلد یک شبکه تماماً متصل است؛ یعنی میان تمام یونیتها در لایه پنهان و آشکار و همچنین میان یونیتها در هر لایه اتصال وجود دارد، و تمام یونیتها میتوانند با یکدیگر تبادل اطلاعات داشته باشند. همین امر موجب بالا رفتن پیچیدگی در این شبکه میشود. در حقیقت ماشین بولتزمن باینری پایه اصلی ماشین بولتزمن محدود و بسیاری از مدلهای تولیدی قوی مانند ماشین بولتزمن عمیق و شبکه باور عمیق میباشد.
ماشین بولتزمن محدود
ماشین بولتزمن محدود (به انگلیسی: Restricted Boltzmann Machine) ایده اصلی ماشین بولتزمن محدود از اعمال محدودیت برماشین بولتزمن باینری آمدهاست. با اعمال این محدودیت یونیتهای یک لایه نمیتوانند به یکدیگر متصل باشند و همین امر موجب کاهش پیچیدگی در شبکه میشود. این ماشینها میتوانند با استفاده از روشهای سنتی برآورد درستنمایی بیشینه آموزش داده شوند. همچنین نمونهبرداری از یک ماشین بولتزمن محدود با استفاده از روش نمونهبرداری Gibbs یا روش زنجیره مارکوف مونت کارلو (به انگلیسی: Markov Chain Monte Carlo) صورت میگیرد.
ماشین بولتزمن عمیق
ماشین بولتزمن عمیق (به انگلیسی: Deep Boltzmann Machine) یک شبکه غیرجهتدار با چندین لایه پنهان میباشد. در این شبکه هر یونیت به تمام یونیتهای موجود در لایههای مجاور متصل است و همانند ماشین بولتزمن محدود هیچ اتصالی میان یونیتهای موجود در یک لایه وجود ندارد. ماشین بولتزمن عمیق را میتوان مانند پشتهای از ماشینهای بولتزمن محدود در نظر گرفت که در کنار یکدیگر قرار گرفتهاند. آموزش ماشین بولتزمن عمیق معمولاً در دو فاز صورت میگیرد. در فاز اول ابتدا هر یک از ماشینهای بولتزمن محدود تشکیلدهنده شبکه به صورت جداگانه آموزش دیده و در فاز دوم که تنظیم دقیق نام دارد شبکه به صورت کلی و با استفاده از الگوریتم پسانتشار خطا آموزش میبیند.
شبکه باور عمیق
شبکه باور عمیق (به انگلیسی: Deep Belief Networks) نمونهٔ دیگری از معماری شبکههای عمیق با تعداد بسیار زیادی لایه پنهان میباشد که در سال ۲۰۰۶ ارائه شد. این شبکه قادر به کشف ساختار دادههای ورودی و استخراج ویژگی از آنهاست. در شبکه باور عمیق بر خلاف ماشین بولتزمن عمیق، دو لایه پنهان بالا (که به لایه آشکار نزدیک میباشند) دارای اتصالات جهتدار به سمت لایه آشکار بوده و بقیه یونیتها در لایههای دیگر اتصالات غیرجهتدار دارند. پرکاربردترین الگوریتم آموزش این شبکه الگوریتم سریع حریصانه لایهای میباشد. همانند ماشین بولتزمن عمیق فرایند آموزش در این مدل نیز دارای دو فاز سریع و آرام میباشد که در فاز سریع لایهها به صورت جداگانه آموزش داده میشوند و در فاز آرام یا تنظیم دقیق کل شبکه آموزش میبیند. علت استفاده از دو فاز آموزشی در مدلهای عمیق، وجود تعداد بسیار زیادی لایه پنهان در شبکه میباشد که در صورت آموزش یک مرحلهای موجب کم شدن گرادیان در لایههای اول (محو شدن گرادیان) و در نتیجه کاهش سرعت آموزش میشود که از مهمترین مشکلات یادگیری عمیق میباشد. به همین دلیل برای رفع این مشکل در ابتدا ماشینهای بولتزمن محدود تشکیلهنده شبکه به صورت جداگانه آموزش میبینند و سپس آموزش بر کل شبکه اعمال میشود. نمونهبرداری از یک شبکه باور عمیق با استفاده از اجرای چندین مرحله از نمونهبردای Gibbs بر روی دو لایه پنهان با اتصالات جهتدار صورت میگیرد و سپس با اجرای یک مرحله نمونهبرداری اجدادی در طول شبکه و استفاده از متغیرهای نمونهبرداری نهفته، نمونهها از لایه آشکار حاصل میشوند.
رمزگذار خودکار
رمزگذار خودکار (به انگلیسی: Autoencoder) یک شبکه عصبی غیرنظارتی، پیشرو و غیربازگشتیست که با هدف بازتولید ورودی خود آموزش داده میشود. علاوه بر این از این مدل شبکه برای کاهش ابعاد، استخراج ویژگی و یافتن نمایش یا توزیع داده نیز استفاده میشود. از کاربردهای این شبکه میتوان به بازسازی تصاویر، رنگی کردن تصاویر سیاه و سفید، رفع نویز از تصاویر، کاهش سایز تصاویر و ابعاد دادهها اشاره کرد. معماری رمزگذار خودکار شامل سه بخش اصلی انکدر (رمزگذار)، کد و دیکدر (رمزگشا) میباشد. در این شبکه به جای آموزش شبکه و پیشبینی مقدار هدف Y در ازای ورودی X، یک رمزگذار خودکار آموزش میبیند که ورودی خود را بازسازی کند؛ منظور از بازسازی، تولید دقیقاً دادههای ورودی نیست بلکه هدف این مدل کشف الگوها و ویژگیهای ذاتی توزیع دادههای ورودی به منظور تولید دادههای مشاهده نشده و مشابه با همان توزیع داده ورودی میباشد؛ بنابراین بردار خروجی همان ابعاد بردار ورودی X را خواهد داشت و تعداد لایهها و نورونهای موجود در انکدر و دیکدر با یکدیگر برابر است. یک رمزگذار خودکار در سادهترین حالت شامل یک انکدر و دیکدر به همراه تنها یک لایه پنهان است. به منظور کاهش بیشتر ابعاد میبایست از تعداد لایههای پنهان بیشتری در شبکه استفاده کرد که این شبکه در اصطلاح رمزگذار خودکار عمیق نامیده میشود. ورودی به انکدر داده شده و خروجی از دیکدر استخراج میشود. همانطور که گفته شد در این شبکه خروجی بازسازی ورودی بوده و از الگوریتم پسانتشارخطا برای یادگیری استفاده میشود. رمزگذارهای خودکار با حداقل کردن خطای بازسازی، شبکه را آموزش میدهند. معمولاً تعداد نورونهای موجود در لایه پنهان کمتر از لایه انکدر و دیکدر میباشد. لایه پنهان یا کد در حقیقت نمایش داده در فضای بعد کاهش یافته آن میباشد و عملاً متناظر با ویژگیهای استخراج شدهاست. به منظور استخراج ویژگی و کاهش بعد، پس از آموزش شبکه میتوان بخش دیکدر را حذف کرده و خروجی میانیترین لایه پنهان را به عنوان ویژگیهای استخراج شده در نظر گرفت.
شبکههای مولد تخاصمی (به انگلیسی: Generative Adversarial Networks) بر مبنای بخشی از نظریه بازیها به نام بازی مینیماکس کار میکنند. در اینجا تفکیککننده و مولد با یکدیگر رقابت میکنند. هر دو شبکههای عصبیی هستند که با پارامترهای و مدلسازی شدهاند. در ادامه برای سهولت کار پارامترها و ورودیهای مدل را حذف میکنیم. شبکه مولد یا همان دادههایی را از نویزهای تصادفی () تولید میکند و تفکیک کننده یا همان در تلاش است تا تشخیص دهد که داده واقعی است (از دادههای مجموعه آموزشی است) یا ساختگی (تولید شده توسط مولد). در نهایت بازی به جایی میرسد که دادههای تولید شده توسط مولد به قدری شبیه دادههای واقعی (دادههای آموزشی) میشوند که تشخیص آن توسط تفکیککننده سخت یا غیرممکن باشد. هر دو شبکه در حالیکه سعی میکنند بهتر از دیگری عمل کنند بهطور همزمان یادمیگیرند و پارامترهای خود ( و ) را بهینه میکنند.[۱] شبکه مولد را میتوان به صورت یک تابع مشتقپذیر مدلسازی کرد به عنوان ورودی نویز تصادفی را از یک فضای پنهان با توزیع میگیرد و دادههای خروجی از فضایی مشابه دادههای واقعی و بهطور خوشبینانه از توزیع مشابه هستند:
که فضای پنهان و بعد فضای دادهاست. شبکه تفکیک کننده یک طبقهبند شبکه عصبی ساده است که میتواند به عنوان تابعی که توزیع دادهها را به احتمال نگاشت میکند، در نظر گرفته شود و نمایانگر این است که بردار دادههای ورودی تا چه حد واقعی هستند:
بازی مجموع-صفر بهصورت بهینهسازی زیر مدلسازی میشود. تابع هزینه در این بهینهسازی نام دارد و بر اساس تابع هزینه کراس آنتروپی تعریف میشود:[۱]
عبارت اشاره به حداقل کردن هزینه مولد و عبارت اشاره به حداکثر کردن هزینه تفکیککننده دارد. در حقیقت تفکیککننده به دنبال حداکثر کردن لگاریتم احتمال برای دادههای واقعی و لگاریتم احتمال ساختگی بودن برای دادههای ساختگی میباشد؛ و در عین حال مولد به دنبال حداقل کردن لگاریتم احتمال ساختگی بودن توسط تفکیک کننده برای دادههای ساختگی میباشد. به عبارت دیگر مولد در صدد فریب دادن تفکیک کننده است و تفکیک کننده در صدد تفکیک درست دادهها. به این ترتیب پارامترهای بهینه از این طریق به دست میآیند.[۱]
نحوه آموزش شبکه
شروع کار با آموزش تفکیک کننده بر روی دادههای واقعی برای چند epoch آغاز میشود. هدف از این کار این است که تفکیک کننده به دادههای واقعی ارزش بالاتری اختصاص دهد. سپس همان شبکه را روی دادههای جعلی تولید شده توسط شبکه مولد آموزش میدهیم. در این مرحله، مولد در حال توقف است و هیچ بازخوردی از آموزش دریافت نمیکند و تنها تفکیک کننده است که آموزش میبیند. به عبارت دیگر، خطا در شبکه مولد پس انتشار نمیشود. در نتیجه مراحل قبل، شبکه تفکیک کننده بهطور قابل توجهی به نسبت شبکه مولد که تا کنون هیچ آموزشی ندیدهاست و همچنان نویز تولید میکند، در کار خود بهتر است؛ بنابراین، تفکیک کننده را در حالت توقف قرار میدهیم و شبکه مولد را با استفاده از بازخورد تفکیک کننده آموزش میدهیم. هدف از این کار این است که تفکیک کننده را به نحوی فریب دهد که داده جعلی را به عنوان داده حقیقی طبقهبندی کند. به محض اینکه این اتفاق افتاد، مولد را متوقف میکنیم و دوباره آموزش تفکیک کننده را شروع میکنیم. این آموزش متناوب بین دو شبکه را تا زمانی که نتایج خوبی روی دادههای تولید شده بدست آوریم ادامه میدهیم. میتوانیم بهطور دستی بررسی کنیم که آیا نتایج رضایت بخش بودهاند یا خیر.
برای آموزش تفکیککننده به تعداد مشخصی ( بار) از طریق گرادیان صعودی تصادفی سعی در بیشینه کردن تابع داریم. برای اینکار را از توزیع نمونهگیری میکنیم. همچنین را از دادههای آموزشی نمونهگیری میکنیم. با این دادهها میانگین گرادیان را نسبت به پارامترهای (مولد) که باشد حساب میکنیم. پارامترهای را در جهت این میانگین تغییر میدهیم تا باعث افزایش شود. میانگین گرادیان با عبارت پایین برابر است:[۱]
حال بهینهسازی را برای مولد اعمال میکنیم. برای اینکار میانگین گرادیان را نسبت به پارامترهای (مولد) که باشد حساب میکنیم. مانند مرحله قبلی یکی سری نویز جدید که از نمونهگیری کردهایم را برای محاسبه میانگین به کار میبریم. پارامترهای را در خلاف جهت این میانگین تغییر میدهیم تا باعث کاهش شود. میانگین گرادیان با عبارت پایین برابر است:[۱]
این دو مرحله را به صورت متناوب چندین بار انجام میدهیم تا تفکیککننده دیگر قادر به تشخیص دادههای واقعی از ساختگی نباشد.[۱]
راهکارهایی برای آموزش بهینه
تطبیق ویژگی میتواند آموزش شبکههای تخاصمی مولد را با دادن یک تابع هدف جدید به مولد پایدارتر کند؛ بنابراین دادههای تولید شده سازگار بیشتری خواهند داشت، و مولد اطلاعات نمونه بیشتری تولید کند.
استفاده از دستههای کوچکتر به تفکیک کننده کمک میکند تا تنوع نمونه را منعکس کند تا از مشکل فروپاشی جلوگیری کند.
میانگینگیری میتواند به مدل برای همگرایی کمک کند. زمانیکه اختلاف زیادی بین مقدار کنونی و مقدار متوسط پارامتر وجود دارد یک عبارت به مولد و تفکیک کننده افزوده میشود تا برای پارامتر کنونی ایجاد پنالتی کند.
به منظور تنظیم تخمین تفکیک کننده برای نمونههای حقیقی هموارسازی یک طرفه برچسب پیشنهاد شدهاست که مقدار آنها را نزدیک به ۱ در نظر میگیرد و میتواند مرز طبقهبند را هموار کند.
با استفاده از نرخهای یادگیری جداگانه یک قانون به روزرسانی با دو مقیاس زمانی برای مولد و تفکیک کننده پیشنهاد کردهاست تا تضمین شود که مدل میتواند به یک تعادل Nash محلی پایدار همگرا شود.
استفاده از یک نرمال سازی طیفی برای نرمال سازی وزن جهت تثبیت آموزش تفکیک کنندهها تکنیکی است که اخیراً استفاده میشود. نتایج نشان میدهد که مفید است.
محدودیتها
بهطور کلی، شبکههای تخاصمی مولد بهترین نتایج را روی کارهای تولید تصاویر میدهد اما معایبی نیز دارد. یکی از معایب اصلی شبکههای تخاصمی مولد این است که گاهی آموزش آن بسیار سخت است. همچنین به راحتی میتواند در دام واگرایی بیفتد. الگوریتم بهینهسازی شده گاهی میتواند در یک حداقل محلی ضعیف گیر کند. سناریو بازی در بعضی مواقع میتواند منحرف شده و به تعادل نرسد. بدترین حالت واگرایی فروپاشی حالت (به انگلیسی: Mode Collapse) است که بشرح زیر خلاصه شدهاست:
مشکلات دیگر شبکههای تخاصمی مولد با تصاویر عبارتند از:
شمارش: برای شبکههای تخاصمی مولد درک تعداد دفعات وقوع یک شی خاص (برای مثال چشم) مشکل است حتی اگر فقط نمونههایی از آن نشان داده شده باشد که آن ویژگی را بیان میکند.
چشمانداز:همچنین برای شبکههای تخاصمی مولد درک مفهوم فضای ۳ بعدی دشوار است و منجر به تصاویری با چشمانداز تحریف شده میشود.
کیفیت پایین تصاویر تولید شده: در معماریهای معمول شبکههای تخاصمی مولد، بلوک تفکیک کننده بهطور عمده برای گرفتن محتوای کلاسی خاص از تصاویر بدون تحمیل محدودیت بر کیفیت بصری تصاویر تولید شده، طراحی شدهاست.
ساختار سراسری: مشکل دیگر شبکههای تخاصمی مولد توانایی درک اشکال و ساختار کلی اشیاست که مسئله جدی است زیرا یکی از الزامات اصلی یک تصویر برای واقعی به نظر رسیدن، این است که شکل اشیا موجود در آن تا چه حد واقعی به نظر میرسد. برای مثال تصویر یک گاو ۸ تا پا به هیچ عنوان تصویری از یک حیوان در نظر گرفته نمیشود و مهم نیست چقدر واقعی به نظر برسد چراکه گاو ۸ تا پا یک شی نیست و قطعاً هیچ نمونه ای از آن در طول آموزش ارائه نشدهاست.
معیارهای ارزیابی
اخیراً مدلهای شبکههای تخاصمی مولد برای کارهای متفاوتی به کار گرفته میشوند و هر کار معیار ارزیابی مخصوص به خود را دارد اما هنوز هیچ معیار ارزیابی کمی کلی وجود ندارد که باعث سردرگمی محققان شدهاست. در ادامه به چند نمونه از این معیارهای ارزیابی که در حال حاضر بهطور گسترده مورد استفاده قرار میگیرند اشاره میکنیم:
IS: این معیار بهطور گسترده در شبکههای تخاصمی مولد استفاده شدهاست. مقادیر بالای این معیار نشان میدهد که مدل تولید شده میتواند نمونههایی با کیفیت بالا تولید کند در حالی که نمونهها نیز متنوع هستند. با این حال این معیار دارای محدودیتهایی نیز میباشد؛ اگر مدل در حالت فروپاشی قرار گیرد مقدار IS میتواند همچنان مقداری مطلوب باشد اما وضعیت واقعی بسیار بد باشد.
Mode Score (MS): معیار ارزیابی دیگری که میتواند تنوع و کیفیت بصری نمونههای تولید شده را بهطور همزمان منعکس کند. این معیار ارزیابی به مشکل موجود در معیار IS میپردازد که به توزیعهای پیشین روی برچسبهای حقیقی پایه حساس نیست.
Fréchet Inception Distance (FID): برای تشخیص حالت حذف درون طبقه ای مورد استفاده قرار میگیرد. در این روش، نمونههای تولید شده در فضای ویژگی ارائهشده توسط لایه خاصی از شبکه Inception تعبیه میشوند. بر اساس این فرض که نمونههای تولید شده از یک گاوسی چند بعدی پیروی میکنند، میانگین و واریانس بین نمونههای تولید شده و دادههای واقعی محاسبه میشود. سپس فاصله Fréchet بین این دو گاوسی اندازهگیری میشود تا کیفیت نمونههای تولید شده ارزیابی شود. با این حال IS و FID نمیتوانند مشکل overfitting را به خوبی پردازش کنند.
Multi-scale Structural Similarity for Image Quality (MS-SSIM): این معیار از معیار مقیاس واحد SSIM که برای اندازهگیری شباهت بین دو تصویر استفاده میشود، متفاوت است. برای اولین بار معیار MS-SSIM برای ارزیابی کیفیت تصاویر چند مقیاس ارائه شد. این روش به صورت کمی شباهت تصاویر را با پیشبینی قضاوت شباهت ادراک انسان (به انگلیسی: human perception similarity)ارزیابی میکند. همچنین میتوان با استفاده از FID به عنوان معیارهای ارزیابی کمکی برای تست تنوع نمونهها به کار گرفته شوند.
توابع هدف نیز میتوانند به عنوان معیار برای قضاوت دربارهٔ حالت مناسب مسئله استفاده شوند. چگونگی انتخاب یک معیار ارزیابی مناسب هنوز یک مسئله دشوار است. یک معیار ارزیابی خوب باید نمونههای تولید شده را از نمونههای واقعی متمایز کند، حالت افت و حالت فروپاشی و همچنین overfitting را تشخیص دهد.
کاربردها
به عنوان یکی از مدلهای مولد یکی از سادهترین کاربردهای شبکههای تخاصمی مولد تولید دادهاست. یعنی از توزیع نمونههای واقعی یاد بگیریم، و نمونههایی سازگار با توزیع ایجاد کنیم. از جمله کاربردهای شبکههای تخاصمی مولد در بینایی ماشین، پردازش زبان طبیعی است.
برای بهبود وضوح تصویر یک شبکه متخاصم مولد فراتفکیک پذیر (به انگلیسی: Super Resolution Generative Adversarial Networks) تصویری با وضوح پایین را به عنوان ورودی دریافت میکند و تصویری با وضوح بالا تولید میکند. مشکل این روش این است که اطلاعات تولید شده توسط این شبکه به اندازه کافی واقعی نیست و اغلب با نویز همراه است.
ترجمه تصویر
برای تبدیل محتوای تصویر از یک دامنه به دامنه دیگر، روشی جهت ترجمه تصویر به تصویر ارائه شدهاست. آزمایشها نشان میدهند که این روش نه تنها در کارهای گرافیکی بلکه در کارهای بینایی نیز مؤثر واقع شدهاست. اما مشکل این روش این است که فضای آموزشی باید دقیقاً با فضای X,Y جفت شوند که پیدا کردن چنین دادههای جفت شدهای دشوار است. برخی روشها نیز در کارهای سنتز حالت چهره و انتقال ویژگی صورت مؤثر هستند.
سنتز صورت
سنتز صورت مسئلهٔ مهمی است. چگونگی تولید نمونه چهرههای واقعی همواره مشکلی بوده که محققان به آن پرداختهاند.
در حال حاضر شبکههای تخاصمی مولد پیشرفتهایی در زمینه پردازش زبان و گفتار داشتهاست. مدل SeqGAN براساس روش گرادیان برای آموزش مولد پیشنهاد شدهاست. آزمایشها نشان میدهد که این روش میتواند در گفتار، شعر و تولید متن موسیقی بهتر از روشهای سنتی عمل کند.
شبکههای تخاصمی مولد در سایز حوزههای مانند پزشکی، برای تشخیص ناهنجاریهای تصاویر پزشکی، در حوزه امنیت برای تولید بدافزار و برای سفارشی سازی محصولات نیز استفاده میشوند.
↑ ۱٫۰۱٫۱۱٫۲۱٫۳۱٫۴۱٫۵Goodfellow, Ian; Pouget-Abadie, Jean; Mirza, Mehdi; Xu, Bing; Warde-Farley, David; Ozair, Sherjil; Courville, Aaron; Bengio, Yoshua (2014). Generative Adversarial Networks(PDF). Proceedings of the International Conference on Neural Information Processing Systems (NIPS 2014). pp. 2672–2680.