366 lines
19 KiB
TeX
366 lines
19 KiB
TeX
\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}
|