موضوع مقاله: خودرمزگذار | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # خودرمزگذار | مقدمه: در این نوع شبکه به جای آموزش شبکه و پیش­بینی مقدار تابع هدف در ازای ورودی X ، خودرمزگذار آموزش می­بیند که ورودی خود را بازسازی کند؛ بنابراین بردار خروجی همان ابعاد بردار ورودی X را خواهد داشت؛ یعنی تعداد نورون­‌های موجود در لایه ورودی و خروجی با یکدیگر برابر است. | ## بخش 1: خودرمزگذار | همانطور که گفته شد در این شبکه خروجی بازسازی ورودی بوده و از الگوریتم پس ­انتشار خطا برای یادگیری استفاده می­شود. پس از آموزش شبکه بخش decoder حذف شده و خروجی میانی­‌ترین لایه پنهان به عنوان ویژگی های استخراج شده در نظر گرفته می­‌شود. به منظور کاهش بیشتر ابعاد می‌بایست از تعداد لایه ­های پنهان بیشتری در شبکه استفاده کرد که در اصطلاح خودرمزگذار عمیق نامیده می­شود. نخستین استفاده‌های خودرمزگذار‌ها در بحث کاهش ابعاد یا یادگیری ویژگی بود اما امروزه در بسیاری از حوزه‌های دیگر در هوش مصنوعی و یادگیری ماشین همچون یادگیری انتقالی کاربرد دارند. از حدود سال 2010 با پیشرفت حوزه‌ی یادگیری ژرف از آن‌ها در بسیاری از مسائل یادگیری ماشین مخصوصا در روش‌های مبتنی بر معماری عمیق استفاده می‌شود. کاربرد‌ها همانطور که در بالا ذکر کردیم از امروزه از خودرمزگذار‌ها در بسیاری از مسائل استفاده می‌شود که در زیر به چند تا از مهم‌ترین آن‌ها می‌پردازیم. به عبارت دیگر داده‌ها را از فضای برداری ابعاد بالاتر به فضای ابعاد پایین‌تر می‌بریم یا تنها تعدادی از ویژگی‌ها و ابعاد را انتخاب می‌کنیم. دلیل این کار خیلی جاها برای جلوگیری از بیش برازش یا کار کردن راحت‌تر با داده‌ها یا مصور‌سازی می‌باشد. به کمک خودرمزگذار‌ها می‌توان داده‌ها را از ابعاد بالاتر به ابعاد پایین‌تر برد و استخراج ویژگی را انجام داد. در واقع بعد از آموزش کامل خودرمزگذار، کافی است تا بخش decoder (رمزگشا) را جدا کرد و تنها بخش encoder (رمزگذار) را نگه داشت و به عنوان شبکه‌ای از آن استفاده کرد که داده را ورودی می‌گیرد و خروجی آن بازنمایی جدیدی از داده در ابعاد پایین‌تر است.در واقع با این کار عملاً استخراج ویژگی را نیز انجام داده‌ایم. | ## بخش 2: خودرمزگذار | خود رمزگذار‌ها در مقایسه با روش‌های دیگر کاهش ابعاد مثل PCA یا همان تحلیل مؤلفه‌های اصلی معمولا از قدرت بهتری برخوردارتر هستند و طبق آزمایش‌ها نتایج منطقی‌تری می‌دهند. البته دقت کنید که استفاده از توابع غیر خطی در میان لایه‌های خودرمزگذار قدرت آن را بیشتر از روش‌هایی مثل تحلیل مؤلفه‌های اصلی می‌کند. در صورتی که تمام لایه‌ها در خودرمزگذار خطی باشند تفاوت آن‌چنان و کاهش ابعاد بهتری در مقایسه با روش‌های سنتی نخواهیم داشت. تشخیص ناهنجاری در تحلیل داده‌ها، تشخیص ناهنجاری (به انگلیسی: Anomaly detection) به فرایند تشخیص الگو‌ها یا آیتم‌های منحصر به فرد که از عموم دیتا فاصله‌ی بسیار زیادی دارند و با رفتار نرمال از پیش مقررشده‌ی داده مطابقت ندارند، اشاره دارد. فرض کنید یک خودرمزگذار داریم که بر روی عکس‌های داده‌هایی مربوط به سگ‌ها آموزش داده شده است. در نتیجه این خودرمزگذار قادر است تا با گرفتن عکس یک سگ تا حد خوبی و با مقدار تابع هزینه‌ی کم، آن را بازسازی کند. در نتیجه اگر یک عکس از دامنه‌ی دیگری به آن داده شود، هم این تابع هزینه بسیار بالا می‌رود و هم نمی‌تواند به خوبی عکس را بازسازی کند. زیرا فضای نهفته‌ای که آموزش دیده شده مربوط به دامنه‌ی سگ‌ها بوده و در نتیجه با این روش به سادگی می‌توان ناهنجاری را تشخیص داد. در دینای امروزه، دیتایی که در دست ما برای حل مسائل قرار دارد اغلب دارای نویز است و مدل‌هایمان برای آموزش درست و صحیح به داده‌ای بهتر و تا حد امکان نویز کمتر نیاز دارند. دسته‌ای از خودرمزگذار‌ها که به آن‌ها رمزگذار‌های رفع نویز نیز گفته می‌شود، در این جا می‌توانند استفاده شوند تا به خوبی و با عملکرد قابل قبولی نویز‌های درون عکس را حذف کنند. | ## بخش 3: خودرمزگذار | برخلاف متد‌های سنتی که برای حذف نویز استفاده می‌شود، خودرمزگذار‌ها دنبال نویز درون عکس نمی‌گردند بلکه آن‌ها با یادگیری بازنمایی صحیحی از عکس سعی می‌کنند تا از دست این نویز‌ها راحت شوند و در نهایت با ساختن دوباره‌ی عکس این بار بدون نویز این کار را انجام دهند. در واقع برای آموزش این دسته‌ از خودرمزگذار‌ها معمولا از تعداد زیادی عکس در دو حالت با نویز و بدون نویز استفاده می‌کنند. در واقع این نوع مدل‌ها از دسته‌ی مدل سازنده می‌باشند که برای تولید عکس می‌توان از آن‌ها کمک گرفت. ایده‌ی کار به این ترتیب است که از روی تعدادی عکس ورودی برای مثال تعدادی عکس صورت انسان، می‌تواند عکس‌های جدیدی از صورت‌ها درست کند که بسیار طبیعی و شبیه به عکس‌های داده شده باشند ولی همچین آدم‌هایی یا همچین عکس‌هایی در حقیقت وجود ندارند. در خودرمزگذار متغیر سعی می‌شود تا با استفاده از یک دانش پیشین شروطی روی فضای نهفته تولید شده توسط رمزگذار قرار داده شود تا نقاط نزدیک هم در فضا، داده‌هایی نزدیک به هم در فضای ورودی تولید کنند. آموزش یک شبکه عصبی خودرمزگذار با تنظیم مقادیر خروجی هدف برابر با مقادیر ورودی، پس‌انتشار را انجام می‌دهد و بدین ترتیب خودرمزنگار آموزش داده می‌شود تا اختلاف بین داده‌ها و بازسازی آن را به حداقل برساند (یعنی تفاوت بین بردار واقعی خروجی و بردار خروجی مورد انتظار، که در آن خروجی مورد انتظار همان بردار ورودی است). در نتیجه، خودرمزنگار‌ها قادر به یادگیری بدون معلم (ناظر) هستند.میلاد وزان، یادگیری عمیق: اصول، مفاهیم و رویکردها، میعاد اندیشه، 1399 در نگاه اول شاید برایتان عجیب برسد که چرا باید یک شبکه داشته باشیم که در آن تنها بخواهیم که خروجی ما همچون ورودی باشد و چرا باید آن را آموزش دهیم ولی در حقیقت به کمک لایه‌های میانی، مخصوصا لایه‌ی Bottleneck یا گلوگاه که در آن داده‌ی ورودی به کمترین تعداد بعد می‌رسد، می‌توان کارهای خوبی کرد و به اطلاعات ارزشمندی از داده برسیم که چند نمونه از کاربرد‌های آن را هم در بالا مطرح کردیم. به طور ریاضی می‌توان گفت: تابع هزینه‌ی ما به کمک تفاوت میان و محاسبه می‌شود و در طول آموزش تلاش می‌شود تا توابع و را به نحوی بدست آورد که تابع هزینه‌ کمینه شود. | ## جمع‌بندی | به طور معمول تابع هزینه را خطای میانگین مربعات بین ورودی و خروجی بازسازی شده یا همان در نظر می‌گیرند.