samuelfer commited on
Commit
72f4640
·
1 Parent(s): c96b8cf

Update README.md

Browse files

O Transformer é uma arquitetura de modelo de aprendizado de máquina que se destacou, especialmente em tarefas de Processamento Natural de Linguagem (PNL), em comparação com Redes Neurais Recorrentes (RNNs) e Redes Neurais Convolucionais (CNNs). Enquanto as RNNs são adequadas para dados sequenciais, como texto, e as CNNs são eficazes em tarefas relacionadas a imagens, o Transformer supera algumas limitações dessas arquiteturas.

O Transformer utiliza mecanismos de autoatenção para capturar dependências globais entre os elementos de entrada, permitindo processamento paralelo e eficiência em hardware moderno. Ele consiste em um codificador e um decodificador, ambos compostos por camadas que incorporam autoatenção e camadas feedforward. O mecanismo de autoatenção permite ao modelo focar em diferentes partes da sequência de entrada, facilitando a captura de dependências de longo alcance.

Principais características do Transformer:
1. **Paralelização:** Os Transformers podem processar elementos de entrada em paralelo, tornando o treinamento mais rápido e eficiente em hardware que suporta operações paralelas.
2. **Mecanismo de Atenção:** O uso de autoatenção permite capturar dependências globais na sequência de entrada, sendo especialmente útil em tarefas de PNL que exigem compreensão contextual.
3. **Sem Processamento Sequencial:** Ao contrário das RNNs, os Transformers não processam a entrada sequencialmente, o que contribui para treinamento e inferência mais rápidos.

No entanto, os Transformers podem exigir grandes conjuntos de dados para treinamento eficaz e podem ser computacionalmente caros, principalmente para sequências longas. A escolha entre CNNs, RNNs e Transformers depende da natureza da tarefa e das características dos dados de entrada. Em resumo, enquanto as RNNs e CNNs têm suas vantagens em certos contextos, os Transformers se destacam em tarefas de PNL, aproveitando a atenção global e o processamento paralelo.

Aqui está a arquitetura do modelo Transformer com breves descrições de cada componente:


![image.png](https://cdn-uploads.huggingface.co/production/uploads/65662a1693951c950b33d0c8/UXsqaf5DgapUI-4qF_jRi.png)




Implementando camadas PositionalEmbedding
Codificação posicional (função positional_encoding)
Nos modelos Transformer, os componentes codificador e decodificador empregam uma abordagem comum para converter tokens de entrada em vetores:


Isto é conseguido usando uma tf.keras.layers.Embeddingcamada " ", que gera uma representação vetorial para cada token na sequência de entrada.

A função de codificação posicional na arquitetura dos transformadores introduz o conceito de ordem ou posição nos dados de entrada. Os transformadores são projetados para processar dados de entrada em paralelo, tornando-os altamente eficientes para tarefas como processamento de linguagem natural. Entretanto, como os transformadores não possuem um senso de ordem inerente, eles não podem capturar naturalmente as informações sequenciais ou posicionais presentes nos dados de entrada.


Em aplicações como processamento de linguagem, a ordem das palavras em uma frase é crucial para a compreensão do significado. A função de codificação posicional é introduzida para incorporar essas informações posicionais no modelo.

A função de codificação posicional mapeia cada posição (ou intervalo de tempo) na sequência de entrada para uma representação vetorial. Esses embeddings posicionais são adicionados elemento a elemento aos embeddings de entrada (geralmente embeddings de palavras) antes de alimentá-los no modelo do transformador. Essa adição permite ao modelo distinguir palavras com base em suas posições, possibilitando compreender a estrutura sequencial da entrada.

O tipo mais comum de codificação posicional utilizado é baseado nas funções seno e cosseno. Este método garante que os embeddings posicionais tenham um padrão consistente, permitindo que o modelo generalize bem para sequências mais longas que talvez não tenha visto durante o treinamento.

Em resumo, o objetivo da função de codificação posicional em transformadores é introduzir informações de posição no modelo, permitindo-lhe compreender a natureza sequencial dos dados de entrada e executar eficazmente tarefas onde a ordem dos elementos é importante, como tradução de linguagem ou compreensão de linguagem. tarefas.


A fórmula a seguir fornece o método para calcular a codificação posicional:



Onde “pos” é a posição e “i” é a dimensão. "d_model" é a dimensão do vetor de incorporação. Em outras palavras, cada dimensão da codificação posicional corresponde a uma senóide. A posição determina o comprimento de onda de cada senóide e a dimensão determina a frequência. A codificação posicional é calculada usando funções seno e cosseno com frequências diferentes. As frequências formam uma progressão geométrica de “2/pi” a “10000*2/pi”.

Vamos implementar esta camada no código:

Files changed (1) hide show
  1. README.md +2 -1
README.md CHANGED
@@ -1,3 +1,4 @@
1
  ---
2
  license: creativeml-openrail-m
3
- ---
 
 
1
  ---
2
  license: creativeml-openrail-m
3
+ pipeline_tag: summarization
4
+ ---