Transformador (modelo de aprendizaje automático)

De Wikipedia, la enciclopedia libre

Un transformador (en inglés: transformer) es un modelo de aprendizaje profundo que usa el mecanismo de autoatención, en el que se le da un peso diferente a cada parte del input. Se usa en especial en el campo del procesamiento automático del lenguaje (PAL)[1]​ y visión artificial.[2]

Antecedentes[editar]

Arquitectura[editar]

Arquitectura del modelo transformador

Entrada[editar]

La entrada, un toquenizador codificador de pares de bytes segmenta la entrada de texto o imágenes en tokens. Un word embedding convierte cada token en un vector. Luego, se agrega información posicional al word embedding.

Arquitectura Codificador-Decodificador[editar]

Como en los modelos seq2seq, el modelo original de transformador usaba una arquitectura de codificador-decodificador. El codificador consiste de capas de codificación que procesan la entrada de manera iterativa una capa tras otra mientras que el decodificador consiste de capas que hacen lo mismo con la salida del codificador.

La función de cada capa de encodificador es generar códigos que tienen información sobre qué partes de la entrada son relevantes entre sí. Pasa sus codificaciones a la nueva capa de codificador como entradas. Cada capa de decodificación hace lo contrario y toma todas las codificaciones y usa su información contextual incorporada para generar una oración de resultado.[3]​ Cada capa de codificación y decodificación usa un mecanismo de atención para lograrlo.

Para cada parte de la entrada, la atención mide la relevancia de cada otra parte y extrae de ellas para producir la salida.[4]

Atención escalada del producto escalar[editar]

El cálculo de atención para todos los tokens puede expresarse como un gran cálculo de matriz con la función softmax, útil para entrenamiento por las optimización de operaciones de matrices que permiten cálculos rápidos. Las matrices , y se definen como las matrices donde las filas son vectores , y , respectivamente.

Atención multicabezal[editar]

Codificador[editar]

Cada codificador consiste de tres componentes principales: un mecanismo de autoatención, un mecanismo de atención sobre los códigos y una red neuronal prealimentada. El decodificador funciona de manera similar pero hay un mecanismo de atención adicional insertado que lleva atención de los códigos generados por los codificadores. Este mecanismo también es conocido como atención codificador-decodificador.

La codificación posicional se define como función de tipo , donde es una integral par positiva, por

donde . Aquí es un parámetro libre que debería ser mucho mayor que el mayor que sea entrada en la función de codificación posicional. En el artículo original,[1]​ los autores eligieron un .

La función está en una forma más simple si se escribe como función compleja de tipo

where .

La principal razón por la que los autores escogieron esta como función de codificación posicional es que permite realizar oscilaciones como transformaciones lineares:

where es la distancia que uno quiere oscilar. Esto permite a que el transformador tome cualquier posición codificada y encontrar la codificación de la posición a un paso hacia adelante o un paso hacia atrás a través de una matriz multiplicativa.

Decodificador[editar]

Cada decodificador consiste de tres componentes principales: un mecanismo de autoatención, un mecanismo de atención sobre los códigos y una red neuronal prealimentada. El decodificador funciona de manera parecida al encodificador pero hay un mecanismo de atención adicional que saca información relevante de los códigos generados por los encodificadores. Este mecanismo también se conoce como atención codificador-decodificador.[1][4]

Como el primer codificador, el primer decodificador toma la información posicional y los embeddings de la secuencia de salida como su entrada en vez de los códigos. El transformador no debe usar la salida actual o futura, así que la secuencia de salida debe estar enmascarada parcialmente para evitar que fluya la información de manera inversa.[1]​ Esto permite una generación de texto autoagresiva. Para todas las cabezas de atención no se puede poner atención en los siguientes tokens. El último decodificador es seguido por una transformación linear o de multiplicación de matriz y una capa de softmax para producir las probabilidades de salida sobre el vocabulario.

El GPT tiene una arquitectura con solo un decodificador.

Aplicaciones[editar]

Implementaciones[editar]

Se ha implementado el modelo de transformador en entornos como TensorFlow y PyTorch.

La empresa Hugging Face tiene una biblioteca llamada transformers con arquitecturas y modelos preentrenados.

Véase también[editar]

Referencias[editar]

  1. a b c d Vaswani, Ashish; Shazeer, Noam; Parmar, Niki; Uszkoreit, Jakob; Jones, Llion; Gomez, Aidan N.; Kaiser, Lukasz; Polosukhin, Illia (2017-06-12). «Attention Is All You Need». arXiv:1706.03762  [cs.CL]. 
  2. He, Cheng. «Transformer in CV». Transformer in CV. 
  3. «Sequence Modeling with Neural Networks (Part 2): Attention Models». Indico. 18 de abril de 2016. 
  4. a b Alammar, Jay. «The Illustrated Transformer». jalammar.github.io. Consultado el 15 de octubre de 2019. 

Bibliografía[editar]

  • Turnstall, Lewis (2022). Natural Language Processing With Transformers (en inglés) (1 edición). O'Reilly. ISBN 978-1-098-10324-8.