اطلاعیه

Collapse
No announcement yet.

سوال؟؟؟مدلسازی نقطه پیک

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

    سوال؟؟؟مدلسازی نقطه پیک

    سلام
    اول از همه تشکر میکنم از همه فعالان این سایت

    من ارشد عمران میخونم.میخوام با کمک شبکه عصبی به پیش بینی و مدلسازی جریان رودخانه بپردازم.
    شبکه ای که ساختم شبکه پیشرو با یک لایه مخفی است.از معیار RMSE و R2 برای ارزیابی شبکه استفاده میکنم.الگوریتمهای آموزشی هم که به کار بردم trainlm و trainbr هستش.هرکار میکنم نمیتونم خطامو کاهش بدم.گیرش توی مدلسازی نقطه پیک است.خیلی بد مدلسازی میکنه نمیدونم چیکار کنم.

    ممنون میشم اگه کسی راهنماییم کنه

    #2
    پاسخ : سوال؟؟؟مدلسازی نقطه پیک

    یه جای دیگه هم سوالایی پرسیده بودین چون اینجا دیدم دانشجوب عمران هستین جسارت میکنم و در حضور اساتید سعی میکنم یه چند خط در حد کمک بنویسم.
    1- در بسیاری از مسائل داده های ورودی رو مستقیما نمیشه به مسئله خوروند مثلا نویز داریم؛ بعضی ورودیها ذاتا بسیار بزرگ یا خیلی کوچیکند؛ داده های ورودی در یک قسمت جمع شده اند و باید اصلاحا از هم باز بشن ؛ ابعاد مسئله کوچیک تر بشه واسه راحتی کار و ....
    همه اینها رو اصطلاحا میگن پیش پردازش؛ نرمال سازی داده هم جزوش میشه
    2- نرمال سازی در ذهن من یعنی متعادل کردن ورودیهای مختلف (همون که گفتم بعضی ورودیها ذاتا بسیار بزرگ یا بسیار کوچیکند) که اولی تاثیر بسیار زیادی در خروجی شبکه عصبی میذار و عملا ورودیهای دیگه رو بی اثر میکنه. دومی هم اصلا تو خروجی اثر نمیذاره
    3- تعداد نرونهای هر لایه رو مشخص نکردین در حالیکه تعداد نرونهای لایه میانی بشدت تاثیر گذارند (خروجی هم که دست ما نیست). پیشنها میکنم مسئله رو دقیق تر تعریف کنید تا بهتر بشه کمک کرد +
    http://artificial.ir/intelligence/forum10.html

    دیدگاه


      #3
      پاسخ : سوال؟؟؟مدلسازی نقطه پیک

      نوشته اصلی توسط mojalan
      یه جای دیگه هم سوالایی پرسیده بودین چون اینجا دیدم دانشجوب عمران هستین جسارت میکنم و در حضور اساتید سعی میکنم یه چند خط در حد کمک بنویسم.
      1- در بسیاری از مسائل داده های ورودی رو مستقیما نمیشه به مسئله خوروند مثلا نویز داریم؛ بعضی ورودیها ذاتا بسیار بزرگ یا خیلی کوچیکند؛ داده های ورودی در یک قسمت جمع شده اند و باید اصلاحا از هم باز بشن ؛ ابعاد مسئله کوچیک تر بشه واسه راحتی کار و ....
      همه اینها رو اصطلاحا میگن پیش پردازش؛ نرمال سازی داده هم جزوش میشه
      2- نرمال سازی در ذهن من یعنی متعادل کردن ورودیهای مختلف (همون که گفتم بعضی ورودیها ذاتا بسیار بزرگ یا بسیار کوچیکند) که اولی تاثیر بسیار زیادی در خروجی شبکه عصبی میذار و عملا ورودیهای دیگه رو بی اثر میکنه. دومی هم اصلا تو خروجی اثر نمیذاره
      3- تعداد نرونهای هر لایه رو مشخص نکردین در حالیکه تعداد نرونهای لایه میانی بشدت تاثیر گذارند (خروجی هم که دست ما نیست). پیشنها میکنم مسئله رو دقیق تر تعریف کنید تا بهتر بشه کمک کرد +
      http://artificial.ir/intelligence/forum10.html
      ممنون از توجه و کمکتون
      قبل از اینکه در مورد مدلسازیم بیشتر توضیح بدم، اون قسمتی که گفتین "اولی تاثیر بسیار زیادی در خروجی شبکه عصبی میذار و عملا ورودیهای دیگه رو بی اثر میکنه. دومی هم اصلا تو خروجی اثر نمیذاره" ، منظورتونو از اولی و دومی متوجه نشدم. و اینکه بعد از نرمالسازی با چه دستوری میتونم خروجیهای واقعیمو بگیرم.

      در مورد مدلسازی هم که گفته بودین بیشتر توضیح بدم:من تعداد نرونها را تغییر میدم. ولی جوابم چندان تفاوتی نمیکنه.تعداد داده هایی هم که دارم نزدیک 20 سال هستش که نصف این تعداد را واسه آموزش و بقیه رو واسه تست استفاده میکنم.لایه اول تابع tansig و لایه دوم تابع خطی.اصلا هر چیو تو این شبکه تغییر میدم جوابم چندان تفاوتی نمیکنه و میزان خطا بالاست. هیدروگراف جریان از یه مقداری شروع میشه، میرسه به یه نقطه پیک و بعد دوباره روند نزولی داره.حالا وقتی نتایج را پلات میکنم نموداری که شبکه عصبی بعد از آموزش دیدن به من میده شکل هیدروگراف داره ولی نقطه پیکی که مدل میکنه خیلی با اونچیزی که باید باشه تفاوت داره واسه همین خطارو میبره بالا.
      نمیدونم اطلاعاتی که دادم کافیه یا نه؟

      دیدگاه


        #4
        پاسخ : سوال؟؟؟مدلسازی نقطه پیک

        در مورد نرمال سازی:
        ببینید مثلا واحد پاسکال در فشار ذاتا واحد کوچیکی هست مثلا فشار هوا در سطح دریا حدود 101000 پاسکال هست. حالا شما بخوای فشار یه ورودی رو برحسب پاسکال به شبکه عصبی بدین. چون با اعداد بزرگی سر و کار داریم عملا هر چقدر هم وزن این ورودی کم بشه باز هم اثر زیادی روی خروجی نرون داریم.
        بالعکس واحد فاراد در مورد ظرفیت خازن ها واحد بسیار بزرگیه و اعداد عادی در مورد خازنها در محدوده میکرو فاراد هستند. حالا اگه ظرفیت یه خازن بعنوان ورودی شبکه عصبی باشه چون ورودی خودش خیلی کوچیکه عملا اثری در خروجی نمیذاره حتی اگر وزنش زیاد باشه.
        * یادمون باشه که عموما تغییر وزن در پروسه آموزش به اندازه ورودی هم بستگی داره پس وقتی ورودی کوچیک باشه تغییر وزن هم کوچیک هست
        معمولا برای نرمال سازی داده ها رو به بزرگترینشون تقسیم میکنند تا ورودیها بین 0 و 1 نرمال بشن.
        در مورد مسئلتون هم من پیشنهادم اینه که نسبت تعداد داده های آموزش رو به تست بیشتر کنید. مثلا 9 قسمت برای آموزش و یک قسمت برای تست.

        دیدگاه


          #5
          پاسخ : سوال؟؟؟مدلسازی نقطه پیک

          اگه از تولباکس شبکه عصبی متلب استفاده می کنید خودش نرمال سازی رو انجام میده.
          در مسائل شناسایی الگو معمولاً نسبت آموزش به تست 0.6 یا 0.7 یا 2/3 هست.
          یکی از محدودیت های شبکه عصبی اینه که نیاز به داده های زیادی برای آموزش داره، اگه تعداد داده های آموزشی تون کمه، به جای شبکه عصبی از یک روش دیگه استفاده کنید یا خودتون داده های مصنوعی(برای مرحله آموزش) بسازید.
          منظورتون از بد چقدره؟ بعضی وقتا دقت شبکه عصبی ممکنه خیلی بالا نباشه که به خاطر پیچیدگی داده هاست یا انتخاب نامناسب ویژگی ها.
          لطفاً برای انجام پروژه های دانشجویی پیام خصوصی نفرستید.
          لطفاً سؤالاتی که در انجمن قابل طرح شدن هستند پیام خصوصی نکنید.
          با تمام وجود گناه کرديم اما نه نعمتش را از ما گرفت نه گناهان ما را فاش کرد اطاعتش کنيم چه مي کند؟"دکتر شريعتي"
          اگر جايي که ايستاده ايد را نمي پسنديد، عوضش کنيد شما درخت نيستيد!! "پاسكال"
          يا به اندازه ي آرزوهايت تلاش کن يا به اندازه تلاشت آرزو کن. "شکسپير"

          دیدگاه


            #6
            پاسخ : سوال؟؟؟مدلسازی نقطه پیک

            نوشته اصلی توسط mojalan
            در مورد نرمال سازی:
            ببینید مثلا واحد پاسکال در فشار ذاتا واحد کوچیکی هست مثلا فشار هوا در سطح دریا حدود 101000 پاسکال هست. حالا شما بخوای فشار یه ورودی رو برحسب پاسکال به شبکه عصبی بدین. چون با اعداد بزرگی سر و کار داریم عملا هر چقدر هم وزن این ورودی کم بشه باز هم اثر زیادی روی خروجی نرون داریم.
            بالعکس واحد فاراد در مورد ظرفیت خازن ها واحد بسیار بزرگیه و اعداد عادی در مورد خازنها در محدوده میکرو فاراد هستند. حالا اگه ظرفیت یه خازن بعنوان ورودی شبکه عصبی باشه چون ورودی خودش خیلی کوچیکه عملا اثری در خروجی نمیذاره حتی اگر وزنش زیاد باشه.
            * یادمون باشه که عموما تغییر وزن در پروسه آموزش به اندازه ورودی هم بستگی داره پس وقتی ورودی کوچیک باشه تغییر وزن هم کوچیک هست
            معمولا برای نرمال سازی داده ها رو به بزرگترینشون تقسیم میکنند تا ورودیها بین 0 و 1 نرمال بشن.
            در مورد مسئلتون هم من پیشنهادم اینه که نسبت تعداد داده های آموزش رو به تست بیشتر کنید. مثلا 9 قسمت برای آموزش و یک قسمت برای تست.
            اوکی...در مورد نرمالسازی متوجه شدم.در مورد میزان بیشتر کردن داده های آموزش هم بهتر نتیجه داد.ممنون
            اما چند سوال ازتون داشتم.اگه وقت گذاشتین و خواستین جواب بدین لطفا با همون شماره گذاری جواب بدین که من دقیقا جواب سوالهامو متوجه بشم......با تشکر فراوان

            1)وقتی به برنامه تعداد epoch مشخص میدیم منظور همون تعداد iteration هست؟
            net.divideFcn='';
            net.trainParam.epochs=100;

            2)من میخوام توی کدی که واسه برنامه ام نوشتم بهش وزن و بایاس را معرفی کنم.(مثلا توی یه بازه ).که بعد بندازم تو حلقه و به ازای وزن و بایاسهای مختلف خطای شبکه را دربیارم.حالا اینکه چطوری بهش وزن و بایاس بدم دستورشو بلد نیستم.میشه واسه شبکه زیر دستورشو بنویسین؟
            net=newff(xtr,ytr,5,{'tansig','pure lin'},'trainlm'

            3)من میخوام مدلی که ساختم بهینه کنم.حالا پارامترهای تاثیرگزاری که میتونم تغییر بدم مثلا تعداد epoch و تعداد نرون،میندازم تو حلقه for که مثلا واسه یه تعداد نرون و هرکدوم واسه یه تعداد مشخصی تکرار، شبکه آموزش ببینه و تست بشه و خطا رو بهم بده.درست؟حالا دو دسته خطا دارم خطای آموزش و خطای تست.حالا دوباره چک کنم که کدوم حالت هست که هر دو این خطاها همزمان،حداقل شده باشه؟؟(اشکم در میاد که!!!)

            4)برای جلوگیری از overfit شدن داده ها، خوندم که دوکار میشه انجام داد.یکی توقف زودرس هست و حالتی هست که داده ها را به سه مرحله آموزش و ارزیابی و تست تقسیم میکنی و......فقط اینکه توی کد نویسیم داده های مربوط به ارزیابی را کجا جا بدم و چطوری به برنامه بگم نمیدونم؟!

            با تشکر فراوان

            دیدگاه


              #7
              پاسخ : سوال؟؟؟مدلسازی نقطه پیک

              نوشته اصلی توسط هـــادی
              اگه از تولباکس شبکه عصبی متلب استفاده می کنید خودش نرمال سازی رو انجام میده.
              در مسائل شناسایی الگو معمولاً نسبت آموزش به تست 0.6 یا 0.7 یا 2/3 هست.
              یکی از محدودیت های شبکه عصبی اینه که نیاز به داده های زیادی برای آموزش داره، اگه تعداد داده های آموزشی تون کمه، به جای شبکه عصبی از یک روش دیگه استفاده کنید یا خودتون داده های مصنوعی(برای مرحله آموزش) بسازید.
              منظورتون از بد چقدره؟ بعضی وقتا دقت شبکه عصبی ممکنه خیلی بالا نباشه که به خاطر پیچیدگی داده هاست یا انتخاب نامناسب ویژگی ها.
              من که میگم خطام زیاده یعنی خطام در حد صدم یا دهم نیست چیزی نزدیک 4 یا 5 هست.
              تعداد داده های اموزشمو تغییر دادم یه کم وضعیت بهتر شد.ممنون
              من بالا یه تعداد سوال با شماره گذاری پرسیدم.اگه شما هم وقت داشتین و جواب دادین ممنون میشم.

              دیدگاه


                #8
                پاسخ : سوال؟؟؟مدلسازی نقطه پیک

                1 و 4- لازم نیست پارامترهای مربوط به تعداد epoch را تنظیم کنید. اگه از دستور train استفاده کنید، خودش به صورت خودکار قسمتی از داده ها رو به عنوان ارزیابی (validation) در نظر می گیره و تا جایی آموزش رو ادامه میده که خطای داده های validation مینیمم بشه و وقتی خطای این داده ها رو به زیاد شدن بره (overfit) خودش آموزش رو قطع میکنه.

                2- با آموزش شبکه عصبی، مقادیر وزن و بایاس، تعیین میشن و نیازی به دستکاری این مقادیر نیست. به هر حال اگه خواستید مقادیر بایاس و وزن رو داشته باشید قبلاً بهتون گفتم: http://www.eca.ir/forum2/index.php?topic=68007.0

                3- برای تعیین بهینه ترین مقادیر پارامترها:(تعداد لایه ها و نرون ها)
                فقط از داده های آموزشی استفاده کنید.
                در هر بار اجرای حلقه نباید داده های آموزشی عوض بشن.
                چون وزن اولیه در شبکه عصبی به صورت تصادفی تعیین میشه و روی مقدار خطا تأثیر داره، ممکنه با چند بار آموزش یک شبکه عصبی با پارامترهای ثابت هر بار یک نتیجه بگیرید پس یک بار آموزش برای تعیین این که واقعاً پارامترهای بهینه تعیین بشن کافی نیست.
                توصیه می کنم به جای استفاده از حلقه، به صورت دستی تعداد لایه ها و نرون ها رو دستکاری کنید و آموزش رو برای هر مقدار، چند بار تکرار کنید و میانگین اونا رو بگیرید و یادداشت کنید، اون قدر بالا و پایین کنید تا به بهترین نتایج برسید.
                موفق باشید.
                لطفاً برای انجام پروژه های دانشجویی پیام خصوصی نفرستید.
                لطفاً سؤالاتی که در انجمن قابل طرح شدن هستند پیام خصوصی نکنید.
                با تمام وجود گناه کرديم اما نه نعمتش را از ما گرفت نه گناهان ما را فاش کرد اطاعتش کنيم چه مي کند؟"دکتر شريعتي"
                اگر جايي که ايستاده ايد را نمي پسنديد، عوضش کنيد شما درخت نيستيد!! "پاسكال"
                يا به اندازه ي آرزوهايت تلاش کن يا به اندازه تلاشت آرزو کن. "شکسپير"

                دیدگاه


                  #9
                  پاسخ : سوال؟؟؟مدلسازی نقطه پیک

                  1- من سواتم دیگه قد نمیده چون * شبکه عصبی رو خودم از رو علاقه خوندم * هیچ کار بدرد بخوری باهاش انجام ندادم * با تولباکس متلب هم کارنکردم
                  2- * ایپک همون ایتریشن هست * شما تو متلب میتونید برای خاتمه اجرای برنامه قید بذارین. بهترینش رسیدن میزان خطا به یه حد خاص هست؛ یکی دیگش هم مشخص کردن تعداد تکراره * شما برای وزنها هم میتونید محدوده تعریف کنید؛ همینطور میتونید مقدار اولیه مناسب رو اگه اطلاع دارین بهش بدین (حداقل در تولباکس بهینه سازی متلب هست و علی الصول باید تو تولباکس شبکه عصبی هم باشه)
                  2- شما مطمئنی که میخوای پیش بینی انجام بدی چون لابه لای حرفاتون از بهینه سازی صحبت
                  میشه و میزان خطا که الگوریتم ژنتیک بهتر جواب میده

                  دیدگاه


                    #10
                    پاسخ : سوال؟؟؟مدلسازی نقطه پیک

                    نوشته اصلی توسط mojalan
                    1- من سواتم دیگه قد نمیده چون * شبکه عصبی رو خودم از رو علاقه خوندم * هیچ کار بدرد بخوری باهاش انجام ندادم * با تولباکس متلب هم کارنکردم
                    2- * ایپک همون ایتریشن هست * شما تو متلب میتونید برای خاتمه اجرای برنامه قید بذارین. بهترینش رسیدن میزان خطا به یه حد خاص هست؛ یکی دیگش هم مشخص کردن تعداد تکراره * شما برای وزنها هم میتونید محدوده تعریف کنید؛ همینطور میتونید مقدار اولیه مناسب رو اگه اطلاع دارین بهش بدین (حداقل در تولباکس بهینه سازی متلب هست و علی الصول باید تو تولباکس شبکه عصبی هم باشه)
                    2- شما مطمئنی که میخوای پیش بینی انجام بدی چون لابه لای حرفاتون از بهینه سازی صحبت
                    میشه و میزان خطا که الگوریتم ژنتیک بهتر جواب میده
                    در مورد کاری که میخوام انجام بدم مطمئنم!! میخوام چند مدل بسازم بعد هرکدوم که بهتر شد استفاده کنم واسه پیش بینی.
                    به هرحال از کمکتون استفاده کردم.ممنون

                    دیدگاه

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