Transformadores BERT

Transformadores BERT

05 May 2020

Transfer Learning

En épocas recientes, en el mundo de la tecnología ha cobrado mucha relevancia el procesamiento de lenguaje natural y sus impresionantes aplicaciones –asistentes virtuales, por ejemplo- pero en realidad esto no es algo nuevo. De hecho, es un área de investigación con casi 50 años de historia. 

Sin embargo, En 2017 se suscitó un hecho que los expertos describen como un parteaguas para esta disciplina:  se logró aplicar una técnica conocida como transfer learning, la cual consiste en “pasarle” conocimiento a un modelo ya existente, lo cual dio pie a muchos avances en este campo, en particular a uno muy peculiar:  los transformadores. 

“El transformador es el primer modelo de transducción (conversión de secuencias de entrada en secuencias de salida) que se basa completamente en la auto atención para calcular las representaciones de su entrada y salida sin utilizar RNNs o convolución alineados con la secuencia”.

“La auto-atención, a veces llamada intra-atención, es un mecanismo de atención que relaciona diferentes posiciones de una sola secuencia para calcular una representación de la secuencia” 

Prateek Joshi

 

Los Transformadores

A diferencia de las redes neuronales recurrentes, los transformadores no requieren que las secuencias sean procesadas en orden. Es decir, no se necesita analizar el inicio antes que el final. Esa simple característica permite que sea más fácil implementar mecanismos de paralelización.  

Los transformadores vinieron a cambiar cómo procesamos el lenguaje natural. Anteriormente, la técnica más empleada era la llamada word2vec, donde, con una serie de reglas ya establecidas, convertíamos el texto en vectores. Esto trajo muchos avances ya que de esta forma podíamos aplicar álgebra vectorial para realizar operaciones y cumplirlas. 

Desafortunadamente, esta técnica trajo consigo otra serie de problemas. Por ejemplo, se daban situaciones donde, por cuestiones de género, algunas palabras podían estar más o menos alejadas de algunos adjetivos o sustantivos, estas situaciones acarreaban problemas con aplicaciones de traducción, por ejemplo. 

Transformador BERT

Ahora bien, uno de los grandes avances del uso de transformadores es la creación de modelos más poderosos. Entre éstos tenemos a BERT, un modelo de transformación bidireccional creado por Google. 

Este modelo ha sido tan bueno que Google lo ha incluido en 2 de sus productos estrella: el buscador y la aplicación de traducción. Cada vez que escribes una búsqueda en Google es probable que las sugerencias que ves sean producidas por BERT (aunque por el momento solo 1 de cada 10 búsquedas en idiomas diferentes al inglés son analizadas con este modelo). 

De igual forma, el contexto de la búsqueda es analizada por este mismo modelo. Éste analiza el posible contexto de uso de las palabras, lo cual da un sentido más profundo a la búsqueda y permite tener muchísimas menos ambigüedades. Para el usuario final, esto se traduce en mejores resultados de búsqueda. 

Procesamiento de lenguaje natural NLP

En un inicio, uno de los desafíos más grandes del NLP (procesamiento del lenguaje natural), era la escasez de datos para el entrenamiento (se usaban unos miles o cientos de miles de ejemplos etiquetados por humanos). Ahora existen los modelos de NLP basados en aprendizaje profundo, los cuales se entrenan con cantidades de ejemplos mucho mayores (millones o miles de millones de datos web sin anotaciones (preentrenamiento)). Este preentrenamiento luego puede ser ajustado con pequeños conjuntos de datos como la respuesta a preguntas ó análisis de sentimientos, lo que da como resultado grandes mejoras en la precisión en comparación con el entrenamiento de estos conjuntos desde cero.  

BERT es una red neuronal basada en la arquitectura transformer. El modelo se entrena con un corpus de 3.300 millones de palabras (800 millones de palabras de BooksCorpus y 2.500M de palabras de wikipedia).  Para que te hagas una idea, BERT es capaz de descubrir relaciones y secuencias dentro de la frase para una entidad, es donde el concepto transformer marca la diferencia. 

Vamos a tratar de explicar cómo funciona BERT al interno. Primeramente, el preentrenamiento ocurre con dos tareas que deben aprender en la red al mismo tiempo: el significado de los tokens y la estructura de sus entradas. Acepta un vector de hasta 512 tokens que puede dividirse en dos segmentos (a y b). 

El salto está en la relación y dirección de las palabras, en vez de izquierda a derecha o de derecha a izquierda, usan dos tareas no supervisadas. En la primera tarea enmascaran un porcentaje de tokens (un 15% normalmente) al azar de la oración/es y luego predicen (descodifican), en otras palabras. Lo que hace es cambiar el 15% de las palabras por la etiqueta “[MASK]” y, como analiza en ambos sentidos las oraciones, puede predecir cuáles son las palabras que mejor le anteceden y preceden al texto enmascarado.  

Vale la pena hacer un pequeño paréntesis, las palabras enmascaradas no siempre fueron reemplazadas por los tokens enmascarados porque el token nunca aparecería durante el ajuste fino. 

Entonces, los investigadores utilizaron la siguiente técnica: 

  • El 80% de las veces las palabras fueron reemplazadas por el token enmascarado
  • 10% del tiempo las palabras fueron reemplazadas por palabras aleatorias
  • 10% de las veces las palabras no se modificaron

A diferencia de los descodificadores automáticos, en vez de reconstruir toda la entrada, solo lo hacen sobre las palabras enmascaradas. Es decir, a las oraciones con tokens enmascarados y se le pide que produzcan el ID de vocabulario de la palabra que falta. Es «similar» a los saltos de n-gramas de Word2Vec, exceptuando que este último nunca se representa en una oración, solo la palabra central de la ventana donde se elige la palabra objetivo. 

La segunda tarea se basa en la predicción de la siguiente oración (NSP), que se basa en la comprensión de la relación entre dos oraciones. Esto es muy importante para la parte de QA (Question Answering) y NLI (Natural Language Inference) ya que el modelo final consigue entre un 97-98% de precisión en la predicción de la siguiente oración. 

 Aquí el modelo BERT se presenta con dos oraciones codificadas con incrustaciones de segmento A y B como parte de una entrada. Otras veces, el modelo se presenta con dos oraciones consecutivas del corpus. A veces una segunda oración no es un secuenciador, y es escogido al azar del conjunto de datos. Esta tarea de preentrenamiento está destinada a mejorar el rendimiento del componente de doble segmento del modelo. 

En todas las tareas de preentrenamiento, las entradas están representadas por un vector que contiene una inserción de token, segmento y posición. 

  • Las incrustaciones de tokens ayudan a transformar palabras en representaciones vectoriales.
  • Las incrustaciones de segmentos ayudan a comprender la similitud semántica de diferentes partes del texto.
  • Las incrustaciones de posición significan que palabras idénticas en diferentes posiciones no tendrán la misma representación de salida. 

Además de las capas de salida, se usan las mismas arquitecturas en el pre-entrenamiento como en el ajuste. 

En resumen, esta es la forma en la cual trabaja esta nueva arquitectura de red neural. Con avances de este tipo se producirán mejoras sustanciales en aplicaciones como los chatbots, que hoy día carecen de mecanismos eficientes de contextualización y entendimiento. 

Postdata. BERT es una arquitectura open source por lo que podemos usarla de forma libre. Adicionalmente, hay esfuerzos de preentrenamiento que ya nos brindan los pesos del modelo en varios idiomas. 

Christian Ramirez

R&D Chief Scientist
Perfil LinkedIn

Tipo de Blog