Downloads · 30 days
6
4% of all-time downloads
scarletabreu/pdqa-roberta-bne-em-tuned
pdqa-roberta-bne-em-tuned is a question answering model from scarletabreu. Use it when the input is a question plus a passage. The card lists the license as apache-2.0.
Modelo desarrollado para el Dominican News Question Answering Challenge. Recibe una pregunta y un contexto noticioso, y extrae la respuesta directamente del texto (QA extractivo). Es un fine-tuning de roberta-base-bne…
Downloads · 30 days
6
4% of all-time downloads
All-time downloads
138
Public
Parameters
124M
496 MB on disk
Likes
3
Public
Click a slice to open those files.
.safetensors496 MB · 99%
From the Hugging Face model README
Modelo desarrollado para el Dominican News Question Answering Challenge.
Recibe una pregunta y un contexto noticioso, y extrae la respuesta directamente del
texto (QA extractivo). Es un fine-tuning de roberta-base-bne-finetuned-sqac, orientado
específicamente a mejorar el Exact Match sobre el dataset pdqa.
Apache License 2.0, heredada del modelo base (roberta-base-bne, de PlanTL-GOB-ES /
BSC-LT), que también se distribuye bajo esta licencia.
pdqa). Lo elegimos porque ya viene adaptado a la
tarea, así que el fine-tuning que hicimos nosotros solo tenía que enseñarle las
convenciones de anotación específicas de pdqa, no la tarea de QA desde cero.| División | Filas | Uso |
|---|---|---|
| train | 45 | Entrenamiento |
| validation | 15 | Comparación y selección |
| test | 20 | Predicciones finales |
No se publicaron ni utilizaron respuestas privadas de test.
Nota de calidad de datos: encontramos 1/45 ejemplos de entrenamiento donde parecía que el
answer_start estaba mal alineado con el contexto. Investigando, el problema no parecía
corresponder a un error de anotación, sino a una diferencia en el tipo de espacio
utilizado (uno era un espacio no separable, \xa0, y el otro un espacio normal).
Corregimos la función de verificación para normalizar espacios antes de comparar. Esto
no afectó el entrenamiento en sí, porque el cálculo de posiciones de tokens usa longitud
de caracteres, no comparación exacta de strings.
| Parámetro | Valor |
|---|---|
| Seed | 42 |
| Learning rate | 2e-5 |
| Batch size | 4 |
| Épocas | 1 (seleccionada por early stopping según EM real en validation, de un máximo de 12) |
| Max length | 384 |
| Doc stride | 128 |
| Weight decay | 0.05 |
| Hardware | GPU T4 (Google Colab) |
| Tiempo | ~1 minuto por configuración completa (12-15 épocas), dataset de 45 ejemplos |
Sobre la selección de época: implementamos un callback (EMEarlyStoppingCallback)
que evalúa Exact Match y F1 reales en validation al final de cada época, y se queda con
los pesos de la época con mejor EM (desempate por F1) en vez de la última época o el
menor eval_loss. En las 3 configuraciones que probamos, la mejor época fue siempre la
época 1: con solo 45 ejemplos de entrenamiento, el modelo comenzó a sobreajustarse
rápidamente. Después de la primera época las métricas dejaron de mejorar e incluso
disminuyeron en algunas configuraciones (ver la sección de Comparación de
configuraciones).
| Experimento | Cambio | EM validation | F1 validation |
|---|---|---|---|
Baseline oficial (Lisibonny/modelo_qa_beto_squad_es_pdqa) | Sin cambios | 60.00 | 75.84 |
Modelo base sin fine-tuning (nlp-en-es/roberta-base-bne-finetuned-sqac) | Sin cambios | 53.33 | 81.68 |
| Variante 1 (Run 0) | lr=3e-5, weight_decay=0.01, época 1 | 66.67 | 83.84 |
| Variante 2 (Run 1) | lr=2e-5, weight_decay=0.05, época 1 | 73.33 | 84.79 |
| Variante 3 (Run 2) | lr=1e-5, weight_decay=0.05, época 1 | 60.00 | 81.64 |
| Modelo final | Run 1 (lr=2e-5, weight_decay=0.05, época 1) | 73.33 | 84.79 |
Mantuvimos fijos el modelo base, el dataset, la tokenización (max_length=384,
doc_stride=128) y la semilla (42) en las 3 variantes. Solo variamos learning_rate,
weight_decay y el número máximo de épocas permitidas (con selección automática de la
mejor época por EM real en validation).
El hallazgo clave: en una primera prueba sin early stopping (10 épocas fijas, lr=3e-5), el EM subió a 66.67 pero el F1 bajó a 76.63, por debajo incluso del modelo sin fine-tuning (81.68). Al revisar ejemplo por ejemplo, encontramos 2 casos donde el modelo, después de varias épocas, dejó de responder bien y empezó a dar respuestas totalmente erróneas (F1=0.00) que antes tenían F1 alto (0.50 y 0.95). Estos resultados son consistentes con un proceso de sobreajuste, dado el reducido tamaño del conjunto de entrenamiento.
Al agregar el callback de early stopping por EM (que en la práctica se detuvo en la
época 1 en las 3 configuraciones), recuperamos la calidad en esos 2 casos y además
ganamos uno adicional que ni el baseline ni la primera versión del fine-tuning
resolvían. El resultado final (EM=73.33, F1=84.79) mejora ambas métricas a la vez frente
al modelo base y al baseline oficial. Estos resultados sugieren que seleccionar la mejor
época utilizando Exact Match en validación, en lugar del valor de loss, fue un factor
importante en la mejora del desempeño.
El modelo final obtuvo un Exact Match de 73.33% y un F1 de 84.79% sobre el conjunto de validación. Estos resultados superan tanto al modelo base sin ajuste como al baseline oficial proporcionado para la práctica.
05_evaluate_qa.pyfrom transformers import pipeline
qa = pipeline(
"question-answering",
model="[usuario/modelo]",
tokenizer="[usuario/modelo]"
)
qa(
question="¿Quién hizo el anuncio?",
context="La ministra informó que el programa comenzará en agosto."
)
Revisando a mano los ejemplos con EM=0 en validation, identificamos tres patrones:
11 en vez de a 11 bateadores). Era el
error más común en el baseline; este comportamiento apareció con menor frecuencia
después del fine-tuning, aunque no lo medimos de forma sistemática sobre todo el
conjunto.cómo (que piden una cualidad), el
modelo a veces extrae un número en vez de una descripción, aun cuando ambos
fragmentos son extraíbles del contexto. El baseline oficial comete el mismo error en
nuestro ejemplo revisado, lo que sugiere que es una dificultad del ejemplo más que
algo específico de nuestro fine-tuning; probablemente requeriría más ejemplos
similares durante el entrenamiento o un ajuste adicional del modelo, no solo otro
barrido de hiperparámetros.pdqa.03_Introduccion_QA_Noticias.ipynb (extendido con celdas de fine-tuning)09_requirements.txt