اطلاعیه

Collapse
No announcement yet.

پیاده سازی backpropagation در شبکه عصبی چند لایه

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

    پیاده سازی backpropagation در شبکه عصبی چند لایه

    سلام دوستان.


    من میخوام یه شبکه عصبی پرسپترون با یک لایه میانی داشته باشم که که در اون دو دسته ورودی داریم.این سوال به این صورت مطرح شده که :
    با فرض داشتن تابعِِ

    f1=sin(x,y) =sin x/x * sin y/y
    x وy بین -10 و 10

    121 جفت ورودی برای ورودی و خروجی برای داده اموزش.
    71 زوج ورودی و خروجی برای داده تست
    71 زوج ورودی برای داده اعتبار سنجی یا validation
    در نظر بگیرید..به عنوان تابع فعال ساز لایه میانی هم از یکی از توابع سیگموند دوقطبی، تکقطی یا خطی استفاده کنید

    من feedforward رو میتونم رو این شبکه پیاده کنم.ولی نحوه پیاده سازی backpropagation رو نمیدونم.و همینطور نمیدونم ازون تابع f1 کجا باید استفاده کنم..
    بعد سه سوال دیگه.داده های اعتبارسنجی کجا استفاده میشن؟ :sad:

    مورد مهم اینکه همه این مراحل رو باید بدون استفاده از toolbax انجام بدم..کسی میتونه راهنماییم کنه...ممنونم

    #2
    پاسخ : پیاده سازی backpropagation در شبکه عصبی چند لایه

    شما میخوای یه MLP بسازی . feedforward نوع توپولوژی یا سیم بندی شبکتونه که توش فیربک نداریم و اگه full connected باشه (که فرض میکنیم هست) تمام خروجی نرونهای یک لایه به نرونهای لایه بعد وصل هستند.
    شبکه شما قرار تابع f1 رو یاد بگیره بدون اینکه ضابطه f1 رو بدونه (همون فرمولی که نوشتین). چطوری ؟
    شما با استفاده از اون فرمول فقط داده های آموزشی؛ تست و اعتبار سنجی رو میسازین یعنی در بازه +-10 به x,y عدد تصادفی میدیدن و طبق اون فرمول مقدار f1 رو بعنوان جواب درست بدست میارین و با این داده ها شبکتونو آموزش میدین.
    backpropagation هم اسم روش یادگیری این شبکه ها هست که چطوری با خطای لایه آخر میفهمن لایه های میانی چقدر خطا دارند و اونو اصلاح میکنند.
    در مورد داده های اعتبار سنجی راستش من خودمم تفاوت اصلی اونها رو با داده های تست درست نفهمیدم البته از داده های تس بیشتر برای جلوگیری از over fitting استفاده میشه در حین آموزش و احتمالا جواب نهایی شبکه (میزان موفقیتش در یادگیری تابع f1) رو از داده های اعتبار سنجی بدست میارند.
    نوشته اصلی توسط lyceum
    بعد سه سوال دیگه.داده های اعتبارسنجی کجا استفاده میشن؟ :sad:
    اینکه یه سواله؟!!!
    با Matlab شروع کنید. اول شبکه رو طراحی کنید یعنی تعداد نرونهای لایه میانی رو تعیین کنید (ورودی که دو تاست . خروجی هم یکیه) تابع فعال ساز لایه آخر هم که خطیه. برای لایه میاینی هم چون خروجیتون مقدار منفی هم داره بهتره از تابع سیگموئیئ دو قطبی استفاده کنید
    تو این لینک هم چیزای بدرد بخوری میتونی پیدا کنی
    http://www.imamrezastudent.com/

    دیدگاه


      #3
      پاسخ : پیاده سازی backpropagation در شبکه عصبی چند لایه

      ببخشید چون س و ی کنار هم هستن..جای ی دستم رفت رو سین چون سه سوال :icon_razz:

      اول اینکه خیلی از توضیحاتتون ممنونم..لطف کردید

      در مورد backpropagation هم خب حقیقتش کد میخواستم.چون با متلب زیاد آشنا نیستم.و قراره که ما اینها رو بدون تولباکس بنویسیم.ولی به هر حال تونستم یه چیزایی بنویسم.که البته خطا میده :sad:

      حالا فعلا یه سوال..من برای این کدی که شما راهنمایی کردید و نوشتم باید با دستور plot نمودار بکشم.ولی نمدونم تو پلات چی بر حسب چی بذارم.یعنی بگم بر حسب چی نمودار بکشه..تو سوال ما مطرح شده که epoch بهینه رو از داده های اعتبار سنجی به دست بیاریم..همینطور معیار خطای mse رو برای داده های اموزش.و معبار کارایی r^2 رو برای داده های آموزش. oo: سوای اینکه اینارو چطوری به دست بیارم آیا اینا ربطی به رسم نمودار با پلات داره؟

      دیدگاه


        #4
        پاسخ : پیاده سازی backpropagation در شبکه عصبی چند لایه

        یه سوال دیگه.ببخشید..اینکه میگن یک شبکه عصبی پرسپترون با دولایه میانی، فرق داره با شبکه عصبی سه لایه؟
        آخه اگه از تولباکس استفاده بشه برای تعریف پرسپترون از دستور net =newp استفاده میشه..ولی برای تعریف شبکه عصبی چندلایه از newff استفاده شده..این دوتا با هم فرق دارن؟ :eek:

        دیدگاه


          #5
          پاسخ : پیاده سازی backpropagation در شبکه عصبی چند لایه

          چند تا نکته:
          1- قرار نیست از تولباکس NN متلب استفاده کنید بلکه خودتون زحمت میکشید روابط حاکم بر شبکه رو بصورت ماتریسی پیاده سازی میکنید
          2- انتخاب متلب تقریبا اجباریه چون دیگه از پیاده سازی یه سری تابع مثل ضرب دو ماتریس خلاص میشید
          3- تعداد 121 جفت برای داده آموزشی فکر کنم کمه (حداقل دو برابر این)
          4- تعداد نرونهای لایه میانی رو حدود 10 بگیرید. یه قضیه ای به اسم کولموگروف هست که میگه برای n بعد ورودی اگه نرونهای لایه میانی بیشتر از n(2n+1) کافیه. با کمتر از این هم میشه ولی خوب تعداد epoch زیاد میشه یه دقیقا همگرا نمیشه
          5- شما یه جزوه ای چیزی از شبکه عصبی گیر بیار حتما قبل از شروع کارت بخون چون فکر میکنم مثل آدمی که شنا بلد نیست انداختنت وسط اقیانوس آرام. ببخشید اینطو رمیگم ولی مثل اینکه هنوز آشنایی خوبی با شبکه عصبی ندارین
          6- پرسپترون یه شبکه تک لایه با تابع فعالیت hardlimiter هست که فقط برای مسائل جداییی پذیر خطی و البته ساده استفاده میشه. در حالیکه یه شبکه feedforward یه شبکه چند لایه است که داستان زیادی داره اما در لایه میانی از توابع غیر خطی مشتق پپذیر و در لایه آخر تابع خطی استفاده میشه. عملا هر تابع پیوسته ای رو میشه با یه ff با یک لایه میانی تقریب زد (یا یاد گرفت)
          7- در بعضی منابع لایه ورودی رو بعنوان لایه در نظر میگیرند در بعضی منابع نه . در هر صورت شما حداقل یه لایه میانی نیاز دارین

          دیدگاه


            #6
            پاسخ : پیاده سازی backpropagation در شبکه عصبی چند لایه

            ممنونم :nice:

            بله دقیقا همنیه..انداختنم تو اقبانوس میگن شنا کن :angry: :biggrin:

            دیدگاه

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