فرایادگیری یا (Meta Learning) در یادگیری ماشین (1)

متالرنینگ در یادگیری ماشین یعنی چه ؟ همین ابتدای مطلب نکته ای است که می بایستی به آن اشاره کرد . وقتی می گوییم فرایادگیری در یادگیری ماشین ، منظورمان میتواند دو مفهوم مختلف باشد که با هم اشتراکاتی دارند . در این مقاله ما ابتدا به فرایادگیری در مفهوم کلاسیک تر می پردازیم . اما توصیه میکنم که مقاله بعدی در خصوص دیگر مفهوم آن در یادگیری ماشین را نیز مطالعه فرمایید . متالرنینگ در مفهوم کلاسیک تر: در یادگیری ماشین ، به الگوریتم هایی که از رفتار الگوریتم های دیگر یاد میگیرند ، فرایادگیر می گویند و به فرآیند آموزش فرایادگیر ها ، فرایادگیری یا متالرنینگ گفته می شود . بعبارتی دیگر فرایادگیری در یادگیری ماشین، به الگوریتم های یادگیری اشاره دارد ، که از سایر الگوریتم های یادگیری یاد می گیرند . معمولا ، این به معنای استفاده از الگوریتم های یادگیری ماشینی است که یاد میگیرند چگونه پیش بینی سایر الگوریتم های یادگیری ماشین را در زمینه یادگیری گروهی به بهترین شکل ترکیب کنند .برای درک بهتر می تواند این مفهوم را اینگونه تشبیه کرد :یک شرکت مالی را در نظر بگیرید که متشکل از یک رییس و سه کارمند می باشد . کار اصلی این شرکت تصمیم گیری برای خرید سهام جهت کسب سود است . روش کاری آنها نیز بدین صورت می باشد : هر بار که جلسه ای برای تصمیم گیری در خصوص خریدن یا نخریدن سهام باشد ، هر سه کارمند بر اساس دانش و تجربه شخصی خود و دیتای در دسترس ، نظر خود را به رییس اعلام میکند . بدین ترتیب رییس شرکت ، نظر هر یک از سه کارمند خود را دراختیار دارد . نکته مهم این است که هر یک از کارمندان ، مستقلا و فقط بر اساس دانشی که قبلا از بازار کسب کرده اند، نظر خود را به رییس اعلام میکند و هیچ وابستگی به کارمندان دیگر ندارد . حال تصمیم گیرنده نهایی برای خریدن یا نخریدن سهام ، رییس است . رییس به نوبه خود شناخت کافی از هر یک ازکارمندان خود را دارد و می داند که رفتار هر یک ازآنها در شرایط مختلف بازار چگونه است و هر بار با توجه به شرایط بازار می بایستی بیشتر به نظر کدام یک توجه کند . بنابراین در اینجا رییس تصمیم نهایی خود را بر اساس نظرات مختلف کارمندان خود میگیرد . به عبارتی خروجی حاصل از تحلیل هر یک از کارمندان بعنوان ورودی تصمیم گیری به رییس داده میشود و تصمیم نهایی را شخصی که در سطح بالاتری قرار دارد انجام می دهد .تشبیه مکانیزم یک مدل فرایادگیریاما Meta به چه معناست ؟ این کلمه اشاره به سطحی بالاتر دارد. معمولا از این کلمه برای بالا بردن سطح انتزاع استفاده میشود و اشاره به اطلاعاتی درباره اطلاعات دیگر دارد. بعنوان مثال حتما تاکنون کلمه ی “Meta-data” را شنیده اید : به داده هایی که توصیف گر داده های دیگر می باشند ، Meta-data می گویند . فرایادگیری / Meta Learning : فرایادگیری به یادگیری در مورد یادگیری اشاره دارد .به عبارتی دیگر به فرآیند یادگیری یک الگوریتم بر اساس خروجی الگوریتم های دیگر به عنوان ورودی خود ، فرایادگیری یا Meta Learning می گویند . در یک پروژه یادگیری ماشین ، ممکن است به نقطه ای برسیم که مدل های مختلفی را برای پیش بینی مستقیما بر روی دیتا خود آموزش داده ایم . به عنوان مثالی دیگر فرض کنید ، برای یک مسِئله طبقه بندی ، مدل های زیر را مستقیما برای پیش بینی بر روی داده های خود ترین کرده ایم :A Support vector machine classifierA Logistic regression classifierA Decision tree classifierمعمولا در چنین حالتی ، می بایستی این سه مدل را بر روی داد های مختلف تست ارزیابی کنیم و تصمیم بگیریم که در شرایط مختلف از کدام یکی از این سه مدل برای تصمیم گیری استفاده کنیم و یا اصلا چگونه میتوانیم خروجی این مدل ها را با هم ترکیب کنیم که یک مدل نهایی تصمیم گیرنده دقیق تر ایجاد کنیم . ایده اصلی فرایادگیری همین است . اینکه مدلی را بعد از این سه مدل در نظر بگیریم که خود از رفتار مدل های دیگر یاد بگیرد. به این مدل فرایادگیر میگوییم. این مدل به عنوان وروی ، خروجی مدل های دیگر را دریافت میکند و از این رو میتوانیم بگوییم که این مدل، از یادگرفته های مدل های دیگر یاد میگیرد . چرا که مدل های پایین دستی ، یادگرفته های خود را طبق الگوی هایی در خروجی خود نمایش می دهند و فرایادگیر ما می تواند متوجه رفتار هریک از این مدلها بر اساس داده ورودی شود ( تا حدودی) .پس با توجه به شکل و توضیحات فوق ، میتوانیم بگوییم که یک فرآیند فرایادگیری شامل مدل های یادگیرنده از داده ها ( که گاها در این مقاله به آنها مدلهای پایین دست نیز می گوییم ) و یک مدل فرایادگیر است.الگوریتم های یادگیری ماشین پایین دستی ، ازداده های جمع آوری شده یاد میگیرند که ورودی خود را پس از آموزش کافی و مناسب به یک خروجی نگاشت کنند . در حالت عادی که فرایادگیر وجود ندارد ، معمولا این یادگیری می بایستی به نحوی باشد که خطای این مدل ها ، بر اساس یک تابع هزینه (loss function) ، حداقل باشد . ولی وقتی پای یک فرایادگیر در میان باشد ، این مدلها می بایستی به نحوی فرآیند آموزش خود را طی کنند که در نهایت خروجی آنها که بعنوان ورودی به فرایادگیر داده میشود ، باعث شود که فرآیادگیر حداقل خطا را تولید کند و نه خود آنها . الگوریتم های فرایادگیری از خروجی سایر الگوریتم های یادگیری ماشینی که از داده ها یاد میگیرند ، یاد میگیرند . این بدین معناست که فرایادگیری مستلزم حضور سایر الگوریتم های یادگیری است که قبلا روی داده ها آموزش دیده اند .الگوریتم‌های فرا یادگیری از خروجی الگوریتم‌های یادگیری یاد میگیرد و براساس پیش‌بینی‌های مدل‌های دیگر، پیش‌بینی می کند . بدین ترتیب فرایادگیری در سطحی بالاتر ازیادگیری ماشین انجام می شود . اگر الگوریتم های یادگیری ماشین یاد بگیرند که چگونه از اطلاعات در داده‌ها برای پیش‌بینی به بهترین شکل استفاده کنند، فرا یادگیری یا فرا ماشین یاد می‌گیرد که چگونه از پیش‌بینی‌های الگوریتم‌های یادگیری ماشین به بهترین شکل استفاده کند تا پیش‌بینی کند.متاالگوریتم :مدل های یادگیری ماشینی پایین دستی ، می توانند به دو صورت استفاده شوند . اول اینکه هر یک مستقلا آموزش ببیند و سپس از نتایج آنها برای آموزش فرایادگیر استفاده شود . یا اینکه بطور همزمان با فرایادگیر آموزش ببینند که معمولا نتایج حاصل از روش دوم دقیق تر می باشند . در هر حالت اول به الگوریتمی که فرایادگیری را به تنهایی پس از آموزش دیدن مدل های پایین دستی آموزش میدهد ، متاالگوریتم می گویند . در حالت دوم نیز همان الگوریتمی که همزمان فرایادگیر و مدل های یادگیری ماشینی پایین دستی را آموزش میدهد ، متاالگوریتم نامیده میشود . به مدل نهایی فرامدل (Meta Model) گفته میشود .آموزش مدل های یادیگیری ماشین ( پایین دستی ) عملا یک فرآیند جست و جو است . جست و جو در فضای پارامترها برای یافتن آن پارامترهایی که باعث کاهش یک تابع هزینه و یا افزایش یک معیار (metric) میشود . معمولا به این فرآیند جست و جو ، بهینه سازی (Optimization) می گویند . این فرآیند خود به تنهایی سبب نمی شود که ما اسم آن را فرایادگیری بگذاریم . در حقیقت این فرایند خلاصه ای است از مراحلی که تمام الگوریتم های یادگیری ماشین انجام میدهند . اما در سطحی بالاتر از آموزش دادن یک مدل ، فرایادگیری قرار دارد . فرآیادگیری می توانند شامل مواردی همچون :1. پیدا کردن بهترین روش پیش پردزاش داده ها2. الگوریتم های یادگیری3. انتخاب پارامتر های اصلی (Hyper parameters)و بطور خلاصه تمام مراحلی باشد که باعث شود دقت نهایی مدل افزایش یابد.