Um modelo mental útil
Pense na arquitetura de um modelo como um conjunto de equações com espaços numerados vazios. A arquitetura define onde ficam esses espaços e como eles se conectam. Os parâmetros são os números colocados nesses espaços.
Essa distinção é importante. Dois modelos podem ter a mesma arquitetura, mas se comportar de maneira diferente porque seus valores de parâmetros são diferentes. Antes do treinamento, os espaços contêm valores inicializados. O treinamento ajusta alguns ou todos eles usando dados. Durante a inferência, o modelo normalmente mantém esses valores fixos e aplica o cálculo resultante a novas entradas.
Um parâmetro não é um controle que o usuário ajusta a cada solicitação. Ele faz parte do próprio modelo.
Como os parâmetros funcionam
Uma camada de rede neural geralmente realiza um cálculo desta forma:
[\n\text{saída} = f(\text{entrada} \times \text{matriz de pesos} + \text{vetor de vieses})\n]
A matriz de pesos e o vetor de vieses contêm parâmetros. A função (f) faz parte da arquitetura e pode não conter parâmetros próprios.
A arquitetura fixa as formas dos tensores de parâmetros. Se uma camada conecta 2 valores de entrada a 3 valores de saída, sua matriz de pesos precisa de 6 entradas escalares:
2 inputs ──> [2 × 3 weight matrix] ──> 3 outputs
+
[3-value bias vector]Cada entrada escalar armazenada de forma independente conta como um parâmetro. O modelo usa essas mesmas entradas para cada exemplo que processa. Aplicar um parâmetro um milhão de vezes não o transforma em um milhão de parâmetros.
Durante o treinamento, um otimizador recebe informações sobre como uma pequena alteração em cada parâmetro treinável afetaria o erro do modelo. Em seguida, ele atualiza os valores. A repetição desse processo pode produzir um conjunto de parâmetros que mapeia novas entradas para saídas úteis.
A palavra “treinável” exige cuidado. Um parâmetro pode ser congelado para que uma determinada execução de treinamento não o atualize. Ele ainda faz parte do estado ajustado do modelo. Os frameworks também armazenam outros estados que afetam o cálculo, mas que não são tratados como parâmetros. O PyTorch chama esse estado de buffer, enquanto o Keras usa uma coleção mais ampla de “pesos” e a divide em pesos treináveis e não treináveis.
Um cálculo de parâmetros na prática
Considere uma rede pequena com dois valores de entrada, uma camada oculta com três saídas e uma saída final.
A primeira camada tem:
- (2 \times 3 = 6) pesos
- 3 vieses
- 9 parâmetros no total
A camada final tem:
- (3 \times 1 = 3) pesos
- 1 viés
- 4 parâmetros no total
A rede completa tem (9 + 4 = 13) parâmetros.
Os valores de entrada não contam como parâmetros porque mudam de um exemplo para outro. As saídas intermediárias também não contam; são resultados temporários. As funções de ativação deste exemplo não adicionam parâmetros. Somente os valores armazenados de forma independente nas matrizes de pesos e nos vetores de vieses contribuem para a contagem.
Esse método baseado nas formas dos tensores se aplica a modelos maiores: conte as entradas escalares em cada tensor de parâmetros e depois some-as. Se os parâmetros forem compartilhados, conte os valores armazenados uma vez, não cada lugar em que o modelo os utiliza.
Por que a contagem de parâmetros é importante
A contagem de parâmetros descreve o tamanho do estado numérico aprendido de um modelo. Ela afeta várias propriedades práticas.
Primeiro, os parâmetros armazenados ocupam memória. A quantidade depende de quantos parâmetros existem e de como cada valor é representado. Uma representação de 16 bits usa dois bytes por escalar armazenado, antes de considerar o estado não paramétrico e a sobrecarga do arquivo.
Segundo, os parâmetros participam dos cálculos. Mais parâmetros geralmente significam mais operações aritméticas, embora a arquitetura, o compartilhamento de parâmetros e quais partes do modelo estão ativas possam alterar essa relação.
Terceiro, o número de parâmetros ajuda a descrever a capacidade de um modelo de ajustar padrões. Ele não mede quão bem essa capacidade foi utilizada. Os dados de treinamento, o objetivo, a arquitetura, a otimização e a avaliação são importantes. Um modelo com mais parâmetros não é automaticamente mais preciso, mais conhecedor ou mais útil.
As contagens de parâmetros também precisam de uma indicação do que representam. Uma ferramenta ou publicação pode informar o total de parâmetros, apenas os parâmetros atualmente marcados como treináveis ou uma contagem que exclui embeddings. Esses números respondem a perguntas diferentes e não devem ser comparados como se fossem idênticos.
Equívocos comuns
Parâmetros não são hiperparâmetros
Parâmetros são valores ajustados como parte do modelo. Hiperparâmetros configuram o modelo ou o processo de treinamento. Taxa de aprendizado e tamanho do lote são hiperparâmetros comuns: eles influenciam como o treinamento ocorre, mas não são valores aprendidos dentro do modelo resultante.
Parâmetros e pesos não são sinônimos exatos
Pesos são um tipo importante de parâmetro, por isso as pessoas frequentemente usam as palavras de forma intercambiável. Mas um viés também é um parâmetro, assim como valores aprendidos de escala e deslocamento em algumas camadas de normalização. “Pesos” também pode ter um significado mais amplo e específico de cada framework. A interpretação mais segura de uma contagem de parâmetros é aquela definida pela ferramenta ou pelo publicador do modelo que a produziu.
Um parâmetro não equivale a um fato
O comportamento de um modelo treinado surge da atuação conjunta de muitos valores de parâmetros. Um único valor geralmente não tem um significado em linguagem comum, como “Paris é a capital da França”. As informações podem ser distribuídas entre muitos valores, e um único valor pode influenciar muitas saídas.
Mais parâmetros não garantem um modelo melhor
A contagem de parâmetros mede quantidade, não qualidade. Aumentar a capacidade pode ajudar quando a arquitetura, os dados e o treinamento a utilizam de forma eficaz. Também pode desperdiçar memória e computação ou ajustar padrões indesejados. O desempenho precisa ser medido na tarefa que importa.
Nem todo valor armazenado é necessariamente um parâmetro
Os modelos podem manter estatísticas acumuladas, caches ou outros estados junto com os parâmetros. Os frameworks classificam esse estado de maneiras diferentes. Para obter uma contagem exata, use a enumeração de parâmetros do framework em vez do tamanho de cada tensor em um checkpoint.
Como os parâmetros se encaixam em um modelo
A arquitetura da rede neural determina as operações e as formas dos tensores de parâmetros. A inicialização fornece valores iniciais a esses tensores. O treinamento altera os valores treináveis. Um checkpoint salva os valores resultantes, geralmente com estado adicional. A inferência os carrega e os utiliza para calcular as saídas.
Portanto, os parâmetros não são o modelo inteiro nem apenas uma especificação do modelo. Um modelo treinado utilizável combina uma arquitetura com valores de parâmetros específicos.
Próximos passos
Leia O que são pesos do modelo? para entender o papel dos multiplicadores que compõem a maior parte dos parâmetros de redes neurais. Em seguida, consulte Parâmetros do modelo vs. pesos do modelo para conhecer o limite exato entre os dois termos.