آموزش دادن شبکه عصبی با الگوریتم های فراابتکاری – پادکست پرسش و پاسخ


شبکههای عصبی از جمله روشهای پرکاربرد در حوزه «یادگیری ماشین» (Machine Learning) محسوب میشوند. روش آموزش دادن شبکههای عصبی یکی از موضوعاتی است که دانشجویان زیادی پیرامون آن به طرح پرسش میپردازند. پیش از این در مطلب «آموزش دادن شبکه عصبی در متلب — پادکست پرسش و پاسخ» نیز به یکی از پرسشهای متداول مربوط به این حوزه پرداخته شد. یکی دیگر از پرسشهایی که در این زمینه مطرح میشود، درست یا غلط بودن آموزش دادن شبکه عصبی با استفاده از الگوریتم های فراابتکاری است. در این پادکست پرسش و پاسخ که نسخه متنی آن نیز در همین مطلب موجود است، دکتر «سید مصطفی کلامی هریس»، به این مبحث پرداخته است. البته، منبع اصلی همچنان فایل صوتی محسوب میشود.
پادکست پیرامون آموزش دادن شبکه عصبی با الگوریتم های فراابتکاری
ذخیره کردن این فایل صوتی: لینک دانلود
نسخه نوشتاری
یکی از دانشجویان پرسشی را مطرح کردهاند مبنی بر اینکه: «آیا معقول است که برای آموزش دادن «شبکه عصبی» (Artificial Neural Network | ANN) از «الگوریتمهای فراابتکاری» (Metaheuristics)، مثلا «الگوریتم کلونی مورچگان» (Ant Colony Optimization)، استفاده شود؟». در پاسخ به این پرسش باید گفته که برای آموزش دادن شبکههای عصبی، الگوریتمهای کلاسیک زیادی وجود دارد که عملکرد خوبی دارند و هر روز نیز بهبود پیدا میکنند. همچنین، با توجه به ماهیت خود شبکه عصبی و شیوه ارتباط متغیرها با یکدیگر، دستهای از روشها که با عنوان «پسانتشار» (Backpropagation) طبقهبندی میشوند، به مراتب نسبت به الگوریتمهای تکاملی بهتر عمل میکنند.
زیرا از مقداری اطلاعات زمینهای یا «هیوریستیک» (Heuristic) نیز استفاده میکنند. همچنین، به دلیل استفاده از روشهای ریاضی کلاسیک، سریعتر نیز هستند و حقیقتا بسیاری از اوقات، الگوریتمهای تکاملی نمیتوانند به خوبی این روشها عمل کند، مگر اینکه کاربر تابع هزینه خاص و در واقع، شاخص کارایی خاصی (Performance Indicator) را روی شبکه عصبی تعریف کرده باشد.
در غیر این صورت، با یک مثلا «شاخص میانگین مربعات خطا» (Mean Squared Error Index | MSE) عملا میتوان بهترین جواب را با بهرهگیری از الگوریتمهای کلاسیک به دست آورد. اغلب، این الگوریتمها که با عنوان الگوریتمهای کلاسیک شناخته شدهاند، الگوریتمهای فراابتکاری و تکاملی را «OverPerform» و در واقع، خیلی بهتر از آنها کار میکنند. به همین دلیل، فکر میکنم آموزش دادن شبکه عصبی با الگوریتم های فراابتکاری انتخاب مناسبی نیست. حالا بعضا این مرسوم است که به خاطر اصطلاحا زیاد کردن پیاز داغ، در بعضی از مقالهها، این ترکیب را انجام میدهند که واقعا هم خیلی وقتها پاسخ نمیدهد. البته انجام این کار را به طور کامل نفی نمیکنم، ولی در اغلب مواردی که چنین کاری انجام میشود، صرفا به خاطر این است که گفته شود دو روش با یکدیگر ترکیب شدهاند.
اما باید توجه داشت که هر ترکیبی الزاما درست و مناسب نیست و واقعا الگوریتمهای کلاسیک برای آموزش دادن شبکه عصبی و «شبکه عصبی فازی» (Fuzzy Neural Network) میتوانند پاسخ به مراتب بهتری داشته باشند. به همین دلیل، انجام این کار توصیه نمیشود، ولی آن را نفی هم نمیکنم. هنگامی که کاربر دادههای زیادی داشته باشد، موضوع «مقادیر ناموجود» (Missing Values) مطرح باشد، «تابع فعالسازی» (Activation Function) و یا شاخص کارایی چیزی باشد که به صورت عادی استفاده نمیشود و چیزهای دیگری به آن اضافه شده باشند، اینها حالاتی هستند که انجام این کار را توجیهپذیر میکنند. ولی در حالت عادی و برای حل یک مسئله عادی، واقعا استفاده از الگوریتمهای فراابتکاری برای آموزش دادن شبکه عصبی نه توصیه میشود و نه این کار جواب خوبی میدهد و نه بعضا وجهه خوبی دارد. به طور کلی هدف از ارائه این توضیحات بیان این موضوع بود که هر ترکیبی الزاما مناسب، خوب و علمی محسوب نمیشود.
برای دانلود کردن و شنیدن دیگر پادکستهای دکتر سید مصطفی کلامی هریس در مجله فرادرس، روی این لینک [+] کلیک کنید.
اگر نوشته بالا برای شما مفید بوده است، آموزشهای زیر نیز به شما پیشنهاد میشوند:
- مجموعه آموزشهای شبکههای عصبی مصنوعی
- آموزش شبکههای عصبی مصنوعی در متلب
- مجموعه آموزشهای الگوریتمهای بهینهسازی هوشمند
- ساخت شبکه عصبی (Neural Network) در پایتون — به زبان ساده
- محاسبات تکاملی چیست؟ — به زبان ساده
^^