اطلاعیه

Collapse
No announcement yet.

درخواست کمک: در مورد ساختار،آموزش،ارزیابی شبکه های عصبی

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

    درخواست کمک: در مورد ساختار،آموزش،ارزیابی شبکه های عصبی

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

    از این 5 پارامتر ورودی و 1 پارامتر خروجی 30 نمونه از معدن گرفتم.طبق مطالعاتم باید 4 یا 5 ... نمونه را برای تست و 25 تا دیگه رو برای آموزش استفاده کنم.
    پس5 نرون در لایه اول(ورودی) و یک نرون در لایه خروجی باید تشکیل بدم. اما لایه میانی چند نرون؟ فکر کنم اونم با سعی و خطا بهینه بشه ! اگر اشتباست بگید!؟
    با توجه به موارد مذکور باید مدلی بسازم که ماده منفجره پیش بینی شده از طریق شبکه عصبی بهینه ترین حالت ممکن باشد. موارد مشابه و مطالعه کردم نرم افزار متلب، شبکه عصبی چند لایه پیشخور بود، الگوریتم آموزش پس انتشار و تابع تحریک سیگمویید بود.
    مطالعات زیادی انجام داد اما بهترین اطلاعات و از این سایت بدست آوردم. اگر از دوستان کسی بتونه کمکم کنه ممنون میشم.
    1.تشکیل ساختار؟
    2.آموزش شبکه عصبی (پرسپترون چند لایه) در متلب؟
    3.ارزیابی شبکه عصبی (پرسپترون جند لایه) در متلب؟

    فکر کنم با پاسخ به سوال من تمام دوستان اطلاعات جامع کسب کنند. خیلی از مسایل از بین بره
    مرسی

    #2
    پاسخ : درخواست کمک: در مورد ساختار،آموزش،ارزیابی شبکه های عصبی

    بچه ها کسی نمیتونه کمکم کنه؟
    چند روز دارم تلاش میکنم، هر چی بیشتر میفهمم بیشتر گیج میشم و سوالات بیشتری تو ذهنم بوجود میاد.

    دیدگاه


      #3
      پاسخ : درخواست کمک: در مورد ساختار،آموزش،ارزیابی شبکه های عصبی

      سلام.
      خوبی حبیب جان؟
      چند تا مسئله:
      1. اولا تعداد نمونه های آموزش و آزمایشتون خیلی کمه، برای اینکه بتونید یه مدل خوب بدست بیارید باید داده های بیشتری داشته باشید، به نظرم حدود 500 تا داده خوب باشه.
      2. تعداد نورون های لایه میانی تجربی هست و بستگی به پیچیدگی مسئله داره، اگه پارامتر های ورودیتون 5 تا هست فکر میکنم حدود 7 تا نورون لایه میانی بذارید کافی باشه.
      ---
      ولی در مورد سوالات دیگرتون
      1. تشکیل ساختار نمیدونم منظورتون چیه اگه منظورتون نحوه پیاده سازی شبکه عصبی در متلب هست که فکر کنم یکی از دوستان یه راهنما در این زمینه در سایت گذاشته با دستور newff
      2. آموزش رو که خب با 80 درصد داده هایی که دارید باید انجام بدید و 20 درصد بقیه رو هم برای تست استفاده کنید.
      مطلب مهم دیگه اینکه مدل شما خروجیش چطوریه؟ مثلا عدد بین 0 تا 1 هست یا بزرگتر و ...
      یه نمونه از داده ها تون رو بذارید فکر کنم بتونم کمی کمکتون کنم.
      در ضمن باید مدلتون رو با RBF هم امتحان کنید شاید شبکه های RBF روی داده های شما خوب جواب بده.
      موفق باشید.
      شأن انسان در ايمان و هجرت و جهاد است و هجرت، مقدمهآ‌ي جهاد فيآ‌سبيلآ‌الله.
      هجرت، هجرت از سنگينيآ‌هاست و جاذبهآ‌هايي كه تو را به خاك ميآ‌چسباند.
      چكمهآ‌هايت را بپوش، رهآ‌توشهآ‌ات را بردار و هجرت كن.

      دیدگاه


        #4
        پاسخ : درخواست کمک: در مورد ساختار،آموزش،ارزیابی شبکه های عصبی

        سلام. خوبم مرسی .با راهنمایت یک حس دلگرمی عجیب بهم دست داد
        1. آره میدونم داده هام کمه سعی میکنم زیادش کنم.
        2.میدونم RBF خیلی خوبه. اما من یک مقاله پیدا کردم که دقیقا راجع به همین مبحث بود. از feed-forward multi layer با الگوریتم پس انتشار و تابع سیگمویید استفاده کرده بود و به نتیجه خوبی رسید.همین باعث شد تا سعی کنم از feed-forward استفاده کنم.تو این مقاله نیز 5 پارامتر ورودی بود، از سعی خطا استفاده کرد در نهایت از ساختار (1، 5، 7، 5) استفاده کرد، یعنی 2 لایه میانی که اولی7 و دومی 5 نرون دارد!!!!!!!

        ....

        1.بله خروجی شبکه عددی بین (0 و 1) . در زیر نمونه ای از داده هارو گذاشتم;
        پارامتر1=50 پارامتر2=10 پارامتر3=10 پارامتر4=40 پارامتر5=5 پارامتر خروجی(جواب)=0.6

        پارامتر1=40 پارامتر2=10 پارامتر3=10 پارامتر4=40 پارامتر5=5 پارامتر خروجی(جواب)=0.54

        پارامتر1=30 پارامتر2=20 پارامتر3=10 پارامتر4=30 پارامتر5=6 پارامتر خروجی(جواب)=0.58

        پارامتر........... ......... .......... ....... ....... .............
        تا آخر ...

        2. بله منظورم نحوه پیاده سازی در متلب بود،حالا فهمیدم که باید از دستور newff استفاده کنم.
        p=[50 40 30 ...;10 10 20 ...;10 10 10...;40 40 30...;5 5 6 ...] *1
        t=[0.6 0.54 0.58 ...] **1
        net=newff(minmax(p),[7,1],{'tansig','purelin'},'tr ainp' ***1 درسته؟ گفتید حداقل 7 نرون در لایه میانی.
        net.trainparam.show=50; ****1
        net.trainparam.Ir=0.05; *****1
        net.trainparam.epochs=300: ******1
        net.trainparam.goal=0.00001 *******1
        net,tr]=train(net,p,t); ********1 ] درسته؟
        تا اینجارو اگه درسته بلدم. ارزیابی(تست) بلد نیستم.

        3.اگر ممکن راهنمایی کنید که چطور میتونم با اون 20% داده شبکه را تست کنم.تست کردن و بلد نیستم.

        بینهایت ممنونم

        دیدگاه


          #5
          پاسخ : درخواست کمک: در مورد ساختار،آموزش،ارزیابی شبکه های عصبی

          سلام به مهندس نحوی عزیز. میدونم برای مدت کوتاهی میتونی سر بزنی. انقدر راهنماییت خوب بود که شب و روز مشغول شدم البته سوالام بیشتر شده
          دستور newff برای شبکه (feed-forward (backpropagation بدین شکل شد:

          p=[50 40 30 ...;10 10 20 ...;10 10 10...;40 40 30...;5 5 6 ...] *1
          t=[0.6 0.54 0.58 ...] **1
          net=newff(minmax(p),[5 7 1],{'tansig','tansig',tansig&#03 9;},'trainlm','learngdm',&#039 ;mse&#039 2
          net.trainparam.show=5; *3
          net.trainparam.epochs=300; **3
          net.trainparam.goal=0.00001; ***3
          net1=train(net,p,t); 4

          برای ارزیابی و تست:

          y = sim(net1,p): *1
          1** y
          باید بین هدف(t ) و خروجی (y ) مقایسه انجام گیرد. و این اختلاف باید تا حد ممکن کوچک باشد. در ادامه

          q=[30 50 ...;10 15 ...;10 10 ...;40 40 ...;5 5 ...] *2 داده های ورودی که برای تست کنار گذاشته بودم(20 % از p)
          y2=sim(net1,q) **2
          اختلاف y2 با داده های خروجی که برای تست کنار گذاشته بودم(20% از t) ،خطای تست شبکه است.

          :question:
          1. آیا ایرادی داشت؟اگر هست ممنون میشم راهنمایی کنید.
          2.اون 20% داده (q ) نباید نرمالیزه میشد؟ اگر باید میشد،چگونه انجام بدم؟
          3.p با minmax نرمالیزه شد، t و q نیاز به نرمالیزه کردن ندارند؟ شاید مقدار t بین [1و-1] بود نیاز به نرمالیزه کردن نداشت؟

          مرسی

          دیدگاه


            #6
            پاسخ : درخواست کمک: در مورد ساختار،آموزش،ارزیابی شبکه های عصبی

            سلام. خوبی حبیب جان؟
            ببخشید دیر دارم جواب میدم.
            اول اینکه شما یه میزان خطا باید در نظر بگیرید، مثلا بگید که اگه قراره خروجی من 0.58 باشه مثلا اگه بشه 0.59 یا بشه 0.57 برای من قابل قبوله، اول اینو مشخص کنید تا بتونیم شبکه رو ارزیابی کنیم.
            داده های ورودی حتما باید نرمالیزه بشن، به نرمالیزه متلب اطمینان کامل نکنید، خودتون اینکار رو انجام بدید، نرمالیزه کردم رو هم به با ویژگی ها انجام بدید نه برداری،آ‌یعنی مثلا اگه نمونه اول شما هست [50;20;40;70] و بقیه نمونه ها به همین ترتیب، اگه یک بردار ورودی رو نسبت به خودش نرمالیزه کنید میشه نرمالیزاسیون برداری یعنی در این مثلا حداقل 20 هست و حداکثر 70، ولی اگه هر کدوم از این سطر ها رو به عنوان یه ویژگی ببینیم و ویژگی اول تمام نمونه ها رو نسبت بهم نرمال کنیم میشه نرمالیزاسیون ویژگی.
            ---
            حبیب جان کد کامل شبکه عصبی رو توی یکی از پست های مهم این بخش گذاشتم، میتونیم با استفاده از اون این کار رو انجام بدیم، به نظرم خوبه شما داده هات رو برای من ارسال کنی من داده های شما رو روی شبکه بزنم ببینم چطوری میشه نتیجه رو بهت اطلاع میدم.
            راستی تونستی داده های بیشتری جمع آوری کنی؟
            موفق باشید.
            شأن انسان در ايمان و هجرت و جهاد است و هجرت، مقدمهآ‌ي جهاد فيآ‌سبيلآ‌الله.
            هجرت، هجرت از سنگينيآ‌هاست و جاذبهآ‌هايي كه تو را به خاك ميآ‌چسباند.
            چكمهآ‌هايت را بپوش، رهآ‌توشهآ‌ات را بردار و هجرت كن.

            دیدگاه


              #7
              پاسخ : درخواست کمک: در مورد ساختار،آموزش،ارزیابی شبکه های عصبی

              سلام مرسی مهندس خوب بودم با راهنماییتون بهتر شدم.
              والا خطا هر چقدر کمتر باشه بهتره. تو یکی از مقاله ها که دیده بودم(در همین مبحث بود) اندازه واقعی 0.23 بود توسط مدل 0.2349 بدست آمد یعنی خطایی به انازه 0.0049 . و در یک مورد دیگه اندازه واقعی 0.2 توسط مدل 0.2007 بدست آمد که 0.0007 خطا داشت و رضایت بخش بود.مدل منم در همین محدوده خطا داشته باشه عالیه(بین 0.0001 تا 0.01)

              باشه داده هارو خودم نرمالیزه میکنم.با ویژگی ها؟ از این روش باید داده ها رو تک تک نرمالیزاسیون ویژگی کنم؟
              Xnew = 0.1 + 0.8 ( X - Xmin / Xmax - Xmin ) *1
              Xnew : متقیی نرمال شده در بازه [1و 1-] ; X : ارزش اصلی ; Xmax : بیشترین ارزش داده ها ; Xmin : کمترین ارزش داده ها
              اگه این روش درست نیست یا روش بهتری برای نرمالیزاسیون ویژگی هست ممنون میشم راهنماییم کنید.
              ......
              کد کامل شبکه عصبی که گذاشتین، دیدم راستش چیز زیادی نفهمیدم، راستشو بخواین فقط دستور newff بلدم.رو کدی که گذاشتین یک ذزه بیشتر تمرکز میکنم شاید متوجه بشم؟

              32 داده از 5 پارامتر ورودی و 1 پارامتر خروجی:
              p=[50 40 30 30 40 50 40 30 50 50 30 50 50 40 30 30 40 50 30 30 50 50 30 50 50 50 40 40 40 30 50 40;10 10 10 20 25 25 15 15 20 10 10 15 10 10 10 20 25 25 25 15 20 10 10 15 10 20 10 15 15 15 15 15;10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 20 10 10 10 10 10;40 40 40 40 40 40 40 40 40 40 40 40 75 75 75 75 75 75 75 75 75 75 75 75 75 75 75 75 75 75 75 75;5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6]
              t=[0.6 0.54 0.49 0.58 0.55 0.65 0.5 0.5 6 0.52 0.5 0.6 1.1 1.02 0.95 1 1.3 1.1 1.02 0.9 1.1 1.01 0.85 1 1.1 1.02 1 0.91 0.98 0.88 1.02 1] t

              با استاد راهنمای پروژه ام در مورد افزایش داده های ورودی صحبت کردم گفت تو روی این 32 داده کار کن قوی که شدی یک جا معرفیت میکنم داده های زیادتری بهت بدند.
              شما هم موفق باشی.

              دیدگاه


                #8
                پاسخ : درخواست کمک: در مورد ساختار،آموزش،ارزیابی شبکه های عصبی

                سلام.
                اول اینکه چون داده های شما برای مدل سازی هست نه طبقه بندی من باید برنامه ام رو یه تغییراتی بدم تا بتونم داده شما رو روش پیاده سازی کنم یکم زمان میبره.
                در مورد نرمالیزه کردن هم متوجه نشدم 0.1 و 0.8 چی هست، این برنامه ای هست که نوشته شده برای نرمالیزه کردن ویژگیها:



                موفق باشید

                شأن انسان در ايمان و هجرت و جهاد است و هجرت، مقدمهآ‌ي جهاد فيآ‌سبيلآ‌الله.
                هجرت، هجرت از سنگينيآ‌هاست و جاذبهآ‌هايي كه تو را به خاك ميآ‌چسباند.
                چكمهآ‌هايت را بپوش، رهآ‌توشهآ‌ات را بردار و هجرت كن.

                دیدگاه


                  #9
                  پاسخ : درخواست کمک: در مورد ساختار،آموزش،ارزیابی شبکه های عصبی

                  سلام به استاد نحوی عزیز
                  من از اون کدها چیزی سر در نیووردم؟ به خدا صفر کیلومترم. یعنی اون دستوری که قبلا نوشته بودم
                  کاربرد نداره؟مکنظورم اینه:
                  p=[50 40 30 ...;10 10 20 ...;10 10 10...;40 40 30...;5 5 6 ...] *1
                  t=[0.6 0.54 0.58 ...] **1
                  net=newff(minmax(p),[5 7 1],{'tansig','tansig',tansig&#03 9;},'trainlm','learngdm',&#039 ;mse&#039 2
                  net.trainparam.show=5; *3
                  net.trainparam.epochs=300; **3
                  net.trainparam.goal=0.00001; ***3
                  net1=train(net,p,t); 4
                  :question: با این دستور نمیشه شبکه بسازیم و آموزش بدیم؟؟بعد تستش کنیم اگر خوب بود بعنوان مدل قبولش کنیم؟
                  کاربرد اون کدتون چیه و چه فرقی با این(دستوری که من نوشتم) داره؟ کاملا گیج شدم.

                  اون 0.1 و0.8 اعداد ثابت یا ضرایب فرمول دستی نرمالسازی بودند. که شما محبت کردین دستور تابعشو (تو متلب) برام گذاشتین.مرسی
                  :question: سوال بعدیم اینه: باید بعد نرمالیزه شدن p با این دستور، t هم نرمالیزه بشه درسته؟ در نهایت جواب خروجی شبکه نرمالیزه میشه، حالا چطوری(با چه دستوری) به حالت واقعی برگردونمش؟
                  ممنون میشم تا حد امکان کمکم کنید.

                  دیدگاه


                    #10
                    پاسخ : درخواست کمک: در مورد ساختار،آموزش،ارزیابی شبکه های عصبی

                    سلام مهندس
                    میدونم سرتون شلوغه و همیشه نمیتونین تو انجمن بیاین و به سوالات آماتورگونه ما جواب بدین :smile:
                    شاید وقت کم واسه پروژه باعث میشه هر روز مزاحمتون میشم. اگه کتابی یا جزوه ای . .. که توش در مورد شبکه عصبی تو متلب هست بگید تهیه کنم تا اینقدر مزاحمتون نشم.
                    چیزی که بتونه یادم بده یک شبکه عصبی درست کنم.خیلی وقت برای پروژه ام ندارم شاید 1ماه و نیم.
                    موفق باشید

                    دیدگاه


                      #11
                      پاسخ : درخواست کمک: در مورد ساختار،آموزش،ارزیابی شبکه های عصبی

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

                      y=sim(net,PT) 1
                      که net همون شبکه ای یه که بالا آموزش دادید و PT هم داده های تستتون هست. خروجی این شبیه سازی توی y قرار میگیره که باید با خروجی های داده های تست شما برابر باشه(فرض کنید که اون خروجی ها هم اسمشون TT). با توجه به صحبت های بالا باید این خروجی ها باید خطای در حد 0.001 داشته باشن . برای همین باید اختلاف بین y و TT کمتر از 0.001 باشه . این اختلاف رو حساب کنید و بعد برای هر نمونه ببینید این شرط برقرار هست یا نه. اگه بود که خوب شبکه نمونه رو درست شبیه سازی کرده و اگه نبود هم شبکه اشتباه تشخیص داده و بعد هم یه درست گیری کنید ببینید که شبکه روی داده های تست چند درصد درست جواب داده.
                      موفق باشید.
                      شأن انسان در ايمان و هجرت و جهاد است و هجرت، مقدمهآ‌ي جهاد فيآ‌سبيلآ‌الله.
                      هجرت، هجرت از سنگينيآ‌هاست و جاذبهآ‌هايي كه تو را به خاك ميآ‌چسباند.
                      چكمهآ‌هايت را بپوش، رهآ‌توشهآ‌ات را بردار و هجرت كن.

                      دیدگاه


                        #12
                        پاسخ : درخواست کمک: در مورد ساختار،آموزش،ارزیابی شبکه های عصبی

                        سلام. مرسی از راهنماییتون کاملا متوجه شدم
                        فقط چند تا سوال دیگه داشتم :question:
                        1. داده های خروجی (t) عددی اعشاری، بین [1 1-] هستند .آیا باز هم نیاز به نرمالسازی هست؟
                        2. اگر این داده ها (t) بین [1 1-] نباشند (مثلا: 100 120 200 ...) باید حتما نرمالیزه شوند، درسته؟ اگر این کارو انجام بدیم در نهایت خروجی مدل و خروجی تست نیز عددی بین [1 1-] خواهد شد، حالا چطور میشه این داده هارو به مقدار واقعی تبدیل کنیم؟
                        مرسی شما هم موفق باشی

                        دیدگاه


                          #13
                          پاسخ : درخواست کمک: در مورد ساختار،آموزش،ارزیابی شبکه های عصبی

                          سلام.
                          1. بله.
                          2. دقیقا عکس کاری که برای نرمال سازی انجام دادید رو باید انجام بدید. یعنی ضرایب رو به عکس ضرب کنید و ... .
                          موفق باشید.
                          شأن انسان در ايمان و هجرت و جهاد است و هجرت، مقدمهآ‌ي جهاد فيآ‌سبيلآ‌الله.
                          هجرت، هجرت از سنگينيآ‌هاست و جاذبهآ‌هايي كه تو را به خاك ميآ‌چسباند.
                          چكمهآ‌هايت را بپوش، رهآ‌توشهآ‌ات را بردار و هجرت كن.

                          دیدگاه


                            #14
                            پاسخ : درخواست کمک: در مورد ساختار،آموزش،ارزیابی شبکه های عصبی

                            سلام
                            مرسی از راهنماییتون

                            فعلن سوالی نیست،از فردا میرم معدن تا داده هارو همونطور که گفتید زیاد کنم. باز اگر سوالی داشتم مزاحمتون میشم.
                            ممنونم

                            دیدگاه


                              #15
                              پاسخ : درخواست کمک: در مورد ساختار،آموزش،ارزیابی شبکه های عصبی

                              سلام مهندس چند تا سوال دیگه داشتم
                              اول اینه نوع داده هام یک مقدار تغییر کرده. خروجی من دیگه عددی بین [0,1] نیست بلکه بدین شکل
                              t=[50 72 79 68 59 66 78 90 86 44 55 80 71 ....] 1

                              مقدار خطایی که میخوام در نظر بگیرم زیاد نیست مثلا اگر قرار باشه به خروجی 50 برسیم اگر 51 ،49 یا حتی 52، 48 باشه قابل قبوله.

                              سوالام اینه:
                              ا- کار این سه دستور چیه؟
                              net.trainparam.show=5; *1
                              net.trainparam.epochs=300; **1
                              net.trainparam.goal=0.00001; ***1
                              2- من چه اعدادی را برای این 3 دستور باید قرار بدم ( همون 5، 300، 0.00001 یا ....)؟
                              3- همونطور که قبلا فرمودین تعداد نرونهای لایه میانی با سعی وخطا بدست میاد و مشخص نیست. حالا تعداد نرونهای لایه اول چطور مشخص میشه؟ اگر پارامترهای ورودی شبکه 5 تا باشند میتوان گفت تعداد نرونهای لایه اول 5تاست؟
                              مرسی از راهنماییتون

                              دیدگاه

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