Treinando a capacidade de auto-correção de modelos de linguagem com aprendizado por reforço
(arxiv.org)- O SCoRe do Google DeepMind é uma abordagem de aprendizado por reforço online multi-turno em que o LLM aprende a partir de trajetórias de revisão geradas por ele mesmo, para desenvolver a capacidade de corrigir suas próprias respostas sem feedback externo
- Métodos tradicionais de SFT são vulneráveis à incompatibilidade de distribuição, em que os erros dos dados de treino divergem dos erros reais do modelo, ou ao colapso de comportamento, em que quase não há correção na segunda resposta
- O SCoRe primeiro prende a distribuição da primeira tentativa para ficar próxima ao modelo base, inicializa a segunda tentativa para buscar melhorias e depois reforça o comportamento real de correção com reward shaping
- Em experimentos com Gemini 1.0 Pro e Gemini 1.5 Flash, o desempenho de auto-correção melhorou em 15,6 p.p. no MATH e 9,1 p.p. no HumanEval em relação ao modelo base
- Só prompting ou SFT offline não bastam para produzir auto-correção intrínseca de forma estável, sendo necessário um desenho de aprendizado por reforço sobre dados auto-gerados que evite colapso
O problema de auto-correção que o SCoRe busca resolver
- LLMs são úteis em tarefas de raciocínio como matemática e programação, mas ainda não conseguem executar de forma estável, em tempo de teste, a metaestratégia de revisar e corrigir a própria resposta
- Auto-correção é a capacidade de o modelo revisitar sua resposta inicial e transformá-la em uma resposta final melhor
- Este trabalho foca na configuração de auto-correção intrínseca, em que o modelo corrige sua própria resposta sem entrada externa
- Em tempo de teste, não são usados verificador de resposta nem feedback externo
- Durante o treinamento, assume-se acesso a uma função de recompensa que avalia se a saída do modelo está correta
- O SCoRe treina um único modelo para fazer tanto a primeira resposta quanto a correção do erro, sem um modelo separado de revisão
Onde as abordagens anteriores emperram
- Quando a auto-correção é induzida só com prompting, vários estudos anteriores mostram que o desempenho pode até piorar
- Alguns métodos dependem de condições extras como gabarito, casos de teste, modelos mais fortes, anotação humana ou um modelo separado de refinement
- Abordagens baseadas em SFT podem aproveitar trajetórias de revisão auto-geradas, mas nos experimentos isso não leva a um grande efeito de auto-correção
- Nos experimentos comparativos com MATH, foram usadas variantes de STaR e Pair-SFT
- O STaR faz SFT apenas com trajetórias em que uma resposta errada foi corrigida com sucesso
- O Pair-SFT treina um único modelo com traces sintéticos de reparo que emparelham respostas erradas e corretas
Resultados dos experimentos de auto-correção baseados em SFT
- No experimento com MATH baseado em Gemini 1.5 Flash, o modelo base teve acurácia de 52,6% na primeira tentativa e 41,4% na segunda, uma piora de -11,2 p.p.
- O Pair-SFT elevou a acurácia da segunda tentativa para 54,2%, mas o ganho em relação à primeira tentativa foi de apenas 1,8 p.p.
- Na configuração padrão, o STaR caiu de 55,4% na primeira tentativa para 41,2% na segunda, uma queda de -14,2 p.p.
- O STaR com dados correct-to-correct melhorou Δ(t1,t2) para 0,4 p.p., mas o efeito de auto-correção continuou pequeno
- O Pair-SFT com dados correct-to-correct fez a primeira e a segunda tentativa convergirem para 55,0%, tendendo a não mudar a resposta
Dois modos de falha
- Métodos baseados em SFT são frágeis à incompatibilidade de distribuição
- Os dados de treino são ajustados aos erros da primeira tentativa produzida pelo modelo base
- Na distribuição de erros da primeira tentativa gerada pelo próprio modelo treinado, o desempenho de correção pode cair
- O Pair-SFT melhora a correction accuracy em um conjunto fixo de primeiras respostas, mas piora a acurácia de auto-correção quando o aprendiz gera sua própria primeira resposta
- Quando ocorre colapso de comportamento, a segunda tentativa praticamente não faz correções reais ou corrige de forma excessivamente conservadora
- Pela análise de edit distance ratio, modelos STaR e SFT frequentemente exibem o padrão de quase não editar nada
- O RL multi-turno padrão pode melhorar o desempenho nas duas tentativas, mas não aumenta a diferença Δ(t1,t2) entre a primeira e a segunda, o que dificulta convertê-lo em capacidade de auto-correção
A estrutura de treinamento do SCoRe
- O SCoRe é uma abordagem de RL multi-turno on-policy que aprende sobre dados online auto-gerados para reduzir a incompatibilidade de distribuição
- O treinamento básico de RL usa gradiente de política via REINFORCE com penalidade de KL-divergence em relação a um modelo fixo
- O Stage I é uma fase de inicialização para separar os comportamentos das duas tentativas
- A distribuição da primeira tentativa é mantida próxima ao modelo base com uma restrição de KL
- A segunda tentativa é treinada para receber alta recompensa
- O objetivo é criar uma política inicial capaz de explorar respostas melhores na segunda tentativa
- O Stage II otimiza as duas tentativas em conjunto
- Um bônus de progresso é adicionado à recompensa da segunda tentativa
- O bônus é reforçado quando a segunda tentativa melhora a correção em relação à primeira
- Transições que transformam uma primeira resposta correta em uma incorreta recebem forte efeito negativo
Por que reward shaping é necessário
- Com apenas o objetivo padrão de RL, duas estratégias distintas podem surgir
- Melhorar a primeira resposta na segunda resposta
- Fazer a primeira resposta ser a melhor possível e quase não revisar na segunda
- Nos dados de treinamento, as duas estratégias podem parecer boas, mas a segunda não generaliza para auto-correção em novos problemas
- O reward shaping do SCoRe incorpora à recompensa não só a correção final, mas também a mudança na correção
- Esse desenho reforça o comportamento de transformar uma primeira resposta errada em uma segunda resposta correta, em vez de apenas acertar respostas de alta recompensa
Desempenho e exemplos
- O SCoRe mostra exemplos no MATH em que erros aritméticos e de raciocínio são corrigidos na segunda tentativa
- No exemplo aritmético, a primeira resposta 1 em um cálculo de multiplicação modular é corrigida para 3 na segunda tentativa
- No exemplo de raciocínio, a primeira resposta ∞ em um problema sobre quantidade de valores de imagem de uma função é corrigida para 3 na segunda tentativa
- Em Gemini 1.0 Pro e Gemini 1.5 Flash, o SCoRe alcança desempenho de auto-correção de ponta
- Em relação aos modelos Gemini base, o ganho de auto-correção foi de 15,6 p.p. no MATH e 9,1 p.p. no HumanEval
- Em experimentos de scaling no momento de inferência em MATH, houve faixas em que usar amostras para auto-correção sequencial foi mais eficaz do que usá-las apenas para geração direta em paralelo
Implicações práticas
- Treinar auto-correção não é algo que se resolva facilmente apenas reunindo respostas corretas e fazendo SFT
- Se o modelo precisa corrigir, em tempo de teste, erros que ele próprio produziu, então durante o treinamento ele também precisa aprender o comportamento de correção sobre a distribuição das próprias respostas
- A principal restrição do SCoRe é exigir, durante o treinamento, uma função de recompensa que avalie correção, embora essa recompensa não seja usada em tempo de teste
- Para manter a implantação de um único modelo e ainda desenvolver capacidade de auto-correção, é necessário RL multi-turno com desenho de recompensa anti-colapso, sem depender de um modelo separado de revisão nem de supervisão de teacher
1 comentários
Opiniões no Hacker News
Parece uma abordagem parecida com a do modelo o1 da OpenAI, mas, como o artigo do o1 não foi publicado, não há citação
Infelizmente, não vejo menção à abertura dos pesos
O o1 também pode ter feito isso, mas acho que a mudança maior é o processo de pensamento em runtime, em que, depois de receber o prompt e antes de dar uma resposta definitiva, ele “pensa” em palavras e se reajusta em tempo de execução
Se esse entendimento estiver correto, as duas abordagens não são parecidas. Pelo que sei, a OpenAI vem usando aprendizado por reforço em todos os modelos posteriores desde a primeira versão do ChatGPT, e é justamente por isso que a interface permite deixar feedback
O artigo foi um pouco difícil de entender porque fica dando muitas voltas em torno da ideia, em vez de explicar diretamente a proposição central. Pelo que entendi, o objetivo é fazer com que um LLM dê respostas mais precisas para problemas difíceis
Uma hipótese é treinar no modelo um comportamento de autocorreção, fazendo-o receber uma resposta errada como entrada e melhorá-la para uma resposta melhor ou correta
Antes, já haviam tentado treinar esse comportamento com várias técnicas de aprendizado por reforço que usavam a qualidade da resposta corrigida como recompensa, mas isso não funcionava bem, e o comportamento aprendido também não generalizava bem
O ponto central deste artigo é que, quando o modelo recebe exemplos de treinamento no formato
Answer 1, Reasoning, Corrected Answere um sinal para “tornar o Corrected Answer melhor”, na prática há duas soluções totalmente possíveis. Uma é melhorarReasoning, Corrected Answercomo queremos, e a outra é simplesmente melhorar o próprioAnswer 1para queCorrected Answer=Answer 1Acredito que, em pesquisas anteriores, foi esta última coisa que aconteceu, e por isso o treinamento do comportamento desejado falhou. O modelo não tenta melhorar o comportamento de correção; ele simplesmente tenta melhorar a primeira resposta
A solução deste artigo é mudar um pouco o procedimento de treinamento para induzir a primeira abordagem. Ou seja, é uma tentativa de realmente treinar o comportamento desejado de corrigir a resposta anterior
O treinamento ocorre em duas etapas. Na etapa 1, uma perda por divergência KL força a primeira resposta a permanecer igual, enquanto se dá recompensa quando a segunda resposta melhora. Isso mantém a distribuição das respostas iniciais, evitando o problema de, mais tarde, as respostas erradas desaparecerem do modelo durante o treinamento e ele passar a ver menos “respostas erradas”, ao mesmo tempo em que inicializa no modelo o comportamento de autocorreção
Na etapa 2, o modelo pode mudar também a primeira resposta, mas a função de recompensa é ajustada para dar uma recompensa maior a viradas em que a primeira resposta era ruim e a segunda é boa. Nessa etapa, ele pode usar tanto a estratégia de melhorar a primeira resposta quanto a de melhorar a autocorreção, mas a segunda recebe uma recompensa maior. Parece um processo de refinamento para preservar o comportamento de autocorreção enquanto ajusta o desempenho geral
Pelas métricas, essa técnica funciona melhor e generaliza melhor
Ainda assim, fico um pouco preocupado que, na etapa 2, o modelo aprenda a escrever
Answer 1propositalmente pior para maximizar a recompensa de virada. Seria necessário algum mecanismo de equilíbrio para impedir queAnswer 1piore, mas não sei se isso está na função de recompensa nem se é uma preocupação realmente válidaAnswer 1para queCorrected Answer=Answer 1”Melhorar
Answer 1não é o objetivo desde o começo? Pela explicação, parece queAnswer 1não é a entrada, mas sim uma saída do LLMLLMs não conseguem se lembrar diretamente das experiências sensoriais do próprio processo de aprendizado. Uma das principais formas pelas quais eu me corrijo é, quando tento falar sobre algo, examinar como/por que sei aquilo e avaliar se eu realmente sei, se estou inventando ou se ouvi de uma fonte pouco confiável
Se um LLM não consegue se lembrar do próprio aprendizado de nenhuma maneira, acho que a autocorreção é difícil
E depois pós-treinar o modelo final para lembrar onde leu cada texto, ou para não se lembrar de nenhuma experiência quando aparecer um texto que ele não leu?
Se alguém tentar isso e der certo, eu largo o doutorado e volto a ser monitor de acampamento
Segundo o resumo, o trabalho explora treinamento com consciência de fonte para dar essa capacidade a LLMs. Especificamente, (i) treina o LLM para associar o conhecimento de cada documento a um identificador único do documento-fonte e, em seguida, (ii) faz ajuste por instrução para que, dado um prompt, ele cite as fontes de pré-treinamento que dão suporte à resposta
Isto também vale consultar: https://www.sciencedirect.com/science/article/pii/S1571064523001094
O modo de treinamento do o1 é descrito, nessa formalização, como um modelo de strange particle
Mesmo com conhecimentos dentro de um sistema, como ciência da computação, a experiência sensorial vai ficando desfocada com o tempo. Por exemplo, como muita gente de ciência da computação, eu consigo dizer de cabeça as características de desempenho O() de vários algoritmos, mas onde aprendi um algoritmo específico já ficou nebuloso há muito tempo
Quando pessoas se corrigem, o processo comum não é uma grande tarefa como “avaliar se eu sei isso” ou “lembrar se ouvi de uma fonte pouco confiável”. Normalmente há uma sensação vaga de “não entendi completamente”, e a autocorreção é verificar a informação de novo em uma fonte confiável
Por isso não acho que a experiência sensorial seja tão importante para a recuperação de memórias quanto parece
Spoiler: no paradigma de previsão autoregressiva do próximo token, não é possível eliminar alucinações; isso é a chamada lei de LeCun
O problema aqui é que as pessoas tentam usar modelos de linguagem como solucionadores determinísticos de problemas, em vez de usá-los para o que eles realmente fazem bem: geração de texto semilocriativa
Nesse caso, talvez fosse possível treiná-lo para dar respostas menos confiantes e reduzir a tendência a alucinar
Costumo explicar assim para as pessoas: imagine uma empresa que só tem departamento de RP. Ela é excelente em produzir press releases e responder a perguntas de jornalistas, mas, como o resto da empresa não existe, não há nada que restrinja de forma significativa o texto de saída
Se estivéssemos em outro universo em que as pessoas entendessem isso, LLMs não seriam usados para nada sério e seriam muito usados em pequenos projetos artísticos divertidos
Fusão nuclear só precisa ser resolvida direito uma vez
Isso é, na prática, alguma forma de destilação de conhecimento?
Não gosto que críticos de IA tenham popularizado a expressão alucinação. Ela antropomorfiza um monte de estatísticas, fazendo parecer que há um processo de pensamento profundo, parecido com a mente humana
Não é isso; ela não está “alucinando”. Também não está mentindo nem inventando. Está cuspindo dados conforme os underlying weights disparam
Se fosse um endpoint comum de API JSON, ninguém diria que a API está alucinando; diriam que ela está quebrada, que “essa API é péssima”
Como nenhum sistema nervoso consegue armazenar perfeitamente os dados de treinamento, todos nós confabulamos em alguma medida
Já a “alucinação” humana está mais próxima de uma ruptura específica no ciclo de feedback sensorial. Em LLMs, esse processo nem existe
A alucinação acontece quando um ciclo interno de feedback sensorial se sobrepõe à entrada sensorial real, gerando e processando uma falsa experiência sensorial ou fluxo de sinais. Essa falsa experiência em andamento pode ou não conter parte da informação sensorial real
Quando sonhamos, estamos alucinando. Um ciclo de experiência sensorial desconectado dos sentidos reais roda livremente, embora também tenha um propósito produtivo
O motivo de haver feedback nos sentidos é usar a interpretação da entrada sensorial como pista para facilitar a interpretação da entrada no instante seguinte. Mas, se a nova entrada se desvia muito do esperado, é importante que a interpretação em andamento seja reiniciada para que possamos nos reorientar rapidamente
Para corrigir uma interpretação errada de acordo com uma mudança real de contexto, não só é importante voltar à interpretação da entrada bruta; esse tipo de reinicialização também é um sinal de que algo novo ou inesperado aconteceu, portanto tem grande chance de disparar aprendizado
Por isso, a escolha do termo “alucinação” foi infeliz e gera mal-entendidos
Exemplos de artigos anteriores aos LLMs que usaram o termo dessa forma:
2021: The Curious Case of Hallucinations in Neural Machine Translation (https://arxiv.org/abs/2104.06683)
2019: Identifying Fluently Inadequate Output in Neural and Statistical Machine Translation (https://aclanthology.org/W19-6623/)
Mesmo que se use um algoritmo inteligente para guiar um preditor burro e não inteligente da próxima palavra, no fim ele continua sendo apenas um algoritmo não inteligente
Ele de fato classifica o lixo de forma mais elegante, mas continua sendo lixo
Eu esperava que uma abordagem parecida com aprendizado por reforço substituísse uma abordagem parecida com Transformer, mas isso parece mais um sonho vazio