Distillazione Della Conoscenza: differenze tra le versioni
Nessun oggetto della modifica |
|||
(15 versioni intermedie di 4 utenti non mostrate) | |||
Riga 1: | Riga 1: | ||
{{Template concetto | |||
|NomeInglese=Knowledge Distillation | |||
|Sigla=KD | |||
}} | |||
La '''distillazione della conoscenza''' è il processo di trasferimento della conoscenza da un modello di grandi dimensioni ad uno più piccolo. | La '''distillazione della conoscenza''' è il processo di trasferimento della conoscenza da un modello di grandi dimensioni ad uno più piccolo. | ||
Originariamente introdotto nel 2006 nel contesto dei modelli di ensemble, è stato successivamente reso popolare in un famoso [https://arxiv.org/abs/1503.02531 paper] del 2015 che ha generalizzato il metodo | Originariamente introdotto nel 2006 nel contesto dei modelli di ensemble, è stato successivamente reso popolare in un famoso [https://arxiv.org/abs/1503.02531 paper] del 2015 che ha generalizzato il metodo. | ||
== Knowledge Distillation | Il termine viene utilizzato anche, in modo meno specifico quando, un modello di grandi dimensioni viene utilizzato per la generazione di dati di addestramento sintetici per modelli più piccoli. Ad esempio nel paper di [[DeepSeek|DeepSeek R1]] si legge:<blockquote>To '''equip more efficient smaller models with reasoning capabilities''' like DeepSeek-R1, we directly fine-tuned open-source models like Qwen (Qwen, 2024b) and Llama (AI@Meta, 2024) using the 800k samples curated with DeepSeek-R1, as detailed in §2.3.3. Our findings indicate that this straightforward distillation method significantly enhances the reasoning abilities of smaller models. The base models we use here are Qwen2.5-Math-1.5B, Qwen2.5-Math-7B, Qwen2.5- 14B, Qwen2.5-32B, Llama-3.1-8B, and Llama-3.3-70B-Instruct. We select Llama-3.3 because its reasoning capability is slightly better than that of Llama-3.1. </blockquote> | ||
Nel contesto dell'apprendimento automatico, specialmente nell'addestramento supervisionato come il fine-tuning, la distillazione della conoscenza è un metodo per trasferire l'informazione da un modello "insegnante" grande e complesso a un modello "studente" più piccolo e meno complesso. L'idea principale è quella di arricchire le etichette | |||
== Funzionamento della Knowledge Distillation == | |||
Nel contesto dell'apprendimento automatico, specialmente nell'addestramento supervisionato come il fine-tuning, la distillazione della conoscenza è un metodo per trasferire l'informazione da un modello "insegnante" grande e complesso a un modello "studente" più piccolo e meno complesso. L'idea principale è quella di arricchire le etichette con una distribuzione di "soft probabilities" fornite dall'insegnante, che offrono informazioni complementari da cui lo studente può imparare. Ad esempio, se un classificatore basato su BERT assegna alte probabilità a più token, questo potrebbe indicare che questi sono vicini l'uno all'altro, probabilisticamente parlando. '''Addestrando lo studente a imitare queste probabilità''', l'obiettivo è di '''distillare''' parte di questa "dark knowledge" che l'insegnante ha appreso. | |||
Matematicamente, questo processo funziona come segue: si fornisce una sequenza di input x all'insegnante per generare un vettore di logits x = [z1x, ..., zNx]. Questi logits possono essere convertiti in probabilità applicando una funzione [[softmax]]. | Matematicamente, questo processo funziona come segue: si fornisce una sequenza di input x all'insegnante per generare un vettore di logits x = [z1x, ..., zNx]. Questi logits possono essere convertiti in probabilità applicando una funzione [[softmax]]. | ||
Riga 12: | Riga 19: | ||
Tuttavia, spesso l'insegnante assegna una probabilità alta ad una classe, rendendo le probabilità delle altre classi vicine a zero, e quindi non fornendo molte informazioni aggiuntive rispetto alle etichette di verità fondamentale. Per questo, si "addolciscono" le probabilità scalando i logits con un iperparametro di [[Temperatura (Apprendimento Automatico)|temperatura T]] prima di applicare la softmax. | |||
Tuttavia, spesso l'insegnante assegna una probabilità alta ad una classe, rendendo le probabilità delle altre classi vicine a zero, e quindi non fornendo molte informazioni aggiuntive rispetto alle etichette di verità fondamentale. Per questo, si "'''addolciscono'''" le probabilità scalando i logits con un iperparametro di [[Temperatura (Apprendimento Automatico)|temperatura T]] prima di applicare la softmax. | |||
<math>p_i(x)\frac{\exp(z_i(x)/T)}{\textstyle \sum_{j} \displaystyle \exp(z_i(x)/T)}</math> | <math>p_i(x)\frac{\exp(z_i(x)/T)}{\textstyle \sum_{j} \displaystyle \exp(z_i(x)/T)}</math> | ||
Valori più alti di T producono una distribuzione di probabilità più morbida sulle classi e rivelano più informazioni sul confine decisionale che l'insegnante ha appreso per ogni esempio di addestramento. | Valori più alti di T producono una distribuzione di probabilità più morbida sulle classi e rivelano più informazioni sul confine decisionale che l'insegnante ha appreso per ogni esempio di addestramento. | ||
[[File:Screenshot 2024-04-10 alle 11.54.03.png|centro|miniatura|500x500px|Figura1. Confronto tra un'etichetta rigida codificata in one-hot (sinistra), probabilità softmax (centro) e probabilità di classe addolcite (destra)]] | [[File:Screenshot 2024-04-10 alle 11.54.03.png|centro|miniatura|500x500px|Figura1. Confronto tra un'etichetta rigida codificata in one-hot (sinistra), probabilità softmax (centro) e probabilità di classe addolcite (destra)]] | ||
== Come funziona la Knowledge Distillation == | |||
Per l'addestramento, dello studente, invece di eseguirlo direttamente sul set di dati originale, lo studente viene addestrato per emulare l'output o il comportamento dell'insegnante. Ciò può avvenire in diversi modi, ma due approcci comuni includono: | |||
* '''Addestramento sulle Soft Labels''': Lo studente viene addestrato sui punteggi di probabilità (soft labels) generati dall'insegnante piuttosto che sulle etichette originali (hard labels) del set di dati. Questi punteggi di probabilità contengono informazioni più ricche sulle relazioni tra le diverse classi. | |||
* '''Addestramento sulla Funzione di Perdita Aggiuntiva''': Si può anche aggiungere una funzione di perdita che penalizza lo studente per deviazioni significative nell'output rispetto a quello dell'insegnante, aiutando così lo studente a imitare più fedelmente l'insegnante. | |||
== Etichette per l'addestramento dello Studente == | |||
=== Soft Labels === | |||
Le soft labels sono le probabilità di ciascuna classe di output fornite dal modello insegnante. A differenza delle hard labels, che indicano soltanto la classe target con un valore di 1 (o 100%) e 0 per tutte le altre classi, le soft labels forniscono una distribuzione di probabilità che riflette quanto l'insegnante sia "sicuro" della sua previsione. Queste probabilità catturano le relazioni sottili tra le classi che l'insegnante ha appreso durante il suo addestramento. | |||
Addestrare lo studente sulle soft labels permette di trasferire questa "conoscenza sottile" all'alunno. Ad esempio, in un task di classificazione delle immagini, se l'insegnante assegna una probabilità del 90% a "gatto", 5% a "tigre", e 5% alle altre classi per un'immagine di un gatto, lo studente impara non solo a riconoscere i gatti ma anche a capire la somiglianza tra gatti e tigri, qualcosa che le hard labels non potrebbero insegnare. | |||
=== Hard Labels === | |||
Le hard labels sono le etichette tradizionali (one-hot) utilizzate nell'addestramento supervisionato. Per ogni esempio nel set di addestramento, l'hard label indica la classe corretta con un valore di 1, mentre tutte le altre classi hanno un valore di 0. Queste etichette sono molto precise ma non forniscono informazioni aggiuntive sulla struttura del problema o sulle relazioni tra classi. | |||
Sebbene l'uso esclusivo delle soft labels possa trasferire conoscenze complesse allo studente, l'incorporazione delle hard labels nell'addestramento può aiutare a mantenere o migliorare la precisione dello studente sulle decisioni chiare e dirette, assicurando che impari anche a fare distinzioni nette tra classi. | |||
Nella pratica, spesso si utilizza una combinazione dei due metodi presentati. Questa può essere realizzata attraverso un approccio ibrido in cui la funzione di perdita è composta da due termini: uno basato sulle soft labels fornite dall'insegnante e l'altro sulle hard labels del dataset di addestramento. La ponderazione di questi due termini nella funzione di perdita può essere regolata per bilanciare il trasferimento di conoscenza sottile con l'apprendimento diretto dalle etichette originali. | |||
Questo approccio ibrido consente allo studente di beneficiare della conoscenza approfondita dell'insegnante, migliorando la sua capacità di generalizzazione, pur rimanendo ancorato alla realtà concreta e precisa delle hard labels. | |||
== Links == | == Links == | ||
[https://arxiv.org/abs/1503.02531 Distilling the Knowledge in a Neural Network (2015)] | [https://arxiv.org/abs/1503.02531 Distilling the Knowledge in a Neural Network (2015)] | ||
[[ | [https://colab.research.google.com/drive/1GHlk_Ic0CZkErw_6_UUwmFVCH7CKBJDA?usp=sharing GoogleColab Knowledge Distillation] | ||
[https://github.com/huggingface/transformers/tree/main/examples/research_projects/zero-shot-distillation Esempio di Distillazione da RoBERTa a DistillBERT] | |||
{{#seo: | |||
|title=Knowledge Distillation | |||
|title_mode=append | |||
|keywords=apprendimento automatico, deep learning, reti neurali, modelli di insegnamento, compressione dei modelli, ottimizzazione dei modelli, intelligenza artificiale, machine learning, distillazione della conoscenza, soft labels | |||
|description=La distillazione della conoscenza è una tecnica di apprendimento automatico che trasferisce la conoscenza da un modello di grandi dimensioni (insegnante) a uno più piccolo (studente). Questo processo consente di creare modelli più efficienti e leggeri, ideali per dispositivi con risorse limitate. La conoscenza viene trasferita attraverso l'utilizzo di "soft labels", che rappresentano la distribuzione di probabilità dell'insegnante sulle diverse classi, consentendo allo studente di apprendere le relazioni complesse tra di esse. | |||
}} |
Versione attuale delle 06:33, 3 feb 2025
Distillazione Della Conoscenza | |
---|---|
Nome Inglese | Knowledge Distillation |
Sigla | KD |
La distillazione della conoscenza è il processo di trasferimento della conoscenza da un modello di grandi dimensioni ad uno più piccolo.
Originariamente introdotto nel 2006 nel contesto dei modelli di ensemble, è stato successivamente reso popolare in un famoso paper del 2015 che ha generalizzato il metodo.
Il termine viene utilizzato anche, in modo meno specifico quando, un modello di grandi dimensioni viene utilizzato per la generazione di dati di addestramento sintetici per modelli più piccoli. Ad esempio nel paper di DeepSeek R1 si legge:
To equip more efficient smaller models with reasoning capabilities like DeepSeek-R1, we directly fine-tuned open-source models like Qwen (Qwen, 2024b) and Llama (AI@Meta, 2024) using the 800k samples curated with DeepSeek-R1, as detailed in §2.3.3. Our findings indicate that this straightforward distillation method significantly enhances the reasoning abilities of smaller models. The base models we use here are Qwen2.5-Math-1.5B, Qwen2.5-Math-7B, Qwen2.5- 14B, Qwen2.5-32B, Llama-3.1-8B, and Llama-3.3-70B-Instruct. We select Llama-3.3 because its reasoning capability is slightly better than that of Llama-3.1.
Funzionamento della Knowledge Distillation
Nel contesto dell'apprendimento automatico, specialmente nell'addestramento supervisionato come il fine-tuning, la distillazione della conoscenza è un metodo per trasferire l'informazione da un modello "insegnante" grande e complesso a un modello "studente" più piccolo e meno complesso. L'idea principale è quella di arricchire le etichette con una distribuzione di "soft probabilities" fornite dall'insegnante, che offrono informazioni complementari da cui lo studente può imparare. Ad esempio, se un classificatore basato su BERT assegna alte probabilità a più token, questo potrebbe indicare che questi sono vicini l'uno all'altro, probabilisticamente parlando. Addestrando lo studente a imitare queste probabilità, l'obiettivo è di distillare parte di questa "dark knowledge" che l'insegnante ha appreso.
Matematicamente, questo processo funziona come segue: si fornisce una sequenza di input x all'insegnante per generare un vettore di logits x = [z1x, ..., zNx]. Questi logits possono essere convertiti in probabilità applicando una funzione softmax.
Tuttavia, spesso l'insegnante assegna una probabilità alta ad una classe, rendendo le probabilità delle altre classi vicine a zero, e quindi non fornendo molte informazioni aggiuntive rispetto alle etichette di verità fondamentale. Per questo, si "addolciscono" le probabilità scalando i logits con un iperparametro di temperatura T prima di applicare la softmax.
Valori più alti di T producono una distribuzione di probabilità più morbida sulle classi e rivelano più informazioni sul confine decisionale che l'insegnante ha appreso per ogni esempio di addestramento.

Come funziona la Knowledge Distillation
Per l'addestramento, dello studente, invece di eseguirlo direttamente sul set di dati originale, lo studente viene addestrato per emulare l'output o il comportamento dell'insegnante. Ciò può avvenire in diversi modi, ma due approcci comuni includono:
- Addestramento sulle Soft Labels: Lo studente viene addestrato sui punteggi di probabilità (soft labels) generati dall'insegnante piuttosto che sulle etichette originali (hard labels) del set di dati. Questi punteggi di probabilità contengono informazioni più ricche sulle relazioni tra le diverse classi.
- Addestramento sulla Funzione di Perdita Aggiuntiva: Si può anche aggiungere una funzione di perdita che penalizza lo studente per deviazioni significative nell'output rispetto a quello dell'insegnante, aiutando così lo studente a imitare più fedelmente l'insegnante.
Etichette per l'addestramento dello Studente
Soft Labels
Le soft labels sono le probabilità di ciascuna classe di output fornite dal modello insegnante. A differenza delle hard labels, che indicano soltanto la classe target con un valore di 1 (o 100%) e 0 per tutte le altre classi, le soft labels forniscono una distribuzione di probabilità che riflette quanto l'insegnante sia "sicuro" della sua previsione. Queste probabilità catturano le relazioni sottili tra le classi che l'insegnante ha appreso durante il suo addestramento.
Addestrare lo studente sulle soft labels permette di trasferire questa "conoscenza sottile" all'alunno. Ad esempio, in un task di classificazione delle immagini, se l'insegnante assegna una probabilità del 90% a "gatto", 5% a "tigre", e 5% alle altre classi per un'immagine di un gatto, lo studente impara non solo a riconoscere i gatti ma anche a capire la somiglianza tra gatti e tigri, qualcosa che le hard labels non potrebbero insegnare.
Hard Labels
Le hard labels sono le etichette tradizionali (one-hot) utilizzate nell'addestramento supervisionato. Per ogni esempio nel set di addestramento, l'hard label indica la classe corretta con un valore di 1, mentre tutte le altre classi hanno un valore di 0. Queste etichette sono molto precise ma non forniscono informazioni aggiuntive sulla struttura del problema o sulle relazioni tra classi.
Sebbene l'uso esclusivo delle soft labels possa trasferire conoscenze complesse allo studente, l'incorporazione delle hard labels nell'addestramento può aiutare a mantenere o migliorare la precisione dello studente sulle decisioni chiare e dirette, assicurando che impari anche a fare distinzioni nette tra classi.
Nella pratica, spesso si utilizza una combinazione dei due metodi presentati. Questa può essere realizzata attraverso un approccio ibrido in cui la funzione di perdita è composta da due termini: uno basato sulle soft labels fornite dall'insegnante e l'altro sulle hard labels del dataset di addestramento. La ponderazione di questi due termini nella funzione di perdita può essere regolata per bilanciare il trasferimento di conoscenza sottile con l'apprendimento diretto dalle etichette originali.
Questo approccio ibrido consente allo studente di beneficiare della conoscenza approfondita dell'insegnante, migliorando la sua capacità di generalizzazione, pur rimanendo ancorato alla realtà concreta e precisa delle hard labels.
Links
Distilling the Knowledge in a Neural Network (2015)
GoogleColab Knowledge Distillation
Esempio di Distillazione da RoBERTa a DistillBERT