My summaries and notes from some research papers I found interesting.
This paper introduces Generative Adversarial Networks (GANs), a new way to generate samples from a learned distribution. Fundamentally it learns a mapping function from a standard Gaussian distribution to the real data distribution.
The main idea is to set up a game between two neural networks. The first is a "Generator" that takes random noise as input and tries to produce realistic-looking data, like an art forger. The second is a "Discriminator" that's trained to tell the difference between real data from the training set and the fake data from the Generator, like an art critic. They are trained at the same time: the Generator gets better by fooling the Discriminator, and the Discriminator gets better by catching the Generator's fakes. The main contribution is this adversarial framework itself. It's a clever idea because it turns the hard problem of generative modeling into a more straightforward supervised learning problem that can be trained with standard backpropagation, getting rid of the slow and complex methods like Markov chains that older models needed.
The competition between the discriminator () and the generator () is formalized by a value function that D tries to maximize and G tries to minimize. The math is well covered in the paper.
The really neat idea is how this game provides a mechanism for transforming a simple noise distribution into the complex data distribution.
Unfortunately, training it is very unstable. You have to carefully balance the Generator and Discriminator. If the Discriminator gets too good too quickly, the Generator gets no useful feedback (vanishing gradients) and stops learning. This instability often leads to "mode collapse," where the Generator finds a few easy-to-make samples that can fool the Discriminator and just produces those over and over, failing to learn the full variety of the training data. Another significant issue is that the model doesn't give you a way to calculate the probability of a given sample, which makes it hard to quantitatively evaluate how good the model actually is.
This paper introduces DCGAN, a set of architectural guidelines to make deep convolutional GANs stable to train, which was a major problem at the time. Their approach gets rid of pooling layers, using strided convolutions in the discriminator and fractional-strided convolutions (or "deconvolutions") in the generator to handle downsampling and upsampling. They also remove fully connected layers and add Batch Normalization to most layers, which they found was critical for training deep models. The main contribution is providing a reliable blueprint for building GANs that can generate high-resolution, realistic images.
Beyond just generation, they demonstrate that the network learns meaningful, hierarchical representations from unlabeled data. They prove this by using the discriminator's learned features to achieve competitive results on classification benchmarks like CIFAR-10 and SVHN, and by showing that vector arithmetic on the generator's input noise vector (e.g., 'smiling woman' - 'neutral woman' + 'neutral man' results in a 'smiling man' image) produces semantically meaningful changes in the output.
This doesn't completely solve training instability. The primary failure mode is a partial or full "mode collapse," where the generator learns to produce a very limited variety of samples, essentially getting stuck in a rut and ignoring the full diversity of the training data. This can happen as training progresses, with the model suddenly collapsing to producing nonsensical or repetitive images.
The generated images themselves, while impressive for their time, still show artifacts and signs of under-fitting, such as repeating noise textures across different samples. Furthermore, while the vector arithmetic on the latent space is a powerful demonstration, the authors note it was unstable when using single examples and required averaging the latent vectors from multiple samples to work reliably, indicating the learned manifold isn't perfectly smooth or linear.
This paper tackles the problem that GANs are notoriously unstable and difficult to train. They introduce a collection of five practical techniques to make the training process more stable and prevent common failure modes. The key ideas are feature matching, which changes the generator's objective to match the statistics of real data inside the discriminator's network instead of just trying to fool its final output, and minibatch discrimination, which allows the discriminator to look at a whole batch of samples at once to prevent the generator from collapsing and producing the same image over and over. They combine these with smaller tweaks like historical averaging, one-sided label smoothing, and a new type of batch normalization (VBN).
This works, but it's a bag of tricks rather than a single, theoretically-grounded solution. The authors admit their contributions are practical and lack a rigorous theoretical understanding of why this combination of heuristics leads to convergence. It's engineering, not a fundamental insight into the underlying game theory.
This paper presents InfoGAN, a clever extension to Generative Adversarial Networks (GANs) designed to learn interpretable features from data without any labels. The core problem with a standard GAN is that its latent space is a tangled mess; the generator can use the input noise vector in any way it wants, so individual dimensions of rarely correspond to meaningful features. InfoGAN's main approach is to fix this by enforcing a clear structure. It splits the input to the generator into two parts: the standard incompressible noise , and a new vector of "latent codes" . The goal is to force to represent the salient, semantic features of the data (like digit type, rotation, etc.). To do this, they add a regularization term to the GAN objective that maximizes the mutual information between the latent codes and the generated images .
Mutual information, , measures the reduction in uncertainty about a variable after observing . It's defined as , where is the entropy (uncertainty) of . Maximizing means that if you see a generated image, you should have very little uncertainty about the code that produced it. The problem is that calculating the conditional entropy requires knowing the posterior probability , which is intractable. To get around this, they use a technique called Variational Information Maximization. They introduce an auxiliary network, , to approximate the true posterior. This allows them to derive a tractable lower bound on the mutual information: . Maximizing this lower bound pushes the generator to produce images where the code is easily recoverable by the network. In practice, is implemented efficiently by sharing all the convolutional layers with the discriminator , adding only a final, separate fully-connected layer that outputs the predicted parameters for the distribution of (e.g., softmax probabilities for a categorical code, or mean and standard deviation for a continuous Gaussian code).
This produces a simple, elegant, and fully unsupervised method for learning disentangled representations. By just maximizing this information-theoretic term, InfoGAN successfully discovers semantic features like digit identity versus writing style on MNIST, and pose, lighting, and even the presence of glasses on more complex face datasets, all without a single label. This was a significant step beyond previous methods that required some form of weak supervision.
However, the approach has significant problems from an engineering perspective. First, its reliability is questionable. The paper admits that for the 3D faces and chairs datasets, they presented the best results from 5 random runs, which implies that in a typical run, the model may fail to disentangle the desired factors or may focus on irrelevant features. This makes the process feel more like a lucky discovery than a robust engineering tool. Second, the model's success is demonstrated on datasets with a single, relatively centered object. It's not clear how the concept of a few latent codes controlling global semantics would scale to complex, multi-object scenes where "disentanglement" is a much more ambiguous and difficult problem. Finally, like all GANs, it can be unstable to train, and the addition of the hyperparameter to balance the information loss adds another tuning knob that can be sensitive, especially when mixing continuous and discrete codes.
Coupled Generative Adversarial Networks (CoGANs) generate corresponding image pairs from two different domains, like color and depth images, without ever seeing paired examples during training. The main approach is to use two separate GANs, one for each domain, but the two are "coupled" by sharing weights. The first few layers of the two generator networks share the same weights, and the last few layers of the discriminator networks also share weights. The idea is that the shared generator layers learn a common high-level representation (e.g., "a face looking left") from a shared random input vector, while the later, unshared layers learn to render that concept into a specific domain (e.g., a color photo or a depth map). They demonstrate that this simple architectural constraint is enough to force the model to learn the joint distribution from two separate, unpaired datasets. This is a big deal because collecting paired data is often expensive or impossible.
This paper introduces a new way to train GANs, called progressive growing. Instead of training a massive network to generate 1024 × 1024 images from scratch, they begin with tiny 4 × 4 images. Once the network gets good at that, they add new layers to both the generator and discriminator to double the resolution to 8 × 8, smoothly fading in the new layers to not disrupt the already learned features. They repeat this process - stabilize, add layers, fade in - until they reach the final high resolution. By building in stages, from coarse structure to fine details, they can generate good high-resolution then-SOTA faces.
Beyond the core progressive growing method, the authors introduce a few other key tricks that are crucial for stability. To increase variation in the generated images, they add a "minibatch standard deviation" layer, which calculates the standard deviation of features across a batch and feeds it as an extra channel to the discriminator. This gives the discriminator a clue about the variety of the whole batch. They also use two novel normalization techniques to stop the generator and discriminator from getting into an escalating fight: an "equalized learning rate" that dynamically scales weights to ensure all parts of the network learn at the same speed, and a "pixelwise feature vector normalization" in the generator to prevent signal magnitudes from exploding. The most significant problem is that these components are not optional. The progressive growing idea alone is not enough; it fails badly with the small minibatches required for high-resolution training. You need the whole package of tricks for the method to work, making it a bit of a complex, multi-part solution rather than a single elegant fix.
The smooth fade-in of new layers is critical to avoid destabilizing the network. When transitioning from one resolution to the next (e.g., 16 × 16 to 32 × 32), the output is a convex combination of the old, upscaled layer and the new layer, controlled by a parameter that increases from 0 to 1. The generator's output image is formed as:
where is the feature map from the final layer of the previous resolution. A similar blending is applied to the real images fed to the discriminator. To prevent signal escalation in the generator, they apply pixelwise normalization after each convolutional layer. For a feature vector at pixel with channels, the normalized feature vector is calculated as:
where is a small constant to ensure numerical stability. This forces the feature vectors at each pixel to have unit length.
The paper introduces StyleGAN, a new generator architecture that borrows ideas from style transfer to gain more control over the image synthesis process. Instead of feeding a latent code directly into the generator network, they first pass it through a mapping network to produce an intermediate latent code . This code is then used to control the "style" (mean and variance) of the feature maps at each resolution level of the generator using a mechanism called Adaptive Instance Normalization (AdaIN). The generator starts from a learned constant input, not the latent code, and also receives explicit noise at each layer. The main contribution is that this architecture automatically separates high-level attributes like pose and identity (controlled by ) from stochastic features like hair placement and freckles (controlled by the noise inputs). This allows for intuitive, scale-specific editing by mixing styles from different codes.
To prove their architecture is better, the authors introduce two new metrics: Perceptual Path Length (PPL) and linear separability. These metrics show that their intermediate latent space is more disentangled and less "curved" than the traditional input latent space . However, the approach isn't perfect. The paper shows that the mixing regularization they use to improve style localization actually makes the latent space slightly more entangled (higher PPL). More significantly, they observe that as training progresses and image quality (FID) improves, the latent space entanglement (PPL) tends to get worse, indicating a fundamental trade-off between image fidelity and the linearity of the latent space.
AdaIN is the core mechanism that allows the intermediate latent code to control the synthesis network. For each feature map in a given convolutional layer, AdaIN first normalizes it, wiping out its mean and variance. Then, it applies new scale () and bias () parameters that are derived from the style code .
The operation is defined as:
where
In short, AdaIN resets the style of each feature map and then imposes a new style based on . This is done at each resolution level, giving control over the entire synthesis process.
The key idea behind StyleGAN's improved disentanglement is the separation of the input latent space from the intermediate latent space .
PPL is a metric designed to measure the "curvedness" of the latent space. The intuition is that if you interpolate between two latent codes, a small step in the latent space should correspond to a small, perceptually linear change in the output image. If the image changes dramatically or features pop in and out unexpectedly, the space is entangled.
PPL measures the average perceptual distance between images generated from close latent codes along an interpolation path. It's calculated as:
where
A lower PPL score means the latent space is perceptually smoother and less entangled.
This metric quantifies how well a single factor of variation (e.g., "has glasses") corresponds to a linear direction in the latent space. If the space is well-disentangled, you should be able to find a simple hyperplane that separates latent codes based on a specific semantic attribute.
The process is:
The final score is calculated as:
A lower score indicates less uncertainty, meaning the linear SVM is a good separator. This implies the latent space has more consistent linear directions for different attributes, and is therefore more disentangled.
The GraphRAG paper proposes a graph-based RAG approach that builds a knowledge graph from documents using an LLM to extract entities and relationships, then uses community detection to partition the graph into hierarchical clusters. The system pre-generates summaries for each community of related entities, and at query time uses map-reduce to generate partial answers from relevant community summaries before combining them into a final global answer. The main contribution is enabling "global sensemaking" queries that require understanding an entire corpus rather than just retrieving specific facts, addressing a key limitation of traditional vector RAG systems. They also introduce an adaptive benchmarking approach using LLM-generated personas and tasks to create corpus-specific evaluation questions.
The most significant problem is the high computational cost - graph indexing took 281 minutes for the podcast dataset using GPT-4-turbo, making it expensive for large corpora. Worse, this cost must be repaid when new documents are added to the corpus because the clusters might have changed and the whole thing needs to be reindexed.
HippoRAG basically chunks the documents (the paper calls these "passages"), extracts simple triples from each passage, puts them in the big KG, stores embeddings of the node names and which chunk that node came from. Then entities are extracted from the query, the entity names are embedded and vector-compared against KG node names, those with the highest overlap are selected as the starting nodes for PPR, then the final PPR nodes have their linked passages picked out and these are your passages to give to the LLM.
The main contribution is enabling single-step multi-hop retrieval that integrates information across passage boundaries, solving complex questions that require connecting disparate facts. The most significant problem is that their entity-centric design creates a concept-context tradeoff - the system focuses heavily on named entities and concepts while ignoring contextual cues, which accounts for 48% of errors in their analysis. Actually I wrote a whole blog post about this. Also the PPR part is weak. It just wanders around the graph which means that if the graph is too densely connected or has too many useless nodes it won't work.
This paper introduces HippoRAG 2, a RAG framework that aims to better mimic human long-term memory for large language models. The main approach builds on the original HippoRAG by enhancing its PPR algorithm with three key improvements:
The system constructs an open knowledge graph offline by extracting triples from passages, then during online retrieval it uses embedding models to find seed nodes, filters them with an LLM, and runs PPR to retrieve the most relevant passages for question answering.
The main contribution is achieving comprehensive performance across three types of memory tasks - factual (simple QA), sense-making (discourse understanding), and associative (multi-hop QA) - something previous structure-augmented RAG methods failed to do.
This paper argues that current graph-based RAG systems are too noisy because they retrieve entire communities or all immediate neighbors of relevant nodes, flooding the LLM with redundant or irrelevant information. Their solution, PathRAG, takes a more focused approach. It first identifies a handful of key nodes in the knowledge graph based on the query. Then, instead of grabbing everything around those nodes, it specifically finds the most important paths that connect them. The main contribution is a "flow-based pruning" algorithm that efficiently discovers these paths and assigns them a reliability score. This allows the system to feed the LLM a much cleaner, more focused context that explicitly shows the relationships between key entities, which they claim leads to more logical and coherent answers.
Of course this relies heavily on the quality of the initial indexing graph. The paper doesn't cover how this graph is built, and if the entity and relationship extraction is poor, the whole system fails. Garbage in, garbage out. Secondly, their path-finding algorithm is a simple, non-learning heuristic. While fast, it might miss more complex or semantically relevant paths that a trainable model could identify.