Será que RNNs eram tudo mesmo?
(arxiv.org)- O Transformer reformulou o deep learning desde 2017, mas o custo da autoatenção cresce em sequências longas, fazendo com que modelos recorrentes treináveis em paralelo voltem a ganhar atenção
- LSTM e GRU, amplamente usados por 20 anos em modelagem de sequências antes do Transformer, podem abrir espaço para treinamento paralelo se a dependência dos gates em relação ao estado anterior for reduzida
- As versões simplificadas minLSTM e minGRU têm menos parâmetros que LSTM e GRU tradicionais, são totalmente paralelizáveis durante o treinamento e mostram desempenho competitivo com modelos recentes, incluindo o Transformer, em várias tarefas
- A busca por maior eficiência no Transformer levou a linhas como esparsidade, aproximação de baixa classificação e tiling; mais recentemente, modelos recorrentes alternativos como modelos de espaço de estados, atenção linearizada e RNNs lineares também vêm mostrando desempenho forte
- Graças a algumas poucas linhas de implementação em plain PyTorch no apêndice, minGRU e minLSTM podem ser vistos como modelos leves fáceis de experimentar para iniciantes, profissionais e pesquisadores
Modelos recorrentes voltam a chamar atenção após o Transformer
- RNNs são amplamente usados desde os anos 1990 em tarefas de modelagem de sequências, como tradução automática e geração de texto
- Modelos representativos: LSTM (1997) e GRU (2014)
- Como têm uma estrutura essencialmente sequencial, a paralelização é limitada e a eficiência computacional tende a piorar no treinamento com sequências longas
- O Transformer teve sucesso rapidamente em modelagem de sequências ao introduzir, em 2017, um mecanismo de treinamento paralelo por meio da autoatenção
- Depois disso, expandiu-se não só para grandes modelos de linguagem, mas também para visão computacional, aprendizado por reforço e bioinformática
- A autoatenção modela interações entre tokens, mas sua complexidade computacional cresce quadraticamente com o comprimento da sequência
- Em sequências longas ou ambientes com recursos limitados, o custo pode aumentar bastante
- As pesquisas para tornar o Transformer mais eficiente avançaram em várias frentes
- Esparsidade
- Aproximação de baixa classificação
- Tiling
- Mais recentemente, modelos recorrentes paralelizáveis e com escalabilidade mais eficiente voltaram a ganhar espaço
- Modelos de espaço de estados
- Atenção linearizada
- RNNs lineares
- Esses modelos recorrentes mais recentes aproveitam transições dependentes da entrada e apresentam desempenho forte, semelhante ao do Transformer
- São aplicados não só em grandes modelos de linguagem, mas também em imagens e dados baseados em grafos
A ideia central de minLSTM e minGRU
- Este estudo revisita, sob uma perspectiva histórica, os LSTM e GRU, usados por muito tempo antes do Transformer
- Os dois modelos podem ser vistos como exemplos iniciais de modelos recorrentes dependentes da entrada
- Ao remover a parte em que os gates dependem do estado anterior, LSTM e GRU também passam a permitir treinamento paralelo
- Com simplificações adicionais, surgem as versões mínimas minLSTM e minGRU
- Têm menos parâmetros que LSTM e GRU tradicionais
- São totalmente paralelizáveis durante o treinamento
- Mesmo com estrutura simples, mostram desempenho competitivo em várias tarefas
- Entre os comparativos estão modelos recentes, incluindo o Transformer
- Esse resultado questiona a tendência de continuar ampliando a estrutura dos modelos e a complexidade algorítmica
- No apêndice, há implementações de minGRU e minLSTM em plain PyTorch com apenas algumas linhas de código
- Os modelos são leves e fáceis de adaptar
- Têm um formato fácil de usar para iniciantes, profissionais e pesquisadores
1 comentários
Opiniões no Hacker News
Se pensarmos em estruturas recorrentes como filtros IIR e em estruturas exclusivamente feedforward como filtros FIR, parece haver muitos paralelos com processamento digital de sinais.
Filtros IIR muitas vezes exigem muito menos componentes do que filtros FIR que produzem a mesma resposta, enquanto filtros FIR tendem a ser mais fáceis de implementar, controlar e medir.
Aritmética de ponto fixo em hardware me passa uma sensação parecida com a de arquiteturas de aprendizado de máquina que rodam bem em GPUs; e, para a IA realmente avançar para uma etapa exponencial assustadora, parece que será necessária uma arquitetura fundamentalmente recorrente.
Nessa analogia, LSTM se parece mais com um hack intermediário, algo como um FIR com coeficientes dinâmicos; no longo prazo, a abordagem neuromórfica parece ser a melhor em termos de eficiência.
Caso contrário, um filtro IIR decai exponencialmente até 0 ou cresce exponencialmente até o infinito.
Células RNN como LSTM são mais próximas de filtros com decaimento que incluem portas não lineares para impedir o decaimento e “lembrar” alguma coisa.
Filtros FIR são muito mais simples de projetar e conseguem conter memória mesmo sem esses hacks.
Como leigo, minha primeira impressão é que ela se parece não simplesmente com simular neurônios, mas com uma ideia ao estilo de 《The Society of Mind》, em que vários “agentes” ou subsistemas interagem de diferentes maneiras.
A recorrência pode ser mais neuromórfica e importante no longo prazo, mas talvez não seja essencial para a superinteligência.
Dito isso, sou um leigo com conhecimento superficial sobre o assunto, então posso estar completamente errado.
A área como um todo parece insuficiente para o problema de horizonte longo.
A solução amplamente usada hoje é escalar o tamanho, mas isso ainda não chega nem perto da escala de horizonte que o cérebro de um pequeno mamífero processa.
Um modelo pode ter trilhões de parâmetros, mas, em tarefas de longo prazo e em eficiência, o cérebro de um rato ainda provavelmente venceria.
É como se houvesse um algoritmo de busca pequeno, simples e elegante que encontra caminhos quase ótimos dentro de um orçamento computacional pequeno e continua aprendendo.
Dá até inveja imaginar que um dia engenheiros do futuro resolverão esse tipo de problema em um notebook Jupyter de 100 linhas rodando em um laptop.
Se encontrarmos métodos ou algoritmos adequados ao problema de horizonte longo, talvez até um modelo de 2 bilhões de parâmetros consiga superar os modelos atuais em todos os domínios, exceto problemas de raciocínio curtos e extremos.
Como possível solução, pensei em expandir a dimensionalidade do modelo ao longo do tempo, em vez de buscar pesos perfeitos.
Quanto maior a dimensionalidade, maior a capacidade teórica de armazenamento; uma camada poderia funcionar como uma sobreposição de vários pontos anômalos, enquanto outra camada saberia como usá-los, algo parecido com um modelo de duas camadas.
Se imaginarmos que a paisagem de perda tem vários mínimos para uma tarefa específica, talvez seja possível reconfigurar o modelo quando necessário para se mover entre esses mínimos, criando um único modelo com mínimos locais quase infinitos — ou seja, uma memória de dimensão mais alta.
Se o cérebro humano cria e desfaz milhares de conexões todos os dias, talvez essas conexões estejam conduzindo a paisagem de perda interna entre diferentes mínimos necessários ao longo do dia.
Mas não é preciso um cérebro de rato para classificar e-mails como spam.
Modelos grandes com mais de 2 bilhões de parâmetros ainda são pesados demais para rodar de forma prática e se parecem mais com ferramentas especializadas; há muito espaço para modelos inteligentes e pequenos que resolvam apenas problemas úteis em hardware e conjuntos de dados limitados.
Modelos que mudam de tamanho conforme a necessidade também já foram experimentados, mas, com orçamentos de energia limitados, eram ineficientes demais ou difíceis demais de otimizar.
Ainda assim, se quisermos continuar escalando para tamanhos cada vez maiores, parece provável que eventualmente precisaremos desse tipo de modelo.
O verdadeiro gargalo talvez seja um avanço no próprio treinamento.
A perda por retropropagação é simples demais para otimizar perfeitamente até mesmo os modelos atuais, e será ainda mais insuficiente para modelos maiores no futuro.
Como não há garantia de que exista uma alternativa melhor, a abordagem atual de aprendizado de máquina pode ter um limite fixo.
O fato de a discussão ficar espalhada por vários lugares é ao mesmo tempo uma vantagem e uma desvantagem
Achei interessante um texto de François Chollet que vi no Twitter/X: https://x.com/fchollet/status/1841902521717293273
“Um trabalho interessante para reviver RNNs. https://arxiv.org/abs/2410.01201 — em geral, o fato de arquiteturas recentes vindas de direções diferentes ficarem mais ou menos no mesmo nível dos Transformers é evidência de que, no paradigma de ajuste de curvas, ou seja, em deep learning, a arquitetura não é fundamentalmente importante
Ajuste de curvas é embutir um dataset em uma curva. O fator essencial é o dataset, não certos enfeites hardcoded que restringem o formato da curva. Se a expressividade da curva for suficiente, em um ambiente de dados em larga escala todas as arquiteturas convergem para o mesmo desempenho”
Há muito tempo já existiam muitos datasets, e o avanço dos últimos 10 anos veio de como projetar a curva e ajustá-la aos dados, e de como usar mais computação
Talvez haja um sentido teórico em que modelos antigos, usando algo como 1 milhão de vezes mais computação, consigam resolver novos problemas do mesmo jeito, mas chamar isso de “apenas otimização” é ignorar a importância da análise de complexidade no design de algoritmos, algo parecido com dizer que bogosort e quicksort são iguais
Quando se pensa em camadas e mais camadas de técnicas de regularização para reduzir overfitting, e até em estruturas mais agentivas como Deep Q Learning ou o design do espaço de busca do OpenAI o1, a visão de que é simples otimização fica pouco convincente
Só com mais computação, arquiteturas antigas não teriam conseguido resolver esses problemas
Há afirmações como “totalmente paralelizável durante o treinamento e 175 vezes mais rápido em sequências de comprimento 512”
Mesmo que várias arquiteturas acabem convergindo para a mesma perda com o tempo, considerando o custo de GPUs em larga escala, encontrar a arquitetura que converge mais rapidamente tem bastante valor
CNNs dominaram visão computacional não porque faziam algo que redes neurais densas não podiam fazer, mas porque removiam muitas conexões pouco importantes, permitindo gastar o orçamento de treinamento em redes mais profundas
Da mesma forma, Transformers são excelentes porque permitem treinar redes enormes com alguma eficiência
Este artigo também mostra que, se tornarmos o treinamento de RNNs muito mais rápido, elas de fato podem ser bem boas
O grande gargalo é velocidade e eficiência de treinamento, mais do que a expressividade real da arquitetura
Uma MLP gigantesca também poderia produzir os mesmos resultados que um Transformer
O problema é a escala, e o fato de não conseguirmos treinar uma MLP grande o bastante
Transformers são úteis por serem uma otimização de desempenho
Não queremos retreinar uma vez por mês, mas retreinar continuamente, e queremos que não seja um agente conversando com 5 LLMs, mas milhares de LLMs operando em conjunto
A resposta parece estar mais para “não”
Esse tipo de RNN pode ser bom o suficiente em alguns casos e até superar Transformers em outros, mas provavelmente não substituirá Transformers de forma universal em LLMs
Por exemplo, se um usuário fornecer um texto longo e disser “traduza isto para o alemão”, um Transformer pode olhar para trás em todo o histórico
Mesmo que uma RNN tenha comprimento de contexto ilimitado, a quantidade de informação que ela lembra em qualquer ponto é limitada ao que está dentro do estado oculto
Artigo relacionado: https://arxiv.org/abs/2402.01032
Transformers também acabam presos a um estado finito; esse estado apenas é organizado de outra forma
Há o problema de precisão da informação sobre quantos bits estados antigos precisam transmitir, o problema de atenuação em que informações mais antigas vão ficando mais fracas, e o problema de mistura em que representações se combinam ou se somam
O que me interessa é se, fixado o número de operações de ponto flutuante, uma RNN consegue competir com um Transformer, mas o artigo original não parece tratar bem desse ponto
Em vez disso, se você disser “traduza o seguinte para o alemão”, o que é necessário é lembrar a tarefa atual e uma quantidade muito menor da entrada recente
Claro que também é preciso ter a capacidade de produzir a saída em paralelo enquanto processa a entrada
Pelo que entendi, o que permitiu o boom posterior do Transformer foi ele ter resolvido dois grandes problemas das RNNs
O desaparecimento do gradiente limitava o contexto e o tamanho do modelo, e a dificuldade de paralelização limitava o tamanho dos dados de treinamento
Fico curioso se hoje existem soluções para esses dois problemas
Como as RNNs ficam atualizando e sobrescrevendo a memória, elas precisam prever com antecedência quais informações serão úteis mais tarde e armazená-las
Em casos de uso conversacionais, como o ChatGPT, isso é uma vantagem enorme do Transformer
Se você fornece contexto e faz perguntas ao longo de vários turnos, só mais para o fim da sequência de tokens é que se descobre qual contexto era importante para uma pergunta específica
Mais precisamente, deveríamos chamar isso de vantagem dos modelos baseados em atenção, e também há modelos híbridos, como o Jamba, que combinam as duas abordagens com sucesso
A LSTM, proposta pela primeira vez em 1997, apresentou uma solução antes: https://www.semanticscholar.org/paper/Long-Short-Term-Memory...
É interessante como esse conhecimento parece ter sido quase esquecido
Por volta de 2014, LSTM era extremamente popular: https://karpathy.github.io/2015/05/21/rnn-effectiveness/
https://colah.github.io/posts/2015-08-Understanding-LSTMs/
Ainda assim, ao simplificar a unidade recorrente, parece ter melhorado ambos
É um trabalho bastante inteligente e interessante
O artigo continua chamando isso de “arquitetura de 10 anos”, mas, na prática, ela ainda é usada muitíssimo porque é fácil de adaptar a vários domínios
Também não é totalmente justo colocá-la como “concorrente” do Transformer, porque Transformer e RNN não são mutuamente exclusivos, e há muitas formas de combinar os dois
Melhorias em RNNs podem levar a melhorias em vários lugares inesperados
Gosto muito da simplicidade da arquitetura minGRU
Basicamente, ela cria, a partir do token, um estado oculto proposto e coeficientes de mistura por meio de transformações lineares separadas, e os mistura com
torch.lerp(proposed_hidden_state, previous_hidden_state, mix_factors)Como o estado oculto proposto e os coeficientes de mistura de cada camada dependem apenas do token atual, se a sequência inteira é conhecida de antemão, como no treinamento, dá para calcular tudo em paralelo e depois combiná-los em tempo linear com uma varredura paralela
O fato de isso ser competitivo com Transformers e modelos de espaço de estados em experimentos pequenos satisfaz a sensibilidade de quem acredita que “o melhor PR é o PR que remove código”
Ainda assim, até escalarmos isso para uma quantidade de parâmetros e dados parecida com a dos melhores modelos atuais, não dá para saber se é um Breakthrough com B maiúsculo
Pelo apêndice, parece que todos os cálculos são feitos no espaço logarítmico, supostamente por estabilidade numérica
Não consigo formar bem a intuição se isso é porque, ao remover o tanh da saída e calcular no espaço linear, os valores podem explodir
Também é interessante o simples fato de esse tipo de modelagem de sequência funcionar
É como rasgar todas as páginas de um livro, entregá-las em ordem aleatória e, sem saber nada sobre as páginas anteriores, pedir para criar um vetor para cada página e “uma forma de misturar esse vetor com o vetor de todas as páginas anteriores”, para então eu misturar tudo de volta na ordem correta e avaliar o quão bom o vetor final é como resumo do livro inteiro
Hoje são usadas apenas duas camadas lineares densas para transformar o token em um estado oculto proposto e em coeficientes de mistura por interpolação; fico curioso sobre o que aconteceria se essa transformação fosse feita por uma MLP em vez de uma única camada linear
No mínimo, parece que surgiriam problemas do tipo lema do bombeamento
Se
[the ][cat ][is ][black ]produz uma saída próxima de certo vetor, eu pensaria que uma entrada com[the ][cat ][is ][black ]repetido três vezes deveria ficar ainda mais próxima desse vetor e mais distante de um vetor do tipo “por que a mesma frase foi repetida três vezes?”Sem uma mistura não linear entre os tokens de entrada e o estado oculto, parece que muita similaridade linear permaneceria entre sequências de tokens parecidas
Se for uma simplificação que melhora o treinamento e o desempenho, ela prepara o palco para empilhar de novo complexidade em um nível mais alto
Há um motivo para o ajuste por máxima verossimilhança ser sempre feito como log-verossimilhança
Fiz uma RNN como projeto de faculdade e, na época, eu tinha interesse por tecnologias históricas desaparecidas, então achei que precisava aproveitar a oportunidade porque, depois de sair da universidade, provavelmente nunca mais ouviria falar de redes neurais
O que construí funcionava, mas era bem simples e extremamente lento em um laptop antigo
Nada poderia ser rápido naquele laptop, mas lembro que a RNN era consideravelmente mais lenta que uma rede feedforward
Eu tinha certeza de que aquilo era uma tecnologia morta, uma curiosidade acadêmica dos anos 1980 e 1990, então foi até estranho ver o quão rápido isso mudou
Por volta de 2000, escrevi minha dissertação de mestrado sobre aprendizado de sistemas dinâmicos, por exemplo RNNs para fins de controle, e na época era um tema bem novo
Implementei backpropagation em C++ e deixei rodando a noite toda; por causa dos gradientes pequenos, era realmente lento
A arquitetura da rede também era uma única camada oculta com algo como 5 ou 10 neurônios
Redes neurais eram um tema pequeno em que você tinha sorte se conseguisse encontrar uma disciplina; pisquei por um instante e, quando olhei de novo em 2015, tudo estava completamente diferente
É louvável que os autores, entre eles Yoshua Bengio, tenham encerrado o artigo com uma pergunta, em vez de sugerir que sabem a resposta.
Esses modelos são muito pequenos mesmo pelos padrões acadêmicos, então não dá para considerar que qualquer resultado necessariamente escale até o porte dos LLMs atuais.
A conclusão central é que redes da família RNN também podem ser treinadas de forma tão eficiente quanto as alternativas modernas, mas a competitividade do desempenho resultante só foi verificada em pequena escala.
Acho que a conclusão também deveria ser “o fato de o desempenho resultante ser competitivo só foi verificado em pequena escala”.
Como os modelos do artigo foram feitos para serem paralelizáveis, eles não são RNNs “de verdade” pelos mesmos motivos descritos em https://arxiv.org/abs/2404.08819, e portanto, teoricamente, são menos poderosos que RNNs tradicionais.
Eles têm dificuldade em algumas classes de problemas em que RNNs originalmente se saíam bem.
Por outro lado, https://arxiv.org/abs/2405.04517 inclui componentes de RNNs “de verdade” e mostra uma grande melhoria em problemas de rastreamento de estado, nos quais Transformers têm dificuldade.
Ainda dependem do estado oculto anterior; apenas os gates não dependem dele.
As equações básicas de RNN podem ser paralelizadas com um algoritmo de varredura paralela de prefixos.
Não li o artigo em detalhes, mas seria bom se alguém pudesse responder.
Como foi dito, se você remove o estado oculto de uma RNN, o que sobra? Um MLP que faz previsão a partir de um único token?
Ainda não assimilei totalmente o artigo, mas, no caso do GRU, parece significar que o mascaramento da atualização do estado oculto — ou seja,
z_ter_tnas fórmulas do artigo — depende apenas da nova entrada, e não da soma da entrada com o estado oculto anterior.Ainda há estado oculto.
É algo parecido, em certa medida, com o que foi feito no Mamba.