مدل‌های تولیدی عمیق
مدل‌های تولیدی عمیق یکی از شاخه‌های یادگیری عمیق در شبکه‌های عصبی محسوب می‌شوند. یکی از دلایل فراگیر شدن این مدل‌ها ارائه روشی بهینه برای تحلیل و درک داده‌های بدون برچسب می‌باشد. ایده اصلی مدل‌های تولیدی عمیق به دست آوردن توزیع احتمال ذاتی داده‌ها به نحویست که قادر به تولید داده‌های مشابه باشد. این ویژگی خصوصاً برای شاخص‌گذاری سریع و بازیابی داده مورد استفاده قرار می‌گیرد. مدل‌های تولیدی در زمینه‌های مختلفی از جمله مسائل شناخت بصری، شناسایی و تولید گفتار، پردازش زبان طبیعی و روباتیک مورد استفاده قرار می‌گیرند. از مهمترین انواع مدل‌های تولیدی عمیق می‌توان به ماشین بولتزمن محدود، ماشین بولتزمن عمیق، شبکه باور عمیق، شبکه‌های رمزگذار خودکار و شبکه‌های تخاصمی مولد اشاره کرد.
به صورت کلی مدل‌های تولیدی به دو دسته اصلی تقسیم می‌شوند:
ماشین بولتزمن یک مدل مبتنی بر انرژی می‌باشد که برای اولین بار توسط Geoffrey Hinton در سال ۱۹۸۳ ارائه شد. هدف اصلی این شبکه انجام جستجوی کارامد برای ترکیب فرضیه‌ها به نحوی بود که احتمال مشاهده داده‌های آموزشی حداکثر شود. ماشین بولتزمن باینری یک شبکه متقارن غیرجهت‌دار است که از تعدادی یونیت (نورون) باینری تشکیل شده‌است. این یونیت‌ها به دو لایه پنهان و آشکار تقسیم می‌شوند. در ماشین بولتزمن، یادگیری از نوع هبین می‌باشد یعنی برای به‌روزرسانی وزنهای شبکه تنها به اطلاعات نورون‌های همسایه نیاز است و این به روزرسانی در واقع بر اساس همبستگی میان نورون‌های متصل به یکدیگر صورت می‌گیرد. در این حالت در صورت فعال شدن همزمان دو نورون متصل به یکدیگر، اتصال میان آن‌ها تقویت شده و در غیر این صورت اتصال میان آن‌ها تضعیف می‌شود. در این مدل هدف یادگیری، یافتن تابع انرژی به گونه‌ای می‌باشد که مقادیر کمتری را به پیکربندی درست و مقادیر بیشتری را به پیکربندی اشتباه نسبت دهد؛ و به این ترتیب برای پیش‌بینی، پیکربندی با انرژی حداقل انتخاب می‌شود. ماشین بولتزمن باینری مانند شبکه هاپفیلد یک شبکه تماماً متصل است؛ یعنی میان تمام یونیت‌ها در لایه پنهان و آشکار و همچنین میان یونیت‌ها در هر لایه اتصال وجود دارد، و تمام یونیت‌ها می‌توانند با یکدیگر تبادل اطلاعات داشته باشند. همین امر موجب بالا رفتن پیچیدگی در این شبکه می‌شود. در حقیقت ماشین بولتزمن باینری پایه اصلی ماشین بولتزمن محدود و بسیاری از مدل‌های تولیدی قوی مانند ماشین بولتزمن عمیق و شبکه باور عمیق می‌باشد.
ماشین بولتزمن محدود ایده اصلی ماشین بولتزمن محدود از اعمال محدودیت برماشین بولتزمن باینری آمده‌است. با اعمال این محدودیت یونیت‌های یک لایه نمی‌توانند به یکدیگر متصل باشند و همین امر موجب کاهش پیچیدگی در شبکه می‌شود. این ماشین‌ها می‌توانند با استفاده از روش‌های سنتی برآورد درست‌نمایی بیشینه آموزش داده شوند. همچنین نمونه‌برداری از یک ماشین بولتزمن محدود با استفاده از روش نمونه‌برداری Gibbs یا روش زنجیره مارکوف مونت کارلو صورت می‌گیرد.
ماشین بولتزمن عمیق یک شبکه غیرجهت‌دار با چندین لایه پنهان می‌باشد. در این شبکه هر یونیت به تمام یونیت‌های موجود در لایه‌های مجاور متصل است و همانند ماشین بولتزمن محدود هیچ اتصالی میان یونیت‌های موجود در یک لایه وجود ندارد. ماشین بولتزمن عمیق را می‌توان مانند پشته‌ای از ماشین‌های بولتزمن محدود در نظر گرفت که در کنار یکدیگر قرار گرفته‌اند. آموزش ماشین بولتزمن عمیق معمولاً در دو فاز صورت می‌گیرد. در فاز اول ابتدا هر یک از ماشین‌های بولتزمن محدود تشکیل‌دهنده شبکه به صورت جداگانه آموزش دیده و در فاز دوم که تنظیم دقیق نام دارد شبکه به صورت کلی و با استفاده از الگوریتم پس‌انتشار خطا آموزش می‌بیند.
شبکه باور عمیق نمونهٔ دیگری از معماری شبکه‌های عمیق با تعداد بسیار زیادی لایه پنهان می‌باشد که در سال ۲۰۰۶ ارائه شد. این شبکه قادر به کشف ساختار داده‌های ورودی و استخراج ویژگی از آنهاست. در شبکه باور عمیق بر خلاف ماشین بولتزمن عمیق، دو لایه پنهان بالا (که به لایه آشکار نزدیک می‌باشند) دارای اتصالات جهت‌دار به سمت لایه آشکار بوده و بقیه یونیت‌ها در لایه‌های دیگر اتصالات غیرجهت‌دار دارند. پرکاربردترین الگوریتم آموزش این شبکه الگوریتم سریع حریصانه لایه‌ای می‌باشد. همانند ماشین بولتزمن عمیق فرایند آموزش در این مدل نیز دارای دو فاز سریع و آرام می‌باشد که در فاز سریع لایه‌ها به صورت جداگانه آموزش داده می‌شوند و در فاز آرام یا تنظیم دقیق کل شبکه آموزش می‌بیند. علت استفاده از دو فاز آموزشی در مدل‌های عمیق، وجود تعداد بسیار زیادی لایه پنهان در شبکه می‌باشد که در صورت آموزش یک مرحله‌ای موجب کم شدن گرادیان در لایه‌های اول (محو شدن گرادیان) و در نتیجه کاهش سرعت آموزش می‌شود که از مهم‌ترین مشکلات یادگیری عمیق می‌باشد. به همین دلیل برای رفع این مشکل در ابتدا ماشین‌های بولتزمن محدود تشکیل‌هنده شبکه به صورت جداگانه آموزش می‌بینند و سپس آموزش بر کل شبکه اعمال می‌شود. نمونه‌برداری از یک شبکه باور عمیق با استفاده از اجرای چندین مرحله از نمونه‌بردای Gibbs بر روی دو لایه پنهان با اتصالات جهت‌دار صورت می‌گیرد و سپس با اجرای یک مرحله نمونه‌برداری اجدادی در طول شبکه و استفاده از متغیرهای نمونه‌برداری نهفته، نمونه‌ها از لایه آشکار حاصل می‌شوند.
رمزگذار خودکار یک شبکه عصبی غیرنظارتی، پیشرو و غیربازگشتیست که با هدف بازتولید ورودی خود آموزش داده می‌شود. علاوه بر این از این مدل شبکه برای کاهش ابعاد، استخراج ویژگی و یافتن نمایش یا توزیع داده نیز استفاده می‌شود. از کاربردهای این شبکه می‌توان به بازسازی تصاویر، رنگی کردن تصاویر سیاه و سفید، رفع نویز از تصاویر، کاهش سایز تصاویر و ابعاد داده‌ها اشاره کرد. معماری رمزگذار خودکار شامل سه بخش اصلی انکدر (رمزگذار)، کد و دیکدر (رمزگشا) می‌باشد. در این شبکه به جای آموزش شبکه و پیش‌بینی مقدار هدف Y در ازای ورودی X، یک رمزگذار خودکار آموزش می‌بیند که ورودی خود را بازسازی کند؛ منظور از بازسازی، تولید دقیقاً داده‌های ورودی نیست بلکه هدف این مدل کشف الگوها و ویژگی‌های ذاتی توزیع داده‌های ورودی به منظور تولید داده‌های مشاهده نشده و مشابه با همان توزیع داده ورودی می‌باشد؛ بنابراین بردار خروجی همان ابعاد بردار ورودی X را خواهد داشت و تعداد لایه‌ها و نورون‌های موجود در انکدر و دیکدر با یکدیگر برابر است. یک رمزگذار خودکار در ساده‌ترین حالت شامل یک انکدر و دیکدر به همراه تنها یک لایه پنهان است. به منظور کاهش بیشتر ابعاد می‌بایست از تعداد لایه‌های پنهان بیشتری در شبکه استفاده کرد که این شبکه در اصطلاح رمزگذار خودکار عمیق نامیده می‌شود. ورودی به انکدر داده شده و خروجی از دیکدر استخراج می‌شود. همان‌طور که گفته شد در این شبکه خروجی بازسازی ورودی بوده و از الگوریتم پس‌انتشارخطا برای یادگیری استفاده می‌شود. رمزگذارهای خودکار با حداقل کردن خطای بازسازی، شبکه را آموزش می‌دهند. معمولاً تعداد نورون‌های موجود در لایه پنهان کمتر از لایه انکدر و دیکدر می‌باشد. لایه پنهان یا کد در حقیقت نمایش داده در فضای بعد کاهش یافته آن می‌باشد و عملاً متناظر با ویژگی‌های استخراج شده‌است. به منظور استخراج ویژگی و کاهش بعد، پس از آموزش شبکه می‌توان بخش دیکدر را حذف کرده و خروجی میانی‌ترین لایه پنهان را به عنوان ویژگی‌های استخراج شده در نظر گرفت.
شبکه‌های مولد تخاصمی بر مبنای بخشی از نظریه بازی‌ها به نام بازی مینیماکس کار می‌کنند. در اینجا "تفکیک‌کننده" formula_1 و "مولد" formula_2 با یکدیگر رقابت می‌کنند. هر دو شبکه‌های عصبی‌ی هستند که با پارامترهای formula_3 و formula_4 مدل‌سازی شده‌اند. در ادامه برای سهولت کار پارامترها و ورودی‌های مدل را حذف می‌کنیم. شبکه مولد یا همان formula_5 داده‌هایی را از نویزهای تصادفی (formula_6) تولید می‌کند و تفکیک کننده یا همان formula_7 در تلاش است تا تشخیص دهد که داده واقعی است (از داده‌های مجموعه آموزشی است) یا ساختگی (تولید شده توسط مولد). در نهایت بازی به جایی می‌رسد که داده‌های تولید شده توسط مولد به قدری شبیه داده‌های واقعی (داده‌های آموزشی) می‌شوند که تشخیص آن توسط تفکیک‌کننده سخت یا غیرممکن باشد. هر دو شبکه در حالیکه سعی می‌کنند بهتر از دیگری عمل کنند به‌طور همزمان یادمی‌گیرند و پارامترهای خود (formula_3 و formula_4) را بهینه می‌کنند. شبکه مولد را می‌توان به صورت یک تابع مشتق‌پذیر مدل‌سازی کرد به عنوان ورودی نویز تصادفی را از یک فضای پنهان formula_10 با توزیع formula_11 می‌گیرد و داده‌های خروجی از فضایی مشابه داده‌های واقعی و به‌طور خوشبینانه از توزیع مشابه formula_12 هستند:
formula_13
که formula_10 فضای پنهان و formula_15 بعد فضای داده‌است. شبکه تفکیک کننده formula_7 یک طبقه‌بند شبکه عصبی ساده است که می‌تواند به عنوان تابعی که توزیع داده‌ها را به احتمال formula_17 نگاشت می‌کند، در نظر گرفته شود و نمایانگر این است که بردار داده‌های ورودی تا چه حد واقعی هستند:
formula_18
بازی مجموع-صفر به‌صورت بهینه‌سازی زیر مدل‌سازی می‌شود. تابع هزینه در این بهینه‌سازی formula_19 نام دارد و بر اساس تابع هزینه کراس آنتروپی تعریف می‌شود:
formula_20
عبارت formula_21 اشاره به حداقل کردن هزینه مولد و عبارت formula_22 اشاره به حداکثر کردن هزینه تفکیک‌کننده دارد. در حقیقت تفکیک‌کننده به دنبال حداکثر کردن لگاریتم احتمال برای داده‌های واقعی و لگاریتم احتمال ساختگی بودن برای داده‌های ساختگی می‌باشد؛ و در عین حال مولد به دنبال حداقل کردن لگاریتم احتمال ساختگی بودن توسط تفکیک کننده برای داده‌های ساختگی می‌باشد. به عبارت دیگر مولد در صدد فریب دادن تفکیک کننده است و تفکیک کننده در صدد تفکیک درست داده‌ها. به این ترتیب پارامترهای بهینه از این طریق به دست می‌آیند. formula_23 شروع کار با آموزش تفکیک کننده بر روی داده‌های واقعی برای چند epoch آغاز می‌شود. هدف از این کار این است که تفکیک کننده به داده‌های واقعی ارزش بالاتری اختصاص دهد. سپس همان شبکه را روی داده‌های جعلی تولید شده توسط شبکه مولد آموزش می‌دهیم. در این مرحله، مولد در حال توقف است و هیچ بازخوردی از آموزش دریافت نمی‌کند و تنها تفکیک کننده است که آموزش می‌بیند. به عبارت دیگر، خطا در شبکه مولد پس انتشار نمی‌شود. در نتیجه مراحل قبل، شبکه تفکیک کننده به‌طور قابل توجهی به نسبت شبکه مولد که تا کنون هیچ آموزشی ندیده‌است و همچنان نویز تولید می‌کند، در کار خود بهتر است؛ بنابراین، تفکیک کننده را در حالت توقف قرار می‌دهیم و شبکه مولد را با استفاده از بازخورد تفکیک کننده آموزش می‌دهیم. هدف از این کار این است که تفکیک کننده را به نحوی فریب دهد که داده جعلی را به عنوان داده حقیقی طبقه‌بندی کند. به محض اینکه این اتفاق افتاد، مولد را متوقف می‌کنیم و دوباره آموزش تفکیک کننده را شروع می‌کنیم. این آموزش متناوب بین دو شبکه را تا زمانی که نتایج خوبی روی داده‌های تولید شده بدست آوریم ادامه می‌دهیم. می‌توانیم به‌طور دستی بررسی کنیم که آیا نتایج رضایت بخش بوده‌اند یا خیر.
برای آموزش تفکیک‌کننده به تعداد مشخصی (formula_24 بار) از طریق گرادیان صعودی تصادفی سعی در بیشینه کردن تابع formula_25 داریم. برای این‌کار formula_26 را از توزیع formula_27 نمونه‌گیری می‌کنیم. همچنین formula_28 را از داده‌های آموزشی نمونه‌گیری می‌کنیم. با این داده‌ها میانگین گرادیان formula_25 را نسبت به پارامترهای formula_7 (مولد) که formula_3 باشد حساب می‌کنیم. پارامترهای formula_3 را در جهت این میانگین تغییر می‌دهیم تا باعث افزایش formula_25 شود. میانگین گرادیان با عبارت پایین برابر است:
formula_34 حال بهینه‌سازی را برای مولد اعمال می‌کنیم. برای این‌کار میانگین گرادیان formula_25 را نسبت به پارامترهای formula_36 (مولد) که formula_4 باشد حساب می‌کنیم. مانند مرحله قبلی یکی سری نویز جدید که از formula_27 نمونه‌گیری کرده‌ایم را برای محاسبه میانگین به کار می‌بریم. پارامترهای formula_4 را در خلاف جهت این میانگین تغییر می‌دهیم تا باعث کاهش formula_25 شود. میانگین گرادیان با عبارت پایین برابر است:
formula_41 این دو مرحله را به صورت متناوب چندین بار انجام می‌دهیم تا تفکیک‌کننده دیگر قادر به تشخیص داده‌های واقعی از ساختگی نباشد.
به‌طور کلی، شبکه‌های تخاصمی مولد بهترین نتایج را روی کارهای تولید تصاویر می‌دهد اما معایبی نیز دارد. یکی از معایب اصلی شبکه‌های تخاصمی مولد این است که گاهی آموزش آن بسیار سخت است. همچنین به راحتی می‌تواند در دام واگرایی بیفتد. الگوریتم بهینه‌سازی شده گاهی می‌تواند در یک حداقل محلی ضعیف گیر کند. سناریو بازی در بعضی مواقع می‌تواند منحرف شده و به تعادل نرسد. بدترین حالت واگرایی فروپاشی حالت است که بشرح زیر خلاصه شده‌است:
formula_42
مشکلات دیگر شبکه‌های تخاصمی مولد با تصاویر عبارتند از:
اخیراً مدلهای شبکه‌های تخاصمی مولد برای کارهای متفاوتی به کار گرفته می‌شوند و هر کار معیار ارزیابی مخصوص به خود را دارد اما هنوز هیچ معیار ارزیابی کمی کلی وجود ندارد که باعث سردرگمی محققان شده‌است. در ادامه به چند نمونه از این معیارهای ارزیابی که در حال حاضر به‌طور گسترده مورد استفاده قرار می‌گیرند اشاره می‌کنیم: توابع هدف نیز می‌توانند به عنوان معیار برای قضاوت دربارهٔ حالت مناسب مسئله استفاده شوند.چگونگی انتخاب یک معیار ارزیابی مناسب هنوز یک مسئله دشوار است. یک معیار ارزیابی خوب باید نمونه‌های تولید شده را از نمونه‌های واقعی متمایز کند، حالت افت و حالت فروپاشی و همچنین overfitting را تشخیص دهد.
به عنوان یکی از مدل‌های مولد یکی از ساده‌ترین کاربردهای شبکه‌های تخاصمی مولد تولید داده‌است. یعنی از توزیع نمونه‌های واقعی یاد بگیریم، و نمونه‌هایی سازگار با توزیع ایجاد کنیم. از جمله کاربردهای شبکه‌های تخاصمی مولد در بینایی ماشین، پردازش زبان طبیعی است.
در حال حاضر، شبکه‌های تخاصمی مولد در حوزه‌های بینایی ماشین از جمله ترجمه تصویر، فراتفکیک پذیری تصویر، سنتز تصویر و تولید ویدیو و غیره به کار می‌رود. برای بهبود وضوح تصویر یک شبکه متخاصم مولد فراتفکیک پذیر تصویری با وضوح پایین را به عنوان ورودی دریافت می‌کند و تصویری با وضوح بالا تولید می‌کند. مشکل این روش این است که اطلاعات تولید شده توسط این شبکه به اندازه کافی واقعی نیست و اغلب با نویز همراه است. برای تبدیل محتوای تصویر از یک دامنه به دامنه دیگر، روشی جهت ترجمه تصویر به تصویر ارائه شده‌است. آزمایش‌ها نشان می‌دهند که این روش نه تنها در کارهای گرافیکی بلکه در کارهای بینایی نیز مؤثر واقع شده‌است. اما مشکل این روش این است که فضای آموزشی باید دقیقاً با فضای X,Y جفت شوند که پیدا کردن چنین داده‌های جفت شده‌ای دشوار است. برخی روش‌ها نیز در کارهای سنتز حالت چهره و انتقال ویژگی صورت مؤثر هستند. سنتز صورت مسئلهٔ مهمی است. چگونگی تولید نمونه چهره‌های واقعی همواره مشکلی بوده که محققان به آن پرداخته‌اند.
در حال حاضر شبکه‌های تخاصمی مولد پیشرفت‌هایی در زمینه پردازش زبان و گفتار داشته‌است. مدل SeqGAN براساس روش گرادیان برای آموزش مولد پیشنهاد شده‌است. آزمایش‌ها نشان می‌دهد که این روش می‌تواند در گفتار، شعر و تولید متن موسیقی بهتر از روش‌های سنتی عمل کند. شبکه‌های تخاصمی مولد در سایز حوزه‌های مانند پزشکی، برای تشخیص ناهنجاری‌های تصاویر پزشکی، در حوزه امنیت برای تولید بدافزار و برای سفارشی سازی محصولات نیز استفاده می‌شوند.