\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 el mejor equilibrio: suficiente para inducir diversidad entre salidas del generador sin ser tan agresivo como $\lambda_{\mathrm{div}}=1.0$, que podría penalizar en exceso la similitud entre salidas y sacrificar realismo. El riesgo esperado era que un $\lambda_{\mathrm{div}}$ demasiado alto empujara al generador a maximizar la distancia píxel a píxel mediante ruido o distorsiones en lugar de generar dígitos genuinamente distintos --- riesgo que, como se detalla más adelante, efectivamente se materializó, y que además se combinó con una falla mucho más profunda del entrenamiento adversarial de base.} \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{La evidencia más contundente no es solo el colapso de clases sino que las 64 muestras mostradas en \texttt{collapsed\_samples.png} son, en su totalidad, ruido granulado de alta frecuencia sin ninguna forma de dígito reconocible: no hay trazos, curvas ni contornos identificables como escritura a mano en ninguna de ellas. Desde la perspectiva del clasificador, \texttt{collapsed\_class\_distribution.png} muestra que el 100\% de la masa se concentra en un único dígito predicho ("8"), es decir, colapso total de clases. Pero además la impresión de diagnóstico del propio notebook confirma \texttt{mass on [1, 7]=0.000}: el generador ni siquiera colapsó hacia los dígitos 1 y 7 que se pretendía inducir. Aquí no se trata de "una clase repetida con variaciones": es que ninguna clase real está representada, y la aparente uniformidad visual entre muestras es simplemente ruido de textura similar, no repetición de un dígito legítimo.} \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 (1/10) confirma que solo una clase supera el umbral de frecuencia del 1\%: un colapso binario, todo-o-nada, hacia una sola clase predicha. La entropía normalizada (0.010, en una escala de 0 a 1 donde 0 significa que toda la masa recae en una sola clase y 1 significa una distribución perfectamente uniforme entre las 10 clases) cuantifica qué tan extrema es esa concentración: un valor tan cercano a 0 indica una distribución prácticamente degenerada, no solo "dominada" por una clase sino casi puntual en ella. El conteo de modos aporta una lectura binaria y fácil de interpretar (¿cuántas clases "cuentan"?), mientras que la entropía aporta la forma completa de la distribución, incluso entre las clases que sí superan el umbral; juntas confirman un colapso extremo y no solo parcial.} \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{No de forma confiable. Como ninguna de las 64 muestras colapsadas se asemeja a un dígito real, no existe una forma legítima de "8" (o de cualquier otro dígito) contra la cual comparar variedad interna; no se puede evaluar colapso \emph{dentro} de una clase que en realidad nunca se materializó visualmente. Además, la confianza del clasificador (0.981) es engañosa: el clasificador se entrenó únicamente con dígitos reales de MNIST y nunca vio ejemplos de ruido no estructurado, por lo que puede emitir predicciones muy seguras sobre entradas fuera de distribución sin que eso refleje ninguna semántica real. La evidencia adicional necesaria es exactamente la que se usó aquí para diagnosticar el problema real: inspección visual directa de las muestras, y las curvas de pérdida del discriminador durante el preentrenamiento (que muestran $D\approx0.000$ desde la época 5 de 16, evidenciando que el discriminador saturó y el generador dejó de recibir señal de gradiente útil mucho antes de llegar a la fase de colapso dirigido).} \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{$\lambda_{\mathrm{div}}=0.1$, $0.5$ y $1.0$ recuperan 2/10 modos cada uno (frente a 1/10 en "Collapsed start" y en $\lambda_{\mathrm{div}}=0$), pero un número más alto de modos no implica una distribución equilibrada: incluso con 2 modos, la entropía normalizada máxima observada es apenas 0.058 ($\lambda_{\mathrm{div}}=0.1$), muy lejos de 1.0 (uniforme). En \texttt{class\_distributions.png} se ve que la clase dominante ("8") sigue concentrando más del 95\% de la masa en las tres configuraciones con 2 modos, y la segunda "moda" detectada corresponde al dígito "2" --- ni siquiera a las clases objetivo (1 o 7) --- y apenas supera el umbral del 1\%. El conteo de modos por sí solo sugiere una mejora que la entropía matiza fuertemente: la distribución sigue siendo extremadamente desequilibrada en las cuatro configuraciones.} \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 forma monótona al subir $\lambda_{\mathrm{div}}$: 0.981 (colapsado) $\to$ 0.954 ($\lambda=0$) $\to$ 0.933 ($\lambda=0.1$) $\to$ 0.925 ($\lambda=0.5$) $\to$ 0.909 ($\lambda=1.0$). A primera vista esto parece el compromiso esperado "más diversidad, menos confianza/calidad". Sin embargo, dado que ninguna configuración produce imágenes reconocibles como dígitos (Pregunta 2), esta caída no debe interpretarse como una pérdida real de fidelidad visual respecto a un buen generador: es simplemente la reacción del clasificador a texturas de ruido ligeramente distintas entre configuraciones, no un verdadero compromiso diversidad-calidad sobre dígitos válidos.} \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 crecen de forma monótona con $\lambda_{\mathrm{div}}$: diversidad de características 16.117 $\to$ 16.436 $\to$ 16.687 $\to$ 17.057 $\to$ 17.288, y diversidad intra-clase 11.458 $\to$ 11.539 $\to$ 11.854 $\to$ 12.603 $\to$ 13.533 (de "Collapsed start" a $\lambda_{\mathrm{div}}=1.0$). No hay una configuración que mejore una medida sin la otra --- $\lambda_{\mathrm{div}}=1.0$ maximiza ambas simultáneamente --- pero, como se discute en la Pregunta 8, este incremento conjunto corresponde a generar ruido cada vez más variado, no dígitos genuinamente más diversos.} \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{Claramente lo segundo. En \texttt{recovery\_samples.png}, la fila "Collapsed start" y la fila $\lambda_{\mathrm{div}}=0$ muestran una textura de ruido fino de alta frecuencia, prácticamente indistinguible entre columnas (ejemplo 1: cualquiera de las primeras columnas de esas dos filas). En las filas $\lambda_{\mathrm{div}}=0.5$ y $\lambda_{\mathrm{div}}=1.0$ aparecen algunas manchas de menor frecuencia con un lazo curvo central, un poco más "gruesas" y menos granuladas que el ruido base (ejemplo 2: varias columnas de la fila $\lambda_{\mathrm{div}}=1.0$ muestran una forma circular difusa parecida a un garabato), pero ninguna de estas formas constituye un dígito reconocible; se trata de ruido de baja frecuencia en vez de ruido de alta frecuencia, no una diversidad semántica real entre dígitos.} \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 objetivos distintos, ponderados por un $\lambda_{\mathrm{div}}$ diferente en cada configuración. Por construcción, un $\lambda_{\mathrm{div}}$ mayor añade una contribución adicional del término de diversidad, de modo que dos configuraciones con distinto $\lambda_{\mathrm{div}}$ no están minimizando la misma función. Comparar sus valores totales sin separar los componentes adversarial y de diversidad --tal como se ve en \texttt{recovery\_training.png}, donde $\lambda_{\mathrm{div}}=1.0$ muestra sistemáticamente el objetivo total más alto-- puede sugerir falsamente que ese modelo "entrena peor", cuando en realidad solo está pagando un término adicional que los demás no tienen en la misma magnitud.} \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. Las curvas muestran que la pérdida del discriminador se mantiene extremadamente baja (del orden de $10^{-5}$) durante toda la recuperación en las cuatro configuraciones, y que la pérdida del generador tiende a subir con las épocas --comportamiento consistente con un discriminador que domina por completo y un generador que no recibe gradiente útil. Esto concuerda con la evidencia visual (las salidas siguen siendo ruido, Pregunta 8) y con las métricas de cobertura (máximo 2/10 modos, Pregunta 5). Si solo se miraran las curvas de pérdida, sin las imágenes generadas ni las métricas de cobertura, se podría malinterpretar la caída suave y monótona de la pérdida del discriminador como "entrenamiento estable", cuando en realidad refleja que el generador quedó atrapado en un mínimo degenerado desde el preentrenamiento inicial y nunca se recuperó.} \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}}=0.1$ dentro de las cuatro configuraciones evaluadas, con la salvedad explícita de que ninguna resolvió el colapso de modos de forma satisfactoria (ver limitaciones más abajo). Evidencia cuantitativa: (1) $\lambda_{\mathrm{div}}=0.1$ logra la entropía normalizada más alta de las cuatro configuraciones recuperadas (0.058, frente a 0.021 en $\lambda=0$, 0.053 en $\lambda=0.5$ y 0.047 en $\lambda=1.0$); (2) mantiene la segunda confianza de clasificador más alta entre las configuraciones con diversidad activa (0.933, solo por detrás de $\lambda=0$ con 0.954, y por encima de 0.925 y 0.909 de $\lambda=0.5/1.0$). Evidencia visual: (3) en \texttt{recovery\_samples.png}, la fila $\lambda=0.1$ conserva una textura similar a la del punto de partida colapsado, sin las manchas de baja frecuencia más pronunciadas visibles en las filas $\lambda=0.5$ y $\lambda=1.0$; (4) alcanza el mismo conteo de modos (2/10) que $\lambda=0.5$ y $\lambda=1.0$, por lo que no hay evidencia de que forzar más diversidad aporte cobertura adicional de clases, solo más textura de ruido.} \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 a $\lambda_{\mathrm{div}}=0$, que conserva la mayor confianza del clasificador (0.954) y la menor diversidad de características añadida respecto al punto de partida. En este experimento ningún valor de $\lambda_{\mathrm{div}}>0$ logra fidelidad visual aceptable (todas las salidas siguen siendo ruido no estructurado), y el único "beneficio" medible de subirlo es una cobertura de clases apenas mayor (2 vs. 1 modos) que ni siquiera corresponde a los dígitos objetivo (1 y 7). Si la prioridad fuera evitar cualquier degradación adicional mientras se corrige el problema real (la divergencia del entrenamiento adversarial), $\lambda_{\mathrm{div}}=0$ sería el punto de partida más conservador para reentrenar con otros ajustes.} \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 y nunca vio ejemplos fuera de esa distribución; frente a entradas de ruido no estructurado (como las de este experimento) puede emitir predicciones con alta confianza (hasta 0.981) que no reflejan ninguna semántica real de dígito, por lo que las métricas de "modos" y "entropía" derivadas de sus predicciones pueden ser completamente engañosas cuando el generador no produce imágenes válidas, como ocurrió aquí. \emph{Diseño experimental:} las cuatro configuraciones de recuperación parten todas del mismo punto de control ya deteriorado (\texttt{mass on [1,7]=0.000}, discriminador saturado desde la época 5 de 16 del preentrenamiento) y solo se entrenan 5 épocas adicionales; este diseño no permite distinguir si $\lambda_{\mathrm{div}}$ es insuficiente o si el punto de partida está tan degradado que ningún valor de $\lambda_{\mathrm{div}}$ en ese rango podría recuperarlo en tan pocas épocas.} \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 la fase de preentrenamiento con técnicas de estabilización (por ejemplo, suavizado de etiquetas para el discriminador, penalización de gradiente, o una tasa de aprendizaje/capacidad relativa menor para el discriminador) para evitar que este domine desde la época 5, verificando mediante la pérdida del discriminador (que debería mantenerse por encima de un piso razonable, no en 0.000) y mediante inspección visual de \texttt{collapsed\_samples.png} que el punto de control de partida realmente produzca dígitos reconocibles concentrados en las clases 1 y 7 antes de aplicar el experimento de recuperación con $\lambda_{\mathrm{div}}$. Si, una vez logrado un colapso "limpio" y visualmente legible, $\lambda_{\mathrm{div}}=0.1$ sigue mostrando la mejor entropía sin sacrificar tanta confianza como valores mayores, esto confirmaría la conclusión actual; si en cambio valores más altos de $\lambda_{\mathrm{div}}$ logran recuperar clases adicionales reconocibles una vez resuelto el problema de fondo, la conclusión debería revisarse.} \section*{Recomendación final} Valor recomendado: $\lambda_{\mathrm{div}}=0.1$ Conclusión en una oración: \answer{Dentro de las cuatro configuraciones evaluadas, $\lambda_{\mathrm{div}}=0.1$ ofrece el mejor equilibrio relativo entre cobertura de clases (mayor entropía) y confianza del clasificador, pero ninguna resolvió el colapso de modos real, ya que el generador quedó atrapado en un régimen de ruido no estructurado desde el preentrenamiento inicial (discriminador saturado), por lo que se recomienda corregir ese problema de entrenamiento antes de repetir la comparación de $\lambda_{\mathrm{div}}$.} \end{document}