اطلاعیه

Collapse
No announcement yet.

تعداد داده مورد نیاز برای شبکه عصبی

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

    تعداد داده مورد نیاز برای شبکه عصبی

    یک شبکه عصبی با تعداد 5 پارامتر ورودی (1*5) و تعداد سه پارامتر خروجی را درنظر بگیرید؛ سوال من آن است که برای چنین شبکه عصبی ای حداقل به چه تعداد داده نیاز می باشد؟ در جایی خواندم که تعداد داده ها باید 2 به توان n باشد، آیا این مطلی درست است؟ اگر جوای مثبت است n بیانگر چه چیزی می باشد؟
    پیشاپیش از حسن توجه شما سپاسگذارم

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

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

    دیدگاه


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

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

      دیدگاه


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

        سلام ..

        تعداد زیاد دیتا؛ از جهاتی مثبت هم هست و میشه از اون استفاده ی مفیدی کرد .. در واقع؛ اولین پیشنهادی که در زمان عدم نتیجه گرفتن خوب الگوریتم؛ در زمان تست؛ مطرح میشه این هست که یا نوع Feature ها رو تغییر بدیم (--ساده ترین حالت این هست که تعداد اونها رو افزایش بدیم؛ امــا یک سمت نگاهمون هم به این مساله هست که با ازدیاد پارامترهای دیتاهای Training به مشکل Overfitting (یا High Variance) برخورد نکنیم که باعث بشه تا نویز ها هم مدل بشن و خیلی به نتیجه ی مدل آموزش دیده در مرحله ی Training راضی و خوشبین بشیم (با میزان خطای بسیار پایین)، امــا در زمان تست؛ به مشکل بزرگ برخورد کنیم--) یا تعداد Sample های Training رو افزایش بدیم (باز هم یک سمت نگاهمون به مساله ی بالاست) .. معمولا؛ پیشنهاد دوم بیشتر مورد استقبال قرار میگیره چرا که ساده تر و قابل اجرا تر هست .. یک پیشنهاد دیگر هم اینه که متد و پارامترهای الگوریتم Learning مون رو تغییر بدیم و به نوعی بهینه کنیم .. در شبکه های عصبی یک ضریبی؛ مشابه ضریبی که در بالا مطرح کردید وجود داره امــا نه دقیقا 2 به توان n؛ بلکه n!*2^n که در اینجا n اگر اشتباه نکنم؛ تعداد لایه های نهان هستن و این ضریب مربوط به یک مطلب دیگری میشه (--دقیق خاطرم نیست--) و با تعداد سمپل های Train هیچ کاری نداره .. شاید ایـن تاپیک و مطالب اون بتونن خیلی بهتون کمک کنن؛ بخصوص پست آخر .. در انتهای این پست هم یک فایل خیلی مفید ضمیمه شده هست که میتونه امیدوارانه براتون سودمند باشه .. پیروز باشد ..
        فایل های پیوست شده
        دوستان! مدتی کمتر به سایت میام ..

        دیدگاه


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

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

          دیدگاه


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

            نوشته اصلی توسط حسام الدین
            سلام ..

            تعداد زیاد دیتا؛ از جهاتی مثبت هم هست و میشه از اون استفاده ی مفیدی کرد .. در واقع؛ اولین پیشنهادی که در زمان عدم نتیجه گرفتن خوب الگوریتم؛ در زمان تست؛ مطرح میشه این هست که یا نوع Feature ها رو تغییر بدیم (--ساده ترین حالت این هست که تعداد اونها رو افزایش بدیم؛ امــا یک سمت نگاهمون هم به این مساله هست که با ازدیاد پارامترهای دیتاهای Training به مشکل Overfitting (یا High Variance) برخورد نکنیم که باعث بشه تا نویز ها هم مدل بشن و خیلی به نتیجه ی مدل آموزش دیده در مرحله ی Training راضی و خوشبین بشیم (با میزان خطای بسیار پایین)، امــا در زمان تست؛ به مشکل بزرگ برخورد کنیم--) یا تعداد Sample های Training رو افزایش بدیم (باز هم یک سمت نگاهمون به مساله ی بالاست) .. معمولا؛ پیشنهاد دوم بیشتر مورد استقبال قرار میگیره چرا که ساده تر و قابل اجرا تر هست .. یک پیشنهاد دیگر هم اینه که متد و پارامترهای الگوریتم Learning مون رو تغییر بدیم و به نوعی بهینه کنیم .. در شبکه های عصبی یک ضریبی؛ مشابه ضریبی که در بالا مطرح کردید وجود داره امــا نه دقیقا 2 به توان n؛ بلکه n!*2^n که در اینجا n اگر اشتباه نکنم؛ تعداد لایه های نهان هستن و این ضریب مربوط به یک مطلب دیگری میشه (--دقیق خاطرم نیست--) و با تعداد سمپل های Train هیچ کاری نداره .. شاید ایـن تاپیک و مطالب اون بتونن خیلی بهتون کمک کنن؛ بخصوص پست آخر .. در انتهای این پست هم یک فایل خیلی مفید ضمیمه شده هست که میتونه امیدوارانه براتون سودمند باشه .. پیروز باشد ..
            با تشکر از حسن توجه جنابعالی
            من در یک مقاله دیدم که از شبکه پیشخور سه لایه استفاده کرده که لایه ورودی شامل 4 پارامتر ، لایه خروجی شامل 2 پارامتر بوده و در لایه نهان (میانی) نیز از 6 نرون استفاده کرده بود. در این شبکه از 128 داده استفاده شده بود که 111 داده برای آموزش شبکه عصبی و 17 داده برای آزمون استفاده کرده بود که مجموعا 128 داده می شود که معادل 2 به توان 7 می باشد... حال سوال من این است که در چنین شبکه ای عدد 7 بر چه مبنایی انتخاب شده است؟
            مرسی از لطفی که به من دارید
            لینک مقاله هم در زیر گذاشتم
            فایل های پیوست شده

            دیدگاه


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

              سلام ..


              علت های بخصوصی برای اتفاق افتادن Overfitting وجود داره و راه ها و متدهای مقابله با اونها هم روش ها و منطق خاص خودشون رو دارن (--شاید باعث پراکندگی بحث های این تاپیک بشه پرداختن به اونها--) .. امــا در برخی مواقع؛ افزایش تعداد Sample های Training میتونه حتی سبب جلوگیری از Overfitting بشه که در نوع خودش جالبه .. بعلاوه؛ تکرار چندین و چند باره ی آزمایش در مرحله ی Training میتونه بر روی نتیجه ی برخی از الگوریتم ها تاثیر فوق العاده کمی داشته باشه؛ چراکه متد Learning اونها بر مبنای ضرایب و وزن هایی کار میکنن که این تکرار چندین و چند باره برای Tune شدن اونها اثر خیلی کمی میذاره .. امــا در برخی دیگه از الگوریتم ها؛ این تکرار میتونه به بروز خطا منجر بشه .. بنابراین خیلی صریح نمیشه به عنوان یک قاعده ی کلی دسته بندی کرد نطرها رو .. در مورد مقاله ای هم که اشاره کرده بودید؛ اون قسمت مربوط به تعداد داده ها رو خوندم .. این انتخاب تعداد داده ها؛ بر مبنای سلیقه و نظر نویسنده ها اعمال شده و پشت اون قاعده ی خیلی 100 در 100 ای وجود نداره .. همونطور که در پست قبل هم باهم بررسی کردیم؛ برای شبکه ی عصبی از نطر تعداد داده؛ قاعده ی خاصی وجود نداره تا اونجایی که در رفرنس های مربوط به این الگوریتم قابل بررسی هست (--مگر محدودیت هایی که برای کاربردهای خاص؛ توسط کاربر اعمال میشه--) و میتونید تعداد داده ها رو در صورت امکان؛ زیاد انتخاب کنید .. در طرف دیگه؛ فایلی که در انتهای پست چهارم ضمیمه شده هست؛ حاوی اطلاعات خیلی خوبی هست که به نطرم مرور اونها میتونه خیلی دید خوبی رو براتون ایجاد کنه (--حتی اگر تکراری باشه! --) .. پیروز باشید ..
              دوستان! مدتی کمتر به سایت میام ..

              دیدگاه


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

                تعداد داده های آموزشی مناسب برای یک شبکه عصبی به عوامل زیادی بستگی دارد.در مواردی که ساختن و یا تهیه داده های آموزشی امکان پذیر است مهمترین نکته تنوع داده ها میباشد. و باید گفت که تنوع داده ها از تعداد آنها بسیار بسیار مهمتر است!
                برای روشن شدن موضوع یک مثال عرض میکنم فرض کنید شبکه ای با یک وروردی و یک خروجی داریم که میخواهیم تابع y=x^2 را تقریب بزنیم. اگر هدف ما تقریب در محدوده x بین 5 تا منفی 5 باشد. باید ورودیها را بصورت یکنواخت در این ناحیه تعیین کنیم و خروجی های متناظر آنرا تولید کنیم. اگر داده های آموزشی مثلا بیشتر بین صفر تا مثبت 5 باشند. داده ها مناسب نخواهد شد. البته یکنواختی به معنی خطی بودن فواصل داده های ورودی نیست. بلکه بیشتر باید به داده های خروجی متناظر توجه کرد. و بیشتر باید خطی بودن فواصل داده های خروجی مورد توجه باشد. تا خطا در کل بازه دادههای آموزشی یکسان گردد. در شبکه های با ابعاد بیشتر رعایت کردن این موضوع و تهیه دادههای آموزشی با تنوع مناسب اندکی پیچیده خواهد شد.
                نکته بعدی در مورد تعداد داده ها باید عرض کنم که تعداد داده ها رابطه خاصی ندارد ولی باید متناسب با دقت مورد نیاز برای خروجی شبکه در مورد داده های تست خواهد بود.( نه آموزشی)
                یک روش تقریبی برای تعیین تعداد داده های آموزشی وجود دارد که بدین صورت است: ابتدا دقت مورد نیاز برای خروجی شبکه را تعیین میکنیم. و فاصله میانگین بین دادهای آموزشی خروجی را دو برابر این مقدار در نظر میگیریم. به عنوان مثال اگر دقت 0.1 را در مثال قبل نیاز داشته باشیم محدوده خروچی بین 0 تا 25 خواهد شد. بنابراین تعداد داده های مورد نیاز 250 عدد خواهد شد. البته برای این تابع برای داده هایی خیلی کمتر هم به دقت موردنظر میرسیم ولی در بدترین حالت به شرط این تعداد و رعایت تنوع حتما دقت مورد نظر حاصل خواهد شد.
                مهم نیست چه مدرکى دارید
                مهم این است که چه درکى دارید . . .

                دیدگاه

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