تقطیر دانش

**تقطیر دانش ** یکی از روش‌های مرسوم برای انتقال اطلاعات بین مدل‌ها است که در چند سال گذشته بسیار مورد بررسی قرار گرفته‌است. در دنیای یادگیری ماشین، به فرایند انتقال دانش از یک مدل نسبتاً بزرگ به یک مدل کوچک تقطیر دانش گفته می‌شود. مدل‌های بزرگ مثل شبکه‌های عصبی ژرف یا مدل‌های یادگیری ماشین جمعی  ظرفیت دانش و یادگیری بیشتری در مقایسه با مدل‌های کوچک‌تر دارند اما از لحاظ محاسباتی بسیار سنگین‌تر هستند. تقطیر دانش، این دانش را از مدل‌های پیچیده به مدل‌های ساده‌تر و کوچک‌تر منتفل می‌کند و تلاش می‌کند که این کار را با کمترین میزان هدررفت دانش انجام دهد.

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

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

## نگاهی دقیق‌تر به تقطیر دانش
بندانگشتی|مراحل مختلف مدل تقطیر دانش در حوزهٔ طراحی معلم-دانش‌آموز|440x440پیکسل
یک راه برای انتقال دادن تعمیم‌سازی  از مدل معلم به مدل دانش‌آموز این است که از توزیع احتمال خروجی مدل معلم که آن را اهداف نرم  می‌نامیم، برای آموزش مدل دانش‌آموز استفاده کنیم. در طرف دیگر هم تعدادی داده همراه با برچسب داریم که آن‌ها را اهداف سخت  می‌نامیم. از هر دوی آن‌ها در این فرایند تقطیر استفاده می‌شود. اگر مدل معلم مجموعه‌ای از مدل‌های ساده باشد آن‌گاه می‌توان از میانگین حسابی یا هندسی توزیع‌های خروجی به عنوان اهداف نرم استفاده کرد. در واقع در این‌جا به جای آموزش مستقیم مدل دانش آموز روی داده‌های خام، مدل سعی می‌کند تا خروجی شبکهٔ معلم را تقلید کند. اگر آنتروپی اهداف نرم زیاد باشد، اطلاعات بسیار زیادی را با واریانس کمتر در مقایسه با اهداف سخت متناظر، در دل خود دارند. از روی همین می‌توان فهمید که مدل دانش‌آموز در مقایسه با مدلی که به صورت عادی بخواهد آموزش ببیند، می‌تواند با حجم دادهٔ بسیار کمتر آموزش ببیند و حتی دچار مشکل بیش‌برازش  نشود. در مواردی حتی دیده شده‌است که دقت مدل دانش‌آموز از معلم به دلیل این که تعمیم‌سازی بهتری و بیش‌برازش کمتری دارد، بیشتر است.

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

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

## پیاده‌سازی تقطیر دانش
شبکه‌های عصبی  معمولاً توزیع احتمال دسته‌ها در لایه آخر را به کمک تابع پیشینه هموار  محاسبه می‌کنند. اگر z_i ورودی iام لایه آخر (ورودی پیشینه هموار) باشند، احتمال q_i را با مقایسه z_i با دیگر ورودی‌های این لایه، حساب می‌کند.

q_i = \frac {exp(z_i/T)} {\sum_{j} exp(z_j/T)}


دقت کنید که  T در رابطه بالا دما است که معمولاً برابر ۱ قرار داده می‌شود. بدیهی است که T این‌جا یک فراپارامتر  است. هر چه‌قدر T بیشتر باشد، توزیع ما هموارتر می‌شود و هرچه قدر کمتر باشد اهمیت z_iها بیشتر می‌شود و توزیع ناهموارتر می‌شود. به تعبیر دیگر هر چه قدر که T بیشتر می‌شود، احتمال دستهٔ محتمل‌تر به سمت یک میل می‌کند ولی هر چه قدر که T کمتر می‌شود، احتمال رده‌ها به سمت یکنواخت شدن حرکت می‌کنند.

در حالت ساده و ابتدایی، تابع هدف را می‌توان آنتروپی متقاطع  با اهداف نرم در نظر گرفت. در واقع پس از آموزش دادن مدل معلم در دمای بالا، اهداف نرم به‌دست می‌آیند و مدل دانش‌آموز به کمک آن‌ها در همان دمای بالا آموزش می‌بیند. البته بعد از تمام شدن آموزش، مدل دانش‌آموز از دمای ۱ استفاده می‌کند.

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

حال سعی می‌کنیم تا توصیف بالا را به صورت ریاضی ببینیم. فرض کنید که D مجموعه داده‌های آموزشی ما است. حال دوتایی‌های ورودی و برچسب به صورت(x.y) \in D می‌باشند. فرض کنید که T مدل معلم با پارامترهای \theta_{T} و S مدل دانش‌آموز با پارامترهای \theta_{S} باشد. حال طبق تقطیر دانش هدف کمینه کردن اتلاف نوشته شده در فرمول زیر است:

\sum_{(x.y) \in D} L_{KD}(S(x.\theta_{S}.\gamma).T(x.\theta_{T}.\gamma)) + \varphi L_{CE}(\hat{y_{s}}.y)

در فرمول بالا، L_{CE} همان آنتروپی متقاطع اهداف سخت است که بر روی برچسب‌های \hat{y_{s}} پیش‌بینی شده توسط مدل دانش‌آموز و برچسب‌های y واقعی داده‌ها

در دمای ۱ محاسبه می‌گردد. L_{KD} همان اتلاف تقطیر است که در واقع آنتروپی متقاطع اهداف نرم می‌باشد که از خروجی‌های لایه پیشینه هموار معلم و دانش‌آموز در دمای \gamma محاسبه می‌شود؛ بنابراین، S(x.\theta_{S}.\gamma) خروجی لایهٔ پیشینه هموار دانش‌آموز و T(x.\theta_{T}.\gamma) خروجی لایهٔ پیشینه هموار معلم را نشان می‌دهند. \varphi هم فراپارامتری است که میزان تأثیر هر یک از این اتلاف‌ها را در مدل نهایی کنترل می‌کند.
جایگزین=نمونه‌ای از معماری تقطیر دانش از مدل معلم به مدل دانش‌آموز|وسط|بندانگشتی|598x598پیکسل|نمونه‌ای از معماری تقطیر دانش از مدل معلم به مدل دانش‌آموز

## کاربردها
امروزه از تقطیر دانش در بسیاری از حوزه‌ها و مسائل استفاده می‌شود که در زیر به چند مورد آن‌ها اشاره می‌کنیم.

### [[بینایی رایانه‌ای|بینایی کامپیوتر]]
جایگزین=نمونه‌ای از یک معماری معلم-دانش‌آموز در بینایی ماشین|بندانگشتی|264x264پیکسل|نمونه‌ای از یک معماری معلم-دانش‌آموز در بینایی ماشین
در این حوزه تقطیر دانش بسیار کاربرد دارد. بسیاری از مدل‌های امروزی در این حوزه بر پایهٔ یادگیری ژرف می‌باشند و در نتیجه معمولاً با مدل‌های سنگینی سر و کار داریم. پس می‌توان از تقطیر دانش و فشرده سازی مدل  کمک گرفت تا در جاهایی که کمبود منابع داریم از مدل‌های سبک‌تر استفاده کنیم. در مسائل زیادی همچون کلاس‌بندی عکس‌ها یا تشخیص چهره و جاهای دیگر از این تکنیک کمک گرفته می‌شود.

### [[پردازش زبان‌های طبیعی]]
مدل‌های مبتنی بر یادگیری ژرف که در این حوزه وجود دارند، معمولاً بسیار بزرگ و پیچیده هستند و میلیون‌ها پارامتر دارند. در نتیجه در این حوزه به خصوص از آن‌جا که تسک‌های مربوطه بیشتر در سیستم‌های سبک باید استفاده شوند، تقطیر دانش بسیار محبوب است. تلاش می‌شود تا به مدل‌های سبک و سریع‌تری که تنها تقاوت دقت ناچیزی با مدل‌های پیچیدهٔ اصلی دارند، برسیم. در واقع این مدل‌ها به حافظهٔ کمتری و منابع پردازشی کمتری نیاز دارند و در عین حال دقت خوبی دارند. در کاربردهایی مثل تولید متن یا پرسش و پاسخ نیز این مورد کاربرد دارد.

### [[بازشناسی گفتار]]
مدل‌های امروزه و مطرح این حوزه نیز بیشتر بر پایهٔ شبکه‌های عصبی و یادگیری ژرف می‌باشند. اما همان‌طور که می‌دانید از آن‌ها معمولاً بر روی سیستم‌های نهفته یا سیستم‌های کم منبع دیگری همچون تلفن همراه استفاده می‌باشد. در نتیجه در مرحلهٔ توسعه و استنتاج مهم است که مدل‌های ما تا حد ممکن سبک و سریع باشند. در نتیجه از تکنیک تقطیر دانش و فشرده سازی مدل در این‌جا نیز استفاده می‌شود.

## جستارهای وابسته
* یادگیری انتقالی
* یادگیری عمیق

## منابع

رده:یادگیری عمیق
رده:یادگیری ماشین