Knowledge distillation

/*! elementor - v3.17.0 - 08-11-2023 */ .elementor-heading-title{padding:0;margin:0;line-height:1}.elementor-widget-heading .elementor-heading-title[class*=elementor-size-]>a{color:inherit;font-size:inherit;line-height:inherit}.elementor-widget-heading .elementor-heading-title.elementor-size-small{font-size:15px}.elementor-widget-heading .elementor-heading-title.elementor-size-medium{font-size:19px}.elementor-widget-heading .elementor-heading-title.elementor-size-large{font-size:29px}.elementor-widget-heading .elementor-heading-title.elementor-size-xl{font-size:39px}.elementor-widget-heading .elementor-heading-title.elementor-size-xxl{font-size:59px}

Knowledge distillation

/*! elementor - v3.17.0 - 08-11-2023 */ .elementor-widget-image{text-align:center}.elementor-widget-image a{display:inline-block}.elementor-widget-image a img[src$=".svg"]{width:48px}.elementor-widget-image img{vertical-align:middle;display:inline-block}

آشنایی با روش تقطیر دانش جهت بهبود عملکرد مدل‌های یادگیری عمیق

تا کنون مدل­‌های پیچیده­‌ای ساخته‌­ایم که قادر به انجام وظایف و حل مسائل پیچیده هستند، اما چالشی که اکنون با آن روبرو هستیم این است که چطور می­‌توانیم چنین مدل­‌های سنگینی را برای استفاده­‌ی فوری روی دستگاه­‌های موبایل پیاده کنیم؟ شاید بتوانیم مدل را روی ابر به کار انداخته و هر زمان که لازم بود آن را فرا بخوانیم. اما این روش هم نیازمند اتصال اینترنتی قوی است و به همین دلیل با محدودیت مواجه می­‌شود. پس به بیان خلاصه نیاز به مدلی داریم که روی دستگاه­‌های موبایل قابل اجرا باشد.

مشکل کجاست؟ آیا می­توانیم شبکه‌­ی کوچکی آموزش دهیم که روی توان محاسباتی محدود گوشی همراه قابل اجرا باشد؟ این روش یک مشکل دارد: مدل­های کوچک قادر نیستند ویژگی­های خیلی پیچیده­­ای را استخراج کنند که برای برخی پیش­‌بینی­ها لازم هستند؛ مگر این­که یک الگوریتم فوق‌­العاده کارآ بسازید که به حافظه‌ی خیلی کمی نیاز دارد. مجموعه­ای از مدل­های کوچک هم می­توانند نتایج قابل قبولی ارائه دهند؛ اما انجام پیش­بینی با استفاده از چندین مدل کار سنگینی بوده و از نظر محاسباتی آنقدر پرهزینه است که بسیاری از کاربران توان استفاده از آن را نخواهند داشت. به همین دلیل در این نوشتار به دو تکنیک دیگر خواهیم پرداخت:

  • تقطیر دانش
  • متراکم­‌سازی مدل

(در این وبلاگ به تقطیر دانش می‌پردازیم و بحث متراکم‌سازی مدل را به وقت و مطلب دیگری موکول خواهیم کرد.)

تقطیر دانش

تقطیر دانش روشی ساده برای بهبود عملکرد مدل­‌های یادگیری عمیق روی دستگاه‌­های موبایل است. در این فرآیند یک شبکه­‌ی بزرگ و پیچیده یا یک مدل گروهی آموزش می‌­دهیم که می­تواند ویژگی­‌های مهم داده­‌ها را استخراج کرده و پیش‌­بینی­‌های خوبی انجام دهد. سپس به کمک این مدل سنگین، شبکه­‌ای کوچک را آموزش می­‌دهیم. این شبکه­‌ی کوچک قادر خواهد بود نتایجی در حد قابل مقایسه (با مدل سنگین) ارائه دهد و در برخی موارد هم می­‌تواند همان نتایج شبکه­‌ی سنگین را تولید کند.

برای مثال GoogLeNet شبکه­‌ای بسیار سنگین، یعنی عمیق و پیچیده است. عمقش به آن توان استخراج ویژگی­‌های پیچیده را می­‌دهد و پیچیدگیش به حفظ دقت کمک می­کند. این مدل آنقدر سنگین است که برای پیاده‌­سازی به حجم زیادی حافظه، یک GPU قدرتمند و محاسبات پیچیده نیاز خواهد داشت. به همین دلیل باید بتوانیم دانش این مدل را به یک مدل بسیار کوچک­تر منتقل کنیم که قابلیت استفاده در یک دستگاه موبایل را دارد.

نکاتی مهم در مدل های سنگین

مدل­‌های سنگین یاد می‌گیرند تا بین تعداد زیادی از دسته ها  تمایز قائل شوند. هدف اصلی در آموزش , به حداکثر رساندن متوسط احتمال لگاریتمی پاسخ درست است و بدین منظور, مدل به هر دسته یک احتمال اختصاص می‌دهد (احتمال برخی طبقات از بعضی دیگر کوچک­تر است). مقادیر نسبی احتمالات مربوط به پاسخ‌­های اشتباه اطلاعات زیادی در مورد نحوه‌­ی تعمیم­پذیری این مدل پیچیده در اختیار ما می­گذارند. مثلاً تصویر یک ماشین به احتمال کمی به عنوان کامیون شناخته خواهد شد، اما احتمال وقوع همین اشتباه از احتمال تشخیص یک گربه (به جای ماشین) خیلی بیشتر است.

توجه داشته باشید که انتخاب تابع هدف باید به نحوی باشد که به خوبی به داده‌­های جدید تعمیم داده شود. پس زمان انتخاب تابع هدف مناسب باید به خاطر داشته باشیم قرار نیست این تابع روی داده­‌های آموزشی عملکردی بهینه داشته باشد.

از آن­جایی که این عملیات برای دستگا‌‌ه‌­های موبایل بسیار سنگین است، باید دانش این مدل­های سنگین را به یک مدل کوچک­تر انتقال دهیم که به آسانی روی دستگاه­های موبایل به کار برده شود. بدین منظور می­توانیم مدل سنگین را شبکه‌ی معلم و مدل کوچک را شبکه‌ی دانش در نظر بگیریم.

معلم و دانش‌­آموز

می‌­توانید شبکه­‌ی بزرگ و پیچیده را به شبکه­‌ای بسیار کوچک‌­تر تقطیر کنید؛ این شبکه­‌ی کوچک‌­تر تابع اصلی را که توسط شبکه­‌ی عمیق آموخته شده، به خوبی برآورد می‌­کند.

یک  نکته این‌جا وجود دارد و آن این است که مدل تقطیرشده (دانش‌آموز) به نحوی آموزش دیده که به جای آموزش مستقیم روی داده‌های خام، خروجی شبکه‌ی بزرگ‌تر (معلم) را تقلید کند؛ شاید به این خاطر که شبکه‌ی عمیق‌تر انتزاعات سلسله مراتبی ویژگی‌ها را می‌آموزد.

این انتقال دانش چطور انجام می‌شود؟

با استفاده از احتمالات تولید شده برای هر کلاس که با عنوان “اهداف نرم” توسط مدل سنگین و به منظور آموزش مدل کوچک تولید می‌شوند می‌توان توانایی تعمیم­پذیری مدل سنگین را به یک مدل کوچک‌تر انتقال داد. در مرحله‌ی انتقال می‌توانیم همان مجموعه‌ی آموزشی یا یک “مجموعه‌ انتقال” را برای آموزش مدل سنگین به کار ببریم. وقتی مدل سنگین مجموعه‌ای از مدل‌های ساده‌تر باشد می‌توانیم از میانگین حسابی یا هندسی توزیع‌های پیش‌بین هر یک از آن مدل‌ها به عنوان اهداف نرم استفاده کنیم. زمانی که آنتروپی اهداف نرم بالا باشد، برای آموزش هر مورد اطلاعات بسیار بیشتر و واریانس خیلی کمتری بین آن­ها ارائه می‌دهند (در مقایسه با اهداف سخت). بنابراین مدل کوچک می‌تواند روی داده‌های بسیار کمتری از آنچه مدل سنگین نیاز دارد، آموزش ببیند و در عین حال به نرخ یادگیری بالاتری دست یابد.

بیشتر اطلاعاتی که در مورد تابع آموخته شده وجود دارد در نسبت‌هایی از احتمالات بسیار کوچک در اهداف نرم باقی می‌ماند. این اطلاعات ارزشمند هستند و ساختار شباهت موجود در داده‌ها را نشان می‌دهند (که برای مثال می‌گوید کدام ۲ شبیه ۳ و کدام شبیه ۷ به نظر می‌رسد یا کدام نژادهای سگ به هم شباهت دارند)، اما تأثیر بسیار کمرنگی روی تابع هزینه‌ی  آنتروپی متقاطعطی مرحله‌ی انتقال دارند، زیرا مقادیر احتمالات به صفر خیلی نزدیک هستند.

تقطیر

به منظور تقطیر دانش آموخته شده، از تابع logit (ورودی‌های لایه‌ی نهایی بیشینه‌هموار) استفاده می‌کنیم. با به حداقل رساندن مجذور تفاوت‌ها بین logit-هایی که مدل سنگین و logit-هایی که مدل کوچک تولید کرده‌اند، می‌توانیم از logit-ها برای یادگیری مدل کوچک استفاده کنیم.

برای دماهای بالا (T -> inf) همه‌ی اقدامات, احتمال تقریبا‍ً یکسانی دارند و در دماهای پایین‌تر (T -> 0)، پاداش‌هایی که بیشتر موردانتظار هستند بر احتمال تأثیر می‌گذارند. در مقادیر پایینِ پارامتر دما، احتمال اقدام با بالاترین پاداش موردانتظار نزدیک ۱ است.
در تقطیر، دمای لایه‌ی نهایی بیشینه‌هموار را افزایش می‌دهیم تا جایی که مدل سنگین مجموعه‌ی مناسبی از اهداف نرم را تولید کند. سپس همین دمای بالا را زمان آموزش مدل کوچک به کار می‌بریم تا با این اهداف نرم سازگار شود

تابع هدف

ولین تابع هدف، آنتروپی متقاطع با اهداف نرم است. این آنتروپی متقاطع با استفاده از دمای بالای لایه‌ی بیشینه‌هموارِ مدل تقطیرشده یا دانش‌آموز (همانطور که برای تولید اهداف نرم در مدل سنگین نیز مورد استفاده قرار گرفت)
محاسبه می‌شود.دومین تابع هدف از آنتروپی متقاطع با برچسب‌های صحیح به وجود می‌آید و با استفاده از دقیقاً همان توابع logit در لایه‌ی بیشینه‌هموار مدل تقطیرشده (اما در دمای ۱) محاسبه می‌گردد.

 

مجموعه‌های آموزشی متخصص‌ها

آموزش گروهی مدل‌ها راه بسیار آسانی برای بهره‌گیری از محاسبات موازی است. اما به محاسبات بیش‌از حد این گروه (مدل‌ها) در زمان آزمایش انتقاداتی وارد می‌کنند. با تکنیک تقطیر می‌توان به سادگی این مشکل را نیز حل کرد.

مدل‌های متخصص

مدل‌های متخصص و یک مدل عمومی اجزای مدل سنگین ما را تشکیل می‌دهند. مدل عمومی روی همه‌ی داده‌های آموزشی، آموزش می‌بیند و مدل‌های متخصص بر زیرمجموعه‌ی درهم‌ریخته‌ و متفاوتی از رده‌ها تمرکز دارند؛ بدین ترتیب مقدار کل محاسبات لازم برای یادگیری گروهی کاهش می‌یابد. مشکل اصلی این است که مدل‌های متخصص به آسانی در معرض بیش برازش قرار می‌گیرند. اما می‌توان با استفاده از اهداف نرم از این بیش برازش  جلوگیری کرد..

کاهش بیش‌برازش در مدل‌های متخصص

به منظور کاهش بیش‌برازش و همچنین به اشتراک‌گذاری روند یادگیری تشخیص‌گرهای ویژگی‌های سطح‌ پایین‌تر، برای هر مدل متخصص وزن‌های مدل عمومی تعریف می‌شود. سپس با آموزش مدل متخصص، این وزن‌ها تا حدی اصلاح می‌شوند. در آموزش مدل متخصص نیمی از نمونه‌ها از زیرمجموعه‌ی خاص خودش گرفته شده و نیم دیگر به صورت تصادفی از بقیه‌ی مجموعه‌ی آموزشی نمونه‌گیری می‌شوند. بعد از آموزش می‌توانیم آموزش سوگیرانه را با افزایش تابع logit رده‌ی dustbin (به وسیله‌ی لگاریتم سهمی که رده‌ی متخصص با آن بیش‌نمونه‌گیری می‌شود) اصلاح کنیم.

تخصیص رده به مدل‌های متخصص

یک الگوریتم خوشه‌بندی روی ماتریکس همبستگی پیش‌بینی‌های مدل عمومی اجرا می‌کنیم تا مجموعه‌ای از رده‌ها یا Sm (که اغلب با هم پیش‌بینی می‌گردند) به عنوان اهداف یکی از مدل‌های متخصص استفاده شوند. بدین ترتیب روش خوشه‌بندی K-means را روی ستون‌های ماتریکس کوواریانس اجرا می‌کنیم تا خوشه‌ها یا رده‌های موردنیاز را به دست بیاوریم.

خوشه‌بندی کوواریانس/همبستگی روشی برای خوشه‌بندی مجموعه‌ای از اشیاء در تعداد بهینه‌ای از خوشه‌ها (بدون از پیش تعیین کردن تعداد دقیق آن‌ها) ارائه می‌دهد.

اجرای استنتاج

  • برای هر مورد آزمایشی، n رده­ که (براساس مدل عمومی) بیشترین احتمال را دارند، پیدا می­کنیم. این مجموعه از رده­ها را k می­نامیم.
  • سپس همه­‌ی مدل‌های متخصصی (m) را که زیرمجموعه‌یشان از رده‌های درهم‌ریخته (Sm) با k، تعاملی غیرتهی دارد مشخص کرده و آن را Ak می‌نامیم (توجه داشته باشید که این مجموعه می‌تواند تهی باشد). سپس توزیع کامل احتمال q را برای همه­‌ی این رده‌ها پیدا می‌کنیم. بدین ترتیب فرمول پایین به حداقل می‌رسد:

در این فرمول‌ها، KL واگرایی KL،  و  توزیع احتمال یک مدل متخصص (m) یا عمومی (g) را نشان می­‌دهد. توزیع  مربوط به همه‌ی رده‌های متخصص m به اضافه‌ی یک رده‌ی dustbin است. بنابراین زمانی که واگرایی KL از توزیع کامل q را محاسبه می‌کنیم، همه‌ی احتمالاتی که توزیع کامل q به همه‌ رده‌های dustbin m اختصاص داده را با هم جمع می‌کنیم.

اهداف نرم در نقش تنظیم‌کننده

اهداف یا برچسب‌های نرم که از یک مدل پیش‌بینی می‌شوند در مقایسه با برچسب‌های سخت دوقسمتی اطلاعات بیشتری در برمی‌گیرند؛ زیرا معیارهای شباهت بین رده‌ها را رمزگذاری می‌کنند.برچسب‌های اشتباهی که توسط مدل ارائه شده‌اند شباهت‌های برچسب‌های مشترک را توصیف می‌کنند؛ این شباهت‌ها باید در مراحل بعدی یادگیری آشکار باشند، حتی اگر اثر آنها حذف شده باشد. برای مثال تصور کنید یک شبکه‌ی عصبی عمیق را روی دیتاستی از انواع نژادهای سگ آموزش می‌دهید؛ در چند مرحله‌ی ابتدایی یادگیری، مدل قادر به تشخیص و تمیز صحیح بین نژادهای مختلف نیست. همین تأثیر (شاید نه در این مقیاس) در مراحل بعدی آموزش هم می‌تواند اتفاق بیفتد. مشکل بیش برازش زمانی رخ می‌دهد که بیشتر تأثیرات این برچسب‌های مشترک شروع به ناپدید شدن می‌کنند. با وادار کردن مدل به نگه داشتن این تأثیرات تا مراحل بعدی آموزش، میزان بیش‌تطبیقی را کاهش می‌دهیم.

  /*! elementor - v3.17.0 - 08-11-2023 */ .elementor-widget-divider{--divider-border-style:none;--divider-border-width:1px;--divider-color:#0c0d0e;--divider-icon-size:20px;--divider-element-spacing:10px;--divider-pattern-height:24px;--divider-pattern-size:20px;--divider-pattern-url:none;--divider-pattern-repeat:repeat-x}.elementor-widget-divider .elementor-divider{display:flex}.elementor-widget-divider .elementor-divider__text{font-size:15px;line-height:1;max-width:95%}.elementor-widget-divider .elementor-divider__element{margin:0 var(--divider-element-spacing);flex-shrink:0}.elementor-widget-divider .elementor-icon{font-size:var(--divider-icon-size)}.elementor-widget-divider .elementor-divider-separator{display:flex;margin:0;direction:ltr}.elementor-widget-divider--view-line_icon .elementor-divider-separator,.elementor-widget-divider--view-line_text .elementor-divider-separator{align-items:center}.elementor-widget-divider--view-line_icon .elementor-divider-separator:after,.elementor-widget-divider--view-line_icon .elementor-divider-separator:before,.elementor-widget-divider--view-line_text .elementor-divider-separator:after,.elementor-widget-divider--view-line_text .elementor-divider-separator:before{display:block;content:"";border-bottom:0;flex-grow:1;border-top:var(--divider-border-width) var(--divider-border-style) var(--divider-color)}.elementor-widget-divider--element-align-left .elementor-divider .elementor-divider-separator>.elementor-divider__svg:first-of-type{flex-grow:0;flex-shrink:100}.elementor-widget-divider--element-align-left .elementor-divider-separator:before{content:none}.elementor-widget-divider--element-align-left .elementor-divider__element{margin-left:0}.elementor-widget-divider--element-align-right .elementor-divider .elementor-divider-separator>.elementor-divider__svg:last-of-type{flex-grow:0;flex-shrink:100}.elementor-widget-divider--element-align-right .elementor-divider-separator:after{content:none}.elementor-widget-divider--element-align-right .elementor-divider__element{margin-right:0}.elementor-widget-divider:not(.elementor-widget-divider--view-line_text):not(.elementor-widget-divider--view-line_icon) .elementor-divider-separator{border-top:var(--divider-border-width) var(--divider-border-style) var(--divider-color)}.elementor-widget-divider--separator-type-pattern{--divider-border-style:none}.elementor-widget-divider--separator-type-pattern.elementor-widget-divider--view-line .elementor-divider-separator,.elementor-widget-divider--separator-type-pattern:not(.elementor-widget-divider--view-line) .elementor-divider-separator:after,.elementor-widget-divider--separator-type-pattern:not(.elementor-widget-divider--view-line) .elementor-divider-separator:before,.elementor-widget-divider--separator-type-pattern:not([class*=elementor-widget-divider--view]) .elementor-divider-separator{width:100%;min-height:var(--divider-pattern-height);-webkit-mask-size:var(--divider-pattern-size) 100%;mask-size:var(--divider-pattern-size) 100%;-webkit-mask-repeat:var(--divider-pattern-repeat);mask-repeat:var(--divider-pattern-repeat);background-color:var(--divider-color);-webkit-mask-image:var(--divider-pattern-url);mask-image:var(--divider-pattern-url)}.elementor-widget-divider--no-spacing{--divider-pattern-size:auto}.elementor-widget-divider--bg-round{--divider-pattern-repeat:round}.rtl .elementor-widget-divider .elementor-divider__text{direction:rtl}.e-con-inner>.elementor-widget-divider,.e-con>.elementor-widget-divider{width:var(--container-widget-width,100%);--flex-grow:var(--container-widget-flex-grow)}