14 pontos por xguru 2024-04-17 | 1 comentários | Compartilhar no WhatsApp
  • 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

 
ninebow 2024-04-22

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: