
El procesamiento del lenguaje natural (PLN) ha sido testigo de avances significativos en los últimos años, gracias a la arquitectura transformador. Estos avances no solo han mejorado la habilidad de las máquinas para comprender y generar lenguaje humano, sino que también han redefinido el panorama de numerosas aplicaciones, desde motores de búsqueda hasta IA conversacional.
Para comprender a fondo la importancia de los transformadores, debemos revisar las bases que asentaron los cimientos de esta arquitectura revolucionaria.
Técnicas Pioneras en PLN: Los Cimientos Previos a los Transformadores
Embebidos De Palabras: De One-Hot a Word2Vec
En los enfoques tradicionales de PLN, la representación de palabras era a menudo literal y carecía de cualquier forma de comprensión semántica o sintáctica. La codificación one-hot es un ejemplo clave de esta limitación.
La codificación one-hot es un proceso por el cual las variables categóricas se convierten en una representación vectorial binaria donde solo un bit está “activo” (establecido en 1) mientras que todos los demás están “inactivos” (establecidos en 0). En el contexto de PLN, cada palabra se representa mediante vectores one-hot donde cada vector es del tamaño del vocabulario, y cada palabra está representada por un vector con todos 0s y un 1 en el índice que corresponde a esa palabra en la lista de vocabulario.
Ejemplo de Codificación One-Hot
Supongamos que tenemos un pequeño vocabulario con solo cinco palabras: (“rey”, “reina”, “hombre”, “mujer”, “niño”). Los vectores de codificación one-hot para cada palabra serían:
- “rey” -> (1, 0, 0, 0, 0)
- “reina” -> (0, 1, 0, 0, 0)
- “hombre” -> (0, 0, 1, 0, 0)
- “mujer” -> (0, 0, 0, 1, 0)
- “niño” -> (0, 0, 0, 0, 1)
Representación Matemática
Si denotamos V como el tamaño de nuestro vocabulario y wi como la representación vectorial one-hot de la i-ésima palabra en el vocabulario, la representación matemática de wi sería:
(0, 0, …, 1, …, 0), donde la posición i-ésima es 1 y todas las demás posiciones son 0.
El principal inconveniente de la codificación one-hot es que trata a cada palabra como una entidad aislada, sin relación con otras palabras. Esto resulta en vectores dispersos y de alta dimensión que no capturan ninguna información semántica o sintáctica sobre las palabras.
La introducción de embebidos de palabras, más notablemente Word2Vec, fue un momento crucial en PLN. Desarrollado por un equipo de Google liderado por Tomas Mikolov en 2013, Word2Vec representaba palabras en un espacio vectorial denso, capturando relaciones semánticas y sintácticas basadas en su contexto dentro de grandes corpus de texto.
A diferencia de la codificación one-hot, Word2Vec produce vectores densos, típicamente con cientos de dimensiones. Palabras que aparecen en contextos similares, como “rey” y “reina”, tendrán representaciones vectoriales que están más cerca la una de la otra en el espacio vectorial.
Como ilustración, supongamos que hemos entrenado un modelo Word2Vec y ahora representamos palabras en un espacio hipotético de 3 dimensiones. Los embebidos (que por lo general son más de 3D pero se reducen aquí por simplicidad) podrían verse así:
- “rey” -> (0.2, 0.1, 0.9)
- “reina” -> (0.21, 0.13, 0.85)
- “hombre” -> (0.4, 0.3, 0.2)
- “mujer” -> (0.41, 0.33, 0.27)
- “niño” -> (0.5, 0.5, 0.1)
Mientras que estos números son ficticios, ilustran cómo palabras similares tienen vectores similares.
Relaciones Semánticas
Word2Vec incluso puede capturar relaciones complejas, como analogías. Por ejemplo, la famosa relación capturada por los embebidos de Word2Vec es:
vector(“rey”) – vector(“hombre”) + vector(“mujer”) ≈ vector(“reina”)
Esto es posible porque Word2Vec ajusta los vectores de palabras durante el entrenamiento para que las palabras que comparten contextos comunes en el corpus estén situadas cerca en el espacio vectorial.
Word2Vec utiliza dos arquitecturas principales para producir una representación distribuida de palabras: bolsa de palabras continua (CBOW) y Skip-Gram. CBOW predice una palabra objetivo a partir de sus palabras de contexto circundantes, mientras que Skip-Gram hace lo contrario, prediciendo palabras de contexto a partir de una palabra objetivo. Esto permitió que las máquinas comenzaran a entender el uso de palabras y su significado de una manera más matizada.
Modelado de Secuencias: RNN y LSTM
A medida que avanzaba el campo, el enfoque se desplazó hacia la comprensión de secuencias de texto, crucial para tareas como traducción automática, resumen de textos y análisis de sentimientos. Las redes neuronales recurrentes (RNN) se convirtieron en la piedra angular de estas aplicaciones debido a su capacidad para manejar datos secuenciales al mantener una especie de memoria.
Sin embargo, las RNN no estaban exentas de limitaciones. Luchaban con dependencias a largo plazo debido al problema del gradiente desvaneciente, donde la información se pierde a lo largo de secuencias largas, haciendo desafiante aprender correlaciones entre eventos distantes.
Las redes de memoria de corto y largo plazo (LSTM), introducidas por Sepp Hochreiter y Jürgen Schmidhuber en 1997, abordaron este problema con una arquitectura más sofisticada. Las LSTMs tienen compuertas que controlan el flujo de información: la compuerta de entrada, la compuerta de olvido y la compuerta de salida. Estas compuertas determinan qué información se almacena, se actualiza o se descarta, permitiendo a la red preservar dependencias a largo plazo y mejorando significativamente el rendimiento en una amplia gama de tareas de PLN.
La Arquitectura del Transformador
El paisaje del PLN experimentó una transformación dramática con la introducción del modelo transformador en el innovador artículo «La Atención es Todo lo Que Necesitas» de Vaswani y otros en 2017. La arquitectura transformadora se aparta del procesamiento secuencial de las RNN y las LSTMs y, en cambio, utiliza un mecanismo llamado ‘auto-atención’ para ponderar la influencia de diferentes partes de los datos de entrada.
La idea central del transformador es que puede procesar todos los datos de entrada a la vez, en lugar de secuencialmente. Esto permite una mayor paralelización y, como resultado, aumentos significativos en la velocidad de entrenamiento. El mecanismo de auto-atención permite que el modelo se enfoque en diferentes partes del texto a medida que lo procesa, lo que es crucial para comprender el contexto y las relaciones entre las palabras, sin importar su posición en el texto.
Codificador y Decodificador en Transformadores:
En el modelo Transformador original, como se describe en el artículo «La Atención es Todo lo Que Necesitas» de Vaswani y otros, la arquitectura se divide en dos partes principales: el codificador y el decodificador. Ambas partes están compuestas por capas que tienen la misma estructura general pero sirven para diferentes propósitos.
Codificador:
El rol del codificador es procesar los datos de entrada y crear una representación que capture las relaciones entre los elementos (como palabras en una oración). Esta parte del transformador no genera contenido nuevo; simplemente transforma la entrada en un estado que el decodificador puede utilizar.
La funcionalidad de cada capa del codificador incluye mecanismos de auto-atención y redes neuronales feed-forward. El mecanismo de auto-atención permite que cada posición en el codificador asista a todas las posiciones en la capa anterior del codificador, aprendiendo así el contexto alrededor de cada palabra.
Embebidos Contextuales: La salida del codificador es una serie de vectores que representan la secuencia de entrada en un espacio de alta dimensión. A menudo, a estos vectores se les llama embebidos contextuales porque codifican no solo las palabras individuales sino también su contexto dentro de la oración.
Decodificador:
El rol del decodificador es generar datos de salida secuencialmente, una parte a la vez, basado en la entrada que recibe del codificador y lo que ha generado hasta el momento. Está diseñado para tareas como generación de texto, donde el orden de generación es crucial.
Las capas del decodificador también contienen mecanismos de auto-atención, pero están enmascarados para prevenir que las posiciones atiendan a posiciones subsecuentes. Esto asegura que la predicción para una posición en particular solo puede depender de salidas conocidas en posiciones anteriores a ella. Además, las capas del decodificador incluyen un segundo mecanismo de atención que atiende a la salida del codificador, integrando el contexto de la entrada en el proceso de generación.
Capacidades de Generación Secuencial: Esto se refiere a la habilidad del decodificador de generar una secuencia un elemento a la vez, construyendo sobre lo que ya ha producido. Por ejemplo, al generar texto, el decodificador predice la siguiente palabra basándose en el contexto proporcionado por el codificador y la secuencia de palabras que ya ha generado.
Cada una de estas subcapas dentro del codificador y decodificador es crucial para la capacidad del modelo de manejar tareas complejas de PLN. El mecanismo de atención de cabezales múltiples, en particular, permite al modelo enfocarse selectivamente en diferentes partes de la secuencia, proporcionando una comprensión rica del contexto.
Modelos Populares que Utilizan Transformadores
BERT (Representaciones Bidireccionales del Codificador desde Transformadores):
Introducido por Google en 2018, BERT revolucionó la forma en que se integra la información contextual en las representaciones de lenguaje. Al pre-entrenar en un gran corpus de texto con un modelo de lenguaje enmascarado y predicción de próxima oración, BERT captura contextos bidireccionales ricos y ha logrado resultados del estado del arte en una amplia gama de tareas de PLN.
T5 (Transformador de Transferencia de Texto a Texto):
Introducido por Google en 2020, T5 reformula todas las tareas de PLN como un problema de texto a texto, utilizando un formato unificado basado en texto. Este enfoque simplifica el proceso de aplicar el modelo a una variedad de tareas, incluyendo traducción, resumen y respuesta a preguntas.
GPT (Transformador Pre-entrenado Generativo):
Desarrollado por OpenAI, la línea de modelos GPT comenzó con GPT-1 y alcanzó GPT-4 en 2023. Estos modelos son pre-entrenados utilizando aprendizaje no supervisado en enormes cantidades de datos de texto y afinados para varias tareas. Su habilidad para generar texto coherente y contextualmente relevante los ha hecho altamente influyentes tanto en aplicaciones académicas como comerciales de IA.
Comparación Detallada de BERT, T5 y GPT
A continuación, se presenta una comparación más profunda de los modelos T5, BERT y GPT en varias dimensiones:
1. Tokenización y Vocabulario
- BERT: Utiliza tokenización WordPiece con un tamaño de vocabulario de alrededor de 30,000 tokens.
- GPT: Emplea codificación de Pares de Bytes (BPE) con un tamaño de vocabulario grande (por ejemplo, GPT-3 tiene un tamaño de vocabulario de 175,000).
- T5: Utiliza tokenización SentencePiece que trata el texto como sin procesar y no requiere palabras pre-segmentadas.
2. Objetivos de Pre-entrenamiento
- BERT: Modelado de Lenguaje Enmascarado (MLM) y Predicción de Próxima Oración (NSP).
- GPT: Modelado de Lenguaje Causal (CLM), donde cada token predice el próximo token en la secuencia.
- T5: Utiliza un objetivo de desruido donde se reemplazan abanicos aleatorios de texto con un token centinela y el modelo aprende a reconstruir el texto original.
3. Representación de Entrada
- BERT: Los Embebidos de Token, Segmento y Posición se combinan para representar la entrada.
- GPT: Los Embebidos de Token y Posición se combinan (sin embebidos de segmento ya que no está diseñado para tareas de pares de oraciones).
- T5: Solo Embebidos de Token con codificaciones posicionales relativas añadidas durante las operaciones de atención.
4. Mecanismo de Atención
- BERT: Utiliza codificaciones posicionales absolutas y permite que cada token asista a todos los tokens a la izquierda y a la derecha (atención bidireccional).
- GPT: También utiliza codificaciones posicionales absolutas pero restringe la atención a tokens previos solamente (atención unidireccional).
- T5: Implementa una variante del transformador que utiliza sesgos de posición relativa en lugar de embebidos posicionales.
5. Arquitectura del Modelo
- BERT: Arquitectura solo de codificador con múltiples capas de bloques transformadores.
- GPT: Arquitectura solo de decodificador, también con múltiples capas pero diseñada para tareas generativas.
- T5: Arquitectura de codificador-decodificador, donde tanto el codificador como el decodificador están compuestos por capas transformadoras.
6. Enfoque de Ajuste Fino
- BERT: Adapta los estados ocultos finales del modelo pre-entrenado para tareas descendentes con capas de salida adicionales según sea necesario.
- GPT: Añade una capa lineal encima del transformador y ajusta fino
LEE MÁS ARTÍCULOS SOBRE: Noticias de IA.
LEE LA ENTRADA ANTERIOR: MixerBox Prompt Pro.