roberta-large-so
Encoder addestrato con statement tuning multi-domanda: dato un testo (lo stato) e uno o piu' statement,
restituisce la probabilita' che ogni statement sia vero. Pensato come proxy veloce per sem_filter.
Gli statement condividono lo stato nella stessa sequenza, ma una maschera di attenzione bidirezionale a blocchi li rende indipendenti: il punteggio di uno statement e' identico a quello che si otterrebbe valutandolo da solo.
Uso
Basta transformers: il codice del modello e' incluso nel repository (trust_remote_code=True).
from transformers import AutoModel
model = AutoModel.from_pretrained("stefra/roberta-large-so", trust_remote_code=True)
model.predict("The vase is broken.", "The sentence is negative.") # un numero, es. 0.93
model.predict("The vase is broken.", ["The vase is intact.", "It is sad."]) # un array, uno per statement
model.predict(recensioni, "This review is negative.") # un array, uno per testo
model.filter(recensioni, "This review is negative.") # True/False per ogni testo
Non e' un modello generativo: predict restituisce la probabilita' che ogni statement sia vero. Su GPU il modello
viene caricato in float16; si puo' scegliere con device= e dtype=.
Con il pacchetto st_encoder (codice di training) funziona anche
StatementScorer.from_pretrained("stefra/roberta-large-so").
Contenuto
| File | Contenuto |
|---|---|
modeling_sysoneso.py | codice del modello, usato da AutoModel |
config.json | configurazione per AutoModel |
backbone/ | encoder fine-tuned (formato transformers) |
head.safetensors | testa vero/falso |
statement_encoder.json | pooling e configurazione del packing usata in training |
tokenizer* | tokenizer |
eval_report.json | metriche per sorgente |
Metriche
Validazione (sorgenti di training)
| sorgente | n | accuracy | F1 | ROC-AUC | Brier | ECE |
|---|---|---|---|---|---|---|
| dpr | 264 | 0.864 | 0.865 | 0.921 | 0.125 | 0.117 |
| massive | 900 | 0.956 | 0.955 | 0.995 | 0.033 | 0.025 |
| mintaka | 450 | 0.922 | 0.904 | 0.972 | 0.064 | 0.040 |
| mnli | 695 | 0.892 | 0.886 | 0.959 | 0.086 | 0.071 |
| piqa | 395 | 0.580 | 0.603 | 0.593 | 0.249 | 0.046 |
| qasc | 744 | 0.888 | 0.863 | 0.944 | 0.092 | 0.059 |
| qqp | 518 | 0.882 | 0.839 | 0.958 | 0.086 | 0.059 |
| race | 879 | 0.769 | 0.775 | 0.848 | 0.169 | 0.095 |
| samsum | 900 | 0.992 | 0.992 | 0.997 | 0.007 | 0.007 |
| sciq | 522 | 0.849 | 0.802 | 0.934 | 0.108 | 0.075 |
| snli | 708 | 0.914 | 0.908 | 0.979 | 0.067 | 0.052 |
| squad | 849 | 0.932 | 0.933 | 0.982 | 0.058 | 0.046 |
| tweet_offensive | 900 | 0.784 | 0.781 | 0.869 | 0.164 | 0.124 |
| winogrande | 600 | 0.877 | 0.879 | 0.928 | 0.108 | 0.089 |
| yelp_polarity | 900 | 0.971 | 0.971 | 0.998 | 0.026 | 0.026 |
| ALL | 10224 | 0.883 | 0.877 | 0.958 | 0.089 | 0.055 |
Held-out (task mai visti in training)
| sorgente | n | accuracy | F1 | ROC-AUC | Brier | ECE |
|---|---|---|---|---|---|---|
| ag_news | 3000 | 0.804 | 0.790 | 0.887 | 0.170 | 0.155 |
| emotion | 3000 | 0.718 | 0.679 | 0.811 | 0.237 | 0.213 |
| ALL | 6000 | 0.761 | 0.736 | 0.853 | 0.203 | 0.183 |