Duas formas de errar
A diferença entre precisão e revocação é óbvia para quem trabalha avaliando modelos de aprendizado de máquina. Para as outras pessoas, nem tanto.
Um exemplo ajuda a entender.
Imagine que você está construindo um pipeline de RAG e quer uma recuperação muito confiável na sua base vetorial. Uma das primeiras perguntas é quantos segmentos buscar, ou qual valor definir para top_k.
Se você buscar 3 segmentos, provavelmente todos serão muito relevantes. Mas pode deixar de fora segmentos relevantes que ficaram em 4º ou 10º lugar. Parte do material útil não foi recuperada.
Você pode tentar resolver isso aumentando top_k para 50. Assim, encontra tudo que é relevante, mas também muito material irrelevante. Isso aumenta a chance de o LLM retornar informações com ruído, incluindo conteúdo que não interessa, embora você tenha recuperado todos os segmentos relevantes da base vetorial.
Esse compromisso é conhecido como precisão versus revocação, ou recall.
Buscar os 3 primeiros segmentos tem alta precisão, porque o resultado é muito relevante. Mas tem baixa revocação, porque deixa informações de fora.
Já buscar os 50 primeiros tem alta revocação, porque encontra tudo, e menor precisão, porque também traz muito conteúdo inútil.
Precisão e revocação aparecem sempre que um sistema precisa detectar algo. A tarefa é binária, detectar X como verdadeiro ou não detectar como falso. Ao fazer isso, o sistema pode acertar ou errar.
Vamos aprofundar essa ideia ao falar da matriz de confusão.
Sim, isso pode confundir. Por isso, é melhor entender primeiro por que usamos precisão e revocação. Medir apenas a acurácia pode enganar.
Por que a acurácia sozinha engana
Imagine que um detector recebe 100 exemplos. Dez contêm o evento que ele deveria detectar. Mas o detector responde “nenhum evento” em todos os 100. Ele alcança 90% nesse teste porque acerta os 90% dos casos sem evento.
Porém, acerta 0% dos eventos que estavam presentes e deveriam ter sido identificados.
Pense em um segurança na entrada de um prédio. Se apenas 1 em cada 100 visitantes representa uma ameaça, um segurança que deixa todos entrarem está “99% correto” ao permitir a entrada das pessoas certas. Mas, se a avaliação mede o sucesso em manter as pessoas erradas fora, ele acerta 0%, porque sua tarefa é justamente identificar aquele visitante perigoso.
Quando um conjunto de dados favorece muito um resultado, um modelo que dá palpites aleatórios ao longo das interações pode alcançar uma pontuação alta por acaso e parecer exato no papel. Ainda assim, falha em prever o que deveria.
Identifique o evento
Para evitar confusão, acho útil só analisar precisão e revocação depois de definir a tarefa de detecção do sistema. As métricas dependem da tarefa.
Comece pelo caso verdadeiro positivo.
Para um filtro de spam, o evento é “este e-mail é spam”, um verdadeiro positivo. Para um detector de fumaça, é “há fumaça”.
Esse é o evento que deve ser sinalizado. Até aqui, tudo bem.
Mas e se o sistema tiver duas tarefas? Para um modelo de fala para texto com detecção automática de turnos, os eventos podem ser “o usuário começou a falar” e “o usuário parou de falar”. Parar de falar não é a mesma coisa que terminar o turno. Cada evento precisa de suas próprias métricas de precisão e revocação.
Um resultado positivo significa que o sistema afirma que o evento aconteceu. É um rótulo de um dos lados da tarefa de detecção, não um julgamento de valor.
| Houve fala | Não houve fala | |
|---|---|---|
| O sistema sinaliza fala | Verdadeiro positivo (TP) | Falso positivo (FP) |
| O sistema não sinaliza fala | Falso negativo (FN) | Verdadeiro negativo (TN) |
Essa grade é a matriz de confusão. Ela mapeia todos os resultados possíveis da detecção de um evento, comparando o que realmente aconteceu com o que o sistema afirmou.
Antes de escolher uma métrica, responda a quatro perguntas:
- Qual evento o sistema deve detectar?
- O que conta como um sinal emitido pelo sistema?
- Como seria um falso positivo?
- Como seria um falso negativo?
Comece pelo denominador
Começar pelo denominador me ajudou a entender a diferença entre precisão e revocação.
Precisão
O denominador da precisão reúne tudo que o modelo previu como positivo, incluindo previsões corretas e incorretas. São os verdadeiros positivos mais os falsos positivos.
No numerador, contamos quantas previsões estavam corretas, ou seja, os verdadeiros positivos.
Isso resulta na seguinte fórmula:
precision = true positives / (true positives + false positives)
Considere o evento “a fala começou”. Há 100 amostras de áudio. O filtro marca 80 como início de fala, mas apenas 60 delas realmente continham esse evento.
São 60 verdadeiros positivos e 80 - 60 = 20 falsos positivos. Assim:
precision = 60 / (60 + 20) = 75%
Baixa precisão faz o sistema identificar outros sons, ou até o silêncio, como fala.
A precisão é a razão entre o que o modelo acertou e tudo que classificou como positivo, somando acertos e erros.
Revocação
O denominador da revocação é o total de eventos positivos que realmente existem, tanto os encontrados quanto os perdidos. São os verdadeiros positivos mais os falsos negativos. Ele inclui todos os eventos reais, quer o modelo os tenha encontrado ou não.
O numerador é o mesmo da precisão, a contagem de verdadeiros positivos.
recall = true positives / (true positives + false negatives)
A revocação é a razão entre o que o modelo acertou e a soma do que acertou com o que deveria ter identificado, mas excluiu incorretamente.
No mesmo exemplo de detecção de fala, há 60 verdadeiros positivos e 0 falsos negativos, porque o modelo encontrou todos os eventos reais, além de outros casos.
Assim:
recall = 60 / (60 + 0) = 100%
Esse exemplo não mostra bem o valor da revocação, então vamos mudá-lo. Imagine 100 amostras de áudio. O modelo marca 50 como início de fala, mas há 60 amostras que realmente contêm esse evento.
Temos 50 verdadeiros positivos e 60 - 50 = 10 falsos negativos. São 10 inícios de fala que o modelo perdeu.
O resultado é:
recall = 50 / (50 + 10) = 83%
precision = 50 / (50 + 0) = 100%
Neste novo exemplo, a precisão é 100%, porque não há falsos positivos.
Observe também a diferença em relação à acurácia simples:
accuracy = (true positives + true negatives) / all samples
Use a acurácia quando cada decisão tiver custo semelhante e o conjunto de avaliação representar a produção. Mas, quando o evento é raro ou os dois tipos de erro têm custos diferentes, relatar os resultados com base na matriz de confusão muda a compreensão do desempenho.
Se você quiser explorar as fórmulas matemáticas e suas derivações, consulte o artigo completo da Wikipédia!
O compromisso entre precisão e revocação
Os exemplos mostram um compromisso real. Quando uma métrica sobe, a outra tende a cair.
O exemplo inicial explica por quê. Recuperar mais documentos aumenta a revocação, mas reduz a precisão. Recuperar menos aumenta a precisão, mas reduz a revocação.
Na prática, a maioria dos modelos produz uma pontuação de confiança para as detecções, um número entre 0 e 1 que indica o grau de certeza. O limiar é o ponto de corte escolhido, por exemplo, “marque como positivo tudo acima de 0.7”.
É como o controle de volume de um aparelho auditivo. Aumente a sensibilidade e você ouve todas as conversas, mas também o ar-condicionado, o trânsito e a TV do vizinho. Diminua e você ouve apenas falas altas e claras, mas perde as vozes baixas.
Ao aumentar o limiar, o modelo produz menos falsos positivos. A precisão sobe.
Ao diminuir o limiar, ele identifica mais casos corretamente e reduz os falsos negativos. A revocação sobe.
Modelos que operam na fronteira de Pareto, como o Ink-2 da Cartesia, equilibram esses compromissos de forma ótima.
Aplique isso à IA de voz
A IA de voz reúne várias tarefas de detecção e previsão. Não avalie todas com um único número de acurácia.
A detecção de atividade de voz, ou VAD, verifica se uma janela de áudio contém fala. Um conjunto de teste pode ter muito mais quadros de silêncio do que de fala. Prever silêncio sempre parece exato, mas perde toda a fala. Meça precisão e revocação da fala. Informe com que frequência o detector a sinaliza corretamente e com que frequência deixa de identificá-la.
A detecção de turnos decide quando uma pessoa assume ou cede o turno da conversa. Os eventos de início e fim precisam de métricas separadas. A seguir, usamos dois eventos de turno do ASR Ink-2.
turn_start: o usuário começou a falar?
O evento-alvo é “o usuário começou a falar”. O sistema o sinaliza ao emitir um evento turn_start.
- Um falso positivo ocorre quando ele emite
turn_startpara ruído de teclado, fala de fundo, vazamento de áudio no microfone ou o áudio do próprio agente. - Um falso negativo ocorre quando o usuário começa a falar e o sistema não percebe.
Baixa precisão de turn_start faz o sistema reagir a áudio que não é do usuário. Se turn_start interrompe a reprodução, os falsos positivos provocam interrupções indevidas.
Baixa revocação de turn_start pode impedir que falas reais cheguem ao restante do pipeline.
turn_end: a pessoa terminou?
O evento-alvo é “o usuário terminou seu turno”. O sistema o sinaliza ao emitir turn_end, e a aplicação pode responder.
- Um falso positivo ocorre quando ele emite
turn_endenquanto o usuário pretende continuar. - Um falso negativo ocorre quando o usuário terminou, mas o sistema continua esperando.
Baixa precisão de turn_end pode interromper o usuário após uma pausa para pensar, corrigir uma frase ou respirar. Baixa revocação de turn_end cria um silêncio depois que a pessoa terminou.
Para ambos os eventos, defina o que conta como correspondência entre um horário previsto e um horário anotado. Antes de calcular as métricas, defina o locutor-alvo, como anotar fala sobreposta e áudio de fundo, e o que significa “terminou”.
Escolha a métrica com base na falha
- Informe precisão e revocação de
turn_starteturn_endseparadamente. - Escolha o limiar conforme o erro que tem maior custo no produto.
- Examine exemplos de falsos positivos e falsos negativos, além das pontuações agregadas.
- Use a acurácia como contexto, sem tratá-la como toda a avaliação.
Na próxima vez que um modelo declarar 90% de acurácia, pergunte o que ele detectou, com que frequência esse evento aconteceu e quais erros a pontuação esconde.
