- O fenômeno em que a maioria dos LLMs joga xadrez mal, enquanto apenas o
gpt-3.5-turbo-instructera excepcionalmente forte, foi parcialmente explicado por experimentos mostrando que, ao mudar a interface de prompt,gpt-4oegpt-4o-minitambém melhoram bastante - A hipótese de que a OpenAI chama secretamente um motor de xadrez é fraca: mesmo no mesmo tabuleiro, o modelo joga lances diferentes dependendo da sequência de chegada, é sensível a mudanças no prompt e seu desempenho fica em torno de 1750 Elo, não no nível de um motor
- Apenas três exemplos in-context curtos elevaram muito o desempenho, e melhorias também foram confirmadas ao fazer fine-tuning com exemplos extraídos de 100 partidas de Stockfish contra si mesmo
- Por outro lado, informar os lances legais possíveis no momento piorou muito o desempenho, e o método de regurgitação de notação — repetir a partida inteira e então acrescentar o próximo lance — fez modelos de chat se comportarem como modelos de completion e aumentou o desempenho
- A combinação final,
gpt-4o + regurgitation + examples, registrou 10 vitórias, 5 empates e 35 derrotas em 50 partidas contragpt-3.5-turbo-instruct; considerando a vantagem das brancas, foi estimada em cerca de 1540 Elo, abaixo dos cerca de 1750 Elo dogpt-3.5-turbo-instruct
Definição do problema: por que só o gpt-3.5-turbo-instruct joga xadrez bem?
- O ponto de partida da observação existente é que a maioria dos LLMs joga xadrez muito mal, mas o
gpt-3.5-turbo-instructjoga em nível de amador avançado - Mesmo sendo um modelo relativamente pequeno e com mais de um ano, ele parecia jogar xadrez melhor que modelos mais recentes
- Havia quatro explicações possíveis principais
- Modelos base grandes jogam xadrez bem, mas essa capacidade não é preservada em modelos de chat que passaram por instruction tuning
- O
gpt-3.5-turbo-instructfoi treinado com mais dados de xadrez - Há algum elemento especial em uma arquitetura específica de LLM
- Dados de xadrez precisam representar uma parcela suficientemente grande do conjunto total de treinamento
- A discussão posterior se estreitou para a possibilidade de a OpenAI chamar um motor de xadrez, se o LLM realmente joga xadrez, e a diferença entre modelos base e modelos de chat
A hipótese de uso secreto de motor de xadrez é pouco convincente
- A suspeita de que o
gpt-3.5-turbo-instructreconhece notação de xadrez e chama um motor externo parece ter probabilidade muito baixa - As evidências se dividem em várias frentes
- Pessoas ligadas à OpenAI disseram que esse tipo de processamento não era feito
- Um motor de xadrez avalia a mesma posição do tabuleiro independentemente da sequência de lances, mas o
gpt-3.5-turbo-instructjoga lances diferentes no mesmo tabuleiro quando a sequência de chegada é diferente - Ele é bom para padrões de amadores de xadrez, mas fraco para padrões de especialistas, e seu desempenho é muito baixo em comparação com um motor de xadrez
- Ao mudar o prompt, o jogo muda de forma sutil
- Modelos posteriores da OpenAI jogam muito pior por padrão, mas podem jogar bem com o prompt adequado
- Se houvesse trapaça, isso implicaria uma abordagem muito complexa para não parecer uma chamada a um motor externo e dar a impressão de que o LLM escolhe os lances diretamente
O LLM não joga apenas por memorização simples
- O
gpt-3.5-turbo-instructraramente sugere lances ilegais mesmo no fim da partida - Para julgar se o último lance é legal em uma string como
1. e4 d5 2. exd5 Qxd5 3. Nc3, é necessário conhecer as regras do xadrez e rastrear o estado - Em partidas reais, o
gpt-3.5-turbo-instructtambém joga razoavelmente bem em novas posições de tabuleiro que nunca existiram na história - Portanto, a explicação de que ele memoriza aberturas e depois joga aleatoriamente não está correta
Experimento básico: diferença entre modelos de completion e modelos de chat
- O
gpt-3.5-turbo-instructé um modelo de completion, então o próximo lance é obtido fazendo-o continuar um texto em formato PGN- O exemplo é fornecer uma notação com
[Event "Shamkir Chess"], nomes dos jogadores, Elo, resultado e algo como1. e4 e5 2. Nf3 Nc6 3.
- O exemplo é fornecer uma notação com
gpt-4o-miniegpt-4osão modelos de chat, então são instruídos por system prompt e user prompt a retornar apenas o próximo lance em notação algébrica padrão- Contra o Stockfish level 1, foi dado no máximo 0,01 segundo por lance, calculando a média de 50 partidas; depois de cada jogo, a pontuação de cada turno foi calculada em centipawns
- Um pawn foi contado como 100 pontos
- ±1500 corresponde a vitória ou derrota
- Com o prompt básico, o
gpt-3.5-turbo-instructse mostrou forte, enquanto modelos de chat comogpt-4oegpt-4o-minise mostraram fracos
Experimentos com a composição do prompt
- Foram testadas combinações envolvendo repetir ou não o system prompt no topo do user prompt, e incluir ou não metadados como nomes dos jogadores e Elo
- No
gpt-4o-mini, quase não pareceu haver diferença grande - No
gpt-4o, repetir o system prompt pareceu ajudar um pouco e os metadados pareceram prejudicar um pouco, mas a possibilidade de ruído permaneceu - Nos experimentos seguintes, para simplificar, tanto a repetição do system prompt quanto os metadados foram desativados
Apenas três exemplos melhoraram muito o desempenho
- Como se faz com frequência ao dar tarefas a LLMs, três exemplos de entrada e saída curtos foram fornecidos pela API
- Entrada
1.→ saídae4 - Entrada
1. e4→ saídad5 - Entrada
1. e4 e5 2. Nf3 Nc6 3.→ saídaBb5
- Entrada
- Só esses três exemplos fizeram o resultado melhorar muito
- Mais exemplos, ou exemplos diferentes, poderiam ser melhores, mas cada gráfico exigia um número muito grande de consultas, então isso não foi verificado adicionalmente
Fine-tuning ajuda, mas sua combinação com exemplos é instável
- Foi feito fine-tuning tanto no
gpt-4o-miniquanto nogpt-4o - O método de geração dos dados foi o seguinte
- O Stockfish jogou 100 partidas contra si mesmo na dificuldade máxima
- Em cada jogo, um lance aleatório foi escolhido e usado como exemplo de treinamento
- Separadamente, 100 partidas do Stockfish contra si mesmo foram usadas como dados de validação
- O fine-tuning em si melhorou o desempenho
- No entanto, como o primeiro resultado de fine-tuning do
gpt-4opareceu ruim, ele foi executado novamente com um step size menor, e isso continua sendo um ponto de incerteza - Combinar exemplos com fine-tuning não melhorou de forma consistente como esperado
- Só fine-tuning ajuda
- Só exemplos também ajudam
- Adicionar exemplos depois do fine-tuning quase não tem efeito
- Com exemplos presentes, o fine-tuning produziu resultados até prejudiciais
Fornecer a lista de lances legais arruína o desempenho
- Como o modelo às vezes produz lances ilegais, foi feito um experimento fornecendo antes da notação a lista de lances legais disponíveis no momento
- O system prompt também foi alterado para receber a lista de lances legais e a notação parcial
- O resultado foi muito ruim
- A taxa de vitórias caiu e, além disso, os erros começaram em turnos mais cedo
- A lista de lances legais não foi usada depois disso
Ideia central: fazer o modelo repetir a partida inteira
- Modelos de chat funcionam em formato de conversa com tokens especiais e instruction tuning, como
<|SYSTEM|>,<|USER|>e<|ASSISTANT|> - Modelos base são mais próximos de modelos de completion que continuam strings, e notações PGN combinam melhor com esse modo
- Não há acesso direto ao
gpt-4-baseda OpenAI, e tampouco é possível chamar ogpt-4oem modo completion, então uma comparação direta é impossível - Em vez disso, para fazer o
gpt-4ose comportar como um modelo de completion, ele foi instruído a não retornar apenas o próximo lance, mas a repetir a partida inteira e então acrescentar mais um lance - Por exemplo, se a entrada for
1. e4 e5 2., a saída deve ser algo como1. e4 e5 2. Nf7 - Esse método melhorou o desempenho no xadrez do
gpt-4o-minie dogpt-4o - Ao fazer o modelo repetir toda a sequência de lances, ele cria para si mesmo um contexto em que é mais provável escolher um bom lance
- Esse resultado serve como evidência de que, se fosse possível chamar o inacessível
gpt-4-baseem modo completion, ele provavelmente jogaria xadrez razoavelmente bem
Combinação de repetição de notação, exemplos e fine-tuning
- Um novo experimento de fine-tuning também foi conduzido no modo de repetição de notação
- A entrada é a notação parcial, como antes
- A saída desejada é repetir toda a notação de entrada e anexar o próximo lance
- O fine-tuning nesse formato pareceu ajudar um pouco
- Os três exemplos também foram reformulados para o modo de repetição de notação
- Entrada
1.→ saída1. e4 - Entrada
1. d4→ saída1. d4 d5 - Entrada
1. e4 e5 2. Nf3 Nc6 3.→ saída1. e4 e5 2. Nf3 Nc6 3. Nf3
- Entrada
- Mesmo com pouca informação, os exemplos voltaram a ter grande efeito
- Ao usar exemplos e fine-tuning juntos, um padrão estranho se repetiu
- Adicionar exemplos ao fine-tuning ajuda
- Mas ainda é pior do que usar apenas exemplos
Resultados dos experimentos e estimativa de Elo
- Os resultados dos experimentos se dividem em três grupos
- Bom: repetição da notação, exemplos, fine-tuning sem exemplos
- Incerto: metadados, repetição do system prompt, fine-tuning usado junto com exemplos
- Ruim: fornecimento da lista de lances legais
- A combinação final usa repetição da notação e exemplos, com o restante desativado
gpt-4o + regurgitation + examplesé bastante razoável, mas não foi tão forte quanto ogpt-3.5-turbo-instruct- Os dois modelos jogaram 50 partidas, e em todas elas o
gpt-4oficou com as brancas
Resultado do gpt-4o |
Número |
|---|---|
| Vitória | 10 |
| Empate | 5 |
| Derrota | 35 |
- Esse resultado é compatível com uma diferença de Elo de cerca de -191
- Considerando que a vantagem do primeiro lance das brancas é conhecida como cerca de 35 Elo, estima-se que
gpt-4o + regurgitation + examplesesteja em torno de1750 - 191 - 35/2 ≈ 1540 Elo - Isso é avaliado como nível de amador intermediário
Hipótese atual: dados e interface atuam juntos
- A hipótese atual se divide em duas partes
- Os modelos base da OpenAI foram treinados com mais ou melhores dados de partidas de xadrez do que modelos abertos
- Modelos base mais recentes da OpenAI talvez joguem xadrez bem em modo completion, mas os modelos de chat realmente acessíveis não
- Modelos abertos, sejam base ou de chat, parecem não jogar xadrez bem, o que provavelmente se deve mais a diferenças nos dados do que a limitações de arquitetura
- A seção A.2 de um artigo diz que o GPT-4 foi treinado com partidas de xadrez em notação PGN e que os dados foram filtrados para incluir apenas jogos de jogadores com Elo acima de 1800
- Não há confirmação pública de que o
gpt-3.5-turbo-instructtenha usado os mesmos dados, mas o fato de jogar xadrez em PGN e ter um Elo medido de cerca de 1750 não parece coincidência - Não foi possível verificar quanto dado de xadrez foi incluído no treinamento de modelos abertos como Llama
- É possível que muitos jogos tenham entrado a partir da internet aberta, mas uma base de dados selecionada em larga escala com jogos de alta qualidade pode ter produzido resultados melhores
- Também é possível que excesso de dados de xadrez de jogadores pouco habilidosos leve o modelo a prever lances de baixa qualidade, mas, em situações com sequências fortes de lances, ele deveria prever o próximo lance de jogadores fortes, então isso não parece ser a explicação principal
Incertezas restantes e impressão prática
- Se o modo chat do
gpt-4oé mais fraco que o modo completion dogpt-4-base, não é possível saber se a causa é a interface de chat, o instruction tuning ou ambos - Não é possível testar se o
gpt-4-basejogaria bem quando simulado como modo chat, nem se ogpt-4ojogaria bem se chamado em modo completion - Provavelmente há outras maneiras de extrair um comportamento melhor do
gpt-4o - Encontrar a combinação ideal de prompt, exemplos e fine-tuning é muito difícil
- O espaço de busca é grande
- Não há uma abstração fácil
- LLMs são imprevisíveis e frágeis
- Os experimentos são lentos e caros
- Quando a mesma receita final foi aplicada ao
gpt-4, ele não jogou xadrez bem - A combinação encontrada pode ser específica para o
gpt-4o, e ogpt-4pode precisar de outro prompt, mais exemplos ou fine-tuning - Esse processo parece ter tanta sensibilidade por modelo que dá a sensação de ser mais busca por encantamentos do que engenharia
1 comentários
Comentários do Hacker News
Para ver se o gpt-3.5-turbo-instruct realmente entende xadrez, basta pedir que ele faça o próximo lance em 1000 posições legais aleatórias que não sejam mate
Essas posições podem ser geradas com https://github.com/tromp/ChessPositionRanking e são completamente diferentes de partidas normais que ele provavelmente teria visto nos dados de treino; em muitos casos, as opções de lances legais são muito limitadas
Isso é bom para testar a legalidade do próximo lance, mas geralmente é menos útil para distinguir a qualidade dos lances, porque um dos lados costuma estar esmagadoramente melhor
Foi impressionante ver o Hikaru olhar para uma posição e, como se estivesse “narrando ao vivo”, mostrar desde o início como aquela posição poderia ter sido alcançada, mas no mesmo vídeo ele explicou que esse método quase não funciona com problemas aleatórios e estranhos de xadrez
Problemas vindos de partidas reais são muito melhores do que problemas gerados aleatoriamente e fazem muito mais sentido até para humanos de elite
Alguém que realmente entende bem de xadrez, por exemplo no nível de Elo 1800, praticamente nunca deixaria de produzir um lance legal já na primeira tentativa
Dá para argumentar que raciocínio de verdade exige lógica simbólica e abstração, enquanto LLMs são preditores do próximo token
Por exemplo, pode considerar apenas lances de bispo na diagonal porque sempre viu o bispo se mover assim, mas isso não significa que tenha inferido o conceito de lance legal/ilegal
Ele até pode criar internamente alguma representação da posição, mas ao receber uma posição de xadrez codificada essa representação não será ativada automaticamente
Se alguém afirma que o gpt-3.5-turbo-instruct “entende” xadrez, “raciocina” e executa “lógica real”, eu gostaria de pedir que encontrasse entre esses enxadristas de nível amador avançado mencionados no texto alguém que faça lances ilegais
Quem conhece xadrez pode confirmar que isso quase não acontece
Também tenho curiosidade de saber se existe link para partidas em que saiu um lance ilegal
Também já vi streamers muito mais fortes do que eu tentarem repetidamente um lance ilegal até perceberem que a interface o recusava justamente por ser ilegal
Basta pesquisar por “GM illegal moves” no YouTube para encontrar compilações suficientes de grandes mestres fazendo lances ilegais
Ex.: https://www.youtube.com/watch?v=m5WVJu154F0 — o caso Vidit vs Hikaru é especialmente marcante, porque o Vidit atacou o rei do Hikaru com o próprio rei
Enquanto o LLM for uma caixa-preta, não dá para saber se ele entendeu os lances legais por raciocinar seguindo regras ou se apenas aprendeu a produzir lances legais por ter visto muitos dados de lances legais
Dá para defender qualquer um dos lados como sendo a verdade, mas não há absolutamente nenhum modo de entender de fato o que o LLM “pensou”
Para nunca fazer um lance ilegal em xadrez às cegas, é preciso ser bastante bom
Pessoas — inclusive especialistas renomados em sua própria área — cometem muitos erros e às vezes cometem, em sua área de especialidade, erros muito caros e que em retrospecto parecem óbvios
Mas quando um LLM, treinado num corpus cheio de estupidez humana, faz um lance ilegal no xadrez, o cérebro reage imediatamente com algo como “eu não faço lances ilegais no xadrez, então como um computador pode fazer isso e ainda assim jogar xadrez?”
Parece pelo menos um exemplo perfeito de viés metacognitivo e do erro fundamental de atribuição em geral
Este texto também tem o mesmo problema do texto anterior. O autor não fornece nenhum dado sobre a frequência de lances ilegais
então não dá para tirar nenhuma conclusão significativa
É como afirmar que um LLM é um médico especialista, mas filtrar dos dados todos os casos em que ele deu conselhos médicos errados
Seria interessante se o número de tentativas de lances ilegais variasse de forma significativa entre as abordagens, especialmente se essa diferença não se correlacionasse com o desempenho depois de remover os lances ilegais, mas isso não abala muito a conclusão do texto em si
Se você escolher aleatoriamente dentro do conjunto de lances legais, vira um jogador de xadrez realmente péssimo; então, se ao amostrar a partir da saída do LLM ele joga muito melhor, é evidente que o LLM está fornecendo alguma coisa
Insistir que toda tentativa de lance ilegal deve ser contabilizada como derrota para definir a capacidade “do LLM sozinho” parece fugir do ponto principal
Nesse caso, na prática, o “LLM+script” é que se tornaria o médico especialista, mas isso pode funcionar para lances ilegais no xadrez e obviamente não é possível para avaliar conselhos médicos
Não está aqui, mas o turbo instruct já foi avaliado antes
https://github.com/adamkarvonen/chess_gpt_eval
A proporção de treino passava de 99% e o teste era menos de 1%, então nem atendia ao básico de validação em IA
Em grande parte das conferências de IA, provavelmente seria difícil esse artigo passar, mas ele saiu na Nature Medicine, de fator de impacto muito alto, e é muito citado na área de IA médica
https://www.nature.com/articles/s41591-018-0268-3
A frase “em muitos aspectos, parece mais procurar um encantamento do que fazer engenharia” ainda corresponde à minha impressão dos LLMs em geral
É impressionante que funcione, mas eu queria que a próxima inovação tecnológica não desse sempre a sensação de estar dentro de um filme ruim de ficção científica
Não acho que “todo mundo estava errado”
Eu não fui o único a levantar esse ponto, então fiquei surpreso por essa teoria não estar na lista; ainda 7 dias atrás eu escrevi isto: https://news.ycombinator.com/item?id=42145710
“Tudo o que vira benchmark público deve ser presumido como algo especificamente visado durante o treinamento.”
Isso é diferente da teoria de “trapaça/substituição da saída do LLM” mencionada e refutada no texto
O texto de acompanhamento dá força a essa hipótese. A OpenAI treinou o modelo base com mais dados de partidas de xadrez e dados melhores do que os dos modelos abertos, e em uma seção A.2 de um artigo os autores da OpenAI afirmam que o GPT-4 foi treinado com partidas de xadrez em notação PGN de jogadores acima de Elo 1800
Faz todo sentido a OpenAI reforçar os dados de treinamento com dados de tarefas que as pessoas realmente possam tentar fazer
Isso também não é antiético. Nenhum conjunto de dados é realmente “neutro”, então, se de qualquer forma é preciso fazer escolhas, não há motivo para não treinar visando dar boas respostas potencialmente úteis
De todo modo, a OpenAI tem muita experiência com IA para jogos
https://news.ycombinator.com/item?id=42145215
Ninguém treina um LLM gigante e caríssimo em um conjunto de dados enorme esperando que, por acaso, um blogueiro descubra um desempenho desajeitado de nível 1800 Elo e tuíte sobre isso
Xadrez nem sequer é um benchmark padrão de LLM a ponto de virar alvo de Goodhart, e a OpenAI em geral tem tentado resolver problemas da maneira correta, em vez de por atalhos ou trapaças
A família GPT poderia ter sobreajustado facilmente benchmarks padrão ou contraexemplos, com valor publicitário muito maior, e mesmo assim não sobreajustou de forma pesada. Por exemplo, teria sido muito fácil treiná-la em coisas como o “problema do morango”
Enquanto isso, alguns outros provedores de LLM têm quedas muito maiores de pontuação em artigos sobre prevenção de memorização
Além disso, o próprio artigo que menciona esse conjunto de dados tem um uso de pesquisa evidente, e o xadrez desperta interesse como uma biologia de modelos para analisar a supervisão e a modelagem de mundo dos LLMs, porque é possível usar um oráculo
O artigo da DeepMind sobre LLM de xadrez em controle de tempo também não faz parte de algum plano ardiloso para fazer o Gemini fingir habilidade em xadrez e usar isso no marketing do GCP
No começo eles podem ter achado xadrez algo legal, e amanhã podem achar legal habilidade em go ou em escrever poesia
Algo como colocar mais conteúdo de especialistas do que conteúdo “amador” nos dados de treinamento, independentemente do domínio
Não há na prompt algo como “tente vencer o jogo”, mas o resultado é medido por quanto o LLM vence
Será que isso está implicitamente contido na prompt “você é um grande mestre de xadrez”?
Será que em algum ponto do treinamento do LLM existe o padrão de que “se é um jogo, ele sempre tenta vencer”?
Se simplesmente mandarmos vencer, a taxa de vitória pode aumentar?
Em exemplos e explicações de partidas de xadrez, quase sempre cada jogador tenta vencer, então fazer uma jogada vencedora é apenas a saída mais lógica
Por isso, não parece que explicitar na prompt que ele deve vencer vá melhorar muito o desempenho
Em compensação, é interessante ver o que acontece se dissermos para jogar lances perdedores ou ruins. Se isso pode ser feito de forma eficaz, e se os lances ainda forem em sua maioria legais, isso pode revelar melhor o quanto ele depende de conceitos já vistos
Essa frase deve aumentar a probabilidade de gerar o token da melhor jogada possível
A capacidade do modelo de gerar sequências de xadrez é limitada pela competência presente no conjunto de partidas dos dados de treino
Mesmo que houvesse algumas partidas em que certos jogadores tentassem perder de propósito, isso provavelmente seria insignificante, e como as partidas de xadrez não vêm com a intenção do jogador anotada, mesmo que você peça ao LLM para vencer ou perder ele não consegue captar essa distinção
Dá para testar pedindo que o LLM perca de propósito. Pela minha experiência, o ChatGPT tenta se colocar em posição de levar um mate pastor, mas se o oponente não aceita, ele implicitamente volta a tentar vencer e começa a capturar peças indefesas do adversário
Se você perguntar “por quê?”, ele responde com a habitual racionalização a posteriori
Então me surpreendeu não haver algo como “e vença” ou “as pretas vencem”
Seria bem engraçado se, por causa do aprendizado por reforço, o LLM estivesse evitando de propósito fazer humanos se sentirem mal ao perder em jogos
Melhoraram a prompt, o que é bom, mas ainda deixaram passar duas possibilidades de melhoria muito grandes
Primeiro, fazer o modelo explicar a posição atual do tabuleiro e o plano adiante antes de sugerir uma jogada. Isso o faz realmente pensar mais; é parecido com o o1, mas aqui daria para garantir um processamento mais focado
Segundo, fazer com que ele realmente desenhe um tabuleiro ASCII em cada etapa. O formato tabuleiro+movimento pode ser mais fácil de processar de forma estável do que uma lista de 20 jogadas, então o número de jogadas legais pode aumentar
“Gráficos” bidimensionais como arte ASCII são pouco naturais para modelos de linguagem, e o modelo percebe texto como um fluxo de tokens com quebras de linha, então as relações “verticais” entre linhas não são tão claras para ele quanto para humanos
Mesmo que haja um diagrama do tabuleiro na janela de contexto, isso provavelmente não ajuda muito o modelo a raciocinar sobre a partida
Em vez disso, pode ser mais adequado fazê-lo listar em texto comum a posição de cada peça, como “cavalo preto em c5”, para reforçar a percepção de posição
O ponto 1 definitivamente vale a tentativa, e há outras variações que funcionam dependendo do modelo
Nos modelos da Anthropic, a documentação recomenda rotular e classificar as partes importantes da entrada com notação XML. Esse tipo de estrutura leve parece melhorar os resultados dos modelos Claude, e provavelmente eles foram treinados especificamente para reconhecê-la
Referência: https://docs.anthropic.com/en/docs/build-with-claude/prompt-...
Em um modelo da Anthropic, a prompt final poderia ser algo como: “Você é um grande mestre de xadrez. Veja a partida incompleta dentro das tags, repita a partida inteira, depois forneça uma nova jogada em notação algébrica padrão e explique seu raciocínio dentro do bloco de tags antes de emitir a nova notação”
Esse tipo de prompt foi feito para produzir melhora perceptível nos modelos da Anthropic
Ironicamente, mesmo usando bastante o Claude 3.5 Sonnet por meses, só descobri isso há algumas semanas. RTFM continua sendo uma habilidade útil
Os modelos da OpenAI também podem ter affordances parecidas, simples, mas pouco conhecidas
Nos meus experimentos de xadrez de 1,5 ano atrás, o truque de repetir a sequência inteira de jogadas foi a melhor técnica sem fine-tuning
Eu gostaria de ver os resultados, mas ficaria bem surpreso se melhorasse
Há a hipótese de que, se você lhe der mais tempo e espaço de outras formas, o desempenho também pode melhorar
Por exemplo, mostrar a posição atual do tabuleiro e fazê-lo passar por análise da posição, lista de pontos fortes e fracos, lista de estratégias possíveis, escolha de uma dessas estratégias e só então a escolha da jogada
Ou seja, não fazê-lo simplesmente soltar uma jogada de imediato, mas realmente pensar. Aqui, exemplos seriam a chave
Esse tipo de ideia mostrou funcionar bem no artigo ReAct e no artigo sobre cadeia de pensamento, e ainda seria possível acrescentar um processo de repetir isso N vezes e parar quando surgir uma resposta por maioria. Essa ideia vem do artigo sobre autoconsistência em cadeia de pensamento
A parte “fine-tuning ajuda e exemplos ajudam, mas o que torna o fine-tuning desnecessário são os exemplos, e não o contrário” é muito interessante
Neste caso específico, simplesmente fornecer exemplos equivale ao fine-tuning
Para mim isso foi uma grande descoberta, então pretendo usar exemplos com mais frequência daqui para frente
É difícil explicar por quê, mas eu sempre tive a intuição de que fine-tuning era superestimado
Uma razão pode ser que os exemplos estão “bem ali”, então implicitamente recebem um peso muito maior do que neurônios ajustados por fine-tuning
Neste caso de brinquedo isso não importa tanto, mas vale lembrar que cada exemplo fornecido na entrada aumenta o tempo e o custo de inferência em comparação com fine-tuning
Já chega de fazer experimentos às cegas com LLMs comerciais
Para chegar ao fundo desse problema, seria interessante treinar um LLM apenas com partidas de xadrez. Dá para gerar dados sintéticos infinitamente fazendo o Stockfish jogar contra si mesmo e misturando um pouco de comentários de xadrez e exemplos de diálogo como “quantos peões há no tabuleiro?”, “onde está a minha torre?” e “desenhe o tabuleiro”, para mostrar se ele tem uma representação do tabuleiro
Não acredito que “fenômenos emergentes”, habilidade geral de linguagem ou a capacidade de fingir que tem habilidade sejam necessários para jogar xadrez. Ser bom em xadrez não significa ser inteligente em outras coisas, e o contrário também vale
Um experimento assim poderia provar que eu estou errado
O artigo de cerca de uma semana atrás https://arxiv.org/pdf/2411.06655 parece obter bons resultados com Llama ajustado por fine-tuning
Também gosto deste artigo sobre a capacidade de comentar partidas de xadrez: https://arxiv.org/abs/2410.20811
Também seria possível adicionar a recompensa restante para que a rede aprenda quais lances aparecem em partidas boas e ruins, o que vira um esquema de aprendizado por reforço offline como o Decision Transformer
Vejo a habilidade no xadrez como algo totalmente inútil para LLMs gerais e não como um fenômeno emergente, mas apenas como consumo de largura de banda de gradiente e espaço de parâmetros para esse truque impressionante
Isso fica claro pelo fato de que LLMs não treinados especificamente para xadrez não jogam bem
Pode ser interessante criar um tokenizador otimizado para a representação de lances de xadrez e treinar um LLM do zero com partidas do Stockfish
Com um tokenizador personalizado, a qualidade deve melhorar para o mesmo tamanho de modelo
Não seria preciso desperdiçar muitas camadas com codificação e decodificação, e uma representação latente mais “natural” também pode ser mais intuitiva