BERT, el modelo de Google

Rubén Rodríguez Abril

Aunque a septiembre de 2023 son los modelos GPT de OpenAI los que más atención mediática han obtenido, sin embargo no está demás recordar que la arquitectura de transformers surgió en el año 2017 en el marco de los grupos de investigación de Google Brain y Google Research.

BERT

Los próximos artículos los dedicaremos, precisamente, a los modelos de Google que siguieron al seminal trabajo Attention Is All You Need, que introdujo por primera vez esta arquitectura. Comenzaremos por BERT (Bidirectional Encoder Representations from Transformers), un transformer de 2018 que aun hoy merece la pena ser examinado, si quiera por los numerosos estudios de análisis que le siguieron.

A diferencia de los transformers de la serie GPT, que son de naturaleza generativa, la misión de BERT no es la de generar texto, sino la de realizar otras tareas lingüísticas como la clasificación de textos, localizar la respuesta a una pregunta planteada en un determinado texto, o completar un párrafo eligiendo entre varias respuestas posibles.

La principal novedad que aporta BERT es la de su sistema de preentrenamiento: En GPT éste es unidireccional: consiste en la predicción del siguiente token a partir de la cadena de salida producida hasta entonces (modelo autorregresivo). En la predicción del nuevo token sólo influye, pues, el texto situado a su izquierda (unidireccionalidad). Por el contrio, en BERT el modelo recibe como entrada un texto completo, algunos de cuyos tokens han sido enmascarados (preguntas Cloze). Para adivinar dichos tokens el modelo dispone de contexto tanto a izquierda como a derecha. Por ello, se dice que la representación (matriz de contexto final) creada por el codificador es bidireccional.

Arquitectura de BERT

BERT tiene la misma estructura que un codificador del transformer original de 2017. Se compone, pues, de las siguientes secciones:

Sección de entrada

En la sección de entrada el texto de entrada es tokenizado (dividido) en pedazos, utilizando el algoritmo WordPiece, desarrollado por Google para sus sistemas de reconocimiento de voz y que divide al texto en los lexemas más comunes del idioma en cuestión (por ejemplo #me #gust #a #com #er). Cada lexema/token es sometido a una triple codificación, de contenido (embedding), de posición y de segmento.

La primera es parecida a un diccionario, que transforma lexemas, de acuerdo con su contenido, en vectores unitarios de un hiperespacio de 512 dimensiones. La segunda incorpora información relativa a la posición del token, de tal manera que cuanto más cercanos estén en un texto, mayor será el producto escalar de sus vectores en el citado hiperespacio. Por último, la tercera codificación divide el texto en dos a partir del token de separación [SEP]. Todo lo que precede a éste, es marcado como perteneciente al segmento A. Lo que le sucede pertenece al segmento B. Cada codificación se realiza por una matriz, que transforma al token en un vector dentro de un hiperespacio de 512 dimensiones. Los tres vectores resultantes se suman. Y finalmente todos los vectores se superponen en una única matriz, denominada matriz de contexto o matriz de entrada.

Sección de módulos

Arquitectura de codificador del modelo BERT

En la sección de módulos el flujo de información, representado por la matriz de contexto, atraviesa seis módulos idénticos compuestos de dos subsecciones, que son las matrices de atención y la mini-red orientada hacia adelante.

Como ya expusimos en el artículo dedicado a los transformers, las matrices de atención ponen en conexión las diferentes partes (tokens) del mensaje de entrada, construyendo nuevos vectores a partir de los anteriores. En la sección de entrada, los vectores de la matriz de contexto codifican lexemas. Sin embargo, conforme la información va atravesando los módulos, los nuevos vectores de la matriz de contexto tienden a codificar información de un tipo cada vez más abstracto (sintagmas, párrafos e incluso los sentimientos o el estilo de escritura del autor del texto). 

La mini-red orientada hacia adelante está compuesta de dos capas densamente conectadas en medio de las cuales se sitúa una capa de unidades ReLU. La dimensión de tres estas capas de de 2048 unidades. Esta mini-red transforma vectores cargados de información semántica, y como consecuencia de ello, es capaz de realizar silogismos.

Después de cada subsección, una capa de normalización garantiza que los vectores vuelvan a tener una dimensión de uno, y que puedan seguir siendo entendidos como puntos en una superficie de una hiperesfera de 512 dimensiones y radio unidad.

 

Por último, conexiones residuales garantizan que la información (de bajo nivel) originada en los módulos inferiores o incluso en la sección de entrada puede llegar hasta la salida sin ser transformada.

Matriz de salida

Dado que BERT es un codificador, no hay ningún régimen lineal después de la sección de módulos ni ninguna capa softmax de salida. El modelo no predice cuál será el siguiente token. Su salida no es una distribución de probabilidad sobre un vocabulario sino una matriz de contexto transformada, con las mismas dimensiones que la matriz de entrada. De matriz a matriz.

Entrenamiento de BERT

Al igual que sucede en el caso de la serie GPT, en BERT el entrenamiento se estructura en dos fases: La primera de ellas, el preentrenamiento (pre-training), es no supervisada, mientras que la segunda, el afinamiento (fine-tuning), sí lo es.

Pre-entrenamiento

Para pre-entrenar a la red se utilizan dos métodos:

a) Masked LM. Varios de los tokens del texto de entrada son enmascarados (ocultados mediante el token específico [MASK]), y la red debe adivinar su valor, completando con ello el texto. Los tokens enmascarados de la matriz de salida son introducidos, uno a uno, en una nueva sección dotada de un régimen lineal y una función softmax, que es la que se encarga de elegir el token concreto de entre uno de los miles que integran el vocabulario. La función de pérdida sólo se computa para los tokens enmascarados.

b) Next Sentence Prediction. Superponemos dos frases de un texto y preguntamos a la red si las dos frases de este texto son consecutivas. El primer token de la matriz de salida, denominado [CLS], es introducido en un régimen lineal dotado de función softmax, que se encarga de dar una respuesta binaria.

Afinamiento

Para afinar a BERT, a su arquitectura se le agrega una capa lineal, dotada de una función softmax, cuyos parámetros deben ser inicializados. A partir de aquí, el afinamiento es diferente dependiendo de la tarea de que se trate Analizamos cuatro supuestos diferentes:

a) Clasificación textual. La labor del modelo es asignar el texto a una categoría determinada. Para ello, el primer token/vector de la matriz de salida, [CLS], es introducido en un régimen lineal (matriz) acompañado de una función softmax.

b) SQuAD (Standford Question Answering Dataset) v1.0. Al modelo se le plantea una cuestión y debe localizar la respuesta en el texto. O, más exactamente, debe de señalar el inicio y el final del segmento del texto que contiene la respuesta. Para ello, a partir del token [CLS] se calculan dos vectores, inicio (S) y final (E). Para calcular, por ejemplo, la posibilidad de que la respuesta comience en una cierta posición, se realiza el producto escalar del vector S con cada uno de los tokens de la matriz de salida, y el resultado se hace pasar a través de una función softmax.

softmax(S×T_{i})

El resultado es la probabilidad que cada token tiene de ser el inicio del segmento en cuestión.

c) SQuAD v2.0. Similar al anterior, pero permitiendo al modelo señalar que el texto en cuestión no contiene ninguna respuesta a la pregunta.

d) SWAG (Situations With Adversarial Generations). Al modelo se le proporcionan cuatro respuestas diferentes y debe elegir una de ellas.

Base de datos

Para el entrenamiento de BERT fue utilizada Wikipedia y la base de datos de Books Corpus, que en total sumaban 3.300 millones de palabras y suponen 16 GB en datos. El entrenamiento se realizó sobre 8 GPUs V100 de NVIDIA.

RoBERTa

En Julio de 2019, un grupo de investigadores vinculados a la Universidad de Washington y a Fadebook AI propusieron una mejora del modelo BERT, a la que llamaron RoBERTa (A Robustely Optimized BERT Pretraining Approach).

La arquitectura de RoBERTa es similar a la de BERT, con la única diferencia que la codificación decontenido se hace por pares de bytes y no por lexemas, mientras que desaparece la codificación de segmento.

Las principales diferencias con BERT tienen lugar en el ámbito del entrenamiento. RoBERTa fue entrenada con 160 GB de datos (diez veces más que en el caso de BERT) en 1024 GPUS V100 de NVIDIA, durante un tiempo 4-5 veces superior al de BERT. Por lo demás, se eliminó el preentrenamiento NSP (Next Sentence Prediction).

Uso de BERT

El transformer BERT fue galardonado con el premio al mejor trabajo (Best Long Paper Award) de 2019 por la sección norteamericana de la Association for Computational Linguistics. Además, fue utilizado por Google para sus búsquedas en lengua inglesa y en otros idiomas, constituyendo uno de los primeros ejemplos de combinación de modelos de aprendizaje profundo con los algoritmos de búsqueda.

TALLER

ÚLTIMOS ARTÍCULOS

Deep Learning

CLIP

Deep Learning

Mistral AI