مقاله حاضر شما را با انواع شبکه های عصبی مصنوعی در یادگیری عمیق آشنا میکند و به شما آموزش میدهد که در چه زمانی باید از کدام نوع شبکه عصبی برای حل مسالهای در یادگیری عمیق استفاده کنید. در انتها همچنین یک مقایسه بین این انواع مختلف شبکههای عصبی را در یک جدول خوانا و آسان ارائه میدهیم!
چرا یادگیری عمیق؟
سوال مناسبی است. در الگوریتمهای یادگیری ماشین، کاستی وجود ندارد، پس چه دلیلی دارد که یک دانشمند داده به سوی الگوریتمهای یادگیری عمیق کشیده میشود؟ شبکههای عصبی چه چیزی را ارائه میدهند که الگوریتمهای معمولی یادگیری ماشین ارائه نمیدهند؟
یک سوال دیگری که متداولاً مشاهده میکنم این است که شبکههای عصبی (Neural Networks) به مقدار زیادی قدرت محاسباتی نیازمند هستند، پس آیا واقعاً استفاده از آنها ارزش دارد؟ در حالی که این سوال با جزئیات زیادی همراه است، جواب کوتاه این است – بله!
انواع شبکه های عصبی در یادگیری عمیق، مانند شبکههای عصبی پیچشی (CNN)، شبکههای عصبی بازگشتی (RNN)، شبکههای عصبی مصنوعی (ANN) و غیره، در حال تغییر نحوه تعامل ما با دنیا هستند. این انواع مختلف شبکههای عصبی در هسته انقلاب یادگیری عمیق قرار دارند و کاربردهایی مانند وسایل پروازی بدون سرنشین، اتومبیلهای بدون راننده، تشخیص گفتار و غیره را به تقویت می کنند.
طبیعی است که فکر کنید، آیا الگوریتمهای یادگیری ماشین نمیتوانند همین کار را انجام دهند؟ خب، دو دلیل کلیدی وجود دارد که چرا پژوهشگران و کارشناسان معمولاً یادگیری عمیق را به یادگیری ماشین ترجیح میدهند:
• مرز تصمیم
• مهندسی ویژگی
کنجکاو شدید؟ خوب است، بگذارید توضیح دهم.
1- یادگیری ماشین در مقابل یادگیری عمیق: مرز تصمیم
هر الگوریتم یادگیری ماشین نگاشتی از ورودی به خروجی را یاد میگیرد. در مورد مدلهای پارامتری، الگوریتم یک تابع را با تعداد کمی از وزن ها یاد میگیرد:
Input -> f(w1,w2…..wn) -> Output
در مسائل طبقهبندی، الگوریتم تابعی که دو کلاس را از یکدیگر جدا میکند یاد میگیرد – این موضوع به نام “مرز تصمیم” شناخته میشود. یک مرز تصمیم به ما کمک میکند تا مشخص کنیم آیا یک نقطه دادهای متعلق به کلاس مثبت است یا منفی.
برای مثال، در رگرسیون لجستیک، تابع یادگیری یک تابع سیگموئید است که سعی میکند دو کلاس را از یکدیگر جدا کند:
همانطور که میبینید، الگوریتم رگرسیون لجستیک مرز تصمیم خطی را یاد میگیرد. این الگوریتم نمیتواند مرزهای تصمیم برای دادههای غیر خطی را مانند داده های خطی یاد بگیرد.
2- یادگیری ماشین در مقابل یادگیری عمیق: مهندسی ویژگی
مهندسی ویژگی گام کلیدی در فرآیند ساخت مدل است. این فرایند یک فرآیند دو مرحلهای است:
1. استخراج ویژگی
2. انتخاب ویژگی
در استخراج ویژگی، ما تمام ویژگیهای مورد نیاز برای بیان مسئله خود را استخراج میکنیم و در انتخاب ویژگی، ویژگیهای مهمی را انتخاب میکنیم که عملکرد مدل یادگیری ماشین یا یادگیری عمیق ما را بهبود بخشد.
در نظر بگیرید که با یک مسئله طبقهبندی تصویر مواجه هستید. استخراج ویژگیها به صورت دستی از یک تصویر نیاز به دانش قوی در ارتباط با موضوع و همچنین در این حوزه دارد. این یک فرآیند بسیار زمانبر است. با تشکر از یادگیری عمیق، ما میتوانیم فرآیند مهندسی ویژگی را اتوماتیک کنیم!
مقایسه بین یادگیری ماشین و یادگیری عمیق
حال که با اهمیت یادگیری عمیق و برتری آن نسبت به الگوریتمهای یادگیری ماشین سنتی آشنا شدهایم، وقت آن است که به هسته مقاله بپردازیم. در ادامه، انواع شبکه های عصبی را که در حل مسائل یادگیری عمیق با آنها مواجه خواهید شد، بررسی میکنیم.
انواع شبکه های عصبی در یادگیری عمیق
در این مقاله، تمرکز بر سه نوع مهم شبکه های عصبی است که پایهای برای بیشتر مدلهای از پیش آموزش داده شده در یادگیری عمیق میشوند:
1. شبکههای عصبی مصنوعی (ANN)
2. شبکههای عصبی پیچشی (CNN)
3. شبکههای عصبی بازگشتی (RNN)
4. پرسپترون
5. شبکههای حافظه کوتاهمدت طولانی
6. شبکههای عصبی با تابع پایه شعاعی
بیایید جهت آشنایی با شبکه عصبی مصنوعی آنها را به تفصیل بررسی کنیم:
پرسپترون
پرسپترون یکی از مبانی شبکههای عصبی است و برای وظایف طبقهبندی دودویی به کار میرود. از یک لایه نورونهای مصنوعی تشکیل شده است که دادههای ورودی را دریافت، وزندهی میکند و یک خروجی ارائه میدهد.
پرسپترون زمانی به کار میآید که دادهها با یک خط مستقیم قابل جدا سازی باشند و بر اساس یک مرز تصمیم، ورودیها را دستهبندی میکند. در شناسایی الگوها، طبقهبندی تصاویر و رگرسیون خطی استفاده میشود. اما برای دادههای پیچیده که با یک خط مستقیم جدا نمیشوند، پرسپترون محدودیتهایی دارد.
کاربردهای پرسپترون
• طبقهبندی تصویر: پرسپترونها میتوانند برای وظایف طبقهبندی دودویی تصویر استفاده شوند، مانند شناسایی اینکه یک تصویر شامل یک شی معین است یا نه.
• رگرسیون خطی: پرسپترونها میتوانند برای حل مسائل رگرسیون خطی به کار گرفته شوند، جایی که هدف پیشبینی یک خروجی پیوسته، بر اساس ویژگیهای ورودی است.
چالشهای پرسپترون:
• محدودیت در جدایی خطی: پرسپترونها با دادههایی که به صورت خطی جدا نمیشوند، مشکل دارند چرا که فقط میتوانند مرزهای تصمیم خطی را یاد بگیرند.
• عدم عمق: پرسپترونها فقط یک لایه دارند و نمیتوانند نمایشهای پیچیده سلسلهوار را یاد بگیرند.
شبکههای حافظه کوتاهمدت طولانی (LSTM)
شبکههای LSTM نوعی از شبکههای عصبی بازگشتی هستند که برای شناسایی ارتباطات طولانی مدت در دادههای متوالی طراحی شدهاند. در مقابل شبکههای معمولی، LSTMها سلولهای حافظه و دروازههایی دارند که به آنها کمک میکند تا اطلاعات را به صورت انتخابی حفظ یا فراموش کنند.
این خصوصیت، LSTMها را در مواردی مثل تشخیص گفتار، پردازش زبان طبیعی و تحلیل سری زمانی بسیار مفید کرده است. اما چالشهایی هم وجود دارد، مانند انتخاب بهترین ساختار و تنظیمات، یا مشکلاتی که در طول آموزش با گرادیانهای محوشونده (کاهشی) یا منفجرشونده (افزایشی) روبرو میشویم.
کاربردهای LSTM
• زبانشناسی کامپیوتری: با توانمندی LSTM در فهم دادههای دنبالهدار، این شبکهها در مواردی چون ترجمه زبان، تحلیل احساسات یا ساخت متن جدید به خوبی عمل میکنند.
• تشخیص گفتار: با استفاده از LSTMها، میتوان دادههای صوتی را پردازش کرد و سیستمهای قوی تشخیص صدا ایجاد کرد.
• آنالیز دادههای زمانی: از آنجا که LSTMها توانایی درک وابستگیهای درازمدت در دادهها را دارند، برای مواردی مثل پیشبینی قیمت سهام یا هواشناسی بسیار مفید هستند.
چالشهای LSTM
• گرادیانهای ناپدیدشونده/منفجرشونده: LSTMها ممکن است با مشکل گرادیانهای ناپدیدشونده یا افزایشی مواجه شوند، که این موضوع آموزش آنها را در دنبالههای طولانی دشوار میکند.
• طراحی معماری مناسب: انتخاب یک معماری مناسب برای LSTM، مانند تعداد لایهها و واحدهای پنهان، برای رسیدن به عملکرد بهینه ضروری است.
شبکه عصبی تابع پایه شعاعی (RBF)
شبکه عصبی RBF یک شبکه عصبی رو به جلو است که از توابع پایه شعاعی به عنوان توابع فعالسازی استفاده میکند. شبکههای RBF از چندین لایه تشکیل شدهاند، شامل یک لایه ورودی، یک یا چند لایه پنهان با توابع فعالسازی پایه شعاعی و یک لایه خروجی. شبکههای RBF برای تشخیص الگو، تقریب تابع و پیشبینی سری زمانی مناسب هستند. ولی چالشهای آموزش شبکههای RBF شامل انتخاب توابع پایه مناسب، تعیین تعداد توابع پایه و مواجهه با بیشبرازش میشود.
کاربردهای شبکه عصبی تابع پایه شعاعی (RBF)
• تقریب تابع: شبکههای RBF در تقریب توابع ریاضی پیچیده موثر هستند.
• تشخیص الگو: شبکههای RBF میتوانند برای تشخیص چهره، اثر انگشت و تشخیص کاراکتر استفاده شوند.
• پیشبینی سری زمانی: شبکههای RBF میتوانند وابستگیهای زمانی را مد نظر قرار دهند و در دادههای سری زمانی عمل پیشبینی را انجام دهند.
چالشهای شبکه عصبی با تابع پایه شعاعی (RBF)
• انتخاب تابع پایه: گاهی انتخاب یک تابع پایه شعاعی مناسب برای مشکلات خاص سخت میشود.
• مشخص کردن تعداد توابع پایه: تصمیم گیری در مورد چه تعداد تابع پایه باید در شبکه RBF استفاده شود نیاز به دقت دارد.
• مسئله بیشبرازش: شبکههای RBF گاهی مستعد بیشبرازش هستند، که در این حالت، شبکه فقط روی دادههای آموزش خوب عمل میکند و بر روی دادههای جدید کارایی مطلوبی ندارد.
شبکه عصبی مصنوعی (ANN)
یک پرسپترون (یا نورون) میتواند مانند یک رگرسیون لجستیک تصور شود. شبکه عصبی مصنوعی یا ANN، گروهی از چندین پرسپترون/نورون در هر لایه است. ANN همچنین با نام شبکه عصبی رو به جلو شناخته میشود، زیرا ورودیها فقط به سمت جلو پردازش میشوند:
همانطور که مشاهده میکنید، ANN از سه لایه تشکیل شده است، ورودی، مخفی و خروجی. لایه ورودی دادهها را دریافت میکند، لایه مخفی آنها را پردازش میکند و لایه خروجی نتیجه را تولید میکند. در واقع، هر لایه سعی دارد وزنهای معینی را یاد بگیرد.
ANN میتواند برای حل مشکلات مرتبط با موارد زیر استفاده شود:
• دادههای جدولی
• دادههای تصویری
• دادههای متنی
مزایای شبکه عصبی مصنوعی (ANN)
شبکههای عصبی مصنوعی توانایی یادگیری توابع غیرخطی را دارند، و به همین دلیل، معمولاً به آنها به عنوان “تقریبدهندههای عمومی توابع” اشاره میشود.
ANN قابلیت یادگیری وزنهایی را دارد که هر ورودی را به یک خروجی نگاشت میکند.
یکی از اساسیترین دلایل این قابلیت تقریبزنی، تابع فعالسازی است. این توابع خاصیتهای غیرخطی را به شبکه اضافه میکنند، که این امکان را میدهد تا شبکه روابط پیچیده بین ورودی و خروجی را یاد بگیرد.
همانطور که میبینید، خروجی هر نورون معادل فعالکردن جمع ورودیهای دارای وزن است. اما فرض کنید تابع فعالسازی نباشد؛ در این صورت، شبکه فقط تابع خطی را یاد میگیرد و قادر به درک روابط پیچیده نخواهد بود. پس به این نتیجه میرسیم که:
تابع فعالسازی، جان شبکه عصبی مصنوعی است!
چالش های مرتبط با شبکه عصبی مصنوعی (ANN)
هنگام حل یک مسئله طبقهبندی تصویر با استفاده از ANN، اولین مرحله تبدیل یک تصویر دو بعدی به بردار یک بعدی قبل از آموزش مدل است که دو مشکل را به همراه دارد:
تعداد پارامترهای قابل آموزش با افزایش اندازه تصویر به شدت افزایش مییابد.
در موقعیت بیانشده، اگر اندازه تصویر 224 در 224 باشد، تنها در اولین لایه مخفی با چهار نورون، تعداد پارامترهایی که باید آموزش داده شوند، 602112 است. این تعداد واقعاً هنگفت است!
شبکه عصبی مصنوعی قابلیت تشخیص ویژگیهای مکانی تصاویر را از دست میدهد. با ویژگیهای مکانی، منظور چینش پیکسلهای تصویر است. در قسمتهای آتی به این موضوع، مفصل خواهم پرداخت.
پس، در مورد یک شبکه عصبی عمیق بسیار (شبکهای با تعداد زیادی از لایههای پنهان)، گرادیان همزمان که به عقب پیش میرود، ناپدید میشود یا انفجار میکند، که منجر به ناپدید شدن یا انفجار گرادیان میشود.
• شبکههای عصبی مصنوعی قادر به شناسایی توالی اطلاعات در دادههای ورودی نیستند، که این قابلیت برای کار با دادههای ترتیبی ضروری است.
حال وقت آن است که با دو معماری متفاوت (شبکههای عصبی پیچشی (CNN) و شبکههای عصبی بازگشتی (تکراری) (RNN)) محدودیتهای شبکههای عصبی مصنوعی را برطرف کنیم.
شبکه عصبی بازگشتی (RNN)
اول بیایید تفاوت بین RNN و ANN از نظر معماری را بفهمیم:
با افزودن یک محدودیت حلقهای به لایهی مخفی ANN، آن را به RNN تبدیل میکنیم.
همانطور که مشاهده میکنید، RNN با اتصالات بازگشتی در حالت مخفی عمل میکند. این اتصالات باعث میشوند که اطلاعات متوالی در دادههای ورودی به خوبی شناسایی و ذخیره شوند.
میتوانیم از شبکههای عصبی بازگشتی برای حل مسائل مرتبط با:
• دادههای سری زمانی
• دادههای متنی
• دادههای صوتی
استفاده کنیم.
مزایای شبکه عصبی بازگشتی (RNN)
• RNN اطلاعات متوالی موجود در داده ورودی را جلب میکند، به این معنی که وابستگی بین کلمات در متن هنگام انجام پیشبینیها را مد نظر قرار میدهد:
همانطور که میبینید، خروجی (o1, o2, o3, o4) در هر مرحله زمانی نه تنها بستگی به کلمه فعلی دارد، بلکه به کلمات قبلی نیز وابسته است.
• RNNها پارامترها را بین مراحل زمانی مختلف به اشتراک میگذارند. این ویژگی، که به آن “به اشتراکگذاری پارامتر” میگویند، باعث میشود که تعداد پارامترهایی که نیاز به آموزش دارند کاهش یابد و در نتیجه، هزینههای محاسباتی کمتری ایجاد شود.
همانطور که در شکل بالا نشان داده شده، سه ماتریس وزن U، W و V هستند که بین تمام مراحل زمانی به اشتراک گذاشته میشوند.
مشکلات مرتبط با شبکههای عصبی بازگشتی (RNN)
شبکههای RNN عمیق (RNNهایی با تعداد زیادی مراحل زمانی) نیز از مشکل ناپدید شدن و انفجار گرادیان رنج میبرند، که این مشکل در انواع شبکههای عصبی رایج است.
همانطور که میبینید، گرادیان محاسبه شده در مرحله زمانی آخر هنگام رسیدن به مرحله زمانی اولیه کاهش مییابد و ناپدید میشود.
شبکههای عصبی پیچشی یا CNN
این شبکهها در حوزه یادگیری عمیق بسیار محبوب و پرطرفدار هستند. این مدلها در زمینههای مختلف و به ویژه در پروژههای پردازش تصویر و ویدئو بسیار کاربرد دارند.
ساختارهای اصلی در شبکههای عصبی پیچشی (کانولوشنی)، کرنلها هستند. کرنلها برای استخراج ویژگیهای مهم از داده ورودی با استفاده از عملیات پیچش استفاده میشوند. با استفاده از تصاویر به عنوان داده ورودی، بیایید بفهمیم چرا کرنلها اهمیت دارند. زمانی که یک تصویر با کرنلها مورد پیچش قرار می گیرد، نقشهای از ویژگیها به دست میآید.
اگرچه شبکههای عصبی پیچشی برای حل مشکلات مرتبط با دادههای تصویری معرفی شدند، اما آنها در تقابل با ورودیهای ترتیبی نیز بسیار عملکرد خوبی دارند.
مزایای شبکه عصبی پیچشی (CNN)
• CNN به طور خودکار فیلترها را بهینه میکند، بدون نیاز به تعریف مستقیم آنها. این فیلترها به استخراج ویژگیهای مناسب از داده ورودی کمک میکنند.
• CNN ویژگیهای فضایی یک تصویر را دریافت میکند. ویژگیهای فضایی به ترتیب پیکسلها و رابطه بین آنها در تصویر اشاره دارد. این ویژگیها به ما در تشخیص دقیق یک شیء، مکان آن و همچنین رابطهی آن با دیگر اشیاء در تصویر کمک میکنند.
در تصویر بالا، به راحتی میتوانیم تشخیص دهیم که چهرهی یک انسان است، فقط با ملاحظهی ویژگیهایی مانند چشمها، بینی و دهان. همچنین میتوانیم بفهمیم که چگونه این ویژگیها در تصویر قرار گرفتهاند. این دقیقاً همان چیزی است که شبکههای پیچشی قادر به شناسایی آن هستند.
• همچنین، شبکههای عصبی پیچشی از مفهوم اشتراک گذاری پارامترها پیروی میکنند. یک فیلتر واحد بر روی قسمتهای مختلفی از ورودی اعمال میشود تا نقشه ویژگی ایجاد کند.
با کشیدن یک فیلتر 3×3 بر روی قسمتهای مختلف تصویر، یک نقشه ویژگی به ابعاد 2×2 ساخته میشود.
مقایسه انواع مختلف شبکههای عصبی (MLP (ANN) در مقابل RNN و CNN)
در اینجا، من برخی از تفاوتهای میان انواع مختلف شبکههای عصبی را خلاصه کردهام:
سوالات متداول
۱. چه تعدادی از شبکههای عصبی وجود دارد؟
جواب: چندین نوع از شبکههای عصبی که برای مسائل و کاربردهای مختلف طراحی شدهاند، وجود دارد. مثل شبکههای عصبی مصنوعی (ANN)، شبکههای عصبی پیچشی (CNN) و شبکههای عصبی بازگشتی (RNN).
۲. سه نوع یادگیری در شبکههای عصبی چیست؟
جواب: انواع اصلی یادگیری در شبکههای عصبی شامل یادگیری تحت نظارت، یادگیری بینظارت و یادگیری تقویتی می باشد.
۳. RNN و CNN چیست؟
جواب: RNN یک شبکه عصبی است که برای پردازش دادههای متوالی طراحی شده و وابستگیهای زمانی را در دادهها دریافت میکند. از سوی دیگر، CNN برای دادههای گریدبندی شده مانند تصاویر ساخته شده و با استفاده از فیلترها، الگوها را استخراج میکند.
۴. تفاوت بین CNN و ANN چیست؟
جواب: CNN عمدتاً برای مسائل مرتبط با تصویر مورد استفاده قرار میگیرد و از لایههای پیچشی برای استخراج ویژگیها استفاده میکند، در حالی که ANN یک عبارت کلی برای مجموعهای از شبکههای عصبی است که میتواند در مجموعه گستردهای از مسائل مورد استفاده قرار گیرد.
نتیجه گیری
در این مقاله، به بررسی اهمیت یادگیری عمیق و تمایز بین شبکههای عصبی مختلف پرداختهایم. معتقدم که به اشتراک گذاشتن دانش، عالیترین روش یادگیری است. بسیار مشتاقم تا از شما نیز نظرات و تفاوتهای جدیدتری بشنوم!