2 pontos por GN⁺ 2024-03-17 | 1 comentários | Compartilhar no WhatsApp
  • Quiet-STaR é um método de treinamento que usa texto comum da web como sinal de aprendizado, em vez de datasets de QA com resposta correta, para treinar um modelo de linguagem a gerar justificativas internas antes de falar
  • Enquanto o STaR existente aprendia selecionando apenas justificativas que levavam à resposta correta, o Quiet-STaR recompensa justificativas que melhoram a previsão de texto futuro, aproveitando a inferência implícita em texto não estruturado
  • Ele faz amostragem paralela de justificativas em todas as posições de token e mistura previsões com e sem justificativa para aprender na direção de acertar melhor o próximo texto real
  • Ao continuar o pré-treinamento do Mistral 7B com OpenWebMath e C4, sem fine-tuning específico por tarefa, a acurácia subiu de GSM8K 5,9%→10,9% e de CommonsenseQA 36,3%→47,2%
  • O efeito apareceu com mais força em tokens difíceis de prever, e houve uma tendência de maior melhora no desempenho de raciocínio direto quanto maior o número de tokens usados no pensamento interno

Usando texto comum como alvo de aprendizado de raciocínio

  • Quando pessoas escrevem ou falam, elas às vezes param por um instante para pensar, e boa parte do significado do texto está nas razões e implicações que não aparecem explicitamente entre as frases
  • Abordagens anteriores focadas em raciocínio se concentravam principalmente em responder perguntas ou concluir tarefas de agentes, mas o Quiet-STaR parte da ideia de que o raciocínio está implicitamente presente em quase todo texto
  • Exemplos de raciocínio implícito incluem:
    • etapas intermediárias não explicitadas em uma demonstração
    • teorias sobre o estado mental da outra pessoa em uma conversa

Expandindo o STaR para modelagem de linguagem

  • STaR (Self-Taught Reasoner) é um método que, em datasets de perguntas e respostas, amostra justificativas com base em poucos exemplos e aprende apenas com as que levam à resposta correta, permitindo resolver iterativamente problemas mais difíceis
  • O STaR tem a limitação de depender de dados cuidadosamente curados, como datasets de QA de alta qualidade
    • esses datasets só podem cobrir tarefas específicas de raciocínio
    • em alguns casos, é necessário fornecer a própria justificativa ou uma tarefa específica de raciocínio
  • Em vez de uma tarefa específica como QA matemático, o Quiet-STaR treina o modelo de linguagem para gerar justificativas que ajudem a inferir o texto futuro em grandes volumes de texto da internet
  • Essa abordagem é construída sobre a intuição do paradigma de modelagem de linguagem de que “modelos de linguagem são aprendizes multitarefa não supervisionados”

Procedimento de treinamento: think, talk, learn

  • O Quiet-STaR opera em três etapas
    • think: gera em paralelo justificativas após cada token do texto para explicar o texto futuro
    • talk: mistura a previsão do próximo token com e sem justificativa
    • learn: com uma recompensa baseada em REINFORCE, aumenta a probabilidade de justificativas que ajudam a prever o texto futuro e descarta as que atrapalham
  • Durante o treinamento, para cada thought, o modelo marca o início e o fim do pensamento com metatokens treináveis como START e END
  • Depois de gerar a justificativa, o mixing head decide o quanto essa previsão baseada na justificativa deve influenciar a previsão dos tokens futuros

Desafios de implementação para fazer o modelo pensar em todos os tokens

  • Em texto comum, é necessário gerar justificativas para cada token, o que tem alto custo computacional
  • Para reduzir isso, o trabalho propõe e implementa um algoritmo de amostragem paralela por token que gera justificativas em todas as posições de token de uma string
  • O trabalho também lida com o problema de que o modelo de linguagem não sabe, desde o início, como gerar ou usar pensamentos internos
    • introduz metatokens customizados que indicam o início e o fim do pensamento
    • faz o modelo aprender quando deve gerar justificativas e quando deve prever com base nelas
  • Para evitar um aprendizado míope focado apenas no próximo token, usa uma loss não míope (non-myopic loss) que inclui vários tokens à frente
  • Uma técnica estendida de teacher-forcing também incorpora ao treinamento previsões além do token imediatamente seguinte

Configuração experimental e resultados

  • Os experimentos foram realizados aplicando Quiet-STaR ao Mistral 7B
  • No contínuo pré-treinamento, foram usados os datasets de texto da web OpenWebMath e C4 (Colossal Clean Crawled Corpus)
  • Houve melhora no desempenho de raciocínio direto em zero-shot, sem fine-tuning específico por tarefa
    • GSM8K: 5,9%→10,9%
    • CommonsenseQA: 36,3%→47,2%
  • Tanto em GSM8K quanto em CommonsenseQA, o ganho de desempenho aumentou de forma consistente à medida que crescia o número de tokens de pensamento usados durante o treinamento com Quiet-STaR
  • Em texto natural, houve melhora na perplexity de tokens difíceis de prever
  • As justificativas geradas ajudaram de forma desproporcional principalmente os tokens difíceis de prever

Contribuições do Quiet-STaR

  • O Quiet-STaR generaliza o STaR para aprender raciocínio a partir de diversos dados de texto não estruturado, em vez de tarefas de raciocínio curadas
  • Com um algoritmo de amostragem paralela, ele torna escalável o procedimento de treinamento que gera justificativas em todas as posições de token de uma string
  • Metatokens customizados que indicam o início e o fim do pensamento são usados para fazer o modelo aprender o timing de geração de justificativas e de previsão baseada nelas
  • O mixing head decide posteriormente o quanto a previsão do próximo token vinda de um determinado thought deve influenciar a previsão atual
  • Uma loss de modelagem de linguagem que inclui vários tokens à frente melhora o efeito do pensamento
  • Em várias tarefas, usar pensamentos faz o modelo prever melhor tokens difíceis do que um modelo treinado com o mesmo texto da web, e o ganho aumenta com thoughts mais longos

1 comentários

 
GN⁺ 2024-03-17
Opiniões no Hacker News
  • Por exemplo, parece intuitivamente óbvio que uma rede com 50 camadas de profundidade só consegue raciocinar cerca de 50 etapas em perguntas simbólicas
    O que parece mais complexo ocorre porque o modelo executa 50 etapas em um ou mais subespaços que aprendeu, e essa única “etapa” pode fazer mais trabalho do que uma etapa humana
    Humanos conseguem raciocinar além disso, mas para isso precisam de pensamento e reflexão de verdade, às vezes até de um bloco de notas
    Esperar que o ChatGPT faça multiplicação de 4 dígitos corretamente sem nenhum pensamento ou “papel” é algo bem surpreendente, e, na prática, não há tanta gente que faça esse tipo de cálculo de cabeça

    • Isso está certo, mas também é preciso considerar o elemento autorregressivo
      No exemplo, são 50 etapas por execução do modelo, e o modelo é executado uma vez para cada token de saída
      Por isso, calcular quanto o modelo realmente consegue “pensar” é mais complicado
      Claro, quando um token é emitido, na configuração padrão ele fica comprometido com esse token, mas isso não significa que ele não continue “pensando” ao gerar os tokens seguintes
      O contexto e os tokens de saída anteriores são a entrada da próxima etapa do modelo, então podem ser vistos como o bloco de notas mencionado
    • Este artigo segue essa intuição e investiga os limites dos transformers em tarefas sintéticas. Isso inclui tarefas que exigem várias etapas de raciocínio, como multiplicação: https://arxiv.org/abs/2305.18654
      Os resultados dos experimentos sugerem que modelos de linguagem grandes baseados em transformers tendem a resolver raciocínio composicional em múltiplas etapas reduzindo-o a correspondência de subgrafos linearizados, em vez de tratá-lo como uma capacidade sistemática de resolução de problemas
      Além disso, por meio de um argumento teórico sobre problemas abstratos de raciocínio em múltiplas etapas, mostra que o desempenho da geração autorregressiva pode cair rapidamente à medida que a complexidade da tarefa aumenta
    • Aqui se está deixando passar um detalhe importante: o número de tokens. Mesmo que a profundidade da rede dê 50 “etapas”, ainda é possível usar tokens adicionais
      Supondo que a fita não acabe, não há motivo para modelos de linguagem grandes ficarem limitados apenas a operações simples
    • Se você pensar em como a retropropagação funciona, essa explicação não faz muito sentido. As camadas não são limitadas a operar apenas de forma independente
      E, considerando que o modelo é autorregressivo, ela também não se encaixa muito bem
  • Edsger Dijkstra tinha um estilo de inglês preciso e, embora sua língua materna fosse o holandês, acho que usava o inglês melhor do que muitos falantes nativos
    Em algum EWD, ele relembrou que, quando criança, aprendeu: “não comece a falar antes de já saber como vai terminar a frase”
    Parece haver uma relação causal entre essas duas observações

    • Quando eu era jovem, morei um tempo no exterior e fiz aulas de idioma; havia na mesma turma um homem de meia-idade que era muito fraco no novo idioma, mas sempre conseguia fazer as pessoas rirem
      Eu ficava curioso para saber como ele fazia aquilo e, um dia, almoçando juntos, ele me explicou seriamente
      Ele disse que nunca soltava uma única frase antes de tê-la dito por completo na cabeça, lembrando as palavras várias vezes, refinando a frase e imaginando como o interlocutor reagiria; só falava quando conseguia visualizar a reação que queria
      Esse conselho, ao mesmo tempo, apontava diretamente que eu falava sem pensar, e pareceu ter lido e respondido exatamente a uma pergunta que eu nem tinha feito
      Quando tentei esse método, ele recompensou o esforço, mas nunca consegui transformá-lo em hábito, e ainda tendo a deixar a boca sair na frente da mente
    • Para mim, isso soa como um inferno. É um jeito de eliminar completamente a espontaneidade e a sensação de estar presente no momento
      Antigamente eu tentava pensar obsessivamente no que ia dizer antes de falar e, embora eu fosse socialmente meio desajeitado, isso não ajudava em nada
      Gosto da escrita por ser assíncrona, permitindo organizar e corrigir os pensamentos com precisão, mas em situações sociais isso atrapalha muito
    • Vejo duas coisas. Primeiro, escrever e falar são coisas diferentes. A escrita é assíncrona, então dá para pensar antes de escrever e revisar
      Segundo, falar em uma língua que não é a sua materna faz você pensar mais profundamente no que vai dizer a seguir. Usa-se menos expressões idiomáticas, concentra-se mais em saber se o significado está sendo transmitido corretamente e parece haver mais sensibilidade para não ofender a outra pessoa
      Isso não é nenhuma novidade. Áreas como a ciência também foram feitas em grande parte em línguas que não eram a materna dos pesquisadores, como francês, alemão e latim
      Além disso, o jargão específico de cada área também conta. Se eu simplesmente disser “Kubernetes is een open-bron houder orkestratiesysteem voor het automatiseren van de inzet, schalen, en het beheer van zachte waren”, metade do público da minha língua materna ficará confusa
    • Gosto de ler os EWD dele. Um professor que trabalhou com ele certa vez disse que, nas provas, ele fazia os alunos usarem caneta
      Será que era para reduzir a probabilidade de os alunos cometerem erros?
    • Eu também aprendi inglês por livros didáticos, e uma das coisas mais estranhas para mim era falantes nativos confundirem rotineiramente “their, there, they’re”
      Eu nem imaginava que fosse um erro que eu pudesse cometer, e me parece parecido com confundir ‘wet’ e ‘vet’
      Definitivamente há uma diferença entre o uso da língua por nativos e por não nativos
  • Pensei nisso há alguns dias: em sistemas baseados em grandes modelos de linguagem, a forma como o padrão de inferência de cadeia de pensamento contribui para melhorar o desempenho parece se alinhar ao modelo dos dois sistemas da mente em Thinking, Fast and Slow, de Kahneman
    Não releio o livro há alguns anos, mas lembro que ele dizia que usamos principalmente o “System 1” para pensamentos que exigem pouco esforço e pouco cálculo. Por exemplo, 1+1=? ou “o céu é ____”
    Já o “System 2” é usado para tarefas deliberadas, conscientes e de alta carga cognitiva. Coisas que exigem concentração ou recursos mentais, como multiplicações grandes, problemas de raciocínio, uso de ferramentas e tomada de decisões em geral
    A crítica de que “grandes modelos de linguagem são papagaios estocásticos e não têm inteligência” na verdade me soa como a observação de que o modelo foi equipado para usar apenas o “System 1”
    Quando se pede a um grande modelo de linguagem que pense passo a passo, você lhe dá um espaço de trabalho para anotar seus pensamentos e fazer com que ele os leve novamente em conta na previsão do próximo token; isso vira uma espécie de System 2 rudimentar, isto é, uma sandbox para reflexão
    Quando humanos usam o System 2, também mantêm um diorama do mundo na frente da mente e simulam como o ambiente reagirá a determinadas ações. Imaginamos o que um amigo responderá, como uma chapa de aço vai entortar sob força, como o código vai quebrar, como um pneu vai aderir ao solo, exploramos uma árvore de possibilidades e escolhemos a ação com maior recompensa
    Não sou especialista, mas este artigo também parece ter reconhecido um enquadramento parecido. Especialmente nos modelos de ação vistos em robótica, talvez passem a entrar mecanismos iterativos de reflexão/simulação

    • Deixo claro antes: isso pode soar como algo totalmente inventado, uma anedota não científica, ou uma fala ingênua/imatura. Felizmente, ninguém precisa acreditar
      Algumas semanas atrás, num estado em que eu não estava nem totalmente acordado nem dormindo, entrei num ciclo em que percebia o cérebro de pensamento rápido cuspindo palavras e conceitos à velocidade da luz, e o cérebro de pensamento lento transformando aquilo em frases reais
      Parecia que eu via a cadeia de pensamento como uma lista de ideias, que era preenchida absurdamente rápido e depois resumida em um “pensamento” propriamente dito, composto por uma lista de palavras cuidadosamente escolhidas
      Desde então passei a acreditar na visão de que aquilo que reconhecemos como pensamento é a saída selecionada de um processo de brainstorming imediatamente anterior
    • Eu não diria que grandes modelos de linguagem não têm inteligência alguma. Eles se baseiam em previsão, e acredito que a capacidade que reconhecemos como inteligência é justamente a capacidade de prever. O córtex também evoluiu para fazer previsões
      Ainda assim, inteligência não é tudo ou nada; ela está em um espectro. Minha definição é “o grau de capacidade de prever corretamente resultados futuros com base em experiências passadas”, e ela depende dos mecanismos que um sistema, biológico ou artificial, pode usar para reconhecer padrões e fazer previsões
      Inteligência também depende de experiência. Aquilo que não foi experienciado não pode ser reconhecido e, portanto, também não pode ser previsto. Ainda assim, talvez fosse melhor termos vocabulário para separar capacidade preditiva e experiência, em vez de agrupar ambas como “inteligência”
      Ao comparar o aparato preditivo de grandes modelos de linguagem com o cérebro humano, muita coisa falta. “Pensar antes de falar” é uma delas, e abordagens como Q* ou árvores de pensamento devem ajudar nisso
      Talvez estruturas recorrentes como o loop tálamo-córtex também possam ser encaixadas na abordagem de grandes modelos de linguagem/transformers, mas vejo que a peça decisivamente ausente para capacidades em nível humano é o aprendizado online: a capacidade de agir, ver o resultado e aprender com ele
      Com as abordagens atuais talvez seja possível criar uma AGI “aprendida em livros”, mas habilidades não podem ser aprendidas sem prática e experimentação. Seja como desenvolvedor ou qualquer outra coisa, não se aprende apenas lendo livros ou analisando resultados feitos por outras pessoas; é preciso entender os resultados que suas próprias previsões e ações produzem na realidade e aprender com isso
    • Andrej Karpathy também citou o mesmo livro e disse algo no mesmo sentido no vídeo de novembro de 2023 “[1hr Talk] Intro to Large Language Models”
      Link para o trecho relevante: https://youtu.be/zjkBMFhNj_g?t=2120
    • A maior parte das teses desse livro não foi refutada? Pelo que sei, algumas foram refutadas pelo próprio autor
      Li com prazer e achei que tinha muitos insights, mas depois um amigo da área me disse que o livro não é preciso e que o autor “retirou” algumas das afirmações
    • As pessoas frequentemente dizem que grandes modelos de linguagem apenas produzem reflexivamente palavras — mais precisamente, fluxos de tokens — com base em textos que leram antes ou em uma janela parcial de suas próprias respostas, então não estão realmente pensando. Isso é verdade
      Mas, quando eu falo, também tenho a experiência de não saber o que vou dizer até ouvir o que eu disse
      Às vezes eu pondero e planejo testando frases na cabeça, mas, na maior parte do tempo, parece que sou mais parecido com um grande modelo de linguagem gerando um fluxo de tokens
  • Mais um artigo de aprendizado por reforço com uma linha de base péssima. No GSM8k, o formato de saída é bastante específico, mas eles usaram um Mistral com ajuste não instrucional, em zero-shot
    Depois da melhoria, a acurácia foi de 11%, mas prompting few-shot chega a 37%[1]. Com prompting, o GPT-4 consegue algo em torno de 97%
    [1]: https://huggingface.co/spaces/HuggingFaceH4/open_llm_leaderb...

    • Para cientistas sérios, também é boa ciência pegar um método e uma linha de base conhecidos e melhorá-los
      Talvez seja possível escalar até o estado da arte, mas o objetivo pode ser apenas medir o efeito das mudanças deles em uma configuração simples
      Deixe para os engenheiros a tarefa de misturar várias combinações de sistemas para chegar ao estado da arte
  • Isso tem relação com o famoso Q* da OpenAI, isto é, o modelo q-star? Os autores deste artigo não parecem ter relação
    Será que é só coincidência de nome?

    • Parece que fizeram um trocadilho com o mesmo termo inflado
    • Também pensei o mesmo. O artigo STaR que este artigo expandiu saiu em 2022, então no mínimo é possível que o q-star também tenha se baseado nele
      Mas o Q pode ter outro significado
  • Esta é a peça que faltava para treinar uma IA com capacidade de raciocínio
    Há muitas tarefas em que a resposta é conhecida, mas as etapas de raciocínio estão ausentes. Com este método, é possível chegar a essa capacidade com menos dados anotados
    A parte interessante é que, mesmo que os pensamentos gerados sejam difíceis de entender para humanos, eles podem ajudar muito mais a chegar à resposta correta
    Se isso acontecer, teremos criado algo mais inteligente do que nós

  • Hoje de manhã tentei algo basicamente parecido no nível do prompt, mas o resultado foi péssimo. A ideia bruta na minha cabeça, porém, ia mais longe: introduzir metatokens de fluxo de controle que ajudassem um grande modelo de linguagem a reexplorar seu próprio contexto
    Desse ponto de vista, o contexto poderia ser repensado como um mapa mental estruturado que se autoedita, e o contexto linear em um determinado momento T seria o rastreamento de execução, até então, da exploração desse mapa mental
    Alguns metatokens poderiam ter efeitos colaterais como destacar, estruturar, resumir e esquecer partes do contexto
    Isso poderia permitir saída estruturada nativa, implementação de memória etc., sem formatos sintáticos como json nem construções de programação no estilo LMQL
    O objetivo não é apenas dar capacidade de lógica/raciocínio aos grandes modelos de linguagem, mas dar a eles meios de criar sua própria arquitetura cognitiva
    Se também implementarmos memória ou scratchpad usando tokens ... em saída estruturada, ainda ganhamos de brinde a possibilidade de inspecionar essa estrutura cognitiva
    Claro, não tenho a menor ideia de como implementar isso. Sou só um turista em machine learning

  • Eles não citam o artigo sobre computação variável aprendida em RNNs aplicada à modelagem de linguagem [1], publicado quase 8 anos antes do trabalho deles
    [1] https://openreview.net/pdf?id=S1LVSrcge
    A Microsoft também tinha algo parecido naquela época para reconhecimento de imagens. Usava CNN na entrada e fazia computação variável na etapa de classificação

  • Usar o Base Mistral 7B na avaliação é quase inadequado. Uma equipe da Intel também tentou usar exatamente o mesmo truque no NeuralChat https://huggingface.co/Intel/neural-chat-7b-v3#quantitative-...

  • A frase “a maior parte do significado de um texto está escondida nas entrelinhas. Se o leitor não entende por que aquelas frases aparecem no documento, ele tem apenas uma compreensão superficial” não me parece verdadeira para a forma como eu leio, nem para a maioria das pessoas que conheço
    Quase sempre temos um modelo de mundo, e entendemos em alguma medida por que essas frases aparecem em um livro
    Ao ler um livro-texto de mecânica dos fluidos, posso não entender a matemática, mas sei que aquelas frases são enunciados matemáticos que ajudam a aprender a teoria e seguem um padrão para ensinar conceitos importantes
    Por exemplo, conceitos se constroem sobre conceitos anteriores. A equação de Bernoulli aparece porque antes veio a lei da conservação de energia, e está ali porque se presume que eu entendo esta última