اگر در حوزه تحلیل داده و یادگیری ماشین فعالیت میکنید، احتمالا مواقعی پیش اومده که به سمت جمعآوری داده و ایجاد دیتاست رفتید. روشهای مختلفی برای جمعآوری داده وجود داره اما در این پست میخوایم یک مقاله از گوگل رو برای شما معرفی کنیم که سعی کرده یک چارچوب مدون برای جمعآوری داده ارایه کنه و در این راه از مفاهیم موجود در توسعه نرمافزار الهام گرفته.
اگر به یادگیری ماشین علاقه دارید همین امروز یادگیری را شروع کنید:
در این مقاله توضیح داده شده که فرآیند ایجاد دیتاست، یک فرآیند ۵ مرحلهای و چرخهای است که تصویر اون رو میتونید در پایین ببینید. این ۵ مرحله عبارتند از: بررسی نیازمندیها، طراحی، اجرا، تست و نگهداری که این ۵ مرحله نیز تداعی کننده متدولوژیهای مشهور در دنیای مهندسی نرم افزار هستند. نکته قابل توجه، تاکید گوگل بر تولید artifact در هر مرحله است. به این معنا که در هر مرحله باید داکیومنتی آماده بشه که به عنوان خروجی اون مرحله محسوب میشه و برای اون نیز تمپلیتهایی در انتهای مقاله آورده شده که کار رو روی زمین بیارند. توضیحات هر یک از این ۵ مرحله در یک جدول و در انتهای این پست در تصاویر آورده شده (ورق بزنید). یکی از مهمترین مراحل، مرحله تسته که به دو صورت تست پذیرش (برای اطمینان از تطابق با نیازمندیها) و تستهای خصمانه مطرح میشه و برای پیادهسازی هم همان متدهای معروف unit testing در مهندسی نرمافزار میتونه مورد استفاده قرار بگیره. مثلا فرض کنید چنانچه دیتاست از داخل یک سازمان جمعآوری میشه تستهایی طراحی بشه که از عدم افشای اطلاعات محرمانه شرکا اطمینان حاصل بشه. در ادامه هم برخی درسهایی که از حوزه مهندسی نرمافزار گرفتیم رو برای جمعآوری دیتاست هم اعمال میکنه. مثلا:
- به دیتاست به چشم یه گناهکار نگاه کنید مگر اینکه خلافش ثابت بشه (در واقع همیشه شکاک باشید که یه جای کار میلنگه و بابتش تست کیسهای مناسب طراحی کنید)
- پیشفرضهایی که باهاش به سراغ جمعآوری دیتاست رفتید رو گردآوری کنید و کنترل ورژن انجام بدید (در داکیومنت خروجی مرحله آنالیز نیازمندیها و یا طراحی میتونه دیده بشه)
- حتما در مسیر توسعه دیتاست، peer review داشته باشید که از نون شب واجبتره
- برای بررسی توزیع پارامترهای دیتاست از ابزارهای مصورسازی استفاده کنید. (یکی از سکشنهای تمپلیت مربوط به خروجی فاز آنالیز نیازمندیها که در انتهای مقاله اومده، distributional requirements هست که در اون توزیع لازم برای برخی پارامترها توضیح داده میشه. مثلا ممکنه دیتاست باید طوری جمعآوری بشه که فلان پارامتر توزیع نرمال داشته باشه و این واقعیت باید در داکیومنت فاز آنالیز نیازمندیها دیده بشه)
- حتما نواقص و محدودیتهای دیتاستتون رو بدونید و یادداشت کنید به جای اینکه روی سرش قسم بخورید
و در آخر باید بگیم که بارها موارد استفاده از پارادایمهای نرمافزاری در توسعه مدلهای یادگیری ماشین رو دیدیم و این بار شاهد استفاده از این پاردایمها در ایجاد دیتاست بودیم که اهمیت توانمندی در حوزه مهندسی نرمافزار رو برای دیتاساینتیست ها بیش از پیش نشون میده و در پایان فقط میتونیم بگیم ما دیتاساینتیستها به تو مدیونیم ای مهندسی نرمافزار!
لینک مقاله:
https://arxiv.org/abs/2010.13561
منبع این پست: کانال تلگرامی https://t.me/nlp_stuff