1 votos

Después de entrenar un clasificador en N clases, ¿cómo se añade una N+1ª clase?

Digamos que tenemos datos para N clases y entrenamos un clasificador. Luego tenemos un nuevo conjunto de datos para una N+1ª clase. ¿Cómo entreno un clasificador que ahora predice todas las N+1 clases?

El ajuste es en la detección de objetos, aunque no creo que deba ser diferente entre la clasificación de imágenes y la detección de objetos. Además, estoy afinando a partir de un modelo pre-entrenado (por ejemplo, VGG16 entrenado en image-net).

Opción 1: Compilar todos los datos para las N+1 clases y afinar de nuevo a partir del VGG16 original entrenado en image-net.

Opción 2: Recopilar todos los datos de las N+1 clases y afinar a partir del modelo entrenado en N clases.

Opción 3: ¿Existe una forma de afinar sólo con los datos de la clase N+1? Supongo que no, ya que los pesos de la última capa (justo antes de la predicción de la clase) deben reiniciarse.

Las opciones 1 y 2 no son ideales porque no son escalables al aumentar el número de clases.

1voto

mclaughlinj Puntos 1099

Otro enfoque es entrenar los autocodificadores para las primeras N clases, y luego entrenar otra red $f$ que asigna los pesos del autoencoder entrenado a vectores $W_i$ , donde $W_i$ es el $i$ fila de la matriz de pesos en la capa FC antes del softmax (este vector correspondería al $i$ de la clase que se elija).

Ahora, para añadir una nueva clase, puedes simplemente entrenar un autocodificador sólo en esa clase, y utilizar $f$ para predecir el vector $W_{N+1}$ . Ahora puedes concatenarla en tu matriz de pesos, y quizás afinar un poco.

Esto no requiere un reentrenamiento en todos los datos (aunque el ajuste puede mejorar el rendimiento), y el coste es constante con respecto a $N$ .

Véase también el documento extremadamente relevante "Aprender a modelar la cola"

0voto

Flow Puntos 382

Opción 2.

El modelo genera (presumiblemente) algún tipo de salida Softmax en la última capa. Tendrá que entrenar la red para distinguir la clase N + 1 de todas las demás clases. Así que, hasta donde yo sé, no hay ninguna magia para entrenar de forma incremental una nueva clase.

Yo trataría la salida de VGG como un preprocesamiento no supervisado de la entrada. No es necesario volver a ajustarlo para las nuevas clases de datos. En otras palabras, este es el objetivo de los modelos preformados: el aprendizaje no supervisado utilizable en todas las aplicaciones.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X