- Vision Transformers (ViTs) son una clase de modelos de aprendizaje profundo que han logrado el mejor rendimiento en tareas de clasificación de imágenes
- Aplican la arquitectura Transformer, diseñada para procesamiento de lenguaje natural (NLP), a datos de imágenes
- Esta guía ayuda a entender cómo funcionan estos modelos y cómo se ve el flujo de los datos al pasar por el modelo, usando visualizaciones y explicaciones sencillas
Contenido principal
- Divide una imagen en parches del mismo tamaño de
p x p
- El vector codificado de cada parche tiene un tamaño fijo
d
- Lo que queda es un arreglo de tamaño
n x d (n es la cantidad de parches de la imagen y d es el tamaño del embedding del parche)
- Para entrenar el modelo de forma efectiva, se expande el arreglo de embeddings de parches con un vector adicional llamado token de clasificación (token
cls)
- Como no hay información de posición, se agregan vectores de embeddings posicionales inicializados aleatoriamente
- Después de agregar los vectores de embeddings posicionales, se usa como entrada del Transformer un arreglo de tamaño
(n+1) x d
- Dentro del Transformer
- 10.1 Los vectores de embeddings de parches de entrada del Transformer se proyectan linealmente en varios vectores grandes:
Q - vector de consulta, K - vector clave, V - vector de valor
- 10.2 Para calcular la puntuación de atención
A, se multiplican todos los vectores de consulta Q por todos los vectores clave K
- 10.3 Una vez obtenida la matriz de puntuaciones de atención
A, se aplica la función softmax a cada fila para que la suma de cada fila sea 1
- 10.4 Para calcular la información de contexto agregada del primer vector de embedding de parche, se pone el foco en la primera fila de la matriz de atención y sus elementos se usan como pesos para los vectores de valor
V
- 10.5 Ahora se repite este proceso para todas las filas de la matriz de puntuaciones de atención y así se generan
N+1 vectores de información de contexto agregada (uno por parche + uno para el token de clasificación). Con este paso se completa el primer head de atención
- 10.6 Como se trata de atención multi-head, se repite de nuevo todo el proceso de los pasos 10.1 - 10.5 usando otro mapeo
QKV
- 10.7 Última etapa de la capa de atención. Los heads se apilan juntos y se proyectan a un vector de tamaño
d, igual al tamaño de los embeddings de los parches
- 10.8 En las etapas anteriores se completó la capa de atención y quedan exactamente la misma cantidad de embeddings, con el mismo tamaño que la entrada
- 10.9 El Transformer usa muchas conexiones residuales (Residual Connection), lo que simplemente significa sumar la entrada de la capa anterior a la salida de la capa actual
- 10.10 El resultado de la conexión residual (suma) genera un vector del mismo tamaño
- 10.11 Esta salida pasa por una red neuronal feed-forward con una función de activación no lineal
- 10.12 Después de la etapa del Transformer hay otra conexión residual, pero aquí se omite. Con esto se completa la capa Transformer. Como resultado, el Transformer genera una salida del mismo tamaño que la entrada
- Luego, toda la secuencia de cálculo del Transformer, desde el paso 10.1 hasta el 10.12, se repite varias veces (por ejemplo, 6 veces)
- El paso final es identificar la salida del token de clasificación. Este vector se usará en la etapa final del Vision Transformer
- En la etapa final, este token de salida de clasificación y otra red neuronal totalmente conectada se usan para predecir las probabilidades de clasificación de la imagen de entrada
- Vision Transformer se entrena usando la función de pérdida estándar de entropía cruzada, que compara las probabilidades de clase predichas con las etiquetas reales de clase
- El modelo se entrena con backpropagation y descenso por gradiente, actualizando los parámetros del modelo para minimizar la función de pérdida
1 comentarios
Vi la publicación que presentaste y pensé que sería bueno explicarla junto con imágenes, así que obtuve permiso del autor y traduje el texto original: