- Vision Transformers (ViTs) são uma classe de modelos de deep learning que alcançou desempenho de ponta em tarefas de classificação de imagens
- Aplicam a arquitetura Transformer, projetada para processamento de linguagem natural (NLP), a dados de imagem
- Este guia usa visualizações e explicações simples para ajudar a entender como esses modelos funcionam e como é o fluxo dos dados à medida que passam pelo modelo
Principais pontos
- A imagem é dividida em patches de tamanho igual, de
p x p
- O vetor codificado de cada patch tem tamanho fixo
d
- O que sobra é um array de tamanho
n x d (n é o número de patches da imagem, d é o tamanho do embedding do patch)
- Para treinar o modelo de forma eficaz, o array de embeddings dos patches é expandido com um vetor adicional chamado token de classificação (token
cls)
- Como não há informação posicional, são adicionados vetores de embedding posicional inicializados aleatoriamente
- Depois que os vetores de embedding posicional são adicionados, um array de tamanho
(n+1) x d é usado como entrada do Transformer
- Dentro do Transformer
- 10.1 Os vetores de embedding dos patches de entrada do Transformer são linearmente projetados em vários vetores grandes: Q - vetor de consulta, K - vetor de chave, V - vetor de valor
- 10.2 Todos os vetores de consulta Q são multiplicados por todos os vetores de chave K para calcular a pontuação de atenção A
- 10.3 Após formar a matriz de pontuação de atenção A, a função
softmax é aplicada a todas as linhas para que a soma de cada linha seja 1
- 10.4 Para calcular a informação de contexto agregada do primeiro vetor de embedding de patch, foca-se na primeira linha da matriz de atenção e usa-se cada item como peso para os vetores de valor V
- 10.5 Repetindo esse processo para todas as linhas da matriz de pontuação de atenção, são gerados N+1 vetores de informação de contexto agregada (um para cada patch + um para o token de classificação). Com isso, o primeiro head de atenção é concluído
- 10.6 Como se trata de atenção multi-head, todo o processo das etapas 10.1 - 10.5 é repetido novamente usando outro mapeamento QKV
- 10.7 Etapa final da camada de atenção. Os heads são empilhados e projetados em um vetor de tamanho
d, igual ao tamanho dos embeddings dos patches
- 10.8 Neste ponto, a camada de atenção foi concluída e restam o mesmo número de embeddings, exatamente com o mesmo tamanho da entrada
- 10.9 O Transformer usa muitas conexões residuais (Residual Connection), o que significa simplesmente somar a entrada da camada anterior à saída da camada atual
- 10.10 O resultado da conexão residual (soma) gera vetores do mesmo tamanho
- 10.11 Essa saída passa por uma rede neural feed-forward com função de ativação não linear
- 10.12 Após a etapa do Transformer, há outra conexão residual, mas ela é omitida aqui. Com isso, a camada Transformer é concluída. Como resultado, o Transformer produz uma saída do mesmo tamanho da entrada
- Em seguida, toda a etapa de cálculo do Transformer, da 10.1 à 10.12, é repetida várias vezes (por exemplo, 6 vezes)
- A etapa final é identificar a saída do token de classificação. Esse vetor será usado na etapa final do Vision Transformer
- Na etapa final, esse token de saída de classificação e outra rede neural totalmente conectada são usados para prever as probabilidades de classificação da imagem de entrada
- O Vision Transformer é treinado usando a função de perda padrão de entropia cruzada, que compara as probabilidades de classe previstas com os rótulos reais das classes
- O modelo é treinado com backpropagation e gradiente descendente, atualizando os parâmetros para minimizar a função de perda
1 comentários
Depois de ver o artigo apresentado, achei que seria bom explicá-lo junto com imagens, então pedi autorização ao autor e traduzi o texto original: