فرایادگیری (Meta-learning)  در یادگیری ماشین (2)

مقدمه :مدل های یادگیری، معمولا برای اینکه بتوانند بدرستی مسئله ای که برای آن پیاده سازی می شوند را حل کنند ، نیازمند حجم زیادی از داده های غالبا برچسب خورده ، متناسب با آن مسئله می باشند . در یک الگوی کلی و سنتی ، پس از جمع آوری این داده ها ، یک الگوریتم متناسب با نوع مسئله و داده های در دسترس انتخاب شده و این الگوریتم یادگیرنده بر روی این داده ها پیاده سازی می شود باامید اینکه پس از آموزش بتواند آن مسئله ی خاص را با دقت قابل قبولی حل کند . اکثر مدل های یادگیری ماشین معمولا به همین شکل ، برای هر مسئله جدید مهندسی میشوند و از ابتدا فرآیند آموزش را طی میکنند تا دوباره بتوانند آن مسئله جدید را حل کنند . در یادگیری ماشینی سنتی تر ، معمولا توسعه دهنده می بایستی برای مسئله ، نمونه های آموزشی را فراهم میکرد که هر نمونه دارای چندین ویژگی (features) می باشد . ویژگی های که برای آموزش مدل از آنها استفاده می شود ، میباستی دارای بهره اطلاعاتی قابل قبولی باشند و با کنار هم قرار گرفتند بتوانند مجموعه داده ای را فراهم کنند که مدل یادگیرنده بتواند با یادگیری ازآن ویژگیها و کشف الگوهای مابین آنها ، خطای خود را کاهش دهد و به دقت قاب قبولی برسد . چالش اصلی در این الگوی توسعه ، گاها دشواری انتخاب ویژگی ها و مهندسی آنها می باشد . چراکه یادگیری مستقیما از طریق ویژگی های هر نمونه آموزشی و برچسب مرتبط با آن می باشد .اما با پیشرفت شبکه های عصبی ( و به کل یادگیری عمیق ) نیاز به انتخاب و مهندسی ویژگی بطور دستی تا حد زیادی کاهش یافته است . چرا که ماهیت شبکه های عصبی مصنوعی به گونه ای می باشد که در طی فرآیند آموزش می توانند به خودی خود مهندسی ویژگی ها را انجام داده و بخش های مهمتر از تمام ویژگی های یک داده را به خودی خود تشخیص دهند . اما شبکه های عصبی مصنوعی برای اینکه بتوانند بدرستی فرآیند آموزش خود را طی کنند ، نیازمند حجم (بسیار) زیادی از داده های آموزشی می باشند ( بسیار بیشتر از الگوریتم های کلاسیک تر همانند SVM ). دقت یک مدل عصبی ، تا حدودی همبستگی زیادی با تعداد پارامتر هایش دارد و هر چه تعداد این پارامترها بیشتر میشود ، نیازمند حجم بیشتری از داده های آموزشی غالبا برچسب خورده می باشیم تا بتوانیم مدل را آموزش دهیم . معملا در سناریو هایی که حجم زیادی از داده های برچسب خورده در دسترس بوده است ( و یا طی فرآیند های معمولا پرهزینه جمع آوری شده است )، نتایج حاصل از آموزش شبکه های عصبی مصنوعی بسیار امیدوار کننده بوده است . اما چالش اصلی زمانی بوجود می آید که :1 . برای یک مسئله ، داده آموزشی در دسترس نباشد .2 . در صورت در دسترس بودن داده آموزشی ، تعداد آنها بسیار ناچیز باشد.3 . جمع آوری داده های جدید تر امکان پذیر نباشد و یا هزینه بسیاز زیادی داشته باشد .4 . منابع محاسباتی زیادی در اختیار نباشد .5 . محیطی که قرار است مدل برای آن ساخته شود تا زمان اجرا ویژگی هایش ناشناخته باشد.6 . … .در این شرایط ، توسعه یک شبکه عصبی به روش های مرسوم ، امکان پذیر نمیباشد و اگر نیز پیاده سازی شود ، عملکرد قابل قبولی نخواهد داشت .در سالهای اخیر ، دانشمندان با مطالعه ویژگی های فرآیند یادگیری انسان متوجه شده اند که روش و توانایی یادگیری یک انسان بسته به نوع محیط و نوع داده ها ( به عبارتی همان ورودی ها بر اساس حواس خود ) می تواند متفاوت می باشد . به عبارتی دیگر استراتژی یادگیری انسان در شرایط مختلف ، متفات می باشد و هر بار به روشی خاص بسته به نوع مسئله ای که با آن سروکاردارد ، این کار را انجام می دهد . می توان گفت که یک انسان از همان ایام کودکی خود ، با برخورد با مسائل مختلف ، به تدریج یاد میگیرد که چگونه می تواند یاد بگیرد . یادگیری نحوه یادگیری سطح بالاتری از خود یادگیری است . بنابراین این گونه نیست که مغز انسان بخواهد ازهر مسئله به شکلی یکسان بیاموزد . نتیجه این شیوه یادگیری این است که یک انسان در برخورد با مسائل جدید ، می تواند تنها با چندین نمونه و مثال ازآن و یا حتی گاها بدون هیچ مثالی و صرفا بر اساس تعریف آن مسئله جدید ، درک قابل قبولی از آن پیدا کند و بتواند عملکردی مناسب در مواجهه با آن مسئله داشته باشد .برای مثال به دو تصویر زیر توجه کنید :تصویر سمت راست : پولک پوست ، جانوری شب زی با حس بویایی قوی که از حشره ها تغذیه میکند . معمولا در آسیای مرکزی و آمریکای لاتین زندگی میکند تصویر سمت چپ : آرمادیلو یا زرهدوز ، پستاندار کوچکی است بسیار نادر ، که به خاطر پوسته سخته بدنش آن را یا این نام می خوانند . این پستاندار در قاره آمریکا زندگی میکند . برای چند ثانیه به تصاویر بالا بنگرید و یان دو جانور را با هم مقایسه کنید . به احتمال شما اولین بار است که این جانوران را می بینید و قبلا جاندران دیگر را به خوبی می شناختید . حالا به تصویر زیر دقت کنید:اگر فرض کنیم شما در زندگی خود حتی یکبار هم نام این دو جاندار را نشنیده اید ، اما به راحتی می توانید تشخیص دهید که این تصویر ، جانوری ازنوع تصویر سمت راست ( پولک پوست) در بالا می باشد . ذهن شما توانایی یادگیری و شناسایی این جاندار را تنها با یک تصویر را دارد ، هر چند که قبلا حتی یکبار هم عکسی از این جاندار را ندیده بودید . در بدترین حالت اگر نمی توانستید با یک عکس اولیه آن را تشخیص دهید ، با افزودن تعداد انگشت شماری عکس به تصاویر بالا ، به احتمال فراوان می توانستید از حالا به بعد ، این دو جاندار در هر تصویری را تشخیص دهید . اما آیا یادگیری برای کامپیوتر ها نیز به همین سادگی امکان دارد ؟ اگر در حین آموزش مدل ، تصویری از پولک پوست در مجموعه آموزشی نباشد ، آیا مدل می تواند بعدا آن را تشخیص دهد ؟ حتی اگر تصویر پولک پوست در مجموعه آموزشی وجود داشته باشد ، آیا مدل می تواند با همین تعداد بسیار کم ( در این مثال ، یک تصویر برای انسان ) توانایی تشخیص آن را پیدا کند ؟پاسخ در حالت عادی ، خیر است .حال مثالی از مقایسه یادگیری انسان در مقابل یک برنامه کامپیوتری می زنیم.فرض کنید می خواهیم یک شبکه عصبی برای طبقه بندی تصاویر بالا آموزش دهیم . برای اینکار می بایستی :1. یک شبکه عصبی Multi class classifierرا طراحی کنیم.2. برای هر طبقه/ کلاس تعداد تقریبا زیادی نمونه آموزشی جمع آوری کنیم.3. پس از انجام پیش پردازش های لازم ، شبکه عصبی را آموزش دهیم .شبکه عصبی ما پس از آموزش تنها توانایی طبقه بندی تصاویری را دارد که متعلق به یکی از کلاس های موجود در مجموعه داده آموزشی می باشد . پس اگر تصویر زیر را بعنوان ورودی به شبکه بدهیم ، شبکه عصبی با یک علامت سوال بزرگ مواجه می شود .یک برنامه کامپیوتری پس از آموزش تنها می تواند تصاویری را تشخیص دهد که قبلتر تعداد زیادی از نمونه های مشابه آنها را پردازش کرده باشد . به عبارتی ها میتواند تنها در مسئله ای استفاده شود که صرفا برای آن آموزش دیده است . تمام ! پس دوباره به محدودیت هایی رسیدیم که در اول بحث به آنها اشاره کردیم . حال چاره چیست؟ آیا برنامه هایی وجود دارند که بتوانند کاری به جز آنچه که قبلا بر روی آن آموزش دیده اند انجام دهند ؟ چگونه می توانیم مدل هایی آموزش دهیم که بتوانند با حداقل داده به یک مسئله جدید آگاه شوند و بتوانند آن را حل کنند؟ برای پاسخ به این سوال باید به روش انجام این کار توسط انسان فکر کنیم .فرایادگیری/ Meta-learning :شاید ما قبلا تصاویر زیادی از حیوانات مختلف را دیده باشیم و بتوانیم نمونه جدید ولی مشابه با آن حیواناتی که قبلا با آنها آشنا هستیم را تشخیص دهیم و برچسب بزنیم . این کار را برنامه کامپیوتری نیز پس ازآموزش می تواند انجام دهد . ولیکن ما به عنوان یک انسان میتوانیم با دیدن تعداد اندکی از تصاویر یک جاندار جدید که نمونه آن را ندیده ایم ، به راحتی به ویژگی های آن پی ببریم و می توانیم آن را با سایر حیواناتی که قبلا با آنها آَشنا هستیم ، مقایسه کنیم .در حالی که یک مدل کامپیوتری ، در حالت عادی ، در تحلیل تصاویر جدید و به کل داده هایی که قبلتر نمونه مشابه آن را ندیده است ، ضعف دارد و عملا درکی از آن ندارد . تفاوت چیست؟انسان در طول زندگی خود یادگرفته است که چگونه می تواند یاد بگیرد . به همین دلیل وقتی با مسئله ای جدید با داده های جدید روبرو میشود ، تنها با تعداد کمی مثال ، می تواند ویژگی های آن مسئله جدید را شناسایی کند و عملکردی متناسب با آن مسئله را داشته باشد . اما یک برنامه کامپیوتری در حالت عادی تنها می تواند با طی کردن فرآیندی موسوم به آموزش (Training) ، از داده های اولیه خود یاد بگیرد و پس از اتمام یادگیری خود ، نمی تواند داده ها و مسائل جدید را به درستی پردازش کند . چرا که یک برنامه کامپیوتری در حالت عادی همانند یک انسان توانایی یادگرفتن نحوه یادگیری متناسب با مسئله جدید را ندارد . از گذشته روش های مختلفی برای پیاده سازی این ویژگی انسانی در قالب یک مدل کامپیوتری / مدل هوش مصنوعی امتحان شده است . اما در سالهای اخیر ، با آشکار شدن قدرت فوق العاده شبکه های عصبی مصنوعی (Artificial Neural Networks / ANN) ، تحقیقات پیرامون این موضوع بسیار داغ تر شده است و در مدتی کم ، نتایج ارزشمندی حاصل شده است .پس می توانیم فرایادگیری (متالرنینگ یا Meta-learning) را اینگونه تعریف کنیم :یادگیری اینکه چگونه یاد بگیریم . یادگیری اینکه در برخورد با مسائل جدید ، چگونه می توانیم با تعداد اندکی نمونه و مثال ، آن مسئله را درک کنیم. فرایادگیری ، یادگیری فرآیند یادگرفتن است . فرایادگیری یکی از زیر شاخه های ماشین لرنینگ ( و در کل هوش مصنوعی ) می باشد که هدف آن ، توسعه برنامه هایی می باشد به قادر باشند همانند یک انسان ، تنها با دیدن چندین نمونه از یک مسئله وشرایط جدید ، ویژگی آن را درک کنند و بتوانند خو را با آن تطبیق دهند .هدف یک الگوریتم فرایادگیری ، یادگیری نحوه یادگیری است.بدین ترتیب :1. نیاز به جمع آوری داده برای آن مسئله جدید ، که گاها پرهزینه میباشد ، به حداقل می رسد .2. دیگر نیازی نیست که برای هر مسئله جدید ، مجددا یک مدل جدید آموزش دهیم .هوش مصنوعی هایی که بر اساس یک مکانیزم فرایادگیری آموزش می بینند درنهایت دارای ویژگی های زیر خواهند بود :1. می توانند تا حدودی مسائلی را انجام دهندکه بر روی آن آموزش ندیده اند .( ولی آنها یادگرفته اند که چگونه میتوانند مسئله جدید را یاد بگیرند )2. وابستگی به مسئله خاصی ندارند . (Task-agnostic)3. بطور کلی یک فرایادگیر می بایستی در برخورد با مسائل جدید ، با افزایش تعداد نمونه هایی که از آن مسئله می بیند ، دقتش بالا برود.فرایادگیری بطور کلی ، مفهومی انتزاعی تر نسب به یادگیری دارد . به همین دلیل ممکن است در برخی مسائل بیان کردن تعریفی از فرایادگیری متناسب با آن مسئله کمی دشوار باشد .نکته : معمولا به تعداد نمونه های آموزشی از یک مسئله جدید که یک فرایادگیر برای تطابق خود با آن جدید ، پردازش میکند ، shot گفته میشود . پس few-shot learning حالتی است که مدل فرایادگیر ما خود را با تعداد کمی نمونه آموزشی از مسئله جدید بهینه میکند . همچنین one-shot learning به معنای بهینه سازی مدل تنها با یک نمونه آموزشی برای یک مسئله جدید می باشد و در نهایت zero-shot learning به معنای بهینه سازی مدل بدون هیچگونه نمونه آموزشی از آن مسئله هدف می باشد . روش های فرایادگیری :به دلیل انتزاعی بودن این مفهوم نمی توان صریحا بیان کرد که ، فرآیادگیری روش یا روش های به خصوصی دارد . اما در ادامه به برخی از روش های کلی که در سالهای اخیرا موفق به پیاده سازی این شیوه یادگیری بوده اند اشاره میکنیم :Metric-based meta-learning: (فرایادگیری مبتنی بر یک معیار)هدف این روش های فرایادگیری ، فراگیری نحوه نگاشت نمونه های یک مسئله در یک فضای برداری به نحوی می باشد که نمونه های مشابه ( دارای ویژگی های شبیه به هم) ، قریب به هم قرار گیرند . در این روش های ، تابعی فراگرفته میشود که هر نمونه از مسئله را به نقاطی از یک فضای برداری (vector space) نگاشت میکند . نمونه های موفقی از این دسته روش ها در مسائل few-shot classification پیاده سازی شده است (طبقه بندی تصاویر جدید با تعداد اندکی از تصاویر برچسب خورده با آن نمونه ).به عنوان مثال : ( هدف یادگیری تابعی است که بتواند یادبگیرد نمونه های مشابه از یک کلاس جدید را تشخیص دهد و آنها را دریک فضای برداری ، قریب به هم نگاشت کند . )این تابع ، بر روی تعداد زیادی داده ه ای که برچسب آن به راحتی در دسترس است ، آموزش می بیند .در طی آموزش با این مکانیزم ، مدل به تدریج یاد میگیرد که چگونه می تواند ویژگی های تصاویر را برای مقایسه کردن استخراج کند . در نهایت با دیدن تصاویر از یک مسئله جدید ، می تواند ارتباط بین آنها را کشف کند . در مثال زیر ، مدل ما در حین آموزش نمونه مشابه ای از تصاویر زیر را ندیده است. ولیکن یادگرفته است که چگونه میتواند تصاویر ناشناخته را به یکدیگر مقایسه کند :شبکه عصبی سیامی (Siamese Network) نوع خاصی از روش های مبتنی بر معیار می باشد . Optimization-based meta-learningاین دسته از روش ها بربهینه سازیالگوریتم ها به نحوی تمرکز دارد که بتوانند به سرعت با بهینه سازی وزن های مدل با تعداد کمی نمونه آموزشی، خود را با مسئله جدید وفق دهد . یادگیری تقویتی (Reinforcement learning) می تواند نمونه ای از این روش ها باشد .سایر روش های فرایادگیری :Model-Agnostic Meta-learning (MAML)Model-Based Meta-learningMemory-Augmented Neural NetworkMeta NetworksBayesian Meta-learningجمع بندی :فرآیادگیری ، روشی برای یادگیری نحوه یادگیری است .فرایادگیری ، باعث بهینه سازی مدلها در مدت زمان کوتاه تری میشود .فرآیادگیری باعث تعمیم بهتر مدلها می شود و در نتیجه می توان از یک مدل با حداقل بهینه سازی برای چندین مسئله استفاده کرد .فرآیادگیری باعث میشود مدل های هوش مصنوعی در محیط های ناشناس عملکرد معقول تری از خود نشان دهند .برای آموزش یک مدل فرایادگیر، به داده کمتری نیاز داریم .اینگونه مدلها ، انعطاف پذیری بالاتری دارند و می توان در مسائل مختلفی از آنها استفاده کرد.در یک مدل فرآیادگیر، نیاز کمتری برای بهینه سازی پارامترهای اصلی داریم . چراکه خود مدل می بایستی یاد بگیرد که خود را بهینه کند .سیستم هوش مصنوعی فرایادگیر ، گامی بزرگ درجهت رسیدن هوش مصنوعی در سطح انسانی می باشند.… .منابع :Meta-Learning in Neural Networks: A Survey (https://arxiv.org/abs/2004.05439)Few-Shot Object Detection: A Comprehensive Survey (https://arxiv.org/abs/2112.11699)https://www.geeksforgeeks.org/meta-learning-in-machine-learning/https://www.youtube.com/@ShusenWangEng