¿Por qué el uso de pseudo-etiquetado afecta los resultados de manera no trivial?

19

He estado buscando métodos de aprendizaje semi-supervisados ​​y he encontrado el concepto de "pseudo-etiquetado".

Según tengo entendido, con pseudo-etiquetado tiene un conjunto de datos etiquetados, así como un conjunto de datos sin etiquetar. Primero entrena un modelo solo con los datos etiquetados. Luego usa esos datos iniciales para clasificar (adjuntar etiquetas provisionales) los datos sin etiquetar. Luego, ingresa los datos etiquetados y no etiquetados nuevamente en su entrenamiento modelo, (re) ajustando tanto a las etiquetas conocidas como a las etiquetas predichas. (Itere este proceso y vuelva a etiquetar con el modelo actualizado).

Los beneficios reclamados son que puede usar la información sobre la estructura de los datos sin etiquetar para mejorar el modelo. A menudo se muestra una variación de la siguiente figura, "demostrando" que el proceso puede tomar un límite de decisión más complejo en función de dónde se encuentran los datos (sin etiquetar).

Límite de decisión en métodos semi-supervisados

Imagen de Wikimedia Commons por Techerin CC BY-SA 3.0

Sin embargo, no estoy comprando esa explicación simplista. Ingenuamente, si el resultado original del entrenamiento etiquetado solo fuera el límite superior de decisión, las pseudo-etiquetas se asignarían en función de ese límite de decisión. Es decir que la mano izquierda de la curva superior estaría pseudo-etiquetada en blanco y la mano derecha de la curva inferior estaría pseudo-etiquetada en negro. No obtendría el límite de decisión curvo agradable después del reentrenamiento, ya que las nuevas pseudo-etiquetas simplemente reforzarían el límite de decisión actual.

O para decirlo de otra manera, el límite de decisión actual solo etiquetado tendría una precisión de predicción perfecta para los datos no etiquetados (ya que eso es lo que solíamos hacer). No hay una fuerza impulsora (sin gradiente) que nos haga cambiar la ubicación de ese límite de decisión simplemente agregando los datos pseudo etiquetados.

¿Estoy en lo cierto al pensar que falta la explicación que representa el diagrama? ¿O hay algo que me falta? Si no, ¿cuál es el beneficio de las pseudo-etiquetas, dado que el límite de decisión previo al reentrenamiento tiene una precisión perfecta sobre las pseudo-etiquetas?

RM
fuente

Respuestas:

16

El pseudo etiquetado no funciona en el problema del juguete dado

Oliver y col. (2018) evaluaron diferentes algoritmos de aprendizaje semi-supervisados. Su primera figura muestra cómo se realiza el pseudo etiquetado (y otros métodos) en el mismo problema de juguete que en su pregunta (llamado el conjunto de datos de 'dos ​​lunas'):

ingrese la descripción de la imagen aquí

El gráfico muestra los puntos de datos etiquetados y no etiquetados, y los límites de decisión obtenidos después de entrenar una red neuronal usando diferentes métodos de aprendizaje semi-supervisados. Como sospechaba, el pseudo etiquetado no funciona bien en esta situación. Dicen que el pseudo-etiquetado "es una heurística simple que se usa ampliamente en la práctica, probablemente debido a su simplicidad y generalidad". Pero: "Si bien es intuitivo, puede producir resultados incorrectos cuando la función de predicción produce objetivos inútiles para [los datos no etiquetados], como se muestra en la figura 1."

¿Por qué y cuándo funciona el pseudo-etiquetado?

Pseudo-etiquetado fue introducido por Lee (2013), por lo que puede encontrar más detalles allí.

La suposición de clúster

La justificación teórica que Lee dio para el pseudo etiquetado es que es similar a la regularización de la entropía. La regularización de la entropía (Grandvalet y Bengio 2005) es otra técnica de aprendizaje semi-supervisada, que alienta al clasificador a hacer predicciones confiables sobre datos no etiquetados. Por ejemplo, preferiríamos que a un punto sin etiqueta se le asigne una alta probabilidad de estar en una clase en particular, en lugar de probabilidades difusas distribuidas en varias clases. El propósito es aprovechar la suposición de que los datos están agrupados de acuerdo con la clase (llamada "suposición de agrupación" en el aprendizaje semi-supervisado). Por lo tanto, los puntos cercanos tienen la misma clase, y los puntos en diferentes clases están más separados, de modo que los límites de decisión verdaderos atraviesan regiones de baja densidad del espacio de entrada.

¿Por qué podría fallar el pseudo etiquetado?

Dado lo anterior, parecería razonable suponer que la suposición del clúster es una condición necesaria para que funcione el pseudo-etiquetado. Pero, claramente, no es suficiente, ya que el problema de dos lunas anterior satisface la suposición del clúster, pero el pseudo etiquetado no funciona. En este caso, sospecho que el problema es que hay muy pocos puntos etiquetados, y la estructura de clúster adecuada no se puede identificar a partir de estos puntos. Entonces, como Oliver et al. describa (y como señala en su pregunta), las pseudo-etiquetas resultantes guían al clasificador hacia el límite de decisión equivocado. Tal vez funcionaría dados más datos etiquetados. Por ejemplo, contrasta esto con el caso MNIST descrito a continuación, donde el pseudo-etiquetado funciona.

Donde funciona

Lee (2013) demostró que el pseudo-etiquetado puede ayudar en el conjunto de datos MNIST (con 100-3000 ejemplos etiquetados). En la Fig. 1 de ese documento, puede ver que una red neuronal entrenada en 600 ejemplos etiquetados (sin ningún aprendizaje semi-supervisado) ya puede recuperar la estructura del clúster entre las clases. Parece que el pseudo-etiquetado ayuda a refinar la estructura. Tenga en cuenta que esto es diferente al ejemplo de dos lunas, donde varios puntos etiquetados no fueron suficientes para aprender los grupos adecuados.

El documento también menciona que los resultados fueron inestables con solo 100 ejemplos etiquetados. Esto respalda nuevamente la idea de que el pseudo etiquetado es sensible a las predicciones iniciales, y que las buenas predicciones iniciales requieren un número suficiente de puntos etiquetados.

Lee también demostró que el entrenamiento previo sin supervisión utilizando autoencoders de eliminación de ruido ayuda aún más, pero esta parece ser una forma separada de explotar la estructura en los datos no etiquetados; desafortunadamente, no hubo comparación con el pre-entrenamiento no supervisado solo (sin pseudo-etiquetado).

Grandvalet y Bengio (2005) informaron que el pseudo-etiquetado supera el aprendizaje supervisado en los conjuntos de datos CIFAR-10 y SVHN (con 4000 y 1000 ejemplos etiquetados, respectivamente). Como se indicó anteriormente, estos son datos mucho más etiquetados que los 6 puntos etiquetados en el problema de las dos lunas.

Referencias

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

  • Lee (2013) . Pseudo-etiqueta: el método de aprendizaje semi-supervisado simple y eficiente para redes neuronales profundas.

  • Oliver y col. (2018) . Evaluación realista de algoritmos de aprendizaje semi-supervisados.

usuario20160
fuente
5

Lo que puede estar pasando por alto en cómo funciona el autoaprendizaje es que

  1. Es iterativo, no de una sola vez.

  2. Utiliza un clasificador que devuelve valores probabilísticos. En cada iteración, solo agrega etiquetas psuedo para los casos sobre los que su algoritmo está más seguro.

En su ejemplo, tal vez la primera iteración solo sea lo suficientemente segura como para etiquetar uno o dos puntos muy cerca de cada uno de los puntos etiquetados. En la próxima iteración, el límite girará levemente para acomodar estos cuatro a seis puntos etiquetados, y si no es lineal también puede comenzar a doblarse ligeramente. Repetir.

No se garantiza que funcione. Depende de su clasificador base, su algoritmo (qué tan seguro debe estar para asignar una pseudoetiqueta, etc.), sus datos, etc.

También hay otros algoritmos que son más potentes si puedes usarlos. Lo que creo que estás describiendo es auto-entrenamiento, que es fácil de codificar, pero estás usando un único clasificador que está viendo la misma información repetidamente. La capacitación conjunta utiliza múltiples clasificadores que buscan información diferente para cada punto. (Esto es algo análogo a los bosques aleatorios). También hay otras técnicas semi-supervisadas, como las que se agrupan explícitamente, aunque en general no "esto siempre funciona y este es el ganador".

EN RESPUESTA al comentario: no soy un experto en este campo. Lo vemos como muy aplicable a lo que normalmente hacemos con los clientes, por lo que estoy aprendiendo y no tengo todas las respuestas.

El principal éxito cuando busco resúmenes de aprendizaje semi-supervisados ​​es: Encuesta de literatura de aprendizaje semi-supervisada , de 2008. Eso fue hace mucho tiempo, por computadora, pero habla de las cosas que he mencionado aquí.

Escuché que un clasificador podría calificar los puntos sin etiquetar que están más alejados de los nodos etiquetados con la mayor certeza. Por otro lado, nuestras intuiciones pueden engañarnos. Por ejemplo, consideremos el gráfico que obtuvo de Wikipedia con los nodos negro, blanco y gris.

Primero, esto es en 2D y los problemas más realistas estarán en dimensiones más altas, donde nuestra intuición a menudo nos engaña. El espacio de alta dimensión actúa de manera diferente de muchas maneras, algunas negativas y otras realmente útiles.

En segundo lugar, podríamos adivinar que en la primera iteración los dos puntos grises más a la derecha y más bajos se etiquetarían como negros, ya que el punto etiquetado en negro está más cerca de ellos que el punto etiquetado en blanco. Pero si eso sucediera en ambos lados, el límite de decisión vertical aún se inclinaría y ya no sería 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 originalmente etiquetados. Todavía dividiría las dos medias lunas incorrectamente, pero ahora estaría más alineado con los datos. La iteración continua, particularmente con un límite de decisión no lineal, podría dar una mejor respuesta de lo que anticipamos.

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

Mi instinto es que esos tres puntos, combinados con datos apropiados (probablemente de mayor dimensión) y clasificadores apropiados pueden funcionar mejor que una supervisión directa con un número muy pequeño de muestras de entrenamiento (etiquetadas). No hay garantías, y en mis experimentos he encontrado, lo culpo a los conjuntos de datos que son demasiado simples, que semi-supervisado solo puede mejorar marginalmente sobre supervisado y, a veces, puede fallar gravemente. Por otra parte, estoy jugando con dos algoritmos que he creado que pueden o no ser buenos.

Wayne
fuente
2
¿Podría ampliar en qué tipo de clasificadores / situaciones funcionaría? Según tengo entendido, la mayoría de los clasificadores que trabajan en el tipo de datos de ejemplo mostrados sería que están lejos de la frontera de decisión (frente a los puntos conocidos) lo que obtendría una gran confianza, por lo que esas colas distales se clasificarían erróneamente con confianza en el ejemplo. (Además, cualquier referencia / lectura adicional que pueda señalar con respecto al uso efectivo de pseudoetiquetado y técnicas relacionadas sería apreciada.)
RM
@RM Editado. ¿Cómo es eso?
Wayne
1

Advertencia, no soy un experto en este procedimiento. Mi incapacidad para producir buenos resultados no es prueba de que la técnica no pueda funcionar. Además, su imagen tiene la descripción general del aprendizaje "semi-supervisado", que es un área amplia con una variedad de técnicas.

Estoy de acuerdo con su intuición, no veo cómo una técnica como esta podría funcionar de forma inmediata. En otras palabras, creo que necesitaría mucho esfuerzo para que funcione bien para una aplicación específica, y ese esfuerzo no necesariamente sería útil en otras aplicaciones.

Probé dos instancias diferentes, una con un conjunto de datos en forma de banana como el de la imagen de ejemplo, y otra con un conjunto de datos más fácil con dos clústeres distribuidos normales simples. En ambos casos no pude mejorar el clasificador inicial.

Como un pequeño intento de alentar las cosas, agregué ruido a todas las probabilidades predichas con la esperanza de que esto causaría mejores resultados.

El primer ejemplo recreé la imagen de arriba tan fielmente como pude. No creo que el etiquetado de psuedo pueda ayudar en absoluto aquí.

Ejemplo uno, datos en forma de plátano

El segundo ejemplo es mucho más fácil, pero incluso aquí no mejora en el clasificador inicial. Elegí específicamente el punto etiquetado desde el centro de la clase izquierda, y el lado derecho de la clase derecha con la esperanza de que cambiara en la dirección correcta, no hubo suerte.

Ejemplo dos, datos distribuidos normalmente en 2D] =

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()
kbrose
fuente
1

Aquí está mi suposición (tampoco sé mucho sobre este tema, solo quería agregar mis dos centavos a esta discusión).

Creo que tiene razón, no tiene sentido entrenar un modelo clásico y usar sus predicciones como datos, porque como usted dice, no hay ningún incentivo para que el optimizador lo haga mejor. Supongo que es más probable que los algoritmos de inicio aleatorio encuentren 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 recibió tiene un punto: ese ejemplo en Wikipedia habla sobre la agrupación, y creo que eso hace toda la diferencia. Cuando tiene datos sin etiquetar, esencialmente tiene un montón de puntos sin etiquetar que se encuentran en algún "espacio de características latentes" compartido como los otros etiquetados. Solo puede hacerlo mejor que un algoritmo de clasificación entrenado en los datos etiquetados, si puede descubrir el hecho de que los puntos no etiquetados pueden separarse y luego clasificarse según la clase a la que pertenecen los puntos etiquetados, en este espacio de características latentes.

Lo que quiero decir es que debes hacer esto:

labelleddataclusteringclassification

... y luego repita con datos no etiquetados. Aquí, los límites de clúster aprendidos no serán los mismos, porque el clúster no se preocupa por las etiquetas de clase, todo lo que explica es transformar el espacio de características. La agrupación genera un espacio de características latentes, en el que se aprende el límite de clasificación, y esto depende solo de los datos etiquetados.

Los algoritmos que no realizan ningún tipo de agrupación, creo, no podrán cambiar su óptimo en función del conjunto de datos no etiquetados.

Por cierto, la imagen que vinculaste hace un trabajo justo, creo que explica lo que está sucediendo aquí; Se aprende un límite de decisión basado únicamente en el algoritmo de agrupamiento. No tienes idea de cuáles son las clases correctas , puede ser que todas sean aleatorias, no lo sabemos. Todo lo que podemos hacer ahora es que parece haber cierta estructura en el espacio de características, y parece haber cierta asignación del espacio de características a las etiquetas de clase.

Realmente no tengo referencias, pero en esta publicación de Reddit , según tengo entendido, hay una discusión sobre un GAN que realiza un aprendizaje semi-supervisado. Es una corazonada mía que implícitamente realiza una agrupación, seguida de una clasificación.

InfProbSciX
fuente