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

ایدهٔ تقطیر دانش
----------------

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

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

نگاهی دقیق‌تر به تقطیر دانش
---------------------------

مراحل مختلف مدل تقطیر دانش در حوزهٔ طراحی معلم-دانش‌آموز
یک راه برای انتقال دادن تعمیم‌سازی (به انگلیسی: Generalization) از مدل معلم به مدل دانش‌آموز این است که از توزیع احتمال خروجی مدل معلم که آن را اهداف نرم (به انگلیسی: Soft Targets) می‌نامیم، برای آموزش مدل دانش‌آموز استفاده کنیم. در طرف دیگر هم تعدادی داده همراه با برچسب داریم که آن‌ها را اهداف سخت (به انگلیسی: Hard Targets) می‌نامیم. از هر دوی آن‌ها در این فرایند تقطیر استفاده می‌شود. اگر مدل معلم مجموعه‌ای از مدل‌های ساده باشد آن‌گاه می‌توان از میانگین حسابی یا هندسی توزیع‌های خروجی به عنوان اهداف نرم استفاده کرد. در واقع در این‌جا به جای آموزش مستقیم مدل دانش آموز روی داده‌های خام، مدل سعی می‌کند تا خروجی شبکهٔ معلم را تقلید کند. اگر آنتروپی اهداف نرم زیاد باشد، اطلاعات بسیار زیادی را با واریانس کمتر در مقایسه با اهداف سخت متناظر، در دل خود دارند. از روی همین می‌توان فهمید که مدل دانش‌آموز در مقایسه با مدلی که به صورت عادی بخواهد آموزش ببیند، می‌تواند با حجم دادهٔ بسیار کمتر آموزش ببیند و حتی دچار مشکل بیش‌برازش (به انگلیسی: Overfitting) نشود. در مواردی حتی دیده شده‌است که دقت مدل دانش‌آموز از معلم به دلیل این که تعمیم‌سازی بهتری و بیش‌برازش کمتری دارد، بیشتر است.

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

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

پیاده‌سازی تقطیر دانش
---------------------

شبکه‌های عصبی (به انگلیسی: Neural Network) معمولاً توزیع احتمال دسته‌ها در لایه آخر را به کمک تابع پیشینه هموار (به انگلیسی: Softmax) محاسبه می‌کنند. اگر {\displaystyle z\_{i}} ورودی iام لایه آخر (ورودی پیشینه هموار) باشند، احتمال {\displaystyle q\_{i}} را با مقایسه {\displaystyle z\_{i}} با دیگر ورودی‌های این لایه، حساب می‌کند.


q

i

=

e
x
p
(

z

i

/

T
)

∑

j

e
x
p
(

z

j

/

T
)


{\displaystyle q\_{i}={\frac {exp(z\_{i}/T)}{\sum \_{j}exp(z\_{j}/T)}}}

{\displaystyle q_{i}={\frac {exp(z_{i}/T)}{\sum _{j}exp(z_{j}/T)}}}
دقت کنید که T در رابطه بالا دما است که معمولاً برابر ۱ قرار داده می‌شود. بدیهی است که T این‌جا یک فراپارامتر (به انگلیسی: Hyperparameter) است. هر چه‌قدر T بیشتر باشد، توزیع ما هموارتر می‌شود و هرچه قدر کمتر باشد اهمیت {\displaystyle z\_{i}}ها بیشتر می‌شود و توزیع ناهموارتر می‌شود. به تعبیر دیگر هر چه قدر که T بیشتر می‌شود، احتمال دستهٔ محتمل‌تر به سمت یک میل می‌کند ولی هر چه قدر که T کمتر می‌شود، احتمال رده‌ها به سمت یکنواخت شدن حرکت می‌کنند.

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

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

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


∑

(
x
.
y
)
∈
D

L

K
D

(
S
(
x
.

θ

S

.
γ
)
.
T
(
x
.

θ

T

.
γ
)
)
+
φ

L

C
E

(

y

s

^

.
y
)

{\displaystyle \sum \_{(x.y)\in D}L\_{KD}(S(x.\theta \_{S}.\gamma ).T(x.\theta \_{T}.\gamma ))+\varphi L\_{CE}({\hat {y\_{s}}}.y)}

{\displaystyle \sum _{(x.y)\in D}L_{KD}(S(x.\theta _{S}.\gamma ).T(x.\theta _{T}.\gamma ))+\varphi L_{CE}({\hat {y_{s}}}.y)}
در فرمول بالا، {\displaystyle L\_{CE}} همان آنتروپی متقاطع اهداف سخت است که بر روی برچسب‌های {\displaystyle {\hat {y\_{s}}}} پیش‌بینی شده توسط مدل دانش‌آموز و برچسب‌های y واقعی داده‌ها

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

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

کاربردها
--------

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

### بینایی کامپیوتر

نمونه‌ای از یک معماری معلم-دانش‌آموز در بینایی ماشیننمونه‌ای از یک معماری معلم-دانش‌آموز در بینایی ماشین
در این حوزه تقطیر دانش بسیار کاربرد دارد. بسیاری از مدل‌های امروزی در این حوزه بر پایهٔ یادگیری ژرف می‌باشند و در نتیجه معمولاً با مدل‌های سنگینی سر و کار داریم. پس می‌توان از تقطیر دانش و فشرده سازی مدل (به انگلیسی: Model Compression) کمک گرفت تا در جاهایی که کمبود منابع داریم از مدل‌های سبک‌تر استفاده کنیم. در مسائل زیادی همچون کلاس‌بندی عکس‌ها یا تشخیص چهره و جاهای دیگر از این تکنیک کمک گرفته می‌شود.

### پردازش زبان‌های طبیعی

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

### بازشناسی گفتار

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

جستارهای وابسته
---------------

* یادگیری انتقالی
* یادگیری عمیق

منابع
-----

1. ↑  Vijendra.1893 (2022-01-04). "Knowledge Distillation: Theory and End to End Case Study". *Analytics Vidhya* (به انگلیسی). Retrieved 2023-01-30.
2. ↑  Bucila, Cristian; Caruana, R.; Niculescu-Mizil, Alexandru (2006). "Model compression". *www.semanticscholar.org* (به انگلیسی). Retrieved 2022-12-30.
3. ↑  «Knowledge Distillation - Neural Network Distiller». *intellabs.github.io*. دریافت‌شده در ۲۰۲۲-۱۲-۳۰.
4. ↑  Hinton, Geoffrey; Vinyals, Oriol; Dean, Jeff (2015-03-09). "Distilling the Knowledge in a Neural Network". *arXiv:1503.02531 [cs, stat]*.
5. ↑  Abbasi, Sajjad; Hajabdollahi, Mohsen; Karimi, Nader; Samavi, Shadrokh (2019-12-31). "Modeling Teacher-Student Techniques in Deep Neural Networks for Knowledge Distillation". *arXiv:1912.13179 [cs]*.
6. ↑  arvindpdmn، Varsha2018 (۲۰۱۹-۱۱-۰۲). «Knowledge Distillation». *Devopedia* (به انگلیسی). دریافت‌شده در ۲۰۲۳-۰۱-۳۰.
7. ↑  Ganesh, Prakhar (2019-10-07). "Knowledge Distillation: Simplified". *Medium* (به انگلیسی). Retrieved 2023-01-30.
8. ↑  Gou, Jianping; Yu, Baosheng; Maybank, Stephen John; Tao, Dacheng (2021). "Knowledge Distillation: A Survey". *International Journal of Computer Vision*. **129** (6): 1789–1819. doi:10.1007/s11263-021-01453-z. ISSN 0920-5691.
9. ↑  Teki، Sundeep (۲۰۲۲-۰۷-۲۲). «Knowledge Distillation: Principles, Algorithms, Applications». *neptune.ai* (به انگلیسی). دریافت‌شده در ۲۰۲۲-۱۲-۳۰.