سلام من امید عرب هستم ، لیسانس مهندسی کامپیوتر از دانشگاه صنعتی اصفهان در گرایش هوش مصنوعی ، علاقه مند به ماشین لرنینگ و بلاکچین.
شروع یک مسئله ماشین لرنینگ با داده های کم قسمت ۴
سلام !
قبل از هرچیز اول یه سر به قسمت قبلی ( قسمت ۳ ) بزن و بعد بیا برای ادامه کار .
خب در ادامه قسمت سوم،در این قسمت قصد داریم به بررسی چند مقاله مرور ( survey ) در حوزه موضوع few shot learning بپردازیم .
مقالات survey مقاله هایی هستند که فرض میکنن شما دانش اولیه در مورد موضوع را دارید و صرفا به طبقه بندی تحقیقات انجام شده ، دورنمای این موضوع تحقیقاتی در آینده ، ارزیابی و مقایسه راهکار ها و روشهای اون میپردازن. در حقیقت در این مقالات،نویسنده چند مقاله دیگر رو بررسی کرده ( ۵-۸ تا) و خلاصه ای از اون ها،مقایسه روش های اون ها و... ارائه میده . سایت های خوبی که میشه از این مقالات درش پیدا کرد ، google scholar , Springer , ACM و... هستند.
موضوع few shot learning یکی از موضوعاتی بود که جزو راه حل ها مطرح کردیم و حالا میخوایم دقیق تر بررسی کنیم.
مقاله ی اول تحت عنوان "Generalizing from a Few Examples: A Survey on Few-shot Learning " هست که بررسی میکنیم .این مقاله ۱۶۶ مقاله ی دیگر را که در منابع لیست آنها را آورده بررسی کرده و survey آنرا ارائه میدهد.
۱-۱ و ۱-۲ ) معرفی و مقدمه :
در قسمت معرفی، به بررسی مفهوم ماشین لرنینگ و مثال هایی از اون میپردازه. سپس توضیح میده که چه زمانی ممکنه داده ها کم باشه ( مثلا به دلایل امنیتی،حریم خصوصی،مسائل اخلاقی و ...)و few shot learning به عنوان یکی از داغ ترین موضوعات ماشین لرنینگ ،چطور و به چه نوع مسائلی کمک میکنه. به طور مثال ،few shot learning میتونه در کاهش دادن بار جمع آوری اطلاعات لیبل بسیار کمک کننده باشه. موارد کاربرد اون در دسته بندی تصاویر،بازیابی تصاویر،تشخیص ژست،تشخیص واقعه در ویدیو و... هستند.
همچنین approach های مختلف این مسئله شامل متا لرنینگ ، یادگیری تعبیه شده و مدل های مولد رو بیان میکنه.
روند مقاله به این صورت هست که
- ابتدا یک تعریف کلی از FSL میده ( همون few shot learning )
- بعد از اون لیستی از مسائل مرتبط با FSL رو بیان میکنه و ارتباط و تفاوت شون رو بررسی میکنه.
- سپس به مسئله اصلی FSL در مسائل supervised که همان حداقل کردن خطای تجربی ِ غیر قابل اطمینان هست میپردازه که بر اساس تجزیه خطا صورت میگیره.
- ارائه دادن یک دید کلی از data ،model و algorithm که سه دسته کلی برای بررسی موضوع هست ارائه خواهد شد و در مورد مزایا و معایب صحبت خواهد کرد .
- در نهایت پیشنهاد هایی برای آینده ی FSL در مورد setup ,techniques و application ها داده خواهد شد.
۱-۲) تعریف FSL :
مسئله ی FSL یک زیر موضوع از ماشین لرنینگ است . ماشین لرنینگ یک مسئله ی یادگیری بر اساس تجربیات ( داده های ترین ) زیادی است که مسئله از قبل دارد و FSL یک مسئله ی ماشین لرنینگ با نظارت بوده که تجربیات آن( داده ترین ) کم است . گاهی به آن N-way-K-shot هم میگن که شامل i تا داده ترین در N کلاس و هر کلاس K شات است ( i=NK)
مثلا در مثال بالایی ، یک مسئله ی تولید کاراکتر به صورت دست خط با تعداد اندکی داده ی سمپل و دانش از قبل داشته ی روابط و اجزای مسئله ، کار یادگیری را انجام داده و معیار ارزیابی آن هم پاس شدن تست تورینگ ( عدم تشخیص دست خط انسان یا ماشین توسط یک discriminator ) است .
نکته اینجاست که در مسائل یادگیری ماشین معمولی ، ما فقط "supervised information" را برای داده هایمان داریم ، اما در مسائل با داده اندک ( FSL ) به تنهایی این مورد کافی نیست ( چون حجم اندکی دارد ) و برای همین به دانش قبلی " prior knowledge" نیاز دارد . ( مثل متد Bayesian network )
دانش قبلی عبارت است از :هر گونه اطلاعاتی که یادگیرنده در مورد عملکرد ناشناخته ای قبل از دیدن سمپل ها از قبل دارد.
نکته : چنانچه مجموعه ی "supervised information" برای هر کلاس فقط یک تصویر داشته باشد ، one shot learning گفته و اگر خالی باشد zero shot learning گوییم ( ZSL )
۲-۲) مسائل مرتبط با FSL و مقایسه آنها :
- مسئله ی Weakly supervised learning یک مسئله ی یادگیری با داده های ضعیف اصطلاحا نامیده میشود که داده های آن ( ناقص ، نادقیق ، نادرست و پر از نویز هستند ). مسئله ی FSL نیز ، همین داده های ضعیف را داراست که فقط تعداد خیلی کمی از سمپل ها اطلاعات به درد بخور دارند .
براساس اینکه یک معلم ( یا به اصطلاح oracle ) دخالتی در یادگیری بکند یا نه میتوان این مسائل را تقسیم کرد
۱- مسائل Semi-supervised learning : ترکیبی از تعداد کمی داده برچسب دار و تعداد زیادی بدون برچسب
۲- مسائل Positive-unlabeled learning : مورد خاصی از Semi-supervised learning است که در آن فقط نمونه های مثبت و بدون برچسب را به مسئله داده میشود .
۳- مسائل Active learning : که داده های بدون برچسب را توسط یک معلم یا اوراکل به طور تعاملی برچسب دار میکند.
بر اساس این سه مواردی که گفته شد، weakly supervised learning فقط شامل مسائل با برچسب و بدون برچسب هست اما FSL مسائل reinforcement learning ( یادگیری تقویتی بر اساس سیستم پاداش ) را هم شامل میشه. مسائل weakly supervised learning از فقط از داده های بدون دیتا به عنوان داده اضافی استفاده میکنند در حالی که FSl از انواع مدل های از پیش یادگیری شده ، داده ها در دامنه ها و مدل های دیگه هم برای یادگیری استفاده میکند .
- مسئله ی بعدی Imbalanced learning است. این مسئله با داده های نامتوازن ( مثلا داده هایی که به ندرت رخ میدهد مثل کشف موارد نادر مثبت یک بیماری ) سروکار دارد.در مقابل FSL که یادگیری را با تعداد سمپل اندک و از روی دانش قبلی بدست می آورد ، این مسئله آموزش میبیند که بین همه ی داده های مثبت یکی را انتخاب کند.
- مسئله بعدی transfer learning است . در قسمت های قبلی به طور سربسته گفتیم که few/zero/one shot learning به نوعی transfer learning هستند اما این تعریف کامل نیست.
یادگیری انتقالی به طور دقیق تر مسئله ای است که از source domain/tasks با داده ی فراوان به target domain/task با داده اندک دانش را انتقال میدهد. Domain adaptation نوعی از transfer learning است که task های منبع و هدف یکسان اما دامنه آنها متفاوت است .ترنسفر لرنینگ در FSL استفاده میشود و با تغییرات اندکی روی آن مناسب مسائلی میشود که داده سمپل بسیار کمی دارند.
- مسئله ی بعدی دسته مسائل meta-learning هستند .این مسائل یادگیری را با دیتای فراهم شده و یادگیری استخراج شده در حین کار توسط متالرنر صورت میدهد. در حقیقت به آن یادگیری برای یادگیری گفته میشود. ایم مسئله در مسائلی مثل learning optimizers ، dealing with the cold-start problem in collaborative filtering و guiding policies by natural language استفاده شده است .
متد هایی که در متالرنینگ به کار گرفته میشود در FSL نیز میتوان به کار گرفت . در حقیقت بخش meta learner درون متالرنینگ به عنوان prior knowledge در نظر گرفته میشود .
- ۲-۳) مسئله ی اصلی :
در اکثر مسائل ماشین لرنینگ ، خطای پیش بینی وجود دارد که ما را به بهترین حالت پیش بینی نمیرساند . ما در مورد تجزیه کردن این خطا برای بکار بردن اون در FSL صحبت میکنیم.
خطای ریسک تجربی یا همان (Empirical Risk Minimization) با فرمول زیر نشان داده میشود :
برای اطلاعات بیشتر در مورد مسئله ERM تحقیق کنید. نکته ای که کافیست بدانیم این هست که هرچه تعداد نمونه های ما بیشتر شود خطا کمتر خواهد شد.در FSL برای مینیمم کردن این خطا باید از دانش قبلی استفاده کرد.
- ۲-۴) مسئله taxonomy (طبقه بندی):
براساس اینکه برای مینیمم کردن خطای تجربی باید از دانش قبلی استفاده کنیم ، پیکربندی موضوع را به صورت زیر تعریف میکنیم :
۱- دیتا :
این متد ها برای افزایش داده ی ترین با استفاده از دانش قبلی استفاده میشوند و تعداد سمپل ها را زیاد میکنند ( augmentation )
۲- مدل :
این متد ها تلاش میکنند تا با استفاده از دانش قبلی پیچیدگی فضای فرضیه ها (H) را کاهش دهند.
۳-الگوریتم :
این متد تلاش میکند تا با استفاده از دانش قبلی به دنبال تتا ای بگردد که بهترین h را در H را بیان کند. دانش قبلی استراتژي این جستجو را با فراهم کردن مقداردهی اولیه و هدایت کردن گام های جستجو فراهم میکند.
۳) دیتا :
در دسته بندی بالا ابتدا به مورد دیتا پرداخته میشود، در این مقاله ابتدا روش های دستی augmentation را بررسی میکند،روش هایی مثل flip ، crop، rotation و... سپس به این موضوع میپردازد که این روش هم هزینه ی زیادی تحمیل کرده و هم همه ی حالت های ممکن را در بر نمیگیرد . بنابراین به روش های زیر میپردازد :
۳-۱) دسته ی transforming samples from D_train :
در این استراتژي داده های train به چندین sample تبدیل میشوند به طوری که پروسه ی این transformation به عنوان دانش قبلی برای تولید تصاویر جدید در نظر گرفته میشود. در حقیقت یک transformer یادمیگیرد که چگونه از روی داده های ترین داده های مشابه تولید کند و یک دیتا ست بزرگ بسازد. سپس این دیتاست بزرگ به یک مسئله ماشین لرنینگ داده میشود.
سپس دو رفرنس شماره 53 و 74 را بررسی میکند. در رفرنس 53 فرض میشود که همه ی دسته ها متغییر های transformable خودشون رو با هم اشتراک گذاری کرده و یک transformer یادمیگیرد که تغییرات بین جفت سمپل ها را از دیگر کلاس ها به (xi , yi ) خودش منتقل کند. در رفرنس ۷۴ بجای برشمردن متغییر های جفت سمپل ها ، هر xi را به چندین سمپل با استفاده از مجموعه ای از ویژگی های قدرتمند مستقل رگرسیون ( که از مجموعه بزرگی از تصاویر یادگرفته شده ) transform کرده و label مربوط به xi اصلی را به سمپل های جدید اختصاص میدهد. هم چنین بیان میکند که یک زیرفضای پیوسته ای از اتریبیوت ها برای اضافه کردن تغییرات اتریبیوت ها به X اضافه میشود.
۳-۲) دسته ی Transforming Samples from a Weakly Labeled or Unlabeled Data Set :
این استراتژی D train را به وسیله ی انتخاب سمپل هایی شبیه به label هدفی که داریم از یک مجموعه بزرگ که به طور ضعیف لیبل گذاری شده یا اصلا نشده است ، افزایش میدهد.
مثلا در یک ویدیو ، گوینده حرکات بسیار زیادی انجام میدهد و میتوان از این حرکات استفاده نمود. اما مسئله ی اصلی نحوه ی انتخاب سمپل ها است .
در رفرنس ۱۰۲ از یک svm برای یادگیری هر لیبل هدف در D train استفاده شده که لیبل را برای سمپل های با برچسب گذاری ضعیف پیش بینی میکند. نهایتا آن هایی که لیبل مشابه با لیبل هدف دارند به D train اضافه میشوند .
در رفرنس ۳۲ ، به جای یادگیری یک classifier ، از label propagation برای لیبل زدن دیتا ست بدون لیبل استفاده میشود .
در رفرنس ۱۴۸ ، از یک استراتژی progressive استفاده شده است. سمپل های انتخابی به برچسب های pseudo-label اختصاص میبابند و CNN مورد نظر آپدیت میشود.
۳-۳) دسته ی Transforming Samples from Similar Data Sets :
این استراتژي D train را با aggregate کردن و adapt ورودی و خروجی های یک دیتا ست مشابه اما بزرگ تر ، افزایش میدهد. وزن هایی بر اساس میزان مشابهت بین سمپل ها اختصاص می یابد.
در رفرنس ۱۳۳ ،وزن ها از یک مجموعه متن کمکی استخراج میشود.
در رفرنس ۴۶ ، از آنجایی که ممکن است نمونه های ها استخراج شده از کلاس هدف FSL نباشند افزایش دادن مستقیم سمپل های aggregate شده ممکن است موجب گمراهی شود به همین منظور از GAN استفاده میشود که طراحی شده تا x های مصنوعی غیر قابل تشخیصی را تولید نماید.
در رفرنس ۴۲، دو جنریتور هست، یکی برای مپ کردن سمپل های FSL به کلاس بزرگتر و دیگری برای مپ کردن سمپل ها از یک کلاس بزرگتر به FSL ( جهت جبران کمبود داده های در GAN )
۳-۴) خلاصه و مقایسه :
انتخاب هر کدام از استراتژي ها بستگی به کاربرد دارد. گاهی تعداد زیادی سمپل با برچسب ضعیف یا بدون برچسب داریم اما از FSL استفاده میکنیم چون هزینه ی زیادی جهت جمع آوری داده ها و هزینه محاسبات آن باید بپردازیم.در این حالت میتوان از روش دوم استفاده کرد.
زمانی که جمع آوری یک دیتا ست بزرگ بدون لیبل دشوار باشد، اما کلاس های few shot مشابهی موجود باشد ،میتوان سمپل ها را از این ها استخراج کرد .( روش اول )
استفاده از روش افزایش دیتا ، کار FSL را بسیار آسان میکند اما مشکل اینجاست که اغلب سیاست افزایش داده معمولا برای هر data set مخصوص است و نمیتوان در data set های دیگر بکار برد. برای رفع آن در رفرنس ۲۷ روش autoaugment پیشنهاد شده که به طور خودکار سیاست نحوه افزایش داده را می آموزد . علاوه بر این مشکل ، متد های گفته شده عموما برای تصاویر به کار برده میشود این درحالی است که برای متن و صدا که دارای ساختار بوده و دشوار تر هستند در رفرنس ۱۴۴ پیشنهاد هایی شده است .
خلاصه قسمت چهارم :
این قسمت از آموزش، دارای متن کمی سنگین تر و گاها نامفهوم بود. از آنجایی که مقالات survey خلاصه شده ای از چندین مقاله هستند و شرح کاملی ندارند ، برای فهم کامل و درک عمیق باید به رفرنس هایی که مابین متن معرفی میکند مراجعه و دقیق تر مطالعه نمود.
در این قسمت ، به تعریف مقاله ی survey پرداختیم و یک مقاله در زمینه FSL را برای مرور انتخاب کردیم. ابتدا یک معرفی از کلیت مقاله، سپس معرفی خود FSL ، مقایسه ی آن با مسائل مشابه ، مسئله ی ERM یعنی کم کردن ریسک تجربی را مطرح کردیم و به یک طبقه بندی اصلی پرداختیم . گفتیم در این طبقه بندی ، دیتا ، مدل و الگوریتم مورد بررسی قرار میگیرد که در این قسمت مدل را بررسی کردیم و سه استراتژی برای افزایش آن ارائه دادیم. نهایتا این سه استراتژي را با هم مقایسه کردیم .
- در قسمت بعدی : به ادامه ی این مقاله و مبحث مدل و الگوریتم خواهیم پرداخت .
نکته : برای جمع آوری این مطلب ، از مقاله ی "Generalizing from a Few Examples: A Survey on Few-shot Learning " استفاده کرده ایم.
از اینکه تا این ۴ قسمت اصلی همراه ما بودید ، سپاسگذارم و منتظر نظرات و پیشنهادات شما هستم.
مسلما این آموزش دارای اشکالاتی نیز هست که بسیار خوشحال میشم با من مطرح کنید.
مطلبی دیگر از این انتشارات
نصب و راه اندازی Anaconda | مهدی مشایخی
مطلبی دیگر از این انتشارات
تشخیص بیماری پارکینسون به وسیله هوش مصنوعی?
مطلبی دیگر از این انتشارات
توسعه شهر هوشمند با اینترنت خدمات Internet of Services (IoS)