Red de conocimiento informático - Aprendizaje de código fuente - Abandonando los datos etiquetados a mano, la Universidad de Stanford desarrolla un paradigma de programación débilmente supervisado Snorkel

Abandonando los datos etiquetados a mano, la Universidad de Stanford desarrolla un paradigma de programación débilmente supervisado Snorkel

Etiquetar manualmente grandes cantidades de datos siempre ha sido un cuello de botella en el desarrollo del aprendizaje automático. Los investigadores del Laboratorio de IA de Stanford exploran un paradigma "débilmente supervisado" para generar datos de entrenamiento mediante programación e introducen su marco Snorkel de código abierto.

En los últimos años, el aprendizaje automático (ML) ha tenido un impacto cada vez mayor en el mundo real. Esto se debe en gran medida a la aparición de modelos de aprendizaje profundo que permiten a los profesionales obtener puntuaciones de última generación en conjuntos de datos de referencia sin ningún diseño manual de funciones. Teniendo en cuenta la disponibilidad de múltiples marcos de aprendizaje automático de código abierto, como TensorFlow y PyTorch, así como la gran cantidad de modelos de última generación disponibles, es justo decir que los modelos de aprendizaje automático de alta calidad son ahora casi un recurso mercantilizado. Sin embargo, hay un problema oculto: estos modelos se basan en grandes cantidades de datos de entrenamiento etiquetados manualmente.

Estos conjuntos de capacitación etiquetados a mano son costosos y su creación requiere mucho tiempo; a menudo requieren meses o incluso años de recolección, limpieza y depuración que requieren mucha mano de obra, especialmente cuando se requiere experiencia en el dominio. Más allá de eso, las tareas a menudo cambian y evolucionan en el mundo real. Por ejemplo, las pautas de etiquetado, la granularidad o los casos de uso posteriores a menudo cambian, lo que requiere un nuevo etiquetado (por ejemplo, en lugar de simplemente clasificar las reseñas como positivas o negativas, introduzca una categoría neutral).

Por estas razones, los profesionales recurren cada vez más a una forma de supervisión más débil, como generar datos de entrenamiento de forma heurística utilizando bases de conocimiento externas, patrones/reglas u otros clasificadores. Esencialmente, estos son métodos para generar datos de entrenamiento mediante programación o, más sucintamente, programar datos de entrenamiento.

En este artículo, primero revisamos algunas áreas del ML impulsadas por datos de entrenamiento etiquetados y luego describimos nuestra investigación sobre el modelado y la integración de varias fuentes de supervisión. También discutimos la idea de construir sistemas de gestión de datos para mecanismos multitarea a gran escala que utilizan decenas o cientos de tareas dinámicas débilmente supervisadas que interactúan de maneras complejas y diversas.

Revisión: ¿Cómo obtener más datos de entrenamiento etiquetados?

Muchos métodos de investigación tradicionales en ML están impulsados ​​de manera similar por la necesidad de datos de entrenamiento etiquetados. Primero distinguimos estos métodos de la supervisión débil: aquellos que explotan aportes de mayor nivel y/o más ruidosos de expertos en la materia (PYME).

Un problema clave con los enfoques convencionales actuales es que resulta costoso etiquetar directamente grandes cantidades de datos por parte de expertos en el campo: por ejemplo, crear grandes conjuntos de datos para la investigación de imágenes médicas es más difícil porque, a diferencia de los estudiantes de posgrado, los estudiantes de radiología departamentos Los médicos no están dispuestos a etiquetar sus datos por un pequeño favor. Por lo tanto, muchas líneas de trabajo bien estudiadas en ML se deben al cuello de botella que supone obtener datos de entrenamiento etiquetados:

En el aprendizaje activo, el objetivo es que los expertos en el dominio estimen el modelo para etiquetar los puntos de datos más valiosos. para aprovechar más eficazmente a los expertos en el dominio. En un entorno de aprendizaje supervisado estándar, esto significa elegir nuevos puntos de datos para etiquetar. Por ejemplo, podríamos seleccionar mamografías que estén cerca del límite de decisión del modelo actual y pedirle al radiólogo que etiquete solo esas imágenes. Sin embargo, también podríamos requerir solo una supervisión débil para estos puntos de datos, en cuyo caso el aprendizaje activo y la supervisión débil son perfectamente complementarios (ver (Druck, Settle y McCallum 2009) por ejemplo).

En un entorno de aprendizaje semisupervisado, nuestro objetivo es utilizar un pequeño conjunto de entrenamiento etiquetado y un conjunto de datos más grande sin etiquetar.

Luego se utilizan suposiciones sobre suavidad, estructura de baja dimensión o medidas de distancia para explotar los datos no etiquetados (como parte de un modelo generativo, o como regularizador para un modelo discriminativo, o para aprender una representación de datos compacta, ver (Chapelle, 2010). Scholkopf y Zien 2009). En términos generales, la idea del aprendizaje semisupervisado no es buscar más aportes de las PYME, sino explotar supuestos independientes del dominio y de la tarea para aprovechar los datos no etiquetados, que a menudo están disponibles en grandes cantidades a bajo costo. Los enfoques recientes utilizan redes generativas adversarias (Salimans et al. 2016), modelos de transformación heurística (Laine y Aila 2016) y otros métodos generativos para ayudar a formalizar eficazmente los límites de decisión.

En un entorno típico de aprendizaje por transferencia, el objetivo es aplicar uno o más modelos que han sido entrenados en diferentes conjuntos de datos a nuestro conjunto de datos y tarea para una revisión, consulte (Pan y Yang 2010). Por ejemplo, es posible que ya tengamos un gran conjunto de entrenamiento de tumores de otras partes del cuerpo y entrenemos a un clasificador sobre eso, y luego queramos aplicarlo a nuestra tarea de mamografía. En la comunidad de aprendizaje profundo actual, un enfoque común de aprendizaje por transferencia es "preentrenar" un modelo en un gran conjunto de datos y luego "ajustarlo" según la tarea de interés. Otra área relacionada es el aprendizaje multitarea, en el que se aprenden varias tareas simultáneamente (Caruna 1993; Augenstein, Vlachos y Maynard 2015).

El ejemplo anterior puede permitirnos evitar pedir etiquetas de formación adicionales a los colaboradores expertos en el dominio. Sin embargo, etiquetar algunos datos es inevitable. ¿Qué pasaría si les pidiéramos que proporcionaran varios tipos de formas de supervisión más avanzadas o menos precisas a las que se pudiera acceder más rápida y fácilmente? Por ejemplo, ¿qué pasaría si nuestros radiólogos pudieran dedicar una tarde a etiquetar un conjunto de heurísticas u otros recursos que, si se hacen correctamente, podrían reemplazar eficazmente miles de etiquetas de capacitación

Inyectando conocimiento de dominio en IA

Desde una perspectiva histórica, intentar "programar" inteligencia artificial (es decir, inyectar conocimiento de dominio) no es una idea nueva, pero ahora se plantea la pregunta. La principal novedad es que la IA nunca ha sido más poderosa, mientras que al mismo vez es una "caja negra" en términos de explicabilidad y controlabilidad.

En las décadas de 1970 y 1980, la IA se centraba en los sistemas expertos, que combinan una base de conocimiento cuidadosamente seleccionada de hechos y reglas de expertos en el dominio y utilizan motores de inferencia para aplicarlos. En la década de 1990, el aprendizaje automático comenzó a tener éxito como herramienta para integrar conocimientos en sistemas de inteligencia artificial, prometiendo hacerlo automáticamente a partir de datos de entrenamiento etiquetados de una manera potente y flexible.

Los métodos de aprendizaje automático clásicos (aprendizaje sin representación) suelen tener dos puertos de entrada de expertos de dominio. En primer lugar, estos modelos suelen ser mucho menos complejos que los modelos modernos, lo que significa que se pueden utilizar menos datos etiquetados manualmente. En segundo lugar, estos modelos se basan en características diseñadas manualmente que proporcionan una forma sencilla de codificar, modificar e interactuar con la representación subyacente de los datos del modelo. Sin embargo, la ingeniería de funciones era y a menudo se considera competencia de los expertos en ML, quienes a menudo dedican todo su doctorado a diseñar funciones para tareas específicas.

Ingrese a los modelos de aprendizaje profundo: debido a su poderosa capacidad para aprender automáticamente representaciones en muchos dominios y tareas, evitan en gran medida la tarea de ingeniería de características. Sin embargo, la mayoría de ellos son cajas negras completas sobre las cuales el desarrollador promedio tiene poco control más que etiquetar grandes conjuntos de entrenamiento y ajustar la arquitectura de la red. En muchos sentidos, representan la antítesis de las reglas frágiles pero controlables de los viejos sistemas expertos: eran flexibles pero difíciles de controlar.

Esto nos devuelve a la pregunta original desde un ángulo ligeramente diferente: ¿Cómo aprovechamos nuestro conocimiento del dominio o experiencia en tareas para escribir modelos modernos de aprendizaje profundo? ¿Existe alguna manera de combinar la franqueza de los antiguos sistemas expertos basados ​​en reglas con la flexibilidad y el poder de estos métodos modernos de ML?

Código como supervisión: Capacitación de ML a través de la programación

Snorkel es un sistema que creamos para respaldar y explorar este nuevo tipo de interacción con ML. En Snorkel, en lugar de utilizar datos de entrenamiento etiquetados manualmente, pedimos a los usuarios que escriban funciones de etiquetado (LF), fragmentos de código de caja negra que etiquetan subconjuntos de datos sin etiquetar.

Luego podemos usar un conjunto de LF para etiquetar datos de entrenamiento para un modelo de ML. Debido a que las funciones de etiquetado son simplemente fragmentos arbitrarios de código, pueden codificar señales arbitrarias: patrones, heurísticas, fuentes de datos externas, etiquetas ruidosas de trabajadores colectivos, clasificadores débiles, etc. Y, al ser código, obtenemos todos los demás beneficios relacionados, como modularidad, reutilización y depuración. Por ejemplo, si nuestros objetivos de modelado cambian, podemos ajustar la función de marcador para adaptarnos rápidamente.

Un problema es que las funciones de etiquetado pueden producir resultados ruidosos que pueden superponerse y entrar en conflicto, lo que da como resultado etiquetas de entrenamiento que no son ideales. En Snorkel, eliminamos el ruido de estas etiquetas mediante un enfoque de programación de datos, que consta de tres pasos:

1. Aplicamos una función de etiquetado a los datos sin etiquetar.

2. Utilizamos un modelo generativo para conocer la precisión de las funciones etiquetadas sin ningún dato etiquetado y ponderar sus resultados en consecuencia. Incluso podremos aprender sus estructuras asociadas de forma automática.

3. El modelo generativo genera un conjunto de etiquetas de entrenamiento probabilístico. Podemos usar estas etiquetas para entrenar un modelo discriminativo potente y flexible (como una red neuronal profunda) que se generalizará a la señal representada por el. Función de etiquetado exterior.

¡Se puede pensar que todo este proceso proporciona un método simple, robusto e independiente del modelo para "programar" modelos de ML!

Funciones de etiquetado

Extraer información estructurada de la literatura biomédica es una de las aplicaciones más motivadoras: grandes cantidades de información útil están efectivamente encerradas en cientos de En el denso texto no estructurado de 10.000 documentos científicos papeles. Esperamos utilizar el aprendizaje automático para extraer esta información y luego utilizarla para diagnosticar enfermedades genéticas.

Considere la tarea de extraer alguna relación química-enfermedad de la literatura científica. Es posible que no tengamos un conjunto de datos de entrenamiento etiquetado lo suficientemente grande para realizar esta tarea. Sin embargo, en el campo de la biomedicina, existen abundantes ontologías de conocimiento, diccionarios y otros recursos, incluidos varios datos de nombres de sustancias químicas y enfermedades, varios tipos de bases de datos conocidas sobre relaciones entre sustancias químicas y enfermedades, etc. Podemos utilizar estos recursos para proporcionar nuestra tarea. supervisión débil. Además, junto con colaboradores en el campo biológico, podemos proponer una variedad de heurísticas específicas de tareas, patrones de expresión regular, reglas generales y estrategias de generación de etiquetas negativas.

Modelo generativo como vector de representación

En nuestro enfoque, consideramos que la función de etiquetado describe implícitamente un modelo generativo. Hagamos un repaso rápido: dado un punto de datos x y una etiqueta desconocida y que queremos predecir, en el enfoque discriminativo modelamos directamente P(y|x), mientras que en el enfoque generativo modelamos P( x,y) = P(x|y)P(y) modelado. En nuestro caso, modelamos un proceso de etiquetado de conjunto de entrenamiento P(L,y), donde L es la etiqueta generada por la función de etiquetado del objeto x e y es la etiqueta verdadera correspondiente (desconocida). Al aprender un modelo generativo y estimar directamente P(L|y), esencialmente estamos aprendiendo la precisión relativa de las funciones de etiquetado en función de cómo se superponen y entran en conflicto (nota, ¡no necesitamos saber y!)

Usamos este modelo generativo estimado para entrenar una versión sensible al ruido del modelo discriminativo final en la función de etiqueta.

Para hacer esto, el modelo generativo infiere probabilidades para las etiquetas desconocidas de los datos de entrenamiento y luego minimizamos la pérdida esperada del modelo discriminativo con respecto a estas probabilidades.

Estimar los parámetros de estos modelos generativos puede ser complicado, especialmente cuando existen dependencias estadísticas entre las funciones de etiquetado utilizadas. En el artículo Programación de datos: creación de grandes conjuntos de entrenamiento, rápidamente (https://arxiv.org/abs/1605.07723), demostramos que, dadas suficientes funciones de etiqueta, se puede obtener la misma escala asintótica que el método supervisado. También estudiamos cómo aprender correlaciones entre funciones etiquetadas sin utilizar datos etiquetados y cómo mejorar significativamente el rendimiento.

Snorkel: un marco de código abierto

En nuestro artículo publicado recientemente sobre Snorkel (https://arxiv.org/abs/1711.10160), encontramos que en varias prácticas Esta nueva forma ¡La posibilidad de interactuar con modelos ML modernos funciona muy bien en aplicaciones! Incluyendo:

1. En un taller sobre Snorkel, llevamos a cabo un estudio de usuarios para comparar la eficiencia de enseñar a las PYME a usar Snorkel con la eficiencia de dedicar el mismo tiempo al etiquetado de datos puramente manual. Descubrimos que construir modelos usando Snorkel no solo fue 2,8 veces más rápido, sino que también mejoró el rendimiento de predicción promedio en un 45,5%.

2. En dos tareas de extracción de relaciones de texto del mundo real en colaboración con investigadores de la Universidad de Stanford, el Departamento de Asuntos de Veteranos de EE. UU. y la Administración de Alimentos y Medicamentos de EE. UU., así como otros cuatro textos e imágenes de referencia tareas, encontramos que Snorkel mejora el rendimiento en un promedio de 132% en comparación con las técnicas básicas.

3. Exploramos el nuevo espacio de compensación de cómo modelar funciones de etiquetas proporcionadas por el usuario, lo que da como resultado un optimizador basado en reglas para acelerar los ciclos de desarrollo iterativos.

Siguiente paso: supervisión débil para multitarea a gran escala

Se están realizando varios esfuerzos en nuestro laboratorio para extender el modelo de interacción débilmente supervisado previsto por Snorkel a otros modos, como datos con formato rico. ¡Y imágenes, tareas supervisadas usando lenguaje natural y funciones de etiquetas generadas automáticamente!

En el aspecto técnico, estamos interesados ​​en ampliar el modelo central de programación de datos de Snorkel para que sea más fácil especificar funciones etiquetadas con interfaces de nivel superior (como el lenguaje natural) e incorporar otros tipos de supervisión débil. (como el aumento de datos).

La popularidad de los escenarios de aprendizaje multitarea (MTL) también plantea la pregunta: ¿qué sucede cuando una fuente de etiquetas ruidosa y potencialmente relacionada ahora tiene múltiples tareas relacionadas para etiquetar? ¿Podríamos beneficiarnos de modelar conjuntamente estas tareas? Abordamos estos problemas en una nueva versión de Snorkel compatible con múltiples tareas, Snorkel MeTaL, que puede admitir fuentes multitarea débilmente supervisadas, proporcionando etiquetas ruidosas para una o más tareas relacionadas.

Un ejemplo que consideramos fue configurar fuentes de etiquetas con diferentes granularidades. Por ejemplo, supongamos que pretendemos entrenar un modelo de reconocimiento de entidades con nombre (NER) de grano fino para etiquetar tipos específicos de personas y ubicaciones, y tenemos algunas etiquetas ruidosas de grano fino, como etiquetar "abogado" versus "médico". o "banco" y "hospital" y algunos son generales, como etiquetar "persona" frente a "lugar"; Al representar estos recursos etiquetando diferentes niveles de tareas relacionadas, podemos modelar conjuntamente su precisión y reponderar y combinar sus etiquetas de tareas múltiples para crear datos de entrenamiento de tareas múltiples más claros y agregados de manera inteligente que mejoren el rendimiento final de los modelos MTL.

Creemos que los aspectos más interesantes de la creación de sistemas de gestión de datos para MTL girarán en torno a regímenes masivamente multitarea, en los que decenas a cientos de tareas débilmente supervisadas (y por lo tanto altamente dinámicas) interactúan en tareas complejas y diversas. maneras.

Si bien la mayoría del trabajo de MTL hasta la fecha ha considerado procesar como máximo unas pocas tareas definidas por conjuntos de capacitación estáticos etiquetados a mano, el mundo está evolucionando rápidamente hacia organizaciones (ya sean grandes empresas, laboratorios académicos o comunidades en línea). ) todos requieren mantener cientos de tareas de modelado interdependientes, que cambian rápidamente y que están débilmente supervisadas. Además, debido a que estas tareas están débilmente supervisadas, los desarrolladores pueden agregar, eliminar o cambiar tareas (es decir, el conjunto de capacitación) en horas o días (en lugar de meses o años), lo que puede requerir volver a capacitar todo el modelo.

En un artículo reciente, The Role of Massively Multi-Task and Weak Supervision in Software 2.0 (http://cidrdb.org/cidr2019/papers/p58-ratner-cidr19.pdf), describimos algunas Ideas preliminares para el problema anterior, imaginando una configuración multitarea a gran escala donde el modelo MTL sirve efectivamente como un repositorio central para el entrenamiento de datos débilmente etiquetados por parte de diferentes desarrolladores y luego se combina en una "madre" central en el modelo multitarea. .

Independientemente de los factores de forma exactos, está claro que hay muchos avances interesantes en la tecnología MTL en el futuro, no solo nuevas arquitecturas de modelos, sino también métodos de aprendizaje por transferencia, nuevos métodos débilmente supervisados ​​y nuevo software. Los paradigmas de desarrollo y sistemas están cada vez más unificados.

Texto original:

https://ai.stanford.edu/blog/weak-supervision/

Snorkel:

http : //snorkel.stanford.edu/

Bienvenido a seguir la cuenta pública de WeChat: IT Technology Forest

¡Comparta consejos de TI y noticias sobre tecnología y digitales todos los días!