Bert (Bidirectional Encoder Representations from Transformers) es un modelo de procesamiento del lenguaje natural, descrito por los investigadores de Google AI Language en un documento, que causó revuelo en la comunidad del aprendizaje automático al presentar resultados pioneros en 11 tareas diferentes de procesamiento del lenguaje natural.
Estas tareas incluyen el análisis de sentimientos, el reconocimiento de entidades con nombre, la vinculación textual (es decir, la predicción de la siguiente frase), el etiquetado de roles semánticos, la clasificación de textos y la resolución de correferencias. Además, se obtuvieron excelentes resultados en el análisis de palabras con múltiples significados, conocidas como palabras polisémicas, gracias a una comprensión más profunda del contexto de referencia.
Índice de temas
Bert, lo que es
En muchos artículos se suele describir a Bert como un modelo de aprendizaje profundo preentrenado, sin embargo, yo lo describiría más correctamente como un marco, ya que proporciona a los profesionales del aprendizaje automático una base para construir sus propias versiones de Bert mediante las cuales se puede cumplir una amplia gama de tareas.
Bert está preentrenado originalmente en toda la Wikipedia en inglés y en el Corpus Brown. y se ha perfeccionado para tareas de procesamiento del lenguaje natural. Por lo tanto, no se trata de un nuevo cambio o mejora de un algoritmo, sino de una capa fundamental del proceso, que pretende ayudar a comprender y aclarar los matices lingüísticos, perfeccionándose continuamente y adaptándose al contexto específico, para un aumento continuo de la precisión.
Bert, la arquitectura
Bert, Bi-Directional Encoder Representations Transformers, se basa en la arquitectura del transformador (lanzada por Google en 2017). El transformador utiliza una red de codificadores y descodificadores, pero como Bert es un modelo de preentrenamiento, sólo se utiliza una red multicapa de codificadores, cuyo objetivo es aprender una representación del texto de entrada.
El transformador se basa en el famoso módulo de atención multicapa, que ha tenido un éxito considerable tanto en la visión por ordenador como en tareas lingüísticas.
En el documento se presentan dos modelos:
Bert-base – 12 capas (bloques transformadores) y 110 millones de parámetros;
Bert-large – 24 capas y 340 millones de parámetros.
En resumen, el modelo de Bert capta cada palabra teniendo su propia representación, más apropiadamente llamada incrustación. Cada capa realiza un cálculo de atención sobre la incrustación de las palabras de la capa anterior, y luego crea una nueva incrustación intermedia, con el mismo tamaño que las incrustaciones producidas por las capas anteriores. En la figura, extraída del artículo oficial, podemos ver que E1 es la representación del token considerado, T1 es la salida final y Trm son las representaciones intermedias del mismo token. Por ejemplo, en un modelo Bert de 12 niveles, un token tendrá 12 representaciones intermedias.
Modelización del lenguaje enmascarado y predicción de la frase siguiente
El rendimiento puntero de Bert se basa en dos puntos clave: en primer lugar, las nuevas estrategias de preentrenamiento denominadas Modelo de lenguaje enmascarado (MLM) y Predicción de frase siguiente (NSP), y en segundo lugar, el uso de grandes cantidades de datos y potencia de cálculo para la fase de entrenamiento.
Modelo de lenguaje enmascarado: la arquitectura de Bert analiza frases con algunas palabras enmascaradas al azar (de ahí el nombre MLM) e intenta predecir correctamente la palabra “oculta”.
Durante el entrenamiento bidireccional, que pasa por la arquitectura transformadora de Bert, el propósito del MLM es evitar que las palabras objetivo establezcan conexiones incorrectas con otras palabras de forma inadvertida, ya que todas se examinan al mismo tiempo y en su propio contexto. Este proceso, por tanto, pretende evitar la creación de una especie de bucle infinito que podría implicar posibles errores en el aprendizaje automático del lenguaje natural, alterando el significado de la palabra.
Predicción de la siguiente frase: una de las principales innovaciones de Bert es poder predecir lo que un usuario dirá después de una frase determinada. Se analiza la frase y, a continuación, se determina un nivel de confianza para predecir si una segunda frase “encaja” lógicamente como frase siguiente. Esta predicción puede ser positiva, negativa o neutra.
En el 50% de los pares de frases analizados, la segunda cadena representa realmente la frase siguiente del texto, en el resto es una frase elegida al azar dentro del documento. De este modo, el sistema está entrenado para comprender si la segunda frase corresponde a la frase inmediatamente siguiente en el cuerpo del texto analizado o si se inserta al azar.
Esta función, en el modelo original de Bert, se consideró poco fiable y se crearon otras ofertas de código abierto para solucionar este punto débil (por ejemplo, Albert de Google y Toyota).
Por qué Bert revoluciona el mundo de la PNL
Hay varios elementos que hacen que Bert sea tan innovador para la búsqueda de documentos y muchas otras tareas, algunas de sus posibles funciones se describen en el documento oficial Bert: Pre-training of Deep Bidirectional Transformers for Language Understanding.
Sin embargo, la comprensión del lenguaje sigue siendo un reto abierto, dadas las muchas ambigüedades del lenguaje, como ya se describió en el artículo Procesamiento del lenguaje natural, qué es, cómo funciona y aplicaciones. Google Bert en este sentido lleva la investigación aún más lejos, de hecho, lo que para un algoritmo suele ser un matiz insignificante, con Bert adquiere un significado mucho más importante, comparable al proceso que la mente humana lleva a cabo al leer o escuchar un término determinado. A continuación se exponen los puntos clave que describen cómo Bert supone una desviación sustancial respecto a los enfoques anteriores de la PNL.
Preentrenamiento en texto sin etiquetar
En lo que respecta a la estructura de Bert, se trata de la primera arquitectura en el Procesamiento del Lenguaje Natural que se preentrena mediante aprendizaje no supervisado sobre texto puro no estructurado (unos 2.500 millones de palabras). Con este tipo de arquitectura, solo se requiere una fase de puesta a punto para perfeccionar tareas específicas sobre el lenguaje natural.
Modelos bidireccionales y comprensión del contexto
La comprensión del contexto por parte de un algoritmo se deriva de su capacidad para observar todas las palabras de una frase al mismo tiempo y comprender así cómo cada palabra individual afecta a todas las demás. Con esta metodología, el papel de una palabra determinada dentro de una frase puede cambiar literalmente a medida que esta se desarrolla.
Los modelos anteriores entrenados en el lenguaje natural estaban diseñados de forma unidireccional, es decir, el significado de una palabra en una ventana de contexto solo podía moverse en una dirección, de izquierda a derecha o de derecha a izquierda, pero nunca al mismo tiempo. En consecuencia, las palabras aún no observadas en el contexto no podían tenerse en cuenta en una frase, pero sí podían cambiar el significado de otras palabras.
Bert, en cambio, una vez seleccionada una palabra objetivo, es capaz de tener en cuenta todas las demás palabras de esa misma frase al mismo tiempo, es decir, de forma bidireccional. Este procedimiento puede compararse con el modo de razonamiento de la mente humana, según el cual se observa todo el contexto de una frase y no sólo una parte.
Concepto de atención y utilización de una arquitectura transformadora
En Bert, el mecanismo de atención permite que cada token de la secuencia de entrada se conecte al mismo tiempo con cualquier otro token.
En la siguiente ilustración, se muestra un ejemplo del mecanismo de atención, la palabra “eso” atrae a todos los demás tokens y parece crear una mayor conexión con “calle” y “animal”.
Este mecanismo de atención, procede de un trabajo titulado ‘Attention is all you need’, publicado un año antes del trabajo de investigación de Bert.
Básicamente, Bert es capaz de identificar las partes importantes de un texto, distinguiéndolas de las superfluas. La atención también ayuda a resolver las ambigüedades y la polisemia utilizando, con respecto a la palabra objetivo, un peso probabilístico basado en todas las demás palabras de la misma frase. Se asigna una puntuación de atención ponderada a estas palabras para indicar cuánto peso añade cada una de ellas al contexto de la palabra objetivo como representación del “significado”.
Google, realizando la siguiente búsqueda, muestra un ejemplo:
“brazilian traveler to usa need a visa”
La palabra ‘to’ y su relación con las demás palabras son importantes para comprender el significado de la frase. Antes de utilizar el modelo Bert, Google no comprendía la importancia de esta conexión y devolvía, erróneamente, resultados sobre ciudadanos estadounidenses que viajaban a Brasil. Con Bert, en cambio, Google es capaz de captar este matiz y entender que, una palabra muy común en la lengua inglesa, como “to”, puede ser en realidad muy influyente, dando un resultado mucho más relevante para la consulta en cuestión.
Contribución al mundo del código abierto
Además de ser el mayor cambio en el sistema de búsqueda de Google en los últimos cinco años (o nunca), Bert es probablemente también el mayor paso adelante en la creciente comprensión contextual del lenguaje natural por parte de las máquinas.
Bert ha supuesto un valor añadido para la comprensión del lenguaje natural, no solo para Google, sino también para un sinfín de investigadores, tanto del mundo académico como de la industria, ya que han empezado a utilizar Bert para muchas aplicaciones comerciales. En solo 12 meses tras su publicación, el artículo original sobre Bert fue citado en otros 1997 artículos científicos, que introdujeron varias ampliaciones del modelo, yendo mucho más allá de los límites de la búsqueda de Google.
Desde la publicación, grandes actores del mundo de la inteligencia artificial han contribuido a ampliar Bert, lanzando modelos aún más precisos al mundo del código abierto: Facebook con RoBERTa, Microsoft con MT-DNN, BERT-mtl de IBM, Google y Toyota con ALBERT, un modelo más compacto como DistilBert, etc.
Entre 2018 y 2019, hubo varias publicaciones de modelos, diferentes al de Bert, utilizando cada vez más datos y parámetros, estimulando así una competición para alcanzar una nueva etapa del estado del arte en PNL, con la necesidad de más y más recursos para el entrenamiento continuo de los modelos, convirtiéndose así, en una carrera insostenible.
Algunos ejemplos de esta competición en términos de precisión son, el último modelo de Nvidia con 8.300 millones de parámetros, es 24 veces mayor que Bert-Large y 5 veces mayor que GPT-2, o RoBERTa, que fue entrenado sobre 160 GB de texto en comparación con los 16 GB de Bert. Aunque estos modelos son efectivamente más precisos, no es seguro que añadan valor computacional y económico y sean realmente eficaces para las aplicaciones de producción.
Un argumento diferente puede esgrimirse en favor de Albert, lanzado en septiembre de 2019, con un trabajo conjunto entre Google AI y el equipo de investigación de Toyota. Albert se considera el sucesor natural de Bert, ya que consigue una serie de resultados punteros en términos de eficiencia y coste computacional en diversas tareas de PNL. Large Albert es 18 veces más pequeño en términos de parámetros que Bert-Large y también es más fiable en la tarea de predicción de la siguiente frase.
Conclusiones
Bert, como ya se ha repetido varias veces, ha representado sin duda un gran avance en el campo del procesamiento del lenguaje natural. El hecho de que sea fácilmente accesible gracias a diferentes marcos de trabajo y bibliotecas (tensorflow, pyTorch, Keras, etc.), en diferentes lenguajes de programación (python, java, C++, etc.) y permita un rápido ajuste fino, nos llevará hoy, pero también en un futuro próximo, a encontrarlo en una amplia gama de aplicaciones prácticas. Para quienes deseen profundizar en los detalles técnicos y de implementación, recomiendo encarecidamente la lectura del artículo oficial completo y de los artículos relacionados a los que se hace referencia. Otras fuentes útiles son el código fuente y las plantillas de Bert, que cubren 103 idiomas y han sido generosamente liberadas como código abierto por el equipo de investigación.
Escrito por Giulio Altobello
Prohibida su reproducción total o parcial.