user@devops:~$ cat README.md
SimCLR — Self-Supervised Learning contrastivo
# Descripción
SimCLR (Chen, Kornblith, Norouzi & Hinton, 2020) implementado desde cero en PyTorch sobre Fashion-MNIST (3,000 imágenes de train, 1,000 de test, seed 42, CPU). La idea central del self-supervised learning contrastivo: una red aprende representaciones visuales útiles SIN ninguna etiqueta, solo maximizando la similitud entre dos vistas aumentadas de la misma imagen (par positivo) y minimizándola frente a las demás del batch (negativos). Arquitectura: encoder CNN de 109,632 params (Conv 1→32→64→128ch con BatchNorm + MaxPool + AdaptiveAvgPool + FC 128) y proyección MLP de 24,768 params (FC 128→128 ReLU → FC 128→64, salida L2-normalizada en la esfera unitaria). Aumentaciones SimCLR: RandomResizedCrop (scale 0.55–1.0), flip horizontal y color jitter — el crop aleatorio es la clave del paper. Loss NT-Xent (InfoNCE) con temperatura τ=0.5 y batch de 256 (512 vistas, 1 positivo + 510 negativos por imagen): Adam lr 3e-3 con cosine annealing, 25 épocas, ~3 min CPU, loss 5.36→4.59. Evaluación con el protocolo estándar del paper (eval lineal: regresión logística sobre embeddings congelados): random-init 41.3% vs SimCLR 76.8% (+35.5 pp) vs supervisado end-to-end 76.5% — SimCLR iguala al supervisado con cero etiquetas y −0.3 pp. La calidad de representación crece con el entrenamiento (probe cada 3 épocas: 71.9%→76.8%). kNN sobre embeddings sin entrenar clasificador: SimCLR > random en todos los k (k=10: 73.9% vs 67.1%). t-SNE: SimCLR agrupa por clase (Trouser, Sneaker, Bag forman clusters), random-init queda disperso. Matriz de similitud coseno: la diagonal (pares positivos) domina. Checkpoint determinista que evita re-entrenar. 7 visualizaciones.
# Características principales
$ Self-Supervised Learning con SimCLR (Chen et al. 2020) desde cero en PyTorch: 0 etiquetas usadas en el entrenamiento, solo pares de vistas aumentadas
$ Loss NT-Xent (InfoNCE) con temperatura τ=0.5: 1 par positivo + 510 negativos por imagen en batch de 256 (512 vistas)
$ Encoder CNN de 109,632 params (Conv 32→64→128ch, BN, MaxPool, AdaptiveAvgPool) + proyección MLP 24,768 params con salida L2-normalizada
$ Aumentaciones SimCLR: RandomResizedCrop (scale 0.55–1.0), flip horizontal y color jitter — dos vistas independientes por imagen
$ Eval lineal (protocolo estándar): SimCLR 76.8% iguala al supervisado end-to-end 76.5% y supera al random-init 41.3% en +35.5 pp
$ La representación mejora con el entrenamiento: probe lineal cada 3 épocas de 71.9% a 76.8%
$ kNN sobre embeddings sin entrenar: SimCLR supera a random en todos los k (k=10: 73.9% vs 67.1%)
$ 7 visualizaciones: pares de aumentaciones, loss NT-Xent, evolución de la eval lineal, comparativa de baselines, t-SNE, kNN y matriz de similitud
# Galería
# Tecnologías utilizadas