\documentclass[11pt,letterpaper]{article} \usepackage[T1]{fontenc} \usepackage[utf8]{inputenc} \usepackage{lmodern} \usepackage[margin=2.5cm]{geometry} \usepackage{amsmath,amssymb} \usepackage{booktabs} \usepackage{graphicx} \usepackage{xcolor} \usepackage{enumitem} \usepackage{float} \usepackage[hidelinks]{hyperref} \usepackage[strings]{underscore} \graphicspath{{outputs/gan_mode_collapse/}} \setlength{\parindent}{0pt} \setlength{\parskip}{0.6em} \setlist[enumerate]{leftmargin=*,itemsep=0.8em} \newcommand{\answerbox}[1]{% \par\noindent\textcolor{gray}{\rule{\linewidth}{0.4pt}}% \vspace{#1}\par\noindent\textcolor{gray}{\rule{\linewidth}{0.4pt}}% } \newcommand{\answer}[1]{\par\noindent\textbf{Respuesta:} #1} \newcommand{\resultfigure}[2]{% \begin{figure}[H] \centering \IfFileExists{outputs/gan_mode_collapse/#1}{% \includegraphics[width=0.96\linewidth,height=0.55\textheight,keepaspectratio]{#1}% }{% \fbox{\parbox[c][4cm][c]{0.88\linewidth}{\centering Ejecute el notebook para generar \texttt{\detokenize{#1}}.}}% } \caption{#2} \end{figure} } \title{Informe de laboratorio\\Recuperación del colapso de modos en una GAN} \author{Estudiante: Alejandro Lembke Barrientos} \date{Carné: 12002840\hfill Fecha: 12 de septiembre de 2026} \begin{document} \maketitle \section{Propósito e hipótesis} Todos los experimentos de recuperación parten del mismo punto de control con colapso de modos. La variable independiente es el peso de la pérdida de diversidad $\lambda_{\mathrm{div}}\in\{0,0.1,0.5,1.0\}$. La función objetivo del generador es \[ \mathcal{L}_G =\mathcal{L}_{\mathrm{adv}} +\lambda_{\mathrm{div}}\mathcal{L}_{\mathrm{div}}, \qquad \mathcal{L}_{\mathrm{div}} =-\mathbb{E}\!\left[ \frac{\lVert G(z_1)-G(z_2)\rVert_1} {\lVert z_1-z_2\rVert_1+\epsilon} \right]. \] \begin{enumerate} \item Antes de observar los resultados, ¿qué valor de $\lambda_{\mathrm{div}}$ esperaba que funcionara mejor? Explique el beneficio esperado y un posible riesgo. \end{enumerate} \answer{Antes de examinar los resultados se esperaría que $\lambda_{\mathrm{div}}=0.5$ ofreciera un buen equilibrio: suficiente para incentivar diversidad entre las muestras del generador sin ser tan agresivo como $\lambda_{\mathrm{div}}=1.0$, que podría distorsionar excesivamente las imágenes en su intento de maximizar la distancia entre pares generados. El riesgo esperado era que un $\lambda_{\mathrm{div}}$ demasiado alto sacrificara realismo visual a cambio de diversidad artificial (por ejemplo, añadiendo ruido o trazos distorsionados en lugar de dígitos genuinamente distintos).} \section{Diagnóstico del punto de control colapsado} \resultfigure{collapsed_samples.png}{Muestras del punto de control común con colapso de modos.} \resultfigure{collapsed_class_distribution.png}{Distribución de dígitos predicha por el clasificador en el punto colapsado.} \begin{enumerate}[resume] \item ¿Qué evidencia visual sugiere colapso de modos? Distinga entre clases ausentes y apariencias repetidas dentro de una clase representada. \end{enumerate} \answer{\texttt{collapsed\_samples.png} muestra 64 imágenes, todas dígitos "1" o "7" perfectamente legibles y con variedad de trazo (rectos, inclinados, con o sin serifa horizontal); no aparece ningún otro dígito. \texttt{collapsed\_class\_distribution.png} confirma cuantitativamente que solo esas dos clases superan el umbral del 1\% (\textasciitilde49\% y \textasciitilde48.5\% de la masa respectivamente), con el resto prácticamente en cero. La evidencia distingue ambos fenómenos con claridad: hay 8 clases completamente ausentes (0, 2, 3, 4, 5, 6, 8, 9 por debajo del umbral), mientras que dentro de las dos clases representadas sí se observa variedad de apariencia (distintos estilos de trazo para el "1" y para el "7"); es decir, el colapso es entre clases, no una repetición monótona de una única imagen.} \begin{enumerate}[resume] \item Utilice el número de modos y la entropía normalizada para describir el colapso entre clases. ¿Qué información aporta cada medida? \end{enumerate} \answer{El número de modos (2/10) confirma que exactamente dos clases superan el umbral del 1\%, coincidiendo con los dígitos objetivo del colapso (1 y 7). La entropía normalizada (0.367) cuantifica además qué tan pareja es la masa entre esas clases activas: un valor tan por debajo de 1.0 refleja que, aunque hay 2 modos, la distribución global sigue muy alejada de la uniformidad sobre las 10 clases, ya que la masa está casi enteramente concentrada en ese subconjunto (aproximadamente 50/50 entre 1 y 7), dejando 8 clases sin representación. El conteo de modos aporta una lectura discreta de cobertura; la entropía aporta la forma continua de toda la distribución, incluyendo cuán desbalanceada está incluso entre las clases activas.} \begin{enumerate}[resume] \item ¿Las muestras mostradas permiten identificar confiablemente el colapso dentro de cada clase? Explique qué evidencia adicional se necesita. \end{enumerate} \answer{Sí, de forma razonablemente confiable: las imágenes en \texttt{collapsed\_samples.png} son dígitos "1" y "7" claramente legibles, con variación visible de estilo (inclinación, presencia de barra horizontal en el "7", grosor del trazo), por lo que se puede juzgar directamente si hay diversidad dentro de cada clase representada. Como evidencia adicional, la diversidad intra-clase cuantitativa del punto colapsado (25.954) es considerablemente menor que la alcanzada tras la recuperación (\textasciitilde37--38), lo que corrobora numéricamente que la variedad dentro de esas dos clases también era más limitada en el punto de partida, y no es solo una impresión visual.} \section{Resultados de recuperación} \IfFileExists{outputs/gan_mode_collapse/summary_table.tex}{% \begin{table}[H] \centering \small \resizebox{\linewidth}{!}{\input{outputs/gan_mode_collapse/summary_table.tex}} \caption{Resultados cuantitativos generados por el notebook.} \end{table} }{% \begin{center} \fbox{\parbox[c][2.2cm][c]{0.88\linewidth}{\centering Ejecute el notebook para generar \texttt{outputs/gan\_mode\_collapse/summary\_table.tex}.}} \end{center} } \resultfigure{recovery_samples.png}{Muestras del punto colapsado y de todas las configuraciones de recuperación.} \resultfigure{class_distributions.png}{Distribuciones de clases predichas; la línea discontinua indica el umbral de modo.} \resultfigure{recovery_metrics.png}{Comparación cuantitativa de las configuraciones de recuperación.} \begin{enumerate}[resume] \item ¿Qué configuraciones recuperan el mayor número de clases? ¿Un número alto de modos implica necesariamente una distribución equilibrada? Utilice la entropía como evidencia. \end{enumerate} \answer{Las cuatro configuraciones de recuperación ($\lambda_{\mathrm{div}}=0$, $0.1$, $0.5$ y $1.0$) recuperan la totalidad de las 10 clases (10/10 modos), frente a 2/10 en el punto de partida. Un número alto de modos no garantiza automáticamente una distribución perfectamente equilibrada, pero en este caso la entropía normalizada confirma que sí se logró una cobertura casi uniforme: entre 0.984 y 0.988 en las cuatro configuraciones, muy cerca del máximo teórico de 1.0, frente a 0.367 en el punto colapsado. \texttt{class\_distributions.png} corrobora visualmente que las cuatro configuraciones producen barras de altura similar en las 10 clases (con una ligera sobre-representación del dígito "9" y sub-representación del "4" en las cuatro), consistente con una recuperación genuina y no solo nominal.} \begin{enumerate}[resume] \item Compare la confianza del clasificador. Identifique cualquier compromiso aparente entre diversidad y calidad. \end{enumerate} \answer{La confianza del clasificador baja de 0.971 (colapsado) a un rango estrecho de 0.909--0.912 en las cuatro configuraciones recuperadas, sin una tendencia clara respecto a $\lambda_{\mathrm{div}}$ ($\lambda=0.1$ tiene la confianza más baja, 0.909, mientras que $\lambda=0$ y $\lambda=1.0$ empatan en la más alta, 0.912). Esta pequeña caída es esperable y saludable: el punto colapsado concentraba casi toda la probabilidad en solo 2 clases con trazos muy estereotipados (más fáciles de clasificar con alta confianza), mientras que al cubrir las 10 clases el clasificador enfrenta dígitos naturalmente más ambiguos entre sí (por ejemplo 4 frente a 9, o 3 frente a 8). No se observa aquí un compromiso fuerte entre diversidad y calidad: las cuatro configuraciones logran cobertura completa sin una penalización de confianza mayor al \textasciitilde6\% respecto al punto colapsado.} \begin{enumerate}[resume] \item Compare la diversidad de características con la diversidad dentro de cada clase. ¿Qué configuraciones mejoran ambas medidas y cuáles mejoran principalmente una? \end{enumerate} \answer{Ambas métricas suben de forma marcada respecto al punto colapsado (diversidad de características: 32.059 $\to$ \textasciitilde50.3--51.0; diversidad intra-clase: 25.954 $\to$ \textasciitilde37.3--38.1), pero entre las cuatro configuraciones de recuperación las diferencias son mínimas y no siguen un patrón monótono claro: $\lambda=0.5$ tiene la diversidad de características más baja (50.256) y la intra-clase más baja (37.341) de las cuatro, mientras que $\lambda=1.0$ tiene ambas más altas (50.829 y 38.141 respectivamente). No hay una configuración que mejore claramente una medida sacrificando la otra; las cuatro se comportan de forma muy similar, lo que sugiere que, una vez corregido el entrenamiento adversarial, la recuperación de diversidad en este escenario depende más de reanudar el entrenamiento sobre datos completos que del peso específico de la pérdida de diversidad explícita.} \begin{enumerate}[resume] \item Examine las muestras. ¿La mayor diversidad representa variaciones significativas o solamente ruido, distorsiones o dígitos ambiguos? Describa dos ejemplos concretos. \end{enumerate} \answer{En esta corrida la mayor diversidad numérica sí corresponde a variaciones significativas y no a ruido: en \texttt{recovery\_samples.png}, las cuatro filas de recuperación muestran dígitos completos y reconocibles de múltiples clases (ejemplo 1: la tercera columna muestra un "9" con trazo cursivo bien formado en las cuatro configuraciones; ejemplo 2: la octava columna muestra una forma con un trazo diagonal marcado parecido a un rayo, consistente entre las cuatro configuraciones). Cabe notar que, como la evaluación usa la misma semilla de muestreo para las cuatro configuraciones, las imágenes de una misma columna son decodificaciones del mismo vector latente por cada generador, y por eso lucen casi idénticas entre filas de recuperación --lo cual es coherente con que las métricas cuantitativas también sean casi idénticas entre configuraciones-- y ninguna muestra manchas de ruido ni dígitos ambiguos.} \section{Comportamiento durante el entrenamiento} \resultfigure{recovery_training.png}{Pérdidas del generador y discriminador durante la recuperación.} \begin{enumerate}[resume] \item ¿Por qué las pérdidas totales del generador para distintos valores de $\lambda_{\mathrm{div}}$ no deben compararse como si midieran exactamente la misma función objetivo? \end{enumerate} \answer{Porque $\mathcal{L}_G=\mathcal{L}_{\mathrm{adv}}+\lambda_{\mathrm{div}} \mathcal{L}_{\mathrm{div}}$ combina dos términos con escalas y pesos distintos según la configuración. En \texttt{recovery\_training.png} se observa que el objetivo total del generador es sistemáticamente más bajo cuanto mayor es $\lambda_{\mathrm{div}}$ (por ejemplo, $\lambda=1.0$ termina en \textasciitilde1.07 frente a \textasciitilde1.35 en $\lambda=0$), pero esto no significa que ese modelo entrene "mejor": $\mathcal{L}_{\mathrm{div}}$ está definida como una cantidad negativa (más negativa cuanto más diversas son las salidas), así que un $\lambda_{\mathrm{div}}$ mayor simplemente resta más de ese término negativo al total, sin que ello implique una pérdida adversarial menor. Comparar el total directamente confundiría el efecto de la ponderación con una diferencia real de desempeño adversarial.} \begin{enumerate}[resume] \item ¿Las curvas de pérdida demuestran por sí solas que se resolvió el colapso de modos? Justifique utilizando los demás resultados. \end{enumerate} \answer{No por sí solas. \texttt{recovery\_training.png} muestra que la pérdida del discriminador sube de forma saludable desde \textasciitilde0.57--0.61 hasta \textasciitilde0.90--0.98 a lo largo de las 5 épocas de recuperación en las cuatro configuraciones, sin colapsar a 0 ni dispararse --un patrón consistente con un equilibrio adversarial funcional. Sin embargo, esta curva por sí sola solo indica que el entrenamiento es estable; la confirmación de que el colapso de modos realmente se resolvió requiere las métricas de cobertura (10/10 modos, entropía \textasciitilde0.98--0.99, Pregunta 5) y la inspección visual de \texttt{recovery\_samples.png}, que muestran dígitos reconocibles de las 10 clases.} \section{Decisión y limitaciones} \begin{enumerate}[resume] \item Seleccione un valor de $\lambda_{\mathrm{div}}$. Defienda la elección con al menos dos resultados cuantitativos y dos observaciones visuales. \end{enumerate} \answer{Se recomienda $\lambda_{\mathrm{div}}=1.0$. Evidencia cuantitativa: (1) alcanza la entropía normalizada más alta de las cuatro configuraciones (0.988, frente a 0.984 en $\lambda=0$); (2) alcanza la diversidad intra-clase más alta (38.141) y empata en la confianza de clasificador más alta (0.912) junto con $\lambda=0$, sin ningún costo aparente respecto a las demás. Evidencia visual: (3) en \texttt{recovery\_samples.png}, la fila $\lambda=1.0$ muestra las mismas 16 imágenes nítidas y reconocibles que el resto de configuraciones, sin manchas de ruido ni distorsiones adicionales pese a tener el peso de diversidad más alto evaluado; (4) en \texttt{class\_distributions.png}, su distribución de clases es tan pareja como la de las demás configuraciones (mismo patrón de ligera sobre-representación de "9" y sub-representación de "4"). Dado que $\lambda_{\mathrm{div}}=1.0$ no muestra ninguna penalización visible de calidad frente a $\lambda_{\mathrm{div}}=0$, y sí una ligera ventaja consistente en las métricas de diversidad, es la opción mejor respaldada entre las evaluadas --con la salvedad de que las diferencias entre las cuatro configuraciones son pequeñas y podrían no ser robustas frente a otra semilla aleatoria, ya que cada una se evaluó una sola vez (Pregunta 13).} \begin{enumerate}[resume] \item Si la fidelidad de las imágenes fuera más importante que la cobertura de clases, ¿cambiaría su elección? Justifique. \end{enumerate} \answer{Sí cambiaría, aunque por poco: se elegiría $\lambda_{\mathrm{div}}=0$, que logra la confianza de clasificador empatada más alta (0.912, igual que $\lambda=1.0$) sin necesidad de introducir el término adicional de diversidad ni su costo de ajuste. Como en este experimento fidelidad y diversidad no muestran un compromiso fuerte entre sí (las cuatro configuraciones logran calidad visual y cobertura muy similares), priorizar fidelidad favorecería la configuración más simple ($\lambda_{\mathrm{div}}=0$) por parsimonia, ya que no hay evidencia de que agregar la pérdida de diversidad aporte una mejora de fidelidad adicional en este caso.} \begin{enumerate}[resume] \item Indique una limitación de utilizar un clasificador de MNIST para medir la cobertura de la GAN y una limitación del diseño experimental. \end{enumerate} \answer{\emph{Clasificador:} se entrenó únicamente con dígitos reales de MNIST, por lo que su confianza y sus predicciones de clase pueden no ser completamente fiables frente a imágenes fuera de esa distribución; incluso en esta corrida corregida, la confianza no debe interpretarse como una medida absoluta de realismo, solo como un proxy relativo entre configuraciones. \emph{Diseño experimental:} cada configuración de $\lambda_{\mathrm{div}}$ se evaluó con una sola semilla y un solo conjunto de 5 épocas de recuperación, por lo que las pequeñas diferencias entre configuraciones (por ejemplo, 0.984 frente a 0.988 de entropía) podrían no ser estadísticamente robustas frente a la variación aleatoria de la inicialización o el orden de los datos. \emph{Nota de depuración:} durante una primera ejecución de este notebook se detectó que el punto de control "colapsado" y las cuatro recuperaciones producían únicamente ruido no estructurado, sin relación aparente con dígitos reales, independientemente de $\lambda_{\mathrm{div}}$. La causa era un error en la celda \texttt{train\_gan\_epoch}: durante el paso de actualización del generador, el discriminador se ponía en \texttt{discriminator.eval()} antes de calcular la pérdida adversarial. Como el discriminador incluye una capa \texttt{nn.BatchNorm2d}, el modo \texttt{eval()} lo hace usar estadísticas acumuladas (running mean/var) en lugar de las del lote actual, desincronizando el discriminador que evalúa al generador del discriminador que realmente se entrena, e impidiendo que el generador recibiera una señal de gradiente útil (el discriminador saturaba en la época 5 de 16 del preentrenamiento). El arreglo --cambiar esa línea a \texttt{discriminator.train()}-- resolvió el problema por completo: el punto de control colapsa correctamente hacia los dígitos 1 y 7 (97.2\% de la masa, Pregunta 2) y las cuatro recuperaciones alcanzan cobertura completa de las 10 clases. Todos los resultados de este informe corresponden a la corrida ya corregida.} \begin{enumerate}[resume] \item Proponga un experimento posterior que fortalezca o cuestione su conclusión. Indique la variable que modificaría y la evidencia que recopilaría. \end{enumerate} \answer{Se propone repetir las cuatro configuraciones de recuperación con al menos 3 semillas aleatorias distintas cada una, midiendo la media y desviación estándar de entropía, confianza y diversidad intra-clase por configuración. Dado que en esta corrida las diferencias entre $\lambda_{\mathrm{div}}=0$, $0.1$, $0.5$ y $1.0$ son pequeñas (por ejemplo, 0.984 frente a 0.988 de entropía), este experimento permitiría confirmar si $\lambda_{\mathrm{div}}=1.0$ realmente aventaja de forma consistente a $\lambda_{\mathrm{div}}=0$, o si la diferencia observada aquí es ruido de una sola corrida; si las diferencias desaparecen bajo múltiples semillas, la recomendación debería simplificarse a $\lambda_{\mathrm{div}}=0$ por parsimonia.} \section*{Recomendación final} Valor recomendado: $\lambda_{\mathrm{div}}=1.0$ Conclusión en una oración: \answer{Tras corregir un error de \texttt{BatchNorm}/modo \texttt{eval()} en el paso del generador, las cuatro configuraciones de recuperación restauran por completo las 10 clases de dígitos (entropía \textasciitilde0.98--0.99 frente a 0.367 en el punto colapsado), y $\lambda_{\mathrm{div}}=1.0$ se recomienda por lograr la mayor entropía y diversidad intra-clase sin sacrificar confianza de clasificador frente a las demás configuraciones evaluadas.} \end{document}