Skip to content

Data Distribution

Description

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

توی این شرایط اگر از دیتای فضای واقعی 10000 نمونه وجود داشته باشه و از دیتای فضای غیر واقعی 500000 نمونه، لازمه به شکل منطقی ای این اعداد بین سه دسته training و dev و test تقسیم بشن، که در زیر میبینیم چطور باید این کارو بکنیم:

  • از اونجایی که قراره سیستم ما روی دیتای فضای واقعی کار کنه پس کل دسته dev و test رو از 10000 نمونه بر میداریم
  • از اونجایی هم که بالاخره شبکه عصبی ما از دسته training آموزش میبینه لازمه این دسته رو از ترکیب 10000 و 500000 نمونه تشکیل بدیم
  • حالا که نحوه تقسیم بندی رو متوجه شدیم، دقیق میتونیم بگیم که هر دسته شامل چند نمونه باشه

    • دسته training: شامل 505000 نمونه که ترکیب دیتای فضای واقعی و غیرواقعی هست
    • دسته dev: شامل 2500 نمونه از دیتای فضای واقعی
    • دسته test: شامل 2500 نمونه از دیتای فضای واقعی

حالا با اعمال شرایط بالا ممکنه یک مشکل جدیدی پیش بیاد، تا قبل از این که دیتا های ما از یک فضا بودن اگر error بین trading و dev زیاد میشد میگفتیم Regularization و bigger treating set رو استفاده کن، ولی حالا با اطمینان نمیشه همچین چیزی گفت، چون ممکنه این تفاوت error بخاطر متفاوت بودن فضا های دیتا باشه (واقعی و غیر واقعی)، پس تو این شرایط لازمه یه دسته دیتای جدیدی رو معرفی کنیم به اسم treating-dev set نحوه عملکردشم این مدلیه که یه بخش کوچیکی از treating set رو جدا میکنیم و اسمشو میذاریم treating-dev set و از این دسته برای آموزش شبکه عصبی استفاده نمیکنیم، بعدی میایم error هارو اندازه میگیریم و بسته به error ها طبق تکنیک Orthogonalization برای حل مشکل عمل میکنیم.