<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator><link href="https://minjaechoics.github.io/feed.xml" rel="self" type="application/atom+xml"/><link href="https://minjaechoics.github.io/" rel="alternate" type="text/html" hreflang="en"/><updated>2026-09-07T08:00:15+00:00</updated><id>https://minjaechoics.github.io/feed.xml</id><title type="html">MinJae Choi</title><subtitle>KAIST undergraduate working on efficient AI systems, quantization, and graph algorithms. </subtitle><entry><title type="html">KAIST Include 2026 Spring Computer Vision Seminar</title><link href="https://minjaechoics.github.io/blog/2026/computer-vision-seminar/" rel="alternate" type="text/html" title="KAIST Include 2026 Spring Computer Vision Seminar"/><published>2026-05-09T15:00:00+00:00</published><updated>2026-05-09T15:00:00+00:00</updated><id>https://minjaechoics.github.io/blog/2026/computer-vision-seminar</id><content type="html" xml:base="https://minjaechoics.github.io/blog/2026/computer-vision-seminar/"><![CDATA[<p>Presentation material on Generative Adversarial Networks, delivered for <a href="https://kaist-include.io/">Include</a>, KAIST’s AI club, as part of the 2026 Spring Computer Vision Seminar.</p> <p><a href="/assets/pdf/GAN_seminar_260510.pdf" target="_blank" rel="noopener" class="btn btn-outline-primary mb-3">Open the slide deck (PDF)</a></p> <div class="row"> <div class="col-sm mt-3 mt-md-0"> <figure> <picture> <source class="responsive-img-srcset" srcset="/assets/img/blog/gan_first_slide-480.webp 480w,/assets/img/blog/gan_first_slide-800.webp 800w,/assets/img/blog/gan_first_slide-1400.webp 1400w," type="image/webp" sizes="95vw"/> <img src="/assets/img/blog/gan_first_slide.png" class="img-fluid rounded z-depth-1" width="100%" height="auto" title="Computer vision seminar deck" loading="eager" onerror="this.onerror=null; document.querySelectorAll('.responsive-img-srcset').forEach(function (n) { n.remove(); });"/> </picture> </figure> </div> </div> <iframe src="/assets/pdf/GAN_seminar_260510.pdf" title="KAIST Include 2026 Spring Computer Vision Seminar PDF" style="width:100%; height:80vh; min-height:480px; border:1px solid rgba(0,0,0,.1); border-radius:8px;"></iframe>]]></content><author><name></name></author><category term="seminar"/><category term="gan"/><category term="computer-vision"/><category term="slides"/><summary type="html"><![CDATA[Slides for a seminar on Generative Adversarial Networks hosted by Include, KAIST's AI club.]]></summary></entry><entry><title type="html">Growing a Language</title><link href="https://minjaechoics.github.io/blog/2025/growing-a-language/" rel="alternate" type="text/html" title="Growing a Language"/><published>2025-12-29T07:22:45+00:00</published><updated>2025-12-29T07:22:45+00:00</updated><id>https://minjaechoics.github.io/blog/2025/growing-a-language</id><content type="html" xml:base="https://minjaechoics.github.io/blog/2025/growing-a-language/"><![CDATA[<iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2Flw6TaiXzHAE%3Ffeature%3Doembed&amp;display_name=YouTube&amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3Dlw6TaiXzHAE&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2Flw6TaiXzHAE%2Fhqdefault.jpg&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/f73a8b6e65ebc5dd7b0075a1a74343d6/href">https://medium.com/media/f73a8b6e65ebc5dd7b0075a1a74343d6/href</a></iframe> <p>The video above is a keynote speech delivered at a programming languages (PL) conference in 1998. In essence, the speech argues that programming language design should move toward providing meta-level tools that allow users (developers) to extend the language themselves and build their own libraries. In other words, a “cathedral model,” in which a small group of designers centrally drives language design, tends to alienate users and respond slowly to change. Instead, a model closer to that of the Linux operating system — where users actively participate, rapidly modify, and evolve the system — is far more effective.</p> <p>The core message of the talk lies in this growth model of programming languages. As concrete examples of such an approach, the speaker mentions generic types in Java as a pattern for defining types, operator overloading that allows user-defined types to naturally use operations such as + and -, and lightweight types that can be stored in structures like stacks.</p> <p>From this perspective, the key challenge in programming language design is how to incorporate users (developers) into the process of language evolution. Rather than language designers attempting to build a large, complete language upfront, they should design tools that enable developers to extend the language to solve problems specific to their own projects. Observing that the vision proposed by the speaker was later adopted in Java and reflected in other languages such as C#, one can see that this philosophy of language design is not only idealistic but also practically effective.</p> <p>Moreover, this philosophy extends beyond programming language design and offers insights into the design of complex systems in general. Many modern systems, programming languages, and libraries are developed as open-source projects. This can be interpreted as a conscious effort to include users in the development process. Of course, languages developed as open-source projects (such as Python) also have clear drawbacks, including difficulties in maintaining a fully consistent syntax. Addressing these issues through improved development processes remains an important challenge. Nevertheless, this speech presents a compelling direction for how large-scale, complex projects can be built into successful systems that are widely used by diverse communities.</p> <p><img src="https://medium.com/_/stat?event=post.clientViewed&amp;referrerSource=full_rss&amp;postId=3ba209b57f9b" width="1" height="1" alt=""/></p>]]></content><author><name></name></author><category term="external-posts"/><category term="medium"/></entry><entry><title type="html">Dynamic Programming in RL: Policy Iteration vs. Value Iteration</title><link href="https://minjaechoics.github.io/blog/2025/dynamic-programming-in-rl-policy-iteration-vs-value-iteration/" rel="alternate" type="text/html" title="Dynamic Programming in RL: Policy Iteration vs. Value Iteration"/><published>2025-10-28T20:20:08+00:00</published><updated>2025-10-28T20:20:08+00:00</updated><id>https://minjaechoics.github.io/blog/2025/dynamic-programming-in-rl-policy-iteration-vs-value-iteration</id><content type="html" xml:base="https://minjaechoics.github.io/blog/2025/dynamic-programming-in-rl-policy-iteration-vs-value-iteration/"><![CDATA[<p>Dynamic Programming (DP) is a core set of algorithms used in Reinforcement Learning (RL) to solve problems modeled as a <strong>Markov Decision Process (MDP)</strong>1. DP methods are particularly effective when the agent has <strong>full knowledge of the environment’s dynamics</strong> (the transition probabilities P(s’|s, a) and the reward function R(s, a, s’).</p> <p>The fundamental challenge in solving MDPs is that the Bellman Equation — which defines the value of a state or action — creates a massive system of simultaneous equations. For a problem with S states and A actions, solving this system directly is computationally infeasible.</p> <p>DP circumvents this by using <strong>iterative updates</strong> and the concept of <strong>bootstrapping</strong> (where updates to the value function are based on estimated values of successor states). This approach falls into two main categories: <strong>Policy Iteration</strong> and <strong>Value Iteration</strong>.</p> <h3>1. The Two Goals: Policy Evaluation and Policy Control</h3> <p>DP algorithms are built around two interlocking sub-problems:</p> <ol><li><strong>Policy Evaluation:</strong> Given a specific policy pi, calculate the state-value function $V_{\pi}(s)$ (the expected long-term return from state s if policy pi is followed). This is an intermediate step.</li><li><strong>Policy Control:</strong> Find the optimal policy pi* that maximizes the value function V*(s) for all states. This is the ultimate goal.</li></ol> <h3>2. Policy Iteration: Evaluate, then Improve</h3> <p>The Policy Iteration method is a complete solution that alternates between Policy Evaluation and Policy Improvement until the optimal policy is found.</p> <h3>Step 1: Policy Evaluation (Iterative Policy Evaluation)</h3> <p>This step calculates the value function $V_{\pi}$ for the current policy pi. It uses the Bellman Expectation Equation iteratively:</p> <figure><img alt="" src="https://cdn-images-1.medium.com/max/553/1*R-CLU4PYjm4Viy6JqnPWew.png"/></figure> <p><strong>Process:</strong> Starting with an arbitrary value function $V_0(s)$ (often all zeros) , the value of each state $s$ is updated based on the estimated value of the next state s’ (bootstrapping).</p> <ul><li><strong>Convergence:</strong> This process is repeated until the maximum change in the value function ($\Delta$) across all states drops below a small <strong>threshold</strong>. The value function $V_k$ is guaranteed to converge to the true $V_{\pi}$ under the given policy $\pi$.</li><li><strong>Update Style:</strong> A <strong>“in-place” update</strong> (where the current state’s new value is used immediately to calculate the next state’s value, known as the “overwrite method”) is generally faster than using a separate new_V table.</li></ul> <h3>Step 2: Policy Improvement (Greedy Policy)</h3> <p>Once $V_{\pi}$ is accurately calculated, the policy is improved by taking an action that is greedy with respect to the new value function.</p> <figure><img alt="" src="https://cdn-images-1.medium.com/max/661/1*0DAgfvheiI43_2sh9fGZNA.png"/></figure> <ul><li><strong>Greedy Action:</strong> For each state $s$, the new policy $\pi’(s)$ chooses the action $a$ that leads to the best combination of immediate reward ($R$) and discounted value of the next state ($\gamma V_{\pi}(s’)$).</li><li><strong>Policy Improvement Theorem:</strong> This theorem guarantees that the new greedy policy $\pi’$ will be <strong>better than or equal to</strong> the previous policy $\pi$. If $\pi’$ is strictly better, the process repeats.</li></ul> <h3>Convergence to Optimal Policy</h3> <p>Policy iteration alternates between evaluation and improvement. Since there is a finite number of policies in a finite MDP, this process is <strong>guaranteed to converge</strong> to the optimal policy pi* and its optimal value function V*.</p> <h3>3. Value Iteration: Combining Evaluation and Improvement</h3> <p><strong>Value Iteration</strong> is a simplified DP algorithm that implicitly combines the Policy Evaluation and Policy Improvement steps. It does not require a full, separate policy evaluation phase.</p> <h3>The Core Idea: Bellman Optimality Equation</h3> <p>Instead of iteratively solving the Bellman Expectation Equation (Policy Evaluation), Value Iteration directly uses the Bellman Optimality Equation for V*:</p> <figure><img alt="" src="https://cdn-images-1.medium.com/max/655/1*7iXaZgpFcBsWaeC-TZJIIA.png"/></figure> <ul><li><strong>Single Step:</strong> In each iteration ($k \to k+1$), the value of state $V(s)$ is updated by taking the <strong>maximum</strong> expected value over all possible actions $a$. This <strong>$\max_{a}$ operation</strong> <em>is</em> the policy improvement step.</li><li><strong>Evaluation and Improvement:</strong> By taking the $\max_{a}$, the algorithm effectively performs a <strong>one-step greedy policy improvement</strong> at the same time it’s updating the value function (evaluation).</li></ul> <h3>Convergence and Final Policy</h3> <ul><li><strong>Convergence:</strong> Like policy evaluation, the value function $V_k$ is guaranteed to converge to the optimal value function V*.</li><li><strong>Extracting pi*:</strong> Once V*is found, the optimal policy pi* can be extracted in a single step by performing a final <strong>greedy policy operation</strong> with respect to the converged V*.</li></ul> <h3>Policy Iteration vs. Value Iteration (Generalized Policy Iteration)</h3> <p>Both Policy Iteration and Value Iteration are forms of <strong>Generalized Policy Iteration (GPI)</strong>, where Policy Evaluation ($V \to V$) and Policy Improvement ($\mu \to \mu’$) interact until convergence.</p> <ul><li><strong>Policy Iteration</strong> performs a <strong>full evaluation</strong> (many V updates) before a <strong>single improvement</strong> (one pi update).</li><li><strong>Value Iteration</strong> performs a <strong>one-step improvement</strong> <em>for every state update</em> (no need for the separate, time-consuming full evaluation).</li></ul> <p>Value Iteration typically converges faster by reducing the number of evaluation steps, making it computationally more efficient, especially in large MDPs.</p> <p><img src="https://medium.com/_/stat?event=post.clientViewed&amp;referrerSource=full_rss&amp;postId=a004aa143d03" width="1" height="1" alt=""/>&lt;hr&gt;&lt;p&gt;<a href="https://medium.com/kaist-include-ai-club/dynamic-programming-in-rl-policy-iteration-vs-value-iteration-a004aa143d03">Dynamic Programming in RL: Policy Iteration vs. Value Iteration 🚀</a> was originally published in <a href="https://medium.com/kaist-include-ai-club">KAIST Include AI Club</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.&lt;/p&gt;</p>]]></content><author><name></name></author><category term="artificial-intelligence"/><category term="reinforcement-learning"/><category term="medium"/></entry><entry><title type="html">The Foundation of Reinforcement Learning: MDPs and the Bellman Equation</title><link href="https://minjaechoics.github.io/blog/2025/the-foundation-of-reinforcement-learning-mdps-and-the-bellman-equation/" rel="alternate" type="text/html" title="The Foundation of Reinforcement Learning: MDPs and the Bellman Equation"/><published>2025-10-28T20:19:55+00:00</published><updated>2025-10-28T20:19:55+00:00</updated><id>https://minjaechoics.github.io/blog/2025/the-foundation-of-reinforcement-learning-mdps-and-the-bellman-equation</id><content type="html" xml:base="https://minjaechoics.github.io/blog/2025/the-foundation-of-reinforcement-learning-mdps-and-the-bellman-equation/"><![CDATA[<p>Reinforcement Learning (RL) is fundamentally different from Supervised and Unsupervised Learning. While the latter focus on learning probability distributions like p(y|x) or p(x), RL is about an AI <strong>agent</strong> learning the <strong>‘optimal’ policy</strong> to solve a given problem space, such as controlling a robot or playing StarCraft.</p> <p>But what exactly does “optimal” mean, and how do we mathematically model this continuous interaction? The answer lies in the <strong>Markov Decision Process (MDP)</strong> and the fundamental <strong>Bellman Equation</strong>.</p> <h3>1. Modeling the RL Problem: The Markov Decision Process (MDP)</h3> <p>In RL, the agent interacts with an <strong>Environment</strong>. The agent perceives the environment’s state using a <strong>Sensor</strong> (percept/observed state) , decides on an <strong>Action</strong> using a <strong>Function (Policy)</strong> , and executes it via an <strong>Actuator</strong>. The environment, in turn, provides a <strong>Reward</strong>.</p> <p>The MDP provides the formal, mathematical framework for this interaction:</p> <p><strong>State: </strong>Current description of the environment.</p> <p><strong>Action: </strong>Possible moves the agent can take.</p> <p><strong>Policy: </strong>The agent’s strategy for choosing an action.</p> <p><strong>Transition: </strong>How the environment’s state changes.</p> <p><strong>Reward: </strong>Evaluation of an action (e.g., cost).</p> <p>The ultimate goal of RL is to learn the policy ($\pi$) that maximizes the accumulated <strong>Reward</strong>.</p> <h4>The Importance of the Markov Property</h4> <p>A key assumption in the MDP is the <strong>Markov Property</strong>: the future state s’ only depends on the <strong>current state ($s$) and action ($a$)</strong>.</p> <p>In a Markovian State Transition Model, the probability of the next state is defined as $P(s’|s, a)$. This property is vital because it allows for a simplified, powerful recursive solution (the Bellman Equation) that doesn’t require considering the entire history of states.</p> <h3><strong>2. Measuring Value: State Value Function</strong></h3> <p>In the Multi-armed Bandit problem (a simplified RL problem without state transitions), the quality of an action Q is the expected reward from that action.</p> <p>However, in the full MDP, the reward r doesn’t just depend on the action; it depends on the resulting state transition (S, a, s’). Therefore, we need a more powerful way to measure value.</p> <h4>Return and Discount Rate</h4> <p>We define the <strong>Return </strong>as the total weighted sum of future rewards.</p> <figure><img alt="" src="https://cdn-images-1.medium.com/max/211/1*HskiE44p7O1sDLwApqLmHw.png"/></figure> <p>The <strong>Discount Rate (in [0, 1))</strong> is a hyperparameter that determines the importance of future rewards compared to immediate rewards.</p> <h3>State Value Function</h3> <p>The State Value Function is the expected return (G_t) starting from state $s$ while following a specific policy pi:</p> <figure><img alt="" src="https://cdn-images-1.medium.com/max/283/1*IzrtLuI6nrSgGFV_KYH_cw.png"/></figure> <p>This function is critical because it allows us to <strong>compare policies</strong>. An optimal policy pi* is one that maximizes $v_{\pi}(s)$ for all states s in S. The <strong>Deterministic Optimal Policy Theorem</strong> states that for any finite MDP, at least one <strong>deterministic</strong> optimal stationary policy pi* exists.</p> <h3>3. The Bellman Equation: The Recursive Definition of Value</h3> <p>The <strong>Bellman Equation</strong> is derived from the MDP and is valid for all MDP problems. It is important because it shows the <strong>recursive definition of the value function</strong>.</p> <h3>Recursive Definition of $v_{\pi}(s)$</h3> <p>The magic of the Bellman Equation lies in rewriting the infinite sum of the Return G_t into a simple recursive expression:</p> <figure><img alt="" src="https://cdn-images-1.medium.com/max/231/1*PZhpAJoH9Qe88Dw5KGWwbw.png"/></figure> <p>Applying the expected value based on the policy pi and the transition T, the State Value Function $v_{\pi}(s)$ can be expressed as:</p> <figure><img alt="" src="https://cdn-images-1.medium.com/max/463/1*RLv3jagu7afNV1l0yASV0Q.png"/></figure> <p>In simple terms, <strong>the value of the current state ($v_{\pi}(s)$) is the expected value of the immediate reward plus the discounted value of the next state ($v_{\pi}(s’)$)</strong>. This allows us to deal with the value function without an infinite number of terms.</p> <h3>Recursive Definition of Action Value Function $q_{\pi}(s, a)$</h3> <p>The <strong>Action Value Function ($q_{\pi}(s, a)$)</strong> measures the expected return when starting in state $s$, taking action $a$, and then following policy $\pi$.</p> <p>It is also defined recursively and is related to $v_{\pi}(s)$:</p> <figure><img alt="" src="https://cdn-images-1.medium.com/max/346/1*3iNmRbkuUp0mDxWkELTtBA.png"/></figure> <h3>The Bellman Optimality Equation</h3> <p>The most important insight is the <strong>Optimal Bellman Equation</strong>, which defines the conditions that the optimal value function ($v_*$ or $q_*$) must satisfy.</p> <p>The optimal policy ($\pi^*$) always chooses the action with the <strong>highest value</strong>.</p> <ol><li>Optimal State Value: The optimal value of state $s$ is the maximum expected value over all possible actions $a$:</li></ol> <figure><img alt="" src="https://cdn-images-1.medium.com/max/550/1*HKuBUsnk3pwbSGqW6-A15g.png"/></figure> <p>2. Optimal Action Value: The optimal value of state-action pair $(s, a)$ is the expected immediate reward plus the discounted maximum optimal action value in the next state $s’$38:</p> <figure><img alt="" src="https://cdn-images-1.medium.com/max/606/1*OlfZNLsIkF0nqWjn_JctrA.png"/></figure> <p>The optimal policy ($\mu^*$) is then simply the action that maximizes this optimal action value:</p> <figure><img alt="" src="https://cdn-images-1.medium.com/max/319/1*GyLVWr-GiFvZsad9TuKu0A.png"/></figure> <p>The Bellman Optimality Equation serves as a critical <strong>target function condition</strong> for solving RL problems41. Any policy, value function, or action-value function that models an MDP must obey the Bellman Equation.</p> <p><img src="https://medium.com/_/stat?event=post.clientViewed&amp;referrerSource=full_rss&amp;postId=3f657cb31e7f" width="1" height="1" alt=""/>&lt;hr&gt;&lt;p&gt;<a href="https://medium.com/kaist-include-ai-club/the-foundation-of-reinforcement-learning-mdps-and-the-bellman-equation-3f657cb31e7f">The Foundation of Reinforcement Learning: MDPs and the Bellman Equation 🧠</a> was originally published in <a href="https://medium.com/kaist-include-ai-club">KAIST Include AI Club</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.&lt;/p&gt;</p>]]></content><author><name></name></author><category term="artificial-intelligence"/><category term="reinforcement-learning"/><category term="medium"/></entry><entry><title type="html">Unlocking the Power of Networks: Expressiveness, Link Prediction, and Generation in Graph AI</title><link href="https://minjaechoics.github.io/blog/2025/unlocking-the-power-of-networks-expressiveness-link-prediction-and-generation-in-graph-ai/" rel="alternate" type="text/html" title="Unlocking the Power of Networks: Expressiveness, Link Prediction, and Generation in Graph AI"/><published>2025-10-28T20:19:32+00:00</published><updated>2025-10-28T20:19:32+00:00</updated><id>https://minjaechoics.github.io/blog/2025/unlocking-the-power-of-networks-expressiveness-link-prediction-and-generation-in-graph-ai</id><content type="html" xml:base="https://minjaechoics.github.io/blog/2025/unlocking-the-power-of-networks-expressiveness-link-prediction-and-generation-in-graph-ai/"><![CDATA[<p>Graph Neural Networks (GNNs) are at the forefront of AI innovation, helping us understand and generate complex relational data. This post dives into three fundamental concepts defining the power and utility of GNNs: <strong>Expressiveness</strong>, <strong>Link Prediction</strong>, and <strong>Graph Generation</strong>.</p> <h3>1. Defining GNN Expressiveness: The WL Test Limit</h3> <p><strong>Expressiveness</strong> is the metric that measures how well a GNN can <strong>distinguish between different graph structures</strong>. The primary goal of a GNN is to generate <strong>similar embeddings for similar nodes and different embeddings for different nodes</strong>.</p> <p>The gold standard for determining a GNN’s distinguishing power is its connection to the <strong>Graph Isomorphism Problem</strong> , which asks whether two graphs have the same connectivity structure.</p> <h3>The Weisfeiler-Leman (WL) Test</h3> <p>The <strong>Weisfeiler-Leman (WL) Test</strong> is an algorithm designed to address the graph isomorphism problem and is considered the theoretical upper bound for the expressive power of many GNNs.</p> <h4>How the WL Test Works:</h4> <ol><li><strong>Initial Coloring:</strong> All nodes are initially assigned the same color.</li><li><strong>Color Aggregation:</strong> Each node collects and aggregates the colors of itself and its neighbors (e.g., using a <strong>Sum Aggregator</strong>).</li><li><strong>New Color Generation:</strong> The aggregated result is input into a <strong>hash function</strong> to generate a new color.</li><li><strong>Iteration:</strong> Steps 2 and 3 are repeated until the node colors no longer change.</li></ol> <p>If two graphs do not share the same final set of colors, they are considered non-isomorphic. The WL test can distinguish more graph structures than other methods.</p> <h3>Graph Isomorphism Network (GIN)</h3> <p>The <strong>Graph Isomorphism Network (GIN)</strong> is a GNN architecture <strong>designed to have the same expressive power as the WL test</strong>. Its aggregation and combination steps mimic the iterative coloring of the WL test:</p> <figure><img alt="" src="https://cdn-images-1.medium.com/max/423/1*poA3V63JA-kiYIYBRDhPUQ.png"/></figure> <h3>Graph Classification and Readout</h3> <p><strong>Graph Classification</strong> is the task of predicting a property of an entire graph by transforming the node embeddings produced by a GNN into a single <strong>graph embedding</strong>. This is done using a <strong>Global Pooling</strong> or <strong>Readout</strong> function.</p> <h3>2. Link Prediction: Forecasting Future Connections</h3> <p><strong>Link Prediction</strong> is the problem of <strong>predicting whether a link (edge) exists or will exist between two nodes</strong>.</p> <h3>Traditional Link Prediction Methods</h3> <p>Traditional approaches rely on heuristics and matrix decomposition:</p> <h4>Heuristic Methods</h4> <p><strong>Local Heuristics (1-hop or 2-hop):</strong></p> <ul><li><strong>Common Neighbors:</strong> Measures the number of neighbors shared by two nodes.</li><li><strong>Jaccard’s Coefficient:</strong> Measures the proportion of common neighbors.</li><li><strong>Adamic-Adar Index:</strong> Sums the inverse of the log of the degree of common neighbors, assigning less importance to common neighbors with many connections.</li></ul> <p><strong>Global Heuristics:</strong></p> <ul><li><strong>Katz Index:</strong> Calculates the weighted sum of <strong>all possible paths</strong> between two nodes, penalizing longer paths.</li></ul> <h4>Matrix Factorization (MF)</h4> <figure><img alt="" src="https://cdn-images-1.medium.com/max/373/1*cw5_bb48GfOCobbEAj8zhg.png"/></figure> <p>This method learns node embeddings Z to approximate the entire adjacency matrix A. The goal is to maximize the inner product of embeddings for similar nodes and minimize it for dissimilar node.</p> <h3>GNN-based Link Prediction Models</h3> <h4>Graph Autoencoder (GAE)</h4> <p>The GAE uses a GNN (e.g., a two-layer GCN) as an <strong>Encoder</strong> to generate node embeddings .</p> <figure><img alt="" src="https://cdn-images-1.medium.com/max/220/1*znIdJT8WEjfqxtvFzx5o6w.png"/></figure> <p>A <strong>Decoder</strong> then approximates the adjacency matrix A hat using a sigmoid function on the inner product of the embeddings:</p> <figure><img alt="" src="https://cdn-images-1.medium.com/max/166/1*nNag6H7UeU1M6sRkUJqHng.png"/></figure> <h4>Variational Graph Autoencoder (VGAE)</h4> <p>VGAE is a probabilistic variant of GAE. Instead of learning Z directly, it learns the parameters (mean and variance) of a <strong>latent normal distribution</strong> that Z follows. Embeddings are sampled from this learned distribution, and the loss function includes the <strong>Kullback-Leibler (KL) Divergence</strong> term to ensure the output distribution is close to a prior distribution.</p> <h4>SEAL (Subgraphs, Embeddings, and Attributes for Link prediction)</h4> <p>SEAL focuses on <strong>local connectivity</strong> by using <strong>enclosing subgraphs</strong> as input instead of the entire graph. This approach automatically learns local heuristics.</p> <ul><li><strong>Enclosing Subgraph Extraction:</strong> Lists the target nodes and their k-hop neighbors and extracts their edges and features.</li><li><strong>Node Labeling (DRNL):</strong> The <strong>Double-Radius Node Labeling (DRNL)</strong> algorithm generates a single integer label that captures the structural importance of each node by encoding its distances from <strong>both</strong> target nodes x and y.</li></ul> <h3>3. Graph Generation: Creating New Network Structures</h3> <p><strong>Graph Generation</strong> models are crucial for applications like <strong>data augmentation</strong>, <strong>anomaly detection</strong>, and <strong>drug discovery</strong>. They can be categorized into <strong>realistic generation</strong> (mimicking existing graphs) and <strong>goal-directed generation</strong> (optimizing a specific metric).</p> <h3>Traditional Graph Generation Methods</h3> <ul><li><strong>Erdos-Renyi Model (G(n, p) or G(n, M)):</strong> Assumes each edge exists independently with probability p or chooses a graph with M edges randomly. A limitation is the difficulty in mimicking real-world graphs with clusters or communities due to the independence assumption.</li><li><strong>Small-World Model (Watts-Strogatz Model):</strong> Captures the real-world features of <strong>short path length</strong> and <strong>high clustering coefficient</strong>. It starts with a regular lattice and randomly <strong>rewires</strong> some edges with probability p to introduce shortcuts. Its limitations include a fixed number of nodes and difficulty creating realistic degree distributions.</li></ul> <h3>GNN-based Deep Graph Generation Models</h3> <h4>Variational Autoencoder (VAE) Models</h4> <p>VGAE can be used for generation: it stores the structural information of the original graph in a <strong>probabilistic distribution</strong>45. A new graph is created by <strong>sampling</strong> from this distribution and setting a threshold to create a binary adjacency matrix.</p> <ul><li><strong>Constrained Graph Variational Autoencoder (CGVAE):</strong> Extends VGAE to learn more complex graphs G=(A, E, F) that include the adjacency tensor A, edge attribute tensor E, and node feature matrix F. It can generate graphs with specific conditions (e.g., valid molecular structures) by adding constraints or regularization.</li></ul> <h4>Autoregressive Models</h4> <p>These models view graph generation as a <strong>sequential decision-making process</strong>. At each step, the model creates a new node or link, and the resulting partial graph becomes the input for the next step.</p> <p><strong>GraphRNN:</strong> Uses <strong>two Recurrent Neural Networks (RNNs):</strong></p> <ol><li><strong>Graph-level RNN:</strong> Generates a new node and sets its initial state52.</li><li><strong>Edge-level RNN:</strong> Predicts the probability of the new node connecting to existing nodes, filling in the adjacency matrix row by row53.</li></ol> <h4>Generative Adversarial Networks (GANs)</h4> <p>GANs use a zero-sum game framework where a <strong>Generator</strong> and a <strong>Discriminator</strong> compete.</p> <ul><li><strong>Generator:</strong> Creates new graph data that resembles the training data.</li><li><strong>Discriminator:</strong> Distinguishes whether a sample is a real graph or a fake one created by the generator.</li><li><strong>MoIGAN (molecular GAN):</strong> Combines the <strong>Wasserstein GAN (WGAN)</strong>, which improves training stability, with a <strong>Reinforcement Learning (RL) objective</strong> to generate molecules with desired chemical properties.</li><li><strong>Generator:</strong> Outputs the Adjacency tensor (A, edge/bond types) and the Annotation matrix (X, node/atom types).</li><li><strong>Reward Network:</strong> Scores each generated graph based on a real-world score (e.g., from RDKit), providing a reward for generating a molecule that meets the desired chemical characteristics.</li></ul> <p>Writer: <a href="https://medium.com/@minjaechoi.cs">MinJae Choi</a></p> <p><img src="https://medium.com/_/stat?event=post.clientViewed&amp;referrerSource=full_rss&amp;postId=2c970686a8e3" width="1" height="1" alt=""/>&lt;hr&gt;&lt;p&gt;<a href="https://medium.com/kaist-include-ai-club/unlocking-the-power-of-networks-expressiveness-link-prediction-and-generation-in-graph-ai-2c970686a8e3">Unlocking the Power of Networks: Expressiveness, Link Prediction, and Generation in Graph AI</a> was originally published in <a href="https://medium.com/kaist-include-ai-club">KAIST Include AI Club</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.&lt;/p&gt;</p>]]></content><author><name></name></author><category term="ai"/><category term="graph"/><category term="graph-ai"/><category term="medium"/></entry><entry><title type="html">KAIST Include 2025 Fall Graph AI Seminar</title><link href="https://minjaechoics.github.io/blog/2025/graph-ai-seminar/" rel="alternate" type="text/html" title="KAIST Include 2025 Fall Graph AI Seminar"/><published>2025-10-28T15:00:00+00:00</published><updated>2025-10-28T15:00:00+00:00</updated><id>https://minjaechoics.github.io/blog/2025/graph-ai-seminar</id><content type="html" xml:base="https://minjaechoics.github.io/blog/2025/graph-ai-seminar/"><![CDATA[<p>Presentation material on expressiveness, link prediction, and generation in Graph AI, delivered for <a href="https://kaist-include.io/">Include</a>, KAIST’s AI club, as part of the 2025 Fall Graph AI Seminar.</p> <p><a href="/assets/pdf/graphai_seminar_251029.pdf" target="_blank" rel="noopener" class="btn btn-outline-primary mb-3">Open the slide deck (PDF)</a></p> <div class="row"> <div class="col-sm mt-3 mt-md-0"> <figure> <picture> <source class="responsive-img-srcset" srcset="/assets/img/blog/graphai_first_slide-480.webp 480w,/assets/img/blog/graphai_first_slide-800.webp 800w,/assets/img/blog/graphai_first_slide-1400.webp 1400w," type="image/webp" sizes="95vw"/> <img src="/assets/img/blog/graphai_first_slide.png" class="img-fluid rounded z-depth-1" width="100%" height="auto" title="Graph AI seminar deck" loading="eager" onerror="this.onerror=null; document.querySelectorAll('.responsive-img-srcset').forEach(function (n) { n.remove(); });"/> </picture> </figure> </div> </div> <iframe src="/assets/pdf/graphai_seminar_251029.pdf" title="KAIST Include 2025 Fall Graph AI Seminar PDF" style="width:100%; height:80vh; min-height:480px; border:1px solid rgba(0,0,0,.1); border-radius:8px;"></iframe>]]></content><author><name></name></author><category term="seminar"/><category term="graph-ai"/><category term="gnn"/><category term="slides"/><summary type="html"><![CDATA[Slides on expressiveness, link prediction, and generation in graph AI.]]></summary></entry></feed>