En aprendizaje automático , la destilación de conocimiento o destilación de modelos es el proceso de transferir conocimiento de un modelo grande a uno más pequeño. Si bien los modelos grandes (como redes neuronales muy profundas o conjuntos de muchos modelos) tienen una mayor capacidad de conocimiento que los modelos pequeños, es posible que esta capacidad no se utilice plenamente. Puede resultar igualmente costoso desde el punto de vista computacional evaluar un modelo incluso si utiliza poca de su capacidad de conocimiento. La destilación del conocimiento transfiere conocimiento de un modelo grande a un modelo más pequeño sin pérdida de validez . Como los modelos más pequeños son menos costosos de evaluar, se pueden implementar en hardware menos potente (como un dispositivo móvil ). [1]
La destilación de conocimientos se ha utilizado con éxito en varias aplicaciones del aprendizaje automático, como la detección de objetos , [2] modelos acústicos , [3] y el procesamiento del lenguaje natural . [4] Recientemente, también se ha introducido para graficar redes neuronales aplicables a datos que no son de red. [5]
Transferir el conocimiento de un modelo grande a uno pequeño necesita enseñar de alguna manera a este último sin pérdida de validez. Si ambos modelos se entrenan con los mismos datos, el modelo pequeño puede tener capacidad insuficiente para aprender una representación concisa del conocimiento dados los mismos recursos computacionales y los mismos datos que el modelo grande. Sin embargo, parte de la información sobre una representación concisa del conocimiento está codificada en las pseudoverosimilitudes asignadas a su salida: cuando un modelo predice correctamente una clase, asigna un valor grande a la variable de salida correspondiente a dicha clase y valores más pequeños a las otras variables de salida. La distribución de valores entre los resultados de un registro proporciona información sobre cómo el modelo grande representa el conocimiento. Por lo tanto, el objetivo de la implementación económica de un modelo válido se puede lograr entrenando solo el modelo grande con los datos, explotando su mejor capacidad para aprender representaciones de conocimiento concisas y luego destilando dicho conocimiento en el modelo más pequeño, que no sería capaz de implementar. Aprendalo por sí solo, entrenándolo para que aprenda la salida suave del modelo grande. [1]
Un primer ejemplo de destilación de una red neuronal artificial en otra red se remonta a 1992, cuando Juergen Schmidhuber comprimió o colapsó una jerarquía de redes neuronales recurrentes (RNN) en un único RNN, al destilar una red fragmentaria de nivel superior en una red automatizadora de nivel inferior. . [6] [7] Esto facilitó el aprendizaje profundo posterior.
Una metodología relacionada para comprimir el conocimiento de múltiples modelos en una única red neuronal se denominó compresión de modelos en 2006. La compresión se logró entrenando un modelo más pequeño con grandes cantidades de pseudodatos etiquetados por un conjunto de mayor rendimiento, optimizándolo para que coincida con el logit. del modelo comprimido al logit del conjunto. [8] La destilación del conocimiento es una generalización de dicho enfoque, introducida por Geoffrey Hinton et al. en 2015, [1] en una preimpresión que formulaba el concepto y mostraba algunos resultados alcanzados en la tarea de clasificación de imágenes .
La destilación de conocimientos también está relacionada con el concepto de clonación conductual discutido por Faraz Torabi et. Alabama. [9]
Dado un modelo grande en función de la variable vectorial , entrenado para una tarea de clasificación específica , normalmente la capa final de la red es un softmax en la forma
donde hay un parámetro llamado temperatura , que para un softmax estándar normalmente se establece en 1. El operador softmax convierte los valores logit en pseudoprobabilidades, y los valores más altos de temperatura tienen el efecto de generar una distribución más suave de pseudoprobabilidades entre la salida. clases. La destilación de conocimiento consiste en entrenar una red más pequeña, llamada modelo destilado , en un conjunto de datos llamado conjunto de transferencia (diferente al conjunto de datos utilizado para entrenar el modelo grande) usando la entropía cruzada como función de pérdida entre la salida del modelo destilado y la salida producida. por el modelo grande en el mismo registro (o el promedio de las salidas individuales, si el modelo grande es un conjunto), usando un valor alto de temperatura softmax para ambos modelos [1]
En este contexto, una temperatura alta aumenta la entropía de la salida y, por lo tanto, proporciona más información para aprender para el modelo destilado en comparación con objetivos duros, al mismo tiempo que reduce la variación del gradiente entre diferentes registros y, por lo tanto, permite tasas de aprendizaje más altas . [1]
Si la verdad fundamental está disponible para el conjunto de transferencia, el proceso se puede fortalecer agregando a la pérdida la entropía cruzada entre la salida del modelo destilado (calculado con ) y la etiqueta conocida.
donde el componente de la pérdida con respecto al modelo grande está ponderado por un factor de ya que, a medida que aumenta la temperatura, el gradiente de la pérdida con respecto a los pesos del modelo aumenta en un factor de . [1]
Bajo el supuesto de que los logits tienen media cero , es posible demostrar que la compresión del modelo es un caso especial de destilación del conocimiento. El gradiente de la pérdida por destilación del conocimiento con respecto al logit del modelo destilado viene dado por
¿Dónde están los logits del modelo grande? Para valores grandes de esto se puede aproximar como
y bajo la hipótesis de media cero se convierte en , que es la derivada de , es decir, la pérdida es equivalente a hacer coincidir los logits de los dos modelos, como se hace en la compresión del modelo. [1]