یادگیری عمیق چیست؟ سفری به دنیای هوش مصنوعی
یادگیری عمیق زیرمجموعهای از یادگیری ماشینه که با شبکههای عصبی چندلایه کار میکنه و طراحیش از ساختار مغز انسان الهام گرفته شده.
یادگیری عمیق (Deep Learning) چیه؟
یادگیری عمیق شاخهای از یادگیری ماشین (Machine Learning) هست که بر اساس شبکههای عصبی چندلایه کار میکنه و طراحی اون از ساختار مغز انسان الهام گرفته شده. امروزه، مدلهای یادگیری عمیق قلب تپنده اکثر فناوریهای پیشرفته هوش مصنوعی (AI) هستن؛ از بینایی ماشین و هوش مصنوعی مولد گرفته تا خودروهای خودران و رباتیک.
برخلاف منطق ریاضی که توی الگوریتمهای سنتی یادگیری ماشین به طور واضح تعریف میشه، شبکههای عصبی مصنوعی در مدلهای یادگیری عمیق از لایههای بههمپیوسته زیادی از «نورونها» تشکیل شدن که هر کدوم یک عملیات ریاضی رو انجام میدن. با استفاده از یادگیری ماشین برای تنظیم قدرت اتصالات بین نورونهای مجزا در لایههای مجاور — به عبارت دیگه، تغییر وزنها و بایاسهای مدل — میشه شبکه رو برای رسیدن به خروجیهای دقیقتر بهینه کرد. با اینکه شبکههای عصبی و یادگیری عمیق خیلی به هم گره خوردن، اما دقیقاً مترادف هم نیستن: «یادگیری عمیق» به آموزش مدلهایی با حداقل ۴ لایه اشاره داره (هرچند معماریهای شبکههای عصبی مدرن اغلب خیلی «عمیقتر» از این حرفها هستن).
همین ساختار توزیعشده، بسیار انعطافپذیر و قابل تنظیمه که قدرت و تطبیقپذیری شگفتانگیز یادگیری عمیق رو توضیح میده. فرض کنید دادههای آموزشی مثل نقاطی هستن که روی یک نمودار دوبعدی پخش شدن و هدف از آموزش مدل، پیدا کردن خطی باشه که از همه این نقاط عبور کنه. اساساً، یادگیری ماشین سنتی سعی میکنه این کار رو با یک تابع ریاضی واحد انجام بده که یک خط (یا منحنی) واحد تولید میکنه؛ اما از طرف دیگه، یادگیری عمیق میتونه تعداد بیشماری از خطوط کوچیکتر و قابل تنظیم رو کنار هم بچینه تا شکل مورد نظر رو بسازه. شبکههای عصبی عمیق، تقریبزنندههای جهانی هستن: به صورت تئوری ثابت شده که برای هر تابعی، یک ساختار شبکه عصبی وجود داره که میتونه اون رو بازتولید کنه.۱
مدلهای یادگیری عمیق معمولاً از طریق یادگیری نظارتشده روی دادههای برچسبگذاریشده برای انجام وظایف رگرسیون و طبقهبندی آموزش داده میشن. اما از اونجایی که شبکههای عصبی بزرگ معمولاً به حجم عظیمی از دادههای آموزشی برای رسیدن به عملکرد بهینه نیاز دارن، هزینه و زحمت تهیه مجموعه دادههای به اندازه کافی بزرگ از نمونههای آموزشی برچسبدار میتونه خیلی زیاد باشه. این موضوع باعث توسعه تکنیکهایی برای تکرار وظایف یادگیری نظارتشده با استفاده از دادههای بدون برچسب شد. اصطلاح یادگیری خودنظارتی رو یان لیکان در اواخر دهه ۲۰۱۰ برای جدا کردن این روشها از یادگیری نظارتنشده سنتی ابداع کرد. از اون زمان، یادگیری خودنظارتی به عنوان یک روش برجسته برای آموزش شبکههای عصبی، بهویژه برای مدلهای پایه که زیربنای هوش مصنوعی مولد هستن، مطرح شده.
اگرچه شبکههای عصبی (یا مفاهیم مشابه) توسط دانشمندان داده در اوایل تاریخ یادگیری ماشین معرفی شدن، اما پیشرفت چشمگیر اونها تا اواخر دهه ۲۰۰۰ و اوایل دهه ۲۰۱۰ به طور جدی شروع نشد. ظهور شبکههای یادگیری عمیق در اکثر زیرشاخههای یادگیری ماشین، تا حدی مدیون پیشرفت در واحدهای پردازش گرافیکی (GPU) با عملکرد بالا بود که پردازش موازی حجم عظیمی از مراحل محاسباتی رو ممکن کرد. از اونجایی که یادگیری عمیق هم برای آموزش و هم برای استنتاج به قدرت محاسباتی فوقالعادهای نیاز داره، این پیشرفتهای سختافزاری سرعت و عملی بودن پیادهسازی مدلهای یادگیری عمیق در مقیاس بزرگ رو به شدت افزایش داد.
یادگیری عمیق چطور کار میکنه؟
شبکههای عصبی مصنوعی، به طور کلی، از عملکرد مدارهای عصبی مغز انسان الهام گرفتن که کارشون با انتقال پیچیده سیگنالهای شیمیایی و الکتریکی در شبکههای توزیعشدهای از سلولهای عصبی (نورونها) انجام میشه. در یادگیری عمیق، «سیگنالهای» مشابه، خروجیهای وزندارِ بسیاری از عملیاتهای ریاضی تودرتو هستن که هر کدوم توسط یک «نورون» مصنوعی (یا گره) انجام میشه و در مجموع، شبکه عصبی رو تشکیل میدن.
خلاصه بخوام بگم، یک مدل یادگیری عمیق رو میشه مثل یک سری معادلات تو در توی پیچیده دونست که یک ورودی رو به یک خروجی نگاشت میکنه. تنظیم تأثیر نسبی هر کدوم از معادلات در این شبکه با استفاده از فرآیندهای تخصصی یادگیری ماشین، به نوبه خود، میتونه نحوه نگاشت ورودیها به خروجیها توسط شبکه رو تغییر بده.
با اینکه این چارچوب خیلی قدرتمند و همهکاره است، اما به قیمت از دست رفتن تفسیرپذیری تموم میشه. اغلب، توضیح شهودی کمی (اگر اصلاً وجود داشته باشه) — فراتر از یک توضیح ریاضی خام — برای این وجود داره که مقادیر پارامترهای مدل که توسط یک شبکه عصبی یاد گرفته میشن، چطور ویژگیهای دنیای واقعی دادهها رو منعکس میکنن. به همین دلیله که مدلهای یادگیری عمیق رو اغلب «جعبهسیاه» مینامن، مخصوصاً وقتی با انواع سنتی مدلهای یادگیری ماشین که با مهندسی ویژگی دستی ساخته میشن مقایسه بشن.
در مقایسه با تکنیکهای کلاسیک یادگیری ماشین، یادگیری عمیق برای آموزش به حجم بسیار زیادی از دادهها و منابع محاسباتی نیاز داره. با توجه به هزینه و پیچیدگی سختافزارهای سازمانی مورد نیاز برای توسعه و پیادهسازی برنامههای پیچیده یادگیری عمیق، خدمات رایانش ابری به طور فزایندهای به بخش جداییناپذیر اکوسیستم یادگیری عمیق تبدیل شدن.
ساختار شبکه عصبی عمیق
شبکههای عصبی مصنوعی از لایههای بههمپیوسته «نورونهای» مصنوعی (یا گرهها) تشکیل شدن که هر کدومشون یک عملیات ریاضی خاص (که بهش «تابع فعالسازی» میگن) انجام میدن. توابع فعالسازی مختلفی وجود داره؛ یک شبکه عصبی اغلب چندین تابع فعالسازی رو در ساختار خودش به کار میگیره، اما معمولاً تمام نورونهای یک لایه خاص از شبکه برای انجام یک تابع فعالسازی یکسان تنظیم میشن. در اکثر شبکههای عصبی، هر نورون در لایه ورودی به هر یک از نورونهای لایه بعدی متصل میشه و اونها هم به نوبه خودشون به نورونهای لایه بعد از خودشون متصل هستن و این روند همینطور ادامه داره.
خروجی تابع فعالسازی هر گره، بخشی از ورودی ارائه شده به هر یک از گرههای لایه بعدی رو تشکیل میده. نکته مهم اینه که توابع فعالسازی که در هر گره انجام میشن، غیرخطی هستن و این به شبکههای عصبی اجازه میده تا الگوها و وابستگیهای پیچیده رو مدلسازی کنن. همین استفاده از توابع فعالسازی غیرخطی هست که یک شبکه عصبی عمیق رو از یک مدل رگرسیون خطی (هرچند بسیار پیچیده) متمایز میکنه.
در حالی که برخی از معماریهای تخصصی شبکه عصبی، مانند مدلهای ترکیبی از متخصصان یا شبکههای عصبی کانولوشنی، شامل تغییرات، اضافات یا استثنائاتی در این ساختار هستن، همه شبکههای عصبی از نسخهای از این ساختار اصلی استفاده میکنن. تعداد مشخص لایهها، تعداد گرهها در هر لایه و توابع فعالسازی انتخاب شده برای گرههای هر لایه، هایپرپارامترهایی هستن که باید قبل از آموزش به صورت دستی تعیین بشن.
هر کدوم از این هزاران اتصال بین نورونها، در یک وزن منحصربهفرد ضرب میشه که تأثیر هر اتصال رو تقویت (یا تضعیف) میکنه. ورودیای که به تابع فعالسازی هر نورون داده میشه رو میشه به عنوان جمع وزنی خروجیهای هر نورون در لایه قبلی در نظر گرفت. معمولاً یک عبارت بایاس منحصربهفرد هم به هر تابع فعالسازی اضافه میشه که عملکردی شبیه به عبارت بایاس در یک تابع رگرسیون معمولی داره.
در طول آموزش، شبکه عصبی با تنظیم هر یک از این وزنها و بایاسها که به خروجیهای دقیقتری منجر میشن، «یاد میگیره». اینها پارامترهای مدل هستن: وقتی میشنوید که مثلاً یک مدل زبانی بزرگ (LLM) ۸ میلیارد «پارامتر» داره، این عدد دقیقاً به تعداد تمام اتصالات وزندار بین نورونها و بایاسهای هر نورون در شبکه عصبی اون مدل اشاره داره.
لایههای میانی که لایههای پنهان شبکه نامیده میشن، جایی هستن که بیشتر یادگیری اتفاق میافته. وجود چندین لایه پنهان، یک مدل یادگیری عمیق رو از یک شبکه عصبی «غیرعمیق»، مانند ماشین بولتزمن محدود (RBN) یا پرسپترون چندلایه استاندارد (MLP)، متمایز میکنه. وجود چندین لایه پنهان به یک مدل یادگیری عمیق اجازه میده تا ویژگیهای سلسلهمراتبی و پیچیده دادهها رو یاد بگیره؛ به طوری که لایههای اولیه الگوهای کلیتر و لایههای عمیقتر الگوهای جزئیتری رو شناسایی میکنن.
برای انجام استنتاج، شبکه یک گذر مستقیم رو کامل میکنه: لایه ورودی، دادههای ورودی رو دریافت میکنه که معمولاً به شکل یک بردار نهفته (امبدینگ) هست و هر نورون ورودی یک ویژگی مجزا از بردار ورودی رو پردازش میکنه. برای مثال، مدلی که با تصاویر سیاهوسفید ۱۰×۱۰ پیکسلی کار میکنه، معمولاً ۱۰۰ نورون در لایه ورودی خودش داره که هر نورون ورودی با یک پیکسل مجزا مطابقت داره. بنابراین، شبکههای عصبی معمولاً به بردارهای ورودی با اندازه ثابت نیاز دارن، هرچند تکنیکهای پیشپردازش مانند pooling یا نرمالسازی میتونن انعطافپذیری بیشتری در مورد اندازه خود دادههای ورودی اصلی فراهم کنن.
دادهها به تدریج تبدیل شده و به گرههای هر لایه بعدی منتقل میشن تا به لایه نهایی برسن. توابع فعالسازی نورونها در لایه خروجی، پیشبینی نهایی شبکه رو محاسبه میکنن. برای مثال، هر گره خروجی در یک مدل طبقهبندی عمیق ممکنه یک تابع سافتمکس رو اجرا کنه که اساساً یک ورودی عددی رو میگیره و اون رو به یک احتمال بین ۰ تا ۱ برای تعلق ورودی به یک دسته طبقهبندی بالقوه تبدیل میکنه. سپس مدل، دستهای رو خروجی میده که گره خروجی مربوط به اون، بالاترین خروجی رو تولید کرده باشه.
آموزش شبکههای عصبی عمیق
با اینکه پتانسیل تئوری شبکههای عصبی عمیق همیشه مشخص بود، اما در ابتدا نحوه آموزش موثر اونها مشخص نبود. هدف از بهینهسازی پارامترهای مدل از طریق آموزش، کاهش خطای خروجیهای نهایی شبکه است — اما جدا کردن و محاسبه اینکه هر یک از هزاران، میلیونها یا حتی میلیاردها وزن بههمپیوسته یک شبکه عصبی چطور به خطای کلی کمک میکنن، کاملاً غیرعملیه.
این مانع بزرگ با معرفی دو الگوریتم حیاتی برطرف شد: پسانتشار (backpropagation) و کاهش گرادیان (gradient descent).
پسانتشار (Backpropagation)
پسانتشار، که مخفف «انتشار خطا به عقب» هست، یک روش هوشمندانه برای محاسبه اینه که تغییرات در هر وزن یا بایاس در یک شبکه عصبی چطور بر دقت پیشبینیهای مدل تأثیر میذاره.
یادتون باشه که یک شبکه عصبی مصنوعی اساساً یک سری از توابع ریاضی تودرتو است: خروجیهای نورونهای یک لایه به عنوان ورودی برای نورونهای لایه بعدی عمل میکنن و همینطور الی آخر. در طول آموزش، این معادلات بههمپیوسته در یک تابع دیگه قرار میگیرن: یک تابع زیان که میانگین تفاوت (یا «زیان») بین خروجی مطلوب (یا «مقدار واقعی») برای یک ورودی مشخص و خروجی واقعی شبکه عصبی برای هر گذر مستقیم رو اندازهگیری میکنه.
بعد از اینکه هایپرپارامترهای اولیه مدل تعیین شدن، آموزش معمولاً با مقداردهی اولیه تصادفی پارامترهای مدل شروع میشه. مدل روی یک دسته از نمونههای مجموعه داده آموزشی پیشبینیهایی انجام میده و تابع زیان، خطای هر پیشبینی رو دنبال میکنه. هدف از آموزش، بهینهسازی تکراری پارامترهاست تا زمانی که میانگین زیان به زیر یک آستانه قابل قبول کاهش پیدا کنه.
پسانتشار شامل یک گذر رو به عقب از ابتدا تا انتهای شبکه است که از خروجی تابع زیان شروع میشه و تا لایه ورودی ادامه پیدا میکنه. با استفاده از قاعده زنجیرهای حسابان، پسانتشار «گرادیان» تابع زیان رو محاسبه میکنه: یک بردار از مشتقات جزئی تابع زیان نسبت به هر متغیر در هر معادلهای که در نهایت در محاسبه تابع زیان نقش داره. به عبارت دیگه، این الگوریتم توضیح میده که افزایش یا کاهش خروجی تابع فعالسازی هر نورون چطور بر زیان کلی تأثیر میذاره — که به طور ضمنی، نشون میده هر تغییری در وزنهایی که این خروجیها در اونها ضرب میشن (یا در بایاسهایی که به این خروجیها اضافه میشن) چطور زیان رو افزایش یا کاهش میده.
کاهش گرادیان (Gradient Descent)
گرادیانی که در طول پسانتشار محاسبه میشه، به عنوان ورودی برای الگوریتم کاهش گرادیان عمل میکنه.
حرکت به سمت پایین — پایین اومدن — از گرادیان تابع زیان، باعث کاهش زیان (و در نتیجه افزایش دقت) میشه. از اونجایی که گرادیان محاسبه شده در طول پسانتشار شامل مشتقات جزئی تابع زیان نسبت به هر پارامتر مدل است، ما میدونیم که مقدار هر پارامتر رو باید به کدوم سمت «قدم» برداریم تا زیان کاهش پیدا کنه.
هر قدم شامل یک بهروزرسانی در پارامترهای مدل میشه و نشوندهنده «یادگیری» مدل از دادههای آموزشی خودشه. هدف ما اینه که به طور تکراری وزنها رو بهروزرسانی کنیم تا به حداقل گرادیان برسیم. هدف الگوریتمهای کاهش گرادیان اینه که تنظیمات خاص پارامترها رو پیدا کنن که گرادیان رو به موثرترین شکل ممکن «کاهش» بدن.
پیادهسازی مدلهای یادگیری عمیق
تعدادی فریمورک متنباز برای توسعه مدلهای یادگیری عمیق وجود داره، چه بخواهید یک مدل رو از ابتدا آموزش بدید یا یک مدل از پیش آموزشدیده رو تنظیم دقیق (fine-tune) کنید. این کتابخانههای یادگیری ماشین انواع ماژولها و گردشکارهای از پیش پیکربندی شده برای ساخت، آموزش و ارزیابی شبکههای عصبی ارائه میدن که فرآیند توسعه رو سادهتر و روانتر میکنن.
از جمله محبوبترین فریمورکهای متنباز برای کار با الگوریتمهای یادگیری عمیق میشه به PyTorch، TensorFlow و (بهویژه برای LLMها) کتابخانه Transformers از Hugging Face اشاره کرد. پیشنهاد میکنیم قبل از کار با این فریمورکها، زبان برنامهنویسی پایتون رو یاد بگیرید.
انواع مدلهای یادگیری عمیق
با وجود قدرت و پتانسیل ذاتی شبکههای عصبی عمیق معمولی («وانیلی»)، عملکرد کافی در برخی وظایف خاص یا غیرممکنه یا غیرعملی. دهههای اخیر شاهد نوآوریهای متعددی در معماری استاندارد شبکههای عصبی بودیم که هر کدوم با هدف افزایش عملکرد در وظایف و انواع دادههای خاصی طراحی شدن.
لازمه اشاره کنیم که یک نوع خاص از شبکه عصبی ممکنه برای چندین نوع مدل یادگیری عمیق مناسب باشه و برعکس. برای مثال، یک مدل خودرمزگذار (autoencoder) که برای وظایف تصویری استفاده میشه، ممکنه از معماری مبتنی بر شبکه عصبی کانولوشنی استفاده کنه؛ مدلهای انتشاری (diffusion models) هم میتونن از معماریهای مبتنی بر CNN یا ترنسفورمر استفاده کنن.
شبکههای عصبی کانولوشنی (CNNs)
شبکههای عصبی کانولوشنی (CNNs) عمدتاً (اما نه منحصراً) با وظایف بینایی ماشین مانند تشخیص اشیاء، بازشناسی تصویر، طبقهبندی تصویر و قطعهبندی تصویر مرتبط هستن، چون در تشخیص الگوهای «محلی» (مانند روابط بین پیکسلهای مجاور در یک تصویر) عالی عمل میکنن.
ایده اصلی پشت توسعه CNNها این بود که برای برخی وظایف و انواع دادهها — مثل طبقهبندی تصاویر با وضوح بالا که صدها یا هزاران پیکسل دارن — شبکههای عصبی با اندازه کافی که فقط از لایههای استاندارد و کاملاً متصل تشکیل شدن، پارامترهای بسیار زیادی خواهند داشت و نمیتونن بعد از آموزش به خوبی روی دادههای جدید تعمیم پیدا کنن. به عبارت دیگه، از نظر محاسباتی ناکارآمد و مستعد بیشبرازش (overfitting) روی دادههای آموزشی به جای یادگیری الگوهای واقعاً مفید دنیای واقعی هستن.
از نظر تئوری، یک شبکه عصبی که بتونه اشکال متمایز و سایر ویژگیهای معنادار رو تشخیص بده، میتونه با استخراج این ویژگیها از تصویر خام برای پردازش بیشتر (و دور ریختن اطلاعات مربوط به مناطق بیاهمیت تصویر) در قدرت محاسباتی صرفهجویی کنه. یکی از راهها برای انجام این کار، استفاده از فیلترهاست: آرایههای دوبعدی کوچکی از اعداد که مقادیر اونها با شکل ویژگیهای مفید مطابقت داره. برای مثال، مقادیر یک فیلتر که پیکسلهای یک تصویر رو برای پیدا کردن گوشههای بالا سمت چپ اسکن میکنه، ممکنه این شکلی باشه:[1010101010100000100000100000100000]
حالا تصور کنید که این فیلتر ۵×۵ در یک شبکه ۵×۵ از پیکسلهای تصویر ورودی ضرب بشه. در اصطلاح ریاضی، به این کار کانولوشن میگن: یک عملیات ریاضی که در اون یک تابع، تابع دوم رو تغییر میده (یا کانوالو میکنه). اگر مقادیر پیکسلها شبیه به مقادیر فیلتر باشن، حاصل این ضرب (ضرب داخلی) بزرگ خواهد بود و ویژگیای که اون پیکسلها نشون میدن، ثبت میشه؛ در غیر این صورت، ضرب داخلی کوچک خواهد بود و پیکسلها نادیده گرفته میشن.
CNNها لایههای کانولوشنی رو اضافه میکنن که گرههای بسیار کمتری نسبت به لایههای استاندارد کاملاً متصل دارن و به عنوان چنین فیلترهایی عمل میکنن. به جای اینکه به یک گره منحصربهفرد (با یک وزن منحصربهفرد) برای هر پیکسل مجزا در تصویر نیاز باشه، فیلتر یک لایه کانولوشنی در کل تصویر حرکت میکنه و هر بار یک شبکه پیکسلی با اندازه متناظر رو پردازش میکنه. این کار نه تنها اطلاعات مفید رو استخراج میکنه، بلکه تعداد پارامترهای منحصربهفرد مدل مورد نیاز برای پردازش کل تصویر رو هم به طور قابل توجهی کاهش میده.
CNNها معمولاً از نظر تعداد لایهها بسیار «عمیقتر» از شبکههای عصبی استاندارد هستن، اما چون لایههای کانولوشنی نورونهای نسبتاً کمی دارن، از نظر تعداد کل پارامترها همچنان کارآمد هستن. با عبور دادهها از CNN، هر لایه کانولوشنی به تدریج ویژگیهای جزئیتری رو استخراج میکنه و یک «نقشه ویژگی» میسازه. نقشه ویژگی نهایی در نهایت به یک لایه استاندارد کاملاً متصل منتقل میشه که پیشبینیهای نهایی رو انجام میده. در طول آموزش، مدل به طور طبیعی وزنهایی رو برای لایههای کانولوشنی یاد میگیره که باعث میشن فیلترهای اونها ویژگیهایی رو ثبت کنن که به پیشبینیهای نهایی دقیق منجر میشن.
شبکههای عصبی بازگشتی (RNNs)
شبکههای عصبی بازگشتی (RNNs) برای وظایفی که شامل دادههای متوالی هستن، مانند پیشبینی سریهای زمانی، بازشناسی گفتار یا پردازش زبان طبیعی (NLP) استفاده میشن.
در حالی که شبکههای عصبی پیشخور معمولی یک ورودی واحد رو به یک خروجی واحد نگاشت میکنن، RNNها یک دنباله از ورودیها رو با کار در یک حلقه بازگشتی به یک خروجی نگاشت میکنن که در اون، خروجی برای یک مرحله معین در دنباله ورودی، به عنوان ورودی برای محاسبه مرحله بعدی عمل میکنه. این کار در عمل یک «حافظه» داخلی از ورودیهای گذشته ایجاد میکنه که بهش حالت پنهان میگن. این حالت پنهان که بعد از هر مرحله زمانی بهروز میشه، به یک RNN اجازه میده تا درک خودش از زمینه و ترتیب رو حفظ کنه.
با اینکه مفهوم یک لایه «جمعشده» برای درک این مفهوم مفیده، این بازگشت رو میشه به عنوان عبور دادهها از یک سری لایههای متعدد که وزنهای یکسانی دارن هم درک کرد.
این موضوع به برخی از کاستیهای اساسی RNNهای معمولی، بهویژه در مورد آموزش، منجر میشه. یادتون باشه که پسانتشار، گرادیان تابع زیان رو محاسبه میکنه که تعیین میکنه هر پارامتر مدل باید چطور افزایش یا کاهش پیدا کنه. وقتی هر یک از این بهروزرسانیهای پارامتر در لایههای بازگشتی «یکسان» زیادی تکرار بشه، این بهروزرسانیها به صورت نمایی مقیاس پیدا میکنن: بزرگ کردن پارامترها میتونه به گرادیان انفجاری منجر بشه و به حداقل رسوندن پارامترها میتونه به گرادیان محوشونده منجر بشه. هر دو مشکل میتونن باعث بیثباتی در آموزش، کند شدن آموزش یا حتی توقف کامل آموزش بشن. بنابراین، RNNهای استاندارد به پردازش دنبالههای نسبتاً کوتاه محدود هستن.
پیشرفتهای مختلفی در معماری پایه RNN، مانند شبکههای حافظه طولانی کوتاهمدت (LSTM) یا واحدهای بازگشتی دروازهای (GRU)، این مشکلات رو کاهش داده و توانایی مدل در مدلسازی وابستگیهای دوربرد رو افزایش دادن.
خودرمزگذارها (Autoencoders)
خودرمزگذارها برای فشردهسازی (یا رمزگذاری) دادههای ورودی و سپس بازسازی (رمزگشایی) ورودی اصلی با استفاده از این نمایش فشرده طراحی شدن. در طول آموزش، اونها برای به حداقل رسوندن زیان بازسازی بهینه میشن: یعنی اختلاف بین نقطه داده بازسازی شده و داده ورودی اصلی. اگرچه این نوع یادگیری عمیق از دادههای بدون برچسب و بدون ساختار استفاده میکنه، خودرمزگذارها به طور کلی به عنوان یک نمونه اولیه از یادگیری خودنظارتی در نظر گرفته میشن.
در اصل، این کار مدل رو مجبور میکنه تا وزنهایی رو یاد بگیره که باعث میشن نمایش فشرده فقط ضروریترین و معنادارترین زیرمجموعه از ویژگیهای داده ورودی رو حفظ کنه. در اصطلاح یادگیری ماشین، خودرمزگذارها فضای نهفته رو مدلسازی میکنن.
خودرمزگذارها کاربردهای مختلفی دارن، مانند فشردهسازی دادهها، کاهش ابعاد، استخراج ویژگی، حذف نویز از دادههای خراب و تشخیص تقلب.
در اکثر موارد، شبکه رمزگشا فقط برای کمک به آموزش رمزگذار عمل میکنه و بعد از آموزش دور انداخته میشه. در خودرمزگذارهای متغیر (VAEs)، که نوعی مدل مولد هستن، رمزگشا حفظ میشه و برای تولید نقاط داده جدید با اضافه کردن مقداری نویز تصادفی به نمایشهای نهفته یاد گرفته شده توسط رمزگذار قبل از بازسازی استفاده میشه.
مدلهای ترنسفورمر (Transformer)
ظهور مدلهای ترنسفورمر، که برای اولین بار در یک مقاله تأثیرگذار در سال ۲۰۱۷ از گوگل دیپمایند با عنوان «توجه، تمام آن چیزی است که نیاز دارید» معرفی شد، یک لحظه تعیینکننده در یادگیری عمیق بود که مستقیماً به عصر فعلی هوش مصنوعی مولد منجر شد.
ترنسفورمرها، مانند RNNها، ذاتاً برای کار با دادههای متوالی طراحی شدن. ویژگی مشخصه مدلهای ترنسفورمر، مکانیزم خودتوجهی منحصربهفرد اونهاست که ترنسفورمرها توانایی چشمگیر خودشون در تشخیص روابط (یا وابستگیها) بین هر بخش از یک دنباله ورودی رو از اون میگیرن. مهمتر از اون، این مکانیزم توجه به ترنسفورمرها اجازه میده تا به طور انتخابی روی بخشهایی از یک دنباله ورودی که در هر لحظه بیشترین اهمیت رو دارن، تمرکز کنن (یا «توجه» کنن).
مکانیزمهای توجه برای اولین بار در زمینه RNNهایی که برای ترجمه ماشینی استفاده میشدن، معرفی شدن. اما برخلاف RNNها، ترنسفورمرها از لایههای بازگشتی استفاده نمیکنن؛ یک معماری استاندارد ترنسفورمر فقط از لایههای توجه و لایههای پیشخور استاندارد استفاده میکنه و از یک ساختار جدید الهام گرفته از منطق پایگاههای داده رابطهای بهره میبره.
ترنسفورمرها بیشتر با مدلهای زبانی بزرگ (LLMها) و در نتیجه، با کاربردهای NLP مانند تولید متن، چتباتها و تحلیل احساسات مرتبط هستن. اما اونها مدلهای بسیار همهکارهای هستن که قادر به پردازش هر نوع داده متوالی، از جمله دادههای صوتی یا سریهای زمانی هستن. حتی انواع دادههایی مانند دادههای تصویری هم میتونن توسط ترنسفورمرهای بینایی (ViTs) از طریق راهحلهای هوشمندانه برای نمایش اونها به عنوان یک دنباله، پردازش بشن.
اگرچه مدلهای ترنسفورمر در تقریباً هر حوزهای از یادگیری عمیق به نتایج پیشرفتهای دست یافتن، اما لزوماً انتخاب بهینه برای همه کاربردها نیستن. برای مثال، در حالی که ViTها در بنچمارکهای وظایف بینایی ماشین به رتبههای برتر دست یافتن، CNNها به طور قابل توجهی سریعتر و از نظر محاسباتی کارآمدتر هستن. برای وظایفی مانند تشخیص اشیاء یا قطعهبندی تصویر، انتخاب بین یک ترنسفورمر یا CNN اغلب به این بستگی داره که آیا یک برنامه یادگیری عمیق باید حداکثر دقت رو در اولویت قرار بده یا بازخورد آنی.
مدلهای مامبا (Mamba)
مدلهای مامبا که برای اولین بار در سال ۲۰۲۳ معرفی شدن، یک معماری جدید یادگیری عمیق برای دادههای متوالی هستن. مامبا که از یک نوع مدل فضای حالت (SSM) گرفته شده، ارتباطات نظری جالبی با RNNها، CNNها و مدلهای ترنسفورمر داره. مهمتر از همه، مامبا توانایی اولویتبندی انتخابی (یا دور انداختن) اطلاعات گذشته بر اساس اهمیت اونها در یک لحظه معین رو با ترنسفورمرها به اشتراک میذاره — هرچند با یک مکانیزم کاملاً منحصربهفرد برای انجام این کار.
تا به امروز، مامبا شاید تنها معماری باشه که به طور معناداری با ترنسفورمرها در حوزه LLMها رقابت میکنه و عملکردی قابل مقایسه با کارایی محاسباتی بسیار بیشتر به دلیل الگوریتم بسیار کممصرفتر از نظر حافظه ارائه میده.
شبکههای مولد تخاصمی (GANs)
مانند VAEها، شبکههای مولد تخاصمی (GANs) شبکههای عصبی هستن که برای ایجاد دادههای جدید شبیه به دادههای آموزشی اصلی استفاده میشن. GANها یک معماری مشترک هستن که دو شبکه یادگیری عمیق رو که به صورت تخاصمی در یک بازی مجموع-صفر آموزش دیدن، ترکیب میکنن.
- شبکه مولد نقاط داده جدیدی مانند تصاویر اصلی ایجاد میکنه. هر معماری مولدی که قادر به تولید خروجی مورد نظر باشه، میتونه برای شبکه مولد GAN استفاده بشه. تنها ویژگی مشخصه اون، نحوه تعاملش با تمایزدهنده است و تنها نیازش اینه که الگوریتم قابل مشتقگیری باشه (و بنابراین بتونه از طریق پسانتشار و کاهش گرادیان بهینه بشه).
- به شبکه تمایزدهنده هم تصاویر «واقعی» از مجموعه داده آموزشی و هم تصاویر «جعلی» خروجی از مولد داده میشه و وظیفه داره تعیین کنه که آیا یک تصویر واقعی است یا جعلی. مانند مولد، تمایزدهنده هم میتونه به شکل هر معماری مناسبی باشه.
- ابتدا، تمایزدهنده برای طبقهبندی صحیح تصاویر جعلی آموزش داده میشه. در این مدت، وزنهای مولد ثابت میمونن.
- بعد، وزنهای تمایزدهنده ثابت میمونن و از بازخورد تمایزدهنده برای آموزش مولد استفاده میشه. وزنهای مولد برای تولید تصاویری که به احتمال زیاد تمایزدهنده رو فریب میدن، بهینه میشن.
- این فرآیند تکرار میشه: تمایزدهنده مجموعه دیگری از تصاویر «واقعی» از دادههای آموزشی و تصاویر «جعلی» از مولد — که حالا، احتمالاً، متقاعدکنندهتر هستن — دریافت میکنه. تمایزدهنده یک بار دیگه پیشبینی میکنه که آیا هر تصویر واقعی است یا جعلی و دوباره بهروز میشه.
- یک بار دیگه، بازخورد از تمایزدهنده (که حالا فریب دادنش سختتر شده) برای آموزش بیشتر مولد استفاده میشه.
- این فرآیند به صورت تکراری ادامه پیدا میکنه تا زمانی که تمایزدهنده دیگه نتونه بین نمونههای واقعی و جعلی تمایز قائل بشه.
GANها قادر به یادگیری تولید نمونههای فوقالعاده دقیق هستن، اما ماهیت تخاصمی این فرآیند باعث میشه که آموزش ذاتاً دشوار و ناپایدار باشه.
مدلهای انتشاری (Diffusion Models)
مدلهای انتشاری از برجستهترین معماریهای شبکه عصبی در هوش مصنوعی مولد هستن. اونها هم عملی و هم کارآمد هستن و پایداری آموزشی VAEها و وفاداری خروجی GANها رو ارائه میدن. اونها بیشتر برای تولید تصویر استفاده میشن، اما قادر به تولید دادههای متنی، ویدیویی و صوتی هم هستن.
مانند خودرمزگذارها، مدلهای انتشاری اساساً برای تخریب یک تصویر و سپس بازسازی دقیق اون آموزش داده میشن، البته به روشی کاملاً متفاوت. در طول آموزش، مدلهای انتشاری یاد میگیرن که به تدریج یک نقطه داده رو مرحله به مرحله با نویز گوسی منتشر (خراب) کنن، و سپس این فرآیند رو معکوس کنن تا ورودی اصلی رو بازسازی کنن. با این کار، اونها توانایی تولید نمونههای جدید (شبیه به دادههای آموزشی اصلی) رو با «حذف نویز» از یک نمونه نویز تصادفی به دست میارن.
مدلهای انتشاری نهفته اساساً ترکیبی از VAEها و مدلهای انتشاری هستن: اونها ابتدا دادههای ورودی رو به فضای نهفته فشرده (رمزگذاری) میکنن، سپس فرآیند انتشار رو انجام میدن و بعد نتیجه رو به یک رمزگشا میدن که اون رو به اندازه تصویر مورد نظر بزرگ میکنه.
در حالی که مدلهای انتشاری معمولاً از یک معماری مبتنی بر CNN — به طور خاص، معماری U-net که به طور برجسته برای قطعهبندی در تصویربرداری پزشکی استفاده میشه — استفاده میکنن، برخی به جای اون از یک معماری مبتنی بر ترنسفورمر بهره میبرن.
شبکههای عصبی گرافی (GNNs)
شبکههای عصبی گرافی (GNNs) برای وظایفی طراحی شدن که نیاز به مدلسازی روابط پیچیدهتری بین موجودیتهای مختلف دارن که در اکثر انواع دادهها معمول نیست.
دادههای تصویری رو در نظر بگیرید که در اونها پیکسلهای یک تصویر در یک شبکه دوبعدی چیده شدن: هر پیکسل به طور مستقیم حداکثر به ۸ پیکسل مجاور متصل است. یک CNN استاندارد برای مدلسازی چنین روابطی کاملاً مناسبه. اما این قابلیت به خوبی برای مدلسازی روابط در، برای مثال، یک شبکه اجتماعی که در اون یک کاربر معین ممکنه به طور مستقیم به هزاران کاربر دیگه و به طور غیرمستقیم به هزاران کاربر بیشتر متصل باشه، قابل تعمیم نیست.
ساختار شبکههای عصبی گرافی اجازه میده تا نمایشهای پیچیدهتر و نامنظمتری از دادهها نسبت به آنچه در جریان یکطرفه دادهها در سایر معماریهای شبکه عصبی ممکنه، داشته باشیم.
پاسخی بگذارید