Una introducción al aprendizaje por transferencia en NLP y HuggingFace

Rate this content
Bookmark

En esta charla comenzaré presentando los avances recientes en NLP que resultaron de la combinación de esquemas de aprendizaje por transferencia y arquitecturas de Transformer. La segunda parte de la charla estará dedicada a una introducción de las herramientas de código abierto lanzadas por HuggingFace, en particular nuestras bibliotecas Transformers, Tokenizers y Datasets y nuestros modelos.

32 min
02 Jul, 2021

Video Summary and Transcription

El aprendizaje por transferencia en NLP permite obtener un mejor rendimiento con datos mínimos. BERT se utiliza comúnmente para el aprendizaje por transferencia secuencial. Modelos como BERT se pueden adaptar para tareas posteriores como la clasificación de texto. El manejo de diferentes tipos de entradas en NLP implica la concatenación o duplicación del modelo. HuggingFace tiene como objetivo abordar los desafíos en NLP a través del intercambio de conocimientos y la liberación de código y bibliotecas de código abierto.

Available in English

1. Introducción al aprendizaje transferido en NLP

Short description:

Hoy vamos a hablar sobre el aprendizaje transferido en NLP. En el aprendizaje transferido, reutilizamos el conocimiento de tareas anteriores para iniciar nuestro aprendizaje. Este enfoque nos permite aprender con solo unos pocos puntos de datos y lograr un mejor rendimiento. En Hugging Face, estamos desarrollando herramientas para el aprendizaje transferido en NLP.

Hola a todos. Bienvenidos a mi charla. Y hoy vamos a hablar sobre el aprendizaje transferido en NLP. Comenzaré hablando un poco sobre el concepto de historia, luego les presentaré las herramientas que estamos desarrollando en Hugging Face. Y luego espero que tengan muchas preguntas para mí. Así que, sesión de preguntas y respuestas. OK. Comencemos con los conceptos. ¿Qué es el aprendizaje transferido? Esa es una muy buena pregunta. Aquí está la forma tradicional en que hacemos el aprendizaje transferido. Lo siento. Esta es la forma tradicional en que hacemos machine learning. Por lo general, cuando nos enfrentamos a una primera tarea en machine learning, recopilamos un conjunto de data. Inicializamos nuestro modelo al azar y lo entrenamos en nuestros conjuntos de datos para obtener el sistema de machine learning que usaremos, por ejemplo, para trabajar en producción. Ahora, cuando nos enfrentamos a una segunda tarea, por lo general nuevamente, recopilaremos otro conjunto de data. Otro conjunto de data. Inicializaremos nuevamente nuestro modelo al azar y lo entrenaremos desde cero nuevamente para obtener el segundo sistema de aprendizaje y de la misma manera nos enfrentamos a una tercera tarea. Tendremos un tercer conjunto de datos, tendremos un tercer sistema de machine learning, nuevamente inicializado desde cero y que usaremos en producción. Entonces esto no es la forma en que los humanos aprendemos. Por lo general, cuando nos enfrentamos a una nueva tarea, reutilizamos todo el conocimiento que hemos aprendido en tareas anteriores, todas las cosas que hemos aprendido en la vida, todas las cosas que hemos aprendido en clases universitarias y lo usamos para iniciar nuestro aprendizaje. Entonces puedes ver eso como tener muchos data, muchos puntos de datos que ya hemos utilizado para generar una base de conocimientos. Y esto nos brinda dos ventajas principales. La primera es que podemos aprender con solo unos pocos data, solo unos pocos puntos de datos, porque podemos interpolar entre estos puntos de datos. Y esto nos ayuda a hacer alguna forma de mutación de data, si quieres, de forma natural. Y la segunda ventaja es simplemente... Es que también podemos aprovechar todo este conocimiento para lograr mejores rendimientos. Los humanos suelen ser más eficientes en términos de data y tener mejores rendimientos que los sistemas de machine learning. Entonces, el aprendizaje transferido es una forma de intentar hacer lo mismo para el aprendizaje estadístico, para el machine learning.

2. Transferencia secuencial de aprendizaje con BERT

Short description:

Hoy discutiremos la transferencia secuencial de aprendizaje, que implica volver a entrenar y ajustar un modelo de propósito general como BERT. El modelado del lenguaje es un objetivo de pre-entrenamiento auto-supervisado que maximiza la probabilidad de la siguiente palabra. Este enfoque no requiere datos anotados y es versátil, lo que lo hace útil para lenguajes con pocos recursos. Los transformadores como BERT se utilizan comúnmente para la transferencia de aprendizaje en NLP.

Así que el verano pasado hicimos un tutorial muy largo. Fue un tutorial de tres horas. Puedes revisar estos enlaces. Hay 300 diapositivas, muchos ejercicios prácticos y un código fuente de código abierto. Así que si quieres más información, realmente deberías ir allí.

Hay muchas formas de hacer transferencia de aprendizaje. Pero hoy voy a hablar de la transferencia secuencial de aprendizaje, que es la variante más utilizada actualmente, si quieres hacer transferencia de aprendizaje. La transferencia secuencial de aprendizaje, como su nombre indica, es una secuencia de pasos, al menos dos pasos. El primer paso se llama reentrenamiento. Y durante estos pasos, intentarás recopilar la mayor cantidad de data posible. Intentaremos construir básicamente una especie de base de conocimientos, como la base de conocimientos que los humanos construimos. Y la idea es que podemos terminar con un modelo de propósito general. Hay muchos modelos de propósito general diferentes. Probablemente hayas oído hablar de muchos de ellos, Word2Vec y GloVe fueron los primeros modelos que aprovecharon la transferencia de aprendizaje. Eran incrustaciones de palabras, pero hoy en día, usamos modelos que tienen muchos más parámetros, que están completamente pre-entrenados, como BERT, GPT o BERT destilado. Y estos modelos, se pre-entrenan como modelos de propósito general. No se centran en una tarea específica, pero se pueden utilizar en muchas tareas diferentes. Entonces, ¿cómo lo hacemos eso? Hacemos un segundo paso de adaptación o ajuste fino generalmente, en el que seleccionaremos la tarea para la que queremos usar nuestro modelo, y lo ajustaremos fino en esta tarea. Así que aquí tienes algunos ejemplos, clasificación de texto, etiquetado de palabras, respuesta a preguntas.

Pero comencemos por el primer paso, el pre-entrenamiento. La forma en que pre-entrenamos nuestros modelos hoy en día se llama modelado del lenguaje. El modelado del lenguaje es un objetivo de pre-entrenamiento que tiene muchas ventajas. La principal es que es auto-supervisado, lo que significa que usamos el texto como su propia etiqueta. Podemos descomponer el texto aquí, la probabilidad del texto como un producto de la probabilidad de las palabras, por ejemplo, y tratamos de maximizar eso. Así que puedes ver eso como dado un contexto, intentarás maximizar la probabilidad de la siguiente palabra o la probabilidad de un maestro. Lo bueno es que no tenemos que anotar los data. En muchos idiomas, solo aprovechando Internet, podemos tener suficiente texto para entrenar realmente un modelo de alta capacidad Esto es genial para muchas cosas, y en particular, para lenguajes con pocos recursos. También es muy versátil, como te dije, puedes descomponer esta probabilidad como un producto de la probabilidad de varias vistas de tus textos. Y esto es muy interesante desde un punto de vista de investigación.

Ahora, ¿cómo se ven los modelos? Hay dos sabores principales de modelos, ambos son transformadores porque los transformadores son interesantes desde un punto de vista de escalabilidad. El primero se llama BERT. Para entrenar un modelo BERT, haremos lo que llamamos modelado de lenguaje enmascarado,

3. Entrenamiento de BERT y Adaptación para Tareas Posteriores

Short description:

BERT se entrena prediciendo nuevamente el token enmascarado. Otro enfoque es el modelo auto-agresivo o causal, que asocia cada token con el siguiente token. Estos modelos son menos potentes pero se entrenan más rápido. Para adaptar BERT, se elimina la cabeza de pre-entrenamiento y se reemplaza con una cabeza específica para la tarea. Ejemplos de tareas posteriores incluyen clasificación y generación de texto.

que es un objetivo de desenmascaramiento. Tomamos una oración aquí, enmascaramos un token y tratamos de predecir este token nuevamente. Proyectamos todas estas palabras en vectores. Luego, realmente utilizamos lo que es la capa de atención en el transformador, que hará un promedio ponderado de estos vectores para obtener también vectores. Pero estos vectores ahora dependen del contexto, lo que significa que el vector asociado al enmascarado tiene suficiente información del contexto para poder predecir nuevamente, o al menos intentar predecir nuevamente, el token faltante, el enmascarado 12, ¿de acuerdo? Así es como se entrena BERT. Se entrena este modelo para predecir nuevamente el token enmascarado. Ahora hay otro enfoque, que se llama modelo auto-agresivo o causal. Y estos modelos se ven prácticamente iguales, pero puedes ver que a un token aquí se le asocia el siguiente token. Entonces, mi perro, el token que estará al final de la columna hiperasociada a perro será, es el siguiente token, ¿de acuerdo? Así que tenemos que ajustar la atención aquí. Tenemos que enmascarar el contexto correcto. De lo contrario, el modelo solo puede ver la etiqueta aquí a la derecha. Estos modelos son inherentemente menos potentes porque no pueden usar el contexto para hacer su predicción, pero tienen una señal más extraña aquí. Por lo general, se entrenan más rápido. Estos son los dos sabores principales de modelo. Estos son los dos marcos principales. Así que modelos de propósito general. Ahora, ¿cómo se realizan los pasos de adaptación? Es bastante fácil. Sí. Estas son las dos ventajas que te mostré. El primer paso es que eliminaremos la cabeza de pre-entrenamiento. Tomaremos estas cajas rosadas que te mostré en las diapositivas anteriores. Y las eliminaremos y las reemplazaremos con una cabeza específica para la tarea. Entonces, si estás haciendo clasificación de texto, puede ser simplemente una predicción lineal para el número de clases que tienes. Si estás haciendo una tarea más compleja, puedes agregar una red neuronal completa encima de ella. Si tu tarea es muy compleja, como la traducción automática, entonces tienes que hacer cosas más complejas. Hablaremos de eso un poco en la próxima sección.

Permíteme mostrarte dos ejemplos principales de tareas posteriores que podemos abordar, clasificación de texto y generación. Aquí tienes un ejemplo de clasificación de texto para mostrarte cómo funciona. Digamos que tenemos una oración aquí, Jim Hansen era un titiritero, y la tarea de nuestro modelo de aprendizaje automático es predecir si la oración es verdadera o falsa. Esto es simplemente una clasificación binaria, si quieres, ¿de acuerdo? El primer paso sería convertir esto

4. Entrenamiento del Modelo y Rendimiento

Short description:

Nuestros modelos se entrenan para procesar vocabulario y corpus de dominio abierto. Las palabras poco comunes se manejan dividiéndolas en prefijos y sufijos. La salida del modelo se proyecta de nuevo en dos clases utilizando un clasificador lineal. Este clasificador se entrena desde cero en la tarea posterior. En un ejemplo práctico, logramos una precisión de más del 90% después de solo una época en un conjunto de datos pequeño. La versatilidad del modelo se demuestra en un entorno de chatbot con una base de conocimientos.

una oración de entrada en algo que nuestro modelo pueda procesar. Entonces, nuestros modelos, pueden abordar integrales, números decimales, necesitan números. Entonces, el primer paso será convertir estas cadenas en números. Y hay algo interesante aquí, nuestros modelos están diseñados para ser entrenados y procesar básicamente vocabulario de dominio abierto, corpus de dominio abierto. Están diseñados para ser entrenados en internet. Entonces, tenemos que manejar algunas palabras poco comunes. Aquí perpetuer es una palabra que definitivamente no es muy común en inglés. Entonces, la forma en que manejamos eso es que cortaremos esta palabra en prefijo y sufijo hasta que conozcamos cada parte del palabra. De acuerdo. Entonces, aquí, por ejemplo, perpetuer son dos tipos de prefijo y sufijo comunes. Entonces, están en nuestro vocabulario y luego podemos convertir todo esto en nuestros índices de vocabulario. Estos son ahora los insumos del modelo que vimos en dos diapositivas anteriores, el nacimiento de GPT. Y como recuerdas, la salida era un vector aquí, la salida antes de las cajas rosadas era un vector. Y solo tenemos que proyectar ese vector de vuelta a dos clases. Entonces, por ejemplo, los extraemos, los colocamos en un clasificador lineal y luego obtenemos las clases. Entonces, este clasificador lineal se entrenará desde cero en nuestra tarea posterior. De acuerdo. Entonces, tiene que ser bastante pequeño en términos de parámetros si quieres que sea eficiente, pero este ya está pre-entrenado en el enorme corpus de datos que hemos recopilado. Entonces, este se puede usar realmente. De acuerdo. Entonces, aquí hay dos, quiero decir, aquí tienes un ejemplo práctico en una tarea de clasificación llamada pista seis. Puedes ver más detalles en las diapositivas de nuestros tutoriales del año pasado, pero básicamente verás que después de una sola época, ya tenemos una precisión superior al 90%, lo que significa que esto es realmente eficiente. Este conjunto de datos, esta pista seis, es realmente un conjunto de datos pequeño, 2500 ejemplos. Entonces, esto es realmente eficiente. Y cuando entrenas durante tres épocas, llegas a una tasa de error del 3.6, que es el estado del arte. Bueno, era el estado del arte el año pasado. Entonces, obtienes las dos cosas de las que estamos hablando, eficiencia de datos y alto rendimiento. De acuerdo. Ahora aquí hay un ejemplo totalmente diferente. Entonces, ves la variedad, la diversidad de tareas a las que este modelo puede enfrentarse. Este es un entorno de chatbot

5. Manejo de Diferentes Tipos de Entradas

Short description:

El chatbot finge ser un artista con cuatro hijos que tiene un gato y le gusta ver Game of Thrones. El agente de diálogo debe generar una respuesta coherente dada la personalidad. Esta es una tarea diferente debido a los diferentes tipos de entradas involucradas, como la base de conocimientos, el historial de diálogo y la utilidad del comienzo de la respuesta. Hay dos formas principales de manejar esto: concatenar todas las entradas en una sola entrada o duplicar el modelo y procesar cada tipo de entrada por separado.

donde tenemos una especie de base de conocimientos. El chatbot finge ser un artista con cuatro hijos que tiene un gato y le gusta ver Game of Thrones. Y ahora está discutiendo con un usuario en un entorno de dominio abierto. Entonces el usuario dijo, Hola, chatbot, responde, hola, ¿cómo estás? Y el usuario dice, Estoy bien. Gracias. ¿Cómo estás tú? Y nuestro agente de diálogo, nuestro modelo de aprendizaje automático, debe generar una respuesta que tenga sentido dada la personalidad. ¿De acuerdo? Entonces ves, esta es una tarea bastante diferente porque tenemos muchos tipos diferentes de entradas. Tenemos una especie de base de conocimientos aquí. También tenemos un historial de diálogo. Y tenemos esta utilidad incluso en el comienzo de la respuesta porque estamos generando la respuesta palabra por palabra. Entonces tenemos el comienzo de la respuesta que también debemos tener en cuenta para generar la siguiente. ¿Cómo manejamos eso? Bueno, en realidad tuvimos el artículo el año pasado en ACL que puedes consultar. Pero básicamente puedes hacer dos formas principales de manejar eso. Puedes concatenar todo esto en una sola entrada. Esta es una forma sencilla de abordar esto y funciona realmente bien. O puedes duplicar tu modelo y tener varias partes que procesen cada tipo de entrada, y luego necesitas conectarlas entre sí con atención cruzada o una forma de conectarlas. De acuerdo. Esto es muy diferente, pero la idea es que en general, como puedes ver aquí, esto es una competencia en la que participamos en el GameFest hace dos años. Y ves que estábamos liderando en la matriz automática por un margen considerable utilizando este tipo de enfoque de transferencia de aprendizaje.

6. Tendencias y Limitaciones en NLP

Short description:

Existe una tendencia hacia modelos más grandes, lo cual está limitando la competencia. Sin embargo, existen formas de reducir el tamaño de los modelos a través de destilación, poda y cuantización. Estos modelos tienen dificultades con la generalización fuera del dominio y están limitados por la falta de conocimiento de sentido común en el texto. Otro desafío es hacer que los modelos aprendan nuevos conocimientos sin olvidar los conocimientos previos. A pesar de estas limitaciones, Hugging Face tiene como objetivo abordar estos desafíos democratizando NLP a través del intercambio de conocimientos y la liberación de código y bibliotecas, como la Biblioteca Transformers.

Entonces, unas pocas palabras sobre las tendencias y limitaciones, iré rápido, pero sí, existe una tendencia hacia modelos más grandes. Este es un problema importante porque está limitando la competencia. Existen formas de reducir el tamaño de estos modelos, destilación, poda, cuantización. No dedicaré mucho tiempo a esto, pero es algo que nos gusta mucho. Estos modelos tienen problemas de generalización. A pesar de ser grandes, tienen dificultades para abordar la generalización fuera del dominio. Y básicamente hay un límite en el texto como medio, que es que gran parte del sentido común simplemente no está escrito en el texto. Y esto limita lo que este modelo puede aprender. La principal forma de superar esto es utilizar alguna database o imagen, o incluso utilizar a un humano en el proceso. Y ahora viene el último problema principal, que es que estos modelos se entrenan solo una vez y es muy difícil hacer que aprendan nuevos conocimientos más adelante, porque tienen este problema de olvido catastrófico. Por ejemplo, GPT-3, que fue muy costoso de entrenar. El costo del entrenamiento fue de 10 millones. GPT-3 no tiene idea de qué es el COVID. Bueno, el COVID es un elemento muy importante de nuestra vida diaria hoy en día, ¿vale? Así que esto es una lástima. Hay muchas limitaciones y en Hugging Face, intentamos abordar algunas de estas limitaciones. Entonces, ¿qué hacemos en Hugging Face? Bueno, intentamos democratizar NLP. Comenzamos como una empresa de chatbots, construyendo un juego, y liberamos muchas herramientas mientras lo hacíamos. Y en realidad, esta herramienta despertó tanto interés en la community que ahora nos enfocamos completamente en catalizar y democratizar todo este trabajo de investigación. Lo hacemos de dos formas principales. La primera forma es a través del intercambio de conocimientos. Por eso estoy hablando hoy. Y la segunda forma es liberar mucho código y liberar algunas bibliotecas, lo que permite a las personas aprovechar todos estos desarrollos y desarrollar mejores modelos sobre ellos. Vale. Veamos algunas de nuestras bibliotecas de código abierto, y esto será la puerta abierta para las preguntas en la segunda parte. Vale. Entonces, la primera biblioteca principal que probablemente conozcas se llama la Biblioteca Transformers, que es una forma de acceder a todos los modelos de vanguardia, y se pueden utilizar tanto para NLU como NLG, en muchos idiomas. Hoy en día tenemos realmente muchos modelos en la biblioteca. Está el modelo completo, probablemente BERT, GPT, y también modelos más interesantes, más recientes como DPR Pegasus. XM Roberta es un gran modelo multilingüe creado por Alex y su equipo. También está T5, que es un modelo realmente enorme.

7. Model Hub, Tokenizer, and DataSets Libraries

Short description:

Tenemos un centro de modelos donde las personas pueden compartir más de 3,000 modelos en muchos idiomas. También tenemos una interfaz web para probar los modelos. Recientemente abrimos una segunda biblioteca llamada Tokenizer para resolver el cuello de botella en la división de cadenas. También abrimos una tercera biblioteca llamada DataSets para facilitar el intercambio de conjuntos de datos y métricas. DataSets tiene interoperabilidad con marcos populares y está diseñada para conjuntos de datos grandes.

modelo, así que hay muchos, muy fáciles de usar. Podemos hablar de eso en la pregunta. Incluso tenemos un centro de modelos donde las personas pueden compartir sus modelos. Tenemos más de 3,000 modelos y muchos, muchos idiomas, así que si quieres usar un modelo para finlandés o alemán, tienen como 132 modelos diferentes que puedes esperar y con los que puedes jugar. Incluso en la interfaz web, puedes probar el modelo y ver cómo se comportan. Esto está en huggingface.com.

Ahora abrimos recientemente una segunda biblioteca llamada Tokenizer, que hace esta primera parte de la que estaba hablando, como dividir la cadena en partes. ¿Por qué hicimos esto? Esto realmente era un cuello de botella en términos de velocidad. Y decidimos usar un código rusk de muy bajo nivel, súper rápido para resolver este problema. Así que ahora es realmente un paso muy rápido. Está disponible en Python y en Node. Rust es un gran lenguaje. Y más recientemente, hace unos meses, lanzamos una tercera biblioteca, que se llama DataSets. Así que DataSets es nuestra tercera biblioteca. Esto es para abordar un último problema que descubrimos, que es que los propios conjuntos de datos, son difíciles de acceder para las personas, son difíciles de compartir. Y pasamos mucho tiempo reescribiendo el mismo código de procesamiento que las personas ya han escrito mucho en esos conjuntos. Así que decidimos hacer una biblioteca para resolver este problema, facilitar el intercambio de conjuntos de datos, y también compartir métricas. Algunas métricas en este momento, algunas métricas novedosas son realmente complejas de usar, o al menos de instalar y configurar métricas, por ejemplo, evaluar la generación de lenguaje natural puede ser realmente complejo. Y así que decidimos que también sería bueno hacer algo muy fácil para compartirlos, para subirlos, para compartirlos. Así que esta es la biblioteca DataSets con ese conjunto de métricas. Tiene algunas cosas realmente geniales. Por ejemplo, hay interoperabilidad con NumPy, Panda, PyTorch y Tensorflow también. Así que puedes usar básicamente cualquier tipo de marco si quieres, bueno, cualquier tipo de marco moderno. También está hecho específicamente para abordar conjuntos de datos realmente grandes. Así que si tienes gigabytes de data, si quieres, por ejemplo, entrenar tu modelo en Wikipedia y algunos data que tu conjunto de datos puede ser, por ejemplo, más grande que la memoria RAM, puedes usar esta biblioteca porque tiene muchas formas inteligentes de hacer una deserialización en disco. Así que solo toma nueve megabytes de, por ejemplo, entrenar Wikipedia. Hay mucho almacenamiento en caché inteligente. Si procesas tu conjunto de datos una vez, ya está bien y no perderás tiempo volviendo a procesarlo. Así que puedes verificar esto. Aquí tienes un ejemplo de cómo preparar. Esta es la preparación completa de un conjunto de entrenamiento para entrenar un modelo en Glue, con la tokenización, con el relleno.

8. Model Training, Libraries, and Questions

Short description:

El proceso de entrenamiento del modelo es eficiente y proporciona visibilidad. El centro permite acceder a conjuntos de datos, incluidos conjuntos de datos multimodales con imágenes. Visita HuggingFace.co para explorar los conjuntos de datos y ver su contenido. Estas tres bibliotecas principales están disponibles para discusión, junto con cualquier pregunta sobre el concepto e historia.

Y ves, esto es solo como 20 líneas de código, y aquí estás listo para entrenar este modelo. Entonces está diseñado para ser muy eficiente y que todo sea muy visible al mismo tiempo. Entonces, al igual que el modelo, también tenemos un centro donde puedes acceder e incluso explorar los conjuntos de datos. Entonces hay como un modelo, 160 conjuntos de datos ahora. También hay conjuntos de datos multimodales con imágenes. Y así puedes ir a HuggingFace.co, explorar todos los conjuntos de datos. Puedes ver la estación y todo. E incluso puedes ver qué hay dentro de un conjunto de datos en la interfaz web.

De acuerdo. Lo mismo aquí. Puedes ir y echar un vistazo en HuggingFace.co. De acuerdo. Estas son las tres bibliotecas principales, y estoy realmente feliz de hablar sobre cualquier pregunta que puedas tener sobre ellas. Y también, cualquier pregunta que puedas tener sobre la primera parte, el concepto, la historia.

QnA

NLP Advancements and Choosing Models

Short description:

Hola Thomas, ¿cómo te va? ¡Qué bueno saberlo! El procesamiento del lenguaje natural se ha convertido en el campo más emocionante de la IA. GPT-3 es un modelo impresionante, pero evaluar completamente sus capacidades es difícil. Sobresale en tareas de recuperación y puede generar código y publicaciones de blog realistas. Sin embargo, carece de habilidades de razonamiento profundo. Tener una gran base de datos no equivale a la IA general. Al elegir un modelo, comienza con algo simple como una versión destilada y escala si es necesario.

Gracias. Hola Thomas, ¿cómo te va? Hola. Bien, bien. ¿Cómo te va a ti?

Sí, también es bastante agradable. Quiero decir, el sol ya está un poco fuera en Múnich, pero todavía hay muchas charlas emocionantes. Y comenzaste esta conferencia de manera muy buena porque creo que el procesamiento del lenguaje natural o el lenguaje en general es uno de esos indicadores de qué tan bien entendemos este aprendizaje automático. ¿Cómo te sientes? Sí, definitivamente. Creo que lo que hemos visto en NLP en este momento, supongo que en los últimos dos años, probablemente es que se ha convertido realmente en lo que esperábamos que fuera desde el principio, lo cual significa realmente la forma de procesar el conocimiento y la forma de investigar o lo que esperamos que sea como investigar. Y cuando hablamos de IA general, creo que ahora mucha gente piensa en GPT-3, que es un modelo de texto completo. Así que creo que esto es realmente algo impresionante sobre cómo NLP es ahora el campo más emocionante en la IA.

Sí, y es un poco gracioso porque casi estás prediciendo la primera pregunta, ¿verdad? Y la primera pregunta es en realidad sobre GPT-3 y la gente pregunta, hey, ya que eres un experto en NLP y tu empresa está impulsando buenos esfuerzos en este sentido, ¿qué crees que es el avance de GPT-3 en comparación con GPT-2?

Sí, es una buena pregunta. Creo que uno de los problemas de GPT-3 es que es bastante difícil acceder a él. Así que creo que no hemos evaluado realmente la capacidad de GPT-3. Como lo hemos hecho con otros modelos como BERT o GPT-2 simplemente porque muchos académicos no tenían acceso completo para investigar qué está sucediendo. ¿Qué puedes hacer con eso? Ser capaz de probarlo completamente en muchas tareas. Así que es un poco difícil darte realmente una respuesta, ¿verdad? Lo que creo es que GPT-3 se comporta de alguna manera como algo interesante, que es una recuperación, como una recuperación suave que abarca un conjunto de datos realmente grande. Entonces puedes hacer cosas como, es como tener un enorme buscador de Google, donde puedes buscar en cada página de Internet y ser capaz de interpolar suavemente entre todas estas páginas. Así que creo que esto es muy interesante y lo que vemos, que se pueden hacer algunas aplicaciones bastante geniales con eso, como generar suavemente código y generar una publicación de blog que se vea realista. Ahora, cuando hablamos de razonamiento real, significado y cosas así, no creo que haya realmente ningún avance profundo en la suite GPT, pero esa es mi opinión personal. Sí, no, es realmente bueno que al menos para mí resuene que separas el razonamiento de tener una gran base de datos. Porque a veces tenemos la sensación de que nuestra comunidad o partes de nuestra comunidad piensan que, hey, si la base de datos es más grande, puedes resolver todos los problemas. Y a veces no es realmente así, tener un modelo más grande no significa automáticamente que de repente tengas una IA general, y es bueno recordarlo básicamente. Sí. Entonces, otra pregunta sería, solo del público, hay tantos tamaños diferentes de modelos, incluso basados en transformadores, está GPT-3, están los transformadores, está Vertra, Roberta, todo tipo de cosas. También hay versiones más destiladas ¿verdad? Y cuando un ingeniero de aprendizaje automático comienza a trabajar en la tarea, ¿cuál es una buena regla general para tomar este proceso de decisión? Y obviamente no hay una respuesta clara, pero ¿tienes algún modelo mental o un marco, especialmente para principiantes, que pueden estar trabajando en una empresa que no tiene un gran grupo de aprendizaje automático, pero son la persona que realmente toma las decisiones, ¿cómo podemos ayudar y apoyar a esa persona?

Sí, esa es una buena pregunta. Creo que eso es definitivamente algo con lo que muchas personas se enfrentan. Quiero decir, lo práctico acerca de mí, acerca de nuestro equipo en SwiggyFace, creo que es que deberíamos ayudar a las personas a hacer eso, porque entiendo que estamos proporcionando muchos modelos, estamos proporcionando muchos puntos de control, pero es realmente difícil ver el que debes seleccionar, el que debes usar. Entonces, lo primero es que intentaremos construir algunas herramientas mejores para esto. Pero ahora, para una respuesta rápida, creo que es bueno mantener tu buen reflejo, tu buena rutina, es que debes comenzar con algo simple, como debes comenzar con un modelo más pequeño, como comenzar con una versión destilada de BERT, por ejemplo, en lugar de BERT, como comenzar con algo pequeño y ver hasta dónde puedes llegar con eso, con este modelo eficiente en cómputo, como un BERT destilado, un GPT-2 destilado, un Roberta destilado, probar un poco con ellos. Y si no es suficiente, entonces escalas, entonces comienzas a usar modelos más grandes y tratas de ver si necesitas, como, un T5 o algo así.

Starting with a logistic projection

Short description:

Comenzar con una proyección logística antes de pasar a algo más avanzado es un enfoque típico. GPT-3 es un modelo potente y comenzar con él puede no dar mejores resultados. Sería interesante explorar casos de uso que muestren el espacio de problemas y cómo se pueden aplicar diferentes modelos.

Sí. Sí, eso es lo típico. Es lo mismo, siempre debes comenzar con, como, una proyección logística antes de pasar a algo muy sofisticado, pero sí. Sí. Definitivamente. Solo puedo estar de acuerdo contigo, ¿verdad? Porque una vez que comienzas con GPT-3, ¿verdad?, solo puedes empeorar a partir de ahí, ¿verdad? Así que no hay forma de explicarlo, ¿verdad? Pero tal vez solo una idea al azar, porque también estás construyendo muchas herramientas, ¿verdad? Entonces, en este momento, muchas empresas están construyendo esto, como un modelo, ¿verdad? Tal vez también puedas tener algo como, como un caso de uso, ¿verdad? Pero que muestre, como, hey, cuál es el espacio de problemas, ¿verdad? Y cómo se mapea, como, un espacio de modelos, ¿verdad? Y sí, una solución. Pero nuevamente, solo una idea al azar. Bueno, esa es una muy buena idea. Creo que deberías venir a construir eso con nosotros.

Future of Transformers in NLP and Vision

Short description:

Los Transformers han revolucionado la industria del NLP y ahora se están explorando para tareas de visión. Son eficientes y escalables para el aprendizaje por transferencia en conjuntos de datos grandes. La elección del modelo no es tan importante como la estrategia subyacente del aprendizaje por transferencia. También hay una tendencia hacia el aprendizaje débil o no supervisado. Al utilizar el aprendizaje por transferencia, existe el riesgo de caer en óptimos locales, pero hay recursos disponibles para guiar el aprendizaje por transferencia avanzado en NLP.

Sí. Sí, sí. Lo intentaré. Bueno. Entonces, la siguiente pregunta sería sobre los transformers, ¿verdad? Hemos visto que los transformers reinventaron o revolucionaron la industria del NLP en absoluto, ¿verdad? Pero, ¿cómo te sientes, como, sobre el futuro de los transformers? Hubo, como, algunos artículos también sobre el uso de transformers para, como, visión, ¿verdad? ¿Ves que pronto los transformers serán como en todo el machine learning o el aprendizaje en particular, o van a encontrar su propio nicho, ¿verdad? ¿Y llegar a un punto de estancamiento básicamente?

Sí, esa es una buena pregunta. Es una pregunta oportuna. Creo que este transformer de visión fue un artículo muy impresionante porque realmente mostró que lo que hemos visto para NLP también es cierto para visión, que los transformers son bastante eficientes, y realmente son un buen modelo para escalar a grandes conjuntos de data. Tan pronto como comiences a hablar sobre el aprendizaje por transferencia desde un gran conjunto de data, realmente quieres la architecture más eficiente que puedas escalar. Sí, quiero decir, no soy un experto en visión por computadora. Así que sí, realmente no sé por qué solo vemos eso hoy, por ejemplo. Así que no sé si hubo algo desbloqueado, pero sí, creo que son buenos. Soy bastante agnóstico en cuanto a modelos, diría. Creo que la estrategia subyacente, como el aprendizaje por transferencia, es algo muy profundo e importante. En cuanto al modelo preciso que seleccionamos para usar, no me importa tanto. Si alguien encuentra algo mejor que Transformer, estaría feliz de cambiar a esos nuevos modelos. Pero creo que la idea de reutilizar un modelo pre-entrenado es mucho más profunda con consecuencias profundas.

Sí, supongo que algo que está sucediendo en la industria en este momento es incluso no utilizar Transformer como una architecture, sino más bien utilizar el aprendizaje débil o no supervisado. Porque gran parte de Transformer o BERT, o esta dirección, fue como, hey, no necesitamos tener un gran conjunto de datos etiquetados, podemos simplemente reutilizar lo que tenemos. Y al utilizar las mismas ideas de, hey, ¿podemos aprender representaciones de la propia imagen, y todas las ideas de pérdida contrastiva podrían ser algo que desencadene otra dirección diferente. Genial, una pregunta más del público. La reformularé, pero espero no perder el sentido. Entonces, lo que también sugeriste en tu charla, si puedes usar el aprendizaje por transferencia, puedes intentar comenzar desde allí y tratar de descongelar algunas capas y entrenarlo gradualmente para obtener la tarea correcta. Y la persona está preguntando, básicamente, qué tan probable es que al hacer aprendizaje por transferencia, termines en este óptimo local de convergencia, por lo que no obtienes realmente algo bueno. En comparación, si comienzas con un modelo desde cero y básicamente lo entrenas todo junto. Porque, quiero decir, por lo general, las personas esperan que cuanto más descongeles, mejor será y es casi como una transición suave desde el aprendizaje por transferencia directo a este modelo que ha sido entrenado desde cero. ¿Estás de acuerdo con esto, verdad? ¿O hay algo de lo que las personas deberían estar conscientes? Algunos tips y trucos básicamente de aprendizaje por transferencia avanzado y NLP. Sí, hay muchas cosas aquí. El mejor recurso, quiero decir, probablemente sea... Así que tenía un enlace en mi primera diapositiva a un tutorial largo donde hablamos de eso. Y también hice un video que podría compartir a principios de este año sobre esta pregunta. Pero hay mucho riesgo de caer en óptimos locales. Así que, vemos que cuando ajustas finamente BERT, por ejemplo, puedes obtener un comportamiento no óptimo.

Model Conversion and Stuck Minima

Short description:

Para algunas semillas aleatorias, el modelo queda atrapado en mínimos, mientras que para otras funciona bien. Los investigadores están investigando este fenómeno y desarrollando herramientas como MixOut para evitar quedar atrapados. Hay varias técnicas para lograr una interpolación suave y evitar mínimos locales. Las asambleas también son efectivas. Esta es una pregunta abierta de investigación y se fomenta una mayor exploración.

Para cierto tipo de semillas aleatorias, el modelo simplemente no se convierte, se queda atrapado en mínimos. Y para algunas otras semillas aleatorias funciona muy bien, lo cual fue sorprendente al principio. Muchas personas han estado investigando qué estaba sucediendo y ahora tienes muchas herramientas para tratar de evitar eso. Tienes herramientas como algo relacionado con lo que estás diciendo, que se llama MixOut, que es la idea de que es un poco como DropOut, probablemente quieras, como, probablemente quieras regularizar tu modelo. Con DropOut regularizas hacia cero, como cancelas algunos pesos. Y con estas otras cosas, puedes regularizar hacia el modelo pre-entrenado. Así que puedes tener una interpolación suave desde el modelo pre-entrenado hasta el modelo que se ajusta finamente. Pero hay muchas otras técnicas que intentan hacer una interpolación suave para no quedar atrapados en mínimos locales. Es un área muy activa de investigación, y la otra opción es intentar hacer algunas asambleas, que también funcionan muy bien. Pero sí, sigue siendo una pregunta de investigación abierta. Creo que aún no entendemos realmente todo lo que está sucediendo aquí. Toma algo de tiempo, aunque funciona muy bien en esos casos, parece estar muy cerca. Así que tal vez para quien hizo esta pregunta, también es un buen tema para investigar, ¿verdad? Entonces, una vez que encuentres algunas respuestas, por favor escribe el artículo o el documento. Y todos podemos leerlo más tarde. Genial. Tal vez la última pregunta, porque parece que esta conversación podría durar mucho tiempo, pero todavía tenemos un poco de tiempo en la agenda. Entonces, ¿cómo te sientes acerca de NLP y los teléfonos inteligentes? ¿Es algo que ya está agotado y ya tenemos una buena destilación? ¿O todavía hay grandes avances por delante? Sí. Creo que es un área interesante. Tenemos algunas bibliotecas de código abierto en Swift, Swift Core ML con modelos que se pueden ejecutar en el iPhone. Y hay muchos artículos muy recientes que estamos grabando una charla para la próxima semana, NLP, EMNLP en realidad sobre eso. Puedes cuantizar modelos de manera muy eficiente. Así que sí, puedo ver que hay muchos avances que vendrán con modelos muy eficientes, manteniendo un alto rendimiento que tenemos en PC y en la computadora, pero en el teléfono inteligente. Sí. Bueno. Gracias Thomas por... Perdón. Sí, sí. Perdón, gracias nuevamente por tus increíbles respuestas y también por tu charla, pero también me gustaría mencionar nuevamente el trabajo que Hugging Face hace en código abierto. Es realmente útil y reduce la barrera de entrada para muchas personas en esta industria. Así que gracias nuevamente y espero verte en algún lugar de internet. Gracias. Sí, y si aún tienes algunas preguntas y te gustaría dirigirlas directamente a Tomas, recuerda que tenemos la sala de conferenciantes. Para eso, simplemente ve al sitio web. Como Ajay te explicó antes y luego encontrarás el enlace a la conversación con Tomas. Que comenzará más o menos ahora mismo. Así que por favor continúa si deseas seguir la conversación sobre NLP.

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

6 min
Charlie Gerard's Career Advice: Be intentional about how you spend your time and effort
Featured Article
When it comes to career, Charlie has one trick: to focus. But that doesn’t mean that you shouldn’t try different things — currently a senior front-end developer at Netlify, she is also a sought-after speaker, mentor, and a machine learning trailblazer of the JavaScript universe. "Experiment with things, but build expertise in a specific area," she advises.

What led you to software engineering?My background is in digital marketing, so I started my career as a project manager in advertising agencies. After a couple of years of doing that, I realized that I wasn't learning and growing as much as I wanted to. I was interested in learning more about building websites, so I quit my job and signed up for an intensive coding boot camp called General Assembly. I absolutely loved it and started my career in tech from there.
 What is the most impactful thing you ever did to boost your career?I think it might be public speaking. Going on stage to share knowledge about things I learned while building my side projects gave me the opportunity to meet a lot of people in the industry, learn a ton from watching other people's talks and, for lack of better words, build a personal brand.
 What would be your three tips for engineers to level up their career?Practice your communication skills. I can't stress enough how important it is to be able to explain things in a way anyone can understand, but also communicate in a way that's inclusive and creates an environment where team members feel safe and welcome to contribute ideas, ask questions, and give feedback. In addition, build some expertise in a specific area. I'm a huge fan of learning and experimenting with lots of technologies but as you grow in your career, there comes a time where you need to pick an area to focus on to build more profound knowledge. This could be in a specific language like JavaScript or Python or in a practice like accessibility or web performance. It doesn't mean you shouldn't keep in touch with anything else that's going on in the industry, but it means that you focus on an area you want to have more expertise in. If you could be the "go-to" person for something, what would you want it to be? 
 And lastly, be intentional about how you spend your time and effort. Saying yes to everything isn't always helpful if it doesn't serve your goals. No matter the job, there are always projects and tasks that will help you reach your goals and some that won't. If you can, try to focus on the tasks that will grow the skills you want to grow or help you get the next job you'd like to have.
 What are you working on right now?Recently I've taken a pretty big break from side projects, but the next one I'd like to work on is a prototype of a tool that would allow hands-free coding using gaze detection. 
 Do you have some rituals that keep you focused and goal-oriented?Usually, when I come up with a side project idea I'm really excited about, that excitement is enough to keep me motivated. That's why I tend to avoid spending time on things I'm not genuinely interested in. Otherwise, breaking down projects into smaller chunks allows me to fit them better in my schedule. I make sure to take enough breaks, so I maintain a certain level of energy and motivation to finish what I have in mind.
 You wrote a book called Practical Machine Learning in JavaScript. What got you so excited about the connection between JavaScript and ML?The release of TensorFlow.js opened up the world of ML to frontend devs, and this is what really got me excited. I had machine learning on my list of things I wanted to learn for a few years, but I didn't start looking into it before because I knew I'd have to learn another language as well, like Python, for example. As soon as I realized it was now available in JS, that removed a big barrier and made it a lot more approachable. Considering that you can use JavaScript to build lots of different applications, including augmented reality, virtual reality, and IoT, and combine them with machine learning as well as some fun web APIs felt super exciting to me.


Where do you see the fields going together in the future, near or far? I'd love to see more AI-powered web applications in the future, especially as machine learning models get smaller and more performant. However, it seems like the adoption of ML in JS is still rather low. Considering the amount of content we post online, there could be great opportunities to build tools that assist you in writing blog posts or that can automatically edit podcasts and videos. There are lots of tasks we do that feel cumbersome that could be made a bit easier with the help of machine learning.
 You are a frequent conference speaker. You have your own blog and even a newsletter. What made you start with content creation?I realized that I love learning new things because I love teaching. I think that if I kept what I know to myself, it would be pretty boring. If I'm excited about something, I want to share the knowledge I gained, and I'd like other people to feel the same excitement I feel. That's definitely what motivated me to start creating content.
 How has content affected your career?I don't track any metrics on my blog or likes and follows on Twitter, so I don't know what created different opportunities. Creating content to share something you built improves the chances of people stumbling upon it and learning more about you and what you like to do, but this is not something that's guaranteed. I think over time, I accumulated enough projects, blog posts, and conference talks that some conferences now invite me, so I don't always apply anymore. I sometimes get invited on podcasts and asked if I want to create video content and things like that. Having a backlog of content helps people better understand who you are and quickly decide if you're the right person for an opportunity.What pieces of your work are you most proud of?It is probably that I've managed to develop a mindset where I set myself hard challenges on my side project, and I'm not scared to fail and push the boundaries of what I think is possible. I don't prefer a particular project, it's more around the creative thinking I've developed over the years that I believe has become a big strength of mine.***Follow Charlie on Twitter
ML conf EU 2020ML conf EU 2020
41 min
TensorFlow.js 101: ML in the Browser and Beyond
Discover how to embrace machine learning in JavaScript using TensorFlow.js in the browser and beyond in this speedy talk. Get inspired through a whole bunch of creative prototypes that push the boundaries of what is possible in the modern web browser (things have come a long way) and then take your own first steps with machine learning in minutes. By the end of the talk everyone will understand how to recognize an object of their choice which could then be used in any creative way you can imagine. Familiarity with JavaScript is assumed, but no background in machine learning is required. Come take your first steps with TensorFlow.js!
React Advanced Conference 2021React Advanced Conference 2021
21 min
Using MediaPipe to Create Cross Platform Machine Learning Applications with React
Top Content
This talk gives an introduction about MediaPipe which is an open source Machine Learning Solutions that allows running machine learning models on low-powered devices and helps integrate the models with mobile applications. It gives these creative professionals a lot of dynamic tools and utilizes Machine learning in a really easy way to create powerful and intuitive applications without having much / no knowledge of machine learning beforehand. So we can see how MediaPipe can be integrated with React. Giving easy access to include machine learning use cases to build web applications with React.
JSNation Live 2021JSNation Live 2021
39 min
TensorFlow.JS 101: ML in the Browser and Beyond
Discover how to embrace machine learning in JavaScript using TensorFlow.js in the browser and beyond in this speedy talk. Get inspired through a whole bunch of creative prototypes that push the boundaries of what is possible in the modern web browser (things have come a long way) and then take your own first steps with machine learning in minutes. By the end of the talk everyone will understand how to recognize an object of their choice which could then be used in any creative way you can imagine. Familiarity with JavaScript is assumed, but no background in machine learning is required. Come take your first steps with TensorFlow.js!
TestJS Summit 2021TestJS Summit 2021
18 min
Predictive Testing in JavaScript with Machine Learning
This talk will cover how we can apply machine learning to software testing including in Javascript, to help reduce the number of tests that need to be run.We can use predictive machine learning model to make an informed decision to rule out tests that are extremely unlikely to uncover an issue. This opens up a new, more efficient way of selecting tests.

Workshops on related topic

ML conf EU 2020ML conf EU 2020
160 min
Hands on with TensorFlow.js
Workshop
Come check out our workshop which will walk you through 3 common journeys when using TensorFlow.js. We will start with demonstrating how to use one of our pre-made models - super easy to use JS classes to get you working with ML fast. We will then look into how to retrain one of these models in minutes using in browser transfer learning via Teachable Machine and how that can be then used on your own custom website, and finally end with a hello world of writing your own model code from scratch to make a simple linear regression to predict fictional house prices based on their square footage.
ML conf EU 2020ML conf EU 2020
112 min
The Hitchhiker's Guide to the Machine Learning Engineering Galaxy
Workshop
Are you a Software Engineer who got tasked to deploy a machine learning or deep learning model for the first time in your life? Are you wondering what steps to take and how AI-powered software is different from traditional software? Then it is the right workshop to attend.
The internet offers thousands of articles and free of charge courses, showing how it is easy to train and deploy a simple AI model. At the same time in reality it is difficult to integrate a real model into the current infrastructure, debug, test, deploy, and monitor it properly. In this workshop, I will guide you through this process sharing tips, tricks, and favorite open source tools that will make your life much easier. So, at the end of the workshop, you will know where to start your deployment journey, what tools to use, and what questions to ask.
ML conf EU 2020ML conf EU 2020
146 min
Introduction to Machine Learning on the Cloud
Workshop
This workshop will be both a gentle introduction to Machine Learning, and a practical exercise of using the cloud to train simple and not-so-simple machine learning models. We will start with using Automatic ML to train the model to predict survival on Titanic, and then move to more complex machine learning tasks such as hyperparameter optimization and scheduling series of experiments on the compute cluster. Finally, I will show how Azure Machine Learning can be used to generate artificial paintings using Generative Adversarial Networks, and how to train language question-answering model on COVID papers to answer COVID-related questions.