CarlosAGDev commited on
Commit
08530a2
·
verified ·
1 Parent(s): 97aa191

Upload README.md with huggingface_hub

Browse files
Files changed (1) hide show
  1. README.md +74 -77
README.md CHANGED
@@ -12,106 +12,103 @@ tags:
12
 
13
  # CarlosAGDev/ltv-lora-clf
14
 
15
- LoRA-CLF (v0.2.0) del LTV Framework. Clasifica el tipo de una afirmacion (5 categorias
16
  canonicas AVeriTeC) como segundo paso del pipeline de Triage.
17
 
18
- ## Mejoras en v0.2.0
19
 
20
- - **Dataset completo:** ~4,879 claims check-worthy (vs ~1,200 en v0.1.0), con las 5
21
- categorias representadas. Dataset re-anotado 100% con prompts v2.
22
- - **Prompts v2 fix de distribucion:** reescrito con checklist ordenado
23
- (Quote Verification primero, Event/Property como ultimo recurso) y ejemplos de
24
- desambiguacion del paper AVeriTeC (arXiv 2305.13117). Redujo el sesgo de E/P del
25
- 81% (v0.1.0) al 62%.
26
- - **Split estratificado:** garantiza que las 5 clases aparezcan en el eval set con
27
- su proporcion real (fix directo del soporte=0 en 3 clases en v0.1.0).
28
-
29
- ## Categorias
30
-
31
- | Clase | Proporcion en train (aprox) |
32
- | :--- | :---: |
33
- | Event/Property Claim | 62% |
34
- | Numerical Claim | 27% |
35
- | Causal Claim | 6% |
36
- | Quote Verification | 3% |
37
- | Position Statement | 2.5% |
38
 
39
  ## Detalles del Entrenamiento
40
 
41
  | Parametro | Valor |
42
  | :--- | :--- |
43
  | **Modelo Base** | `google/gemma-4-E2B-it` |
 
44
  | **Max Sequence Length** | `384` |
45
  | **Epochs** | `1` |
46
  | **Batch Size (Per Device)** | `4` |
47
  | **Gradient Accumulation** | `4` |
48
  | **Learning Rate** | `2e-4` |
49
  | **Optimizer** | `paged_adamw_8bit` |
50
- | **GPU** | NVIDIA L4 (23.7 GB VRAM) |
51
- | **Eval set** | 488 claims, estratificado |
52
 
53
- ## Resultados (v0.2.0)
54
 
55
  ### Metricas globales
56
 
57
- | Metrica | v0.1.0 | v0.2.0 | Nota |
58
- | :--- | :---: | :---: | :--- |
59
- | **Accuracy** | 0.967 | 0.621 | v0.1.0 solo media 2 clases efectivas |
60
- | **F1 weighted** | 0.979 | 0.650 | idem |
61
- | **F1 macro** | 0.39 | **0.56** | metrica real: +44% de mejora |
62
- | Clases con soporte>0 en eval | 2 de 5 | **5 de 5** | fix principal |
63
-
64
- > **Nota sobre la comparacion:** las metricas de v0.1.0 son infladas — 3 de 5 clases
65
- > tenian soporte=0 en eval, por lo que se media sobre un problema de 2 categorias.
66
- > El F1 macro (que penaliza clases ausentes) es la metrica comparable: paso de 0.39 a 0.56.
67
 
68
- ### Por clase (v0.2.0, eval n=488)
69
 
70
  | Clase | Precision | Recall | F1 | Support |
71
  | :--- | :---: | :---: | :---: | :---: |
72
- | Event/Property Claim | 0.73 | 0.77 | 0.75 | 255 |
73
- | Numerical Claim | 0.98 | 0.37 | 0.54 | 148 |
74
- | Causal Claim | 0.64 | 0.45 | 0.53 | 40 |
75
- | Quote Verification | 0.76 | 0.76 | **0.76** | 29 |
76
- | Position Statement | 0.12 | 0.75 | 0.20 | 16 |
77
-
78
- ### Matriz de confusion (v0.2.0)
79
-
80
-
 
 
 
 
 
 
 
81
 
82
  ### Hallazgos principales
83
 
84
- **Positivo Quote Verification:** F1 0.76 con 29 ejemplos de eval. En v0.1.0 tenia
85
- soporte=0 (0 ejemplos de entrenamiento). El prompt v2 y el dataset completo funcionaron.
86
-
87
- **Problematico Position Statement:** precision 0.12, el modelo predijo Position 103
88
- veces en total pero solo 16 eran realmente Position. Actua como categoria de escape
89
- cuando el modelo duda: 53 claims de Event/Property y 25 de Numerical fueron
90
- clasificados como Position Statement.
91
-
92
- **Problematico Numerical recall bajo (0.37):** 57 claims Numerical se clasificaron
93
- como Event/Property y 25 como Position. El modelo reconoce bien lo que ES Numerical
94
- (precision 0.98) pero le cuesta identificarlo cuando hay contexto narrativo alrededor
95
- del numero.
96
-
97
- ## Limitaciones conocidas (v0.2.0)
98
-
99
- - **Position Statement como categoria de escape:** la precision de 0.12 indica que el
100
- modelo aun no tiene una frontera clara entre "actitud/postura de actor publico"
101
- (Position) y descripciones de acciones de ese mismo actor (Event/Property). Raiz
102
- probable: 2.5% de Position en train = ~110 ejemplos absolutos, insuficiente para una
103
- frontera robusta.
104
- - **Numerical recall bajo:** el modelo sabe clasificar Numerical cuando lo ve (precision
105
- alta), pero pierde el 63% de los casos bajo el ruido de otros tipos.
106
- - **Dataset sintetico como referencia:** las etiquetas provienen de
107
- con prompts v2 miden consistencia del adaptador con su maestro, no calidad absoluta
108
- de clasificacion. Evaluacion real pendiente contra .
109
-
110
- ## Mejoras propuestas para v0.3.0
111
-
112
- 1. **Oversampling de Position y Numerical en train** (duplicar o triplicar) para que
113
- el modelo vea mas ejemplos de las clases con peor rendimiento.
114
- 2. **Hard negative mining para Position:** agregar ejemplos explicitos de E/P de actores
115
- publicos como negativos de Position (lo que el modelo confunde hoy).
116
- 3. **Evaluacion real:** anotar con un modelo mas fuerte
117
- (Gemini Pro / anotacion humana) y medir F1 macro sin sesgo de maestro-alumno.
 
 
 
 
 
 
12
 
13
  # CarlosAGDev/ltv-lora-clf
14
 
15
+ LoRA-CLF (v0.2.1) del LTV Framework. Clasifica el tipo de una afirmacion (5 categorias
16
  canonicas AVeriTeC) como segundo paso del pipeline de Triage.
17
 
18
+ ## Mejoras en v0.2.1
19
 
20
+ - **Segundo maestro:** re-anotado con `gemini-3.5-flash` en vez de `gemini-3.1-flash-lite`.
21
+ Mismo pool base, mismos prompts v2, mismos hiperparametros que v0.2.0.
22
+ - **Motivacion:** v0.2.0 tuvo precision de Position Statement = 0.12 (categoria de
23
+ escape ante duda con Event/Property). El maestro 3.5-flash tambien es mas selectivo
24
+ en Task 1 (check-worthy 45.3% vs 65.6% del lite), asi que el pool de entrada a CLF
25
+ es mas chico pero mas limpio (3,374 vs 4,879 check-worthy).
 
 
 
 
 
 
 
 
 
 
 
 
26
 
27
  ## Detalles del Entrenamiento
28
 
29
  | Parametro | Valor |
30
  | :--- | :--- |
31
  | **Modelo Base** | `google/gemma-4-E2B-it` |
32
+ | **Maestro anotador** | `gemini-3.5-flash` |
33
  | **Max Sequence Length** | `384` |
34
  | **Epochs** | `1` |
35
  | **Batch Size (Per Device)** | `4` |
36
  | **Gradient Accumulation** | `4` |
37
  | **Learning Rate** | `2e-4` |
38
  | **Optimizer** | `paged_adamw_8bit` |
39
+ | **Eval set** | 338 claims |
40
+ | **Tiempo de evaluacion** | 35m (6.22 s/ejemplo) |
41
 
42
+ ## Resultados (v0.2.1)
43
 
44
  ### Metricas globales
45
 
46
+ | Metrica | v0.2.0 (lite) | v0.2.1 (3.5-flash) |
47
+ | :--- | :---: | :---: |
48
+ | **Accuracy** | 0.621 | **0.728** |
49
+ | **F1 macro** | 0.56 | **0.65** |
50
+ | **F1 weighted** | 0.650 | **0.745** |
51
+ | **JSON valido** | | 100% (0 fallos) |
 
 
 
 
52
 
53
+ ### Por clase (v0.2.1, eval n=338)
54
 
55
  | Clase | Precision | Recall | F1 | Support |
56
  | :--- | :---: | :---: | :---: | :---: |
57
+ | Event/Property Claim | 0.77 | 0.74 | 0.76 | 159 |
58
+ | Numerical Claim | 0.93 | 0.81 | 0.87 | 101 |
59
+ | Causal Claim | 0.81 | 0.39 | 0.53 | 33 |
60
+ | Quote Verification | 0.81 | 0.59 | 0.68 | 29 |
61
+ | Position Statement | 0.27 | 1.00 | 0.42 | 16 |
62
+
63
+ ### Matriz de confusion (v0.2.1)
64
+
65
+ ```
66
+ Ev/Prop Numerical Causal Quote Position
67
+ Ev/Prop 118 2 2 4 33
68
+ Numerical 15 82 1 0 3
69
+ Causal 18 1 13 0 1
70
+ Quote 2 3 0 17 7
71
+ Position 0 0 0 0 16
72
+ ```
73
 
74
  ### Hallazgos principales
75
 
76
+ **Numerical Claim resuelto:** recall subio de 0.37 (v0.2.0) a **0.81** manteniendo
77
+ precision alta (0.93). En v0.2.0 el modelo reconocia Numerical cuando lo veia pero
78
+ perdia el 63% de los casos bajo ruido narrativo; con el maestro 3.5-flash esa
79
+ confusion casi desaparecio.
80
+
81
+ **Position Statement mejora parcial:** recall subio de 0.75 a **1.00** (el modelo ya
82
+ no deja pasar ningun Position real) y F1 casi se duplico (0.20 -> 0.42). Pero la
83
+ precision sigue baja (0.12 -> 0.27): el modelo TODAVIA usa Position como categoria de
84
+ escape para E/P dudosos, **a la misma tasa que en v0.2.0** (33/159 = 20.8% de los E/P
85
+ reales, vs 53/255 = 20.8% en v0.2.0 identico). Cambiar de maestro mejoro la cobertura
86
+ de Position pero no resolvio la frontera E/P-vs-Position en si misma.
87
+
88
+ **Regresion en Quote Verification:** recall bajo de 0.76 a **0.59** (17/29 vs 22/29
89
+ correctos). De los 12 Quote mal clasificados, 7 se confunden con Position — una
90
+ confusion nueva que no era prominente en v0.2.0. A vigilar en v0.2.2.
91
+
92
+ **Causal se mantiene estancado:** F1 identico a v0.2.0 (0.53), con mejor precision
93
+ (0.64 -> 0.81) pero peor recall (0.45 -> 0.39). 18 de 33 Causal reales se confunden
94
+ con Event/Property.
95
+
96
+ ## Limitaciones conocidas
97
+
98
+ - **La frontera E/P vs Position no se resuelve solo cambiando de maestro:** la tasa de
99
+ confusion (~21%) es identica en v0.2.0 y v0.2.1. Es el problema mas persistente del
100
+ adaptador CLF y el candidato principal para v0.2.2 (razonamiento con checklist
101
+ verbalizado) o para oversampling/hard-negatives en v0.3.0.
102
+ - **Dataset sintetico como referencia:** las etiquetas provienen de `gemini-3.5-flash`
103
+ con prompts v2 — miden imitacion del maestro, no calidad absoluta.
104
+ - **Eval set mas chico que v0.2.0** (338 vs 488): consecuencia de que el maestro
105
+ 3.5-flash es mas selectivo en Task 1, reduciendo el pool de check-worthy disponible
106
+ para CLF. Las clases minoritarias (Position n=16, Causal n=33) siguen siendo chicas.
107
+
108
+ ## Proximo paso
109
+
110
+ **v0.2.2** entrena sobre el mismo maestro y pool pero con razonamiento verbalizado
111
+ (el modelo recorre el checklist Quote -> Position -> Causal -> Numerical -> E/P en un
112
+ bloque de pensamiento antes de responder). Hipotesis directa: verbalizar el descarte
113
+ explicito de cada categoria deberia reducir la confusion E/P-vs-Position que sobrevivio
114
+ al cambio de maestro.