Julgando o juiz: raciocínio humano e de modelo, lado a lado
Um juiz LLM só é confiável na medida em que forem confiáveis os rótulos humanos contra os quais você o validou. Coloque a cadeia de raciocínio de uma pessoa ao lado da de um modelo no mesmo item e confira o seu juiz contra rótulos que carregam os próprios intervalos de confiança.
Todo mundo que avalia LLMs em escala acaba usando um LLM como juiz, e todo mundo acaba perguntando se dá para confiar nesse juiz. A resposta de sempre é conferir contra rótulos humanos. Mas essa conferência só vale o que valem os rótulos humanos, e "o juiz concorda com humanos" é uma afirmação fraca se os humanos discordaram entre si e ninguém anotou o quanto. Este texto é sobre fechar essa lacuna: medir como um modelo raciocina, medir como uma pessoa raciocina e comparar as duas coisas com honestidade.
O Potato 2.7 está organizado em torno de uma ideia: uma ferramenta de anotação deveria medir como um julgamento foi feito, e não apenas registrá-lo. A parte interessante é que isso vale para os dois tipos de juiz.
O problema de validar um juiz
O fluxo padrão é razoável. Você tem uma tarefa grande demais para rotular à mão, então pede a um modelo que a pontue. Antes de confiar nas pontuações, você tira uma amostra, manda humanos rotularem e mede a concordância entre o juiz e as pessoas. Se o κ de Cohen for alto o bastante, você publica.
O ponto fraco é o último passo. Esse κ compara o seu juiz com um rótulo humano, normalmente um voto majoritário sobre dois ou três anotadores. E um voto majoritário é uma estimativa pontual sem barra de erro. Ele diz "sarcastic" com exatamente a mesma confiança quer os três anotadores tenham concordado de imediato, quer dois tenham vencido um terceiro depois de uma longa discussão.
Então, quando você reporta que o seu juiz concorda com humanos a κ = 0,71, você está reportando concordância com um número cuja própria incerteza você nunca mediu. Se os rótulos humanos nos itens difíceis estão perto de cara ou coroa, o κ nesses itens está medindo sobretudo ruído, e nenhuma engenharia de prompt vai movê-lo.
Já escrevemos sobre a mecânica de calibração do juiz e de alinhamento juiz ↔ humano. O que a 2.7 acrescenta é a outra metade: fazer o lado humano dessa comparação carregar a própria incerteza.
Dê barras de erro aos rótulos humanos primeiro
O motor psicométrico ajusta um modelo de teoria de resposta ao item às suas anotações humanas e reporta cada rótulo como uma posterior com intervalo (sarcastic, p = 0.94 [0.88 – 0.97]), pesando quem votou e não apenas quantos votaram.
O Truth Serum acrescenta a pontuação por predição de pares, que sinaliza os itens em que a multidão provavelmente erra mesmo estando confiante.
Agora a comparação com o juiz muda de formato. Em vez de
o juiz concorda com o rótulo majoritário em 71% dos itens
você pode dizer
o juiz concorda com a posterior humana em 94% dos itens em que o rótulo humano é confiante (p > 0,9), e em 52% dos itens em que não é. Esses itens de baixa confiança são 18% do conjunto.
A segunda afirmação é acionável de um jeito que a primeira não é. Ela diz que o seu juiz vai bem nos casos fáceis e é pouco confiável nos difíceis, e diz que fatia dos seus dados é difícil. Ela também diz uma coisa incômoda e útil: nos itens genuinamente ambíguos, pode não existir verdade fundamental com a qual o juiz possa concordar, e perseguir um κ mais alto ali é perseguir ruído.
É para isso que serve o painel de alinhamento juiz ↔ humano, e é por isso que os recursos de processo humano e os de avaliação de agentes são a mesma versão em vez de duas.
Duas cadeias de raciocínio no mesmo item
A outra metade da comparação é o raciocínio em si.
O Modo Think-Aloud registra como uma pessoa raciocina até um rótulo. O anotador fala enquanto trabalha; a conversão de fala em texto roda localmente; a transcrição é guardada literalmente, sem resumo, porque parafrasear um protocolo de pensar em voz alta destrói justamente aquilo que você estava coletando.
Cadeia de raciocínio humana, capturada literalmente
A anotação de recompensa de processo registra como um modelo raciocina. A cadeia de raciocínio do modelo é segmentada em passos, e cada passo recebe um sinal de recompensa bom/ruim/neutro, que é o sinal de treino de um process reward model.
annotation_schemes:
- annotation_type: process_reward
name: cot_review
description: "Rate each step of the model's reasoning."
steps_key: reasoning_stepsMesmo item. Duas cadeias de raciocínio. Coloque uma ao lado da outra.
O que você de fato aprende com a comparação
O uso óbvio é achar onde o modelo raciocina de forma diferente da pessoa, e vale ser concreto sobre por que isso importa.
A pontuação da resposta final não enxerga a diferença entre um modelo que acertou pelo motivo certo e um que acertou pelo motivo errado. Numa tarefa de sarcasmo, uma pessoa pode dizer "o 'thanks so much' ('muito obrigado mesmo') é o que faz o trabalho aqui. Ninguém agradece com essa intensidade por um atraso de dois dias." Um modelo pode chegar ao mesmo rótulo porque o texto tem um ponto de exclamação. Os dois são marcados como corretos. Só um deles vai generalizar.
Isso você não detecta pelos rótulos. Detecta pelo raciocínio, e é por isso que ter os dois compensa o trabalho.
O segundo uso são dados de treino. Os passos em que o raciocínio da pessoa e o do modelo divergem são, quase por definição, os passos de maior sinal num conjunto de dados de recompensa de processo. São os lugares onde o processo do modelo está errado de um jeito que a saída dele não revela.
Uma limitação honesta. O Potato te dá as duas superfícies de captura e as coloca lado a lado. Ele não calcula uma métrica automática de similaridade entre a cadeia de raciocínio de uma pessoa e a de um modelo, e deliberadamente não lançamos uma. O que significa "esses dois rastros de raciocínio concordam" é uma pergunta de pesquisa em aberto, e um número inventado por nós seria pior do que número nenhum, porque pareceria autoritativo e diria muito pouco. O artefato é o que importa; a métrica é você quem define.
Juntando tudo
Um pipeline de avaliação defensável na 2.7 se parece mais ou menos com isto.
- Rotule uma amostra com humanos, com a psicometria ligada. Cada rótulo ganha uma posterior e um intervalo. Itens ambíguos são identificados como ambíguos em vez de silenciosamente mal rotulados.
- Rode o Truth Serum para pegar os itens em que uma multidão confiante provavelmente erra.
- Corrija a diretriz onde o detector de bugs no livro de códigos sinalizar discriminação negativa, de preferência numa sala de norming onde dá para ver a concordância se mexer conforme vocês convergem.
- Calibre o juiz contra esses rótulos, e reporte o alinhamento condicionado à confiança humana em vez de como um número único.
- Confira o raciocínio, não só o veredito, nos itens em que o juiz e as pessoas discordam.
Cada passo é YAML, hospedado por você e gratuito. Os passos 1 a 3 não precisam de LLM nenhum.
Nada disso torna um juiz LLM confiável por si só. O que isso faz é tornar a afirmação de confiabilidade uma afirmação de verdade: uma frase com um intervalo anexado, contra rótulos humanos que também têm intervalos, sobre itens cuja dificuldade você consegue descrever com honestidade.
É uma régua mais baixa que "nosso juiz está alinhado com os valores humanos" e bem mais útil.
Leitura adicional
- Alinhamento juiz ↔ humano e calibração de LLM como juiz
- Rótulos com barras de erro — a camada de TRI por baixo de tudo isso
- Controle de qualidade sem rótulos-ouro
- Process reward models
- Modo Think-Aloud
- Potato 2.7 — a versão completa