Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Como a Normalização em Camadas Estabiliza os Transformers | Construindo Componentes de Transformers
Transformers para Processamento de Linguagem Natural

bookComo a Normalização em Camadas Estabiliza os Transformers

Deslize para mostrar o menu

Modelos modernos de deep learning dependem de técnicas de normalização para treinar de forma eficiente e precisa. Em processamento de linguagem natural (PLN), onde as sequências de entrada podem variar em comprimento e estrutura, a normalização é especialmente importante para estabilizar o processo de aprendizado. Dois métodos comuns de normalização são a normalização em lote (batch normalization) e a normalização por camada (layer normalization), mas eles têm finalidades diferentes e são adequados para tipos distintos de dados.

Normalização em Lote
expand arrow

A normalização em lote calcula a média e a variância de cada característica em todo o lote de entradas. Essa abordagem funciona bem em tarefas de visão computacional, onde cada imagem em um lote geralmente possui o mesmo tamanho e estrutura. No entanto, em tarefas de PLN, especialmente com sequências de comprimento variável, a normalização em lote pode introduzir dependências indesejadas entre amostras do lote e pode não lidar bem com comprimentos de sequência variados.

Normalização por Camada
expand arrow

A normalização por camada, por outro lado, normaliza as características de entrada dentro de cada ponto de dado (como cada embedding de token em uma sentença) independentemente dos outros pontos do lote. Isso a torna muito mais adequada para PLN e modelagem de sequências. Ao padronizar as entradas somadas para um neurônio dentro de uma camada, a normalização por camada garante que a representação de cada token esteja em uma escala semelhante, independentemente de sua posição ou da composição do lote. Isso ajuda os Transformers a treinarem de forma estável e a representarem textos de maneira mais eficaz, especialmente ao lidar com sentenças longas ou complexas.

123456789101112131415161718192021
import numpy as np def layer_norm(x, epsilon=1e-5): """ Applies layer normalization to a 2D numpy array x. Each row is normalized independently. """ mean = np.mean(x, axis=1, keepdims=True) variance = np.var(x, axis=1, keepdims=True) normalized = (x - mean) / np.sqrt(variance + epsilon) # Optional: learnable scale and bias (gamma and beta) gamma = np.ones_like(mean) beta = np.zeros_like(mean) return gamma * normalized + beta # Example: normalize a batch of 3 token embeddings (rows) embeddings = np.array([[2.0, 4.0, 6.0], [1.0, 3.0, 5.0], [0.0, 0.0, 0.0]]) normalized_embeddings = layer_norm(embeddings) print(normalized_embeddings)
copy

Imagine cada linha em sua entrada como uma incorporação de token única – como um personagem em uma história, cada um com suas próprias características. A função layer_norm oferece a cada token uma chance justa ao ajustar seus valores para que fiquem centralizados em torno de zero e compartilhem a mesma escala. Ela calcula a média e a variância para cada linha, depois transforma os valores para que nenhum token se destaque demais ou desapareça no fundo. Essa normalização independente significa que, independentemente do comprimento da sequência ou da composição do lote, as características de cada token estão equilibradas e prontas para serem interpretadas pelo modelo. Essa abordagem mantém o treinamento do modelo estável e eficiente, especialmente ao lidar com comprimentos e estruturas imprevisíveis encontrados em dados de PLN do mundo real.

question mark

Por que a normalização em camadas é preferida em relação à normalização em lote para Transformers em PLN?

Selecione a resposta correta

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 2. Capítulo 4

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

Seção 2. Capítulo 4
some-alt