Tre conferme possono nascere dallo stesso errore
Tre agenti AI leggono una procedura e propongono la stessa risposta. L’accordo sembra una verifica: se tutti arrivano lì, probabilmente è giusto. Ma se hanno consultato la stessa pagina obsoleta, possono aver ripetuto un solo errore tre volte. La domanda è precisa: quanto migliora un voto di maggioranza quando gli errori non sono indipendenti? Costruiremo una distribuzione completa, non attribuiremo una percentuale inventata ad agenti reali.
L’esempio riguarda una decisione binaria con risposta vera fissata e un numero dispari m di votanti. E_i vale uno se l’agente i sbaglia, zero se risponde correttamente. Ogni agente ha probabilità marginale p=0,2 di errore; non significa che il 20% sia un dato misurato. In un problema con molte risposte sbagliate diverse, contare gli errori non descrive da solo il voto sulle risposte: la restrizione binaria è essenziale. Le probabilità sono senza unità.
Prima il caso indipendente
Se gli errori sono indipendenti, una maggioranza sbaglia quando almeno (m+1)/2 votanti sbagliano. Per m=3 ci sono tre modi di avere esattamente due errori, ciascuno con probabilità p²(1−p), e un modo di averne tre, con probabilità p³. Otteniamo 3p²(1−p)+p³=0,104: meno di 0,2. Il beneficio non nasce dall’accordo in astratto, ma dall’ipotesi che gli errori si distribuiscano fra casi differenti.
C(m, k) conta quali k agenti sbagliano; il prodotto descrive la probabilità di ogni disposizione. La somma include tutti e soli gli esiti con maggioranza sbagliata. Il codice confronta la formula con l’enumerazione di tutte le sequenze binarie per m=3 e m=5. È un controllo esatto di un modello finito, non una simulazione di conversazioni. Se p supera 0,5, il ragionamento non garantisce un miglioramento: nello script tre votanti con p=0,7 peggiorano il rischio individuale.
Introduciamo una causa comune senza cambiare il singolo agente
Con probabilità q scegliamo un ramo comune: tutti i votanti copiano lo stesso indicatore Bernoulli di probabilità p. Con probabilità 1−q scegliamo il ramo indipendente appena descritto. q è la frequenza del ramo comune nel modello, non una stima del grado di somiglianza fra testi. In entrambi i rami ogni agente sbaglia con probabilità p, quindi il tasso individuale resta esattamente lo stesso. Cambia soltanto la distribuzione congiunta, cioè il modo in cui gli errori si presentano insieme.
Nel ramo comune la maggioranza sbaglia esattamente quando sbaglia l’indicatore copiato: probabilità p. Nell’altro ramo vale B_m(p). Pesando i due casi otteniamo la formula. Con tre agenti e q=0,5 il rischio diventa 0,5·0,2+0,5·0,104=0,152. Con q=1 resta 0,2 per qualsiasi m: aggiungere copie non aggiunge evidenza. Per p<0,5, anche facendo crescere m, questo modello conserva il pavimento q·p. Il grafico mostra quel limite, non una legge universale per tutti i sistemi multi-agente.
| m | q=0 | q=0,5 | q=1 |
|---|---|---|---|
| 1 | 0.2 | 0.2 | 0.2 |
| 3 | 0.104 | 0.152 | 0.2 |
| 5 | 0.05792 | 0.12896 | 0.2 |
| 9 | 0.019581 | 0.109791 | 0.2 |

Correlazione e unanimità rispondono a domande diverse
Per due agenti distinti, E[E_iE_j]=q·p+(1−q)p². Sottraendo p² troviamo covarianza q·p(1−p); dividendo per la varianza p(1−p), per 0< p<1, la correlazione è q. Abbiamo potuto derivarlo perché conosciamo l’intera costruzione. In generale, probabilità individuali e correlazioni a coppie non determinano da sole tutti gli eventi di maggioranza: dipendenze di ordine superiore possono cambiare il risultato. Misurare concordanza nelle risposte, inoltre, non equivale a misurare correlazione degli errori senza conoscere la verità.
Se accettiamo soltanto l’unanimità, dobbiamo contare anche quante richieste rifiutiamo. Nel ramo comune sono tutti concordi, giusti o sbagliati; nel ramo indipendente l’unanimità ha probabilità p^m+(1−p)^m. La copertura è dunque q+(1−q)[p^m+(1−p)^m]. Il rischio fra gli accettati divide q·p+(1−q)p^m per questa copertura. Il codice calcola entrambi, così una precisione selettiva non viene scambiata per servizio completo.
Che cosa verificare in un sistema reale
L’esperimento enumera e somma probabilità, non esegue modelli linguistici; non misura costi, latenza o qualità di agenti commerciali. Per passare alla pratica servono compiti rappresentativi, verità indipendente e registrazione delle fonti comuni, oltre al numero di agenti. La diversità di nomi o prompt non prova indipendenza. Cambiare fonte può ridurre una causa comune, ma va misurato: questo modello non lo certifica. Anche il verificatore finale può condividere il medesimo errore di partenza.
La risposta iniziale è quindi condizionata: il voto aiuta se combina evidenze con errori sufficientemente diversi, non perché le risposte siano numerose. Nel modello esplicito tre errori individuali del 20% diventano un rischio del 10,4% con indipendenza, del 15,2% con metà ramo comune, e del 20% con dipendenza completa. Le stesse competenze individuali producono esiti collettivi diversi. Contare le conferme senza studiarne l’origine può soltanto moltiplicare la fiducia nello stesso errore.
import math,itertools,json,sys
from pathlib import Path
p=.2;rows=[]
def independent_majority(m,p):return math.fsum(math.comb(m,k)*p**k*(1-p)**(m-k) for k in range(m//2+1,m+1))
for m in [1,3,5,9]:
for q in [0,.25,.5,.75,1]:
majority=q*p+(1-q)*independent_majority(m,p)
all_wrong=q*p+(1-q)*p**m;unanimous=q+(1-q)*(p**m+(1-p)**m)
rows.append(dict(agents=m,sharedBranchProbability=q,pairwiseErrorCorrelation=q,errorEach=p,majorityError=majority,unanimousCoverage=unanimous,errorGivenUnanimity=all_wrong/unanimous))
for m in [3,5]:
exhaustive=math.fsum(p**sum(bits)*(1-p)**(m-sum(bits)) for bits in itertools.product([0,1],repeat=m) if sum(bits)>m//2)
assert abs(exhaustive-independent_majority(m,p))<1e-14
assert abs(independent_majority(3,.2)-.104)<1e-14
assert all(abs(r['majorityError']-.2)<1e-14 for r in rows if r['sharedBranchProbability']==1)
assert independent_majority(3,.7)>.7
r=dict(python=sys.version.split()[0],seed=None,scope='Exact constructed mixture model of dependent Bernoulli error indicators, not an evaluation of real AI agents',model='With probability q all m errors equal one Bernoulli(p); otherwise errors independently Bernoulli(p). Binary ground truth and odd majority; no adversarial or language-model execution.',rows=rows)
Path(__file__).with_name('results.json').write_text(json.dumps(r,indent=2),encoding='utf8');print('All exact mixture and enumeration assertions passed; rows',len(rows))
Codice, dati e istruzioni · JSON. Calcoli didattici eseguiti con Python 3.14.0; figure con Matplotlib 3.11.2. Analisi con assistenza AI, senza dichiarare peer review o revisione umana. Copertina originale ImageGen, illustrativa: non documenta persone, sedi o installazioni EL-AI. Fonti consultate il 25 ottobre 2026.

