دقت در فرآیند افزایش و انتخابِ دیتا


دقت در فرآیند افزایش و انتخابِ دیتا

پیش از این پیرامون افزایش دیتا مطالب متفاوتی را ذکر کرده بودیم. از بهم نریختن توزیع داده ها تا بررسیِ تبدیلهای متنوع ولی در این پست قصد اشاره به نکاتی دیگر داریم که لازم است در این فرآیند لحاظ شود تا کار یادگیری شبکه ساده باشد. مثال را پیرامون یک نمونه عینی می زنیم. فرض کنید که می خواهید شبکه ای کانولوشنی را برای آموزش روی دادگانِ حروف انگلیسی استفاده کنید تا برای تسکی مثل OCR استفاده شود. در این حالت ممکن است برای هر کلاس دیتاها را افزایش دهید یا از فونت های متفاوت استفاده کنید و تکسچرهای متنوعی را در بکگراند دخیل کنید. به چند سوالِ مهم که لازم است قبل از افزایش و انتخابِ دیتا لحاظ شوند اشاره می کنیم:

برای هر کلاس چقدر می خواهید داده اضافه کنید؟

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

از چه تبدیل هایی می خواهید استفاده کنید؟

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

آیا تبدیلها مناسب واقعیت هستند؟

پ: اگر از تبدیلهای از پیش پیاده سازی شده می خواهید استفاده کنید، خیلی مراقب باشید؛ زیرا ممکن است برای بعضی از کلاس ها دردسر ساز باشند. تبدیل ریفلکشن برای حروف J و L می تواند مشکل ساز باشد. این موضوع را بسط بدهید به تمامیِ مسائل. یعنی برای اعمال یک تبدیل، سعی کنید تمامی کلاسها را در نظر بگیرید و گرنه شبکه ممکن است اشتباه بعضی از کلاسها را یاد بگیرد یا توزیع برخی کلاسها به هم بریزد و شما اصلا متوجه نشوید.

تصاویری که به عنوان تکسچر استفاده می شوند آیا واقعا ضروری هستند؟

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

اصلا نیاز به استفاده از تصویر رنگی وجود دارد؟

پ: اگر پس زمینه سفید باشد، یک انسان می تواند حروف را تشخیص دهد حال رنگی باشند یا نه، پس شبکه هم به همین شکل؛ یعنی لازم است در انتخاب خود دیتا و تغییر رنگش، خطای بیز را لحاظ کنیم که با تغییرات متفاوت انسان چگونه می تواند کار کند و به تبع شبکه چه کار می تواند بکند.



نوشته شده بوسیله: کامران پناهی
کامران پناهی

کارشناسی ارشد هوش مصنوعی

علاقه مند به یادگیری عمیق

مطالب مشابه