Transformers: explicamos el modelo detrás de GPT-3, BERT y T5.

Un texto original de Dale Markowitz, ingeniera experta en Inteligencia Artificial (AI) y amante de todo lo relacionado con Traducción Automática, que nos explica por qué son tan útiles e importantes los Transformers para el Aprendizaje Automático y el Procesamiento Natural del Lenguaje (PNL).

bertGPT3T5traducción automática
18 marzo, 2022 Transformers, elementos claves de la Traducción Automática
18 marzo, 2022 Transformers, elementos claves de la Traducción Automática

¿Conoces la expresión «Cuando tienes un martillo, todo parece un clavo?» Pues bien, en el aprendizaje automático, parece que hemos descubierto un martillo mágico para el que todo es un clavo, y este martillo es lo que llamamos Transformer. Los Transformes son modelos que pueden entrenarse para traducir textos, escribir poemas y editoriales, e incluso generar código informático. De hecho, muchas de las increíbles investigaciones sobre las que escribo en daleonai.com se basan en Transformers, como AlphaFold2, el modelo que predice las estructuras de las proteínas a partir de sus secuencias genéticas, así como potentes modelos de procesamiento del lenguaje natural (PLN) como GPT-3, BERT, T5, Switch, Meena y otros. Se podría decir que son más de lo que se ve… ugh, olvídalo.

Si quieres estar a la última en aprendizaje automático, PNL y traducción automática, tienes que saber al menos un poco sobre los Transformers. Así que en este post, hablaremos de lo que son, cómo funcionan y por qué han sido tan importantes.

Disclaimer: Traducción gratuita a Español realizada por un estudiante en formación para la empresa de traducción e interpretación Ibidem Group. Recuerda usar la Traducción Automática con moderación: si necesitas traducciones profesionales para tu empresa o para trámites personales, te aconsejamos buscar empresas de traducción que trabajen con traductores humanos, nativos. Si necesitas traducciones en Madrid o traductores en Barcelona, contacta con nosotros!

Un Transformer es un tipo de arquitectura de red neuronal. En resumen, las redes neuronales son un tipo de modelo muy eficaz para analizar tipos de datos complejos como imágenes, vídeos, audio y texto. Pero hay diferentes tipos de redes neuronales optimizadas para diferentes tipos de datos. Por ejemplo, para analizar imágenes, normalmente utilizaremos redes neuronales convolucionales o «CNN». Vagamente, imitan la forma en que el cerebro humano procesa la información visual.

Convolutional Neural Network

Red neuronal convolucional, cortesía de Renanar2 en Wikicommons.

Y desde aproximadamente 2012, hemos tenido bastante éxito en la resolución de problemas de visión con CNN, como la identificación de objetos en fotos, el reconocimiento de caras y la lectura de dígitos escritos a mano. Sin embargo, durante mucho tiempo no ha existido nada comparable a las tareas lingüísticas (traducción, resumen de textos, generación de textos, reconocimiento de entidades con nombre, etc.). Es una lástima, porque el lenguaje es la principal forma de comunicación de los seres humanos.

Antes de que se presentaran los Transformers en 2017, la forma en que utilizábamos el aprendizaje profundo para entender el texto era con un tipo de modelo llamado Red Neuronal Recurrente o RNN que se parecía a esto:

Recurrent Neural Network diagram

Imagen de una RNN, cortesía de Wikimedia.

Supongamos que queremos traducir una frase del inglés al francés. Una RNN tomaría como entrada una frase en inglés, procesaría las palabras de una en una y luego, secuencialmente, escupiría sus equivalentes en francés. La palabra clave aquí es «secuencial». En el lenguaje, el orden de las palabras es importante y no se pueden mezclar. La frase:

«Jane fue a buscar problemas».

significa algo muy diferente a la frase:

«Los problemas fueron a buscar a Jane»

Así que cualquier modelo que vaya a entender el lenguaje debe captar el orden de las palabras, y las redes neuronales recurrentes lo hacían procesando una palabra cada vez, en una secuencia.

Pero las RNN tenían problemas. En primer lugar, les costaba manejar grandes secuencias de texto, como párrafos largos o ensayos. Cuando llegaban al final de un párrafo, olvidaban lo que había ocurrido al principio. Un modelo de traducción basado en RNN, por ejemplo, podría tener problemas para recordar el género del sujeto de un párrafo largo.

Y lo que es peor, las RNN eran difíciles de entrenar. Eran notoriamente susceptibles a lo que se llama el problema del gradiente que se desvanece/explosiona (a veces simplemente había que reiniciar el entrenamiento y cruzar los dedos). Y lo que es más problemático, como procesan las palabras de forma secuencial, las RNN son difíciles de paralelizar. Esto significaba que no se podía acelerar el entrenamiento simplemente lanzando más GPUs sobre ellas, lo que significaba, a su vez, que no se podían entrenar con tantos datos.

Descubre los Transformers

Los Transformers lo cambiaron todo. Fueron desarrollados en 2017 por investigadores de Google y la Universidad de Toronto, inicialmente diseñados para hacer traducciones. Pero a diferencia de las redes neuronales recurrentes, los Transformers podían paralelizarse de forma muy eficiente. Y eso significaba que, con el hardware adecuado, se podían entrenar modelos realmente grandes.

¿Cómo de grandes?

Muy grandes.

GPT-3, el modelo de generación de texto especialmente impresionante que escribe casi tan bien como un humano, fue entrenado con unos 45 TB de datos de texto, incluida casi toda la web pública.

Así que si recuerdas algo de Transformers, que sea esto: combina un modelo que escale bien con un enorme conjunto de datos y los resultados probablemente te dejarán boquiabierto.

¿Cómo funcionan los Transformers?

Diagram of a Transformer

Diagrama del Transformer, extraido del paper original

Aunque el diagrama del paper original da un poco de miedo, la innovación detrás de Transformers se reduce a 3 conceptos principales:

  1. Codificaciones posicionales
  2. Atención
  3. Autoatención

Codificaciones posicionales

Empecemos por la primera, las codificaciones posicionales. Supongamos que intentamos traducir un texto del inglés al francés. Recordemos que las RNN, la antigua forma de hacer traducciones, entendían el orden de las palabras procesándolas secuencialmente. Pero esto es también lo que los hacía difíciles de paralelizar.

Los Transformers sortean esta barrera mediante una innovación llamada codificación posicional. La idea es tomar todas las palabras de la secuencia de entrada -una frase en inglés, en este caso- y añadir a cada palabra un número en su orden. Así, usted alimenta a su red con una secuencia como:

[(«Dale», 1), («dice», 2), («hola», 3), («mundo», 4)]

Conceptualmente, se puede pensar que esto es trasladar la carga de entender el orden de las palabras de la estructura de la red neuronal a los propios datos.

Al principio, antes de que el Transformer haya sido entrenado con datos, no sabe cómo interpretar estas codificaciones posicionales. Pero a medida que el modelo ve más y más ejemplos de frases y sus codificaciones, aprende a utilizarlas con eficacia.

He simplificado un poco el tema -los autores originales utilizaron funciones sinusoidales para crear codificaciones posicionales, no los simples enteros 1, 2, 3, 4-, pero la cuestión es la misma. Si almacena el orden de las palabras como datos, no como estructura, su red neuronal será más fácil de entrenar.

Atención

AL SIGUIENTE ELEMENTO CLAVE DE LOS TRANSFORMERS LO LLAMAMOS «ATENCIÓN»

¿Se entiende?

La atención es una estructura de red neuronal de la que oirás hablar por todas partes en el aprendizaje automático estos días. De hecho, el título del artículo de 2017 que introdujo los Transformers no se llamaba We Present You the Transformer. En su lugar, se llamaba Attention is All You Need.

La atención se introdujo en el contexto de la traducción dos años antes, en 2015. Para entenderlo, tomemos esta frase de ejemplo del documento original:

El acuerdo sobre el Espacio Económico Europeo se firmó en agosto de 1992.

Ahora imagina que intentamos traducir esa frase a su equivalente en francés:

El acuerdo sobre la zona económica europea se firmó en agosto de 1992.

Una mala manera de intentar traducir esa frase sería repasar cada palabra de la frase en inglés e intentar escupir su equivalente en francés, una palabra cada vez. Eso no funcionaría bien por varias razones, pero en primer lugar, algunas palabras de la traducción francesa están invertidas: es «European Economic Area» 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 femenino para corresponder al objeto femenino «la zone».

La atención es un mecanismo que permite a un modelo de texto «mirar» cada una de las palabras de la frase original al tomar una decisión sobre cómo traducir las palabras de la frase de salida. He aquí una bonita visualización de ese documento original sobre la atención:

diagram of attention

Imagern extraída del artículo «Neural Machine Translation by Jointly Learning to Align and Translate (2015)»

Se trata de una especie de mapa de calor que muestra dónde «atiende» el modelo cuando emite cada palabra de la frase en francés. Como era de esperar, cuando el modelo emite la palabra «européenne», presta mucha atención a las palabras de entrada «European» y «Economic».

¿Y cómo sabe el modelo 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 frases 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 a las redes neuronales recurrentes. Por ello, la innovación del artículo de 2017 de Transformers fue, en parte, abandonar por completo las RNN. Por eso el paper de 2017 se llamaba «Attention is all you need».

Autoatención

El último elemento (y quizá el más importante) del Transformer es un giro en la atención llamado «autoatención».

El tipo de atención «vainilla» del que acabamos de hablar ayudó a alinear las palabras en las frases inglesas y francesas, lo que es importante para la traducción. Pero, ¿y si no se trata de traducir palabras, sino de construir un modelo que comprenda el significado subyacente y los patrones del lenguaje, un tipo de modelo que podría utilizarse para realizar cualquier número de tareas lingüísticas?

En general, lo que hace que las redes neuronales sean potentes, emocionantes y geniales es que a menudo construyen automáticamente representaciones internas significativas de los datos con los que se entrenan. Al inspeccionar 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 puede aprender automáticamente las partes del discurso, las reglas gramaticales y si las palabras son sinónimas.

Cuanto mejor sea la representación interna del lenguaje que aprende una red neuronal, mejor será en cualquier tarea lingüística. Y resulta que la atención puede ser una forma muy eficaz de hacer precisamente esto, si se dirige al propio texto de entrada.

Por ejemplo, tomemos estas dos frases:

«Camarero (en el original «servidor»), ¿puede darme la cuenta? «

«Parece que acabo de colapsar el servidor».

La palabra servidor significa aquí dos cosas muy diferentes, que los humanos podemos desambiguar fácilmente mirando las palabras que la rodean. La autoatención permite a una red neuronal entender una palabra en el contexto de las palabras que la rodean.

Así, cuando un modelo procesa la palabra «servidor» en la primera frase, puede estar «atendiendo» a la palabra «cheque», lo que ayuda a desambiguar un servidor humano de uno metálico.

En la segunda frase, el modelo podría atender a la palabra «estrellado» para determinar que este «servidor» se refiere a una máquina.

La autoatención ayuda a las redes neuronales a desambiguar las palabras, hacer el etiquetado de partes del discurso, la resolución de entidades, aprender los roles semánticos y mucho más.

Así que, aquí estamos.: Los Transformers, explicados a 10.000 pies, se reducen a:

  1. Codificaciones de posición
  2. Atención
  3. Autoatención

Si quieres una explicación técnica más profunda, te recomiendo encarecidamente que le eches un vistazo a la entrada del blog de Jay Alammar El transformer ilustrado.

¿Qué pueden hacer los Transformers?

Uno de los modelos más populares basados en Transformer se llama BERT, abreviatura de «Bidirectional Encoder Representations from Transformers». Fue introducido por los investigadores de Google más o menos cuando me incorporé a la empresa, en 2018, y pronto se abrió paso en casi todos los proyectos de PNL -incluida la búsqueda de Google-.

BERT no sólo se refiere a la arquitectura de un modelo, sino a un modelo entrenado en sí mismo, que puede descargar y utilizar gratuitamente aquí. Fue entrenado por investigadores de Google en un corpus de texto masivo y se ha convertido en una especie de navaja de uso general para la PNL. Se puede ampliar para resolver un montón de tareas diferentes, como:

– resumen de textos
– respuesta a la pregunta
– clasificación
– resolución de entidades con nombre
– similitud de textos
– detección de mensajes ofensivos/profanos
– entender las consultas de los usuarios
– mucho más

BERT demostró que se podían crear muy buenos modelos lingüísticos entrenados con datos no etiquetados, como el texto extraído de Wikipedia y Reddit, y que estos grandes modelos «base» se podían 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 a la gente boquiabierta con su capacidad de generar texto realista. Meena, presentado por Google Research el año pasado, es un chatbot basado en Transformer (akhem, «agente conversacional») que puede mantener conversaciones convincentes sobre casi cualquier tema (este autor pasó una vez veinte minutos discutiendo con Meena sobre lo que significa ser humano).

Los Transformers también han causado sensación fuera de la PNL, al componer música, generar imágenes a partir de descripciones de texto y predecir la estructura de las proteínas.

¿Cómo puedo utilizar los Transformers?

Ahora que estás convencido del poder de los Transformers, quizás quieras saber cómo puedes empezar a utilizarlos en tu propia aplicación. No hay problema.

Puedes descargar modelos comunes basados en Transformer como BERT desde TensorFlowHub. Para un tutorial de código, echa un vistazo a este que escribí sobre la construcción de aplicaciones impulsadas por el lenguaje semántico.

Pero si quieres estar realmente a la moda y escribes en Python, te recomiendo encarecidamente la popular biblioteca «Transformers» mantenida por la empresa HuggingFace. La plataforma te permite entrenar y utilizar la mayoría de los modelos de PNL populares de hoy en día, como BERT, Roberta, T5, GPT-2, de una manera muy fácil para los desarrolladores.

Si quieres aprender más sobre la creación de aplicaciones con Transformers, ¡vuelve pronto! Pronto habrá más tutoriales.

Rate this post

Articulos relacionados


Traducción al español de un texto sobre aprendizaje, lenguaje, PNL, BERT, MT, PEMT.... By Sebastian Ruder

Traducción a Español de un articulo de Elvis explicando los resultados de BETO, un motor de traducción automática basado en BERT y entrenado con un corpus español igual de grande.

Interesantísimo artículo de Thamme Gowda, Zhao Zhang, Chris A Mattmann, y Jonathan May presentando herramientas útiles para la investigación con Traducción Automática: MTData, NLCodec y RTG. Modelo de traducción automática neural multilingüe capaz de traducir desde 500 idiomas de...