Adding Lab 4.
This commit is contained in:
Binary file not shown.
@@ -0,0 +1,336 @@
|
||||
\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}
|
||||
BIN
Binary file not shown.
Executable
BIN
Binary file not shown.
Executable
+192
@@ -0,0 +1,192 @@
|
||||
\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{\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: \rule{8cm}{0.4pt}}
|
||||
\date{Carné: \rule{4cm}{0.4pt}\hfill Fecha: \rule{3cm}{0.4pt}}
|
||||
|
||||
\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}
|
||||
\answerbox{2.2cm}
|
||||
|
||||
\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}
|
||||
\answerbox{2.5cm}
|
||||
|
||||
\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}
|
||||
\answerbox{2.5cm}
|
||||
|
||||
\begin{enumerate}[resume]
|
||||
\item ¿Las muestras mostradas permiten identificar confiablemente el colapso
|
||||
dentro de cada clase? Explique qué evidencia adicional se necesita.
|
||||
\end{enumerate}
|
||||
\answerbox{2.2cm}
|
||||
|
||||
\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}
|
||||
\answerbox{2.5cm}
|
||||
|
||||
\begin{enumerate}[resume]
|
||||
\item Compare la confianza del clasificador. Identifique cualquier compromiso
|
||||
aparente entre diversidad y calidad.
|
||||
\end{enumerate}
|
||||
\answerbox{2.5cm}
|
||||
|
||||
\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}
|
||||
\answerbox{2.8cm}
|
||||
|
||||
\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}
|
||||
\answerbox{3.0cm}
|
||||
|
||||
\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}
|
||||
\answerbox{2.5cm}
|
||||
|
||||
\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}
|
||||
\answerbox{2.5cm}
|
||||
|
||||
\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}
|
||||
\answerbox{3.4cm}
|
||||
|
||||
\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}
|
||||
\answerbox{2.4cm}
|
||||
|
||||
\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}
|
||||
\answerbox{2.8cm}
|
||||
|
||||
\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}
|
||||
\answerbox{2.8cm}
|
||||
|
||||
\section*{Recomendación final}
|
||||
|
||||
Valor recomendado: $\lambda_{\mathrm{div}}=\rule{2cm}{0.4pt}$
|
||||
|
||||
Conclusión en una oración:
|
||||
\answerbox{1.8cm}
|
||||
|
||||
\end{document}
|
||||
Executable
+1355
File diff suppressed because one or more lines are too long
Binary file not shown.
|
After Width: | Height: | Size: 63 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 44 KiB |
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
After Width: | Height: | Size: 177 KiB |
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"seed": 42,
|
||||
"latent_dim": 32,
|
||||
"diversity_weights": [
|
||||
0.0,
|
||||
0.1,
|
||||
0.5,
|
||||
1.0
|
||||
],
|
||||
"batch_size": 256,
|
||||
"learning_rate": 0.0002,
|
||||
"classifier_epochs": 10,
|
||||
"pretrain_epochs": 16,
|
||||
"collapse_epochs": 8,
|
||||
"recovery_epochs": 5,
|
||||
"collapse_digits": [
|
||||
1,
|
||||
7
|
||||
],
|
||||
"mode_frequency_threshold": 0.01,
|
||||
"evaluation_samples": 2500,
|
||||
"device": "cpu"
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,6 @@
|
||||
epoch,generator,adversarial,diversity,discriminator
|
||||
1,3.902446909713745,3.9426742090861002,-0.4022729824066162,4.2679691879311577e-05
|
||||
2,4.145200756327311,4.184955227152506,-0.397544775835673,1.7615805166618278e-05
|
||||
3,4.139080067443848,4.17894912923177,-0.3986907406489054,1.4372343609769207e-05
|
||||
4,4.3337121688842775,4.373950477091471,-0.40238287711143494,1.139676257832131e-05
|
||||
5,4.437606961568196,4.4788080523173015,-0.4120109644730886,9.15210223950756e-06
|
||||
|
@@ -0,0 +1,6 @@
|
||||
epoch,generator,adversarial,diversity,discriminator
|
||||
1,3.9779018229166665,4.181639106241862,-0.4074745655536652,3.138090945431031e-05
|
||||
2,4.384994900258382,4.590004500834147,-0.410019177420934,1.108799576322781e-05
|
||||
3,4.442870346577962,4.649945588429769,-0.41415047810872396,8.148233926234146e-06
|
||||
4,4.501311336263021,4.709003438568115,-0.41538419888814293,6.7271921303472485e-06
|
||||
5,4.567720675404867,4.779216910552979,-0.42299244691530863,5.819472274743021e-06
|
||||
|
@@ -0,0 +1,6 @@
|
||||
epoch,generator,adversarial,diversity,discriminator
|
||||
1,3.792231286239624,3.792231286239624,-0.39822079056104026,5.601679666045432e-05
|
||||
2,3.7167933046976724,3.7167933046976724,-0.38705200486183167,2.9127169354857565e-05
|
||||
3,3.774656072998047,3.774656072998047,-0.3904325690587362,2.4593643052503468e-05
|
||||
4,4.0028360649108885,4.0028360649108885,-0.39604260533650715,1.812106814662305e-05
|
||||
5,4.161207312520345,4.161207312520345,-0.404033615175883,1.4115302633338919e-05
|
||||
|
@@ -0,0 +1,6 @@
|
||||
epoch,generator,adversarial,diversity,discriminator
|
||||
1,4.073459280141194,4.48742034072876,-0.4139610550562541,2.2277594858314842e-05
|
||||
2,4.556306339263916,4.980417476145426,-0.4241111308892568,6.92474058305379e-06
|
||||
3,4.663601414998372,5.0912053082784015,-0.42760391337076825,4.824752171892518e-06
|
||||
4,4.601830291493734,5.031373355865479,-0.42954305254618325,4.1199866602255495e-06
|
||||
5,4.665722238413493,5.104604846191406,-0.4388826152801514,3.713102867671599e-06
|
||||
|
Binary file not shown.
|
After Width: | Height: | Size: 105 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 214 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 160 KiB |
@@ -0,0 +1,6 @@
|
||||
Configuration,Lambda diversity,mode_count,normalized_entropy,classifier_confidence,feature_diversity,within_class_diversity,Recovery seconds
|
||||
Collapsed start,,1,0.010357953608036041,0.9805793166160583,16.11749267578125,11.458220958709717,
|
||||
lambda=0,0.0,1,0.021068770438432693,0.9541524648666382,16.436365127563477,11.539350509643555,775.4761435985565
|
||||
lambda=0.1,0.1,2,0.05791272968053818,0.9331758618354797,16.686689376831055,11.85418701171875,772.15576171875
|
||||
lambda=0.5,0.5,2,0.052982352674007416,0.9251078963279724,17.057252883911133,12.603004455566406,753.808944940567
|
||||
lambda=1,1.0,2,0.04722726345062256,0.9086208939552307,17.2882137298584,13.533077716827393,775.8287467956543
|
||||
|
@@ -0,0 +1,11 @@
|
||||
\begin{tabular}{lrrrrrr}
|
||||
\toprule
|
||||
Configuration & $\lambda_{div}$ & Modes & Entropy & Confidence & Feature diversity & Within-class diversity \\
|
||||
\midrule
|
||||
Collapsed start & NaN & 1 & 0.010 & 0.981 & 16.117 & 11.458 \\
|
||||
lambda=0 & 0.000 & 1 & 0.021 & 0.954 & 16.436 & 11.539 \\
|
||||
lambda=0.1 & 0.100 & 2 & 0.058 & 0.933 & 16.687 & 11.854 \\
|
||||
lambda=0.5 & 0.500 & 2 & 0.053 & 0.925 & 17.057 & 12.603 \\
|
||||
lambda=1 & 1.000 & 2 & 0.047 & 0.909 & 17.288 & 13.533 \\
|
||||
\bottomrule
|
||||
\end{tabular}
|
||||
@@ -12,3 +12,4 @@ Repositorio con los laboratorios de la asignatura.
|
||||
| 1 | MLPs, verosimilitud, entrenamiento y evaluación | [Lab 1 - MLP](Lab1/lab1_mlp.ipynb) | — |
|
||||
| 2 | Clasificación tabular con MLP (desbalance de clases) | [Lab 2 - Clasificación](Lab2/notebooks/laboratorio_estudiante.ipynb) | [Reporte PDF](Lab2/reporte_laboratorio.pdf) |
|
||||
| 3 | Selección de la dimensión latente de un autoencoder variacional (VAE) | [Lab 3 - VAE](Lab3/lab_003.ipynb) | [Reporte PDF](Lab3/Informe_Laboratorio_VAE.pdf) |
|
||||
| 4 | Recuperación del colapso de modos en una GAN | [Lab 4 - GAN](Lab4/lab_new.ipynb) | [Reporte PDF](Lab4/Informe_Laboratorio_GAN.pdf) |
|
||||
|
||||
Reference in New Issue
Block a user