اطلاعیه

Collapse
No announcement yet.

چگونگی تعیین مقدار پارامتر epoch

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    چگونگی تعیین مقدار پارامتر epoch

    سلام دوستان
    من می خواستم بدونم مقدار پارامتر epoch در train شبکه عصبی بر چه اساسی تعیین میشه؟
    اگر دیگران توانستند
    ناامید نباش
    تو هم می توانی، اگر توانستی
    مغرور نباش
    دیگران نیز می توانند...

    #2
    پاسخ : چگونگی تعیین مقدار پارامتر epoch

    در هر بار فرایند Training در یک شبکه عصبی همه داده های آموزشی به شبکه اعمال و وزنهای شبکه اصلاح شده و شرط خاتمه اموزش که معمولا میزان خطا برای داده های تست است بررسی میشود. که این میشود یک epoch حال فرض کنید که هیچگاه شبکه به دقت دلخواه ما نرسد برای خاتمه آموزش باید تعداد پارامتر epoch هم محدود باشد. تا آموزش شبکه در حلقه بینهایت نیفتد.
    تعیین این پارامتر یک رابطه دقیق و منظم ندراه ولی یکسری نکات تجربی باید در نظر گرفته بشه
    1- هرچقدر هم تعداد epoch ها زیاد باشد وقتی شبکه به همگرایی مورد نظر ما برسد فرایند آموزش متوقف میشود. در toolbox های اماده بدین گونه است و اگر خود شما کدنویسی کنید هم باید این نکته را رعایت کنید.
    2- اگر تغییرات خطا در هر epoch رو بصورت یک منحنی در نظر بگیریم اگر نرخ تغییرات کاهشی با سرعت مناسب ما باشد میتوانیم تعداد epoch ها را زیادتر کنیم. ولی اگر منحنی تغییرات خطا تقریبا مسطح باشد افزایش تعداد epoch ها ممکنه باعث overfitting بشه.
    3- به عنوان یک قانون کلی هرچه تعداد داده ها را بیشتر کنیم تعداد epoch ها را میتوانیم کمتر کنیم.
    4- و نیز هرچه ابعاد شبکه بزرگتر باشد ( در دو شبکه با تعداد داده های آموزشی یکسان) تعداد epoch ها بهتر است بیشتر باشد.
    مهم نیست چه مدرکى دارید
    مهم این است که چه درکى دارید . . .

    دیدگاه


      #3
      پاسخ : چگونگی تعیین مقدار پارامتر epoch

      خیلی ممنون از راهنماییتون.خیلی مفید بود. :nerd:
      فقط من مورد دوم رو خیلی خوب متوجه نشدم.اگه شبکه بعد از آموزش کافی متوقف میشه پس چرا مقدار زیادepochباعث آورفیتینگ میشه؟؟ شبکه من پرسپترون3لایه است.ماتریس ورودیش9در80هست. مقدارepochرو3500دادم.توی یکی از اجراهابعداز343باراجرامتوقف شد.نمودار خطاش در تکرار111به کمترین مقدارخطارسیده.تا این تکرار به صورت نزولی رفته وبه بعدش به صورت تقریبا زیگزاگ صعودی با شیب کم رفته.
      مقدارشوبایدکم کنم؟؟
      اگر دیگران توانستند
      ناامید نباش
      تو هم می توانی، اگر توانستی
      مغرور نباش
      دیگران نیز می توانند...

      دیدگاه


        #4
        پاسخ : چگونگی تعیین مقدار پارامتر epoch

        در مورد بند دوم باید بگم که زمانی که این حالت اتفاق میفته وزنهای شبکه بیشتر داده های آموزشی رو یاد میگیرند و در حالی که خروجی مناسبی برای داده های آموزشی و تست مورد استفاده دارند در مورد داده های دیگر که ممکن است بعدا به شبکه اعمال شوند خروجی مناسبی ارائه ندهند و در این حالت میگوییم که over fitiingرخ داده است. به همین خاطر بعد از اینکه خطا در طی فرایند آموزش تغییر نکرد. بهتر است اموزش متوقف شود.
        یعنی میفرمایید پارامترهای ورودی شبکه 9 و خروجی 1 عدد است. و تعداد داده های آموزشی 80 ؟
        این تعداد داده آموزشی برای شبکه 9 ورودی و یک خروجی فکر میکنم کم باشه و اگر نوع داده های شما طوریه که نمیتونید تعداد داده ها رو افزایش بدید. بهتره تعداد Epoch ها رو افزایش ندید چون همون طور که عرض کردم در چنین حالاتی یعنی شبکه با ابعاد بزرگ و تعداد داده های آموزشی کم احتمال اورفیتیگ زیاده.
        یک مثال برای درک بهتر موضوع میزنم
        فرض کنید شبکه ما میخواد تابع y=x^2 رو تقریب بزنه پس ما یک پارامتر ورودی داریم و یک پارامتر خروجی فرض کنید داده های اموزشی ما به قرار زیر باشند
        (2 , 4)
        (3 , 9)
        (2- , 4)
        (3- , 9)
        حال اگر یک شبکه mlp را برای این داده ها در نظر بگیریم اگر epoch های اموزش را خیلی زیاد کنیم تقریب تابع بصورت یکسری خطوط راست که نقاط مورد نظر را به هم وصل میکند خواهد شد. و با وجود اینکه برای این داده ها خطای بسیار کمی میدهد برای داده های دیگر خطاهای بیشتری را خواهد داد نسبت به حالت با epoch کمتر
        مثلا برای نقطه (0,0) در حالتی که فرایند اموزش خیلی تکرار شود خطا خیلی زیاد میشود ولی با تکرار کمتر داده های اموزشی در این نقطه خطای کمتری را خواهیم داشت.
        در ضمن شما وقتی در 343 اموزش شبکه متوقف شده epoch رو هر مقداری بزرگتر از اون بزارید هیچ تاثیری نداره
        مهم نیست چه مدرکى دارید
        مهم این است که چه درکى دارید . . .

        دیدگاه


          #5
          پاسخ : چگونگی تعیین مقدار پارامتر epoch

          نوشته اصلی توسط e0l0h0a0m
          خیلی ممنون از راهنماییتون.خیلی مفید بود. :nerd:
          فقط من مورد دوم رو خیلی خوب متوجه نشدم.اگه شبکه بعد از آموزش کافی متوقف میشه پس چرا مقدار زیادepochباعث آورفیتینگ میشه؟؟ شبکه من پرسپترون3لایه است.ماتریس ورودیش9در80هست. مقدارepochرو3500دادم.توی یکی از اجراهابعداز343باراجرامتوقف شد.نمودار خطاش در تکرار111به کمترین مقدارخطارسیده.تا این تکرار به صورت نزولی رفته وبه بعدش به صورت تقریبا زیگزاگ صعودی با شیب کم رفته.
          مقدارشوبایدکم کنم؟؟
          همونطور که میدونید فرآیند مینیمم سازی خطا یک تابع هدف هست که باید بهینه سازی بشه ، تو این بهینه سازی شما وقتی به مینمم Global رسیدید دیگه نیازی به ادامه ی آموزش وجود نداره که این رو وقتی میفهمیم که مقدار خطا روند صعودی به خودش میگیره

          در الگوریتم هایی آموزش اصلاح شده ای مثل VLR هم اصل تعیین پارامتری مثل نرخ آموزش (آلفا) بر اساس شیب خطا صورت میگیره و در صورت افزایش خطا ، آموزش با شیب و نرخ کند صورت خواهد گرفت یا حتی متوقف میشود. بنابراین اصل در مینمم کردن خطاست و در صورت تحقق این شرط (بسته به میزان دقت مورد نیاز خود شما) ، ادامه ی فرآیند آموزش بیهوده و حتی مضرر (در صورت افزایش خطا و افتادن در فازهای نوسانی یا مینمم های محلی) خواهد بود.

          دیدگاه


            #6
            پاسخ : چگونگی تعیین مقدار پارامتر epoch

            خیییییییییلی ممنون. :smile:
            پس آورفیتینگ یعنی آموزش ما اونقدر زیاده که شبکه به عبارتی داده هارو حفظ می کنه.برا همین واسه داده های جدید خطا زیاده.
            پس یعنی آورفیتینگ در شبکه هایی که مقدارepochزیاد انتخاب شده و هیچگاه به دقت مورد نظر مانرسنداتفاق میفته.امادر شبکه هایی که در تکراری کمتر از مقدارepoch متوقف می شوند مقدار زیادepochایجاد مشکل نمی کنه؟؟
            :-/
            اگر دیگران توانستند
            ناامید نباش
            تو هم می توانی، اگر توانستی
            مغرور نباش
            دیگران نیز می توانند...

            دیدگاه


              #7
              پاسخ : چگونگی تعیین مقدار پارامتر epoch

              بله یک راه حل کلی اینه که شما روی تعداد مراحل تکرار تمرکزی نداشته باشید
              و منحنی خطای شبکه رو بررسی کنید و هنگامی که خطا به حالت مناسب رسید اموزش متوقف بشه
              تعداد حداکثر epoch اصلا توی شبکه مهم نیست اما اینکه شبکه بعد از چند epoch به دقت مورد نظر ما
              میرسه یک پارامتر قابل تامله.
              و تنها سودی که ایجاد محدودیت مناسب در حداکثر epoch داره توقف اموزش و عدم افتادن در لوپ بینهایته
              مهم نیست چه مدرکى دارید
              مهم این است که چه درکى دارید . . .

              دیدگاه

              لطفا صبر کنید...
              X