20 votos

¿Por qué el uso del pseudoetiquetado afecta de forma no trivial a los resultados?

He estado estudiando métodos de aprendizaje semisupervisado y me he topado con el concepto de "pseudoetiquetado".

Según tengo entendido, con el pseudoetiquetado se tiene un conjunto de datos etiquetados y un conjunto de datos sin etiquetar. Primero se entrena un modelo sólo con los datos etiquetados. A continuación, se utilizan los datos iniciales para clasificar (asignar etiquetas provisionales) los datos sin etiquetar. A continuación, los datos etiquetados y no etiquetados se introducen de nuevo en el modelo de entrenamiento, (re)ajustándose tanto a las etiquetas conocidas como a las etiquetas previstas. (Repite este proceso, volviendo a etiquetar con el modelo actualizado).

Las supuestas ventajas son que se puede utilizar la información sobre la estructura de los datos no etiquetados para mejorar el modelo. A menudo se muestra una variación de la siguiente figura, "demostrando" que el proceso puede tomar una decisión más compleja en función de dónde se encuentren los datos (no etiquetados).

Decision boundary in semi-supervised methods

_Imagen de Wikimedia Commons por Techerin CC BY-SA 3.0_

Sin embargo, no me creo del todo esa explicación simplista. Ingenuamente, si el resultado original del entrenamiento con sólo etiquetas fuera el límite superior de decisión, las pseudoetiquetas se asignarían en función de ese límite de decisión. Es decir, la parte izquierda de la curva superior se pseudoetiquetaría de blanco y la parte derecha de la curva inferior se pseudoetiquetaría de negro. Tras el reentrenamiento no se obtendría el bonito límite de decisión curvo, ya que las nuevas pseudoetiquetas simplemente reforzarían el límite de decisión actual.

O dicho de otro modo, la actual frontera de decisión sólo etiquetada tendría una precisión de predicción perfecta para los datos no etiquetados (ya que eso es lo que utilizamos para hacerlas). No hay ninguna fuerza impulsora (ningún gradiente) que nos haga cambiar la ubicación de ese límite de decisión simplemente añadiendo los datos pseudoetiquetados.

¿Estoy en lo cierto al pensar que falta la explicación plasmada en el diagrama? ¿O hay algo que se me escapa? En caso negativo, ¿qué es el beneficio de las pseudo-etiquetas, dado que el límite de decisión del pre-reentrenamiento tiene una precisión perfecta sobre las pseudo-etiquetas?

18voto

throwaway Puntos 18

El pseudoetiquetado no funciona en el problema de juguete dado

Oliver et al. (2018) evaluaron diferentes algoritmos de aprendizaje semisupervisado. Su primera figura muestra el rendimiento del pseudoetiquetado (y otros métodos) en el mismo problema de juguete que el de su pregunta (denominado conjunto de datos "dos lunas"):

enter image description here

El gráfico muestra los puntos de datos etiquetados y sin etiquetar, y los límites de decisión obtenidos tras entrenar una red neuronal utilizando distintos métodos de aprendizaje semisupervisado. Como sospechabas, el pseudoetiquetado no funciona bien en esta situación. Dicen que el pseudoetiquetado "es una heurística sencilla que se utiliza mucho en la práctica, probablemente por su sencillez y generalidad". Pero: "Aunque intuitivo, puede producir resultados incorrectos cuando la función de predicción produce objetivos poco útiles para [los datos no etiquetados], como se muestra en la fig. 1".

¿Por qué y cuándo funciona el pseudoetiquetado?

El pseudoetiquetado fue introducido por Lee (2013), por lo que puedes encontrar más detalles allí.

La hipótesis de la agrupación

La justificación teórica que Lee dio para el pseudoetiquetado es que es similar a la regularización de la entropía. La regularización de entropía (Grandvalet y Bengio 2005) es otra técnica de aprendizaje semisupervisado que anima al clasificador a hacer predicciones fiables sobre datos no etiquetados. Por ejemplo, preferiríamos que a un punto no etiquetado se le asignara una alta probabilidad de pertenecer a una clase concreta, en lugar de probabilidades difusas repartidas entre varias clases. El objetivo es aprovechar la suposición de que los datos están agrupados por clases (denominada "suposición de agrupamiento" en el aprendizaje semisupervisado). Así, los puntos cercanos tienen la misma clase, y los puntos de clases diferentes están más separados, de forma que los verdaderos límites de decisión discurren por regiones de baja densidad del espacio de entrada.

Por qué puede fallar el pseudoetiquetado

Teniendo en cuenta lo anterior, parecería razonable suponer que la hipótesis de los conglomerados es una condición necesaria para que funcione el pseudoetiquetado. Pero está claro que no es suficiente, ya que el problema de las dos lunas anterior sí cumple el supuesto de agrupamiento, pero el pseudoetiquetado no funciona. En este caso, sospecho que el problema es que hay muy pocos puntos etiquetados, y la estructura de conglomerados adecuada no puede identificarse a partir de estos puntos. Así que, como describen Oliver et al. (y como usted señala en su pregunta), las pseudoetiquetas resultantes guían al clasificador hacia el límite de decisión equivocado. Quizá funcionaría con más datos etiquetados. Por ejemplo, contrasta esto con el caso MNIST descrito a continuación, donde el pseudoetiquetado sí funciona.

Dónde funciona

Lee (2013) demostró que el pseudoetiquetado puede ayudar en el conjunto de datos MNIST (con 100-3000 ejemplos etiquetados). En la fig. 1 de ese artículo, se puede ver que una red neuronal entrenada con 600 ejemplos etiquetados (sin ningún aprendizaje semisupervisado) puede ya recuperar la estructura de conglomerados entre clases. Parece que el pseudoetiquetado ayuda entonces a refinar la estructura. Obsérvese que, a diferencia del ejemplo de las dos lunas, varios puntos etiquetados no bastaron para aprender los conglomerados adecuados.

El documento también menciona que los resultados eran inestables con sólo 100 ejemplos etiquetados. Esto respalda de nuevo la idea de que el pseudoetiquetado es sensible a las predicciones iniciales, y que unas buenas predicciones iniciales requieren un número suficiente de puntos etiquetados.

Lee también demostró que el preentrenamiento no supervisado mediante autocodificadores de eliminación de ruido ayuda aún más, pero esto parece ser una forma separada de explotar la estructura en los datos no etiquetados; desafortunadamente, no hubo comparación con el preentrenamiento no supervisado solo (sin pseudoetiquetado).

Grandvalet y Bengio (2005) informaron de que el pseudoetiquetado supera al aprendizaje supervisado en los conjuntos de datos CIFAR-10 y SVHN (con 4000 y 1000 ejemplos etiquetados, respectivamente). Como en el caso anterior, se trata de muchos más datos etiquetados que los 6 puntos etiquetados del problema de las dos lunas.

Referencias

  • Grandvalet y Bengio (2005) . Aprendizaje semisupervisado por minimización de entropía .

  • Lee (2013) . Pseudoetiqueta: El sencillo y eficiente método de aprendizaje semisupervisado para redes neuronales profundas .

  • Oliver et al. (2018) . Evaluación realista de algoritmos de aprendizaje semisupervisado .

6voto

Loren Pechtel Puntos 2212

Lo que puede que estés pasando por alto en el funcionamiento del autoentrenamiento es que:

  1. Es iterativo, no de una sola vez.

  2. Se utiliza un clasificador que devuelve valores probabilísticos. En cada iteración, sólo se añaden etiquetas para los casos en los que el algoritmo está más seguro.

En su ejemplo, quizá la primera iteración sólo tenga la confianza suficiente para etiquetar uno o dos puntos muy cercanos a cada uno de los puntos etiquetados. En la siguiente iteración, el límite girará ligeramente para dar cabida a estos cuatro o seis puntos etiquetados y, si no es lineal, también puede empezar a curvarse ligeramente. Repita la operación.

No está garantizado que funcione. Depende de tu clasificador base, de tu algoritmo (de lo seguro que tengas que estar para asignar una pseudoetiqueta, etc.), de tus datos, etc.

También hay otros algoritmos que son más potentes si sabes utilizarlos. Lo que creo que estás describiendo es el autoentrenamiento, que es fácil de codificar, pero estás utilizando un único clasificador que mira la misma información repetidamente. El co-entrenamiento utiliza múltiples clasificadores que buscan información diferente para cada punto. (También hay otras técnicas semisupervisadas, como las que agrupan explícitamente, aunque no hay un "esto siempre funciona y es el ganador".

EN RESPUESTA al comentario: No soy un experto en este campo. Lo vemos muy aplicable a lo que solemos hacer con los clientes, así que estoy aprendiendo y no tengo todas las respuestas.

El primer resultado de la búsqueda de resúmenes de aprendizaje semisupervisado es: Estudio de la bibliografía sobre aprendizaje semisupervisado de 2008. Eso es hace siglos, informáticamente hablando, pero habla de las cosas que he mencionado aquí.

Entiendo que un clasificador podría calificar con mayor certeza los puntos no etiquetados más alejados de los nodos etiquetados. Por otro lado, nuestras intuiciones pueden engañarnos. Por ejemplo, consideremos el gráfico que obtuviste de Wikipedia con los nodos negros, blancos y grises.

En primer lugar, esto es en 2D y la mayoría de los problemas realistas estarán en dimensiones superiores, donde nuestra intuición a menudo nos engaña. El espacio de altas dimensiones actúa de forma diferente en muchos aspectos, algunos negativos y otros realmente útiles.

En segundo lugar, podríamos suponer que en la primera iteración los dos puntos grises situados más a la derecha y más abajo se etiquetarían como negros, ya que el punto etiquetado como negro está más cerca de ellos que el punto etiquetado como blanco. Pero si eso ocurriera en ambos lados, el límite de decisión vertical seguiría inclinándose y dejaría de ser vertical. Al menos en mi imaginación, si fuera una línea recta bajaría por el espacio vacío diagonal entre los dos puntos etiquetados originalmente. Seguiría dividiendo incorrectamente las dos medias lunas, pero ahora estaría más alineada con los datos. Una iteración continua, especialmente con un límite de decisión no lineal, podría dar una respuesta mejor de lo que esperamos.

En tercer lugar, no estoy seguro de que una vez etiquetado, siempre etiquetado sea como realmente debería funcionar. Dependiendo de cómo lo hagas y de cómo funcione el algoritmo, podrías acabar inclinando primero el límite mientras lo doblas (suponiendo que no sea lineal), y entonces algunas de las partes mal clasificadas de las medias lunas podrían cambiar sus etiquetas.

Mi intuición me dice que esos tres puntos, combinados con datos apropiados (probablemente de mayor dimensión) y clasificadores adecuados, pueden dar mejores resultados que un sistema directamente supervisado con un número muy reducido de muestras de entrenamiento (etiquetadas). No hay garantías, y en mis experimentos he descubierto -lo achaco a que los conjuntos de datos son demasiado simples- que los semisupervisados pueden mejorar sólo marginalmente a los supervisados y a veces pueden fallar gravemente. Por otra parte, estoy jugando con dos algoritmos que he creado y que pueden ser buenos o no.

1voto

dkirk Puntos 68

Atención, no soy un experto en este procedimiento. El hecho de que yo no haya obtenido buenos resultados no prueba que la técnica no pueda funcionar. Además, tu imagen tiene la descripción general de aprendizaje "semisupervisado", que es un área amplia con una gran variedad de técnicas.

Estoy de acuerdo con tu intuición, no veo cómo una técnica como ésta podría funcionar sin más. En otras palabras, creo que se necesitaría un lote de esfuerzo para que funcione bien en una aplicación específica, y ese esfuerzo no sería necesariamente útil en otras aplicaciones.

Probé dos instancias diferentes, una con un conjunto de datos en forma de plátano como el de la imagen de ejemplo, y otra más sencilla con dos conglomerados simples de distribución normal. En ambos casos no pude mejorar el clasificador inicial.

Como pequeño intento de animar las cosas, añadí ruido a todas las probabilidades previstas con la esperanza de que esto provocara mejores resultados.

En el primer ejemplo he recreado la imagen anterior lo más fielmente que he podido. No creo que el psuedo-etiquetado pueda ayudar en absoluto en este caso.

Examlpe one, banana-shaped data

El segundo ejemplo es mucho más fácil, pero incluso aquí no consigue mejorar al clasificador inicial. Elegí específicamente un punto etiquetado del centro de la clase izquierda y del lado derecho de la clase derecha con la esperanza de que se desplazara en la dirección correcta, pero no hubo suerte.

Example two, 2D normally distributed data =

Código para el ejemplo 1 (el ejemplo 2 es lo suficientemente similar como para no duplicarlo aquí):

import numpy as np
from sklearn.ensemble import RandomForestClassifier
import matplotlib.pyplot as plt
import seaborn

np.random.seed(2018-10-1)
N = 1000

_x = np.linspace(0, np.pi, num=N)
x0 = np.array([_x, np.sin(_x)]).T
x1 = -1 * x0 + [np.pi / 2, 0]

scale = 0.15
x0 += np.random.normal(scale=scale, size=(N, 2))
x1 += np.random.normal(scale=scale, size=(N, 2))

X = np.vstack([x0, x1])

proto_0 = np.array([[0], [0]]).T # the single "labeled" 0
proto_1 = np.array([[np.pi / 2], [0]]).T # the single "labeled" 1

model = RandomForestClassifier()
model.fit(np.vstack([proto_0, proto_1]), np.array([0, 1]))
for itercount in range(100):
    labels = model.predict_proba(X)[:, 0]
    labels += (np.random.random(labels.size) - 0.5) / 10 # add some noise
    labels = labels > 0.5
    model = RandomForestClassifier()
    model.fit(X, labels)

f, axs = plt.subplots(1, 2, squeeze=True, figsize=(10, 5))

axs[0].plot(x0[:, 0], x0[:, 1], '.', alpha=0.25, label='unlabeled x0')
axs[0].plot(proto_0[:, 0], proto_0[:, 1], 'o', color='royalblue', markersize=10, label='labeled x0')
axs[0].plot(x1[:, 0], x1[:, 1], '.', alpha=0.25, label='unlabeled x1')
axs[0].plot(proto_1[:, 0], proto_1[:, 1], 'o', color='coral', markersize=10, label='labeled x1')
axs[0].legend()

axs[1].plot(X[~labels, 0], X[~labels, 1], '.', alpha=0.25, label='predicted class 0')
axs[1].plot(X[labels, 0], X[labels, 1], '.', alpha=0.25, label='predicted class 1')
axs[1].plot([np.pi / 4] * 2, [-1.5, 1.5], 'k--', label='halfway between labeled data')
axs[1].legend()
plt.show()

1voto

InfProbSciX Puntos 174

Esta es mi suposición (yo tampoco sé mucho sobre este tema, sólo quería añadir mis dos centavos a esta discusión).

Creo que tienes razón, no tiene sentido entrenar un modelo clásico y utilizar sus predicciones como datos, porque como dices, no hay ningún incentivo para que el optimizador lo haga mejor. Supongo que los algoritmos de arranque aleatorio tienen más probabilidades de encontrar el mismo óptimo porque estarían "más seguros" de que el óptimo encontrado previamente es correcto, debido al mayor conjunto de datos, pero esto es irrelevante.

Dicho esto, la primera respuesta que has recibido tiene razón: ese ejemplo de Wikipedia habla de agrupación, y creo que eso marca la diferencia. Cuando tienes datos sin etiquetar, básicamente tienes un montón de puntos sin etiquetar que se encuentran en un "espacio de características latentes" compartido con los otros puntos etiquetados. Sólo se puede obtener mejores resultados que con un algoritmo de clasificación entrenado en los datos etiquetados si se descubre que los puntos no etiquetados pueden separarse y agruparse. entonces clasificados en función de la clase a la que pertenecen los puntos etiquetados, en este espacio de características latentes.

Lo que quiero decir es que necesitas hacer esto:

$$labelled\;data \rightarrow clustering \rightarrow classification$$

... y luego repetir con datos sin etiquetar. En este caso, los límites de los conglomerados aprendidos no porque el clustering no tiene en cuenta las etiquetas de clase, lo único que tiene en cuenta es la transformación del espacio de características. El clustering genera un espacio de características latente, sobre el que se aprende el límite de clasificación, y éste sólo depende de los datos etiquetados.

Los algoritmos que no realizan ningún tipo de agrupación, creo, no podrán cambiar su óptimo basándose en el conjunto de datos sin etiquetar.

Por cierto, creo que la imagen que has enlazado explica bastante bien lo que ocurre aquí: se aprende un límite de decisión basándose únicamente en el algoritmo de agrupación. No tiene ni idea de lo que el correcto Las clases están aquí - Puede ser que sean todas aleatorias - No lo sabemos. Lo único que sabemos es que parece haber cierta estructura en el espacio de características y que parece haber cierta correspondencia entre el espacio de características y las etiquetas de las clases.

Realmente no tengo referencias pero en este post de Reddit según tengo entendido, hay una discusión sobre un GAN que realiza aprendizaje semisupervisado. Tengo la corazonada de que implícitamente realiza una agrupación, seguida de una clasificación.

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