Transformador (modelo de aprendizaje automático)

modelo de aprendizaje automático

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.