scarletabreu/pdqa-roberta-bne-em-tuned
pdqa-roberta-bne-em-tuned
Descripción
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.
Integrantes
- Scarlet Abreu (10153953)
- Renso Peralta (10154062)
Licencia
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.
Recursos oficiales
- Dataset: Lisibonny/pdqa
- Baseline: Lisibonny/modelo_qa_beto_squad_es_pdqa
- Aplicación: Lisibonny/Repartidor_Dominicano
Modelo base
- Repositorio: nlp-en-es/roberta-base-bne-finetuned-sqac
- Justificación: es un RoBERTa en español ya fine-tuneado para QA extractivo (sobre SQAC, un dataset parecido en estructura a
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 depdqa, no la tarea de QA desde cero. - Número aproximado de parámetros: ~125M (arquitectura RoBERTa-base)
Datos
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.
Entrenamiento
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).
Experimentos
Comparación de configuraciones
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.
Resultados
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.
- Exact Match en validation: 73.33
- F1 en validation: 84.79
- Exact Match en train: 84.44 (38/45)
- Diferencia train–validation: 11.11 pp, lo que sugiere un overfitting moderado. Dado el tamaño reducido del conjunto de entrenamiento (45 ejemplos), este comportamiento era esperable. Aun así, el modelo conserva una capacidad de generalización aceptable sobre el conjunto de validación.
- Script de evaluación:
05_evaluate_qa.py
Ejemplo de uso
from 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."
)Análisis de errores
Revisando a mano los ejemplos con EM=0 en validation, identificamos tres patrones:
- Boundary corto: el modelo agarra el núcleo correcto de la respuesta pero se le queda corto un artículo o preposición (ej.
11en vez dea 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. - Answer-type mismatch: para preguntas con
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. - Respuesta gold como enumeración: cuando el gold es una lista de nombres propios, el modelo devuelve un resumen corto en vez de la lista completa. Lo documentamos como una limitación del enfoque (QA extractivo de un solo span), no como algo que se arregle con más entrenamiento.
Limitaciones
- La respuesta debe estar presente en el contexto.
- El modelo puede confundir entidades, fechas o cantidades similares.
- El modelo no verifica la veracidad de la noticia.
- No debe utilizarse como única fuente para decisiones de alto impacto.
- Con solo 45 ejemplos de entrenamiento, el modelo sobreajusta con facilidad: entrenar más allá de la primera época empeora la calidad de varias respuestas, aunque el Exact Match pueda mejorar en algún caso puntual. Lo mitigamos con early stopping basado en EM real, pero no asumimos que el modelo sea robusto frente a preguntas muy distintas a las que vio en
pdqa. - No distingue de forma confiable entre respuestas cualitativas y cuantitativas cuando ambas aparecen en la misma oración del contexto.
- No maneja bien respuestas gold que son enumeraciones de varias entidades.
Reproducibilidad
- Repositorio de código: scarletabreu/pdqa-roberta-bne-em-tuned.git
- Commit: e136e68
- Notebook:
03_Introduccion_QA_Noticias.ipynb(extendido con celdas de fine-tuning) - Archivo de dependencias:
09_requirements.txt - Semillas: 42
