آموزش شبکه‌های عصبی

آموزش شبکه‌های عصبی

 تا اینجا از ساختار شبکه‌های عصبی صحبت کردیم. گفتیم که شبکه‌های عصبی می‌توانند بر اساس طراحی خود سیگنال‌های ورودی را پردازش کنند و به سیگنال‌های خروجی مورد نظر تبدیل نمایند. به طور معمول، پس از آنکه یک شبکه عصبی طراحی و پیاده‌سازی شد، باید پارامترهای w و b (که قبلاً معرفی کردیم) به ازای مجموعه‌هایی از سیگنال‌های ورودی، به‌گونه‌ای تنظیم شوند که سیگنال‌های خروجی شبکه خروجی مطلوب را تشکیل دهند. چنین فرایندی را آموزش دیدن شبکه عصبی می‌نامند (در نخستین مرحله آموزش، مقادیر w و b  به‌طور تصادفی انتخاب می‌شوند. زیرا تا این پارامترها مقدار نداشته باشند، شبکه عصبی قابل استفاده نخواهد بود) در حین آموزش دیدن شبکه عصبی (یعنی به تدریج همزمان با افزایش دفعاتی که مقادیر پارامترها برای رسیدن به خروجی مطلوب‌تر، تنظیم می‌شوند) مقدار پارامتر‌‌ها به مقدار حقیقی و نهایی خود نزدیک‌تر می‌شوند.

به‌طور کلی دو روش برای آموزش دادن شبکه‌های عصبی وجود دارد. روش Supervised و روش Unsupervised. روش نخست، شامل مراحلی است که در بخش قبل، به‌طور مختصر تشریح شد. اما در روش Unsupervised ، شبکه عصبی باید بدون کمک گرفتن از جهان خارج، بتواند کار آموزش را انجام دهد.

 واقعیت آن است که در عمل از روش Supervised  و یا حداکثر از روش‌های ترکیبی استفاده می‌شود و فرایند آموزش Unsupervised به شکل خالص تنها وعده‌ای است که شاید در آینده بتواند تحقق یابد.
در حال حاضر و در کاربردهای پیشرفته، از روش آموزش Unsupervised برای ایجاد تنظیمات اولیه بر روی سیگنال‌های ورودی شبکه‌های عصبی استفاده می‌شود و باقی مراحل آموزش شبکه به روش Supervised  ادامه می‌یابد.
همان‌طور که قبلاً اشاره کردیم، در روش معمول آموزش شبکه‌های عصبی، از مجموعه‌ شناخته‌شده‌ای از داده‌های ورودی و خروجی‌های متناظر آنها (Training Set Data) برای آموزش دادن شبکه استفاده می‌شود. در چنین فرایندی، پس از اعمال مجموعه‌های داده‌های آموزشی، پارامترهای شبکه به تدریج به سمت مقادیر نهایی خود همگرا می‌شوند.

بسته‌های نرم‌افزاری پیشرفته تولید و طراحی شبکه‌های عصبی، دارای ابزارهایی هستند که بر روند آموزش شبکه مدیریت و پروژه متلب می‌کنند. چنین ابزارهایی می‌توانند سرعت همگرایی پارامتر‌های شبکه را زیر نظر بگیرند و به عنوان مثال، اجازه دهند که پارامترهای یک شبکه مشخص، در طول چندین روز به دقت کافی و مورد نظر طراحان خود برسد.
در مواردی ممکن است که شبکه‌ عصبی اصولاً موفق به فراگیری نشود. بدین معنی که پارامترهای شبکه پس از زمان‌های طولانی به مقدار مشخصی همگرا نشود. چنین مواردی ممکن است بر اثر ناکافی بودن داده‌های آموزشی و یا اصولاً نقص طراحی شبکه ایجاد شوند. حتی مواردی در عمل وجود دارند که شبکه عصبی مشخصی، بر اثر آموزش بیش از حد، اصطلاحا Over Trained شود. توجه داشته باشید که فرایند آموزش شبکه‌های عصبی فقط به ازای زیر مجموعه‌ای از داده‌هایی که قرار شبکه آنها را در کاربرد حقیقی خود پردازش کند، آموزش داده می‌شوند. درصورتی‌که تعداد داده‌های آموزشی یک شبکه عصبی بیش از اندازه زیاد باشد (در واقع از تمامی داده‌های مسئله برای آموزش دادن به شبکه استفاده شود)، شبکه عصبی به جای آنکه آموزش ببیند، به حالتی می‌رسد که به آن حفظ کردن اطلاعات می‌گویند. در واقع به جای آنکه یک شبکه عصبی برای حل مسئله از هوش خود کمک بگیرد، از محفوظات خود استفاده می‌کند!
پس از آنکه یک شبکه عصبی به اندازه کافی آموزش دید، طراح یا کاربر شبکه می‌تواند پارامترهای شبکه را قفل کند (هر چند که در مواردی پارامترهای شبکه آزاد گذارده می‌شوند تا در طول کاربرد واقعی بازهم شبکه آموزش ببیند). در این مرحله شبکه عصبی برای کاربرد واقعی خود و حل مسائل آماده خواهد بود. در برخی از ابزارهای تولید و طراحی شبکه‌های عصبی، کل شبکه عصبی به همراه پارامترهای قفل شده آن، تبدیل به نرم‌افزار مستقلی (مثلاً یک فایل dll) می‌شوند که می‌توان از آن در پروژه‌های مشخصی استفاده کرد. در برخی از موارد دیگر، چنین شبکه‌هایی پس از آموزش دیدن، به شکل سخت‌افزاری در قالب یک مدار مجتمع (IC) به تولید انبوه یا نیمه انبوه می‌رسند.