1 pontos por GN⁺ 2024-10-04 | 1 comentários | Compartilhar no WhatsApp
  • 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

 
GN⁺ 2024-10-04
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.

    • Do ponto de vista de processamento de sinais, dependendo da posição dos polos da função de transferência do filtro transformada em z, a saída de um IIR tem uma região de estabilidade estreita, então normalmente precisa ser projetada com cuidado.
      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.
    • Seria bom se alguém explicasse de forma simples o que é a abordagem neuromórfica e como ela contribui para IA/AGI.
      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.
    • Há algum tempo venho pensando que, sem uma arquitetura fundamentalmente recorrente, a IA não chegaria a uma etapa exponencial assustadora; mas agora fico me perguntando se janelas de contexto enormes por si só talvez já sejam suficientes.
      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.
    • Fico em dúvida se implementar filtros IIR em larga escala em arquiteturas como as GPUs atuais conseguiria entregar bom desempenho e escalabilidade.
  • 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.

    • Concordo, falta à área esse santo graal que é o problema de horizonte longo.
      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”

    • Discordo quase totalmente da afirmação “o fator essencial é o dataset, não certos enfeites hardcoded que restringem o formato da curva”
      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
    • Não li o artigo inteiro, mas ele parece focar mais em otimização computacional do que no tamanho do dataset
      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
    • Um dos grandes papéis desses vários enfeites é restringir o espaço de treinamento
      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
    • Pensando que MLPs são aproximadores universais de funções, isso parece bastante natural
      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
    • No fim, o ponto central será eficiência computacional
      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

    • “A quantidade de informação lembrada é limitada ao estado oculto” não é diferente no caso dos Transformers
      Transformers também acabam presos a um estado finito; esse estado apenas é organizado de outra forma
    • Esse problema incomoda as RNNs desde os anos 90
      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 contra-argumento é que, se aumentarmos o tamanho do estado oculto o suficiente, ele pode conter uma representação comprimida de sequências do comprimento desejado
      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
    • Não é necessário dizer “traduza para o alemão” depois de um texto longo
      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

    • O Transformer consegue, a qualquer momento, recuperar informações anteriores que só se tornaram úteis depois
      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
    • O desaparecimento ou a explosão do gradiente afetavam não só as RNNs, mas todas as estruturas profundas
      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/
    • Pelo que li por alto do artigo, ele mira especialmente em paralelização e treinamento rápido, mais do que no “desaparecimento do gradiente”
      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

    • À primeira vista, essa arquitetura parece impedir a capacidade básica de reconhecer sequências de tokens
      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
    • Não vejo isso como um Breakthrough com B maiúsculo, mas redes neurais recorrentes estão em toda parte
      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
    • O espaço logarítmico é importante quando as probabilidades dos tokens têm uma faixa de valores muito ampla, isto é, diferenças de várias ordens de grandeza
      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

    • Dá uma sensação de estar velho
      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.

    • É preciso dar ênfase ao “não necessariamente”.
      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.

    • Estes também são RNNs de verdade.
      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?

    • O estado oculto não foi removido completamente; ele foi removido apenas do gate de entrada, do gate de esquecimento e do gate de atualização.
      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_t e r_t nas fórmulas do artigo — depende apenas da nova entrada, e não da soma da entrada com o estado oculto anterior.
    • Não foi removido completamente; apenas certas dependências foram removidas para que o cálculo possa ser feito com varredura paralela.
      Ainda há estado oculto.
      É algo parecido, em certa medida, com o que foi feito no Mamba.
    • Dando uma olhada por alto, parece que eles ajustaram a atualização de estado para que ela possa rodar com varredura paralela, sem precisar ser executada sequencialmente.
    • O segredo é manter a dependência recursiva linear, o que permite o treinamento paralelo.