Skip to content

Motore psicometrico

La teoria della risposta all'item applicata all'annotazione. Ogni etichetta riceve una probabilità a posteriori e un intervallo di confidenza invece di un semplice voto di maggioranza, e il modello si adatta senza etichette gold e senza alcun LLM.

Novità della v2.7.0

Potato può trattare il tuo studio di annotazione per quello che in effetti è: uno strumento di misura. Il livello psicometrico adatta un modello di item response theory (IRT) dal vivo, mentre le annotazioni arrivano, stimando congiuntamente l'etichetta vera di ogni elemento come probabilità, l'abilità di ogni annotatore con un errore standard, la difficoltà di ogni elemento e una diagnostica di discriminazione per elemento che segnala i probabili errori di codebook.

Non servono etichette gold e non è coinvolto alcun LLM. Il modello (una generalizzazione multiclasse di GLAD, Whitehill et al. 2009) ricava tutto dal solo schema dell'accordo, allo stesso modo in cui un test standardizzato impara quali domande sono difficili senza che nessuno lo dichiari. Gli adattamenti sono deterministici e richiedono millisecondi alla scala di uno studio di annotazione.

L'abilità degli annotatori stimata dal vivo, con intervalli di confidenza, così ogni etichetta riceve una distribuzione a posteriori invece di un semplice voto.

Configurazione

yaml
# Adaptive routing is opt-in via the standard assignment strategy key.
# Omit this line to keep your existing strategy and use psychometrics
# as a pure analytics layer.
assignment_strategy: psychometric
 
# Give items a redundancy target so early-stopped items translate into
# concrete saved judgments on the dashboard.
num_annotators_per_item: 4
 
psychometrics:
  enabled: true
  schema: sarcasm            # scheme to model; default: first radio/likert scheme
  refit_interval: 5          # refit after this many new labels (fits are ~ms)
  min_observations: 20       # cold-start gate before adaptive routing engages
  min_annotators_per_item: 2 # never early-stop an item below this many annotators
  confidence_threshold: 0.95 # posterior at which an item counts as resolved
  cost_per_judgment: 0.08    # optional: expresses savings in currency
  discrimination_flag_threshold: -0.2  # codebook-bug flag sensitivity

Gli schemi supportati sono quelli categorici a scelta singola: radio e likert (i punti likert sono trattati come categorie nominali). Gli schemi a scelta multipla non vengono modellati.

Etichette con barre di errore

Invece di sarcastic (2 of 3 votes), l'esportazione dice sarcastic, p = 0.94 [0.88 – 0.97]. La probabilità è la distribuzione a posteriori del modello, che pesa chi ha votato e non soltanto quanti, e l'intervallo è una banda di sensibilità di ±1 errore standard sulle stime di abilità.

A valle puoi addestrare su etichette soft, filtrare gli insiemi di valutazione tenendo solo gli elementi ad alta confidenza, oppure trattare gli elementi a bassa probabilità come genuinamente ambigui invece che come rumore. Vedi l'annotazione con etichette soft per l'approccio complementare, che raccoglie le distribuzioni direttamente dagli annotatori.

L'abilità degli annotatori, presentata onestamente

L'abilità θ viene stimata dagli schemi di accordo. Un valore di 1.0 è il prior per un annotatore nuovo, 0 significa che le sue etichette non portano informazione e i valori negativi significano che sbaglia in modo sistematico. Ogni stima arriva con un errore standard: un annotatore con 12 etichette ha un baffo largo, e la dashboard lo dice.

Non prendere decisioni sul personale a partire da un baffo largo. Gli errori standard sono approssimati (informazione di Fisher al modo) e per costruzione lievemente ottimistici.

Il rilevatore di errori nel codebook

La difficoltà degli elementi viene stimata insieme all'abilità, ma il segnale più utile è la discriminazione: la correlazione tra l'abilità dell'annotatore e la correttezza della risposta su ciascun elemento.

Quando la discriminazione è fortemente negativa, cioè quando sono i tuoi annotatori migliori a discostarsi dal consenso della folla, di solito è la linea guida a essere sbagliata o ambigua per quell'elemento, non gli annotatori. La dashboard li raccoglie sotto «Probabili errori di codebook». Correggi le istruzioni, poi torna a guardare. Le stanze multiplayer sono il posto in cui i team di solito vanno a risolverli.

Instradamento adattivo

Con assignment_strategy: psychometric, quando un annotatore chiede del lavoro gli elementi rimanenti vengono ordinati secondo l'esatto guadagno di informazione atteso a un passo che si otterrebbe se quell'annotatore etichettasse quell'elemento. Gli elementi ad alta incertezza vanno per primi agli annotatori con abilità alta, e gli elementi la cui distribuzione a posteriori supera già confidence_threshold (con almeno min_annotators_per_item annotatori) smettono di consumare budget. Rispetto a un disegno con N fisso per elemento, i giudizi risparmiati vengono conteggiati nella dashboard, e quotati se imposti cost_per_judgment.

Due note operative:

  • Avvio a freddo. Finché non esistono min_observations etichette, l'assegnazione ripiega sul caso, perché il modello ha bisogno di annotatori sovrapposti prima di poter separare l'abilità dalla difficoltà. Durante questa fase la dashboard mostra un indicatore di riscaldamento.
  • Batch. L'assegnazione avviene quando la coda di un utente si ricarica. L'ordinamento è più fresco quando le code sono corte; batch molto grandi per utente diluiscono l'adattività.

Analisi di potenza prima di spendere

Ogni progetto di annotazione tira a indovinare su «quanti annotatori per elemento?». Il progettista dello studio risponde con una simulazione Monte Carlo a seme fisso:

bash
python -m potato.psychometrics.design --items 500 --accuracy 0.75 \
    --classes 3 --target-ci 0.10 --cost 0.08
text
ann/item   alpha     95% interval   width  majority acc  judgments       cost
       2   0.392 [ 0.330,  0.439]   0.109         0.751       1000      80.00
       3   0.388 [ 0.338,  0.431]   0.093         0.864       1500     120.00  <- recommended

La raccomandazione è la ridondanza più piccola il cui intervallo al 95% sull'α di Krippendorff è più stretto di --target-ci, cioè il disegno più economico che dà comunque una stima dell'accordo precisa in modo difendibile. L'input --accuracy si misura meglio con un piccolo pilota. La stessa analisi è disponibile nella dashboard e come API di amministrazione (GET /psychometrics/api/design).

Puoi eseguirla anche in modo interattivo nel browser con il calcolatore di potenza per l'annotazione.

Endpoint

Tutti gli endpoint richiedono l'accesso da amministratore (RBAC VIEW_ADMIN_DASHBOARD; la modalità debug e la chiave API di amministrazione condivisa vengono accettate).

EndpointScopo
GET /psychometrics/dashboardDashboard dal vivo
GET /psychometrics/api/statsAggregati della dashboard (forza un nuovo adattamento)
GET /psychometrics/api/exportEsportazione arricchita: distribuzioni a posteriori, bande, abilità
GET /psychometrics/api/designAnalisi di potenza

Che rapporto ha con MACE

Potato include anche MACE, che stima la competenza degli annotatori e le etichette previste come analisi post-hoc. I due sono cugini della stessa letteratura, con compiti diversi.

MACEPsicometria
Modello dell'annotatorecompetenza binaria: sa oppure tira a indovinareabilità continua con errori standard
Modello dell'elementonessunodifficoltà + discriminazione (segnalazione di errori di codebook)
Quando viene eseguitoanalisi in batch dopo N annotazionidal vivo, dentro il ciclo di assegnazione
Guida l'assegnazionenosì, tramite instradamento per guadagno di informazione e arresto anticipato
Incertezza sulle etichetteentropiaprobabilità a posteriori + intervallo di sensibilità
Pianificazione prima dello studionoanalisi di potenza Monte Carlo

Usa MACE per una lettura rapida della competenza su qualsiasi schema categorico (copre anche multiselect). Usa la psicometria quando vuoi una misurazione consapevole della difficoltà che agisce sullo studio mentre è in corso.

Risoluzione dei problemi

  • La dashboard dice «riscaldamento» all'infinito. Il modello ha bisogno di almeno due etichette distinte e di annotatori sovrapposti. Con un solo annotatore o con etichette unanimi l'adattamento è degenere per costruzione. Aggiungi annotatori o abbassa min_observations.
  • assignment_strategy: psychometric è impostato ma l'instradamento sembra casuale. È il ripiego dell'avvio a freddo. Controlla l'indicatore di riscaldamento e min_observations.
  • Le abilità sono tutte vicine a 1.0 con baffi larghi. Non c'è ancora abbastanza sovrapposizione. Le abilità si separano man mano che gli annotatori accumulano elementi in comune.
  • 404 su /psychometrics/.... Nella configurazione manca il blocco psychometrics.enabled: true.

Ulteriori letture