En esta historia, presentamos y exploramos ampliamente el tema de la supervisión débil en el aprendizaje automático. La supervisión débil es un paradigma de aprendizaje en el aprendizaje automático que comenzó a ganar una atención notable en los últimos años. Para resumirlo en pocas palabras, la supervisión completa requiere que tengamos un conjunto de entrenamiento (x,y) dónde y es la etiqueta correcta para X; mientras tanto, una supervisión débil supone un entorno general (x,y’) dónde Tú no tiene por qué ser correcto (es decir, es potencialmente incorrecto; una etiqueta débil). Además, en la supervisión débil podemos tener múltiples supervisores débiles, por lo que uno puede tener (x, y’1,y’2,…,y’F) para cada ejemplo donde cada uno yj proviene de una fuente diferente y es potencialmente incorrecta.
Tabla de contenido
∘ Planteamiento del problema
∘ Marco general
∘ Arquitectura General
∘ Tubo respirador
∘ Ejemplo de supervisión débil
Planteamiento del problema
En términos más prácticos, una supervisión débil contribuye a resolver lo que me gusta llamar el dilema del aprendizaje automático supervisado. Si es una empresa o una persona con una nueva idea en aprendizaje automático, necesitará datos. A menudo no es tan difícil recolectar muchas muestras. (x1, x2, …, xm) y, a veces, incluso se puede hacer mediante programación; sin embargo, el verdadero dilema es que necesitará contratar anotadores humanos para etiquetar estos datos y pagar unos Z$ por etiqueta. El problema no es sólo que no sepas si el proyecto vale tanto, sino que también es posible que no puedas permitirte contratar anotadores para empezar, ya que este proceso puede ser bastante costoso, especialmente en campos como el derecho y la medicina.
Quizás estés pensando, pero ¿cómo resuelve todo esto una supervisión débil? En términos simples, en lugar de pagar a los anotadores para que te den etiquetas, les pides que te den algunas reglas genéricas que a veces pueden ser inexactas al etiquetar los datos (lo que requiere mucho menos tiempo y dinero). En algunos casos, puede ser incluso trivial para tu equipo de desarrollo descubrir estas reglas por sí mismo (por ejemplo, si la tarea no requiere anotadores expertos).
Ahora pensemos en un caso de uso de ejemplo. Está intentando crear un sistema de PNL que enmascare palabras correspondientes a información confidencial, como números de teléfono, nombres y direcciones. En lugar de contratar personas para etiquetar palabras en un corpus de oraciones que ha recopilado, escribe algunas funciones que etiquetan automáticamente todos los datos en función de si la palabra es solo números (probablemente, pero no con certeza, un número de teléfono), si la palabra comienza con una letra mayúscula mientras no esté al principio de la oración (probablemente, pero no con certeza, un nombre), etc., luego entrene su sistema con los datos débilmente etiquetados. Puede que se le pase por la cabeza que el modelo entrenado no será mejor que dichas fuentes de etiquetado, pero eso es incorrecto; Los modelos de supervisión débiles están diseñados para generalizarse más allá de las fuentes de etiquetado, sabiendo que existe incertidumbre y, a menudo, tomándola en cuenta de una forma u otra.
Marco general
Ahora veamos formalmente el marco de supervisión débil tal como se emplea en el procesamiento del lenguaje natural.
✦ Dado
Un conjunto de F funciones de etiquetado {L1 L2,…,LF} dónde Lj asigna una etiqueta débil (es decir, potencialmente incorrecta) dada una entrada X donde cualquier función de etiquetado Lj puede ser cualquiera de:
- Anotador de colaboración colectiva (a veces no son tan precisos)
- Etiqueta debida a supervisión a distancia (es decir, extraída de otra base de conocimiento)
- Modelo débil (p. ej., inherentemente débil o entrenado en otra tarea)
- Función heurística (por ejemplo, observación de etiquetas basada en la existencia de una palabra clave o patrón o definida por un experto en el dominio)
- Diccionario geográfico (por ejemplo, etiquetar la observación según su aparición en una lista específica)
- Invocación de LLM bajo un mensaje específico P (trabajo reciente)
- Cualquier función en general que (preferiblemente) funcione mejor que una conjetura aleatoria al adivinar la etiqueta de x.
Generalmente se asume que Li puede abstenerse de dar una etiqueta (por ejemplo, una función heurística como “Si la palabra tiene números, etiquétela con el número de teléfono; de lo contrario, no la etiquétela”).
Supongamos que el conjunto de entrenamiento tiene N ejemplos, entonces esto es equivalente a una matriz de etiqueta débil (N,F) en el caso de la clasificación de secuencias. Para la clasificación de tokens con una secuencia de longitud T, es una matriz (N,T,F) de etiquetas débiles.
✦ Buscado
Entrenar un modelo M que aproveche eficazmente los datos débilmente etiquetados junto con cualquier dato sólido, si existe.
✦ Tareas comunes de PNL
- Clasificación de secuencia (por ejemplo, análisis de sentimientos) o clasificación de tokens (por ejemplo, reconocimiento de entidades nombradas) donde las funciones de etiquetado suelen ser funciones heurísticas o diccionarios geográficos.
- Traducción con pocos recursos (x→y) donde las funciones de etiquetado suelen ser un modelo de traducción más débil (por ejemplo, un modelo de traducción en la dirección inversa) (y→x) para agregar más (x,y) pares de traducción.
Arquitectura General
Para tareas de clasificación de secuencias o tokens, la arquitectura más común en la literatura toma esta forma:
El modelo de etiqueta aprende a asignar las salidas de las funciones de etiqueta a etiquetas probabilísticas o deterministas que se utilizan para entrenar el modelo final. En otras palabras, toma la matriz de etiquetas (N,F) o (N,T,F) analizada anteriormente y devuelve la matriz de etiquetas (N) o (N,T) (que a menudo son etiquetas probabilísticas (es decir, suaves)) .
El modelo final se usa por separado después de este paso y es solo un clasificador ordinario que opera en etiquetas suaves (la pérdida de entropía cruzada lo permite) producidas por el modelo de etiqueta. Algunas arquitecturas utilizan el aprendizaje profundo para fusionar modelos de etiquetas y finales.
Tenga en cuenta que una vez que hemos entrenado el modelo de etiquetas, lo usamos para generar las etiquetas para el modelo final y, después de eso, ya no usamos el modelo de etiquetas. En este sentido, esto es bastante diferente del staking, incluso si las funciones de etiquetas son otros modelos de aprendizaje automático.
Otra arquitecturaque es el valor predeterminado en el caso de la traducción (y menos común para la clasificación de secuencias/tokens), es ponderar el par de ejemplos débiles (src, trg) en función de su calidad (normalmente solo una función de etiquetado para la traducción, que es un modelo débil en la dirección inversa, como se explicó anteriormente). Dicho peso se puede utilizar luego en la función de pérdida para que el modelo aprenda más de los ejemplos de mejor calidad y menos de los de menor calidad. Los enfoques en este caso intentan idear métodos para evaluar la calidad de un ejemplo específico. Un enfoque, por ejemplo, utiliza la puntuación BLEU de ida y vuelta (es decir, traduce la oración al destino y luego de nuevo al origen) para estimar dicho peso.
Tubo respirador
Para ver un ejemplo de cómo puede funcionar el modelo de etiqueta, podemos mirar Tubo respirador que es posiblemente el trabajo más fundamental en la supervisión de débiles para la clasificación de secuencias.
En Snorkel, los autores estaban interesados en encontrar P(yi|Λ(xi)) dónde Λ(xi) es el vector de etiqueta débil del i-ésimo ejemplo. Claramente, una vez que se encuentra esta probabilidad, podemos usarla como etiqueta suave para el modelo final (porque, como dijimos, la pérdida de entropía cruzada puede manejar etiquetas suaves). También está claro que si tenemos P(y, Λ(x)) Entonces podemos usarlo fácilmente para encontrar P(y|Λ(x)).
Vemos en la ecuación anterior que usaron la misma hipótesis que la regresión logística para modelar P(y, Λ(x)) (Z es para normalización como en Sigmoid/Softmax). La diferencia es que en lugar de wx tenemos donde φ(Λ(xi),yi). En particular, φ(Λ(xi),yi) es un vector de dimensionalidad 2F+|C|. Fa es el número de funciones de etiquetado como se mencionó anteriormente; mientras tanto, C es el conjunto de pares de funciones de etiquetado que están correlacionados (por lo tanto, |C| es el número de pares correlacionados). Los autores hacen referencia a un método en otro artículo para automatizar la construcción de C en el que no profundizaremos aquí por brevedad.
El vector φ(Λ(xi),yi) contiene:
- F elementos binarios para especificar si cada una de las funciones de etiquetado se ha abstenido para el ejemplo dado
- F elementos binarios para especificar si cada una de las funciones de etiquetado es igual a la etiqueta verdadera y (aquí y se dejará como una variable; es una entrada a la distribución) dado este ejemplo
- C elementos binarios para especificar si cada par correlacionado realizó el mismo voto dado este ejemplo
Luego entrenan estos modelos de etiquetas (es decir, estiman el vector de pesos de longitud) 2F+|C|) resolviendo el siguiente objetivo (minimizando la probabilidad marginal logarítmica negativa):
Tenga en cuenta que no necesitan información sobre y ya que este objetivo se resuelve independientemente de cualquier valor específico del mismo como lo indica la suma. Si observa detenidamente (deshaga el negativo y el registro), puede encontrar que esto equivale a encontrar los pesos que maximizan la probabilidad de cualquiera de las etiquetas verdaderas.
Una vez que se entrena el modelo de etiqueta, lo utilizan para producir norte etiquetas suaves P(y1|Λ(x1)), P(y2|Λ(x2)),…,P(yN|Λ(xN)) y usarlo para entrenar normalmente algún modelo discriminativo (es decir, un clasificador).
Ejemplo de supervisión débil
Snorkel tiene un excelente tutorial para la clasificación de spam aquí. Skweak es otro paquete (y documento) que es fundamental para una supervisión débil de la clasificación de tokens. Este es un ejemplo de cómo empezar con Skweak como se muestra en su Github:
Primero defina las funciones de etiquetado:
import spacy, re
from skweak import heuristics, gazetteers, generative, utils### LF 1: heuristic to detect occurrences of MONEY entities
def money_detector(doc):
for tok in doc[1:]:
if tok.text[0].isdigit() and tok.nbor(-1).is_currency:
yield tok.i-1, tok.i+1, "MONEY"
lf1 = heuristics.FunctionAnnotator("money", money_detector)
### LF 2: detection of years with a regex
lf2= heuristics.TokenConstraintAnnotator("years", lambda tok: re.match("(19|20)\d{2}$",
tok.text), "DATE")
### LF 3: a gazetteer with a few names
NAMES = [("Barack", "Obama"), ("Donald", "Trump"), ("Joe", "Biden")]
trie = gazetteers.Trie(NAMES)
lf3 = gazetteers.GazetteerAnnotator("presidents", {"PERSON":trie})
Aplicarlos sobre el corpus
# We create a corpus (here with a single text)
nlp = spacy.load("en_core_web_sm")
doc = nlp("Donald Trump paid $750 in federal income taxes in 2016")# apply the labelling functions
doc = lf3(lf2(lf1(doc)))
Crear y ajustar el modelo de etiqueta
# create and fit the HMM aggregation model
hmm = generative.HMM("hmm", ["PERSON", "DATE", "MONEY"])
hmm.fit([doc]*10)# once fitted, we simply apply the model to aggregate all functions
doc = hmm(doc)
# we can then visualise the final result (in Jupyter)
utils.display_entities(doc, "hmm")
Luego, por supuesto, puede entrenar a un clasificador además de esto usando las etiquetas suaves estimadas.
En este artículo, analizamos el problema que plantea la supervisión débil, proporcionamos una definición formal y describimos la arquitectura general que se suele emplear en este contexto. También analizamos Snorkel, uno de los modelos fundamentales de la supervisión débil, y concluimos con un ejemplo práctico para ilustrar cómo se puede aplicar la supervisión débil.
Espero que el artículo te haya resultado útil. Hasta la próxima, adiós.
Referencias
[1] Zhang, J. y otros. (2021) Llave inglesa: un punto de referencia integral para la supervisión deficiente, arXiv.org. Disponible en: https://arxiv.org/abs/2109.11377 .
[2] Ratón, A. et al. (2017) Snorkel: Creación rápida de datos de entrenamiento con poca supervisión, arXiv.org. Disponible en: https://arxiv.org/abs/1711.10160.
[3] NorskRegnesentral (2021) NorskRegnesentral/skweak: Skweak: un conjunto de herramientas de software para supervisión débil aplicado a tareas de PNL, GitHub. Disponible en: https://github.com/NorskRegnesentral/skweak.