conoces esa expresión Cuando tienes un martillo, todo parece un clavo.? Bueno, en el aprendizaje automático, parece que realmente hemos descubierto un martillo mágico para el que todo es, de hecho, un clavo, y se llaman Transformers. Los transformadores son modelos que se pueden diseñar para traducir texto, escribir poemas y editorialesy incluso generar código de computadora. De hecho, muchas de las increíbles investigaciones sobre las que escribo en daleonai.com se basan en Transformers, como AlphaFold 2, el modelo que predice las estructuras de las proteínas a partir de sus secuencias genéticas, así como modelos poderosos de procesamiento del lenguaje natural (NLP) como GPT. -3, BERT, T5, Switch, Meena y otros. Se podría decir que son más de lo que se encuentra… ugh, olvídalo.
Si desea mantenerse actualizado en el aprendizaje automático y especialmente en la PNL, debe saber al menos un poco sobre Transformers. Entonces, en esta publicación, hablaremos sobre qué son, cómo funcionan y por qué han tenido tanto impacto.
Un transformador es un tipo de arquitectura de red neuronal. En resumen, las redes neuronales son un tipo de modelo muy efectivo para analizar tipos de datos complejos como imágenes, videos, audio y texto. Pero existen diferentes tipos de redes neuronales optimizadas para diferentes tipos de datos. Por ejemplo, para analizar imágenes, normalmente usaremos redes neuronales convolucionales o “CNN”. Vagamente, imitan la forma en que el cerebro humano procesa la información visual.
Red neuronal convolucional, cortesía de Renanar2 en Wikicommons.
Y desde alrededor de 2012, hemos tenido bastante éxito en resolver problemas de visión con CNN, como identificar objetos en fotos, reconocer rostros y leer dígitos escritos a mano. Pero durante mucho tiempo, no existió nada comparablemente bueno para las tareas de lenguaje (traducción, resumen de texto, generación de texto, reconocimiento de entidades nombradas, etc.). Eso fue desafortunado, porque el lenguaje es la principal forma en que los humanos nos comunicamos.
Antes de que se introdujeran los Transformers en 2017, la forma en que usábamos el aprendizaje profundo para comprender el texto era con un tipo de modelo llamado Red neuronal recurrente o RNN que se parecía a esto:
Imagen de un RNN, cortesía de Wikimedia.
Digamos que desea traducir una oración del inglés al francés. Un RNN tomaría como entrada una oración en inglés, procesaría las palabras una a la vez y luego, secuencialmente, escupiría sus contrapartes en francés. La palabra clave aquí es “secuencial”. En el lenguaje, el orden de las palabras es importante y no puedes simplemente barajarlas. La frase:
“Jane fue a buscar problemas”.
significa algo muy diferente de la oración:
“El problema fue a buscar a Jane”
Entonces, cualquier modelo que vaya a comprender el lenguaje debe capturar el orden de las palabras, y las redes neuronales recurrentes hicieron esto procesando una palabra a la vez, en una secuencia.
Pero los RNN tenían problemas. Primero, tuvieron dificultades para manejar grandes secuencias de texto, como párrafos largos o ensayos. Cuando llegaban al final de un párrafo, se olvidaban de lo que pasó al principio. Un modelo de traducción basado en RNN, por ejemplo, podría tener problemas para recordar el género del tema de un párrafo largo.
Peor aún, los RNN eran difíciles de entrenar. Eran notoriamente susceptibles a lo que se llama el problema de gradiente de desaparición/explosión (a veces simplemente había que reiniciar el entrenamiento y cruzar los dedos). Aún más problemático, debido a que procesaban palabras secuencialmente, los RNN eran difíciles de paralelizar. Esto significaba que no podía simplemente acelerar el entrenamiento arrojándoles más GPU, lo que significaba, a su vez, que no podía entrenarlos con toda esa cantidad de datos.
Introduzca transformadores
Aquí es donde Transformers cambió todo. Fueron desarrollados en 2017 por investigadores de Google y la Universidad de Toronto, inicialmente diseñados para hacer traducción. Pero a diferencia de las redes neuronales recurrentes, los transformadores podrían paralelizarse de manera muy eficiente. Y eso significaba que, con el hardware adecuado, podía entrenar algunos modelos realmente grandes.
¿Cuan grande?
grandemente grande
GPT-3, el modelo de generación de texto especialmente impresionante que escribe casi tan bien como un ser humano fue entrenado en algunos 45TB de datos de texto, incluyendo casi toda la web pública.
Entonces, si recuerda algo sobre Transformers, que sea esto: combine un modelo que se adapte bien a un gran conjunto de datos y los resultados probablemente lo dejarán boquiabierto.
¿Cómo funcionan los transformadores?
Diagrama de transformador del artículo original
Mientras que el diagrama de la papel original da un poco de miedo, la innovación detrás de Transformers se reduce a tres conceptos principales:
- Codificaciones posicionales
- Atención
- Autoatención
Codificaciones posicionales
Comencemos con el primero, codificaciones posicionales. Digamos que estamos tratando de traducir texto del inglés al francés. Recuerde que los RNN, la forma antigua de hacer la traducción, entendían el orden de las palabras procesando las palabras secuencialmente. Pero esto también es lo que los hizo difíciles de paralelizar.
Los transformadores superan esta barrera a través de codificaciones posicionales innovadoras llamadas. La idea es tomar todas las palabras en su secuencia de entrada, una oración en inglés, en este caso, y agregarle a cada palabra un número en su orden. Entonces, alimenta su red con una secuencia como:
[("Dale", 1), ("says", 2), ("hello", 3), ("world", 4)]
Conceptualmente, puede pensar en esto como trasladar la carga de comprender el orden de las palabras de la estructura de la red neuronal a los datos mismos.
Al principio, antes de que el Transformador haya sido entrenado en cualquier dato, no sabe cómo interpretar estas codificaciones posicionales. Pero a medida que el modelo ve más y más ejemplos de oraciones y sus codificaciones, aprende a usarlas de manera efectiva.
He hecho un poco de simplificación aquí: los autores originales usaron funciones de seno para generar codificaciones posicionales, no los números enteros simples 1, 2, 3, 4, pero el punto es el mismo. Almacene el orden de las palabras como datos, no como estructura, y su red neuronal será más fácil de entrenar.
Atención
LA SIGUIENTE PARTE IMPORTANTE DE LOS TRANSFORMADORES SE LLAMA ATENCIÓN.
¿Lo tengo?
La atención es una estructura de red neuronal de la que escuchará por todas partes en el aprendizaje automático en estos días. De hecho, el título del artículo de 2017 que presentó a Transformers no se llamaba Te Presentamos el Transformador. En cambio, se llamó La atención es todo lo que necesitas.
Atención se introdujo en el contexto de la traducción dos años antes, en 2015. Para entenderlo, tome esta oración de ejemplo del artículo original:
El acuerdo sobre el Espacio Económico Europeo se firmó en agosto de 1992.
Ahora imagina tratar de traducir esa oración a su equivalente en francés:
L’accord sur la zone économique européenne a été signé en août 1992.
Una mala manera de tratar de traducir esa oración sería repasar cada palabra de la oración en inglés y tratar de escupir su equivalente en francés, una palabra a la vez. Eso no funcionaría bien por varias razones, pero por una parte, algunas palabras en la traducción al francés están invertidas: es “Espacio Económico Europeo” en inglés, pero “la zone économique européenne” en francés. Además, el francés es un idioma con palabras de género. Los adjetivos “économique” y “européenne” deben estar en forma femenina para coincidir con el objeto femenino “la zone”.
La atención es un mecanismo que permite que un modelo de texto “observe” cada palabra en la oración original al tomar una decisión sobre cómo traducir las palabras en la oración de salida. Aquí hay una buena visualización de ese documento de atención original:
Figura del artículo, “Traducción automática neuronal mediante el aprendizaje conjunto para alinear y traducir (2015)”
Es una especie de mapa de calor que muestra dónde está “atendiendo” el modelo cuando emite cada palabra en la oración en francés. Como era de esperar, whSi el modelo genera la palabra “européenne”, presta mucha atención a las palabras de entrada “europeo” y “económico”.
¿Y cómo sabe el modelo a qué palabras debe “atender” en cada paso de tiempo? Es algo que se aprende de los datos de entrenamiento. Al ver miles de ejemplos de oraciones en francés e inglés, el modelo aprende qué tipos de palabras son interdependientes. Aprende a respetar el género, la pluralidad y otras reglas gramaticales.
El mecanismo de atención ha sido una herramienta extremadamente útil para el procesamiento del lenguaje natural desde su descubrimiento en 2015, pero en su forma original se utilizó junto con las redes neuronales recurrentes. Entonces, la innovación del artículo de Transformers de 2017 fue, en parte, deshacerse por completo de los RNN. Es por eso que el artículo de 2017 se llamó “La atención es todo necesitas.”
Autoatención
La última (y quizás la más impactante) pieza del Transformador es un giro en la atención llamado “autoatención”.
El tipo de atención “vainilla” de la que acabamos de hablar ayudó a alinear palabras en oraciones en inglés y francés, lo cual es importante para la traducción. Pero, ¿qué sucede si no está tratando de traducir palabras, sino que construye un modelo que comprende el significado y los patrones subyacentes en el lenguaje, un tipo de modelo que podría usarse para realizar cualquier cantidad de tareas de lenguaje?
En general, lo que hace que las redes neuronales sean poderosas, emocionantes y geniales es que a menudo construyen automáticamente representaciones internas significativas de los datos en los que están entrenadas. Cuando inspecciona las capas de una red neuronal de visión, por ejemplo, encontrará conjuntos de neuronas que “reconocen” bordes, formas e incluso estructuras de alto nivel como ojos y bocas. Un modelo entrenado con datos de texto podría aprender automáticamente partes del discurso, reglas gramaticales y si las palabras son sinónimas.
Cuanto mejor sea la representación interna del lenguaje que aprenda una red neuronal, mejor será en cualquier tarea de lenguaje. Y resulta que la atención puede ser una forma muy efectiva de hacer precisamente esto, si se activa el texto de entrada en sí.
Por ejemplo, tome estas dos oraciones:
“Servidor, ¿puedo tener el cheque?”
“Parece que acabo de colapsar el servidor”.
La palabra servidor aquí significa dos cosas muy diferentes, que nosotros, los humanos, podemos desambiguar fácilmente al mirar las palabras circundantes. La autoatención permite que una red neuronal comprenda una palabra en el contexto de las palabras que la rodean.
Entonces, cuando un modelo procesa la palabra “servidor” en la primera oración, podría estar “atendiendo” a la palabra “verificar”, lo que ayuda a desambiguar un servidor humano de uno de metal.
En la segunda oración, el modelo podría prestar atención a la palabra “chocó” para determinar este “servidor” se refiere a una máquina.
La autoatención ayuda a las redes neuronales a eliminar la ambigüedad de las palabras, etiquetar partes del discurso, resolver entidades, aprender roles semánticos y mucho más.
Entonces, aquí estamos.: Los transformadores, explicados a 10,000 pies, se reducen a:
- Codificaciones de posición
- Atención
- Autoatención
Si desea una explicación técnica más profunda, le recomiendo que consulte la publicación del blog de Jay Alammar El transformador ilustrado.
¿Qué pueden hacer los transformadores?
Uno de los modelos basados en transformadores más populares se llama BERT, abreviatura de “Representaciones de codificador bidireccional de transformadores”. Fue presentado por investigadores de Google cuando me uní a la empresa, en 2018, y pronto se abrió paso en casi todos los proyectos de PNL, incluidos Búsqueda de Google.
BERT se refiere no solo a una arquitectura de modelo, sino a un modelo entrenado en sí mismo, que puede descargar y usar de forma gratuita aquí. Fue entrenado por investigadores de Google en un corpus de texto masivo y se ha convertido en una especie de navaja de bolsillo de uso general para NLP. Se puede extender para resolver un montón de tareas diferentes, como:
– resumen de texto
– respuesta a preguntas
– clasificación
– resolución de entidad nombrada
– similitud de texto
– detección de mensajes ofensivos/blasfemias
– comprender las consultas de los usuarios
– mucho más
BERT demostró que se pueden crear muy buenos modelos de lenguaje entrenados con datos no etiquetados, como texto extraído de Wikipedia y Reddit, y que estos grandes modelos “base” se pueden adaptar con datos específicos del dominio a muchos casos de uso diferentes.
Más recientemente, el modelo GPT-3, creado por OpenAI, ha dejado boquiabiertos a las personas con su capacidad para generar texto realista. Meenapresentado por Google Research el año pasado, es un chatbot basado en Transformer (ajhem, “agente conversacional”) que puede tener conversaciones convincentes sobre casi cualquier tema (este autor una vez pasó veinte minutos discutiendo con Meena sobre lo que significa ser humano).
Los transformadores también han estado causando sensación fuera de la PNL, al Componiendo musicagenerando imágenes a partir de descripciones de texto, y predicción de la estructura de la proteína.
¿Cómo puedo usar los transformadores?
Ahora que está convencido del poder de los Transformers, es posible que desee saber cómo puede comenzar a usarlos en su propia aplicación. No hay problema.
Puede descargar modelos comunes basados en transformadores como BERT desde Centro TensorFlow. Para ver un tutorial de código, consulte este que escribí sobre la creación de aplicaciones basadas en lenguaje semántico.
Pero si quieres estar realmente a la moda y escribes Python, te recomiendo la popular biblioteca “Transformers” que mantiene la empresa. AbrazandoCara. La plataforma le permite entrenar y usar la mayoría de los modelos de PNL populares de hoy en día, como BERT, Roberta, T5, GPT-2, de una manera muy amigable para los desarrolladores.
Si desea obtener más información sobre la creación de aplicaciones con Transformers, ¡vuelva pronto! Próximamente más tutoriales.
¡Un agradecimiento especial a Luiz/Gus Gustavo, Karl Weinmeister y Alex Ku por revisar los primeros borradores de esta publicación!