Modelos de machine learning memorizam ou generalizam?
(pair.withgoogle.com)- O grokking observado em modelos pequenos é o fenômeno em que o modelo primeiro memoriza os dados de treino e só muito depois, após continuar aprendendo por bastante tempo, passa de repente a acertar entradas nunca vistas, oferecendo pistas para distinguir memorização de generalização
- No experimento de adição modular, um MLP de 1 camada inicialmente mostra pesos ruidosos, mas forma uma estrutura periódica no momento em que a acurácia de teste sobe e então generaliza
- No experimento com sequências binárias de 30 dígitos, o modelo que generaliza reduz os pesos dos dígitos finais de distração e se concentra nos 3 primeiros dígitos, revelando a diferença entre uma solução por memorização e uma solução por generalização
- As pressões centrais da transição são a minimização da perda e o weight decay, e embora a perda de teste pareça cair de repente, os pesos internos se movem de forma relativamente suave entre as duas soluções
- O grokking só aparece quando hiperparâmetros como tamanho do modelo, tamanho dos dados e weight decay estão ajustados corretamente, e ainda é uma questão em aberto se ele pode ser interpretado da mesma forma em modelos grandes
A pergunta levantada pelo grokking
- Em 2021, pesquisadores descobriram em tarefas de brinquedo que modelos pequenos, mesmo após acertarem os dados de treino, continuavam por algum tempo sem acertar os dados de teste e só depois de treinar por mais tempo passavam subitamente a generalizar
- Esse fenômeno foi chamado de grokking e se refere a uma dinâmica de aprendizado em que a generalização aparece muito depois do ajuste aos dados de treino
- Grandes modelos de linguagem podem parecer entender o mundo, mas também podem estar apenas memorizando partes do enorme volume de texto de treinamento e reproduzindo isso
- Partir de modelos pequenos facilita construir intuição sobre técnicas de interpretação que não são fáceis de aplicar diretamente aos maiores modelos de hoje
- A abordagem consiste em observar o processo de aprendizado de modelos pequenos e fazer engenharia reversa da solução encontrada pelo modelo, mostrando um exemplo de interpretabilidade mecanística
A estrutura periódica observada na adição modular
- A adição modular é usada como uma pequena tarefa na qual é fácil observar o grokking
- Dado dois números de entrada
a,be um módulo, o problema é prevera + busando a operação modular - O experimento de exemplo usa números de 0 a 66, e 67 foi escolhido para que a visualização não ficasse simples demais nem complexa demais
- Dado dois números de entrada
- O modelo experimental é um MLP de 1 camada com 24 neurônios
- Todos os pares
a, bsão divididos aleatoriamente entre dados de treino e dados de teste - Os dados de treino são usados para ajustar os pesos do modelo, e os dados de teste servem apenas para verificar se ele aprendeu uma solução geral
- Todos os pares
- O modelo seleciona e soma as colunas de embedding correspondentes às entradas
aeb, zera os valores negativos e usa a coluna mais próxima da matriz de saída como previsão - No início do treino, os pesos têm muito ruído, mas padrões periódicos aparecem quando a acurácia de teste sobe e o modelo passa a generalizar
- Ao fim do treino, cada neurônio alterna várias vezes entre valores altos e baixos conforme o número de entrada aumenta de 0 a 66
- Quando os neurônios são agrupados pela frequência periódica final, esse padrão fica ainda mais claro
- Essa periodicidade sugere que o modelo está aprendendo alguma estrutura matemática e coincide com o momento em que ele começa a resolver exemplos de teste
Memorização e generalização vistas em uma tarefa com 0 e 1
- Um experimento ainda mais simples pede para prever se a quantidade de 1s nos 3 primeiros dígitos de uma sequência binária de comprimento 30 é ímpar
- Por exemplo, se começar com
000..., o resultado pode ser 0; se começar com010..., pode ser 1 - Essencialmente, é um problema de XOR um pouco mais difícil, e os dígitos posteriores são ruído de distração
- Por exemplo, se começar com
- Um modelo que generaliza deve usar apenas os 3 primeiros dígitos
- Um modelo que memoriza os dados de treino usa também os dígitos posteriores de distração
- Esse experimento também usa um MLP de 1 camada e treina com 1.200 sequências fixas
- No começo, só a acurácia de treino aumenta, enquanto a acurácia de teste permanece quase em nível aleatório
- Depois, a acurácia de teste sobe bruscamente quando o modelo aprende a solução geral
- Um modelo em fase de memorização mostra pesos densos, ruidosos e de grande magnitude espalhados por várias entradas
- Quando a generalização se completa, os pesos conectados aos dígitos de distração ficam muito baixos, e o modelo passa a focar nas entradas dos 3 primeiros dígitos
Como o weight decay empurra para a solução que generaliza
- Durante o treino, o modelo sofre simultaneamente duas pressões
- Precisa reduzir a loss para atribuir alta probabilidade ao rótulo correto
- Sofre o efeito do weight decay, que empurra os pesos para magnitudes menores
- Na tarefa binária, a loss de treino aumenta ligeiramente pouco antes de o modelo generalizar
- Isso acontece porque ele abre mão de parte da redução de loss que elevava a probabilidade da resposta correta para migrar para uma solução com pesos menores
- A queda brusca da loss de teste faz parecer que o modelo mudou repentinamente para a generalização
- Mas, ao observar os pesos durante o treino, a maior parte deles interpola suavemente entre a solução de memorização e a solução de generalização
- A generalização rápida acontece quando os últimos pesos ligados aos dígitos de distração são eliminados pelo weight decay
Condições em que o grokking aparece
- O grokking não é um fenômeno que aparece sempre, e sim algo dependente das condições, como tamanho do modelo, weight decay e tamanho dos dados
- Se o weight decay for pequeno demais, o modelo não consegue sair do overfitting nos dados de treino
- Ao aumentar mais a regularização, o modelo memoriza primeiro e depois generaliza
- Ao aumentar ainda mais, a loss de teste e a loss de treino caem juntas e o modelo generaliza logo de início
- Com regularização excessiva, o modelo não aprende nada
- Na tarefa binária, foram treinados mais de 1.000 modelos com diferentes hiperparâmetros e, para considerar o ruído do treino, foram treinados 9 modelos para cada combinação de hiperparâmetros
Uma solução de adição modular com cinco neurônios
- A adição modular é um problema periódico: quando a soma passa de 67, ela volta ao início
- Se os números de entrada forem colocados como pontos em um círculo, essa periodicidade pode ser incorporada diretamente à estrutura do modelo
- Para cada valor possível de entrada, calculam-se valores de
sinecospara compor a matriz de embeddings
- Para cada valor possível de entrada, calculam-se valores de
- Em um MLP de 1 camada com esse ponto de partida, ao treinar apenas algumas matrizes, encontra-se uma solução com acurácia perfeita usando apenas 5 neurônios
- Ao observar os parâmetros treinados, os neurônios convergem para magnitudes quase iguais e, ao desenhar os componentes
sinecos, ficam distribuídos de maneira quase uniforme no círculo - Ao conectar neurônios adjacentes, aparece um padrão em que o lado do
unembeddinggira em torno do círculo duas vezes mais rápido que o lado do embedding - Essa construção fornece uma solução de 20 parâmetros para resolver a adição modular
O mesmo algoritmo dentro de um MLP grande de 1 camada
- O modelo inicial com 3.216 parâmetros é treinado do zero e começa sem periodicidade embutida
- Diferentemente da pequena solução construída, esse modelo usa várias frequências
- Com a transformada discreta de Fourier (DFT), é possível separar os padrões periódicos aprendidos ao longo das entradas
- Para cada neurônio, obtêm-se valores
sinecospara frequências periódicas possíveis de 1 a 33 - Os neurônios podem ser agrupados com base na frequência que apresenta os maiores valores de
sinecos
- Para cada neurônio, obtêm-se valores
- À medida que o modelo generaliza, o weight decay torna essa representação mais esparsa
- Quando os neurônios são agrupados pela frequência final e os componentes da DFT são desenhados, aparece o formato de estrela visto na construção com cinco neurônios
- O modelo treinado usa o mesmo algoritmo da solução construída
- Ao observar a contribuição de saída de cada grupo de neurônios por frequência, forma-se uma onda correspondente ao cálculo de
a + b mod 67 - Depois de uma curta estagnação perto de 45.000 passos, quando a loss de teste melhora, o grupo de neurônios da frequência 7 se alinha no formato de estrela e a saída fica mais próxima da onda esperada
- Ao observar a contribuição de saída de cada grupo de neurônios por frequência, forma-se uma onda correspondente ao cálculo de
- O modelo usa várias frequências para reduzir a loss sem aumentar os pesos, aproveitando a interferência construtiva
- As frequências 4, 5, 7 e 26 não são especiais por si só; em outras execuções de treino, aprendem-se variações desse algoritmo
Perguntas que ainda permanecem
- Treinar diretamente apenas um modelo da forma
W = W_L W_Rnão produz generalização em aritmética modular, mesmo com weight decay- Pelo menos uma das matrizes precisa ser fatorada
- Depois da DFT, a solução que generaliza é esparsa, mas a matriz combinada tem norma alta
- Aplicar weight decay diretamente em
WeUnão fornece o viés indutivo adequado para essa tarefa
- O weight decay pode afastar vários modelos da memorização dos dados de treino
- Outras técnicas para evitar overfitting incluem dropout, modelos menores e algoritmos de otimização numericamente instáveis
- Essas abordagens interagem de forma complexa e não linear, o que dificulta prever de antemão quais configurações induzirão generalização
- Uma teoria para explicar por que a memorização acontece antes da generalização é que pode haver muito mais formas de memorizar o conjunto de treino do que de encontrar a solução que generaliza
- Sem regularização, ou com regularização fraca, estatisticamente a memorização tende a surgir primeiro
- Técnicas de regularização como weight decay passam a favorecer certos tipos de solução, como soluções esparsas, em vez de soluções densas
- Representações bem estruturadas podem estar relacionadas à generalização, mas não são nem condição necessária nem suficiente
- Algumas variantes de MLP sem entradas simétricas aprendem representações menos circulares ao resolver adição modular
- Modelos pequenos treinados sem weight decay podem começar a generalizar e depois voltar à memorização mesmo mantendo embeddings periódicos
- Em alguns hiperparâmetros, também pode ocorrer a transição generalização → memorização → generalização
Interpretabilidade rumo a modelos maiores
- O grokking foi observado em pequenas tarefas algorítmicas com Transformers e MLPs, e depois também apareceu em tarefas mais complexas com imagens, texto e dados tabulares dentro de certas faixas de hiperparâmetros
- Os maiores modelos, capazes de executar vários tipos de tarefa, podem estar passando por vários processos de grokking em velocidades diferentes durante o treino
- Há também trabalhos que tentam prever o grokking antes que ele aconteça de fato
- Alguns métodos exigem conhecimento da solução que generaliza ou de todo o domínio de dados
- Outros usam apenas análise da loss de treino e podem ser aplicáveis a modelos maiores
- Um caminho futuro é usar repetidamente modelos mais simples
- Treinar modelos simples com viés indutivo mais forte e menos partes móveis
- Usar esses modelos para explicar partes difíceis de interpretar em modelos maiores
- Repetir esse processo quando necessário
- Essa abordagem de interpretabilidade mecanística pode ajudar a identificar ou automatizar padrões que revelem os algoritmos aprendidos por redes neurais
1 comentários
Opiniões do Hacker News
Acho que a razão pela qual a memória humana é surpreendente é que, embora não tenha a mesma capacidade de armazenamento de uma máquina, ela tem a capacidade de compressão de padrões, reduzindo muito as informações antes de armazená-las.
É como se esses padrões fossem novamente agrupados com outros padrões e comprimidos, e algo fosse extraído dali; é uma compressão com perdas enorme, mas cumpre o objetivo.
O cérebro destila ativamente o conhecimento que não precisa ser literalmente memorizado em elementos essenciais, mais no sentido de evitar overfitting e obter “intuição e compreensão generalizadas”.
Referência: https://www.scientificamerican.com/article/new-estimate-boosts-the-human-brain-s-memory-capacity-10-fold/
https://youtu.be/hpTCZ-hO6iI
O limite superior é tecnicamente “infinito”, mas existe uma relação de compromisso entre o número de conceitos armazenados e a quantidade fundamental de informação que pode ser armazenada por conceito, parecida com outros princípios de compromisso, como um princípio da incerteza.
Não sei se o cérebro dos animais funciona do mesmo modo, mas suspeito que ele seja principalmente um algoritmo de compressão para previsão e não armazene muitos dados em si.
Geometria é boa para esse tipo de treino e também costuma ser útil em demonstrações de física.
O ponto central parece ser que o weight decay induz esparsidade e ajuda a aprender representações “reais”, em vez de representações com overfitting.
No cérebro humano, há um mecanismo que parece semelhante durante o desenvolvimento, chamado poda sináptica, que aparece amplamente. Gostaria de ouvir de alguém especialista na área se isso inspirou o weight decay ou, mais diretamente, a poda de redes neurais.
O motivo pelo qual weight decay funciona é que, quando aplicado como regularização, ele faz a rede se aproximar do comprimento mínimo de descrição (MDL), reduzindo o arrependimento (regret) durante o treinamento. Há alguma relação com a poda no cérebro, mas o cérebro parece usar esparsidade fundamentalmente para induzir representações, não compressão, então na prática é mais como um motivo diferente. Basta pensar nos vieses implícitos de diferentes representações e nos efeitos subsequentes que eles têm sobre representações aprendidas ou aprendíveis.
Mas o melhor remédio para overfitting é aumentar o dataset e garantir diversidade nos dados. Como os datasets de LLMs são enormes, normalmente eles são treinados por apenas uma época.
A regularização L1 gera muito mais esparsidade, mas seu desempenho não é tão bom.
O pessoal de IA está estragando a palavra grok.
Originalmente ela significa algo como “entender completa e integralmente”, então usar a mesma palavra para generalização significa não grokar o grokking.
Isso também foi discutido nos comentários de um texto que sugeria chamar o fenômeno de “recuperação final a partir do overfitting”: https://www.lesswrong.com/posts/GpSzShaaf8po4rcmA/qapr-5-grokking-is-maybe-not-that-big-a-deal
Seus significados conotativos vão de “absorver profundamente”, literal ou figurativamente, até consumir o corpo ausente de alguém amado. Recomendo fortemente Stranger in A Strange Land, e é melhor escolher a reedição integral, sem cortes, lançada por volta de 1990.
Parece bastante razoável, porque evoca os elementos de compreensão intuitiva e de um aumento súbito e grande no entendimento, o que também se parece com a mudança que ocorre na loss.
Não sei se minha memória está correta, mas acho que, na entrevista de Raphaël Millière no Mindscape, foi dito que, quando modelos de machine learning têm muitas dimensões, a distinção entre interpolação e extrapolação não é tão clara quanto nas áreas em que normalmente raciocinamos.
Não sei bem se isso é parecido com o que este texto aborda.
Fico curioso para saber como esses gráficos foram feitos
Parece que eles devem ter sido gerados mais ou menos pela metade com alguma biblioteca e depois refinados manualmente; o SVG animado gerado é lindo
Também há algumas pequenas bibliotecas para coisas como anotações, misturar SVG e canvas, e tornar o d3 menos verboso
https://github.com/PAIR-code/ai-explorables/tree/master/source/grokking
https://1wheel.github.io/swoopy-drag/
https://github.com/gka/d3-jetpack
https://roadtolarissa.com/hot-reload/
Se você estiver curioso sobre os detalhes deste tema, é melhor ler o texto no computador. Há dados de visualização que não dá para explorar no celular
Antes de tudo, é um bom post de blog, com muitos exemplos excelentes, e me lembrou o antigo distill.pub
Como o texto diz corretamente, em geral, ao usar decaimento de pesos L2, surgem muitos pesos de pequena magnitude. Se quisermos um modelo que generalize melhor, fico me perguntando se não seria sempre melhor usar decaimento de pesos L1 para promover esparsidade e treinar por mais tempo. Também me pergunto se modelos de deep learning que usem apenas características esparsas de Fourier, em vez de camadas lineares densas, talvez funcionem melhor
A resposta longa é que modelos de deep learning normalmente tentam encontrar a base não linear ótima para representar a entrada. Se a entrada puder ser bem — isto é, esparsamente — representada em alguma base conhecida de antemão, costuma ajudar colocá-la nessa base, como fazer uma FFT de um sinal de RF. Porém, a base ótima global pode ser diferente da base de qualquer mínimo local, então é preciso algum truque para empurrar a rede nessa direção
Fico curioso para saber o quanto a função-alvo é representativa
É comum querermos que o modelo aprenda as partes importantes da entrada, mas prestar atenção apenas aos três primeiros bits de uma string de bits parece bastante artificial. Não sei se eles treinaram uma tabela-verdade com tamanho de parâmetro relevante igual a 8 usando 4,8 milhões de amostras, ou se estou entendendo algo errado
O motivo de usar uma tarefa simples é permitir interpretar o que está acontecendo internamente quando isso ocorre
Não havia feed de descoberta automática RSS/Atom no HTML, nem link para feed RSS, mas consegui encontrar o feed RSS “Explorables” chutando possíveis nomes e locais de feed: https://pair.withgoogle.com/explorables/rss.xml
Parece uma célula de grade
https://en.wikipedia.org/wiki/Grid_cell
Se desenharmos o mapa de calor dos neurônios da camada oculta em um gráfico 2D, com $a$ em um eixo e $b$ no outro, acho que aparecerá uma grade triangular. Se funcionar do jeito que estou imaginando, ao observar outro neurônio oculto surgirá mais uma grade, com direção e escala diferentes. Juntando tudo isso, também daria para construir um somador em base 67. Além disso, não consigo deixar de ter a intuição de que a relação entre os neurônios W_in-proj e a relação entre os neurônios W_out-proj se parecem com o mapeamento entre o círculo de semitons e o círculo das quintas
https://upload.wikimedia.org/wikipedia/commons/thumb/6/6f/Pitch_class_space_star.svg/220px-Pitch_class_space_star.svg.png