metamatematico commited on
Commit
de8e5e1
·
verified ·
1 Parent(s): b9d7eaf

Upload README.md with huggingface_hub

Browse files
Files changed (1) hide show
  1. README.md +68 -8
README.md CHANGED
@@ -10,6 +10,8 @@ tags:
10
  - neural-network-optimizer
11
  - rmsprop
12
  - pso
 
 
13
  language:
14
  - en
15
  - es
@@ -33,7 +35,9 @@ Disponible en dos implementaciones que comparten el mismo algoritmo:
33
  |---|---|---|
34
  | PyTorch optimizer | `QIMADTorch` en `quimad_torch.py` | Entrenamiento de redes neuronales |
35
  | NumPy puro | `QIMAD` en `qimad_optimizer.py` | Funciones de benchmark, investigación |
36
- | PSO baseline | `PSOTorch` en `pso_torch.py` | Comparación directa sin gradiente |
 
 
37
 
38
  ---
39
 
@@ -165,6 +169,27 @@ Ambos superan ampliamente a Adam y SGD en todos los casos multimodales.
165
 
166
  ---
167
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
168
  ## Resultados: entrenamiento de redes neuronales (PyTorch)
169
 
170
  > 10 semillas · 120 epochs · test sobre tarea convexa y tarea multimodal
@@ -193,6 +218,24 @@ PSO paga el mismo costo computacional que QUIMAD pero sin aprovechar el gradient
193
 
194
  QUIMAD es competitivo en tareas simples. Con 1 agente es equivalente a RMSProp puro.
195
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
196
  ### Reducción de costo: k_eval
197
 
198
  ```python
@@ -226,8 +269,11 @@ El enjambre sigue teniendo 8 canicas — solo se reduce cuántos se actualizan p
226
  ```
227
  QUIMAD/
228
 
229
- ├── quimad_torch.py # QIMADTorch — optimizador PyTorch para redes neuronales
230
  ├── pso_torch.py # PSOTorch — PSO como optimizador PyTorch (baseline)
 
 
 
231
  ├── qimad_optimizer.py # QIMAD — optimizador NumPy para benchmarks
232
  ├── baselines.py # SGD, Adam, PSO (NumPy)
233
  ├── benchmarks.py # Rastrigin, Rosenbrock, Ackley, HyperComplexSurface
@@ -238,7 +284,8 @@ QUIMAD/
238
  ├── config.yaml # Parametros de experimento
239
 
240
  ├── examples/
241
- ── train_mlp_quimad.py # Demo: QIMADTorch vs Adam en regresion multimodal
 
242
 
243
  ├── test_y_pruebas/ # Suite de pruebas y graficas comparativas
244
  │ ├── test_unit.py # 25 tests unitarios del optimizador PyTorch
@@ -276,17 +323,27 @@ python test_y_pruebas/graficas_comparativas.py
276
 
277
  ---
278
 
279
- ## Demo
280
 
281
  ```bash
282
  # QIMADTorch vs Adam en regresion multimodal (PyTorch)
283
  python examples/train_mlp_quimad.py
284
 
 
 
 
 
 
 
285
  # Simulacion 3D animada del enjambre
286
  python simulation.py
287
  python simulation.py --save # guarda simulation.gif
288
  ```
289
 
 
 
 
 
290
  ---
291
 
292
  ## Roadmap
@@ -298,10 +355,13 @@ python simulation.py --save # guarda simulation.gif
298
  - [x] Reduccion de costo con `k_eval` (evaluacion asincrona del enjambre)
299
  - [x] PSO como baseline PyTorch (`PSOTorch`)
300
  - [x] 9 graficas comparativas con PSO incluido
301
- - [ ] Cooling schedule (reducir exploracion en iteraciones tardias)
302
- - [ ] Benchmarks en MNIST / CIFAR-10
303
- - [ ] Comparativa con CMA-ES y Differential Evolution
304
- - [ ] Space interactivo en Hugging Face
 
 
 
305
 
306
  ---
307
 
 
10
  - neural-network-optimizer
11
  - rmsprop
12
  - pso
13
+ - cma-es
14
+ - differential-evolution
15
  language:
16
  - en
17
  - es
 
35
  |---|---|---|
36
  | PyTorch optimizer | `QIMADTorch` en `quimad_torch.py` | Entrenamiento de redes neuronales |
37
  | NumPy puro | `QIMAD` en `qimad_optimizer.py` | Funciones de benchmark, investigación |
38
+ | PSO baseline | `PSOTorch` en `pso_torch.py` | Enjambre sin gradiente |
39
+ | DE baseline | `DETorch` en `de_torch.py` | Differential Evolution sin gradiente |
40
+ | CMA-ES baseline | `CMAESTorch` en `cmaes_torch.py` | Estrategia evolutiva diagonal |
41
 
42
  ---
43
 
 
169
 
170
  ---
171
 
172
+ ## Benchmark MNIST
173
+
174
+ > MLP 784→128→64→10 · 109K parámetros · 10 epochs · batch 512
175
+
176
+ | Optimizador | Accuracy test | Tiempo |
177
+ |---|---|---|
178
+ | **Adam (lr=1e-3)** | **97.52%** | 312 s |
179
+ | SGD + momentum | 96.58% | 293 s |
180
+ | QUIMAD 8ag k_eval=4 | 90.51% | 296 s |
181
+ | QUIMAD 4ag | 89.98% | 298 s |
182
+ | DE (8p) | 36.45% | 417 s |
183
+ | PSO (8p) | 13.83% | 320 s |
184
+
185
+ **Lectura honesta:** En MNIST con mini-batches, Adam y SGD tienen ventaja porque cada
186
+ batch es una estimación insesgada del gradiente global. QUIMAD usa el loss del batch
187
+ actual para comparar agentes, lo que introduce varianza inter-batch en el `best_theta`.
188
+ En el régimen full-batch (tareas convexa y multimodal), QUIMAD gana. PSO y DE sin
189
+ gradiente son claramente inferiores en redes con 100K+ parámetros.
190
+
191
+ ---
192
+
193
  ## Resultados: entrenamiento de redes neuronales (PyTorch)
194
 
195
  > 10 semillas · 120 epochs · test sobre tarea convexa y tarea multimodal
 
218
 
219
  QUIMAD es competitivo en tareas simples. Con 1 agente es equivalente a RMSProp puro.
220
 
221
+ ### Cooling schedule
222
+
223
+ Reduce la exploración conforme avanza el entrenamiento — útil cuando el modelo
224
+ ya convergió a una región buena y necesita refinamiento fino:
225
+
226
+ ```python
227
+ optimizer = QIMADTorch(
228
+ model.parameters(),
229
+ num_agents=8, eta=0.01,
230
+ cooling='cosine', # 'cosine' | 'linear' | 'exponential' | None
231
+ total_steps=300, # epochs totales
232
+ min_temp=0.05, # temperatura mínima al final
233
+ )
234
+ ```
235
+
236
+ La temperatura decae de 1.0 a `min_temp` escalando el tamaño de los saltos de
237
+ túnel cuántico y la velocidad de rotación del estado de Bloch.
238
+
239
  ### Reducción de costo: k_eval
240
 
241
  ```python
 
269
  ```
270
  QUIMAD/
271
 
272
+ ├── quimad_torch.py # QIMADTorch — optimizador PyTorch (con cooling schedule)
273
  ├── pso_torch.py # PSOTorch — PSO como optimizador PyTorch (baseline)
274
+ ├── de_torch.py # DETorch — Differential Evolution PyTorch (baseline)
275
+ ├── cmaes_torch.py # CMAESTorch — CMA-ES diagonal PyTorch (baseline)
276
+ ├── app.py # Space interactivo Gradio para Hugging Face
277
  ├── qimad_optimizer.py # QIMAD — optimizador NumPy para benchmarks
278
  ├── baselines.py # SGD, Adam, PSO (NumPy)
279
  ├── benchmarks.py # Rastrigin, Rosenbrock, Ackley, HyperComplexSurface
 
284
  ├── config.yaml # Parametros de experimento
285
 
286
  ├── examples/
287
+ ── train_mlp_quimad.py # Demo: QIMADTorch vs Adam en regresion multimodal
288
+ │ └── benchmark_mnist.py # Benchmark MNIST: todos los optimizadores comparados
289
 
290
  ├── test_y_pruebas/ # Suite de pruebas y graficas comparativas
291
  │ ├── test_unit.py # 25 tests unitarios del optimizador PyTorch
 
323
 
324
  ---
325
 
326
+ ## Demo y Space interactivo
327
 
328
  ```bash
329
  # QIMADTorch vs Adam en regresion multimodal (PyTorch)
330
  python examples/train_mlp_quimad.py
331
 
332
+ # Benchmark MNIST — todos los optimizadores
333
+ python examples/benchmark_mnist.py
334
+
335
+ # Space Gradio local (o deploy en Hugging Face Spaces)
336
+ python app.py
337
+
338
  # Simulacion 3D animada del enjambre
339
  python simulation.py
340
  python simulation.py --save # guarda simulation.gif
341
  ```
342
 
343
+ El Space interactivo (`app.py`) permite elegir tarea, optimizadores e hiperparámetros
344
+ y ver curvas de convergencia en tiempo real. Deployar en HuggingFace Spaces con:
345
+ `gradio deploy` o subiendo el repo directamente.
346
+
347
  ---
348
 
349
  ## Roadmap
 
355
  - [x] Reduccion de costo con `k_eval` (evaluacion asincrona del enjambre)
356
  - [x] PSO como baseline PyTorch (`PSOTorch`)
357
  - [x] 9 graficas comparativas con PSO incluido
358
+ - [x] Cooling schedule coseno/lineal/exponencial (`cooling`, `total_steps`, `min_temp`)
359
+ - [x] Benchmark MNIST vs Adam/SGD/PSO/DE/CMA-ES (10 epochs, 109K parámetros)
360
+ - [x] CMA-ES diagonal y Differential Evolution como optimizadores PyTorch
361
+ - [x] Space interactivo en Hugging Face (`app.py` con Gradio)
362
+ - [ ] Benchmark CIFAR-10
363
+ - [ ] Variante full-batch-aware para mini-batch training
364
+ - [ ] Comparativa con CMA-ES en funciones benchmark de alta dimensión (D≥50)
365
 
366
  ---
367