شبکههای عصبی به عنوان یکی از پرکاربرد ترین متدهای مبتنی بر یاد گیری کاربرد فراگیری دارد. مهمترین مسئله در یادگیری بخش آمورش است. آموزش معمولاً با یک بخش از داده های جامعه آماری انجام و نتایج به دست آمده بر روی بقیه داده ها محک زده می شوند. آموزش در شبکه عصبی مبتنی بر دورههای آموزشی یا epoch می باشد که در این مقاله از مجله پی استور به توضیح آن خواهیم پرداخت.
مقدمهای بر شبکه عصبی مصنوعی
شبکه عصبی مصنوعی «Artificial Neural Networks» یک الگوریتم یادگیری ماشین تحت نظارت «Supervised Learning» است. شبکههای عصبی را میتوان برای حل مسائل طبقهبندی «Classification» یا رگرسیون «Regression» آموزش داد. با این حال، استفاده از شبکههای عصبی برای یک مسئله یادگیری ماشین مزایا و معایب خود را دارد.
ساخت یک مدل شبکه عصبی مستلزم پاسخگویی به بسیاری از سوالات معماری محور است. بسته به پیچیدگی مسئله و داده های موجود، می توانیم شبکه های عصبی را با اندازه ها و عمق های مختلف آموزش دهیم. علاوه بر این، ما باید ویژگی های ورودی خود را از قبل پردازش کنیم، وزن ها را مقداردهی اولیه کنیم، در صورت نیاز بایاس اضافه کنیم و توابع فعال سازی مناسب را انتخاب کنیم.
یادگیری در یک شبکه عصبی چگونه انجام می گیرد؟
یادگیری در شبکههای عصبی از طریق فرآیندی به نام پس انتشار «Backpropagation» اتفاق می افتد، که شامل تنظیم وزن شبکه بر اساس خطا یا تلفاتی است که در طول عبور به جلو ایجاد می کند. مراحل اصلی در فرآیند یادگیری به شرح زیر است:
- عبور به جلو (انتشار رو به جلو): شبکه عصبی روی مجموعهای از ورودیها (به عنوان مثال، نمونههای آموزشی) با انتشار دادههای ورودی در لایههای شبکه پیشبینی میکند. در طول این عبور، شبکه تبدیل های خطی (مجموع وزنی) و توابع فعال سازی غیر خطی را برای محاسبه خروجی اعمال می کند.
- محاسبه زیان: شبکه یک مقدار اسکالر به نام زیان را محاسبه میکند که تفاوت بین پیشبینیهای شبکه و اهداف واقعی (مثلاً برچسبهای کلاس) را کمی میکند. توابع زیان متداول شامل آنتروپی متقاطع برای وظایف طبقه بندی و میانگین مربعات خطا برای وظایف رگرسیون است.
- گذر به عقب (پس انتشار): شبکه شیب تلفات را با توجه به هر یک از وزن های شبکه با استفاده از قانون زنجیره تمایز محاسبه می کند. این شیب ها جهت و میزان تغییرات مورد نیاز برای کاهش تلفات را نشان می دهد.
- به روز رسانی وزن ها: شبکه وزن های خود را بر اساس گرادیان های محاسبه شده و یک فراپارامتر نرخ یادگیری به روز می کند که اندازه گام را در طول فرآیند بهینه سازی تعیین می کند. یک قانون بهروزرسانی رایج، گرادیان نزول است که وزنها را در جهت مخالف گرادیان تنظیم میکند تا زیان به حداقل برسد.
- تکرار: مراحل ۱-۴ برای چندین دوره یا تکرار در داده های آموزشی تکرار می شود. در طول این فرآیند تکراری، شبکه یاد میگیرد که زیان را به حداقل برساند و پیشبینیهای خود را بهبود بخشد.
برای بهبود فرآیند یادگیری در شبکه های عصبی می توان از تکنیک ها و استراتژی های مختلفی استفاده کرد، مانند:
- مقداردهی اولیه: مقداردهی اولیه دقیق وزن ها می تواند به شبکه کمک کند تا سریعتر یاد بگیرد و به راه حل های بهتر همگرا شود.
- منظمسازی: تکنیکهایی منظمسازی مانند L1 و L2، انصراف و توقف زودهنگام با افزودن یک عبارت جریمه به تابع زیان یا وارد کردن تصادفی بودن در فرآیند تمرین، به جلوگیری از بیش برازش کمک میکنند.
- الگوریتمهای بهینهسازی: الگوریتمهای بهینهسازی پیشرفتهتر، مانند Adam و RMSProp، نرخ یادگیری را در طول آموزش تطبیق میدهند که میتواند منجر به همگرایی سریعتر و بهبود عملکرد شود.
- زمانبندیهای نرخ یادگیری: تنظیم نرخ یادگیری در حین آموزش، چه با استفاده از یک برنامه زمانبندی ثابت چه بر اساس عملکرد اعتبارسنجی، میتواند به همگرایی شبکه به سمت راهحلهای بهتر کمک کند.
- نرمال سازی دسته ای: این تکنیک فعال سازی هر لایه را نرمال می کند که می تواند شبکه را در طول آموزش سریعتر و پایدارتر کند.
به طور خلاصه، یادگیری در شبکههای عصبی شامل محاسبه گرادیانهای زیان با توجه به وزنها و بهروزرسانی وزنها بر اساس این گرادیانها برای به حداقل رساندن زیان است. این فرآیند تکراری به شبکه اجازه میدهد تا از دادههای آموزشی یاد بگیرد و پیشبینیهای دقیقتری روی دادههای دیده نشده انجام دهد.
دوره یا Epoch در شبکه های عصبی چیست؟
در بخش قبل به شرح فرایند یادگیری در شبکه عصبی پرداخته شد، فرآیند یادگیری در دوره های تکراری انجام می گیرد، اما منظور از یک دوره چیست؟
در زمینه شبکه های عصبی، یک دوره به یک گذر از کل مجموعه آموزشی در طول فرآیند آموزش اشاره دارد. به عبارت دیگر، یک دوره یک تکرار کامل در تمام نمونههای آموزشی است که در آن شبکه عصبی وزنهای خود را بر اساس نمونههایی که با آن مواجه میشود، یاد میگیرد و به روز میکند.
آموزش یک شبکه عصبی معمولاً شامل چندین دوره است، زیرا شبکه به طور مکرر پیش بینی های خود را در طول زمان یاد می گیرد و بهبود می بخشد. در طول هر دوره، شبکه پیشبینیهایی را روی نمونههای آموزشی انجام میدهد، خطا یا ضرر را محاسبه میکند و وزنهای خود را با استفاده از یک الگوریتم بهینهسازی مبتنی بر گرادیان مانند نزول گرادیان تصادفی (SGD) بهروزرسانی میکند.
تعداد دوره های مورد نیاز برای آموزش یک شبکه عصبی به عوامل مختلفی مانند پیچیدگی کار، اندازه مجموعه آموزشی، نرخ یادگیری و معماری شبکه بستگی دارد. یک رویکرد متداول این است که عملکرد شبکه را در یک مجموعه اعتبار سنجی جداگانه در طول آموزش نظارت کنیم و هنگامی که عملکرد اعتبارسنجی شروع به بدتر شدن یا بالا رفتن کرد، آموزش را متوقف کنیم.
توجه به این نکته مهم است که اصطلاح “دوره” مختص شبکه های عصبی نیست و در سایر زمینه های یادگیری ماشین و بهینه سازی نیز استفاده می شود. به طور کلی، یک دوره نشان دهنده عبور کامل از یک مجموعه داده یا مجموعه ای از تکرارها در یک فرآیند بهینه سازی است.
تعداد دوره ها به چه عواملی بستگی دارد؟
تعداد دوره های مورد نیاز برای آموزش شبکه عصبی به عوامل مختلفی بستگی دارد، از جمله:
- پیچیدگی کار: کارهای پیچیدهتر، مانند طبقهبندی تصویر یا درک زبان طبیعی، معمولاً به دورههای بیشتری برای آموزش مؤثر شبکه نیاز دارند. کارهای ساده تر ممکن است به دوره های کمتری نیاز داشته باشد.
- اندازه مجموعه آموزشی: مجموعه داده های بزرگتر معمولاً به دوره های بیشتری نیاز دارند تا اطمینان حاصل شود که شبکه الگوهای اساسی در داده ها را یاد گرفته است. مجموعه دادههای کوچکتر ممکن است به دورههای کمتری نیاز داشته باشند، اما اگر شبکه برای دورههای بیش از حد آموزش داده شود، خطر بیش برازش وجود دارد.
- معماری مدل: پیچیدگی و اندازه شبکه عصبی می تواند بر تعداد دوره های مورد نیاز برای آموزش تأثیر بگذارد. شبکههای عمیقتر یا شبکههایی با لایهها و پارامترهای بیشتر معمولاً به دورههای بیشتری نیاز دارند تا به یک راهحل بهینه همگرا شوند.
- نرخ یادگیری: نرخ یادگیری یک فراپارامتر حیاتی است که تعیین می کند وزن شبکه در طول هر تکرار چقدر به روز می شود. نرخ یادگیری کمتر ممکن است به دورههای بیشتری برای همگرایی نیاز داشته باشد، در حالی که نرخ یادگیری بزرگتر میتواند سریعتر همگرا شود، اما همچنین ممکن است خطر بیش برازش یا واگرایی آموزش را ایجاد کند.
- توابع اولیه و فعال سازی وزن: مقداردهی اولیه وزن مناسب و انتخاب توابع فعال سازی می تواند بر سرعت همگرایی و تعداد دوره های مورد نیاز برای تمرین تأثیر بگذارد.
- منظمسازی و سایر تکنیکها: تکنیکهایی مانند منظمسازی L1/L2، انصراف و توقف زودهنگام میتوانند بر پویایی تمرین و تعداد دورههای مورد نیاز برای همگرایی تأثیر بگذارند.
- سخت افزار و منابع محاسباتی: تعداد دوره ها نیز ممکن است توسط سخت افزار و منابع محاسباتی موجود محدود شود، زیرا آموزش شبکه عصبی می تواند از نظر محاسباتی پرهزینه و وقت گیر باشد.
به طور معمول، تعداد دوره ها به صورت پیشینی تنظیم نمی شود، بلکه بر اساس همگرایی مدل و عملکرد آن در یک مجموعه اعتبارسنجی تعیین می شود. تمرین معمولاً زمانی متوقف میشود که عملکرد اعتبارسنجی شروع به بدتر شدن یا بالا رفتن میکند، که نشان میدهد آموزش بیشتر ممکن است به بیش برازش منجر شود.
بیش برازش (overfitting) چیست و چه زمانی اتفاق می افتد؟
انتخاب تعداد دورهای کم یا زیاد بر اساس موارد ذکر شده در بخش قبل باعث بروز مشکل بیش برازش می شود که در اینجا به این موضوع خواهیم پرداخت.
بیش برازش یک مشکل رایج در یادگیری ماشینی است، جایی که یک مدل دادههای آموزشی را خیلی خوب یاد میگیرد و روی دادههای دیده نشده، مانند اعتبارسنجی یا مجموعههای تست، ضعیف عمل میکند. به عبارت دیگر، یک مدل با بیش برازش، دقت بالایی بر روی داده های آموزشی دارد اما نمی تواند به خوبی به داده های جدید و دیده نشده تعمیم یابد.
بیش برازش زمانی اتفاق میافتد که یک مدل بیش از حد پیچیده باشد، مانند داشتن لایهها یا پارامترهای بیش از حد، یا زمانی که برای دورههای زیادی آموزش داده شده باشد. در این موارد، مدل ممکن است نه تنها الگوهای اساسی در دادهها، بلکه نویز، نوسانات تصادفی یا نقاط پرت موجود در مجموعه آموزشی را نیز بیاموزد. این منجر به مدلی می شود که برای داده های آموزشی بسیار تخصصی است و روی داده های جدید عملکرد خوبی ندارد.
در اینجا چند ویژگی کلیدی بیش برازش وجود دارد:
- دقت بالا در داده های آموزشی: یک مدل با بیش برازش معمولاً دقت بسیار بالایی در مجموعه آموزشی دارد، زیرا داده ها را تقریباً بی نقص یاد گرفته است.
- عملکرد ضعیف در داده های دیده نشده: با وجود دقت بالا در داده های آموزشی، یک مدل بیش برازش شده در اعتبار سنجی، آزمایش یا هر داده دیده نشده دیگر ضعیف عمل می کند. این به این دلیل است که نویز و داده های نامعتبر را در داده های آموزشی یاد گرفته است که برای داده های جدید اعمال نمی شود.
- مدل بیش از حد پیچیده: بیش برازش اغلب نتیجه استفاده از مدلی است که برای کار معین بسیار پیچیده است، با لایهها، نورونها یا پارامترهای بسیار زیاد. مدل ممکن است جزئیات دقیق و نویز در داده های آموزشی را یاد بگیرد که به نمونه های جدید تعمیم نمی یابد.
- آموزش بیش از حد: آموزش یک مدل برای دوره ها یا تکرارهای بیش از حد می تواند منجر به تطبیق بیش از حد شود، زیرا مدل ممکن است در نهایت اگر نمونه های کافی برای تعمیم نداشته باشد شروع به یادگیری نویز در داده ها کند.
برای رفع بیش از حد، چندین تکنیک را می توان به کار گرفت، مانند:
- منظمسازی: تکنیکهایی مانند منظمسازی L1 و L2 یک عبارت جریمه به تابع ضرر اضافه میکنند و مدل را از یادگیری الگوهای بیش از حد پیچیده منصرف میکنند.
۲.انصراف(Dropout)Dropout: به طور تصادفی کسری از نورون ها را در طول آموزش رها می کند و به طور موثر معماری شبکه متفاوتی را برای هر تکرار ایجاد می کند. این به جلوگیری از تکیه بیش از حد مدل به نورونهای خاص کمک میکند و یادگیری ویژگیهای توزیعشدهتر را ترویج میکند.
- توقف زودهنگام: با نظارت بر عملکرد مدل بر روی یک مجموعه اعتبارسنجی در طول آموزش، میتوانید فرآیند آموزش را زمانی که عملکرد اعتبارسنجی شروع به بدتر شدن یا بالا رفتن میکند، متوقف کنید، که به جلوگیری از بیش برازش کمک میکند.
- تقویت داده ها: افزایش مقدار و تنوع داده های آموزشی می تواند به بهبود توانایی مدل در تعمیم کمک کند.
- استفاده از مدلهای سادهتر: انتخاب مدلی با پیچیدگی مناسب برای کار میتواند به جلوگیری از برازش بیش از حد کمک کند. مدلهای سادهتر با لایهها یا پارامترهای کمتر ممکن است بهتر به دادههای جدید تعمیم داده شوند، به خصوص زمانی که مجموعه آموزشی کوچک باشد.
به طور خلاصه، بیش برازش یک نگرانی مهم در یادگیری ماشین است، زیرا منجر به مدلهایی میشود که در دادههای آموزشی عملکرد خوبی دارند، اما نمیتوانند به دادههای دیده نشده تعمیم دهند. پرداختن به برازش بیش از حد شامل انتخاب دقیق پیچیدگی مدل، به کارگیری تکنیک های منظم سازی، و نظارت بر عملکرد مدل در یک مجموعه اعتبار سنجی جداگانه در طول آموزش است.
سخن آخر
فرآیند یادگیری در شبکه های عصبی در دوره های آموزشی تحت عنوان epoch انجام می گیرد به بطور خلاصه یک دوره یک تکرار کامل در تمام نمونههای آموزشی است که در آن شبکه عصبی وزنهای خود را بر اساس نمونههایی که با آن مواجه میشود، یاد میگیرد و به روز میکند. تعداد تکرار این دوره ها به عوامل مختلفی مانند معماری مدل، حجم دادها ، قدرت محاسباتی پردازنده ها و …. بستگی دارد. نحوه اجراو تعداد تکرار دوره ها مشکل متداولی تحت عنوان بیش برازش ایجاد می کند که باعث می شود مدل برای داده های آموزشی نتایج بیش از حد خوب و برای داده های تست نشده نتایج ضعیفی تولید کند.