-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpaper.txt
More file actions
2074 lines (1641 loc) · 195 KB
/
Copy pathpaper.txt
File metadata and controls
2074 lines (1641 loc) · 195 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
OctopusNet: Red neuronal distribuida con aprendizaje local y comunicación comprimida
1. Abstract
Las redes neuronales centralizadas son frágiles ante fallos de componentes: si cualquier capa falla, el sistema colapsa. Proponemos OctopusNet, una arquitectura de red neuronal distribuida inspirada en el sistema nervioso del pulpo (Octopus vulgaris), donde dos tercios de las neuronas residen fuera del cerebro central y cada brazo procesa información localmente.
OctopusNet consta de cuatro módulos CNN paralelos que operan a diferentes resoluciones [32,16,8,4] píxeles, entrenados con el algoritmo Forward-Forward (Hinton, 2022) sin backpropagation global. Cada módulo se comunica con el coordinador central mediante un bottleneck de 64 valores, inspirado en las 30,000 fibras nerviosas del pulpo. El coordinador emplea atención dinámica para ponderar módulos según el input, implementando una arquitectura tipo Global Workspace (Baars, 1988).
Evaluamos OctopusNet en CIFAR-10 y demostramos: (1) accuracy de 64.34% con channel grouping y Module Dropout, superando todas las variantes previas; (2) resiliencia estructural ante fallos — ante el fallo de cualquier módulo individual, el sistema mantiene mínimo 61.12% vs 10.00% (colapso total) de CNN centralizada equivalente; (3) ante fallo simultáneo de dos módulos, el sistema mantiene mínimo 52.87%; (4) Module Dropout + Channel Grouping combinados eliminan completamente el punto de falla catastrófico sin sacrificar accuracy normal; (5) especialización emergente confirmada — cada módulo captura información genuinamente diferente, evidenciada por caídas de accuracy distintas ante fallos individuales.
El costo es una brecha de accuracy vs CNN backprop (53.16% vs 90.96%), aceptable en aplicaciones donde la resiliencia es crítica: robótica, IoT, vehículos autónomos, y sistemas embebidos con múltiples sensores.
2. Introducción
El Deep learning ha revolucionado campos como la visión por computadora, el procesamiento de lenguaje natural y el reconocimiento de patrones. Sin embargo, las arquitecturas predominantes comparten un supuesto: la centralización. Los datos deben concentrarse en un único lugar, los recursos computacionales se agrupan en servidores potentes, y el entrenamiento requiere una conexión estable entre todas las capas de la red mediante backpropagation global. Estos supuestos son razonables para muchos escenarios, pero existen contextos donde no se cumplen. En redes de sensores IoT, los datos se generan de forma distribuida y el ancho de banda es limitado. En hospitales, los datos sensibles no pueden salir del dispositivo por regulaciones de privacidad.
En drones o vehículos autónomos, la resiliencia ante fallas es crítica: si un componente falla, el sistema debe continuar operando. Estos escenarios no invalidan las arquitecturas centralizadas, pero sugieren la necesidad de explorar alternativas.
La naturaleza ofrece un modelo notable de procesamiento distribuido: el pulpo (Octopus vulgaris). Este animal posee aproximadamente 500 millones de neuronas, de las cuales dos tercios residen fuera del cerebro central, distribuidas en sus ocho brazos. Cada brazo contiene alrededor de 40 millones de neuronas capaces de procesar información sensorial y tomar decisiones locales sin consultar al cerebro. La comunicación entre brazos y cerebro ocurre mediante apenas 30,000 fibras nerviosas, forzando una compresión extrema de la información.
Notablemente, experimentos han demostrado que los brazos del pulpo pueden ejecutar movimientos coordinados incluso cuando están desconectados del cuerpo (Sumbre et al.). Inspirándonos en esta arquitectura biológica, proponemos OctopusNet: una red neuronal distribuida donde múltiples módulos procesan información en paralelo, cada uno especializado en una escala diferente de características. A diferencia de una red secuencial tradicional, donde cada capa espera a la anterior, los módulos de OctopusNet operan simultáneamente.
Cada módulo posee su propia función de pérdida local, entrenada mediante el algoritmo Forward-Forward (Hinton, 2022), eliminando la dependencia del backpropagation global.
La comunicación con el coordinador central se realiza a través de un bottleneck de 32 valores, análogo a las 30,000 fibras nerviosas del pulpo. El coordinador emplea atención dinámica para determinar qué módulo es más relevante para cada input específico.
Contribuciones de este trabajo:
- Primera arquitectura de red neuronal profunda inspirada en el sistema nervioso del pulpo
- Integración del algoritmo Forward-Forward con módulos paralelos de diferentes escalas
- Protocolo de comunicación comprimida bio-inspirado mediante bottleneck
- Mecanismo de coordinación por atención dinámica
- Feedback top-down mediante modulación multiplicativa (implementando Global Workspace Theory)
- Nerve ring artificial: comunicación lateral entre módulos via cross-attention
- Soporte para módulos heterogéneos (CNN + Transformer + RNN en el mismo modelo)
- Evaluación sistemática de resiliencia ante fallas de módulos
- Comparación de mecanismos de competición GWT (soft vs Gumbel-hard vs Top-K)
- Comparación experimental contra red centralizada y Federated Learning en CIFAR-10 y CIFAR-100
- Jerarquía multi-escala bio-inspirada en corteza visual (V1/V2/V4/IT): cada módulo recibe resolución diferente mediante F.interpolate bilinear
- Kernels uniformes k=3×3 en todos los módulos: la especialización emerge de resolución diferente, no de kernel size — confirmado empíricamente (módulos k=5,7,9 sobre misma resolución son redundantes)
- Configuración multi-escala como default: [32,16,8,4] píxeles por módulo para CIFAR, [28,14,7,4] para MNIST — todos los módulos alcanzan sep>0.05 en 200 batches de entrenamiento FF
- Codificación Fourier espacial de labels con K=0.5: patrones sinusoidales únicos por clase, visibles en toda la imagen; combinación Fourier+multi-escala es novel — Codellaro et al. (Scientific Reports, 2025) usa Fourier en CNN pero resolución única
- Goodness function global (f3²).mean() sobre el último feature map convolucional: más efectivo que ASGE cuando se combina con multi-escala (sep=0.61 en res=4×4 vs sep≈0 con ASGE diluted)
3. Trabajo relacionado
Esta sección revisa los fundamentos teóricos y trabajos previos que sustentan OctopusNet, organizados en cinco áreas: el sistema nervioso del pulpo, algoritmos de aprendizaje local, arquitecturas modulares, comunicación comprimida, y enfoques distribuidos existentes.
3.1 El Sistema Nervioso del Pulpo
El pulpo (Octopus vulgaris) posee aproximadamente 500 millones de neuronas, comparable al número de un perro, pero con una distribución radicalmente diferente. Solo el 10% reside en el cerebro central; el 64% se distribuye en los ocho brazos, con aproximadamente 40 millones de neuronas por brazo (Hochner, 2012). Cada ventosa contiene alrededor de 10,000 neuronas capaces de procesar información táctil y química de forma autónoma. La comunicación entre el cerebro central y los brazos ocurre a través de apenas 30,000 fibras nerviosas, lo que representa menos del 0.01% del total de neuronas. Esta limitación física fuerza un procesamiento local: el cerebro envía comandos de alto nivel ("busca comida") y cada brazo decide autónomamente cómo ejecutarlos (Sumbre et al., 2006). Experimentos han demostrado que brazos completamente desconectados del cuerpo mantienen patrones de movimiento coordinados, evidenciando su autonomía.
Un estudio reciente en Nature Communications (Zullo et al., 2025) reveló que el cordón nervioso de cada brazo está segmentado en módulos, con neuronas formando mapas topográficos por ventosa ("suckerotopy"). Esto refuerza la organización modular jerárquica del sistema. Gutnick et al. aclaran un matiz importante: "En lugar de hablar de un pulpo con nueve cerebros, estamos hablando de un pulpo con un cerebro y ocho brazos muy inteligentes." Existe coordinación constante entre lo local y lo central; los brazos no son completamente independientes.
3.2 Algoritmos de Aprendizaje Local
El backpropagation (Rumelhart et al., 1986) ha dominado el entrenamiento de redes neuronales durante décadas. Sin embargo, presenta limitaciones biológicas: requiere propagación global del error, transporte de pesos simétricos, y alternancia estricta entre fases forward y backward.
El algoritmo Forward-Forward (Hinton, 2022) propone una alternativa donde cada capa posee su propia función objetivo local. En lugar de propagar gradientes, cada capa aprende a distinguir entre datos "positivos" (reales) y "negativos" (generados o perturbados) mediante una función de "goodness" basada en la suma de activaciones al cuadrado. Investigaciones recientes han escalado FF a arquitecturas modernas: SCFF (Nature Communications, 2025) alcanzó 98.70% en MNIST y 80.75% en CIFAR-10; VFF-Net (Neural Networks, 2025) superó a backpropagation en MNIST; SFF (arXiv, 2025) fue el primero en aplicar FF a ResNet18 y MobileNetV3, logrando resultados comparables a backprop en CIFAR-100; ASGE (arXiv, 2025) extendió FF a ImageNet completo mediante codificación espacial adaptativa de goodness; y Ortiz Torres et al. (arXiv:2504.21662, 2025) alcanzaron 84.7% en CIFAR-10 integrando random direct feedback connections con FF, cerrando el gap con algoritmos puramente locales supervisados. Nuestro trabajo adopta la codificación Fourier espacial de labels de Codellaro et al. (Scientific Reports, 2025) [27] y la combina por primera vez con entradas multi-escala en una arquitectura modular. La combinación Fourier+multi-escala es novel: a resolución 32×32, la diferencia Fourier entre positivos/negativos se diluye en el goodness global (6.25% del área espacial); a 4×4, el mismo patrón Fourier domina toda la imagen, logrando sep=0.61 en 200 batches.
Otros algoritmos de aprendizaje local incluyen Greedy InfoMax (Löwe et al., NeurIPS 2019), que entrena módulos aislados maximizando información mutua entre representaciones consecutivas, y NoProp (2025), donde cada bloque aprende independientemente sin propagación global.
3.3 Arquitecturas Modulares
Las redes modulares dividen el procesamiento en componentes especializados. El
survey de Modular Deep Learning (Pfeiffer et al., 2023) identifica tres elementos clave: módulos actualizables localmente, funciones de routing que seleccionan módulos por ejemplo, y funciones de agregación que combinan salidas.
Mixture of Experts (MoE) representa el enfoque modular más exitoso comercialmente, utilizado en GPT-4 y otros modelos grandes. Sin embargo, MoE difiere fundamentalmente de OctopusNet: utiliza un router centralizado que decide qué experto procesa cada input, los expertos no poseen pérdida local, y si el router falla, todo el sistema falla.
El estudio "Dynamics of Specialization" (Nature Communications, 2024) demostró que la especialización modular emerge naturalmente cuando existen restricciones de recursos, como un bottleneck de comunicación. Esto respalda nuestra hipótesis de que el bottleneck de 32 valores forzará especialización en los módulos de OctopusNet.
3.4 Comunicación Comprimida
La teoría del Information Bottleneck (Tishby et al., 2015) establece que la compresión mejora la generalización: "la parte más importante del aprendizaje es olvidar." Las representaciones que retienen solo información relevante generalizan mejor. En el contexto de entrenamiento distribuido, Deep Gradient Compression (Lin et al., 2018) demostró que el 99.9% del intercambio de gradientes es redundante, logrando compresión de 600x sin pérdida de precisión. L-GreCo (MLSys 2024) extendió esto con compresión adaptativa por capa. Estos hallazgos justifican el bottleneck de OctopusNet: si la comunicación de gradientes puede comprimirse 600x, la comunicación de representaciones mediante 32 valores es biológicamente plausible y computacionalmente viable.
3.5 Enfoques Distribuidos Existentes
Federated Learning (McMahan et al., 2017) entrena N copias idénticas de un modelo en datos distribuidos, promediando periódicamente los pesos en un servidor central. Es efectivo para privacidad pero fundamentalmente diferente a OctopusNet: todos los nodos tienen el mismo modelo, comparten pesos completos (no representaciones comprimidas), y no hay especialización.
Split Learning (MIT Media Lab) divide un modelo en dos partes: capas iniciales en el cliente, capas finales en el servidor. Mantiene backpropagation end-to-end y no ofrece resiliencia: si cualquier parte falla, el sistema se detiene.
Los sistemas multiagente distribuyen tareas entre agentes independientes, típicamente con el paradigma CTDE (Centralized Training, Decentralized Execution). Cada agente puede tener objetivos diferentes, lo que genera problemas de coordinación. OctopusNet difiere al ser un único organismo con objetivo compartido.
3.6 Global Workspace Theory en Sistemas Artificiales Recientes
La Global Workspace Theory (Baars, 1988) ha ganado tracción en arquitecturas de IA recientes. Goyal et al. (ICLR 2022) implementaron GNWT en redes modulares, demostrando que la competición entre módulos y el broadcast global mejora razonamiento causal y generalización fuera de distribución frente a LSTM y Transformers. Su mecanismo central — competition_mlp con Gumbel-softmax para selección binaria — es la inspiración directa del experimento A10 de este trabajo.
Investigación reciente en Frontiers in Robotics and AI (2025) analiza las ventajas funcionales de la estructura Selection-Broadcast cíclica de GWT en sistemas de tiempo real, identificando tres beneficios clave: adaptación dinámica del pensamiento, adaptación basada en experiencia, e inmediatez ante entornos cambiantes. Estas ventajas son especialmente relevantes para los casos de uso de OctopusNet (robótica, IoT, drones) donde el sistema debe reaccionar ante fallos imprevistos.
OctopusNet implementa este ciclo explícitamente: competición (atención dinámica en coordinador) → selección (pesos de atención, soft/Gumbel/Top-K) → broadcast (feedback top-down a módulos). Ningún trabajo previo combina este ciclo GWT completo con aprendizaje local Forward-Forward en una arquitectura modular distribuida.
3.7 El Gap:
La Tabla 1 resume las diferencias entre enfoques existentes y OctopusNet:
| Característica | FL | Split Learning | MoE | Multiagente | OctopusNet |
|--------------------------|-------------|----------------|--------|-------------|------------|
| Modelo único | No(N copias)| Sí (Partido) | Sí | No | Sí |
| Aprendizaje local | Sí(BP) | No | No | Sí | Sí(FF) |
| Comunicación comprimida | No | No | N/A | Variable | Sí |
| Resiliencia | Parcial | No | No | Sí | Sí |
| Atención dinámica | No | No | Router | No | Sí |
| Feedback top-down | No | No | No | No | Sí |
| Comunicación lateral | No | No | No | Parcial | Sí (nerve) |
| Módulos heterogéneos | No | No | Sí | Sí | Sí |
| Bio-inspirada | No | No | No | No | Sí |
Ningún trabajo previo integra: (1) módulos paralelos con escalas diferentes, (2) aprendizaje local via Forward-Forward, (3) comunicación comprimida bio-inspirada, (4) coordinación por atención dinámica, (5) feedback top-down mediante modulación multiplicativa, (6) comunicación lateral entre módulos (nerve ring), y (7) soporte para módulos heterogéneos. Esta integración es la contribución principal de OctopusNet.
4. MÉTODO
4.1 Arquitectura General
OctopusNet consta de cinco componentes principales: (1) N módulos paralelos que procesan el input simultáneamente (homogéneos o heterogéneos), (2) un canal de comunicación comprimida (bottleneck) entre cada módulo y el nerve ring, (3) un nerve ring que permite comunicación lateral entre módulos via cross-attention, (4) un coordinador central que agrega las representaciones mediante atención dinámica, y (5) un mecanismo de feedback top-down que modula las activaciones de los módulos.
```
┌──────────────────────────────────┐
│ COORDINADOR CENTRAL │
│ │
│ 1. Recibe h'_1..h'_N (32 vals) │
│ 2. Calcula atención α_i │
│ 3. Agrega: h_agg = Σ α_i · h'_i │
│ 4. Output: h_agg → FC → clases │
│ 5. Genera feedback f_i ──────────┼───┐
└───────────┬───────────────────────┘ │
│ │
[h'_1, h'_2, h'_3, h'_4] │
(representaciones enriquecidas) │
↑ │
┌───────────┴───────────┐ │
│ NERVE RING │ │
│ (Cross-Attention) │ │
│ │ │
│ h'_i = h_i + Attn(h_i,│ │
│ [h_1..h_N]) │ │
└───────────┬───────────┘ │
│ │
[h_1, h_2, h_3, h_4] │
bottleneck (64 valores c/u) │
↑ │
┌──────────────────────────┼───────────────────────────┼──────────────────┐
│ │ │ │
┌───────┴───────┐ ┌───────┴───────┐ ┌───────┴───────┐ ┌───────┴───────┐
│ MÓDULO 1 │ │ MÓDULO 2 │ │ MÓDULO 3 │ │ MÓDULO N │
│ CNN k=3×3 │ │ CNN k=3×3 │ │ CNN k=3×3 │ │ CNN/Trans/ │
│ res=32×32 │ │ res=16×16 │ │ res=8×8 │ │ LSTM, res=4 │
│ │ │ │ │ │ │ │
│ ×f_1 → proc │ │ ×f_2 → proc │ │ ×f_3 → proc │ │ ×f_N → proc │
│ → bottleneck │ │ → bottleneck │ │ → bottleneck │ │ → bottleneck │
│ → FF loss │ │ → FF loss │ │ → FF loss │ │ → FF loss │
└───────┬───────┘ └───────┬───────┘ └───────┬───────┘ └───────┬───────┘
│ │ │ │
└──────────────────────────┴───────────────────────────┴──────────────────┘
↑
Input (imagen)
```
Donde N es el número de módulos (por defecto 4). Cada módulo puede ser homogéneo (todos CNNs con kernel 3×3, diferenciados por resolución) o heterogéneo (mezcla de CNN, Transformer, LSTM). El nerve ring permite que cada módulo "vea" lo que descubrieron los demás antes de enviar al coordinador. El feedback f_i del batch anterior modula las activaciones de cada módulo.
4.2 Módulos y Especialización
Cada módulo es una unidad de procesamiento independiente que comprime su salida a un vector de B valores (por defecto B=32). OctopusNet soporta dos configuraciones:
Configuración homogénea (baseline):
Todos los módulos son mini-CNNs con tres capas convolucionales, diferenciándose en la resolución del input (no en el kernel). Todos usan kernel 3×3; la especialización emerge de ver el input a diferente escala:
- Módulo 1: resolución 32×32 (detalles finos, bordes, texturas) ↔ V1
- Módulo 2: resolución 16×16 (formas parciales, gradientes) ↔ V2
- Módulo 3: resolución 8×8 (regiones semánticas, objetos) ↔ V4
- Módulo 4: resolución 4×4 (composición global, distribución) ↔ IT cortex
Cada módulo recibe el input redimensionado con F.interpolate bilinear. Empíricamente confirmado: kernels 5×5, 7×7, 9×9 sobre la misma resolución 32×32 son redundantes — el coordinador los ignora (pesos de atención ≈0.006 y ≈0.046 para k=5 y k=7). Con multi-escala, todos los módulos alcanzan sep>0.05 en FF en 200 batches (sep: 0.07/0.20/0.30/0.61).
Formalmente: h_i = Bottleneck(Conv3(Conv2(Conv1(Interpolate(x, scale_i)))))
Configuración heterogénea:
Módulos de diferentes arquitecturas capturan aspectos complementarios:
- Módulo 1: CNN 3×3 (features espaciales jerárquicas)
- Módulo 2: CNN 7×7 (contexto espacial amplio)
- Módulo 3: Mini-Transformer 2 capas (relaciones globales entre patches)
- Módulo 4: LSTM bidireccional (patrones secuenciales en scanlines)
Formalmente: h_i = Bottleneck(Arquitectura_i(x))
El único requisito es que cada módulo produzca un vector de B valores. El coordinador no necesita saber qué tipo de módulo produjo cada representación.
La especialización emerge por dos factores: (1) diferentes resoluciones de entrada fuerzan a cada módulo a capturar features a escalas genuinamente distintas (confirmado empíricamente: diferentes kernels sobre misma resolución producen módulos redundantes), y (2) el bottleneck fuerza a cada módulo a comprimir solo la información más relevante desde su perspectiva.
4.2.1 Jerarquía Multi-Escala: Analogía con Corteza Visual
La configuración por defecto de OctopusNet envía el input a cada módulo a diferente resolución, análoga a la jerarquía V1/V2/V4/IT de la corteza visual de mamíferos. Esta decisión de diseño es empíricamente necesaria: sin multi-escala, los módulos con diferentes kernels sobre la misma resolución capturan información redundante (ver Observación A1-obs). El experimento A12b evalúa esta decisión comparando con una configuración de resolución única.
Módulo 1: 32×32 (resolución completa) → detalles finos, bordes, texturas ↔ V1
Módulo 2: 16×16 (½ resolución) → formas parciales, gradientes ↔ V2
Módulo 3: 8×8 (¼ resolución) → regiones semánticas, objetos ↔ V4
Módulo 4: 4×4 (⅛ resolución) → composición global, distribución ↔ IT cortex
La implementación usa F.interpolate con modo bilinear y align_corners=False, aplicado antes de cada módulo en el forward pass. No requiere módulos adicionales — es un preprocesamiento diferenciado por módulo.
Esta jerarquía tiene una consecuencia importante para el nerve ring: el cross-attention ahora cruza información entre representaciones de diferentes resoluciones. El módulo fino puede "consultar" al módulo grueso sobre la estructura global antes de comprimir al bottleneck — análogo a las conexiones feedback V4→V1 documentadas en corteza visual (Yamins & DiCarlo, 2016).
Motivación empírica: En experimentos preliminares con configuración de resolución única (32×32, kernels 3×3/5×5/7×7/9×9), el coordinador asignó pesos de atención altamente concentrados en los dos módulos extremos (M1 k=3: 0.596, M4 k=9: 0.352) ignorando los módulos intermedios (M2≈0.006, M3≈0.046). Este resultado confirma que kernels intermedios sobre la misma resolución capturan información redundante. Con multi-escala (default en OctopusNet), todos los módulos alcanzan sep>0.05 en FF (sep: 0.07/0.20/0.30/0.61 para res=32/16/8/4), y se espera distribución de atención más equilibrada. El experimento A12b documenta esta comparación sistemáticamente. Ver sección 5.7, Observación A1-obs para datos completos.
4.2.2 Elección de Kernel
En la configuración por defecto, todos los módulos usan kernel 3×3 independientemente de su resolución. Esto es suficiente porque la variedad de escalas ya fuerza especialización: un kernel 3×3 sobre 32×32 captura detalles finos equivalentes a un campo receptivo efectivo muy pequeño, mientras que el mismo kernel 3×3 sobre 4×4 captura casi la imagen completa.
Se probaron kernels adaptativos (k_adaptativo = min(kernel_size, mayor_impar ≤ resolución_módulo)) pero no mejoran el FF goodness separation. Con multi-escala, el receptive field efectivo ya escala por resolución. El experimento A12a compara kernel fijo 3×3 vs kernels adaptativos por resolución.
La analogía biológica se mantiene: las neuronas de V1 tienen campos receptivos de ~1° de arco visual; las de IT cortex tienen campos de ~50°. En OctopusNet esta proporcionalidad emerge de las resoluciones [32,16,8,4], no del tamaño de kernel.
4.3 Forward-Forward como Función de Pérdida Local
Cada módulo posee su propia función de pérdida, entrenada mediante el algoritmo Forward-Forward (Hinton, 2022). A diferencia del backpropagation, donde una única loss al final de la red propaga gradientes hacia atrás, FF define un objetivo local por módulo.
El proceso de entrenamiento para cada módulo consiste en dos fases:
Fase positiva: el módulo recibe un dato real x+ y calcula la goodness de su representación:
goodness(h) = Σ h_j² (suma de activaciones al cuadrado)
El módulo aprende a producir goodness alta para datos reales.
Fase negativa: el módulo recibe un dato negativo x- (generado mediante perturbación del input o asignación de labels incorrectos) y aprende a producir goodness baja.
La loss local del módulo i es:
L_i = -log(σ(goodness(h_i+) - θ)) - log(σ(θ - goodness(h_i-)))
Donde σ es la función sigmoide y θ es un umbral (threshold).
Esta formulación permite que cada módulo entrene de forma completamente independiente, sin esperar señales de otros módulos ni del coordinador. Esto habilita entrenamiento paralelo real.
4.3.1 Threshold Adaptativo (Experimento A11)
El threshold θ es un hiperparámetro crítico: si es muy bajo, todo parece positivo; si es muy alto, todo parece negativo. El valor por defecto (θ=2.0) proviene del paper original de Hinton, pero puede no ser óptimo para todas las arquitecturas.
Proponemos un **threshold adaptativo** que se ajusta automáticamente durante el entrenamiento:
```
θ_t = (mean(g_pos) + mean(g_neg)) / 2
```
En cada batch, el threshold se calcula como el punto medio entre la goodness promedio de los datos positivos y negativos. Esto garantiza que el umbral siempre esté en la posición óptima para separar ambas distribuciones, independientemente de la escala de las activaciones.
Ventajas:
- No requiere tuning manual del hiperparámetro
- Se adapta a diferentes arquitecturas de módulos
- Robusto ante cambios en la distribución de activaciones durante el entrenamiento
El experimento A11 compara el threshold fijo vs adaptativo.
4.3.2 Función de Goodness: Media Global sobre Último Feature Map
La implementación usa goodness global calculada sobre el último feature map convolucional (f3):
goodness(x) = mean(f3²) sobre dimensiones [batch, channels, H, W]
Equivalente: (f3 ** 2).mean(dim=[1, 2, 3])
Esta formulación fue seleccionada empíricamente. Se evaluaron dos alternativas:
**ASGE (Adaptive Spatial Goodness Encoding)**: calcula energía por patches espaciales en feature maps intermedios. En experimentos iniciales produjo sep≈0.0006 — la señal Fourier queda diluida al promediar sobre todos los patches de una imagen 32×32 (el label ocupa ~6.25% del área). ASGE falla cuando la señal de clase no ocupa el feature map completo.
**Goodness global sobre f3 + multi-escala**: La media global sobre toda la imagen parece también susceptible al problema de dilución, pero la clave está en la interacción con las resoluciones: a 32×32, sep=0.07 (señal diluida pero detectable); a 4×4, el mismo patrón Fourier domina toda la imagen → sep=0.61.
Resultados empíricos por módulo (200 batches, CIFAR-10, Fourier K=0.5):
Módulo 1 (32×32): g_pos=0.61, g_neg=0.54, sep=0.07 ✓
Módulo 2 (16×16): g_pos=0.82, g_neg=0.62, sep=0.20 ✓
Módulo 3 (8×8): g_pos=0.93, g_neg=0.63, sep=0.30 ✓
Módulo 4 (4×4): g_pos=1.40, g_neg=0.79, sep=0.61 ✓
Resultados tras entrenamiento completo (modelo v3 + ModDrop, 100 épocas, CIFAR-10):
Módulo 1 (32×32): g_pos=16.551, g_neg=14.307, sep=2.243 ✓
Módulo 2 (16×16): g_pos=33.690, g_neg=30.056, sep=3.633 ✓
Módulo 3 (8×8): g_pos=31.852, g_neg=28.441, sep=3.411 ✓
Módulo 4 (4×4): g_pos=11.487, g_neg=9.642, sep=1.845 ✓
La separación creció 10-30x respecto al diagnóstico inicial — confirmando que el
entrenamiento FF converge correctamente. Sep > 1.8 en todos los módulos indica que
los negativos Fourier no son el cuello de botella del accuracy — el límite está en
la capacidad del coordinador y la naturaleza de FF vs backprop.
**Estabilización de activaciones — LayerNorm entre capas conv:**
Sin normalización, g_pos crece exponencialmente entre épocas (6× por época en M1, NaN en época 3). El threshold adaptativo no frena esto porque la loss puede seguir bajando aunque ambas goodness escalen juntas — solo importa la diferencia, no la magnitud absoluta.
Siguiendo Hinton (2022) y Codellaro et al. (Scientific Reports, 2025), aplicamos LayerNorm después de f1 y f2 antes de pasarlos a la siguiente capa convolucional. La goodness se mide sobre f3 sin normalizar:
f1 = ReLU(Conv1(x))
f2 = ReLU(Conv2(LayerNorm(f1)))
f3 = ReLU(Conv3(LayerNorm(f2)))
goodness = mean(f3²)
Esto pasa solo la orientación del vector de activación, no la magnitud — haciendo el crecimiento ilimitado estructuralmente imposible para capas subsecuentes. Resultado empírico: g_pos crece de forma sublineal (×2 en 5 épocas vs ×40 sin LayerNorm), sep crece consistentemente hasta >1.0.
El experimento A14 compara goodness global vs ASGE para documentar esta diferencia.
4.3.3 Channel Grouping: Un Solo Forward Pass (Experimento A15)
El entrenamiento FF estándar requiere generar datos negativos (x_neg) para cada batch — un paso de preprocesamiento con costo computacional y potencial ruido si los negativos son fáciles de separar. Adoptamos la técnica de agrupación de canales de Ortiz Torres et al. (arXiv:2504.21662, 2025), que elimina x_neg completamente.
El mecanismo divide los canales de cada feature map en J grupos, uno por clase:
S = C / J (canales por grupo, C redondeado a múltiplo de J)
Para cada muestra n y clase j:
G_{n,j} = (1 / S·H·W) · Σ Y[n, j·S:(j+1)·S, :, :]²
g_pos_n = G[n, label_n] (goodness del grupo de la clase correcta)
g_neg_n = mean(G[n, j] para j ≠ label_n) (media de grupos incorrectos)
Un solo forward pass genera tanto g_pos como g_neg internamente. La red aprende que los canales del grupo correcto deben activarse más que los demás.
Ventajas:
- Elimina generación de x_neg — 50% menos forward passes durante entrenamiento
- Goodness más estable: g_neg es promedio de J-1 grupos, no un solo negativo aleatorio
- Compatible con goodness global: el channel grouping aplica la misma media² sobre grupos de canales del último feature map
Ajuste de canales: con J=10 clases, los 64 canales de la primera capa se redondean a 70 (7 canales por grupo). Esto ocurre solo durante construcción del módulo y no afecta la inferencia.
El experimento A15 compara FF estándar (x_pos/x_neg) vs channel grouping en accuracy y tiempo de entrenamiento.
4.4 Bottleneck: Comunicación Comprimida
Inspirado en las 30,000 fibras nerviosas del pulpo, cada módulo comunica su resultado al coordinador exclusivamente a través de un bottleneck: una capa fully-connected que reduce la salida del módulo a un vector de B valores (por defecto B=64). La compresión es significativa. Un módulo con tres capas convolucionales de 64, 128 y 256 filtros produce un feature map de miles de valores. El bottleneck lo comprime a 64, una reducción de aproximadamente 7,500x. Solo la información más relevante sobrevive esta compresión.
Feature map (256 × 2 × 2 = 1,024 valores tras AdaptiveAvgPool)
↓
Flatten + FC
↓
Bottleneck (64 valores = 256 bytes)
En transmisión, esto equivale a enviar 256 bytes por módulo, comparado con cientos de kilobytes que requeriría enviar el feature map completo o el modelo completo como en Federated Learning.
**Selección empírica de B:** Se evaluaron B ∈ {32, 64, 128, 256} midiendo la separación FF (sep = g_pos - g_neg) en módulos aislados tras 3 épocas. Los resultados muestran un máximo claro en B=64:
B=32: sep promedio = 0.949 (M1=0.530, M2=0.999, M3=1.291, M4=0.975)
B=64: sep promedio = 1.227 (M1=0.752, M2=1.289, M3=1.763, M4=1.102) ← óptimo
B=128: sep promedio = 1.071 (M1=0.710, M2=1.132, M3=1.465, M4=0.975)
B=256: sep promedio = 1.234 (M1=0.734, M2=1.343, M3=1.765, M4=1.094)
B=64 y B=256 producen sep casi idéntico, pero B=64 es 4× más eficiente en el coordinador. Esto sugiere un equilibrio óptimo entre capacidad de representación y eficiencia, consistente con la hipótesis del Information Bottleneck (Tishby et al., 2015): comprimir fuerza a retener solo información relevante.
4.5 Nerve Ring: Comunicación Lateral entre Módulos
Inspirado en el anillo nervioso del pulpo que conecta los brazos entre sí, el nerve ring permite que cada módulo "vea" lo que descubrieron los demás antes de enviar al coordinador. Esto se implementa mediante cross-attention:
1. Cada módulo produce su bottleneck h_i (32 valores)
2. Cross-attention enriquece cada representación:
h'_i = h_i + Attention(Q=h_i, K=[h_1..h_N], V=[h_1..h_N])
3. Las representaciones enriquecidas h'_i van al coordinador
Esto permite coordinación lateral sin romper la independencia de los módulos: cada uno sigue entrenando con FF loss local, pero su representación se enriquece con contexto de los demás.
4.6 Coordinador con Atención Dinámica
El coordinador central recibe las representaciones enriquecidas h'_1, h'_2, ..., h'_N del nerve ring y debe combinarlas en una decisión final. Empleamos un mecanismo de atención que pondera dinámicamente la contribución de cada módulo según el input.
El proceso es:
1. Se calcula un vector query q a partir de la concatenación de todas las representaciones:
q = W_q · [h'_1; h'_2; ...; h'_N]
2. Se calcula un score de atención para cada módulo:
α_i = softmax(q · h'_i / √B)
3. La representación agregada es la suma ponderada:
h_agg = Σ α_i · h'_i
4. El coordinador produce la salida final:
output = FC_out(FC_dec(h_agg))
Donde FC_dec: ℝ^B → ℝ^256 → ℝ^128 y FC_out: ℝ^128 → ℝ^C.
La atención permite que el coordinador asigne mayor peso al módulo más informativo para cada input específico.
4.6.1 Mecanismos de Competición Inspirados en GWT (Experimento A10)
La Global Workspace Theory (Baars, 1988; Goyal et al., ICLR 2022) postula que los módulos especializados compiten por acceso a un "workspace" compartido de capacidad limitada. Solo los módulos que "ganan" la competición pueden broadcast su información al resto del sistema.
Nuestra implementación por defecto usa softmax suave, pero el paper oficial de GWT (Goyal et al.) utiliza mecanismos de selección más estrictos. Implementamos tres variantes para el experimento A10:
**A10a - Soft Attention (Baseline):**
```
α_i = softmax(scores)
```
Todos los módulos contribuyen con pesos proporcionales a sus scores. Es diferenciable y estable, pero menos fiel a la competición binaria de GWT.
**A10b - Gumbel-Softmax con Selección Dura:**
```
α_i = Gumbel-Softmax(scores, τ=0.5, hard=True)
```
Durante el forward pass produce vectores one-hot (selección dura), pero durante el backward pass usa gradientes suaves para permitir entrenamiento. Más fiel a GWT donde solo un módulo "gana" el acceso al workspace.
**A10c/A10d - Top-K Sparse Attention:**
```
mask = TopK(scores, k)
α_i = softmax(scores * mask + (1-mask) * -∞)
```
Solo los K módulos con mayor score contribuyen. Con K=2, dos módulos comparten el workspace. Con K=1, es "winner-take-all" puro.
Justificación teórica:
- El paper de Goyal et al. usa `competition_mlp` con Gumbel-softmax para selección binaria
- La sparsity (Top-K) reduce ruido de módulos irrelevantes y puede mejorar especialización
- La competición dura fuerza a cada módulo a ser "el mejor" en su dominio para ser seleccionado
El experimento A10 confirma que soft attention es el mecanismo óptimo para OctopusNet con N=4 módulos (43.72% vs 39.33% Gumbel, 42.32% Top-2, 38.09% Top-1). La selección dura tiene sentido en GWT biológico con miles de módulos compitiendo — a N=4, zerear módulos pierde información crítica y destabiliza el entrenamiento.
4.7 Flujo de Ejecución
El procesamiento de un input x sigue siete pasos:
1. Modulación (excepto primer batch): cada módulo aplica el feedback f_i del batch anterior
activaciones_moduladas = activaciones × f_i
2. Distribución: x se envía idénticamente a los N módulos
3. Procesamiento local: cada módulo procesa x en paralelo con su arquitectura (CNN/Transformer/LSTM, modulada por f_i)
4. Aprendizaje local (solo en entrenamiento): cada módulo evalúa su FF loss con datos positivos y negativos
5. Compresión: cada módulo reduce su salida a B valores via bottleneck → h_i
6. Nerve ring: cross-attention entre módulos enriquece cada h_i → h'_i
7. Agregación + Feedback: el coordinador recibe N vectores h'_i, aplica atención, genera output, y calcula f_i para el siguiente batch
Diagrama del ciclo completo:
```
Batch t:
┌─────────────────────┐
│ COORDINADOR │
│ │
│ 1. Recibe h'_1..h'_N│
│ 2. Calcula α_i │
│ 3. Agrega → output │
│ 4. Genera f_i ──────┼───┐
└──────────┬──────────┘ │
│ │
[h'_1, h'_2, h'_3, h'_4] │
(enriquecidos por nerve) │
↑ │
┌──────────┴──────────┐ │
│ NERVE RING │ │
│ Cross-Attention │ │
│ h'_i = h_i + Attn │ │
└──────────┬──────────┘ │
│ │
[h_1, h_2, h_3, h_4] │
(bottlenecks 64 vals) │
↑ │
┌────────────────────────┼──────────────┼────────────────┐
│ │ │ │
┌───────┴───────┐ ┌───────┴───────┐ │ ┌───────┴───────┐
│ MÓDULO 1 │ │ MÓDULO 2 │ │ │ MÓDULO N │
│ CNN/Trans │ │ CNN/Trans │ │ │ CNN/LSTM │
┌───→│ ×f_1 → proc │ ┌───→│ ×f_2 → proc │ │ ┌───→│ ×f_N → proc │
│ │ → h_1 │ │ │ → h_2 │ │ │ │ → h_N │
│ └───────────────┘ │ └───────────────┘ │ │ └───────────────┘
│ │ │ │
│ │ │ │
└────────────────────────┴───────────────────────────┴───┘
f_i del batch anterior
(feedback loop)
```
El feedback crea un ciclo: el coordinador influye en cómo procesarán los módulos el SIGUIENTE input. El nerve ring permite coordinación lateral entre módulos.
4.8 Feedback Top-Down: Modulación del Coordinador a los Módulos
Inspirado en la comunicación bidireccional del pulpo (donde el cerebro envía comandos globales y los brazos combinan estos con señales locales), implementamos un mecanismo de feedback mediante modulación multiplicativa.
El proceso funciona así:
1. En el batch t, los módulos procesan y envían sus 32 valores al coordinador
2. El coordinador calcula los pesos de atención α_i para cada módulo
3. El coordinador genera un vector de feedback f_i ∈ ℝ^B para cada módulo:
f_i = σ(W_f · [h_agg; α_i])
Donde σ es sigmoide (valores entre 0 y 1), h_agg es la representación agregada, y α_i es el peso de atención del módulo i.
4. En el batch t+1, cada módulo aplica modulación multiplicativa en su capa intermedia:
activaciones_moduladas = activaciones × f_i
5. Módulos con f_i cercano a 1 → señal sin cambio
Módulos con f_i cercano a 0 → señal suprimida
Módulos con f_i > 1 (si usamos otra activación) → señal amplificada
Justificación biológica:
- El cerebro del pulpo envía "comandos globales" por el tracto cerebrobraquial (CBT)
- Cada brazo combina el comando central + señales sensoriales locales
- No es "el cerebro dice cómo moverse", es "el cerebro da contexto, el brazo decide"
Justificación computacional (Harvard, NeurIPS 2023):
- La modulación multiplicativa permite "apagar" neuronas irrelevantes (multiplicar por 0)
- Sin feedback, la señal pasa sin cambio (no inventa activaciones)
- Previene alucinaciones cuando el contexto indica que cierto módulo no es relevante
Conexión con Global Workspace Theory (Goyal et al., ICLR 2022):
El feedback implementa el "broadcast" de la Global Workspace. Después de que los módulos compiten por atención (ignition), el workspace envía información de vuelta a todos los módulos. Sin feedback, solo hay competencia. Con feedback, hay el ciclo completo de la GWT.
Diferencia con la atención:
- Atención: pondera las salidas DESPUÉS de que los módulos procesan
- Feedback: modula las activaciones ANTES/DURANTE el procesamiento del siguiente input
4.9 Resiliencia ante Fallas
Si el módulo j falla o se desconecta, el sistema se adapta sin reentrenamiento. La atención del coordinador redistribuye automáticamente los pesos entre los módulos restantes:
α_i = softmax(q · h_i / √B) para todo i ≠ j
El accuracy se degrada proporcionalmente al número de módulos perdidos, pero el sistema no colapsa. Esto contrasta con una red secuencial, donde la falla
de cualquier capa intermedia detiene todo el procesamiento, y con Federated Learning, donde la pérdida del servidor central paraliza la agregación.
4.10 Generación de Datos Negativos para Forward-Forward
El algoritmo Forward-Forward requiere datos negativos para entrenar cada módulo. Siguiendo el enfoque de Hinton (2022), generamos datos negativos asignando labels incorrectos al input original:
Dato positivo: imagen + label correcto (ej: imagen de gato + "gato")
Dato negativo: imagen + label incorrecto (ej: imagen de gato + "perro")
El problema del enfoque original (label en primeros píxeles) es que las capas convolucionales solo ven el label cuando el filtro está posicionado en la esquina superior izquierda. Para la mayoría de posiciones de filtro, el label es invisible — la red aprende goodness sin información de clase para gran parte del campo receptivo.
4.10.1 Codificación Fourier Espacial de Labels (Experimento A13)
Adoptamos la técnica de codificación espacialmente extendida de "Training CNNs with FF" (Scientific Reports, 2025). Cada clase recibe un patrón sinusoidal único que cubre toda la imagen:
Para la clase c: patrón_c(x, y) = sin(f_c · (x·cos(θ_c) + y·sin(θ_c)))
Donde f_c y θ_c son frecuencia y orientación únicas por clase:
- 4 orientaciones: 0°, 45°, 90°, 135°
- 3 frecuencias: 1, 2, 3 ciclos
- 12 combinaciones totales (≥ num_classes para CIFAR-10/100)
El label se incorpora como mezcla ponderada:
x_labeled = imagen · (1 - K) + patrón_c · K con K = 0.5
Ventajas sobre one-hot en primeros píxeles:
- El label es visible en cada posición espacial de la imagen
- Cualquier filtro convolucional en cualquier posición detecta la clase
- Escala naturalmente con F.interpolate: el patrón Fourier mantiene coherencia a cualquier resolución
- K=0.5 balance empíricamente confirmado: a res=32×32, sep=0.07; a res=4×4, sep=0.61
Interacción crítica Fourier + multi-escala: a 32×32, la diferencia Fourier (Δ≈0.20 por píxel) se diluye en la goodness global porque la red ve el patrón mezclado con información de imagen real a escala completa. A 4×4, el downscaling concentra el patrón: los 16 píxeles de la imagen 4×4 representan regiones 8×8 en el original, donde el sinusoide es promediado — y ese promedio aún tiene señal de clase. Por eso sep escala inversamente con resolución.
Nota sobre la referencia: Codellaro et al. (Scientific Reports, 2025) usa K=0.5 en CNN con resolución fija 32×32 y reporta sep≈0.07, consistente con nuestros resultados. Su trabajo valida la técnica; nuestra contribución es combinarla con multi-escala para amplificar la señal en módulos de baja resolución.
El experimento A13 compara Fourier labeling vs one-hot original.
En los experimentos de ablación (A4), evaluamos variantes adicionales de datos negativos:
- Ruido gaussiano añadido al input
- Mezcla de dos imágenes (overlay)
- Máscaras aleatorias que ocultan partes del input
4.11 Entrenamiento del Coordinador
Los módulos se entrenan con Forward-Forward (aprendizaje local). El coordinador se entrena con backpropagation estándar usando Cross-Entropy Loss sobre la clasificación final.
Crucialmente, los gradientes del coordinador NO se propagan hacia los módulos. El bottleneck actúa como un "corte de gradiente" (gradient stop):
Módulo 1 ──→ [bottleneck] ──┐
Módulo 2 ──→ [bottleneck] ──┼──→ Coordinador ──→ Loss (CE)
Módulo 3 ──→ [bottleneck] ──┘ ↑
│
Backprop solo aquí
(no cruza el bottleneck)
Esta arquitectura híbrida mantiene el aprendizaje local en los módulos mientras permite supervisión efectiva en el coordinador. Es análoga a Split Learning, donde el "cut layer" separa el entrenamiento cliente-servidor.
4.12 Consideraciones Teóricas
Esta sección aborda tres desafíos fundamentales de las arquitecturas con aprendizaje local distribuido.
4.12.1 Coherencia Global: ¿Converge el sistema?
Cada módulo optimiza su propia FF loss, lo que plantea la pregunta: ¿quién garantiza que el sistema completo converge hacia un objetivo común?
El coordinador actúa como mecanismo de alineación global:
```
Módulo 1: FF loss local → "mis features son buenas"
Módulo 2: FF loss local → "mis features son buenas"
Módulo 3: FF loss local → "mis features son buenas"
↓
Coordinador: CrossEntropy → "pero juntos clasificaron MAL"
↓
Atención ajusta → reduce peso de módulos inconsistentes
↓
Feedback modula → suprime módulos que no aportan
```
Mecanismos de alineación:
1. Atención dinámica: el coordinador aprende a ponderar módulos según su utilidad para la tarea global
2. Feedback multiplicativo: suprime activaciones de módulos cuya contribución no mejora el accuracy
3. Consistencia emergente: módulos que no ayudan reciben menos peso; sus features gradualmente se vuelven menos influyentes
Conexión teórica con Global Workspace Theory (Baars, 1988; Goyal et al., ICLR 2022):
La arquitectura de OctopusNet implementa implícitamente una Global Workspace:
- Módulos = especialistas funcionales
- Bottleneck = canal de comunicación con ancho de banda limitado
- Atención = competencia por acceso al workspace
- Feedback = broadcast del workspace hacia los módulos
Esta conexión proporciona justificación teórica adicional: la coherencia global emerge cuando módulos compiten por un recurso compartido limitado (el workspace/coordinador).
Limitación honesta: si un módulo aprende features "buenas para FF" pero "malas para clasificación", no hay corrección directa. El coordinador solo puede reducir su influencia, no modificar sus pesos.
4.12.2 Interacción entre Módulos
El nerve ring (sección 4.5) resuelve el problema de comunicación lateral entre módulos. Cada módulo procesa el input de forma independiente, pero antes de enviar al coordinador, el nerve ring permite que cada representación h_i se enriquezca con información de los demás módulos via cross-attention.
Esta arquitectura permite:
- Paralelismo real: cada módulo procesa independientemente
- Especialización natural: diferentes arquitecturas capturan diferentes aspectos
- Coordinación emergente: el nerve ring y la atención combinan perspectivas
- Resiliencia: si un módulo falla, los demás compensan
Referencia: Graph Neural Network-based Multi-agent Coordination (2024) demuestra que este tipo de comunicación mejora coordinación bajo observabilidad parcial.
4.12.3 Credit Assignment: ¿Quién causó el error?
Sin backpropagation global, no existe un gradiente que identifique qué módulo causó un error sistémico. Este es el problema histórico del aprendizaje distribuido.
Mecanismos parciales de credit assignment en OctopusNet:
1. Pesos de atención como indicador implícito:
- Si α_i es consistentemente bajo → módulo i no contribuye útilmente
- No identifica "culpa" exacta, pero señala utilidad relativa
2. Feedback basado en error anterior:
```
Si error_t fue alto y α_i era alto:
→ f_i disminuye en t+1
→ "quien más contribuyó cuando fallamos, probablemente contribuyó al fallo"
```
3. FF tiene credit assignment local:
- Cada módulo sabe si su goodness fue correcta (alta para positivos, baja para negativos)
- No sabe si eso ayudó al sistema global, pero sabe si cumplió su objetivo local
Limitación honesta: el credit assignment global no está resuelto elegantemente. Un módulo podría tener goodness perfecta pero producir features inútiles para la tarea.
Soluciones emergentes en la literatura (2024-2025):
1. Counter-Current Learning (NeurIPS 2024): usa "pairwise local loss" comparando activaciones feedforward vs feedback, con gradient detaching para mantener localidad.
2. Forward Target Propagation (2025): reemplaza backward pass con un segundo forward pass que estima targets por capa. Completamente modular y local.
3. Neural Manifold Noise Correlation (2026): perturba activaciones y correlaciona con cambios en output para estimar gradientes sin backprop. Escala mejor que noise correlation tradicional.
Para OctopusNet, la solución más compatible sería Forward Target Propagation, ya que mantiene la filosofía forward-only. Esto queda como trabajo futuro.
Métricas adicionales a explorar:
- Mutual information entre bottleneck y labels
- Gradiente sintético del coordinador hacia módulos
- Pruning automático de módulos con bajo impacto en accuracy
4.13 Mapeo Biológico
┌───────────────────────────────────┬──────────────────────────┬─────────────────────────────────────┐
│ Componente biológico │ Componente en OctopusNet │ Detalle │
├───────────────────────────────────┼──────────────────────────┼─────────────────────────────────────┤
│ Cerebro central (50M neuronas) │ Coordinador │ Atención + FC: N×B → 256 → 128 → C │
├───────────────────────────────────┼──────────────────────────┼─────────────────────────────────────┤
│ Brazo (40M neuronas c/u) │ Módulo local │ CNN/Transformer/LSTM + bottleneck │
├───────────────────────────────────┼──────────────────────────┼─────────────────────────────────────┤
│ Ventosas (10K neuronas c/u) │ Primera capa del módulo │ Percepción directa del input │
├───────────────────────────────────┼──────────────────────────┼─────────────────────────────────────┤
│ 30,000 fibras nerviosas │ Bottleneck │ Capa FC de B neuronas (B=64) │
├───────────────────────────────────┼──────────────────────────┼─────────────────────────────────────┤
│ Anillo nervioso inter-brazos │ Nerve ring │ Cross-attention entre bottlenecks │
├───────────────────────────────────┼──────────────────────────┼─────────────────────────────────────┤
│ Brazo desconectado funcional │ Módulo con FF loss local │ Opera sin coordinador │
├───────────────────────────────────┼──────────────────────────┼─────────────────────────────────────┤
│ Cerebro modula atención por brazo │ Atención dinámica │ Pesos α_i por input │
├───────────────────────────────────┼──────────────────────────┼─────────────────────────────────────┤
│ Comandos globales via CBT │ Feedback top-down │ Vector f_i modula activaciones │
└───────────────────────────────────┴──────────────────────────┴─────────────────────────────────────┘
5. EXPERIMENTOS
5.1 Diseño Experimental
Evaluamos OctopusNet mediante cinco experimentos principales que comparan nuestra arquitectura contra baselines relevantes:
┌─────┬─────────────────────────────┬──────────────────────────────────────────────────────┐
│ Exp │ Nombre │ Descripción │
├─────┼─────────────────────────────┼──────────────────────────────────────────────────────┤
│ 1 │ Baseline centralizado │ Red CNN tradicional con backprop global │
├─────┼─────────────────────────────┼──────────────────────────────────────────────────────┤
│ 2 │ OctopusNet + Backprop local │ Nuestra arquitectura pero con backprop en vez de FF │
├─────┼─────────────────────────────┼──────────────────────────────────────────────────────┤
│ 3 │ OctopusNet + FF puro │ Nuestra arquitectura con Forward-Forward │
├─────┼─────────────────────────────┼──────────────────────────────────────────────────────┤
│ 4 │ OctopusNet híbrido │ FF entre módulos, backprop dentro de cada módulo │
├─────┼─────────────────────────────┼──────────────────────────────────────────────────────┤
│ 5 │ Federated Learning (FedAvg) │ N clientes con copias del modelo, promediado central │
└─────┴─────────────────────────────┴──────────────────────────────────────────────────────┘
El experimento 4 (híbrido) es nuestra configuración recomendada, basada en evidencia de que este enfoque puede superar a backprop puro (SFF, 2025).
5.2 Datasets
┌───────────────┬────────┬──────────┬────────────┬─────────────────────┐
│ Dataset │ Clases │ Imágenes │ Resolución │ Propósito │
├───────────────┼────────┼──────────┼────────────┼─────────────────────┤
│ MNIST │ 10 │ 70,000 │ 28×28 │ Validación inicial │
├───────────────┼────────┼──────────┼────────────┼─────────────────────┤
│ Fashion-MNIST │ 10 │ 70,000 │ 28×28 │ Complejidad media │
├───────────────┼────────┼──────────┼────────────┼─────────────────────┤
│ CIFAR-10 │ 10 │ 60,000 │ 32×32 │ Benchmark principal │
├───────────────┼────────┼──────────┼────────────┼─────────────────────┤
│ CIFAR-100 │ 100 │ 60,000 │ 32×32 │ Escalabilidad │
└───────────────┴────────┴──────────┴────────────┴─────────────────────┘
5.3 Configuración de OctopusNet
Configuración por defecto para los experimentos:
┌───────────────────┬───────────────────┬─────────────────────────────────────────────┐
│ Parámetro │ Valor │ Notas │
├───────────────────┼───────────────────┼─────────────────────────────────────────────┤
│ N (módulos) │ 4 │ Kernel 3×3 todos, resoluciones: 32,16,8,4 │
├───────────────────┼───────────────────┼─────────────────────────────────────────────┤
│ B (bottleneck) │ 64 │ Óptimo empírico: sep=1.227 vs sep=0.949 (B=32) │
├───────────────────┼───────────────────┼─────────────────────────────────────────────┤
│ Capas por módulo │ 3 │ Conv con 64, 128, 256 filtros │
├───────────────────┼───────────────────┼─────────────────────────────────────────────┤
│ Goodness function │ Global mean (f3²) │ (f3**2).mean(), LayerNorm entre capas conv │
├───────────────────┼───────────────────┼─────────────────────────────────────────────┤
│ Label embedding │ Fourier K=0.5 │ Patrones sinusoidales únicos por clase │
├───────────────────┼───────────────────┼─────────────────────────────────────────────┤
│ Threshold │ Adaptativo │ θ = (g_pos.mean() + g_neg.mean()) / 2 │
├───────────────────┼───────────────────┼─────────────────────────────────────────────┤
│ Agregación │ Atención dinámica │ Softmax sobre scores │
├───────────────────┼───────────────────┼─────────────────────────────────────────────┤
│ Augmentation │ RandomCrop+HFlip │ RandomCrop(32,pad=4), RandomHorizontalFlip │
├───────────────────┼───────────────────┼─────────────────────────────────────────────┤
│ Optimizador │ Adam │ lr=0.001 │
├───────────────────┼───────────────────┼─────────────────────────────────────────────┤
│ Epochs │ 100 │ Early stopping con paciencia 10 │
└───────────────────┴───────────────────┴─────────────────────────────────────────────┘
5.4 Métricas
┌────────────────────────────┬────────────────────────────────────────────────┐
│ Métrica │ Qué mide │
├────────────────────────────┼────────────────────────────────────────────────┤
│ Accuracy (%) │ Clasificación correcta en test set │
├────────────────────────────┼────────────────────────────────────────────────┤
│ Comunicación (bytes/epoch) │ Datos transferidos entre módulos y coordinador │
├────────────────────────────┼────────────────────────────────────────────────┤
│ Resiliencia (%) │ Accuracy cuando 1, 2, o 3 módulos fallan │
├────────────────────────────┼────────────────────────────────────────────────┤
│ Tiempo de entrenamiento │ Segundos por epoch │
├────────────────────────────┼────────────────────────────────────────────────┤
│ Parámetros totales │ Tamaño del modelo │
└────────────────────────────┴────────────────────────────────────────────────┘
5.5 Experimentos de Ablación
Para entender el impacto de cada componente:
┌──────────┬───────────────────┬───────────────────────────────────┐
│ Ablación │ Variable │ Valores a probar │
├──────────┼───────────────────┼───────────────────────────────────┤
│ A1 │ Número de módulos │ 2, 4, 8, 16 │
├──────────┼───────────────────┼───────────────────────────────────┤
│ A2 │ Tamaño bottleneck │ 8, 16, 32, 64, 128 │
├──────────┼───────────────────┼───────────────────────────────────┤
│ A3 │ Capas por módulo │ 2, 3, 4, 5 │
├──────────┼───────────────────┼───────────────────────────────────┤
│ A4 │ Goodness function │ 5 variantes del benchmark 2025 │
├──────────┼───────────────────┼───────────────────────────────────┤
│ A5 │ Agregación │ Concatenación, Promedio, Atención │
├──────────┼───────────────────┼───────────────────────────────────┤
│ A6 │ Resiliencia │ Desconectar 1, 2, 3, N-1 módulos │
├──────────┼───────────────────┼───────────────────────────────────┤
│ A7 │ Feedback top-down │ Con feedback vs sin feedback │
├──────────┼───────────────────┼───────────────────────────────────┤
│ A8 │ Nerve ring │ Con vs sin comunicación lateral │
├──────────┼───────────────────┼───────────────────────────────────┤
│ A9 │ Módulos heterog. │ Solo CNNs vs CNN+Transformer+RNN │
├──────────┼───────────────────┼───────────────────────────────────┤
│ A10 │ Competición GWT │ Soft vs Gumbel-hard vs Top-K │
├──────────┼───────────────────┼───────────────────────────────────┤
│ A11 │ Threshold adapt. │ Fijo (2.0) vs adaptativo │
├──────────┼───────────────────┼───────────────────────────────────┤
│ A12a │ Kernels │ k=3×3 (default) vs adaptativos │
├──────────┼───────────────────┼───────────────────────────────────┤
│ A12b │ Multi-escala │ [32,16,8,4] (default) vs res fija │
├──────────┼───────────────────┼───────────────────────────────────┤
│ A13 │ Label embedding │ One-hot píxeles vs Fourier espacial│
├──────────┼───────────────────┼───────────────────────────────────┤
│ A14 │ Goodness function │ sum(h²) global vs ASGE por patches│
├──────────┼───────────────────┼───────────────────────────────────┤
│ A15 │ Channel grouping │ x_pos/x_neg vs agrupación canales │
└──────────┴───────────────────┴───────────────────────────────────┘
5.6 Comparación Directa: OctopusNet vs Federated Learning
Este experimento es clave para responder a la pregunta de cómo difiere OctopusNet de FL:
┌──────────────┬─────────────────────────────────┬────────────────────────────────┐
│ Aspecto │ OctopusNet │ FedAvg │
├──────────────┼─────────────────────────────────┼────────────────────────────────┤
│ Nodos │ 4 módulos diferentes │ 4 clientes con modelo idéntico │
├──────────────┼─────────────────────────────────┼────────────────────────────────┤
│ Comunicación │ 4 × 32 = 128 floats │ Modelo completo × 4 │
├──────────────┼─────────────────────────────────┼────────────────────────────────┤
│ Agregación │ Atención sobre representaciones │ Promedio de pesos │
├──────────────┼─────────────────────────────────┼────────────────────────────────┤
│ Rondas │ Cada batch │ Cada K epochs locales │
└──────────────┴─────────────────────────────────┴────────────────────────────────┘
Medimos: accuracy final, bytes totales transmitidos, y degradación cuando un nodo falla.
5.7 Resultados
5.7.1 Resultados Baseline (Configuración inicial, lr=0.001, 10 épocas)
Tabla A9 - Homogéneo vs Heterogéneo (CIFAR-10):
┌─────────────────────────────┬──────────┬────────┬──────────────────────────────────────────────────┐
│ Configuración │ Best Acc │ Épocas │ Notas │
├─────────────────────────────┼──────────┼────────┼──────────────────────────────────────────────────┤
│ Homogéneo v1 (sin LayerNorm)│ 23.02% │ 10 │ Kernels 3×3/5×5/7×7/9×9, misma res — OBSOLETO │
├─────────────────────────────┼──────────┼────────┼──────────────────────────────────────────────────┤
│ Homogéneo v2 (con LayerNorm)│ 48.42% │ 50 │ 4 CNNs k=3×3, res [32,16,8,4], best época 26 │
├─────────────────────────────┼──────────┼────────┼──────────────────────────────────────────────────┤
│ Homogéneo v3 (bn=64 + aug) │ 51.83% │ 100 │ bottleneck=64, RandomCrop+HFlip, best época 96 │
├─────────────────────────────┼──────────┼────────┼──────────────────────────────────────────────────┤
│ Heterogéneo (CNN+Trans+LSTM)│ 47.39% │ 30 │ res [32,16,8,4], best época 28, ReduceLROnPlateau│
└─────────────────────────────┴──────────┴────────┴──────────────────────────────────────────────────┘
Progresión por época (Heterogéneo, CIFAR-10):
┌───────┬──────────┬─────────────────────────────────────────────────────────────────┐
│ Época │ Test Acc │ Observación │
├───────┼──────────┼─────────────────────────────────────────────────────────────────┤
│ 1 │ 28.18% │ Inicio fuerte (+10% vs homogéneo) │
│ 2 │ 31.41% │ ↑ BEST │
│ 3 │ 30.19% │ ↓ Ligera caída │
│ 4 │ 29.67% │ ↓ Continúa bajando │
│ 5 │ 29.40% │ ↓ Estabiliza │
│ 6 │ 26.58% │ ↓ Caída fuerte │
│ 7 │ 22.27% │ ↓ Mínimo │
│ 8 │ 29.36% │ ↑ Recupera │
│ 9 │ 27.42% │ ↓ Oscila │
│ 10 │ 25.77% │ ↓ Final │
└───────┴──────────┴─────────────────────────────────────────────────────────────────┘
Hallazgo A9: Los módulos heterogéneos logran +8% mejor accuracy pico (31.41% vs 23.02%),
indicando que CNN+Transformer+LSTM capturan features complementarias. Sin embargo,
muestran mayor inestabilidad durante el entrenamiento. Esto sugiere que se beneficiarían
de: (1) learning rate más bajo, (2) más épocas, o (3) mejor regularización.
NOTA: Estos son resultados baseline (lr=0.001, 10 épocas). Se planea una fase de
optimización con lr=0.0003 y 20+ épocas para mejorar convergencia.
Progresión por época (Homogéneo, CIFAR-10):
┌───────┬──────────┬─────────────────────────────────────────────────────────────────┐
│ Época │ Test Acc │ Observación │
├───────┼──────────┼─────────────────────────────────────────────────────────────────┤
│ 1 │ 18.61% │ Inicio │
│ 2 │ 20.18% │ ↑ Mejora │
│ 3 │ 21.01% │ ↑ Mejora │
│ 4 │ 18.81% │ ↓ Oscilación (normal en FF) │
│ 5 │ 21.69% │ ↑ Recupera │
│ 6 │ 22.16% │ ↑ Mejora │
│ 7 │ 22.44% │ ↑ Mejora │
│ 8 │ 23.02% │ ↑ BEST │
│ 9 │ 21.71% │ ↓ Oscilación │
│ 10 │ 21.58% │ ↓ Final │
└───────┴──────────┴─────────────────────────────────────────────────────────────────┘
Nota: La oscilación es característica del Forward-Forward. Se planea optimizar
con lr=0.0003 y más épocas para reducir varianza.
Progresión por época (Homogéneo v3, bn=64 + augmentation, CIFAR-10):
┌───────┬──────────┬─────────────────────────────────────────────────────────────────┐
│ Época │ Test Acc │ Observación │
├───────┼──────────┼─────────────────────────────────────────────────────────────────┤
│ 1 │ 35.56% │ Inicio más lento — augmentation dificulta primeras épocas │
│ 10 │ 45.83% │ Comparable con v2 en misma época │
│ 20 │ 47.90% │ ↑ Ya supera v2 baseline │
│ 37 │ 50.36% │ ↑ Primer cruce de 50% │
│ 50 │ 50.61% │ ↑ BEST (primera fase) │
│ 65 │ 51.19% │ ↑ Sigue mejorando lentamente │
│ 81 │ 51.66% │ ↑ Nuevo máximo │
│ 96 │ 51.83% │ ↑ BEST GLOBAL │
│ 100 │ 50.20% │ Oscilación final — plateau confirmado │
└───────┴──────────┴─────────────────────────────────────────────────────────────────┘
Hallazgo v3: bottleneck=64 + data augmentation (RandomCrop, RandomHorizontalFlip) mejora
48.42% → 51.83% (+3.41%). La curva sigue subiendo hasta época 96 sin plateau claro —
augmentation previene sobreajuste. El techo estimado de esta configuración es ~52%,
consistente con la limitación de capacidad del coordinador (4×64=256 features para 10 clases).
Observación empírica sobre pesos de atención - Redundancia de kernels homogéneos (CIFAR-10):
Durante el diagnóstico del modelo homogéneo (4 CNNs con kernels 3×3, 5×5, 7×7, 9×9
sobre la misma resolución 32×32), el coordinador aprendió a asignar pesos de atención
altamente no uniformes en la primera época:
┌──────────────────────────────┬────────────┬──────────────────────────────────────────┐
│ Módulo │ Atención │ Interpretación │
├──────────────────────────────┼────────────┼──────────────────────────────────────────┤
│ M1: CNN 3×3 (RF=7×7) │ 0.596 │ Bordes finos, texturas locales │
├──────────────────────────────┼────────────┼──────────────────────────────────────────┤
│ M2: CNN 5×5 (RF=13×13) │ 0.006 │ Redundante — interpolación de M1 y M4 │
├──────────────────────────────┼────────────┼──────────────────────────────────────────┤
│ M3: CNN 7×7 (RF=19×19) │ 0.046 │ Redundante — interpolación de M1 y M4 │
├──────────────────────────────┼────────────┼──────────────────────────────────────────┤
│ M4: CNN 9×9 (RF=25×25) │ 0.352 │ Contexto global, formas grandes │
└──────────────────────────────┴────────────┴──────────────────────────────────────────┘
El coordinador descubrió de forma autónoma, mediante backprop en una sola época, que
los módulos intermedios (k=5, k=7) no aportan información ortogonal a los extremos
(k=3, k=9) cuando todos operan sobre la misma imagen 32×32. La atención es de facto
un "winner-takes-two": M1 y M4 dominan, M2 y M3 son ignorados.
Este resultado es evidencia empírica directa del problema de redundancia de kernels
sobre resolución fija: aumentar el tamaño del kernel no garantiza diversidad de
información si la resolución de entrada es la misma. Los campos receptivos intermedios
(RF=13×13, RF=19×19) capturan superposiciones de lo que ya extraen los extremos.
Hallazgo A1-obs: En configuración homogénea (misma resolución), el coordinador
converge a una solución de dos módulos efectivos independientemente del número de
kernels intermedios disponibles. Esto motiva directamente el experimento A12b
(multi-escala): si cada módulo recibe una resolución diferente, la información
capturada es genuinamente complementaria y el coordinador debería distribuir la
atención más uniformemente.
Hipótesis testeable (A12b): Con entradas multi-escala [32, 16, 8, 4] por módulo,
la desviación estándar de los pesos de atención debería disminuir significativamente
(de std≈0.278 en homogéneo a std<0.1), indicando que todos los módulos contribuyen
de forma balanceada porque cada uno posee información irreducible al resto.
5.7.2 Experimento A6: Resiliencia ante Fallos de Módulos (CIFAR-10)
Modelo: Homogéneo v3 (bn=64, augmentation, 100 épocas). Checkpoint: época 96, 51.83%.
Método: módulo fallido → forward reemplazado por ceros; coordinador redistribuye atención automáticamente.
Baseline ResNet equivalente ante fallo interno: ~10% (colapso total, random).
Fallo de 1 módulo:
┌─────────────────┬──────────┬──────────┬────────────────────────────────────────────┐
│ Módulo fallido │ Accuracy │ Caída │ Interpretación │
├─────────────────┼──────────┼──────────┼────────────────────────────────────────────┤
│ Ninguno (base) │ 50.20% │ — │ Todos los módulos funcionando │
├─────────────────┼──────────┼──────────┼────────────────────────────────────────────┤
│ M4 (res=4×4) │ 45.41% │ -4.79% │ Más prescindible — contexto global │
├─────────────────┼──────────┼──────────┼────────────────────────────────────────────┤
│ M3 (res=8×8) │ 41.37% │ -8.83% │ Moderadamente importante │
├─────────────────┼──────────┼──────────┼────────────────────────────────────────────┤
│ M1 (res=32×32) │ 34.51% │ -15.69% │ Importante — detalles finos │
├─────────────────┼──────────┼──────────┼────────────────────────────────────────────┤
│ M2 (res=16×16) │ 13.89% │ -36.31% │ Crítico — cuello de botella entre escalas │
└─────────────────┴──────────┴──────────┴────────────────────────────────────────────┘
Fallo de 2 módulos:
┌──────────────┬──────────┬──────────┬─────────────────────────────────────────────────┐
│ Módulos │ Accuracy │ Caída │ Interpretación │
├──────────────┼──────────┼──────────┼─────────────────────────────────────────────────┤
│ M3+M4 │ 34.05% │ -16.15% │ Solo escala fina+media — funciona razonablemente│
├──────────────┼──────────┼──────────┼─────────────────────────────────────────────────┤
│ M1+M4 │ 33.00% │ -17.20% │ Solo escalas intermedias — aún funcional │
├──────────────┼──────────┼──────────┼─────────────────────────────────────────────────┤
│ M1+M3 │ 30.29% │ -19.91% │ Solo M2+M4 — degradado pero funcional │
├──────────────┼──────────┼──────────┼─────────────────────────────────────────────────┤
│ M2+M4 │ 11.58% │ -38.62% │ Sin escala media — casi colapso │
├──────────────┼──────────┼──────────┼─────────────────────────────────────────────────┤
│ M1+M2 │ 10.38% │ -39.82% │ Sin escalas fina+media — colapso │
├──────────────┼──────────┼──────────┼─────────────────────────────────────────────────┤
│ M2+M3 │ 10.01% │ -40.19% │ Sin escalas intermedias — colapso │
└──────────────┴──────────┴──────────┴─────────────────────────────────────────────────┘
Fallo de 3 módulos (solo 1 superviviente):
┌──────────────────┬──────────┬──────────┬──────────────────────────────────────────────┐
│ Superviviente │ Accuracy │ Caída │ Interpretación │
├──────────────────┼──────────┼──────────┼──────────────────────────────────────────────┤
│ Solo M4 (res=4) │ 28.80% │ -21.40% │ Contexto global solo — 2.88× mejor que random│
├──────────────────┼──────────┼──────────┼──────────────────────────────────────────────┤
│ Solo M1 (res=32) │ 10.32% │ -39.88% │ Detalles finos solos — casi random │
├──────────────────┼──────────┼──────────┼──────────────────────────────────────────────┤
│ Solo M2 (res=16) │ 10.00% │ -40.20% │ Colapso — M2 solo no clasifica │
├──────────────────┼──────────┼──────────┼──────────────────────────────────────────────┤
│ Solo M3 (res=8) │ 10.00% │ -40.20% │ Colapso — M3 solo no clasifica │
└──────────────────┴──────────┴──────────┴──────────────────────────────────────────────┘
Hallazgo A6:
1. **Graceful degradation confirmada**: con 1 módulo caído, OctopusNet mantiene 68-90%
de su accuracy original. ResNet equivalente colapsa a ~10% (random) con cualquier
fallo interno. La diferencia es estructural — OctopusNet no tiene un punto único de fallo.
2. **Especialización no uniforme**: M2 (res=16) es el módulo más crítico — su pérdida
causa una caída de 36.31%. Esto confirma que los módulos capturan información
genuinamente diferente y no redundante. Si fueran redundantes, perder cualquiera
daría la misma caída.
3. **M4 (res=4) más robusto individualmente**: con solo M4 activo el sistema alcanza
28.80% — 2.88× mejor que random. El contexto global (4×4) contiene más información
clasificable por sí solo que los detalles finos.
4. **Patrón de colapso**: el sistema colapsa cuando M2 está entre los fallidos (todos
los combos con M2 caen a ~10%). M2 actúa como "traductor" entre la escala fina
(M1) y las escalas gruesas (M3, M4).
5.7.3 Experimento A6b: Module Dropout + Channel Grouping — Resiliencia Óptima
Motivación: A18b demostró que Channel Grouping eleva accuracy a 64.17% pero el floor de
resiliencia (41.47%) es comparable al FF estándar. A6b combina CG con Module Dropout
(p=0.5 por batch) para determinar si ambas técnicas son complementarias.
Método: Misma arquitectura que A18b (4 CGCNNModules, kernels [3,5,7,9], NerveRing +
Coordinator). Durante entrenamiento del coordinador, con probabilidad p=0.5 se elige un
módulo aleatorio y se reemplaza su salida por ceros para ese batch. Los módulos CG se
entrenan normalmente con ff_loss local. MultiStepLR: milestones=[10,20,27], gamma=0.1.
30 épocas. Checkpoint guardado en Drive al mejor val_acc.
Relación con literatura: análogo a Dropout (Srivastava et al., 2014) pero a nivel de módulo
completo; similar a Stochastic Depth (Huang et al., 2016) pero sobre módulos paralelos FF
con coordinador de atención. Combinación con channel grouping no existe en literatura.
Resultados — fallo de módulo individual:
┌──────────────────────┬──────────┬──────────┬──────────┐
│ Escenario │ A18b │ A6b │ Mejora │
├──────────────────────┼──────────┼──────────┼──────────┤
│ Full system │ 64.17% │ 64.34% │ +0.17% │
├──────────────────────┼──────────┼──────────┼──────────┤
│ M0 falla (kernel 3) │ - │ 61.12% │ - │
├──────────────────────┼──────────┼──────────┼──────────┤
│ M1 falla (kernel 5) │ - │ 62.85% │ - │
├──────────────────────┼──────────┼──────────┼──────────┤
│ M2 falla (kernel 7) │ - │ 61.64% │ - │
├──────────────────────┼──────────┼──────────┼──────────┤
│ M3 falla (kernel 9) │ 41.47%* │ 62.20% │ +20.73% │
├──────────────────────┼──────────┼──────────┼──────────┤
│ Floor (peor caso) │ 41.47% │ 61.12% │ +19.65% │
└──────────────────────┴──────────┴──────────┴──────────┘
*A18b reportó solo peor caso; A6b reporta todos los módulos.
Resultados — fallo de dos módulos simultáneos:
┌─────────────────┬──────────┐
│ Combo │ A6b │
├─────────────────┼──────────┤
│ M0+M1 fallan │ 57.11% │
├─────────────────┼──────────┤
│ M0+M2 fallan │ 56.19% │
├─────────────────┼──────────┤
│ M0+M3 fallan │ 56.82% │
├─────────────────┼──────────┤
│ M1+M2 fallan │ 58.11% │
├─────────────────┼──────────┤
│ M1+M3 fallan │ 58.71% │
├─────────────────┼──────────┤