Estatística

Thompson Sampling: o algoritmo por trás dos bandits modernos

Thompson sampling explicado: como o algoritmo sorteia da posterior Beta de cada braço e por que converge mais rápido que epsilon-greedy.

Ilustração de três distribuições de probabilidade em forma de sino, representando a crença sobre a taxa de conversão de três braços de um bandit, em verde escuro e teal

Thompson Sampling é o algoritmo bayesiano que a maioria dos multi-armed bandits de produção usa para decidir, visitante a visitante, para qual variação mandar o próximo clique. Em vez de fixar a divisão de tráfego no início e só analisar no fim, como um teste A/B clássico, ele sorteia um valor da crença atual sobre cada braço e manda o visitante para quem sorteou o maior valor, atualizando essa crença a cada resultado observado. Este guia explica a mecânica por trás do sorteio (a distribuição Beta e a atualização conjugada), mostra a matemática passo a passo com um exemplo de três variações e números reais, calculados pelo mesmo motor bayesiano que já roda neste blog, e diz com clareza quando essa técnica vale mais que um teste A/B com significância formal, e quando não vale.

O problema que o Thompson Sampling resolve: exploração x explotação

Todo bandit multi-braço precisa equilibrar duas forças opostas. Explorar é gastar tráfego em braços sobre os quais ainda existe pouca certeza, para aprender mais sobre eles. Explotar é concentrar tráfego no braço que, com a informação disponível até agora, parece o melhor. Um algoritmo que só explora nunca converge e desperdiça conversão indefinidamente; um algoritmo que só explota corre o risco de travar cedo demais numa escolha errada, porque os primeiros dados de qualquer braço são ruidosos.

Existem três famílias clássicas de resposta a esse problema, cada uma com uma filosofia diferente:

A diferença central entre os três aparece na forma como a exploração diminui ao longo do teste. No epsilon-greedy ela fica constante (a menos que alguém decida reduzir ε manualmente); no UCB e no Thompson Sampling ela diminui sozinha, como consequência direta de mais dados reduzirem a incerteza de cada braço:

A distribuição de um braço fica mais estreita conforme os dados se acumulamPara um braço com taxa real de 5%, a distribuição de crença Beta começa larga com 100 visitantes (desvio padrão de 2,32%), fica mais estreita com 400 visitantes (1,11%), e bem mais estreita com 1.600 visitantes (0,55%), reduzindo a exploração automaticamente.taxa de conversão possível para este braço100 visitantesdesvio padrão 2,32%400 visitantesdesvio padrão 1,11%1.600 visitantesmesma taxa real (5%), mais dados= curva mais estreita = menos sorteios“por engano” acima da média
Números reais do modelo Beta-Binomial: com um prior uniforme Beta(1,1) e taxa real de 5%, a posterior após 100, 400 e 1.600 visitantes é Beta(6,96), Beta(21,381) e Beta(81,1521), com desvio padrão caindo de 2,32% para 1,11% e depois 0,55%. Ninguém precisa programar essa redução manualmente, ela é consequência direta da matemática da atualização.

Como o Thompson Sampling decide, passo a passo

O mecanismo é mais simples do que parece à primeira vista, e não exige nenhum parâmetro manual como o ε do epsilon-greedy. Para cada braço do teste, o algoritmo mantém uma distribuição de probabilidade que representa a crença atual sobre a taxa de conversão real daquele braço, dado tudo o que já foi observado. Quando a métrica é uma conversão binária (converteu ou não converteu), essa distribuição de crença é uma Beta(α, β), o par conjugado natural da distribuição binomial.

O ciclo se repete a cada novo visitante:

O ciclo de decisão do Thompson SamplingA cada visitante, o algoritmo sorteia um valor aleatório da distribuição Beta de cada braço, escolhe o braço com o maior valor sorteado, observa se aquele visitante converteu ou não, e usa esse resultado para atualizar a distribuição daquele braço antes do próximo visitante.Sorteiaum valor de cadaBeta(α, β)Escolheo braço como maior sorteioObservaconverteu ounão converteuAtualizaa Beta daquele braçovolta para o início, no próximo visitante
Nenhum parâmetro manual entra nesse ciclo: a proporção de exploração e explotação sai inteira da largura da distribuição de cada braço, que só encolhe quando chega dado de verdade.

Em termos simples: um braço com pouco dado tem uma Beta larga (muita incerteza), então às vezes o sorteio tira dele um valor bem alto mesmo que a média pareça mediana, e ele acaba recebendo tráfego de exploração de forma orgânica, sem que ninguém precise reservar uma fatia fixa para isso. Um braço com muitos dados e taxa claramente ruim tem uma Beta estreita e baixa, então quase nunca sorteia um valor alto o bastante para vencer, o que reduz o tráfego que vai para ele sem zerá-lo por completo.

A atualização conjugada: de Beta(1,1) a Beta(1+conversões, 1+não-conversões)

A parte que faz o Thompson Sampling ser barato de calcular (e por isso tão comum em produção) é que, para uma métrica de conversão binária, a atualização da crença tem uma fórmula fechada, sem precisar de nenhuma simulação pesada. Partindo de um prior uniforme Beta(1,1), que diz “antes de qualquer dado, toda taxa de conversão entre 0% e 100% é igualmente provável”, a regra de atualização depois de observar um número de visitantes e conversões é:

posterior do braço = Beta(1 + conversões, 1 + visitantes − conversões)

Essa é a mesma fórmula, com o mesmo prior Beta(1,1), que já roda por baixo da calculadora bayesiana deste blog. O motivo de ela ser tão simples é a propriedade de conjugação: quando o prior é Beta e a observação é binomial (converteu ou não), a posterior continua sendo Beta, então basta somar conversões ao parâmetro α e não-conversões ao parâmetro β. Não há integração numérica pesada nem simulação por trás dessa etapa específica, só uma soma.

Um exemplo numérico passo a passo: três variações, um round de tráfego

Para sair da teoria, vamos rodar a conta com números reais. Imagine uma landing page rodando um teste com três variações (A, B e C) sob Thompson Sampling. No início do teste, sem nenhum dado, todos os três braços partem do mesmo prior uniforme Beta(1,1), 33% de chance de tráfego para cada um. Depois de um primeiro round de tráfego com 800 visitantes em cada braço, os resultados observados foram:

Braço Visitantes Conversões Taxa observada
A 800 40 5,00%
B 800 56 7,00%
C 800 32 4,00%

Aplicando a fórmula de atualização (Beta(1+conversões, 1+visitantes−conversões)) a cada braço:

A média de uma distribuição Beta(α, β) é α ÷ (α+β), e o desvio padrão é a raiz quadrada de [α·β ÷ ((α+β)²·(α+β+1))]. Calculando os dois para cada braço:

Braço Posterior Média posterior Desvio padrão
A Beta(41, 761) 5,11% 0,78%
B Beta(57, 745) 7,11% 0,91%
C Beta(33, 769) 4,11% 0,70%
As três distribuições posteriores depois de 800 visitantes por braçoBraço A tem posterior Beta(41,761) com média 5,11%; braço B tem Beta(57,745) com média 7,11%; braço C tem Beta(33,769) com média 4,11%. A curva de B está deslocada à direita das outras duas, com sobreposição pequena.taxa de conversão possívelC · 4,11%desvio 0,70%A · 5,11%desvio 0,78%B · 7,11%desvio 0,91%
A curva de B mal se sobrepõe às de A e C. Na próxima leva de visitantes, a maioria dos sorteios da distribuição de B tende a superar os sorteios de A e C, então B recebe a maior fatia do próximo tráfego, sem que A e C sejam zerados.

Repare no padrão: quanto maior a distância entre as médias e menor a sobreposição das curvas, mais previsível fica qual braço vence o sorteio na rodada seguinte, e é exatamente esse mecanismo, sem nenhum parâmetro manual, que empurra tráfego crescente para B a partir daqui. Ainda assim, A e C continuam recebendo alguma fatia de tráfego, porque suas distribuições, embora mais baixas, ainda têm uma cauda que ocasionalmente sorteia um valor competitivo, o que é a exploração residual que mantém o algoritmo honesto caso B tenha tido, por acaso, uma rodada de sorte.

Cheque a matemática na calculadora bayesiana

A posterior de cada braço no Thompson Sampling é o mesmo objeto matemático que uma calculadora bayesiana de teste A/B usa para responder “qual a probabilidade de B ser melhor que A”. Para comparar o braço B com o braço A do exemplo acima, insira os números da tabela (A: 800 visitantes, 40 conversões; B: 800 visitantes, 56 conversões) na calculadora abaixo:

Calculadora bayesiana de teste A/B
A (controle)
B (variação)
-probabilidade de B vencer A
Taxa de A (posterior)-
Taxa de B (posterior)-
Probabilidade de A vencer-
Risco ao escolher B (perda esperada)-
Melhora relativa (médias)-

Modelo Beta-Binomial com prior uniforme Beta(1,1) e intervalo de credibilidade de 95%. Cálculo determinístico, recalcula ao vivo.

Rodando esses números no mesmo motor bayesiano que alimenta a calculadora (Beta-Binomial conjugado, prior Beta(1,1), intervalo de credibilidade de 95%), o resultado é: taxa posterior de A em 5,11% (intervalo de credibilidade de 3,70% a 6,74%), taxa posterior de B em 7,11% (intervalo de 5,43% a 8,98%), probabilidade de B vencer A de 95,34%, melhora relativa das médias de +39,0%, e um risco (perda esperada) de apenas 0,02 ponto percentual ao decidir por B contra 2,02 pontos percentuais ao decidir por A. Comparando B contra C nos mesmos moldes (C: 800 visitantes, 32 conversões), a probabilidade de B vencer C sobe para 99,57%, coerente com a distância ainda maior entre as duas curvas na figura acima.

Esse é o ponto de conexão entre as duas técnicas: um teste A/B bayesiano roda essa conta uma vez, no fim do teste, para relatar um veredito. O Thompson Sampling roda o sorteio equivalente a cada visitante, durante todo o teste, para decidir tráfego em tempo real. A matemática de fundo é a mesma; o que muda é a frequência e o propósito do cálculo.

Por que o Thompson Sampling converge mais rápido que o epsilon-greedy

“Converge mais rápido” quer dizer, aqui, que o algoritmo perde menos conversão possível durante o próprio processo de aprendizado, o chamado regret (arrependimento acumulado). A razão estrutural para essa vantagem está em como cada método decide quanto explorar a cada momento:

Critério Epsilon-greedy UCB Thompson Sampling
Como decide a exploração Fatia fixa (ε) do tráfego, sempre aleatória entre os braços Bônus de otimismo somado à taxa estimada, maior quanto menos dado houver Sorteio aleatório da distribuição de crença de cada braço
A exploração diminui sozinha com mais dados? Não, ε continua igual a menos que alguém reduza manualmente Sim, o bônus encolhe conforme a incerteza cai Sim, a distribuição fica mais estreita conforme a incerteza cai
Precisa de parâmetro manual Sim, o valor de ε (e, se usar epsilon decrescente, também a taxa de decaimento) Não, o bônus é calculado a partir dos próprios dados Não, o prior é o único ajuste, e um prior uniforme já funciona bem na maioria dos casos
Onde desperdiça mais tráfego Em braços já claramente ruins, depois de muitos dados Menos que o epsilon-greedy, mas o bônus é uma aproximação determinística da incerteza Tende a desperdiçar menos, porque a variância real de cada braço entra direto no sorteio

O epsilon-greedy trata a incerteza como um problema de “quanto tempo eu devo explorar”, resolvido com um número fixo escolhido de antemão. O Thompson Sampling trata a incerteza como parte da própria distribuição de cada braço, então a quantidade de exploração se ajusta automaticamente: braços recém-chegados exploram muito (distribuição larga), braços já bem estabelecidos exploram pouco (distribuição estreita), sem que ninguém precise decidir isso à mão. É essa auto-regulação, documentada em avaliações empíricas como a de Chapelle & Li (2011), que costuma dar ao Thompson Sampling um regret acumulado menor do que o do epsilon-greedy no mesmo cenário.

Quando usar Thompson Sampling em vez de um teste A/B clássico (e quando não usar)

A pergunta certa não é “qual técnica é mais moderna”, é “o que a decisão específica exige”. Thompson Sampling tende a valer mais quando:

O teste A/B clássico continua sendo a ferramenta certa quando:

Muitas operações maduras usam as duas coisas em sequência, como já cobrimos no guia de bandit x teste A/B: teste A/B para validar formalmente que uma mudança funciona, Thompson Sampling para otimizar continuamente entre variações já validadas, onde a pergunta deixou de ser “isso funciona?” e passou a ser “qual delas funciona melhor, sempre?”.

Faça isso automático na Donnu

Você acabou de ver a mecânica inteira por trás do Thompson Sampling: a posterior Beta de cada braço, a atualização conjugada que soma conversões e não-conversões ao prior, o sorteio que decide o próximo visitante, e por que essa auto-regulação da exploração costuma vencer um epsilon fixo. A Donnu A/B já roda hoje sobre esse mesmo motor bayesiano nativo, a mesma matemática Beta-Binomial que declara um vencedor honesto num teste A/B clássico é a base que um bandit como o Thompson Sampling usa para otimizar continuamente. Você não precisa escolher a ferramenta certa às cegas, comece pela estatística que os dois cenários já exigem.

Comece um teste grátis de 14 dias e rode a sua própria comparação bayesiana sobre o seu tráfego real.

Leia também o guia completo de multi-armed bandits x teste A/B, a peça-irmã sobre bandit contextual explicado para quando o vencedor muda por perfil de visitante, e o guia de significância estatística em testes A/B para a base frequentista que complementa esta leitura bayesiana.

Referências

Perguntas frequentes

O que é Thompson Sampling, em poucas palavras?
É um algoritmo de multi-armed bandit que decide qual variação mostrar a cada visitante sorteando um valor aleatório da distribuição de crença (posterior) de cada braço e escolhendo o braço que sorteou o maior valor. Ele nasceu num artigo de William R. Thompson em 1933 e hoje é o método bayesiano mais usado em bandits de produção.
Por que o Thompson Sampling costuma convergir mais rápido que o epsilon-greedy?
Porque a quantidade de exploração se ajusta sozinha à incerteza real de cada braço: braços com poucos dados têm distribuições largas e são sorteados com frequência (exploração automática), enquanto braços com muitos dados e taxa claramente ruim têm distribuições estreitas e quase nunca vencem o sorteio. O epsilon-greedy, ao contrário, reserva a mesma fatia fixa de tráfego para exploração o tempo todo, mesmo depois de a incerteza já ter desaparecido.
Preciso saber estatística bayesiana para usar Thompson Sampling na prática?
Não para operar o produto: a mecânica (Beta como distribuição de crença, atualização por conversões observadas, sorteio e escolha do maior valor) é a mesma matemática que já sustenta uma calculadora bayesiana de teste A/B. Entender a lógica ajuda a interpretar por que o tráfego migra do jeito que migra, mas a conta em si já vem pronta na ferramenta.
Quando eu NÃO devo usar Thompson Sampling em vez de um teste A/B clássico?
Quando a decisão precisa de um veredito formal e documentável: um valor-p, um intervalo de confiança, ou uma alocação de tráfego estável o bastante para analisar por segmento depois. Thompson Sampling muda a alocação continuamente, então não produz significância estatística no sentido clássico nem preserva uma divisão de tráfego comparável entre o início e o fim do teste.
Thompson Sampling e o teste A/B bayesiano da Donnu usam a mesma matemática?
Sim. As duas técnicas partem do mesmo modelo Beta-Binomial conjugado: a posterior de cada braço (ou variação) é Beta(1 + conversões, 1 + não-conversões) a partir de um prior uniforme Beta(1,1). A diferença está no uso que se faz dessa posterior, um teste A/B bayesiano relata a probabilidade final de B ser melhor que A; o Thompson Sampling sorteia dessa mesma posterior a cada visitante para decidir o tráfego em tempo real.