<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ko"><generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator><link href="https://kim-jeonghan.github.io/feed.xml" rel="self" type="application/atom+xml"/><link href="https://kim-jeonghan.github.io/" rel="alternate" type="text/html" hreflang="ko"/><updated>2026-07-06T14:11:52+00:00</updated><id>https://kim-jeonghan.github.io/feed.xml</id><title type="html">Jeonghan Kim</title><subtitle>Robotics software engineer focused on motion planning, control, and autonomy for real-world robot systems. </subtitle><author><name>Jeonghan Kim</name><email>kimjh9813@naver.com</email></author><entry><title type="html">[논문리뷰] State-Covering Trajectory Stitching for Diffusion Planners</title><link href="https://kim-jeonghan.github.io/blog/2026/paper-review-state-covering-trajectory-stitching-diffusion-planners/" rel="alternate" type="text/html" title="[논문리뷰] State-Covering Trajectory Stitching for Diffusion Planners"/><published>2026-07-05T15:00:00+00:00</published><updated>2026-07-06T14:11:31+00:00</updated><id>https://kim-jeonghan.github.io/blog/2026/paper-review-state-covering-trajectory-stitching-diffusion-planners</id><content type="html" xml:base="https://kim-jeonghan.github.io/blog/2026/paper-review-state-covering-trajectory-stitching-diffusion-planners/"><![CDATA[<h2 id="논문-정보">논문 정보</h2> <h2 id="한-줄-요약">한 줄 요약</h2> <p>이 논문은 diffusion planner의 성능 한계를 모델 구조가 아니라 학습 데이터의 trajectory coverage 문제로 바라본다. SCoTS는 짧은 trajectory segment들을 reward 없이 이어 붙이고 diffusion-based refinement로 정제하여, 더 넓은 state space를 포함하는 augmented dataset을 만든다. 이 데이터로 학습한 diffusion planner는 기존 offline data보다 긴 horizon과 unseen task에 더 잘 일반화한다.</p> <h2 id="문제-정의">문제 정의</h2> <p>Diffusion planner는 offline dataset으로부터 trajectory distribution을 학습해 start state와 goal state를 연결하는 trajectory를 생성한다. 하지만 planner의 성능은 학습 데이터의 trajectory coverage에 크게 의존하기 때문에, training data가 짧은 segment나 특정 behavior pattern에 치우쳐 있으면 unseen task나 long-horizon goal에 일반화하기 어렵다.</p> <p>따라서 이 논문은 기존 offline dataset의 짧은 trajectory segment들을 어떻게 재조합하여, 더 넓은 state space를 cover하는 augmented dataset을 만들 수 있는가를 문제로 설정한다.</p> <h3 id="기존-방식의-한계">기존 방식의 한계</h3> <table> <thead> <tr> <th>접근</th> <th>장점</th> <th>한계</th> </tr> </thead> <tbody> <tr> <td>Model-based reinforcement learning</td> <td>Dynamics model을 학습해 planning을 수행하므로, 기존에 보지 못한 상황에 대한 generalization을 어느 정도 기대할 수 있다.</td> <td>Autoregressive하게 미래 state를 예측하는 과정에서 prediction error가 누적된다. 이 오차가 커지면 물리적으로 불가능한 trajectory가 만들어지거나 suboptimal trajectory가 생성될 수 있다.</td> </tr> <tr> <td>Diffusion planner</td> <td>Trajectory를 한번에 생성하므로 autoregressive prediction error가 step마다 누적되는 문제를 줄일 수 있다. Conditioning이나 guidance를 추가해 goal 또는 expected return이 큰 방향으로 generation을 유도할 수도 있다.</td> <td>Effective planning horizon이 학습된 최대 trajectory length와 coherent plan 생성 능력에 의해 제한된다. 또한 generalization capability는 training data의 trajectory type과 transition coverage에 크게 의존한다.</td> </tr> <tr> <td>더 많은 data collection</td> <td>다양한 task와 state transition을 직접 수집하면 dataset coverage를 넓힐 수 있다.</td> <td>실제 환경에서는 비용이 너무 크고, 필요한 모든 transition을 충분히 포함하는 dataset을 만드는 것도 현실적이지 않다.</td> </tr> <tr> <td>기존 trajectory stitching</td> <td>이미 존재하는 짧은 trajectory segment들을 이어 더 긴 sequence를 만들 수 있다.</td> <td>Segment 선택과 연결이 extrinsic reward에 강하게 의존하는 경우가 많다. Reward가 명확하지 않거나 sparse한 환경에서는 좋은 stitching을 만들기 어렵다.</td> </tr> </tbody> </table> <h2 id="핵심-아이디어">핵심 아이디어</h2> <p>이 논문은 reward-free trajectory augmentation framework를 제안한다. 다른 연구들이 diffusion planner의 architecture나 sampling 과정을 직접 개선하는 데 집중했다면, 이 논문은 augmented dataset $\mathcal{D}_{\mathrm{aug}}$ 자체에 집중한다. 핵심 목표는 latent directional exploration으로 짧은 trajectory segment들을 이어 붙여 다양하고 긴 trajectory를 만들고, 이를 통해 diffusion planner가 training distribution의 한계를 넘어서도록 만드는 것이다.</p> <p><img src="/assets/img/blog/paper-review-state-covering-trajectory-stitching-diffusion-planners/state-coverage-comparison.png" alt="State Coverage Comparison" style="width: 50%; display: block; margin: 0 auto;"/></p> <p>위 그림은 SCoTS를 사용했을 때 generalization이 어떻게 개선되는지를 보여준다. (a)는 training dataset의 예시로, offline data의 coverage가 제한적임을 보여준다. (b)는 Hierarchical Diffuser(HD)가 생성한 plan으로, training data의 coverage가 부족하기 때문에 out-of-distribution task에 잘 일반화하지 못한다. (c)는 SCoTS-augmented data로 학습한 HD의 plan이며, unseen task에 대해 trajectory stitching capability와 generalization이 크게 개선된 것을 보여준다. 각 색상은 planner가 생성한 10개의 plan 중 하나를 의미한다.</p> <h2 id="method">Method</h2> <p>SCoTS의 전략은 크게 세 단계로 정리할 수 있다.</p> <ol> <li>Temporal distance-preserving embedding을 학습해 trajectory segment를 효율적으로 retrieve한다.</li> <li>Latent directional exploration과 novelty-based selection을 사용해 iterative trajectory stitching을 수행한다.</li> <li>Diffusion-based refinement를 통해 stitched trajectory의 transition이 dynamics consistency를 유지하도록 정제한다.</li> </ol> <h3 id="temporal-distance-preserving-representation">Temporal Distance-Preserving Representation</h3> <p>Trajectory segment들을 식별하고 분류하기 위해서는 state 사이의 temporal closeness를 정확하게 측정할 수 있어야 한다. 단순히 raw state-space distance를 사용하면 두 state가 공간적으로 가까워 보이더라도 실제 dynamics 관점에서는 서로 도달하기 어려운 경우를 구분하지 못할 수 있다. 즉 state reachability를 무시하면 potential dynamics inconsistency가 발생하고, 결과적으로 incoherent한 stitching으로 이어질 수 있다.</p> <p>이를 해결하기 위해 temporal distance-preserving embedding을 학습한다. 이 embedding은 raw state를 latent space $\mathcal{Z}$로 mapping한다.</p> \[\phi : \mathcal{S} \to \mathcal{Z}\] <p>이후 latent space에서 state $s$와 goal $g$ 사이의 거리를 사용해 goal-conditioned value를 다음과 같이 정의한다.</p> \[V(s,g) := -\left\| \phi(s)-\phi(g) \right\|_2\] <p>이 goal-conditioned value function을 학습하기 위해 offline dataset $\mathcal{D}$를 사용한다. 학습 objective는 Implicit Q-Learning에서 영감을 받은 temporal difference objective로 정의된다.</p> \[\mathcal{L}_{\phi} := \mathbb{E}_{(s,a,s',g)\sim\mathcal{D}} \left[ \ell_{\xi}^{2} \!\left( - \mathbb{1}(s \neq g) - \gamma \left\| \bar{\phi}(s') - \bar{\phi}(g) \right\|_{2} + \left\| \phi(s) - \phi(g) \right\|_{2} \right) \right]\] <p>여기서 $\bar{\phi}$는 target network이고, $\gamma$는 discount factor이며, $\ell_{\xi}^{2}$는 expectile loss를 의미한다.</p> <p>Temporal distance-preserving embedding을 학습하기 위해서는 non-parametric particle-based estimator를 사용한다. 이 estimator는 state 사이의 temporal distance signal을 구성하고, 이를 통해 latent embedding이 단순한 raw state similarity가 아니라 reachability를 반영하도록 만든다.</p> <p>즉 $\phi$는 state를 단순한 geometric similarity가 아니라 learned optimal temporal distance를 기준으로 encode하는 방식이다. 이렇게 학습된 latent space에서는 서로 이어 붙일 수 있는 trajectory segment를 더 효율적으로 찾을 수 있다.</p> <aside class="callout callout--note" role="note"> <div class="callout__marker" aria-hidden="true"></div> <div class="callout__content"> <div class="callout__title">왜 raw state distance를 쓰지 않는가</div> <div class="callout__body"> <p>raw states의 Euclidean distance를 그대로 쓰면, 벽을 사이에 둔 $s$와 $g$처럼 공간적으로는 가까워도 실제로 바로 이동하기 어려운 경우를 구분하지 못한다.</p> <p>SCoTS는 이를 반영하기 위해 latent space $\mathcal{Z}$에서의 Euclidean distance가 optimal temporal distance $d^*(s,g)$를 근사하도록 embedding을 학습한다.</p> \[d^*(s,g) \approx \left\| \phi(s)-\phi(g) \right\|_2\] </div> </div> </aside> <aside class="callout callout--note" role="note"> <div class="callout__marker" aria-hidden="true"></div> <div class="callout__content"> <div class="callout__title">Latent metric의 역할</div> <div class="callout__body"> <p>학습된 latent space가 MDP의 정확한 metric representation일 필요는 없다. SCoTS는 temporal distance metric이 globally 정확하다고 가정하지 않도록 설계되어 있다.</p> <p>대신 이 metric은 전체 경로를 한 번에 계획하기 위한 전역 planning metric으로 쓰이는 것이 아니라, iterative stitching의 각 단계에서 경로 품질이 좋고 실제로 도달 가능한 candidate segment를 찾기 위해 사용된다.</p> </div> </div> </aside> <h3 id="directional-and-exploratory-trajectory-stitching">Directional and Exploratory Trajectory Stitching</h3> <p>이후 기존 dataset에 있는 짧은 trajectory segment들을 반복적으로 연결해 더 길고 다양한 trajectory를 만든다. 먼저 offline dataset $\mathcal{D}$로부터 initial segment $\tau_{\mathrm{init}}$를 선택하고, 이를 현재 composed trajectory $\tau_{\mathrm{comp}}$로 둔다.</p> <p>Diverse state coverage를 만들기 위해 fixed latent-space direction인 unit vector $\mathbf{z}$를 sample한다.</p> \[\mathbf{z} \sim \mathcal{N}(0,I), \qquad \mathbf{z} \leftarrow \frac{\mathbf{z}}{\|\mathbf{z}\|}\] <p>여기서 $\tau_{\mathrm{comp}}$는 현재까지 composed된 trajectory를 의미하고, $\operatorname{end}(\tau)$는 trajectory $\tau$의 final state를 반환하는 함수이다. Candidate segment 집합 ${\tau_j}<em>{j=1}^{k}$는 latent space에서 $\operatorname{end}(\tau</em>{\mathrm{comp}})$와 initial state가 가장 가까운 $k$개의 segment로 정의된다.</p> \[\{\tau_j\}_{j=1}^{k} = \operatorname{TopKNeighbors} \!\left( \phi(\operatorname{end}(\tau_{\mathrm{comp}})), \, \phi(\mathcal{D}), \, k \right)\] <p>여기서 $\phi(\mathcal{D})$는 dataset 안의 모든 trajectory segment의 initial state를 latent embedding한 집합을 간단히 표현한 것이다. 즉 candidate $\tau_j$의 initial state를 $s_{1,j}$라고 하면, neighbor retrieval에서 사용하는 distance metric은 다음과 같다.</p> \[\left\| \phi(\operatorname{end}(\tau_{\mathrm{comp}})) - \phi(s_{1,j}) \right\|_2\] <p>Stitching에 사용할 가장 좋은 candidate를 선택하기 위해, 각 candidate segment를 다시 평가한다. Candidate segment $\tau_j$는 다음과 같이 길이 $H$의 state sequence로 둔다.</p> \[\tau_j = (s_{1,j}, \ldots, s_{H,j})\] <p>이때 SCoTS는 directional progress와 novelty를 함께 고려하는 composite score를 사용한다. 즉 latent direction $\mathbf{z}$를 따라 trajectory가 얼마나 잘 진행되는지와, 기존에 충분히 방문하지 않은 state region을 얼마나 잘 cover하는지를 동시에 평가한다.</p> <p>Progress score는 candidate segment의 진행 방향이 latent space 안에서 exploration direction $\mathbf{z}$와 얼마나 잘 align되어 있는지를 측정한다. 즉 선택된 segment가 현재 composed trajectory를 미리 정한 latent direction으로 얼마나 잘 확장하는지를 평가한다.</p> \[P_j = \left\langle \phi(\operatorname{end}(\tau_j)) - \phi(s_{1,j}), \, \mathbf{z} \right\rangle\] <p>여기서 $\mathcal{V}_{\mathrm{rollout}}$은 이전에 stitched된 segment들을 따라 등장한 모든 state의 latent representation을 모아둔 집합을 의미한다.</p> <p>Novelty score는 exploration을 유도하고 새로운 latent state의 coverage를 증가시키기 위한 점수이다. 이는 이전에 latent space에서 방문한 state들과 비교했을 때, 각 candidate segment의 endpoint가 얼마나 새로운 영역에 위치하는지를 entropy 관점에서 추정하는 방식으로 계산된다.</p> \[N_j = \frac{1}{k_{\mathrm{density}}} \sum_{\phi_v \in \operatorname{k\text{-}NN} \left( \phi(\operatorname{end}(\tau_j)), \mathcal{V}_{\mathrm{rollout}}, k_{\mathrm{density}} \right)} \left\| \phi(\operatorname{end}(\tau_j)) - \phi_v \right\|_2\] <p>높은 $N_j$는 novelty가 높다는 의미이다. 즉 해당 candidate segment가 latent space 안에서 아직 덜 탐색된 영역으로 이동하며 state coverage를 확장하는 신호로 볼 수 있다. SCoTS는 progress score $P_j$와 novelty score $N_j$를 결합해 전체 selection criterion을 만든다.</p> \[S_j = P_j + \beta N_j\] <p>여기서 $\beta$는 progress와 novelty의 balance를 조절하는 parameter이다. 이후 가장 높은 score를 갖는 candidate $\tau_{\mathrm{best}}$를 선택해 현재 trajectory $\tau_{\mathrm{comp}}$에 이어 붙인다.</p> <p>Stitching 과정에서는 state space의 새로운 영역을 exploration하는 것과, 이미 유망한 trajectory를 확장하는 것 사이의 균형이 중요하다. 이를 위해 SCoTS는 latent directional exploration과 novelty-based selection을 함께 사용한다. 그 결과 이전에 exploration된 region들이 새로운 방식으로 연결되고, 특정 reward signal이나 기존 behavior pattern에만 치우치지 않는 trajectory coverage를 만들 수 있다.</p> <h3 id="diffusion-based-refinement">Diffusion-Based Refinement</h3> <p>앞의 과정에서 좋은 stitching candidate segment를 찾았더라도, 이를 현재 trajectory에 어떻게 자연스럽게 연결할지는 별도의 문제이다. 단순히 $\tau_{\mathrm{comp}}$ 뒤에 $\tau_{\mathrm{best}}$를 붙이면 segment 사이의 transition이 부자연스럽거나 dynamics consistency가 약할 수 있다.</p> <p>이를 다루기 위해 SCoTS는 diffusion-based refinement step을 추가한다. 구체적으로 stitcher model $p_{\theta}^{\mathrm{stitcher}}$를 사용해 selected segment $\tau_{\mathrm{best}}$를 고려한 refined trajectory $\tau’$를 생성한다.</p> \[\tau' \sim p_{\theta}^{\mathrm{stitcher}} \!\left( \,\cdot\, \mid s_1=\operatorname{end}(\tau_{\mathrm{comp}}), \, s_H=\operatorname{end}(\tau_{\mathrm{best}}) \right)\] <p>즉 stitcher는 현재 composed trajectory의 endpoint와 selected segment의 endpoint를 조건으로 받아, 두 segment를 dynamics feasibility를 유지하는 trajectory로 연결하도록 정제한다.</p> <h3 id="diffusion-planner-training">Diffusion Planner Training</h3> <p>최종적으로 refinement된 state-action trajectory들은 augmented dataset $\mathcal{D}_{\mathrm{aug}}$에 aggregate된다. 이러한 체계적이고 반복적인 augmentation 방식은 state space를 더 넓게 포함하는 augmented dataset을 생성한다.</p> <p>Diffusion planner는 이 augmented dataset을 통해 더 넓은 state-space coverage와 더 긴 horizon의 trajectory pattern을 학습할 수 있다.</p> <h2 id="experiments">Experiments</h2> <p>실험에서는 SCoTS가 단순히 trajectory를 더 많이 만드는 것을 넘어, 실제 planning과 offline GCRL 성능 향상에 도움이 되는지를 확인한다.</p> <table> <thead> <tr> <th>질문</th> <th>확인하고 싶은 점</th> </tr> </thead> <tbody> <tr> <td>SCoTS가 기존 dataset을 넘어 다양한 trajectory를 생성해 dataset을 확장하는가</td> <td>augmented dataset이 더 넓은 state-space coverage를 갖는지 확인한다.</td> </tr> <tr> <td>Augmented trajectory가 unseen scenario의 long-horizon 문제 해결에 도움이 되는가</td> <td>diffusion planner가 training distribution 밖의 task에서도 coherent trajectory를 만들 수 있는지 확인한다.</td> </tr> <tr> <td>Augmented dataset이 GCRL algorithm의 성능 향상에 기여하는가</td> <td>SCoTS가 특정 diffusion planner에만 유효한 것이 아니라, goal-conditioned RL에도 도움이 되는지 확인한다.</td> </tr> </tbody> </table> <h3 id="datasets-and-environments">Datasets and Environments</h3> <p>실험은 OGBench benchmark의 locomotion task를 사용한다. 주요 환경은 PointMaze와 AntMaze이며, 각 환경에서 Stitch dataset과 Explore dataset을 사용해 서로 다른 일반화 문제를 평가한다.</p> <table> <thead> <tr> <th>Dataset</th> <th>구성</th> <th>평가하는 능력</th> </tr> </thead> <tbody> <tr> <td>Stitch dataset</td> <td>최대 4 cell unit 길이의 짧은 goal-reaching trajectory들로 구성된다.</td> <td>성공적인 inference를 위해 여러 segment를 이어 붙이는 능력을 평가한다. 일부 task에서는 최대 8개의 segment를 stitching해야 한다.</td> </tr> <tr> <td>Explore dataset</td> <td>random direction을 자주 resampling하고 큰 action noise를 주입해 수집한 길지만 품질이 낮은 exploratory trajectory들로 구성된다.</td> <td>noisy하고 suboptimal한 trajectory로부터 navigation behavior를 학습할 수 있는지 평가한다.</td> </tr> </tbody> </table> <h3 id="diversity-and-state-coverage">Diversity and State Coverage</h3> <p>SCoTS가 trajectory stitching을 통해 다양한 state-space coverage를 만드는지 확인하기 위해 PointMaze-Giant-Stitch 환경에서 평가한다. 논문에서는 novelty weighting parameter $\beta \in {0,2,20}$에 따라 stitching 과정이 어떻게 달라지는지 시각화한다.</p> <p><img src="/assets/img/blog/paper-review-state-covering-trajectory-stitching-diffusion-planners/novelty-weight-coverage.png" alt="Novelty Weight Coverage" style="width: 50%; display: block; margin: 0 auto;"/></p> <p>$\beta=0$일 때는 latent directional guidance를 주로 따라가기 때문에 trajectory 방향은 뚜렷하지만 coverage가 제한된다. $\beta=2$에서는 directional progress와 novelty 사이의 균형이 가장 잘 맞아, 충분한 state-space coverage와 trajectory diversity를 함께 얻는다. 반대로 $\beta=20$처럼 novelty weight가 너무 크면 state space는 넓게 cover하지만, 서로 다른 latent exploration direction의 trajectory들이 겹치면서 구분성이 약해진다.</p> <p>따라서 논문에서는 모든 환경에서 $\beta=2$를 사용한다.</p> <h3 id="long-horizon-planning">Long-Horizon Planning</h3> <p>SCoTS-augmented data로 학습한 diffusion planner가 long-horizon planning을 더 잘 수행하는지도 확인한다. 아래 그림은 SCoTS-augmented data로 학습한 diffusion planner가 생성한 trajectory를 AntMaze의 두 가지 어려운 dataset에서 시각화한 것이다.</p> <p><img src="/assets/img/blog/paper-review-state-covering-trajectory-stitching-diffusion-planners/ogbench-long-horizon-results.png" alt="OGBench Long-Horizon Results"/></p> <p>위쪽의 Explore dataset은 random direction resampling과 큰 action noise로 수집된 low-quality trajectory로 구성된다. 따라서 원본 data는 길게 이어진 navigation behavior를 안정적으로 보여주기 어렵다. 아래쪽의 Stitch dataset은 trajectory segment 하나가 최대 4 maze cell로 제한되어 있기 때문에, long-horizon task를 풀려면 여러 short segment를 이어 붙이는 능력이 필요하다.</p> <p>즉 Explore는 data quality가 낮다는 점이 어렵고, Stitch는 segment horizon이 짧아 extensive stitching이 필요하다는 점이 어렵다. 그럼에도 SCoTS augmentation을 사용하면 planner가 원본 data의 horizon과 quality를 넘어, 지정된 start와 goal을 연결하는 trajectory를 생성할 수 있다.</p> <h3 id="offline-gcrl-with-scots-augmented-dataset">Offline GCRL with SCoTS-Augmented Dataset</h3> <p>SCoTS로 만든 augmented dataset이 diffusion planner에만 유효한 것이 아니라, offline goal-conditioned RL algorithm에도 도움이 되는지 확인한다.</p> <p><img src="/assets/img/blog/paper-review-state-covering-trajectory-stitching-diffusion-planners/gcrl-performance-enhancement.png" alt="GCRL Performance Enhancement" style="width: 50%; display: block; margin: 0 auto;"/></p> <p>위 표는 GCIQL, CRL, HIQL에 original dataset, SynthER-augmented dataset, SCoTS-augmented dataset을 적용했을 때의 성능을 비교한다. 평균 성능을 보면 SCoTS-augmented dataset을 사용한 경우가 가장 높으며, 특히 CRL과 HIQL에서 성능 향상이 크게 나타난다. 이는 SCoTS가 diffusion planner 전용 기법이 아니라, goal-conditioned learning에서도 더 나은 training distribution을 제공할 수 있음을 보여준다.</p> <h3 id="effectiveness-of-diffusion-based-stitching-refinement">Effectiveness of Diffusion-Based Stitching Refinement</h3> <p>마지막으로 diffusion-based refinement가 stitched trajectory의 dynamics consistency를 실제로 개선하는지 확인한다. 이를 위해 논문은 Dynamic Mean Squared Error(Dynamic MSE)를 사용한다. 여기서 $f^*$는 실제 환경의 ground-truth dynamics를 의미한다.</p> <p><img src="/assets/img/blog/paper-review-state-covering-trajectory-stitching-diffusion-planners/diffusion-refinement-dynamic-mse.png" alt="Diffusion Refinement Dynamic MSE" style="width: 50%; display: block; margin: 0 auto;"/></p> <p>그림에서 refinement를 사용하지 않은 경우에는 Dynamic MSE가 큰 영역에 많이 분포한다. 반면 refinement를 적용하면 Dynamic MSE가 훨씬 낮은 영역으로 이동한다. 이는 diffusion-based stitcher가 단순히 segment를 이어 붙이는 것이 아니라, transition이 실제 dynamics와 더 잘 맞도록 trajectory를 정제한다는 것을 보여준다.</p> <h2 id="discussion">Discussion</h2> <h2 id="한계-및-아쉬운-점">한계 및 아쉬운 점</h2> <ol> <li>Computational overhead가 존재한다. Diffusion-based stitcher model을 추가로 학습해야 하고, trajectory augmentation process 자체도 반복적으로 수행되기 때문에 refinement를 많이 사용할수록 계산 비용이 커질 수 있다.</li> <li>Temporal distance-preserving embedding은 asymmetric temporal distance를 명확히 구별하지 못할 수 있다. 따라서 irreversible action이 포함된 object manipulation task나, sparse connectivity를 가진 isolated region이 존재하는 환경처럼 highly asymmetric하거나 disconnected된 MDP에서는 효과가 제한될 수 있다.</li> </ol> <h2 id="내가-이해한-핵심">내가 이해한 핵심</h2> <h2 id="reference">Reference</h2>]]></content><author><name>Jeonghan Kim</name><email>kimjh9813@naver.com</email></author><category term="논문리뷰"/><category term="diffusion"/><category term="ai"/><category term="planning"/><category term="diffusion-model"/><category term="offline-rl"/><category term="trajectory-stitching"/><category term="paper-review"/><summary type="html"><![CDATA[논문 정보]]></summary></entry><entry><title type="html">[논문리뷰] Generative Modeling via Drifting</title><link href="https://kim-jeonghan.github.io/blog/2026/paper-review-generative-modeling-via-drifting/" rel="alternate" type="text/html" title="[논문리뷰] Generative Modeling via Drifting"/><published>2026-07-02T15:00:00+00:00</published><updated>2026-07-06T10:37:42+00:00</updated><id>https://kim-jeonghan.github.io/blog/2026/paper-review-generative-modeling-via-drifting</id><content type="html" xml:base="https://kim-jeonghan.github.io/blog/2026/paper-review-generative-modeling-via-drifting/"><![CDATA[<h2 id="논문-정보">논문 정보</h2> <ul> <li>Title: Generative Modeling via Drifting (arXiv 2026)</li> <li>Authors: Mingyang Deng, He Li, Tianhong Li, Yilun Du, Kaiming He</li> <li>Links: <a href="https://lambertae.github.io/projects/drifting/">Project</a>, <a href="https://arxiv.org/abs/2602.04770">Paper</a>, <a href="https://github.com/lambertae/drifting">Code</a></li> </ul> <h2 id="한-줄-요약">한 줄 요약</h2> <ul> <li>diffusion이나 flow matching에서 data distribution에 가까워지기 위해 반복적으로 noise를 제거하거나 vector field를 따라 sample을 이동시키는 과정을, inference time에는 한 번의 forward pass로 수행할 수 있게 만든 generative modeling 방법</li> </ul> <h2 id="문제-정의">문제 정의</h2> <p>Generative model은 prior sample $z \sim p_z$를 generator $f_{\theta}$로 data space에 mapping한다.</p> \[z \sim p_z, \qquad x = f_{\theta}(z)\] <p>이때 생성된 distribution은 pushforward distribution $q_{\theta}$로 표현된다.</p> \[q_{\theta} = (f_{\theta})_{\sharp} p_z\] <p>따라서 목표는 $q_{\theta}$가 실제 data distribution $p_{\mathrm{data}}$와 가까워지도록 $f_{\theta}$를 학습하는 것이다.</p> <p><img src="/assets/img/blog/paper-review-generative-modeling-via-drifting/pushforward-training-loss.png" alt="Pushforward Training Loss"/></p> <p>위 그림은 training이 진행될수록 generator가 만든 pushforward distribution이 data distribution에 가까워지는 과정을 보여준다. 아래 loss curve는 iteration이 증가할수록 두 distribution 사이의 loss가 낮아지는 것을 나타낸다.</p> <h3 id="기존-방식의-한계">기존 방식의 한계</h3> <p>기존 generative model 중 diffusion-based model과 flow-based model은 prior distribution에서 data distribution으로 sample을 이동시키는 과정을 반복적으로 수행한다.</p> <table> <thead> <tr> <th>구분</th> <th>대표 연구</th> <th>핵심 방식</th> <th>한계</th> </tr> </thead> <tbody> <tr> <td>Diffusion-based model</td> <td>Deep Unsupervised Learning using Nonequilibrium Thermodynamics, Denoising Diffusion Probabilistic Models, Score-Based Generative Modeling through Stochastic Differential Equations</td> <td>noise를 점진적으로 제거하면서 sample을 data distribution 쪽으로 이동시킨다.</td> <td>inference time에 여러 step의 neural network evaluation이 필요하다.</td> </tr> <tr> <td>Flow-based model</td> <td>Flow Matching for Generative Modeling, Flow Straight and Fast, Stochastic Interpolants</td> <td>vector field를 따라 sample을 data distribution 쪽으로 이동시킨다.</td> <td>SDE/ODE dynamics를 수치적으로 풀기 위해 여러 step update가 필요할 수 있다.</td> </tr> <tr> <td>Step reduction</td> <td>distillation-based method, from-scratch one-step generator</td> <td>inference step을 줄이기 위해 반복적인 SDE/ODE dynamics를 training 과정 안에 포함시키려 한다.</td> <td>별도의 distillation 과정이나 one-step generator training이 필요하다.</td> </tr> <tr> <td>GAN 계열 one-step generator</td> <td>GAN</td> <td>single forward pass로 sample을 생성하지만 adversarial optimization을 사용한다.</td> <td>training instability나 mode collapse 문제가 발생할 수 있다.</td> </tr> </tbody> </table> <h2 id="핵심-아이디어">핵심 아이디어</h2> <p>Drifting model은 복잡한 pushforward map을 inference time에 여러 step으로 나누어 수행하는 대신, training time에 학습시키는 방식이다. 이를 통해 diffusion이나 flow matching에서 필요한 iterative inference 절차를 제거하고, 학습된 generator의 single forward pass로 sample을 생성할 수 있게 한다.</p> <p>이를 위해 저자는 drifting field라는 개념을 정의한다. Drifting field는 generated distribution과 data distribution의 차이에 의존해 sample들이 어느 방향으로 움직여야 하는지를 나타내는 field이다. 두 distribution이 match되면 더 이상 이동시킬 방향이 없으므로 drifting field는 0이 된다.</p> <h2 id="method">Method</h2> <h3 id="pushforward-distribution">Pushforward Distribution</h3> <p>Generator를 다음과 같은 mapping으로 둔다.</p> \[f : \mathbb{R}^{C} \to \mathbb{R}^{D}\] <p>입력은 noise $\epsilon \sim p_{\epsilon}$이고, output은 data space의 sample $\mathbf{x} = f(\epsilon) \in \mathbb{R}^{D}$이다. 이때 input dimension $C$와 output dimension $D$는 서로 달라도 된다.</p> <p>network output의 distribution을 $q$라고 두면 다음과 같이 쓸 수 있다.</p> \[\mathbf{x} = f(\epsilon) \sim q\] <p>$q$는 $p_{\epsilon}$이 $f$에 의해 밀려서 만들어진 pushforward distribution이다.</p> \[q = f_{\sharp}p_{\epsilon}\] <p>여기서 $\sharp$는 $f$에 의해 유도되는 pushforward를 의미한다.</p> <p>neural network training은 반복적으로 진행되므로, training 과정은 model sequence ${f_i}$를 만든다고 볼 수 있다. 마찬가지로 각 training iteration $i$에 대응되는 pushforward distribution sequence ${q_i}$도 정의할 수 있다.</p> \[q_i = [f_i]_{\sharp}p_{\epsilon}\] <p>training이 진행될수록 $q_i$는 점진적으로 data distribution $p_{\mathrm{data}}$와 match되도록 학습된다.</p> <h3 id="drifting-field-for-training">Drifting Field for Training</h3> <p>training iteration이 진행되면서 generator $f_i$가 $f_{i+1}$로 업데이트되면, 같은 noise $\epsilon$에서 생성되는 sample도 함께 이동한다.</p> \[\mathbf{x}_{i+1} = \mathbf{x}_i + \Delta \mathbf{x}_i\] <p>여기서 $\Delta \mathbf{x}_i$는 다음과 같이 정의된다.</p> \[\Delta \mathbf{x}_i := f_{i+1}(\epsilon) - f_i(\epsilon)\] <p>즉 $\Delta \mathbf{x}_i$는 generator $f$의 parameter update로 인해 발생하는 sample의 차이값이다. 이처럼 training 과정에서 $f$가 업데이트되면서 generated sample $\mathbf{x}$가 이동하는 현상을 이 논문에서는 drift로 정의한다.</p> <p>drifting field는 현재 sample $\mathbf{x}$가 주어졌을 때, 그 sample이 이동해야 하는 방향 $\Delta \mathbf{x}$를 계산하는 함수로 볼 수 있다.</p> \[V_{p,q}(\cdot) : \mathbb{R}^{D} \to \mathbb{R}^{D}\] <p>앞의 training iteration은 drifting field를 사용해 다음과 같이 다시 쓸 수 있다.</p> \[\mathbf{x}_{i+1} = \mathbf{x}_i + V_{p,q_i}(\mathbf{x}_i)\] <p>여기서 $p$는 data distribution $p_{\mathrm{data}}$를 줄여 쓴 것이고, $q_i$는 training iteration $i$에서의 current generated distribution을 의미한다.</p> \[\mathbf{x}_i = f_i(\epsilon) \sim q_i\] <p>drifting 이후 sample은 다음 iteration의 generated distribution에 대응된다.</p> \[\mathbf{x}_{i+1} \sim q_{i+1}\] <p><strong>Proposition 1.</strong> Drifting field는 anti-symmetric property를 갖는다.</p> \[V_{p,q}(\mathbf{x}) = -V_{q,p}(\mathbf{x}), \qquad \forall \mathbf{x}\] <p>또한 generated distribution과 data distribution이 같아져 $q = p$가 되면, drifting field는 0이 된다.</p> \[q = p \Rightarrow V_{p,q}(\mathbf{x}) = 0, \qquad \forall \mathbf{x}\] <p>직관적으로는 $p$와 $q$의 위치를 바꾸면, sample을 이동시켜야 하는 방향만 반대로 바뀌어야 한다. 따라서 같은 위치 $\mathbf{x}$에서 $V_{p,q}$와 $V_{q,p}$는 부호만 다른 field가 된다.</p> <p>또한 $p$와 $q$가 match되면 더 이상 한 distribution을 다른 distribution 쪽으로 이동시킬 필요가 없으므로 drift는 0이 된다. 다만 converse implication은 일반적으로 성립하지 않는다. 즉 $V_{p,q} = 0$이라고 해서 항상 $q = p$라고 말할 수는 없다.</p> <h3 id="training-objective">Training Objective</h3> <p>$f_{\theta}$를 parameter $\theta$를 갖는 neural network라고 두고, noise $\epsilon \sim p_{\epsilon}$에 대해 generated sample을 $\mathbf{x} = f_{\theta}(\epsilon)$ 이라 한다.</p> <p>앞에서 정의한 drifting field를 사용하면, 현재 generator의 output을 data distribution 쪽으로 이동시킨 target generator를 다음처럼 생각할 수 있다.</p> \[f_{\mathrm{target}}(\epsilon) = f_{\theta}(\epsilon) + V_{p,q_{\theta}}\!\left(f_{\theta}(\epsilon)\right)\] <p>이 식은 training 과정에서 fixed-point iteration을 유도한다. 즉 training iteration $i$에서 다음을 만족하는 새로운 network $f_{\theta_{i+1}}$를 찾는 방식으로 볼 수 있다.</p> \[f_{\theta_{i+1}}(\epsilon) \leftarrow f_{\theta_i}(\epsilon) + V_{p,q_{\theta_i}}\!\left(f_{\theta_i}(\epsilon)\right)\] <p>이를 loss function으로 바꾸면 다음과 같이 쓸 수 있다.</p> \[\mathcal{L} = \mathbb{E}_{\epsilon} \left[ \left\| f_{\theta}(\epsilon) - \operatorname{stopgrad} \!\left( f_{\theta}(\epsilon) + V_{p,q_{\theta}}\!\left(f_{\theta}(\epsilon)\right) \right) \right\|^2 \right]\] <p>여기서 stop-gradient operation은 target이 되는 frozen state를 제공한다. 즉 현재 network output에 drifting field를 더해 만든 target을 고정해 두고, $f_{\theta}$가 그 target에 가까워지도록 학습한다.</p> <h3 id="designing-the-drifting-field">Designing the Drifting Field</h3> <p>$V_{p,q}$는 $p$와 $q$ 두 distribution에 의존하므로, 실제로 계산 가능한 형태를 얻기 위해 추가적인 정의가 필요하다. 이를 위해 논문에서는 kernel-like function $\mathcal{K}(\cdot,\cdot,\cdot)$를 사용해 drifting field를 다음과 같이 정의한다.</p> \[V_{p,q}(\mathbf{x}) = \mathbb{E}_{\mathbf{y}^{+} \sim p} \mathbb{E}_{\mathbf{y}^{-} \sim q} \left[ \mathcal{K}(\mathbf{x}, \mathbf{y}^{+}, \mathbf{y}^{-}) \right] \tag{1}\] <p>$\mathcal{K}$는 세 개의 sample point 사이의 interaction을 계산하는 함수로 볼 수 있으며, 선택적으로 $p$와 $q$에 의존할 수 있다. 이 framework는 하나의 특정 kernel만 가정하지 않고, 비교적 넓은 class의 function $\mathcal{K}$를 지원한다.</p> <p>직관적으로 $V$는 attraction과 repulsion으로부터 유도된 field로 볼 수 있다. Data distribution 쪽으로는 sample을 끌어당기고, current generated distribution 안에서는 sample들이 적절히 퍼지도록 만드는 방식이며, 이는 mean-shift 방식에서 영감을 받은 해석이다. 마찬가지로 $p = q$가 되면 이동시킬 방향이 사라지므로 $V$는 0이 된다.</p> <p>구체적으로 이 논문에서는 다음과 같은 attraction field와 repulsion field를 사용한다.</p> \[\begin{aligned} V_p^{+}(\mathbf{x}) &amp;:= \frac{1}{Z_p(\mathbf{x})} \mathbb{E}_{p} \!\left[ k(\mathbf{x},\mathbf{y}^{+}) \left( \mathbf{y}^{+} - \mathbf{x} \right) \right], \\[6pt] V_q^{-}(\mathbf{x}) &amp;:= \frac{1}{Z_q(\mathbf{x})} \mathbb{E}_{q} \!\left[ k(\mathbf{x},\mathbf{y}^{-}) \left( \mathbf{y}^{-} - \mathbf{x} \right) \right]. \end{aligned} \tag{2}\] <p>여기서 $Z_p(\mathbf{x})$와 $Z_q(\mathbf{x})$는 normalization factor이다.</p> \[\begin{aligned} Z_p(\mathbf{x}) &amp;:= \mathbb{E}_{p} \!\left[ k(\mathbf{x},\mathbf{y}^{+}) \right], \\[4pt] Z_q(\mathbf{x}) &amp;:= \mathbb{E}_{q} \!\left[ k(\mathbf{x},\mathbf{y}^{-}) \right]. \end{aligned} \tag{3}\] <p>이는 직관적으로 $\mathbf{y} - \mathbf{x}$ 차이 vector의 weighted mean을 계산하는 것이다. 최종 drifting field는 다음처럼 attraction에서 repulsion을 빼는 방식으로 정의된다.</p> \[V_{p,q}(\mathbf{x}) := V_p^{+}(\mathbf{x}) - V_q^{-}(\mathbf{x}) \tag{4}\] <p>앞에서 정의한 두 식을 합치면 다음과 같은 형태가 된다.</p> \[V_{p,q}(\mathbf{x}) = \frac{1}{Z_p(\mathbf{x})Z_q(\mathbf{x})} \mathbb{E}_{p,q} \!\left[ k(\mathbf{x},\mathbf{y}^{+}) k(\mathbf{x},\mathbf{y}^{-}) \left( \mathbf{y}^{+} - \mathbf{y}^{-} \right) \right] \tag{5}\] <p>이는 positive sample $\mathbf{y}^{+}$가 있는 방향으로 sample을 끌어당기고, negative sample $\mathbf{y}^{-}$가 만드는 방향은 빼는 형태로 작동한다. 이때 weight는 두 개의 kernel $k(\mathbf{x},\mathbf{y}^{+})$, $k(\mathbf{x},\mathbf{y}^{-})$와 normalization factor $Z_p(\mathbf{x})Z_q(\mathbf{x})$로부터 jointly 계산된다.</p> <p>결국 식 (5)는 식 (1)의 구체적인 instantiation으로 볼 수 있다. 이 형태에서는 $V$가 anti-symmetric하다는 점도 비교적 쉽게 확인할 수 있다. 다만 이 방법이 항상 attraction과 repulsion으로 분해되어야 하는 것은 아니다. 일반적으로 필요한 조건은 $p = q$일 때 $V = 0$이 되는 것이다.</p> <p>kernel $k(\cdot,\cdot)$는 두 sample 사이의 유사성을 측정하는 함수이다. 이 논문에서는 다음 형태를 사용한다.</p> \[k(\mathbf{x},\mathbf{y}) = \exp\!\left( -\frac{1}{\tau} \|\mathbf{x}-\mathbf{y}\|_2 \right) \tag{6}\] <p>여기서 $\tau$는 temperature이고, $|\cdot|_2$는 $\ell_2$ distance이다. 식 (5)에서는 normalization factor가 함께 들어가므로, normalized kernel을 다음처럼 볼 수 있다.</p> \[\tilde{k}(\mathbf{x},\mathbf{y}) := \frac{1}{Z} k(\mathbf{x},\mathbf{y})\] <p>실제 구현에서는 $\tilde{k}$를 softmax operation으로 계산한다. 이때 logit은 $-\frac{1}{\tau}|\mathbf{x}-\mathbf{y}|_2$로 주어지고, softmax는 $\mathbf{y}$에 대해 계산된다.</p> <p>추가로 논문에서는 batch 안의 generated sample set ${\mathbf{x}}$에 대해서 한 번 더 softmax normalization을 적용한다. 이는 실제 성능을 조금 개선하며, 이렇게 추가된 normalization은 최종 $V$의 anti-symmetric property를 바꾸지 않는다.</p> <p><img src="/assets/img/blog/paper-review-generative-modeling-via-drifting/drifting-field-attraction-repulsion.png" alt="Drifting Field Attraction and Repulsion" style="width: 50%; display: block; margin: 0 auto;"/></p> <p>위 그림은 positive sample $\mathbf{y}^{+} \sim p$가 attraction field $V_p^{+}$를 만들고, negative sample $\mathbf{y}^{-} \sim q$가 repulsion field $V_q^{-}$를 만드는 과정을 보여준다. 최종 drifting field $V$는 이 두 방향의 차이로 결정된다.</p> <p>이 loss의 값은 drifting field $V$의 squared norm을 최소화하는 것과 같은 의미로 볼 수 있다.</p> \[\mathbb{E}_{\epsilon} \left[ \left\| V\!\left(f_{\theta}(\epsilon)\right) \right\|^2 \right] \tag{7}\] <p>다만 이는 loss의 값이 $|V|^2$와 같다는 의미이지, $|V|^2$를 직접 미분한다는 뜻은 아니다. stop-gradient 때문에 gradient는 target 바깥쪽 $f_{\theta}$로만 흐르며, $f_{\theta}$는 고정된 drifted target $f_{\theta} + V$ 쪽으로 당겨진다.</p> <p>따라서 이 loss는 $|V|^2$를 줄이도록 학습한다. 이상적으로는 $V \approx 0$이면 $q \approx p$가 되기를 기대할 수 있다. 하지만 이 implication은 임의의 $V$에 대해 항상 성립하지는 않는다. 논문에서는 경험적으로 $|V|^2$가 감소할수록 generation quality가 좋아지는 경향을 관찰했고, kernelized construction에서는 zero-drift condition이 $(p,q)$에 많은 bilinear constraint를 부여하여 mild non-degeneracy assumption 아래에서 $p$와 $q$가 근사적으로 match되도록 만든다고 설명한다.</p> <p>stochastic training에서는 empirical mean을 사용해 $V$를 추정한다. 각 training step에서 noise $\epsilon \sim p_{\epsilon}$를 여러 개 뽑고, 이를 generator에 통과시켜 generated sample batch $\mathbf{x} = f_{\theta}(\epsilon) \sim q$를 만든다. 이 generated sample들은 같은 batch 안에서 negative sample $\mathbf{y}^{-} \sim q$로 사용된다. 반면 positive sample은 data distribution에서 $N_{\mathrm{pos}}$개의 data point를 뽑아 $\mathbf{y}^{+} \sim p_{\mathrm{data}}$로 사용한다.</p> <p><img src="/assets/img/blog/paper-review-generative-modeling-via-drifting/algorithm-1-training-loss.png" alt="Algorithm 1 Training Loss" style="width: 50%; display: block; margin: 0 auto;"/></p> <p>위 알고리즘은 noise에서 generated sample을 만들고, 같은 batch의 generated sample을 negative sample로 재사용한 뒤, positive sample과 함께 $V$를 계산해 drifted target을 만드는 training loss 계산 과정을 보여준다.</p> <p>다만 stop-gradient formulation에서는 solver가 $V$를 통해 직접 back-propagation을 수행하지 않는다. $V$는 $q_{\theta}$에 의존하고, distribution을 통한 back-propagation은 non-trivial하기 때문이다. 대신 이 objective는 $\mathbf{x} = f_{\theta}(\epsilon)$를 현재 iteration에서 frozen된 drifted version, 즉 $\mathbf{x} + \Delta \mathbf{x}$ 쪽으로 이동시키는 방식으로 목적함수를 간접적으로 최소화한다.</p> <h3 id="feature-space">Feature Space</h3> <p>앞의 loss는 raw data space에서 정의했지만, feature extractor $\phi$를 사용하면 feature space에서도 같은 방식으로 쓸 수 있다.</p> \[\mathbb{E} \left[ \left\| \phi(\mathbf{x}) - \operatorname{stopgrad} \!\left( \phi(\mathbf{x}) + V\!\left(\phi(\mathbf{x})\right) \right) \right\|^2 \right]\] <h4 id="relation-to-perceptual-loss">Relation to Perceptual Loss</h4> <p>이 feature-space loss는 perceptual loss와 관련이 있지만 개념적으로는 다르다. Perceptual loss는 보통 다음과 같이 target image $\mathbf{x}_{\mathrm{target}}$와의 feature distance를 줄인다.</p> \[\left\| \phi(\mathbf{x}) - \phi(\mathbf{x}_{\mathrm{target}}) \right\|_2^2\] <p>즉 regression target은 $\phi(\mathbf{x}<em>{\mathrm{target}})$이고, 이를 위해 $\mathbf{x}$와 $\mathbf{x}</em>{\mathrm{target}}$의 pairing이 필요하다. 반면 drifting의 feature-space loss에서 regression target은 $\phi(\mathbf{x}) + V(\phi(\mathbf{x}))$이다.</p> <h3 id="classifier-free-guidance">Classifier-Free Guidance</h3> <p>Drifting framework는 classifier-free guidance도 기본적으로 지원한다. Class label $c$가 condition으로 주어졌을 때, 수식적으로는 target distribution을 다음처럼 바꾸면 된다.</p> \[\tilde{q}(\,\cdot \mid c\,) \triangleq (1-\gamma)\, q_{\theta}(\,\cdot \mid c\,) + \gamma\, p_{\mathrm{data}}(\,\cdot \mid \varnothing)\] <p>여기서 $\gamma \in [0,1)$는 conditional 생성 분포 $q_{\theta}(\,\cdot \mid c\,)$와 unconditional data distribution $p_{\mathrm{data}}(\,\cdot \mid \varnothing)$를 섞는 비율을 조절한다.</p> <p>equilibrium 관점에서는 guided target이 conditional data distribution에 맞춰지도록 $q_{\theta}(\,\cdot \mid c\,)$를 조정하는 것으로 볼 수 있다.</p> <p>이를 정리하면 다음과 같이 쓸 수 있다.</p> \[q_{\theta}(\,\cdot \mid c\,) = \alpha\, p_{\mathrm{data}}(\,\cdot \mid c\,) - (\alpha-1)\, p_{\mathrm{data}}(\,\cdot \mid \varnothing)\] <p>여기서 $\alpha = \frac{1}{1-\gamma}$이다.</p> <p>실제로는 unconditional data distribution $p_{\mathrm{data}}(\,\cdot \mid \varnothing)$에서 추가 negative example을 sampling하는 방식으로 구현된다. 또한 $q_{\theta}(\,\cdot \mid c\,)$는 class-conditional network $f_{\theta}(\cdot \mid c)$에 대응된다.</p> <h2 id="experiments">Experiments</h2> <h3 id="실험-설정">실험 설정</h3> <table> <thead> <tr> <th>항목</th> <th>설정</th> </tr> </thead> <tbody> <tr> <td>Image generation task</td> <td>ImageNet 256x256</td> </tr> <tr> <td>Tokenizer</td> <td>SD-VAE latent space 사용</td> </tr> <tr> <td>Latent shape</td> <td>32x32x4</td> </tr> <tr> <td>Architecture</td> <td>DiT-like architecture</td> </tr> <tr> <td>Input</td> <td>32x32x4-dimensional Gaussian noise $\epsilon$</td> </tr> <tr> <td>Output</td> <td>input과 같은 32x32x4 latent representation</td> </tr> <tr> <td>Conditioning</td> <td>CFG conditioning 사용</td> </tr> <tr> <td>Normalization</td> <td>adaLN-zero 사용</td> </tr> <tr> <td>Feature extractor</td> <td>self-supervised pre-trained ResNet-style encoder 사용. MoCo, SimCLR 기반 encoder를 주로 사용</td> </tr> <tr> <td>Feature extraction</td> <td>pixel-space encoder를 쓸 때는 VAE decoder로 latent output을 pixel space로 복원한 뒤 feature 추출</td> </tr> <tr> <td>Multi-scale feature</td> <td>ResNet-style model의 여러 stage feature map에서 drifting loss를 계산한 뒤 합침</td> </tr> <tr> <td>Additional encoder</td> <td>latent-space pre-trained MAE encoder도 실험</td> </tr> <tr> <td>Pixel-space generation</td> <td>지원함. 이 경우 $\epsilon,\mathbf{x} \in \mathbb{R}^{256 \times 256 \times 3}$, patch size는 16, $\phi$는 pixel space에 직접 적용</td> </tr> </tbody> </table> <h3 id="robotic-control">Robotic Control</h3> <p>논문에서는 drifting을 image generation뿐 아니라 robotic control에도 적용한다. 구체적으로 diffusion policy에 drifting 방식을 적용하고, 기존 Diffusion Policy의 100 NFE 설정과 Drifting Policy의 1 NFE 설정을 비교한다.</p> <p><img src="/assets/img/blog/paper-review-generative-modeling-via-drifting/robotic-control-diffusion-policy-comparison.png" alt="Robotic Control Diffusion Policy Comparison" style="width: 50%; display: block; margin: 0 auto;"/></p> <p>위 결과는 Drifting Policy가 1 NFE만 사용하면서도 여러 robotic control task에서 100 NFE Diffusion Policy와 비슷하거나 더 높은 success rate를 보일 수 있음을 보여준다.</p> <h2 id="discussion">Discussion</h2> <p>이 논문은 $q = p$이면 $V = 0$이 된다는 방향을 보인다. 그러나 반대 방향, 즉 $V \to 0$이면 $q \to p$가 되는지는 일반적으로 이론적으로 보장되지 않는다.</p> <p>논문에서 설계한 drifting field $V$는 empirical하게 좋은 성능을 보이지만, 어떤 조건에서 $V \to 0$이 실제로 $q \to p$를 의미하는지는 아직 명확하지 않다. 따라서 drifting field의 설계와 zero-drift condition이 distribution matching을 얼마나 강하게 보장하는지는 중요한 논의 지점으로 남는다.</p> <p>실용적인 관점에서도 현재 제안된 drifting modeling은 효과적인 instantiation이지만, 여러 설계 선택이 아직 sub-optimal일 수 있다. 예를 들어 drifting field와 kernel의 설계, feature encoder 선택, generator architecture는 모두 앞으로 더 탐색될 수 있는 부분이다.</p> <p>더 넓은 관점에서 보면, 이 논문은 iterative neural network training 자체를 distribution evolution의 mechanism으로 재해석한다. 이는 diffusion이나 flow-based model이 differential equation을 통해 distribution의 변화를 정의하는 것과 대비된다. 저자는 이러한 관점이 앞으로 다른 형태의 training-time distribution evolution 방법을 탐색하는 데 도움이 될 수 있다고 본다.</p> <h2 id="한계-및-아쉬운-점">한계 및 아쉬운 점</h2> <p>1. 2.</p> <h2 id="내가-이해한-핵심">내가 이해한 핵심</h2> <p>-</p> <h2 id="reference">Reference</h2> <ul> <li><a href="https://arxiv.org/abs/2602.04770">Generative Modeling via Drifting</a></li> <li><a href="https://lambertae.github.io/projects/drifting/">Project Page</a></li> <li><a href="https://github.com/lambertae/drifting">Official Code</a></li> </ul>]]></content><author><name>Jeonghan Kim</name><email>kimjh9813@naver.com</email></author><category term="논문리뷰"/><category term="diffusion"/><category term="ai"/><category term="generative-modeling"/><category term="one-step-generation"/><category term="paper-review"/><summary type="html"><![CDATA[논문 정보]]></summary></entry><entry><title type="html">Monte-Carlo Tree Search (MCTS) 개념</title><link href="https://kim-jeonghan.github.io/blog/2026/monte-carlo-tree-search-concept-practice/" rel="alternate" type="text/html" title="Monte-Carlo Tree Search (MCTS) 개념"/><published>2026-06-26T15:34:30+00:00</published><updated>2026-07-01T06:30:02+00:00</updated><id>https://kim-jeonghan.github.io/blog/2026/monte-carlo-tree-search-concept-practice</id><content type="html" xml:base="https://kim-jeonghan.github.io/blog/2026/monte-carlo-tree-search-concept-practice/"><![CDATA[<h2 id="개요">개요</h2> <p>Monte-Carlo Tree Search, 줄여서 MCTS는 AlphaGo에서 다음 수를 선택하기 위한 search/planning 방법으로 사용되며 유명해졌다. 물론 내가 그때 처음 들어봤을 수도 있다.</p> <p>강화학습에서 주로 쓰이는 알고리즘이고 빈번하게 등장하니까 이번 기회에 한번 다루어보고자 한다.</p> <h2 id="mcts가-필요한-이유">MCTS가 필요한 이유</h2> <p>MCTS를 사용하는 이유는 AlphaGo 논문을 생각하면 이해하기 쉽다. 바둑처럼 가능한 경우의 수가 매우 많은 문제에서는 탐색 깊이가 증가할수록 가능한 상태와 action의 조합이 지수적으로 폭발한다. 그래서 모든 경우를 완전 탐색하는 것은 거의 불가능하다.</p> <p>MCTS는 모든 경우의 수를 전부 탐색하는 대신, 현재 상태에서 가능한 미래를 여러 번 샘플링하고 rollout한 뒤, 그 결과로 얻은 보상을 평균내어 각 선택의 가치를 추정한다. 즉, 모든 미래를 정확히 계산하는 것이 아니라 일부 미래를 무작위로 경험해보고, 어느 선택이 더 좋은지를 통계적으로 판단하는 방식이다.</p> <h2 id="mcts의-문제-설정">MCTS의 문제 설정</h2> <p>MCTS를 적용하려면 먼저 문제를 state, action, transition, reward 관점에서 바라볼 수 있어야 한다. 이때 자주 사용하는 표현 방식이 Markov Decision Process(MDP)이다. MDP는 다음 상태가 과거 전체 history가 아니라 현재 state와 현재 action에만 의존한다고 가정한다.</p> <p>MDP는 보통 다음 네 가지 요소로 모델링된다.</p> \[(\mathcal{S}, \mathcal{A}, P, r)\] <ul> <li>$\mathcal{S}$는 환경에서 가능한 state의 집합이다. 초기 state는 $s_0 \in \mathcal{S}$로 표현한다.</li> <li>$\mathcal{A}(s)$는 특정 state $s$에서 사용할 수 있는 action의 집합이다.</li> <li>$P(s’ \mid s,a)$는 state $s$에서 action $a$를 수행했을 때 다음 state $s’$로 transition될 확률을 나타낸다.</li> <li>$r(s,a,s’)$는 state $s$에서 action $a$를 수행해 state $s’$에 도달했을 때 받는 reward를 나타낸다.</li> </ul> <h2 id="주요-특징">주요 특징</h2> <ol> <li>$Q(s, a)$는 state $s$에서 action $a$를 선택했을 때의 가치를 의미한다. MCTS에서는 이 값을 구할때, 모든 미래를 정확히 계산해서 구하지 않고, 여러 번의 random simulation을 통해 근사한다.</li> <li>이 글에서는 우선 single-agent problem 관점에서 MCTS를 설명한다. 이 경우 MCTS는 ExpectiMax search tree를 점진적으로 구성한다고 볼 수 있다. 여기서 ExpectiMax tree란, 현재 선택 이후 가능한 미래 state들을 tree로 펼치고, simulation 결과의 평균을 통해 각 action의 기대값을 추정하는 구조를 의미한다.</li> <li>Search는 미리 정의한 연산 시간이나 최대 확장 node 수에 도달하면 종료된다. 탐색을 끝까지 완료하지 못하더라도, 지금까지의 simulation 결과로 근사한 $Q(s, a)$를 기준으로 현재까지 가장 좋은 action $a^{*} = \arg\max_{a \in \mathcal{A}(s)} Q(s, a)$를 얻을 수 있다.</li> <li>탐색이 끝나면 가장 성능이 좋은 action $a^{*}$를 return한다.</li> </ol> <h2 id="알고리즘-흐름">알고리즘 흐름</h2> <p>기본적인 MCTS 알고리즘은 다음 단계를 반복적으로 수행한다.</p> <ul> <li>Selection: 자식 node가 하나 이상 있는 상황에서, 자식 node 중 하나를 선택한다.</li> <li>Expansion: 선택된 node에서 가능한 action을 사용해 새로운 child node로 확장한다.</li> <li>Simulation / Rollout: 확장된 node에서 terminal state에 도달할 때까지 simulation한다.</li> <li>Backpropagation: simulation 결과로 얻은 value를 root node 방향으로 전달한다.</li> </ul> <p><img src="/assets/img/blog/monte-carlo-tree-search-concept-practice/mcts-phases.png" alt="MCTS phases"/></p> <p>기본적으로 MCTS tree 안의 각 node는 다음 정보를 저장한다.</p> <ol> <li>자식 node의 집합</li> <li>parent node와 parent에서 현재 node로 이동할 때 사용한 action에 대한 pointer</li> <li>해당 node를 몇 번 방문했는지 나타내는 visit count</li> <li>simulation 결과로부터 누적된 value 또는 reward 통계</li> </ol> <p>전체 흐름을 pseudocode로 쓰면 다음과 같다.</p> <figure class="algorithm-block" id="algorithm-single-agent-mcts" data-label="algorithm:single-agent-mcts"> <figcaption class="algorithm-block__caption"> <span class="algorithm-block__title">Algorithm 1. Monte-Carlo Tree Search</span> </figcaption> <div class="algorithm-block__math">$$ \begin{array}{l} \textbf{Input : } M = \langle \mathcal{S}, s_0, \mathcal{A}, P(s' \mid s,a), r(s,a,s') \rangle,\ Q,\ B \\ \textbf{Output : } Q \\[1mm] \textbf{while } \mathrm{current\_time} &lt; B\ \textbf{do} \\ \quad\quad v \leftarrow \operatorname{Select}(s_0) \\ \quad\quad v' \leftarrow \operatorname{Expand}(v) \\ \quad\quad G \leftarrow \operatorname{Simulate}(v') \\ \quad\quad \operatorname{Backpropagate}(v', Q, G) \\[1mm] \textbf{return } Q \end{array} $$</div> </figure> <p>여기서 $\operatorname{Simulate}(v’)$는 $v’$에서 terminal state까지 rollout을 수행하고, 그 과정에서 얻은 누적 return $G$를 반환한다고 보면 된다. 만약 $v’$가 이미 terminal node라면 별도의 rollout 없이 terminal reward로부터 $G$를 계산할 수 있다.</p> <h3 id="selection">Selection</h3> <p><img src="/assets/img/blog/monte-carlo-tree-search-concept-practice/selection.png" alt="Selection"/></p> <figure class="algorithm-block" id="algorithm-mcts-select" data-label="algorithm:mcts:select"> <figcaption class="algorithm-block__caption"> <span class="algorithm-block__title">Function -- Select(s)</span> </figcaption> <div class="algorithm-block__math">$$ \begin{array}{l} \textbf{Input : } \text{state } s \in \mathcal{S} \\ \textbf{Output : } \text{unexpanded state } s \\[1mm] \textbf{while } s\ \text{is fully expanded and non-terminal}\ \textbf{do} \\ \quad\quad \text{Select action } a\ \text{using a multi-armed bandit algorithm} \\ \quad\quad \text{Choose one outcome } s'\ \text{according to } P(s' \mid s,a) \\ \quad\quad s \leftarrow s' \\[1mm] \textbf{return } s \end{array} $$</div> </figure> <p>Selection은 root node에서 시작한다. 현재 node에서 이미 확장된 child node가 있다면, selection policy에 따라 다음 child node를 선택하면서 tree 아래로 내려간다. 이때 다음 node를 선택한다는 말은 실제로는 그 방향으로 이어지는 action 또는 branch를 선택한다는 의미에 가깝다. 선택한 action을 적용한 뒤 도달하는 다음 state $s’$는 transition probability $P(s’ \mid s,a)$에 의해 결정된다. 이 과정은 terminal state에 도달하거나, 아직 확장하지 않은 action이 남아 있는 node에 도착했을 때 종료된다. 즉 Selection은 이미 만들어진 tree 안에서 어디까지 내려갈지를 결정하는 단계이다.</p> <aside class="callout callout--note" role="note"> <div class="callout__marker" aria-hidden="true"></div> <div class="callout__content"> <div class="callout__title">Multi-Armed Bandit이란</div> <div class="callout__body"> <p>슬롯 머신이 여러 대 있다고 생각해보자. 각 머신은 누를 때마다 결과가 조금씩 다르고, 평균적으로 어느 머신이 좋은지는 처음에 알 수 없다.</p> <p>이때 좋은 선택을 하기 위해서는 두 가지를 함께 고려해야 한다.</p> <ol> <li>좋아 보이는 머신을 더 눌러서 이득을 얻는다.</li> <li>아직 충분히 눌러보지 않은 머신도 확인한다.</li> </ol> <p>첫 번째는 exploitation이고, 두 번째는 exploration이다. Multi-Armed Bandit은 이 둘의 균형을 잡는 문제로 볼 수 있다.</p> <p>MCTS에서는 보통 Upper Confidence bounds applied to Trees, 즉 UCT를 사용한다. UCT는 뒤에서 좀 더 자세히 다룰 예정이다.</p> </div> </div> </aside> <h3 id="expansion">Expansion</h3> <p><img src="/assets/img/blog/monte-carlo-tree-search-concept-practice/expansion.png" alt="Expansion"/></p> <p>Expansion은 Selection에서 branch를 선택한 뒤, 해당 action을 적용해 새로운 state $s’$를 확장하는 단계이다. 이때 다음 state $s’$는 transition probability $P(s’ \mid s,a)$에 따라 결정된다. 이렇게 도달한 next state는 tree memory 안에 child node로 추가된다. 새로 추가된 node가 terminal state라면 별도의 simulation 없이 바로 Backpropagation으로 넘어갈 수 있다. 그렇지 않다면 이 node에서 Simulation / Rollout을 시작한다.</p> <figure class="algorithm-block" id="algorithm-mcts-expand" data-label="algorithm:mcts:expand"> <figcaption class="algorithm-block__caption"> <span class="algorithm-block__title">Function -- Expand(s)</span> </figcaption> <div class="algorithm-block__math">$$ \begin{array}{l} \textbf{Input : } \text{state } s \in \mathcal{S} \\ \textbf{Output : } \text{expanded state } s' \\[1mm] \textbf{if } s\ \text{is not fully expanded}\ \textbf{then} \\ \quad\quad \text{Randomly select an untried action } a\ \text{to apply in } s \\ \quad\quad \text{Expand one outcome } s'\ \text{according to } P(s' \mid s,a) \\ \quad\quad \text{Observe reward } r \\[1mm] \textbf{return } s' \end{array} $$</div> </figure> <h3 id="simulation--rollout">Simulation / Rollout</h3> <p><img src="/assets/img/blog/monte-carlo-tree-search-concept-practice/simulation.png" alt="Simulation"/></p> <p>Simulation은 Expansion으로 새로 추가된 node의 state $s’$에서 시작해 terminal state $T$에 도달할 때까지 진행된다. 이 단계에서는 현재 state $s_t$에서 action $a_t$를 선택하고, 해당 action에 대한 transition probability</p> \[P(s_{t+1} \mid s_t, a_t)\] <p>에 따라 다음 state $s_{t+1}$를 샘플링하는 과정을 반복한다.</p> \[s' \xrightarrow{a_0} s_1 \xrightarrow{a_1} s_2 \rightarrow \cdots \rightarrow T\] <p>기본적인 MCTS에서는 rollout 중 action을 무작위로 선택하는 random policy를 사용한다. 따라서 rollout은 새로 확장된 선택이 이후에 어떤 결과로 이어질지를 하나의 sample path로 만들어 보는 과정이다.</p> <p>다만 simulation은 반드시 완전히 무작위로 수행될 필요는 없다. 예를 들어 목표에 가까워지는 action, 충돌 가능성이 낮은 action, 비용이 낮을 것으로 예상되는 action을 더 자주 선택하도록 heuristic policy를 사용할 수 있다. 이 경우에도 simulation의 본질은 동일하다. 즉, 아직 탐색 tree에 명시적으로 저장되지 않은 미래를 하나 샘플링하여 현재 선택의 결과를 추정하는 단계이다.</p> <p>그림의 $T$는 rollout이 도달한 terminal state를 의미한다. Simulation이 끝나면 시작 state $s’$부터 terminal state $T$까지 얻은 누적 결과를 return $G$로 계산한다. rollout 길이를 $K$라고 하면 다음과 같이 쓸 수 있다.</p> \[G = \sum_{t=0}^{K-1} r_t\] <p>할인율 $\gamma^t$ 을 사용하는 경우에는 다음과 같이 계산할 수 있다.</p> \[G = \sum_{t=0}^{K-1} \gamma^t r_t\] <p>이 값은 현재 선택이 얼마나 좋은지를 추정하기 위한 하나의 sample로 사용된다.</p> <p>또한 simulation 과정에서 생성되는 임시 state들은 기본적인 MCTS에서는 tree memory에 저장하지 않는다. Simulation이 끝나면 rollout 결과인 $G$만 새로 확장된 node $s’$와 그 조상 node들에 전달되어 Backpropagation에 사용된다.</p> <h3 id="backpropagation">Backpropagation</h3> <p><img src="/assets/img/blog/monte-carlo-tree-search-concept-practice/backpropagation.png" alt="Backpropagation"/></p> <figure class="algorithm-block" id="algorithm-mcts-backpropagation" data-label="algorithm:mcts:backpropagation"> <figcaption class="algorithm-block__caption"> <span class="algorithm-block__title">Function -- Backpropagation(v, Q, G)</span> </figcaption> <div class="algorithm-block__math">$$ \begin{array}{l} \textbf{Input : } \text{expanded node } v,\ Q:\mathcal{S}\times\mathcal{A}\rightarrow\mathbb{R},\ G\in\mathbb{R} \\ \textbf{Output : } \text{none} \\[1mm] \textbf{while } v\ \text{has parent}\ \textbf{do} \\ \quad\quad s \leftarrow \operatorname{state}(\operatorname{parent}(v)) \\ \quad\quad s' \leftarrow \operatorname{state}(v) \\ \quad\quad a \leftarrow \operatorname{action}(\operatorname{parent}(v), v) \\ \quad\quad G \leftarrow r(s,a,s') + \gamma G \\ \quad\quad N(s,a) \leftarrow N(s,a) + 1 \\ \quad\quad Q(s,a) \leftarrow Q(s,a) + \frac{1}{N(s,a)}\left[G - Q(s,a)\right] \\ \quad\quad v \leftarrow \operatorname{parent}(v) \end{array} $$</div> </figure> <p>Backpropagation은 Simulation에서 얻은 return $G$를 확장된 node $v’$에서 root node 방향으로 거슬러 올라가며 반복적으로 반영하는 단계이다. 이때 discount factor $\gamma$를 함께 고려해야 한다. terminal state에서 얻은 결과를 그대로 올리는 것이 아니라, 한 단계 위로 올라갈 때마다 해당 edge의 immediate reward와 discounted future return을 합쳐서 전달한다.</p> <p>각 state $s$와 action $a$는 tree 안에서 parent node에서 child node로 이동할 때 실제로 사용된 state-action pair이다. Backpropagation에서는 이 pair의 visit count $N(s,a)$를 증가시키고, 해당 선택에서 관측된 누적 return을 이용해 $Q(s,a)$를 업데이트한다. 같은 state-action pair가 여러 번 방문되면 $Q(s,a)$는 여러 rollout에서 얻은 return의 평균값에 가까워진다.</p> <p>action의 결과는 transition probability $P(s’ \mid s,a)$에 따라 샘플링된다. 따라서 rollout을 충분히 반복하면 $Q(s,a)$는 해당 action을 선택했을 때 얻을 수 있는 return의 기댓값, 즉 expected return을 추정하게 된다. 이 관점에서 MCTS가 점진적으로 만드는 tree를 ExpectiMax tree의 sampling-based approximation으로 볼 수 있다. 최종적으로는 각 state에서 expected return이 큰 action을 선택하는 방향으로 탐색이 진행된다.</p> <h2 id="upper-confidence-bounds-applied-to-trees-uct">Upper Confidence bounds applied to Trees (UCT)</h2> <p>앞서 Selection 단계에서 multi-armed bandit algorithm을 사용한다고 말했다. 실제 MCTS에서는 UCB1을 tree search에 맞게 약간 변형한 방식이 성능이 좋아서 많이 사용된다. 이 방법을 UCT라고 부른다. 즉, UCT는 MCTS의 Selection 단계에서 어떤 action 또는 branch를 선택할지를 결정하기 위해 UCB 계열의 기준을 사용하는 방법이다.</p> <p>UCT에서는 현재 state $s$에서 다음 action을 다음과 같이 선택한다.</p> \[a^* = \arg\max_{a \in A(s)} \left[ Q(s,a) + C_p \sqrt{ \frac{ \ln N(s)} {N(s,a)} } \right]\] <p>여기서 첫 번째 항 $Q(s,a)$는 지금까지의 rollout을 통해 추정한 expected return이다. 이미 좋은 결과를 보인 action을 더 선택하려는 exploitation 항으로 볼 수 있다. 두 번째 항은 아직 충분히 선택되지 않은 action에 더 큰 값을 주는 exploration 항이다.</p> <ul> <li>$N(s)$는 state node $s$가 방문된 횟수이다.</li> <li>$N(s,a)$는 state $s$에서 action $a$가 선택된 횟수이다.</li> <li>$C_p &gt; 0$는 exploration을 얼마나 강하게 할지를 결정하는 상수이다. 보통 초기값은 $\sqrt{2}$로 두고, 문제에 따라 조정한다.</li> </ul> <p>$C_p$가 크면 아직 덜 탐색한 action을 더 자주 선택하고, $C_p$가 작으면 현재까지 $Q(s,a)$가 크게 추정된 action을 더 자주 선택한다. 따라서 UCT는 exploitation과 exploration 사이의 균형을 조절하는 Selection policy로 볼 수 있다.</p> <p>이러한 sampling 기반 탐색과 exploration 항이 함께 작동하기 때문에, MCTS는 minimax와 같은 전통적인 tree search 방법과 달리 tree를 균일하게 펼치지 않는다. 더 유망하거나 더 불확실한 branch에 더 많은 simulation을 할당하면서 tree를 비대칭적으로 확장한다. 즉, 기댓값이 높아 보이는 branch에는 더 많은 계산을 할당하고, 기댓값이 낮아 보이는 branch에는 더 적은 계산을 할당하기 때문에 tree가 불균등한 모양으로 커져 나간다.</p> <h3 id="ucb1-tuned">UCB1-Tuned</h3> <p>기존 UCT 수식보다 더 정교한 방법으로 UCB1-Tuned를 사용할 수도 있다. UCB1-Tuned는 기존 UCB1 계열의 식에 action별 reward 분산을 반영하는 항을 추가한다. 직관적으로는 평균 return이 높은 action만 보는 것이 아니라, 해당 action의 rollout 결과가 얼마나 불안정한지도 함께 고려하는 방식이다.</p> \[a^* = \arg\max_{a \in A(s)} \left\{ Q(s,a) + C \sqrt{ \frac{\ln N(s)}{N(s,a)} \, \min\!\left( \frac{1}{4}, \sigma_a + \frac{2\ln N(s)}{N(s,a)} \right) } \right\}\] <p>여기서 $\sigma_a$는 action $a$를 선택했을 때 관측된 rollout return의 분산을 반영하는 항이다. 따라서 UCB1-Tuned는 단순히 방문 횟수만으로 exploration bonus를 정하는 것이 아니라, reward 또는 return의 변동성까지 고려해 exploration 정도를 조절한다.</p> <h3 id="exponential-weight-algorithm-for-exploration-and-exploitationexp3">Exponential-weight algorithm for Exploration and Exploitation(EXP3)</h3> <p>UCB1이나 UCB1-Tuned는 기본적으로 각 action의 reward distribution이 비교적 안정적이고, 여러 번 시도하면 평균 return이 점점 믿을 만해지는 상황에 잘 맞는다. 반대로 결과가 더 불안정하거나, 선택지의 품질이 시간에 따라 달라질 수 있는 상황에서는 EXP3 같은 adversarial bandit 알고리즘을 사용할 수도 있다.</p> <p>유한한 횟수의 선택 horizon이 정해져 있을 때, 지금까지 내가 선택한 action들의 누적 성능과 사후적으로 가장 좋았던 단일 action을 계속 선택했을 때의 성능 차이를 regret으로 본다. EXP3는 이 regret이 일정 수준 이상 커지지 않도록 이론적 보장을 제공하는 알고리즘이다.</p> <p>예를 들어 바둑에서는 내가 둔 수에 따라 상대방의 대응도 달라진다. 초반 rollout에서는 action $A$가 좋아 보였더라도, 이후 상대의 대응이나 탐색 상황이 바뀌면서 action $B$가 더 좋아질 수 있다. 기존 UCT가 누적 평균 return을 강하게 믿는다면 이런 변화에 둔감할 수 있다. EXP3 계열의 방법은 이런 불안정한 reward 상황에 좀 더 강하게 대응하기 위한 선택지로 볼 수 있다.</p> <h2 id="정리">정리</h2> <p>이번 게시글에서 MCTS 알고리즘에 대해 다루어보았다. MCTS는 모든 경우를 완전 탐색하여 최적해를 직접 찾는 방식이 아니다. 대신 현재까지 얻은 rollout 결과를 바탕으로 어떤 선택이 더 좋아 보이는지를 점진적으로 추정하고, 더 유망한 방향에 계산을 더 많이 할당한다.</p> <p>이를 위해 MCTS는 Selection, Expansion, Simulation, Backpropagation의 네 단계로 구성된다. Selection과 Expansion을 통해 tree에서 탐색할 위치를 정하고, Simulation을 통해 그 선택이 미래에 어떤 결과로 이어질지 샘플링한다. 이후 Backpropagation 단계에서 rollout 결과를 tree의 node들에 반영하여 각 state-action pair의 value estimate를 갱신한다.</p> <p>MCTS를 사용하려면 선택한 action 이후의 다음 state를 샘플링하고 reward를 계산할 수 있어야 한다. 즉, transition과 reward를 제공하는 simulator 또는 model이 필요하다는 점에서 model-based 방식으로 볼 수 있다.</p> <p>simulation에 필요한 transition과 reward를 대략적으로라도 모델링할 수 있고, 가능한 미래의 경우의 수가 매우 큰 환경에서는 MCTS가 기존의 완전 탐색이나 단순 sampling 기반 탐색보다 효율적일 수 있다. 결국 MCTS는 반복적인 rollout과 평균화를 통해 $Q(s,a)$를 추정하고, expected return이 큰 action을 선택하는 방향으로 탐색을 진행하는 알고리즘이다.</p> <h2 id="reference">Reference</h2> <ul> <li><a href="https://arxiv.org/pdf/2103.04931">Monte Carlo Tree Search: A Review of Recent Modifications and Applications</a></li> <li><a href="https://gibberblot.github.io/rl-notes/single-agent/mcts.html">Monte-Carlo Tree Search (MCTS)</a></li> </ul>]]></content><author><name>Jeonghan Kim</name><email>kimjh9813@naver.com</email></author><category term="공부"/><category term="알고리즘"/><category term="algorithm"/><category term="planning"/><category term="monte-carlo-tree-search"/><category term="mcts"/><summary type="html"><![CDATA[개요]]></summary></entry><entry><title type="html">[논문리뷰] Monte Carlo Tree Diffusion for System 2 Planning</title><link href="https://kim-jeonghan.github.io/blog/2026/paper-review-monte-carlo-tree-diffusion-system-2-planning/" rel="alternate" type="text/html" title="[논문리뷰] Monte Carlo Tree Diffusion for System 2 Planning"/><published>2026-06-26T15:22:22+00:00</published><updated>2026-07-06T10:37:42+00:00</updated><id>https://kim-jeonghan.github.io/blog/2026/paper-review-monte-carlo-tree-diffusion-system-2-planning</id><content type="html" xml:base="https://kim-jeonghan.github.io/blog/2026/paper-review-monte-carlo-tree-diffusion-system-2-planning/"><![CDATA[<h2 id="논문-정보">논문 정보</h2> <ul> <li>Title: Monte Carlo Tree Diffusion for System 2 Planning (ICML 2025 Spotlight)</li> <li>Authors: Jaesik Yoon, Hyeonseo Cho, Doojin Baek, Yoshua Bengio, Sungjin Ahn</li> <li>Links: <a href="https://jaesikyoon.com/mctd-page/">Project</a>, <a href="https://arxiv.org/abs/2502.07202">Paper</a>, <a href="https://github.com/ahn-ml/mctd">Code</a></li> </ul> <h2 id="한-줄-요약">한 줄 요약</h2> <ul> <li>diffusion inference 과정에 MCTS의 exploration-exploitation search를 결합해 long-horizon task에서 기존 diffusion planner보다 좋은 성능을 보인 방법</li> </ul> <h2 id="문제-정의">문제 정의</h2> <p>diffusion-based planner는 denoising step을 통해 전체 trajectory를 한 번에 생성하는 방식을 사용한다. 이 접근은 planning 과정에서 forward dynamics model을 명시적으로 rollout할 필요를 줄이고, forward model을 반복적으로 사용할 때 long-term horizon에서 error가 축적되는 문제를 효과적으로 완화한다.</p> <h3 id="기존-방식의-한계">기존 방식의 한계</h3> <p>diffusion-based planner와 MCTS는 서로 다른 장점을 갖지만, long-horizon planning에서는 각각 다른 병목을 갖는다. 먼저 diffusion 계열 방법은 trajectory-level generation에는 강하지만, inference-time search를 구조적으로 활용하기 어렵다.</p> <table> <thead> <tr> <th>Diffusion 계열 접근</th> <th>장점</th> <th>한계</th> </tr> </thead> <tbody> <tr> <td>diffusion-based planner</td> <td>전체 trajectory를 한 번에 생성해 forward model rollout에 따른 error accumulation을 줄인다.</td> <td>reward나 task objective를 직접 반영하기 어렵고, 중간 decision point에서 exploration-exploitation을 구조적으로 다루기 어렵다.</td> </tr> <tr> <td>denoising step 수 증가</td> <td>더 많은 refinement로 trajectory quality를 높이려 한다.</td> <td>초반에는 성능이 좋아지지만 빠르게 plateau에 도달하고 inference cost가 증가한다.</td> </tr> <tr> <td>sample 수 증가</td> <td>여러 trajectory 후보를 만들고 좋은 sample을 선택할 수 있다.</td> <td>sample 간 feedback을 공유하지 못하고, long-horizon task에서는 많은 sample을 뽑아도 실패할 수 있다.</td> </tr> </tbody> </table> <p>반면 MCTS는 search feedback을 활용해 exploration과 exploitation을 조절할 수 있지만, 전통적인 형태 그대로는 long-horizon continuous planning에 적용하기 어렵다.</p> <table> <thead> <tr> <th>Search 계열 접근</th> <th>장점</th> <th>한계</th> </tr> </thead> <tbody> <tr> <td>전통적인 MCTS</td> <td>simulation feedback을 통해 좋은 선택지를 더 깊게 탐색하고, 덜 탐색한 선택지도 확인할 수 있다.</td> <td>forward model에 의존하고, step-by-step rollout 때문에 global trajectory consistency를 유지하기 어렵다.</td> </tr> <tr> <td>discrete action tree search</td> <td>action branch를 명시적으로 펼쳐 decision point마다 선택을 비교할 수 있다.</td> <td>action space가 크거나 continuous하면 tree가 깊고 넓어져 계산 비용이 커진다.</td> </tr> </tbody> </table> <p>따라서 이 논문은 diffusion model의 trajectory-level generation 능력은 유지하면서, MCTS의 exploration-exploitation search를 denoising process 안에 넣는 방향으로 문제를 설정한다. 핵심 질문은 전체 trajectory를 생성하는 diffusion framework 안에서 어떻게 tree search 구조를 만들고, 이를 통해 inference-time scalability를 높일 수 있는가이다.</p> <h2 id="핵심-아이디어">핵심 아이디어</h2> <p>이 논문은 위 문제를 Monte Carlo Tree Diffusion(MCTD) framework로 해결한다. MCTD는 diffusion denoising 과정을 단순한 iterative refinement가 아니라, MCTS와 유사한 tree-based rollout process로 재구성한다.</p> <p>핵심 아이디어는 다음 세 가지로 정리할 수 있다.</p> <ol> <li>Denoising process를 tree-based rollout process로 재구성한다.</li> <li>Meta-action과 guidance level을 도입해 exploration과 exploitation을 동적으로 조절한다. 이를 통해 diffusion framework 안에서 실행 가능하고 유연한 trajectory refinement를 수행할 수 있다.</li> <li>빠른 jumpy denoising simulation을 사용해 forward model rollout 없이도 효율적으로 trajectory quality를 평가하고 개선한다.</li> </ol> <h3 id="contribution">Contribution</h3> <ol> <li>MCTS의 네 단계인 selection, expansion, simulation, backpropagation을 diffusion inference 과정에 결합해 planning 성능을 향상시킨 첫 번째 framework를 제안한다.</li> <li>Denoising as tree rollout, guidance level meta-action, jumpy denoising 기반 fast simulation이라는 세 가지 요소를 도입한다.</li> <li>이를 통해 long-horizon planning task에서 MCTD가 기존 diffusion planner보다 효율적인 inference-time scaling을 제공함을 보인다.</li> </ol> <h2 id="method">Method</h2> <h3 id="monte-carlo-tree-search">Monte Carlo Tree Search</h3> <p>MCTS는 stochastic simulation을 반복하면서 exploration과 exploitation을 균형 있게 사용하는 planning 알고리즘이다. 전형적인 MCTS는 selection, expansion, simulation, backpropagation의 네 단계로 구성된다.</p> <p>MCTS의 기본 개념과 알고리즘 흐름은 이전에 작성한 <a href="/blog/2026/monte-carlo-tree-search-concept-practice/">Monte-Carlo Tree Search (MCTS) 개념</a> 글에서 정리했다.</p> <h3 id="diffusion-model">Diffusion Model</h3> <p>diffusion model의 trajectory distribution $p_{\theta}$는 그 자체만으로 reward나 task objective를 명시적으로 encode하기 어렵다. 따라서 Diffuser는 선택적으로 heuristic하거나 학습 가능한 guidance function $J_{\phi}(\mathbf{x})$를 함께 사용한다.</p> <p>$J_{\phi}(\mathbf{x})$는 denoised trajectory $\mathbf{x}$의 value나 return을 예측하는 함수로 볼 수 있다. 이 guidance function을 사용하면 sampling distribution을 다음과 같이 bias할 수 있다.</p> \[\tilde{p}_{\theta}(\mathbf{x}) \propto p_{\theta}(\mathbf{x}) \exp\!\left(J_{\phi}(\mathbf{x})\right)\] <p>따라서 각 denoising step에서 $J_{\phi}(\mathbf{x})$의 gradient information은 diffusion model이 생성하는 trajectory를 더 실행 가능하고 높은 return을 갖는 방향으로 조금씩 밀어주는 역할을 한다.</p> <p>이것은 Diffuser에서 사용하는 일반적인 trajectory-level guidance이고, 뒤에서 설명할 MCTD는 이 guidance 개념을 subplan 단위의 조건부 guidance로 확장한다.</p> <p>Diffusion Forcing은 trajectory $\mathbf{x}$를 여러 token으로 나누어 다룰 수 있게 확장한다. 이러한 tokenization을 사용하면 각 token이 서로 다른 noise level에서 denoising될 수 있다. 따라서 uncertainty가 높은 상황에서 전체 trajectory를 full noise에서 no noise까지 한 번에 완성할 필요 없이, 필요한 segment만 부분적으로 denoise하면서 trajectory를 구성할 수 있다. 이러한 token-level control은 long-horizon planning처럼 causal consistency가 중요한 문제에서 특히 유용하다.</p> <h3 id="monte-carlo-tree-diffusion">Monte Carlo Tree Diffusion</h3> <h4 id="denoising-as-tree-rollout">Denoising as Tree-Rollout</h4> <p>MCTD는 diffusion model의 trajectory-level generation 능력과 MCTS의 tree search 구조를 연결하기 위해, denoising process를 semi-autoregressive tree rollout으로 재정의한다. 전체 trajectory를 다음과 같이 $S$개의 서로 겹치지 않는 subplan으로 나눈다.</p> \[\mathbf{x} = (\mathbf{x}_1, \mathbf{x}_2, \ldots, \mathbf{x}_S), \qquad \mathbf{x}_i \cap \mathbf{x}_j = \emptyset \quad (i \ne j)\] <p>모든 subplan이 같은 global denoising schedule을 공유하는 standard Diffuser와 달리, MCTD는 각 subplan에 독립적인 denoising schedule을 할당한다. 시간적으로 앞선 subplan은 더 낮은 noise level로 먼저 구체화되고, 뒤쪽 subplan은 더 높은 noise level을 유지한 채 앞선 subplan에 조건화되어 점진적으로 denoise된다. 이 구조 덕분에 denoising process는 causal ordering을 따르는 semi-autoregressive tree rollout으로 해석된다.</p> <p>즉, 전체 trajectory를 한 번에 독립적으로 완성하는 것이 아니라, 먼저 구체화된 앞부분을 조건으로 뒤쪽 trajectory를 점진적으로 refine하는 방식이다.</p> <p>이를 확률적으로 표현하면 다음과 같이 쓸 수 있다.</p> \[p(\mathbf{x}) \approx \prod_{s=1}^{S} p\!\left(\mathbf{x}_s \mid \mathbf{x}_{1:s-1}\right)\] <p>형식적으로는 autoregressive factorization처럼 보이지만, 실제 구현에서 subplan들을 순차적으로 여러 번 생성하는 것은 아니다. 대신 각 subplan에 서로 다른 noise level을 부여한 하나의 denoising process 안에서 전체 trajectory를 함께 생성한다.</p> <p>이때 각 subplan $\mathbf{x}_s$는 temporally extended state로 볼 수 있으며, MCTD에서는 개별 state가 아니라 이러한 subplan 단위가 search tree 안의 node로 처리된다.</p> <p>이 덕분에 search tree는 low-level state transition을 하나씩 펼치는 구조가 아니라, 더 high-level abstraction 위에서 작동할 수 있다. 특히 subplan 수 $S$가 전체 low-level step 수 $N$보다 훨씬 작기 때문에, $S \ll N$, tree depth는 기존 MCTS보다 크게 작아질 수 있다. 예를 들어 논문에서는 경험적으로 $S=5$, $N=500$을 사용한다. 결과적으로 tree depth와 branching 부담을 줄여 효율성과 확장성을 향상시킨다.</p> <p>따라서 전체 plan $\mathbf{x}$를 denoising하는 과정은, diffuser의 single denoising process 안에서 subplan node들을 순서대로 rollout하는 과정으로 해석할 수 있다.</p> <h4 id="selection">Selection</h4> <p>Selection 단계에서는 UCB를 사용해 현재 node의 child node 중 다음으로 탐색할 node를 선택한다. 전통적인 MCTS와 달리 MCTD의 node는 단일 state가 아니라 temporally extended state인 subplan에 대응된다. 따라서 더 high-level reasoning이 가능하고, tree depth를 줄여 scalability를 개선할 수 있다.</p> <p>이때 MCTD에서 child branch는 primitive action이 아니라 subplan에 적용된 guidance schedule에 의해 만들어진다. 따라서 UCB는 guidance schedule로 생성된 child branch들의 value와 visit count를 기준으로 다음에 탐색할 branch를 선택한다.</p> <h4 id="expansion">Expansion</h4> <p>Expansion 단계에서는 선택된 node에서 새로운 child node를 확장한다. MCTD에서 각 child node는 diffusion model로 생성된 subplan에 대응된다.</p> <p>이때 어떤 distribution에서 subplan을 sample할지는 meta-action에 의해 결정된다. guidance가 없는 meta-action을 선택하면 subplan은 prior distribution에서 sample되고, guidance가 있는 meta-action을 선택하면 goal-seeking distribution에서 sample된다.</p> <p>여기서 guidance는 반드시 binary choice일 필요는 없다. $\mathrm{GUIDE}$와 $\mathrm{NO_GUIDE}$처럼 단순히 둘로 나눌 수도 있지만, 더 다양한 guidance level을 정의해 exploration과 exploitation 사이의 강도를 세밀하게 조절할 수도 있다.</p> <h4 id="guidance-level-as-meta-action">Guidance Level as Meta-Action</h4> <p>MCTD는 primitive action을 직접 탐색하지 않는다. 대신 exploration-exploitation tradeoff를 denoising process 안의 meta-action으로 재정의하고, 이를 guidance level로 구현한다. 가장 단순하게 보면 meta-action은 guidance를 사용할지 여부로 나눌 수 있다.</p> <table> <thead> <tr> <th>meta-action</th> <th>의미</th> <th>역할</th> </tr> </thead> <tbody> <tr> <td>guidance 없음</td> <td>데이터만으로 학습된 prior distribution $p_{\theta}(\mathbf{x})$에서 sampling한다.</td> <td>새로운 trajectory 후보를 넓게 탐색하는 exploration에 가깝다.</td> </tr> <tr> <td>guidance 있음</td> <td>reward function $r_g(\mathbf{x})$가 정의한 목표를 반영한 goal-directed distribution $p_g(\mathbf{x})$에서 sampling한다.</td> <td>이미 좋아 보이는 방향으로 trajectory를 더 강하게 밀어주는 exploitation에 가깝다.</td> </tr> </tbody> </table> <p>meta-action과 tree-rollout denoising process를 통합하기 위해, MCTD는 subplan별 guidance schedule $\mathbf{g}$를 정의한다.</p> \[\mathbf{g} = (g_1, g_2, \ldots, g_S), \qquad g_s \in \{\mathrm{GUIDE}, \mathrm{NO\_GUIDE}\}\] <p>여기서 각 $g_s$는 subplan $\mathbf{x}_s$에 대응되며, 해당 subplan을 denoise할 때 guidance를 적용할지 여부를 결정한다.</p> <p>guidance schedule $\mathbf{g}$를 동적으로 조절하면 subplan level에서 exploration과 exploitation의 균형을 맞출 수 있다. 이는 복잡하고 continuous한 action space에서 primitive action을 직접 모두 확장하지 않고도 효율적이고 확장 가능한 planning을 가능하게 한다.</p> \[p(\mathbf{x} \mid \mathbf{g}) \approx \prod_{s=1}^{S} p\!\left(\mathbf{x}_s \mid \mathbf{x}_{1:s-1},\, g_s\right)\] <p>구체적으로 $g_s=\mathrm{NO_GUIDE}$가 선택되면 subplan $\mathbf{x}_s$는 exploratory tree-rollout prior를 따른다.</p> \[p(\mathbf{x}_s \mid \mathbf{x}_{1:s-1})\] <p>반대로 $g_s=\mathrm{GUIDE}$가 선택되면 reward-guided distribution을 따른다.</p> \[p_g(\mathbf{x}_s \mid \mathbf{x}_{1:s-1})\] <p>guided meta-action은 subplan level에서 다음과 같이 표현할 수 있다.</p> \[p_g(\mathbf{x}_s \mid \mathbf{x}_{1:s-1}) \propto p_{\theta}(\mathbf{x}_s \mid \mathbf{x}_{1:s-1}) \exp\!\left(r_g(\mathbf{x}_s)\right)\] <p>즉 guidance가 없는 경우에는 diffusion prior를 따라 다양한 trajectory를 탐색하고, guidance가 있는 경우에는 구체적인 reward function이 정의한 목표에 도달하도록 sampling process를 조종한다.</p> <h4 id="simulation">Simulation</h4> <p>MCTS에서 simulation step은 선택된 node 이후의 미래가 얼마나 좋은지를 빠르게 평가하는 역할을 한다. MCTD의 simulation 단계에서는 DDIM을 사용한 fast jumpy denoising을 통해 subplan 이후의 future trajectory를 빠르게 생성하고 평가한다. 가능한 평가 방식은 크게 두 가지가 있다.</p> <table> <thead> <tr> <th>평가 방식</th> <th>장점</th> <th>한계</th> </tr> </thead> <tbody> <tr> <td>forward dynamics model 사용</td> <td>실제 rollout에 가까운 평가가 가능하다.</td> <td>long-horizon rollout이 필요해 computationally expensive하다.</td> </tr> <tr> <td>bootstrapping 기반 추정</td> <td>빠르게 value를 추정할 수 있다.</td> <td>미래 trajectory를 충분히 반영하지 못해 부정확할 수 있다.</td> </tr> </tbody> </table> <p>MCTD는 이 문제를 DDIM 기반 jumpy denoising simulation으로 다룬다. 선택된 subplan $\mathbf{x}<em>{1:s}$가 주어졌을 때, 남은 future subplan $\mathbf{x}</em>{s+1:S}$를 빠르게 denoise하여 future trajectory를 샘플링한다.</p> \[\tilde{\mathbf{x}}_{s+1:S} \sim p\!\left( \mathbf{x}_{s+1:S} \mid \mathbf{x}_{1:s}, \mathbf{g} \right)\] <p>이 fast denoising process는 더 큰 approximation error를 만들 수 있지만, 계산 효율이 높기 때문에 MCTD의 simulation step에 잘 맞는다. 즉 forward dynamics model rollout 없이도 future trajectory의 quality를 빠르게 평가할 수 있다.</p> <h4 id="backpropagation">Backpropagation</h4> <p>Backpropagation 단계에서는 simulation에서 얻은 평가 결과를 tree의 상위 node들로 전달한다. MCTD에서는 primitive action이 아니라 meta-action 기반 guidance schedule을 사용하므로, 각 subplan에서 선택된 guidance schedule에 대한 value와 visit count가 업데이트된다.</p> <p>즉 어떤 subplan에서 $\mathrm{GUIDE}$를 사용하는 것이 좋았는지, 또는 $\mathrm{NO_GUIDE}$를 통해 더 넓게 탐색하는 것이 좋았는지를 tree 안에 누적해 다음 selection 단계에서 활용한다.</p> <h3 id="prospective">Prospective</h3> <p><img src="/assets/img/blog/paper-review-monte-carlo-tree-diffusion-system-2-planning/mctd-two-perspectives.png" alt="MCTD Two Perspectives"/></p> <p>위 그림은 MCTD를 MCTS 관점과 diffusion 관점에서 각각 보여준다. MCTS 관점에서는 selection, expansion, simulation, backpropagation의 네 단계가 partial denoising tree 위에서 표현되며, 각 node는 partially denoised sub-trajectory에 대응된다. Diffusion 관점에서는 같은 과정이 denoising depth와 planning horizon 위에서 표현되며, 전체 row가 동시에 denoise되지만 subplan마다 서로 다른 denoising level을 갖는다.</p> <p><img src="/assets/img/blog/paper-review-monte-carlo-tree-diffusion-system-2-planning/mctd-search-tree-example.png" alt="MCTD Search Tree Example"/></p> <p>위 그림은 pointmaze-medium task에서 binary guidance set ${\mathrm{NO_GUIDE}, \mathrm{GUIDE}}$를 사용한 MCTD tree-search 과정을 보여준다. 각 node는 partially denoised trajectory에 대응되며, 왼쪽 이미지는 noisy partial plan, 오른쪽 이미지는 fast denoising 이후의 plan을 나타낸다. Search는 $\mathrm{NO_GUIDE}$ 또는 $\mathrm{GUIDE}$를 선택해 child node를 확장하고, 새로 생성된 plan을 평가하면서 최종적으로 reward가 높은 leaf로 수렴한다.</p> <h3 id="알고리즘">알고리즘</h3> <p><img src="/assets/img/blog/paper-review-monte-carlo-tree-diffusion-system-2-planning/algorithm-1-mctd.png" alt="Algorithm 1. Monte Carlo Tree Diffusion" style="width: 50%; display: block; margin: 0 auto;"/></p> <h2 id="experiments">Experiments</h2> <h3 id="실험-설정">실험 설정</h3> <p>실험은 Offline Goal-conditioned RL Benchmark(OGBench)를 기반으로 진행된다. 평가 task는 다음과 같다.</p> <ol> <li>pointmaze navigation</li> <li>antmaze navigation</li> <li>multi-cube manipulation</li> <li>visual pointmaze</li> </ol> <h3 id="비교-대상">비교 대상</h3> <p>이 논문에서는 다음 baseline들과 비교한다.</p> <table> <thead> <tr> <th>Baseline</th> <th>설명</th> </tr> </thead> <tbody> <tr> <td>Diffuser</td> <td>기본 diffusion-based planner이다. 전체 trajectory를 denoising으로 생성한다.</td> </tr> <tr> <td>Diffuser Replanning</td> <td>episode 중 fixed interval마다 다시 planning을 수행한다. 이를 통해 full tree search 없이 iterative replanning이 주는 이점을 확인한다.</td> </tr> <tr> <td>Diffuser Random Search</td> <td>여러 trajectory를 병렬로 생성한 뒤, 동일한 reward function으로 score를 계산해 가장 높은 trajectory를 선택한다.</td> </tr> <tr> <td>Diffusion Forcing</td> <td>denoising schedule에 causal structure를 부여해 semi-autoregressive trajectory generation을 수행한다.</td> </tr> </tbody> </table> <h3 id="실험-결과">실험 결과</h3> <p><img src="/assets/img/blog/paper-review-monte-carlo-tree-diffusion-system-2-planning/long-horizon-maze-results.png" alt="Long-Horizon Maze Results"/></p> <p><img src="/assets/img/blog/paper-review-monte-carlo-tree-diffusion-system-2-planning/planner-trajectory-comparison.png" alt="Planner Trajectory Comparison"/></p> <h2 id="limitations--discussion">Limitations &amp; Discussion</h2> <p>MCTD는 inference-time computation을 더 많이 사용할수록 더 나은 plan을 찾을 수 있다는 점을 보인다. 그러나 이는 동시에 계산 비용이 여전히 크다는 의미이기도 하다. 따라서 모든 문제에서 항상 search를 강하게 사용하는 것보다, 쉬운 문제에서는 diffusion planner만 사용하고 어려운 문제에서만 search를 활성화하는 방식이 더 현실적일 수 있다.</p> <p>search space가 커질수록 계산량이 증가하는 문제도 남아 있다. 이를 줄이기 위해 amortized search를 사용하는 방향이 의미 있을 것 같다. 매번 처음부터 random exploration을 수행하는 대신, 어떤 meta-action이나 trajectory branch가 유망했는지를 학습해 초기 탐색 방향을 더 잘 설정할 수 있다면 search 효율을 높일 수 있다.</p> <p>sparse reward 환경에서는 trajectory의 좋고 나쁨을 판별하기 어렵다. 이 경우 self-supervised reward shaping을 사용해 충돌 위험, 목표와의 거리, 진행 방향 같은 중간 평가 신호를 만들면 더 안정적인 search가 가능할 수 있다.</p> <p>추가적인 기술적 개선 방향은 다음과 같다.</p> <ol> <li>Parallel denoising: 여러 denoising simulation을 병렬로 실행해 inference latency를 줄인다.</li> <li>Differentiable tree search: search 과정을 미분 가능하게 만들어 diffusion model과 search policy를 함께 최적화한다.</li> <li>Model-based rollout: 단순한 fast simulation 대신 learned dynamics model이나 world model을 사용해 future trajectory 평가를 개선한다.</li> </ol> <h2 id="나의-질문">나의 질문</h2> <ol> <li>MCTD는 subplan을 temporally extended state로 보고, 이를 MCTS의 node처럼 사용한다. 이 구조가 가능한 핵심 이유는 무엇인가? 단순히 DDIM 기반 jumpy denoising으로 future trajectory를 빠르게 샘플링하고 reward/value를 근사적으로 평가할 수 있기 때문인지, 아니면 subplan abstraction과 guidance schedule을 meta-action으로 정의한 점이 더 본질적인지 궁금하다.</li> <li>MCTD는 low-level state가 아니라 subplan 단위로 tree를 구성하기 때문에 기존 MCTS보다 tree depth는 줄어든다. 하지만 search tree 안에 partial trajectory, value, visit count, guidance schedule 등을 저장해야 한다면 memory cost는 여전히 커질 수 있지 않은가?</li> </ol> <h2 id="내가-이해한-핵심">내가 이해한 핵심</h2> <p>이 논문은 결국 diffusion의 denoising process에 MCTS를 적용한 방법으로 볼 수 있다. 여기서 subplan은 low-level action sequence를 직접 나누는 것이라기보다, diffusion denoising process 안에서 trajectory를 구간 단위로 나눈 것으로 이해할 수 있다.</p> <p>diffusion은 inference 과정에서 Gaussian noise로부터 시작한 trajectory를 reverse denoising step을 통해 점점 더 실행 가능한 trajectory로 바꿔 간다. 기존 방식이 이 과정을 단순 sampling 또는 iterative refinement로 수행했다면, MCTD는 이 denoising 과정 위에 MCTS search를 얹는다. 즉, 후보 trajectory를 단순히 많이 뽑는 것이 아니라, 어떤 denoising branch를 더 탐색하고 어떤 branch를 덜 볼지를 tree search 방식으로 결정한다.</p> <p>causal semi-autoregressive하다는 의미 역시 경로 자체를 일반적인 autoregressive generation으로 만든다는 뜻이 아니다. subplan별 noise level을 다르게 두어, denoising 과정에서 앞선 subplan이 먼저 구체화되고 뒤쪽 subplan이 그 결과에 조건화되는 구조를 만든다는 의미에 가깝다.</p> <p>MCTS를 적용하기 위해 중요한 것은 simulation 단계와 exploration-exploitation 개념을 diffusion framework 안에 넣는 것이다. MCTD는 Guidance Levels as Meta-Actions 개념을 사용해, prior distribution을 따르는 선택과 goal-directed distribution을 따르는 선택을 구분한다. 이를 통해 denoising 과정 안에서 exploration과 exploitation을 조절한다.</p> <p>simulation 단계에서는 설정해 둔 reward function으로 빠르게 trajectory를 평가하는 것이 중요하다. MCTD는 DDIM 기반 jumpy denoising을 사용해 full trajectory를 빠르게 생성하고, 이를 통해 선택된 subplan 이후의 future trajectory를 조기 평가할 수 있게 한다.</p> <h2 id="결론">결론</h2> <p>이 논문은 diffusion planner에 MCTS를 결합하는 방법론을 제안한다. 이를 통해 기존 diffusion-based planning보다 long-horizon planning task에서 더 높은 성능을 보였다.</p> <p>기존 연구에서는 단순히 denoising step 수를 늘리거나 sample 수를 늘리는 방식으로 계산량을 증가시켜도 성능 향상이 빠르게 plateau에 도달했다. 반면 MCTD는 증가한 inference-time computation을 tree search 형태로 활용함으로써, 더 많은 계산이 실제 planning 성능 향상으로 이어질 수 있음을 보여준다.</p>]]></content><author><name>Jeonghan Kim</name><email>kimjh9813@naver.com</email></author><category term="논문리뷰"/><category term="diffusion"/><category term="ai"/><category term="planning"/><category term="diffusion-model"/><category term="paper-review"/><summary type="html"><![CDATA[논문 정보]]></summary></entry><entry><title type="html">[논문리뷰] Potential Based Diffusion Motion Planning</title><link href="https://kim-jeonghan.github.io/blog/2026/paper-review-potential-based-diffusion-motion-planning/" rel="alternate" type="text/html" title="[논문리뷰] Potential Based Diffusion Motion Planning"/><published>2026-06-25T12:54:31+00:00</published><updated>2026-07-06T10:37:42+00:00</updated><id>https://kim-jeonghan.github.io/blog/2026/paper-review-potential-based-diffusion-motion-planning</id><content type="html" xml:base="https://kim-jeonghan.github.io/blog/2026/paper-review-potential-based-diffusion-motion-planning/"><![CDATA[<h2 id="논문-정보">논문 정보</h2> <ul> <li>Title: Potential Based Diffusion Motion Planning (ICML 2024)</li> <li>Authors: Yunhao Luo, Chen Sun, Joshua B. Tenenbaum, Yilun Du</li> <li>Links: <a href="https://energy-based-model.github.io/potential-motion-plan/">Project</a>, <a href="https://arxiv.org/abs/2407.06169">Paper</a>, <a href="https://github.com/devinluo27/potential-motion-plan-release">Code</a></li> </ul> <h2 id="한-줄-요약">한 줄 요약</h2> <ul> <li>potential-based motion planning + learning</li> </ul> <h2 id="문제-정의">문제 정의</h2> <p>이 논문은 $n$-dimensional configuration space $\mathbb{R}^n$에서 시작 상태 $q_{\mathrm{st}}$와 목표 상태 $q_e$가 주어졌을 때, 두 상태를 연결하는 collision-free trajectory $q_{1:T}$를 찾는 motion planning 문제를 다룬다. 여기서 $\mathcal{C}$는 장애물 배치나 동적 obstacle trajectory처럼 planning에 영향을 주는 환경 condition을 의미한다.</p> <h3 id="기존-방식의-한계">기존 방식의 한계</h3> <p>Sampling-based planning은 configuration space에서 많은 candidate state나 path를 샘플링하고 collision check를 반복하면서 feasible path를 찾는다. 이 방식은 일반적으로 다양한 환경에 적용할 수 있지만, 고차원 환경이나 유사한 planning 문제를 반복적으로 풀어야 하는 상황에서는 많은 샘플과 collision check가 필요해 비효율적일 수 있다.</p> <p>potential-based motion planning은 goal과 obstacle을 potential function으로 표현하고, gradient 기반 최적화를 통해 trajectory를 찾는다. 이 방식은 여러 constraint를 potential로 더해 조합하기 쉽다는 장점이 있지만, local minima에 빠질 수 있고 configuration space에서의 obstacle representation을 필요로 한다. 이러한 representation은 실제 perception 기반 환경에서 얻기 어렵다.</p> <p>learning-based motion planning 방법들은 planning 속도를 개선할 수 있지만, 학습 분포와 다른 환경에서 성능이 급격히 떨어질 수 있고 문제를 2D 환경으로 단순화하는 경우도 많다. 이 논문은 이러한 한계를 줄이기 위해 diffusion model로 trajectory-level potential을 학습하고, 여러 constraint에 대한 potential을 조합하는 방식을 제안한다.</p> <h2 id="핵심-아이디어">핵심 아이디어</h2> <p>이 논문의 핵심은 diffusion model을 단순한 trajectory generator가 아니라, motion planning trajectory 위의 potential landscape를 학습하는 모델로 해석하는 것이다. 기존 potential-based planning은 사람이 설계한 potential function을 따라 gradient descent로 경로를 찾지만, 이 논문은 성공적인 motion plan 데이터로부터 trajectory-level energy function $E_{\theta}(q_{1:T}, q_{\mathrm{st}}, q_e, \mathcal{C})$를 학습한다.</p> <p>Denoising diffusion training을 통해 noisy trajectory를 feasible trajectory 쪽으로 이동시키는 energy gradient를 학습하고, sampling 시에는 Gaussian noise에서 시작해 energy를 낮추는 방향으로 trajectory를 점진적으로 refine한다.</p> <p>핵심은 다음 세 가지로 정리할 수 있다.</p> <ol> <li>Diffusion model을 사용해 쉽게 optimize할 수 있는 trajectory-level potential을 학습한다.</li> <li>Annealed denoising 과정을 통해 local minima 문제를 완화하고, 하나의 planning 문제에 대해 다양한 후보 trajectory를 생성할 수 있다.</li> <li>서로 다른 constraint를 학습한 potential들을 더하는 방식으로 새로운 obstacle 조합이나 static/dynamic constraint 조합에 대응할 수 있다.</li> </ol> <p>결국 이 방법은 potential-based planning의 compositionality는 유지하면서, 기존 hand-designed potential의 local minima 문제와 learning-based planner의 generalization 문제를 diffusion 기반 학습으로 완화하려는 접근이다.</p> <p><img src="/assets/img/blog/paper-review-potential-based-diffusion-motion-planning/composing-diffusion-energy-potential.png" alt="composing Diffusion Energy Potential"/></p> <p>위 그림은 Energy A와 Energy B를 composition해서 새로운 constraint를 ad-hoc하게 추가할 수 있음을 보여준다.</p> <h3 id="contribution">Contribution</h3> <ol> <li>Potential-based motion planning에 diffusion model을 적용하는 방법을 제안한다.</li> <li>Classical planner와 learning-based motion planner를 비교하여 정확도와 collision check 측면에서의 성능을 보인다.</li> <li>다양한 motion constraint set을 조합할 수 있는 compositionality를 설명한다.</li> </ol> <h2 id="method">Method</h2> <h3 id="potential-function">Potential Function</h3> \[U(q) = U_{\mathrm{att}}(q) + U_{\mathrm{repel}}(q)\] <p>$U(q)$는 goal state인 $q_e$에는 낮은 potential 값을, collision 상태인 state에는 높은 potential 값을 부여하는 함수이다.</p> <p>$U_{\mathrm{att}}(q)$는 attraction potential이며, goal state인 $q_e$에는 낮은 potential을 부여하고 goal에서 멀어질수록 높은 potential을 부여한다.</p> <p>$U_{\mathrm{repel}}(q)$는 repulsive potential이며, 장애물에 가까울수록 높은 값을 부여하고 멀어질수록 낮은 값을 부여한다.</p> <p>potential function을 정의하면, gradient descent 방식으로 configuration을 다음과 같이 업데이트할 수 있다.</p> \[q_t = q_{t-1} - \gamma \nabla_q U(q_{t-1})\] <p>여기서 $\gamma$는 step size이고, $-\nabla_q U$는 potential이 감소하는 방향이다. 즉 현재 configuration에서 goal 쪽으로 이동하면서 obstacle의 높은 potential 영역을 피하도록 업데이트한다.</p> <p>이 방식의 주된 한계는 local minima에 빠질 수 있다는 점이다. 한 번 local minima에 빠지면 gradient가 더 이상 goal까지의 유효한 방향을 제공하지 못하므로, 경로를 성공적으로 구성하지 못할 수 있다.</p> <p>$U(q)$는 추가적인 장애물을 통합하는 데 쉬운 접근 방법을 제공한다. motion planning에서는 새로운 obstacle potential $U_{\mathrm{new}}(q)$를 위 수식처럼 더하는 방식으로 확장할 수 있다.</p> <h3 id="motion-planning-formulation">Motion Planning Formulation</h3> \[q_{1:T}^{*} = \arg\min_{q_{1:T}} U_{\theta}(q_{1:T}, q_{\mathrm{st}}, q_e, \mathcal{C})\] <p>이 논문은 configuration 하나에 대한 potential이 아니라, trajectory level의 potential function $U_{\theta}$를 학습하는 것을 제안한다. $U_{\theta}$는 시작 상태 $q_{\mathrm{st}}$, 목표 상태 $q_e$, 환경 정보 $\mathcal{C}$가 주어졌을 때 trajectory $q_{1:T}$가 얼마나 적절한지를 평가한다.</p> <p>이를 학습하기 위해 이미 풀린 motion planning 문제들로 구성된 dataset을 사용한다.</p> \[\mathcal{D} = \{(q_{\mathrm{st}}^i, q_e^i, q_{1:T}^i, \mathcal{C}^i)\}_{i=1}^{M}\] <p>그리고 EBM(Energy-Based Model) 방식으로 trajectory의 conditional distribution을 다음과 같이 표현한다.</p> \[\exp\left(-E_{\theta}(q_{1:T} \mid q_{\mathrm{st}}, q_e, \mathcal{C})\right) \propto p(q_{1:T} \mid q_{\mathrm{st}}, q_e, \mathcal{C})\] <p>즉 좋은 trajectory일수록 낮은 energy를 갖고, 낮은 energy를 갖는 trajectory가 더 높은 확률을 갖도록 학습한다.</p> <p>따라서 이 dataset으로 학습된 $E_{\theta}$는 성공적인 motion plan에 대해서 낮은 energy를 부여하고, 실패하거나 충돌이 발생하는 trajectory에는 높은 energy를 부여하는 함수가 된다.</p> <p>즉 EBM의 energy landscape를 직접 설계하는 대신, 최적화로 생성된 motion plan들을 사용해 학습한다. 이때 energy landscape는 denoising diffusion training 방식으로 형성되며, 학습된 모델은 noisy trajectory를 점진적으로 성공적인 trajectory 쪽으로 이동시키는 방향을 제공한다.</p> <p>구체적으로는 성공적인 motion plan $q_{1:T}^i$에 Gaussian noise $\epsilon$을 섞어 noisy trajectory를 만들고, energy function의 gradient가 이 noise를 제거하는 방향을 학습하도록 한다.</p> \[\tilde{q}_{1:T}^{i,s} = \sqrt{1 - \beta_s}\, q_{1:T}^i + \sqrt{\beta_s}\, \epsilon\] \[\mathcal{L}_{\mathrm{MSE}} = \left\| \epsilon - \nabla_{q_{1:T}} E_{\theta} \left( \tilde{q}_{1:T}^{i,s}, s, q_{\mathrm{st}}^i, q_e^i, \mathcal{C}^i \right) \right\|_2^2\] <p>여기서 $\epsilon \sim \mathcal{N}(0, I)$는 Gaussian noise이고, $\beta_s$는 diffusion step $s$에서 적용되는 Gaussian noise corruption 정도를 나타낸다. $s \in {1, 2, \dots, S}$는 denoising diffusion step이며, 보통 $S=100$으로 두어 여러 noise level에서 denoising 방향을 학습한다.</p> <h3 id="overall-pipeline">Overall Pipeline</h3> <p>아키텍처는 크게 U-Net 기반 CNN trajectory denoiser와 constraint encoder로 구성된다. U-Net은 noisy trajectory를 입력받아 denoising 방향을 예측하고, constraint encoder는 환경 configuration을 조건 정보로 encoding한다.</p> <p>Constraint encoder는 Transformer encoder 구조를 사용한다. 정적 환경에서는 장애물 위치들의 집합을 입력으로 받고, 동적 환경에서는 시간에 따라 변화하는 obstacle trajectory들의 집합을 입력으로 받는다.</p> <p>이때 장애물들은 서로 순서가 중요하지 않아야 하므로 positional embedding은 제거한다. Transformer에서 학습된 class token을 diffusion step의 time embedding과 concatenate한 뒤, 그 결과를 U-Net의 temporal convolution block에 넣어 constraint-aware denoising을 수행한다.</p> <p>각 모델의 hyperparameter setting은 다음과 같다.</p> <p><img src="/assets/img/blog/paper-review-potential-based-diffusion-motion-planning/model-parameters.png" alt="Model parameters"/></p> <h3 id="sampling--optimization">Sampling / Optimization</h3> <p>학습된 diffusion potential function으로부터 motion path를 생성할 때는, 먼저 diffusion step $S$에서 Gaussian noise로 motion path를 초기화한다. 이후 energy function $E_{\theta}$의 gradient를 따라 motion path를 반복적으로 업데이트한다.</p> \[\epsilon = \nabla_{q_{1:T}} E_{\theta} \left( q_{1:T}^{s}, s, q_{\mathrm{st}}, q_e, \mathcal{C} \right)\] \[q_{1:T}^{s-1} = q_{1:T}^{s} - \gamma \epsilon + \xi, \qquad \xi \sim \mathcal{N}(0, \sigma_s^2 I)\] <p>Sampling 과정에서는 classifier-free guidance scale을 사용해 조건 정보 $\mathcal{C}$가 energy gradient에 반영되는 정도를 조절한다. 여기서 $\mathcal{C}$는 environment/constraint condition이고, $\gamma$와 $\sigma_s^2$는 diffusion sampling 과정에서 사용하는 상수이다.</p> <p><img src="/assets/img/blog/paper-review-potential-based-diffusion-motion-planning/algorithm-1.png" alt="Algorithm 1" style="width: 50%; display: block; margin: 0 auto;"/></p> <h4 id="composing-potential-functions">Composing Potential Functions</h4> <p>서로 다른 constraint를 학습한 두 energy function $E_{\theta}^{1}(\cdot)$, $E_{\theta}^{2}(\cdot)$가 있을 때, 둘을 단순히 더해서 combined energy function을 만들 수 있다.</p> \[E^{\mathrm{comb}}(\cdot) = E_{\theta}^{1}(\cdot) + E_{\theta}^{2}(\cdot)\] <p>이를 $N$개의 constraint로 일반화하면 다음과 같이 쓸 수 있다.</p> \[E_{\theta}^{\mathrm{comb}}(q_{1:T}, s, q_{\mathrm{st}}, q_e, \mathcal{C}_{1:N}) = \sum_{i=1}^{N} E_{\theta}(q_{1:T}, s, q_{\mathrm{st}}, q_e, \mathcal{C}_i)\] <p>정적 장애물은 미리 정의된 constraint로 볼 수 있고, 동적 장애물은 시간에 따라 변하는 constraint로 볼 수 있다. 따라서 정적 장애물 $N_1$개와 동적 장애물 $N_2$개가 있을 때 composite diffusion potential function은 다음과 같이 쓸 수 있다.</p> \[E_{\theta}^{\mathrm{comb}} \left( q_{1:T}, s, q_{\mathrm{st}}, q_e, [\mathcal{C}_{1:N_1}^{s}, \mathcal{C}_{1:N_2}^{d}] \right) = \sum_{i=1}^{N_1} E_{\theta_s}^{i} \left( q_{1:T}, s, q_{\mathrm{st}}, q_e, \mathcal{C}_i^{s} \right) + \sum_{j=1}^{N_2} E_{\theta_d}^{j} \left( q_{1:T}, s, q_{\mathrm{st}}, q_e, \mathcal{C}_{j,1:T}^{d} \right)\] <p>여기서 $\mathcal{C}_i^{s}$는 $i$번째 static obstacle condition이고, $\mathcal{C}_{j,1:T}^{d}$는 시간에 따라 변하는 $j$번째 dynamic obstacle condition이다.</p> <p>이렇게 합쳐진 potential function은 두 constraint를 모두 만족하는 trajectory에 낮은 energy를 부여한다.</p> <p>만약 각 constraint가 서로 독립적이라면, 이렇게 composition한 potential은 여러 constraint를 결합한 ground-truth potential로 볼 수 있다.</p> <p>실제 응용 관점에서 모든 제약조건의 조합을 하나의 모델로 미리 학습하는 것은 어렵다. 테스트 환경에서는 학습 때 보지 못한 새로운 제약조건의 조합이 등장할 수 있기 때문이다. 이 방식은 새로운 constraint에 해당하는 energy function을 계속 추가하고 composition할 수 있으므로, 이런 문제를 완화할 수 있다. Algorithm 1은 이러한 composition 기반 sampling 절차를 설명한다.</p> <p>합쳐진 potential function $E^{\mathrm{comb}}$에서 sample하기 위해서는 다음과 같이 combined gradient를 사용한다.</p> \[\epsilon_{\mathrm{comb}} = \nabla_{q_{1:T}} \left( E_{\theta}^{1}(q_{1:T}^{s}, s, q_{\mathrm{st}}, q_e, \mathcal{C}_1) + E_{\theta}^{2}(q_{1:T}^{s}, s, q_{\mathrm{st}}, q_e, \mathcal{C}_2) \right)\] \[q_{1:T}^{s-1} = q_{1:T}^{s} - \gamma \epsilon_{\mathrm{comb}} + \xi, \qquad \xi \sim \mathcal{N}(0, \sigma_s^2 I)\] <h4 id="refinement-with-warm-start-denoising">Refinement with Warm-start Denoising</h4> <p>예측된 motion plan은 우연히 일부 section에서 constraint를 침해할 수 있다. Classical motion planner나 learning-based motion planner들은 이런 문제를 다루기 위해 trajectory를 정제(refinement)하는 절차를 제공한다.</p> <p>Diffusion potential fields에서는 반대로, collision이 있는 기존 trajectory를 noisy trajectory로 perturbing한 뒤 다시 denoising하는 방식으로 trajectory를 수정한다. 먼저 forward process의 임의의 $k$ step을 사용해 기존 trajectory $q_{1:T}$에 noise를 추가한다.</p> \[q_{1:T}^{k} = \sqrt{\bar{\alpha}_k}\, q_{1:T} + \sqrt{1 - \bar{\alpha}_k}\, \xi, \qquad \xi \sim \mathcal{N}(0, I)\] <p>그 다음 일반적인 denoising 과정을 사용해 새로운 motion plan $q’_{1:T}$를 생성한다.</p> \[q'_{1:T} = f_{\theta}(q_{1:T}^{k}, k, q_{\mathrm{st}}, q_e, \mathcal{C}_{1:N})\] <p>만약 기존 trajectory $q_{1:T}$ 안에 constraint를 만족하지 않는 section이 있다면, 해당 section에 대응되는 구간을 $q’_{1:T}$에서 가져와 교체한다. 이때 교체되는 section은 전체 trajectory와 coherent해야 하고 collision-free해야 한다.</p> <p>이 refinement 과정은 원하는 trajectory를 찾을 때까지 반복할 수 있다. Warm-start denoising scheme은 처음부터 새 trajectory를 생성하는 것보다 빠른 replanning을 가능하게 하고, 동시에 기존 plan의 전체적인 형태를 유지할 수 있게 한다.</p> <p>Algorithm 2는 이러한 refinement pipeline을 정리한 것이다.</p> <p><img src="/assets/img/blog/paper-review-potential-based-diffusion-motion-planning/algorithm-2.png" alt="Algorithm 2" style="width: 50%; display: block; margin: 0 auto;"/></p> <p>아래 그림은 refinement 과정과 관련된 예시이다.</p> <p><img src="/assets/img/blog/paper-review-potential-based-diffusion-motion-planning/refinement-example.png" alt="Refinement example"/></p> <h4 id="probabilistic-completeness">Probabilistic Completeness</h4> <p>Probabilistic completeness를 다루기 위해, diffusion potential model의 output distribution을 $\mathcal{D}_0$라고 두고, 이에 대한 probability density function을 $f_{\theta}(q_{1:T})$로 정의한다.</p> <p>제약 $\mathcal{C}$를 만족하는 feasible trajectory를 $q_{1:T}^{\mathcal{C}}$라고 하자. 또한 이 trajectory 주변의 $\tau$-neighborhood를 $B_{\tau}(q_{1:T}^{\mathcal{C}})$라고 두면,</p> \[B_{\tau}(q_{1:T}^{\mathcal{C}}) = \left\{ x \mid \left\|x - q_{1:T}^{\mathcal{C}}\right\| \le \tau \right\}\] <p>이다. 이 neighborhood 안에서 모델이 trajectory를 샘플할 확률을 $P_{\tau}$라고 하면,</p> \[P_{\tau} = \int_{B_{\tau}(q_{1:T}^{\mathcal{C}})} f_{\theta}(x)\,dx &gt; 0\] <p>로 쓸 수 있다.</p> <p>$A_n$을 $n$개의 샘플링된 trajectory 중 적어도 하나가 $B_{\tau}(q_{1:T}^{\mathcal{C}})$ 안에 속하는 사건이라고 하자. 즉, $n$개의 후보 trajectory 중 하나 이상이 제약 $\mathcal{C}$를 만족하는 feasible trajectory 근방에 들어가는 사건이다.</p> <p>각 샘플이 독립적으로 생성된다고 보면,</p> \[\mathbb{P}(A_n) = 1 - (1 - P_{\tau})^n\] <p>이고, $P_{\tau} &gt; 0$이므로 샘플 수가 무한대로 증가하면</p> \[\lim_{n \to \infty} \mathbb{P}(A_n) = 1\] <p>이 된다. 따라서 diffusion potential model이 feasible trajectory 주변에 non-zero probability mass를 가진다면, 샘플 수가 충분히 증가했을 때 제약을 만족하는 trajectory를 찾을 확률은 1에 수렴한다. 이러한 의미에서 이 방법은 probabilistically complete하다고 볼 수 있다.</p> <h2 id="experiments">Experiments</h2> <h3 id="실험-설정">실험 설정</h3> <p>실험은 2D point robot부터 14 DoF dual-arm setting까지 난이도를 점진적으로 높여 구성한다.</p> <table> <thead> <tr> <th>Environment</th> <th>Configuration space</th> <th>설명</th> </tr> </thead> <tbody> <tr> <td>Static Maze2D</td> <td>2D $(x, y)$</td> <td>2D workspace에서 point robot이 움직이는 환경이다. 장애물은 고정되어 있다.</td> </tr> <tr> <td>Dynamic Maze2D</td> <td>2D $(x, y)$</td> <td>Maze2D와 동일한 point robot 환경이지만, 장애물이 randomly generated linear trajectory를 따라 움직인다.</td> </tr> <tr> <td>KUKA</td> <td>7D joint state</td> <td>3D tabletop workspace에서 7 DoF KUKA arm이 움직이는 환경이다. start/goal은 KUKA arm의 7D joint state로 주어진다.</td> </tr> <tr> <td>Dual KUKA</td> <td>14D joint state</td> <td>두 개의 KUKA arm이 tabletop 위에 나란히 배치되어 동시에 움직이는 환경이다. start/goal은 두 arm의 joint state를 합친 14 DoF state로 주어진다.</td> </tr> </tbody> </table> <h3 id="비교-대상">비교 대상</h3> <p>비교 대상은 method의 성격에 따라 다음과 같이 나눌 수 있다.</p> <table> <thead> <tr> <th>구분</th> <th>비교 방법</th> <th>비교 의도</th> </tr> </thead> <tbody> <tr> <td>Classical planning baselines</td> <td>RRT*, P-RRT*, BIT*, SIPP</td> <td>sampling/search 기반 planner와 성공률, planning time, collision check 수를 비교</td> </tr> <tr> <td>Classical potential-based baseline</td> <td>RMP</td> <td>전통적인 potential-based method와 비교</td> </tr> <tr> <td>Learning-based baselines</td> <td>MPNet, M$\pi$Net, AMP-LS</td> <td>기존 학습 기반 motion planner와 generalization 및 planning 효율성 비교</td> </tr> </tbody> </table> <h3 id="실험-결과">실험 결과</h3> <p>아래 결과는 Maze2D, KUKA, Dual KUKA 환경에서 collision check 수, success rate, planning time을 비교한 것이다.</p> <p><img src="/assets/img/blog/paper-review-potential-based-diffusion-motion-planning/quantitative-comparisons.png" alt="Quantitative comparisons"/></p> <h2 id="저자가-제시한-한계-및-추가제안">저자가 제시한 한계 및 추가제안</h2> <ol> <li>생성된 motion trajectory는 collision-free 측면에서는 정확할 수 있지만, 종종 sub-optimal할 수 있다. 예를 들어 더 짧은 path가 존재하더라도 모델이 반드시 최단 경로를 선택하는 것은 아니다. 이 부분은 goal에 더 빠르게 도달하도록 유도하는 reach-related potential을 추가하면 어느 정도 완화할 수 있을 것으로 보인다.</li> <li>Potential을 조합하는 방식은 조합되는 모델의 수에 비례하여 계산량이 증가한다. 즉, 더 많은 constraint나 obstacle-specific potential을 추가할수록 sampling 과정에서 더 많은 연산 자원이 필요하다. 이는 서로 다른 potential들이 하나의 네트워크 내부에서 feature를 공유하도록 설계함으로써 완화할 수 있다.</li> </ol>]]></content><author><name>Jeonghan Kim</name><email>kimjh9813@naver.com</email></author><category term="논문리뷰"/><category term="diffusion"/><category term="robotics"/><category term="motion-planning"/><category term="diffusion-model"/><category term="paper-review"/><summary type="html"><![CDATA[논문 정보]]></summary></entry><entry><title type="html">[용어] Gradient Accumulation이란?</title><link href="https://kim-jeonghan.github.io/blog/2026/gradient-accumulation/" rel="alternate" type="text/html" title="[용어] Gradient Accumulation이란?"/><published>2026-02-12T08:32:43+00:00</published><updated>2026-07-01T05:34:13+00:00</updated><id>https://kim-jeonghan.github.io/blog/2026/gradient-accumulation</id><content type="html" xml:base="https://kim-jeonghan.github.io/blog/2026/gradient-accumulation/"><![CDATA[<h3 id="1-왜-사용하는가-핵심-vram-절약">1. 왜 사용하는가? (핵심: VRAM 절약)</h3> <p>대규모 모델을 학습하거나 이미지 해상도가 클 때, GPU 메모리(VRAM) 한계로 인해 배치 사이즈(Batch Size)를 크게 잡을 수 없는 경우가 많다.</p> <ul> <li><strong>문제:</strong> 배치 사이즈를 1이나 2로 줄이면 학습이 불안정해지고 수렴이 느려진다.</li> <li><strong>해결:</strong> 물리적인 배치 사이즈는 작게 유지하되, 여러 번 계산한 기울기를 합쳐서 마치 큰 배치 사이즈로 학습한 것과 같은 효과를 낼 수 있다.</li> </ul> <h3 id="2-작동-공식">2. 작동 공식</h3> <p>Gradient Accumulation를 반복횟수를 N이라고 가정했을 때, 실제 학습에 적용되는 <strong>가상 배치 사이즈(Virtual Batch Size)</strong>는 다음과 같다.</p> <ul> <li><strong>Physical Batch Size:</strong> 실제 GPU 메모리에 한 번에 올라가는 데이터 수 (예: 4)</li> <li><strong>gradient_accumulate 반복 횟수:</strong> 누적 횟수 (예: 8)</li> <li><strong>Virtual Batch Size:</strong> 4 * 8 = <strong>32</strong> (모델은 마치 배치 사이즈 32로 학습하는 효과를 얻음)</li> </ul> <h3 id="3-코드-구현-예시-pytorch">3. 코드 구현 예시 (PyTorch)</h3> <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># 설정값
gradient_accumulate_every = 4  # 4번 모아서 업데이트하겠다
batch_size = 16                # 실제 GPU에 올라가는 배치 크기

for i, (inputs, labels) in enumerate(dataloader):
    # 1. Forward Pass
    outputs = model(inputs)
    loss = criterion(outputs, labels)

    # 2. Loss Normalization (중요!)
    # 여러 번 더해지므로, 평균을 맞추기 위해 미리 나눕니다.
    loss = loss / gradient_accumulate_every 

    # 3. Backward Pass (기울기 계산 및 누적)
    # PyTorch는 기본적으로 backward() 호출 시 기울기를 덮어쓰지 않고 더합니다(accumulate).
    loss.backward()

    # 4. Step (누적된 횟수가 찼을 때만 업데이트)
    if (i + 1) % gradient_accumulate_every == 0:
        optimizer.step()       # 가중치 업데이트
        optimizer.zero_grad()  # 기울기 초기화
</code></pre></div></div> <h3 id="4-주의할-점">4. 주의할 점</h3> <ol> <li><strong>Loss 나누기:</strong> <code class="language-plaintext highlighter-rouge">loss.backward()</code>를 호출할 때마다 기울기가 계속 더해지므로, 합쳐진 기울기의 크기가 커진다. 수학적으로 “평균” 기울기를 구하려면 <code class="language-plaintext highlighter-rouge">loss</code>를 <code class="language-plaintext highlighter-rouge">gradient_accumulate_every</code>로 나누어 주어야 한다.</li> <li><strong>BatchNorm:</strong> 배치 정규화(Batch Normalization) 층은 물리적인 배치 사이즈(Physical Batch Size)에 의존합니다. 따라서 Gradient Accumulation을 써도 BatchNorm 통계량은 작은 배치 기준으로 계산되므로, 배치 사이즈가 너무 작으면(예: 1~2) 성능 저하가 올 수 있다.</li> </ol> <h3 id="요약">요약</h3> <ul> <li><strong>의미:</strong> 가중치 업데이트 한 번을 수행하기 위해 거치는 Forward/Backward 패스의 횟수.</li> <li><strong>목적:</strong> 적은 GPU 메모리로 큰 배치 사이즈의 학습 효과를 내기 위함.</li> </ul>]]></content><author><name>Jeonghan Kim</name><email>kimjh9813@naver.com</email></author><category term="공부"/><category term="인공지능"/><category term="AI"/><summary type="html"><![CDATA[1. 왜 사용하는가? (핵심: VRAM 절약)]]></summary></entry><entry><title type="html">[확률과 통계 28] Central Limit Theorem Noise and Sampling Theory</title><link href="https://kim-jeonghan.github.io/blog/2026/prob-28-central-limit-theorem-noise-sampling/" rel="alternate" type="text/html" title="[확률과 통계 28] Central Limit Theorem Noise and Sampling Theory"/><published>2026-01-20T11:46:57+00:00</published><updated>2026-07-01T05:34:13+00:00</updated><id>https://kim-jeonghan.github.io/blog/2026/prob-28-central-limit-theorem-noise-sampling</id><content type="html" xml:base="https://kim-jeonghan.github.io/blog/2026/prob-28-central-limit-theorem-noise-sampling/"><![CDATA[<h1 id="01-central-limit-theorem-표본합이-정규-분포로-수렴하는-이유와-응용">01) <strong>Central Limit Theorem: 표본합이 정규 분포로 수렴하는 이유와 응용</strong></h1> <h2 id="00_서론">00_서론</h2> <p>중심 극한 정리 Central Limit Theorem는 서로 독립인 random variable들이 충분히 많이 합쳐질 때 그 합이나 평균이 정규 분포 Gaussian Distribution로 근사된다는 사실을 설명하며, 이 성질은 잡음 모델링, 통계적 추론, 신호 처리에서 반복적으로 사용된다. 현실의 관측값은 여러 독립 요인의 누적 결과로 나타나는 경우가 많으므로, 개별 요인의 분포를 정확히 알기 어렵더라도 합의 분포를 정규 분포로 다룰 수 있다는 점이 Central Limit Theorem의 핵심 가치이다.</p> <h2 id="01_central-limit-theorem의-정의">01_Central Limit Theorem의 정의</h2> <p>Central Limit Theorem는 i.i.d. 조건과 유한한 Expectation 및 Variance를 전제로, 합을 적절히 표준화한 random variable $Y$가 $n$이 커질수록 표준 정규 분포에 가까워짐을 말한다.</p> <ul> <li>조건: $X_1,X_2,\ldots,X_n$은 i.i.d.이며 $E[X_i]=\mu$, $\mathrm{Var}(X_i)=\sigma^2$이고 $0&lt;\sigma^2&lt;\infty$이다.</li> <li>표준화된 합 $Y$ \(Y=\frac{\sum_{i=1}^{n}X_i-n\mu}{\sigma\sqrt{n}}\)</li> <li>수렴 진술:→ $\sum_{i=1}^{n}X_i$는 $n$이 커질수록 평균이 $n\mu$ 근처로 커지고 퍼짐도 함께 커지므로, 이를 평균 $n\mu$만큼 빼서 중심을 0으로 옮기고 $\sigma\sqrt{n}$으로 나누어 퍼짐을 1 수준으로 맞추면, 그 결과가 항상 비슷한 모양의 정규 분포로 안정화된다. \(Y \Rightarrow \mathcal{N}(0,1)\quad (n\to\infty)\)</li> </ul> <p>같은 내용을 표본합과 Sample Mean 관점에서 쓰면 다음과 같다.</p> <ul> <li>표본합 $S_n=\sum_{i=1}^{n}X_i$의 근사 \(S_n \approx \mathcal{N}(n\mu,n\sigma^2)\)</li> <li>Sample Mean $\bar{X}=\frac{1}{n}\sum_{i=1}^{n}X_i$의 근사:→ $\bar{X}$의 평균은 항상 $\mu$이고 분산은 $\sigma^2/n$이므로, $n$이 커질수록 $\bar{X}$는 $\mu$ 주변에 더 좁게 모이며 평균 추정이 더 안정적이 된다. \(\bar{X}\approx \mathcal{N}\left(\mu,\frac{\sigma^2}{n}\right)\)</li> </ul> <h2 id="02_확률론적-의미와-직관">02_확률론적 의미와 직관</h2> <p>Central Limit Theorem의 핵심 의미는 개별 분포의 형태가 직접적으로 알려져 있지 않더라도 i.i.d.와 유한 분산이라는 조건만으로 Random variable의 합의 분포가 정규 분포로 근사된다는 점이다. 연속형에서 독립 random variable의 합은 Convolution으로 분포가 누적되며, 많은 횟수의 Convolution이 반복될수록 분포의 형태가 종 모양으로 안정화되는 경향이 나타난다.</p> <h2 id="03_응용-잡음-설문조사-신호-처리">03_응용: 잡음, 설문조사, 신호 처리</h2> <h3 id="잡음-모델링에서의-central-limit-theorem">잡음 모델링에서의 Central Limit Theorem</h3> <p>관측 잡음 noise는 여러 독립 원인의 합으로 발생하는 경우가 많으므로, 개별 원인의 분포가 서로 달라도 전체 잡음을 정규 분포로 근사하는 모델이 자주 사용된다.</p> <ul> <li>모델: $x=I+n$에서 $I$는 신호, $n$은 noise이며 $n$을 $\mathcal{N}(0,\sigma_n^2)$로 두는 모델은 많은 독립 요인의 합이라는 구조와 잘 맞는다.</li> <li>→ 복합 원인의 합으로 나타나는 오차는 정규 분포로 근사되기 쉬우므로 분석과 필터 설계가 단순해진다.</li> </ul> <p><img src="/assets/img/blog/prob-28-central-limit-theorem-noise-sampling/image-001.png" alt=""/></p> <h3 id="설문조사에서의-sample-mean과-불확실성">설문조사에서의 Sample Mean과 불확실성</h3> <p>설문조사에서 각 응답을 random variable $X_i$로 두면 Sample Mean $\bar{X}$는 모집단 평균 $\mu$에 대한 estimator로 해석되며, i.i.d. 가정은 무작위 추출과 응답 간 영향 최소화를 수학적으로 표현한다.</p> <ul> <li>Example 모델: 만족도 점수 응답을 $X_i$로 두고 $E[X_i]=\mu$, $\mathrm{Var}(X_i)=\sigma^2$라고 하면 $\bar{X}=\frac{1}{n}\sum X_i$는 표본 평균 만족도이다.</li> <li>근사 분포:</li> </ul> \[\bar{X}\approx \mathcal{N}\left(\mu,\frac{\sigma^2}{n}\right)\] <p>→ $n$이 증가할수록 $\mathrm{Var}(\bar{X})=\sigma^2/n$가 감소하므로 설문 평균의 오차 폭이 줄어들며, 이 구조가 신뢰구간 confidence interval의 폭이 $1/\sqrt{n}$에 비례해 감소하는 이유를 제공한다.</p> <h3 id="신호-처리에서의-평균화와-잡음-감소">신호 처리에서의 평균화와 잡음 감소</h3> <p>동일한 조건에서 반복 측정한 관측값 $x_i=I+n_i$를 평균내면 noise 성분의 분산이 감소하여 신호 복원 성능이 향상된다.</p> <ul> <li>고정 신호: $x_i=I+n_i$, $E[n_i]=0$, $\mathrm{Var}(n_i)=\sigma_n^2$이면</li> </ul> \[\bar{x}=\frac{1}{N}\sum_{i=1}^{N}x_i=I+\bar{n},\quad \mathrm{Var}(\bar{n})=\frac{\sigma_n^2}{N}\] <p>→ $N$을 늘리면 noise의 분산이 $\sigma_n^2/N$로 감소하므로 평균화만으로도 잡음이 줄어든다.</p> <p><img src="/assets/img/blog/prob-28-central-limit-theorem-noise-sampling/image-002.png" alt=""/></p> <p>동일한 대상(예: 정지된 물체의 무게)을 $N$번 반복 측정했을 때, 평균값이 얼마나 실제값($I$)에 수렴하는지 보여준다.</p> <ul> <li>가변 신호: $x_i=I_i+n_i$에서 $I_i$도 변하면 평균화는 noise뿐 아니라 신호 변동도 함께 줄이는 smoothing 효과를 만들 수 있다.</li> </ul> \[\begin{aligned}\bar{X}&amp;= \frac{1}{n}\left(X_1 + X_2 + X_3 + \cdots + X_n\right) \\[6pt]&amp;= \frac{1}{n}\sum_{i=1}^{n} (I_i + N_i) = \frac{1}{n}\sum_{i=1}^{n} I_i + \frac{1}{n}\sum_{i=1}^{n} N_i \end{aligned} \Longrightarrow \begin{aligned} \quad f_{\bar{X}}(\bar{x}) &amp;\cong \mathcal{N}\left(m, \frac{\sigma^2}{n}\right) + \mathcal{N}\left(0, \frac{\sigma_N^2}{n}\right) \end{aligned}\] <p>→ 평균화는 noise reduction에 유리하지만 신호의 급격한 변화 성분까지 약화시킬 수 있으므로 목적에 따라 $N$ 또는 가중 평균 weighted mean을 설계한다.</p> <p><img src="/assets/img/blog/prob-28-central-limit-theorem-noise-sampling/image-003.png" alt=""/></p> <p>신호가 시간에 따라 변할 때(예: 주식 가격, 센서 데이터), 평균화(Moving Average)는 잡음을 줄여주지만 <strong>신호의 급격한 변화(Edge)를 뭉개뜨리는 효과</strong>를 동시에 가진다.</p> <p><img src="/assets/img/blog/prob-28-central-limit-theorem-noise-sampling/image-004.png" alt=""/></p> <h2 id="04_결론">04_결론</h2> <p>Central Limit Theorem는 i.i.d.와 유한 분산 조건에서 표준화된 합 $Y=\frac{\sum_{i=1}^{n}X_i-n\mu}{\sigma\sqrt{n}}$가 $n\to\infty$일 때 $\mathcal{N}(0,1)$로 수렴함을 보장하며, 이로부터 Sample Mean $\bar{X}=\frac{1}{n}\sum_{i=1}^{n}X_i$가 $\mathcal{N}\left(\mu,\frac{\sigma^2}{n}\right)$로 근사된다는 결론이 따라온다. → 즉, 표본을 많이 모아 평균을 내면 그 평균은 $\mu$ 주변에 정규 분포 형태로 모이고, 분산은 $\sigma/\sqrt{n}$ 수준으로 줄어들므로, 잡음의 Gaussian 모델링, 설문조사 및 품질관리에서의 평균 추정과 신뢰구간 계산, 신호 처리에서의 평균화 기반 잡음 감소가 모두 같은 수학적 구조 위에서 설명된다.</p>]]></content><author><name>Jeonghan Kim</name><email>kimjh9813@naver.com</email></author><category term="공부"/><category term="확률과 통계"/><category term="수업"/><summary type="html"><![CDATA[01) Central Limit Theorem: 표본합이 정규 분포로 수렴하는 이유와 응용]]></summary></entry><entry><title type="html">[확률과 통계 27] Sum of independent discrete RVs</title><link href="https://kim-jeonghan.github.io/blog/2026/prob-27-sum-independent-discrete-rvs/" rel="alternate" type="text/html" title="[확률과 통계 27] Sum of independent discrete RVs"/><published>2026-01-20T09:49:55+00:00</published><updated>2026-07-01T05:34:13+00:00</updated><id>https://kim-jeonghan.github.io/blog/2026/prob-27-sum-independent-discrete-rvs</id><content type="html" xml:base="https://kim-jeonghan.github.io/blog/2026/prob-27-sum-independent-discrete-rvs/"><![CDATA[<h1 id="01-독립-확률-변수의-합-분포-expectation-그리고-variance">01) <strong>독립 확률 변수의 합: 분포, Expectation, 그리고 Variance</strong></h1> <h2 id="00_서론">00_서론</h2> <p>확률론과 통계학에서는 여러 random variable의 합으로 새로운 random variable을 정의하는 상황이 반복적으로 등장하며, 대표적으로 $W=X+Y$와 같은 형태가 기본 모델로 사용된다. 이 글의 목표는 합으로 정의된 random variable의 <strong>분포</strong>, <strong>Expectation</strong>, <strong>Variance</strong>를 하나의 흐름으로 정리하는 것이며, 특히 Independence 가정이 들어갈 때 Convolution이 왜 자연스럽게 등장하는지를 수식 기반으로 유도한다.</p> <h2 id="01_확률-변수-합의-분포-일반-원리">01_확률 변수 합의 분포: 일반 원리</h2> <p>$W=X+Y$의 분포를 구하는 과정은 두 변수 $X,Y$가 함께 어떤 값을 가질 수 있는지를 나타내는 Joint Distribution에서 시작하며, Independence 여부와 무관하게 합이 목표값이 되도록 만드는 모든 경우를 모아서 그 확률을 더하거나 적분하는 방식으로 계산된다.</p> <h3 id="discrete-random-variable에서의-일반식">Discrete random variable에서의 일반식</h3> <p>두 discrete random variable $X,Y$의 Joint PMF를 $p_{X,Y}(x,y)$라 할 때, $W=X+Y$의 PMF는 다음으로 정의된다.</p> \[p_W(w)=P(W=w)=\sum_{x+y=w} p_{X,Y}(x,y)\] <p>→ $W=w$를 만족하는 모든 $(x,y)$ 조합의 Joint Probability를 합산하는 과정이며, 합산 범위는 $p_{X,Y}(x,y)$가 0이 아닌 범위로 제한된다.</p> <h3 id="continuous-random-variable에서의-일반식">Continuous random variable에서의 일반식</h3> <p>두 continuous random variable $X,Y$의 Joint PDF를 $f_{X,Y}(x,y)$라 할 때, $W=X+Y$의 CDF는 적분 영역으로 표현되고 이를 미분하여 PDF를 얻는다.</p> \[F_W(w)=P(W\le w)=P(X+Y\le w)=\int_{-\infty}^{\infty}\int_{-\infty}^{w-y} f_{X,Y}(x,y)\,dx\,dy\] <p>위 식을 $w$에 대해 미분하면 다음이 성립한다.</p> \[f_W(w)=\int_{-\infty}^{\infty} f_{X,Y}(w-y,y)\,dy\] <p>→ 내부 적분의 상한 $w-y$는 고정된 $y$에서 조건 $x\le w-y$를 만족하는 $x$ 범위를 의미하며, 미분 후에는 경계 $x=w-y$ 위에서의 Joint PDF가 바깥 적분으로 누적되는 구조가 된다.</p> <h2 id="02_independent한-상황에서-확률변수의-합">02_Independent한 상황에서 확률변수의 합</h2> <p>Independence는 Joint Distribution을 Marginal Probability들의 곱으로 분해하며, 그 결과 합의 분포 계산이 Convolution 형태로 단순화된다.</p> <h3 id="discrete-convolution">Discrete Convolution</h3> <p>$X,Y$가 independent이면 $p_{X,Y}(x,y)=p_X(x)p_Y(y)$이므로 다음이 성립한다.</p> \[\begin{aligned} P_W(W = w) &amp;= \sum_{x+y=w} P_{XY}(x, y) \\ &amp;= \sum_{x+y=w} P_X(x)\, P_Y(y) \\ &amp;= \sum_{x} P_X(x)\, P_Y(w - x) \end{aligned}\] <p>→ 합이 $w$가 되려면 $Y=w-x$가 되어야 하므로 가능한 모든 $x$에 대해 $p_X(x)$와 $p_Y(w-x)$의 곱을 누적하는 구조가 된다.</p> <p>이는 두 probabilities의 convolution형태로 볼수 있다.</p> \[\begin{aligned} \sum_{x} P_X(x)\, P_Y(w - x)=P_X(w) \ast P_Y(w)\end{aligned}\] <h3 id="continuous-convolution">Continuous Convolution</h3> <p>$X,Y$가 independent이면 $f_{X,Y}(x,y)=f_X(x)f_Y(y)$이므로 CDF 기반 전개는 다음처럼 정리된다.</p> \[\begin{aligned} F_W(w) &amp;= \int_{-\infty}^{\infty}\int_{-\infty}^{w-y} f_X(x)\,f_Y(y)\,dx\,dy \\ &amp;= \int_{-\infty}^{\infty} f_Y(y)\left(\int_{-\infty}^{w-y} f_X(x)\,dx\right)dy \\ &amp;= \int_{-\infty}^{\infty} F_X(w-y)\,f_Y(y)\,dy \end{aligned}\] <p>이를 $w$에 대해 미분하면 다음의 PDF를 얻는다.</p> \[\begin{aligned} f_W(w) &amp;= \frac{d}{dw}\int_{-\infty}^{\infty} F_X(w-y)\,f_Y(y)\,dy \\ &amp;= \int_{-\infty}^{\infty} f_X(w-y)\,f_Y(y)\,dy \end{aligned}\] <p>→ 최종 적분은 합이 $w$가 되도록 만드는 모든 분해 $w=(w-y)+y$에 대해 $X$의 density와 $Y$의 density를 곱한 뒤 누적하는 과정이며, 이는 Convolution 정의와 일치한다.</p> \[f_W(w)=(f_X\ast f_Y)(w)=\int_{-\infty}^{\infty} f_X(w-\tau)\,f_Y(\tau)\,d\tau\] <h2 id="03_적용-예제-독립-poisson-분포의-합">03_적용 예제: 독립 Poisson 분포의 합</h2> <p>Poisson distribution은 Independence 하에서 $X\sim Poisson(\lambda_1)$, $Y\sim Poisson(\lambda_2)$이면 $W=X+Y\sim Poisson(\lambda_1+\lambda_2)$가 성립하며, 이는 $p_W(w)=\sum_x p_X(x)p_Y(w-x)$ 형태의 Discrete Convolution이 Poisson PMF의 형태를 보존한다는 의미이다.</p> <ul> <li>Poisson distribution은 고정된 시간 또는 공간 구간에서 발생한 event의 횟수를 모델링하는 distribution이며, 구간 내 event 발생이 독립적이고 발생확률이 같다.</li> <li>Bernoulli trial은 각 시행이 두 가지 결과만 갖는다. (True / False)</li> </ul> <h3 id="문제-정의">문제 정의</h3> <ul> <li>$X\sim \mathrm{Poisson}(\lambda_1)$, $Y\sim \mathrm{Poisson}(\lambda_2)$, $X$와 $Y$는 independent이다. \(\begin{aligned}P(X = x)&amp;= \frac{\lambda_1^{x} e^{-\lambda_1}}{x!}, P(Y = y)&amp;= \frac{\lambda_2^{y} e^{-\lambda_2}}{y!}\end{aligned}\)</li> <li>$W=X+Y$의 PMF $p_W(w)$를 구한다.</li> </ul> <h3 id="모델링">모델링</h3> <p>Poisson 분포의 PMF는 $k\in{0,1,2,\ldots}$에 대해 다음과 같다.</p> \[p(k;\lambda)=\frac{\lambda^k e^{-\lambda}}{k!}\] <h3 id="수식-전개">수식 전개</h3> <p>Independence이므로 Discrete Convolution을 적용하고 support가 음이 아닌 정수이므로 합산 범위는 $x=0$부터 $w$까지로 제한된다.</p> \[\begin{aligned} p_W(w) &amp;=\sum_{x=0}^{w} p_X(x)\,p_Y(w-x) \\ &amp;=\sum_{x=0}^{w} \frac{\lambda_1^x e^{-\lambda_1}}{x!}\,\frac{\lambda_2^{w-x} e^{-\lambda_2}}{(w-x)!} \end{aligned}\] <p>지수항을 묶고 이항정리 형태를 만들기 위해 $\frac{w!}{w!}$를 곱해 정리한다.</p> \[\begin{aligned} p_W(w) &amp;=e^{-(\lambda_1+\lambda_2)}\sum_{x=0}^{w}\frac{\lambda_1^x\lambda_2^{w-x}}{x!(w-x)!} \\ &amp;=\frac{e^{-(\lambda_1+\lambda_2)}}{w!}\sum_{x=0}^{w}\binom{w}{x}\lambda_1^x\lambda_2^{w-x} \\ &amp;=\frac{e^{-(\lambda_1+\lambda_2)}}{w!}(\lambda_1+\lambda_2)^w \end{aligned}\] <h3 id="결과-해석">결과 해석</h3> <p>최종 형태는 $\mathrm{Poisson}(\lambda_1+\lambda_2)$의 PMF와 동일하므로 $W\sim \mathrm{Poisson}(\lambda_1+\lambda_2)$가 된다. → Independence로 인해 Joint Distribution이 곱으로 분해되고, Convolution 합산이 이항정리 구조로 정리되면서 모수의 합($\lambda_1+\lambda_2 + \cdots$)이 자연스럽게 등장한다.</p> <h2 id="04_확률변수의-합의-expectation과-variance">04_확률변수의 합의 Expectation과 Variance</h2> <p>확률변수의 합의 distribution을 직접 계산하지 않더라도, Expectation과 Variance는 비교적 단순한 규칙으로 계산할 수 있다.</p> <h3 id="expectation의-선형성">Expectation의 선형성</h3> <p>$X_1,\ldots,X_n$에 대해 Independence 여부와 무관하게 다음이 성립한다.</p> \[E\left[\sum_{i=1}^{n}X_i\right]=\sum_{i=1}^{n}E[X_i]\] <p>→ Expectation은 단순 합산 연산으로 계산되므로, 선형성이 보존된다.</p> <h3 id="variance의-일반식과-독립인-경우의-단순화">Variance의 일반식과 독립인 경우의 단순화</h3> \[\begin{aligned} Y &amp;= X_1 + X_2 + X_3 + \cdots + X_n \\[6pt] \operatorname{Var}[Y] &amp;= E\left[(Y - E[Y])^2\right] \\ &amp;= E\left[ \left( \sum_{i=1}^{n} X_i - \sum_{i=1}^{n} E[X_i] \right)^2 \right] \\[6pt] &amp;= E\left[ \sum_{i=1}^{n} (X_i - E[X_i])^2 + 2 \sum_{\substack{i,j \\ i \ne j}} (X_i - E[X_i])(X_j - E[X_j]) \right] \\[6pt] &amp;= \sum_{i=1}^{n} \operatorname{Var}(X_i) + 2 \sum_{i \ne j} \operatorname{Cov}(X_i, X_j) \end{aligned}\] <p>만약 $X_i$들이 서로 independent이면 모든 $i\ne j$에 대해 $\mathrm{Cov}(X_i,X_j)=0$이므로 다음으로 단순화된다.</p> \[\mathrm{Var}\left(\sum_{i=1}^{n}X_i\right)=\sum_{i=1}^{n}\mathrm{Var}(X_i)\] <p>→ Independence는 distribution 계산에서는 Convolution의 형태로 수식을 간단하게 만들고, Variance에서는 Covariance를 제거하여 Variance 합으로 단순화한다.</p> <h2 id="05_independent--identical-distributioniid에서의-특성-sample-mean">05_Independent &amp; Identical Distribution(IID)에서의 특성: Sample Mean</h2> <p>확률변수 합의 Expectation과 Variance 규칙은 설문조사에서 Sample Mean의 신뢰도를 정량화할 때 직접 사용된다.</p> <h3 id="문제-정의-1">문제 정의</h3> <ul> <li>$X_1,\ldots,X_n$이 i.i.d.이고 $E[X_i]=\mu, \mathrm{Var}(X_i)=\sigma^2$이다.</li> <li>설문조사의 각 응답을 random variable $X_i$로 두며, 예를 들어 만족도를 1부터 5까지 점수로 응답했다고 가정한다.</li> <li>Sample Mean $\bar{X}$를 다음으로 정의한다.</li> <li> \[\bar{X}=\frac{1}{n}\sum_{i=1}^{n}X_i\] </li> </ul> <h3 id="모델링-1">모델링</h3> <p>$\bar{X}$는 설문 응답 점수들의 평균이므로 모집단의 평균 만족도 $\mu$를 추정하는 estimator로 해석된다.</p> <p>$i.i.d.$ 가정은 각 응답이 서로 영향을 주지 않고 Independence를 가지며, 모든 응답이 동일한 분포에서 추출되어 Identical Distribution을 가진다는 의미이다.</p> <p>→ Independence는 응답들 사이의 공분산 항을 제거하여 계산을 단순화하고, Identical Distribution은 모든 응답이 같은 $\mu,\sigma^2$를 공유하도록 만든다.</p> <h3 id="수식-전개-1">수식 전개</h3> <p>Expectation은 선형성으로 정리된다.</p> \[E[\bar{X}] =E\left[\frac{1}{n}\sum_{i=1}^{n}X_i\right] =\frac{1}{n}\sum_{i=1}^{n}E[X_i] =\frac{1}{n}\cdot n\mu =\mu\] <p>Variance는 스케일 성질과 Independence를 이용해 정리된다.</p> \[\begin{aligned} \mathrm{Var}(\bar{X}) &amp;=\mathrm{Var}\left(\frac{1}{n}\sum_{i=1}^{n}X_i\right) =\frac{1}{n^2}\mathrm{Var}\left(\sum_{i=1}^{n}X_i\right) \\ &amp;=\frac{1}{n^2}\sum_{i=1}^{n}\mathrm{Var}(X_i) =\frac{1}{n^2}\cdot n\sigma^2 =\frac{\sigma^2}{n} \end{aligned}\] <h3 id="결과-해석-1">결과 해석</h3> <p>$E[\bar{X}]=\mu$는 설문에서 평균 점수 $\bar{X}$가 반복 측정 관점에서 모집단 평균 만족도 $\mu$를 중심으로 형성된다는 의미이다.</p> <p>$\mathrm{Var}(\bar{X})=\sigma^2/n$은 설문 응답 수 $n$이 커질수록 평균 점수의 흔들림이 줄어들어 더 안정적인 추정이 된다는 의미이다.</p> <p>→ 동일한 설문을 여러 번 반복한다고 생각하면, 표본 수가 작을 때는 표본 구성에 따라 평균 점수가 크게 달라질 수 있지만, 표본 수가 커질수록 평균 점수는 $\mu$ 주변으로 더 좁게 모이게 된다.</p> <p>→ 이 구조가 Central Limit Theorem에서 평균의 분포가 정규 형태로 안정화된다고 말할 수 있는 핵심 배경이 된다.</p> <p><img src="/assets/img/blog/prob-27-sum-independent-discrete-rvs/image-001.png" alt=""/></p>]]></content><author><name>Jeonghan Kim</name><email>kimjh9813@naver.com</email></author><category term="공부"/><category term="확률과 통계"/><category term="수업"/><summary type="html"><![CDATA[01) 독립 확률 변수의 합: 분포, Expectation, 그리고 Variance]]></summary></entry><entry><title type="html">[확률과 통계 26] Sum of independent continuous RVs</title><link href="https://kim-jeonghan.github.io/blog/2026/prob-26-sum-independent-continuous-rvs/" rel="alternate" type="text/html" title="[확률과 통계 26] Sum of independent continuous RVs"/><published>2026-01-20T08:32:39+00:00</published><updated>2026-07-01T05:34:13+00:00</updated><id>https://kim-jeonghan.github.io/blog/2026/prob-26-sum-independent-continuous-rvs</id><content type="html" xml:base="https://kim-jeonghan.github.io/blog/2026/prob-26-sum-independent-continuous-rvs/"><![CDATA[<h1 id="01-독립-연속-확률-변수-합의-pdf와-convolution">01) <strong>독립 연속 확률 변수 합의 PDF와 Convolution</strong></h1> <h2 id="00_서론">00_서론</h2> <p>여러 개의 독립적인 continuous random variable을 더해 총합을 모델링하는 문제는 지연 시간 누적, 측정 오차 누적, 잡음 합성처럼 공학 전반에서 반복적으로 등장한다. 이때 각 변수의 PDF를 알고 있을 때 합으로 정의된 새로운 random variable의 PDF를 구하는 과정에서 <strong>Convolution</strong>이 자연스럽게 나타난다.</p> <h2 id="01_문제-설정">01_문제 설정</h2> <ul> <li>$X,Y$는 continuous random variable이고 Joint PDF를 $f_{X,Y}(x,y)$라 둔다.</li> <li>새로운 random variable을 $W=X+Y$로 정의한다.</li> <li>목표는 $W$의 PDF $f_W(w)$를 구하는 것이다.</li> </ul> <h2 id="02_cdf-기반-유도">02_CDF 기반 유도</h2> <h3 id="cdf-정의와-적분-영역">CDF 정의와 적분 영역</h3> <p>먼저 CDF 정의로부터 시작한다.</p> \[F_W(w)=P(W\le w)=P(X+Y\le w)\] <p>부등식 $x+y\le w$는 $(x,y)$ 평면에서 반평면 영역을 정의하므로, 확률은 해당 영역에서 Joint PDF를 적분한 값으로 표현된다.</p> \[F_W(w)=\int_{-\infty}^{\infty}\int_{-\infty}^{w-y} f_{X,Y}(x,y)\,dx\,dy\] <p>→ 내부 적분의 상한 $w-y$는 고정된 $y$에서 조건 $x\le w-y$를 만족하는 $x$ 범위를 의미하며, 이는 적분을 통해 조건을 만족하는 확률을 누적하는 과정이다.</p> <h3 id="cdf-미분을-통한-pdf-도출">CDF 미분을 통한 PDF 도출</h3> <p>이제 Independence를 가정하여 $f_{X,Y}(x,y)=f_X(x)f_Y(y)$로 분해한다.</p> \[\begin{aligned}F_W(w)&amp;= \int_{-\infty}^{\infty} \int_{-\infty}^{\,w-y}f_X(x)\, f_Y(y)\, dx\, dy \\[6pt]&amp;= \int_{-\infty}^{\infty}f_Y(y)\left(\int_{-\infty}^{\,w-y} f_X(x)\, dx\right) dy \\[6pt]&amp;= \int_{-\infty}^{\infty}F_X(w - y)\, f_Y(y)\, dy\end{aligned}\] <p>이 식에서 $F_X(w-y)$는 $Y=y$로 고정했을 때 합이 $w$ 이하가 되도록 요구되는 조건 $X\le w-y$를 $X$의 CDF로 평가한 결과이며, 바깥 적분은 이러한 조건부 확률 값을 $Y$의 density $f_Y(y)$로 가중 평균하여 전체 확률 $P(X+Y\le w)$를 구성한다.</p> <p>이제 $w$에 대해 미분하면 PDF가 된다.</p> \[\begin{aligned}f_W(w)&amp;= \frac{d}{dw}\int_{-\infty}^{\infty}F_X(w - y)\, f_Y(y)\, dy \\[6pt]&amp;= \int_{-\infty}^{\infty}\frac{d}{dw} F_X(w - y)\, f_Y(y)\, dy \\[6pt]&amp;= \int_{-\infty}^{\infty}f_X(w - y)\, f_Y(y)\, dy\end{aligned}\] <p>여기서 $\frac{d}{dw}F_X(w-y)=f_X(w-y)$는 chain rule에 의해 얻어지며, $y$는 적분 변수이므로 $w$에 대한 미분은 $F_X$의 인자 $w-y$ 방향으로만 작용한다.</p> <p>→ 최종 적분은 합이 $w$가 되도록 만드는 모든 분해 $w=(w-y)+y$에 대해 $X$가 $w-y$ 근처에 있을 density와 $Y$가 $y$ 근처에 있을 density를 곱한 값을 누적한 구조이며, 이는 Convolution 정의와 일치한다.</p> \[\begin{aligned}f_X(w) \ast f_Y(w)\end{aligned}\] <h3 id="independence-가정과-convolution">Independence 가정과 Convolution</h3> <p>Independence를 가정하면 $f_{X,Y}(x,y)=f_X(x)f_Y(y)$이므로 위 식은 다음으로 단순화된다.</p> \[f_W(w)=\int_{-\infty}^{\infty} f_X(w-y)\,f_Y(y)\,dy\] <p>Convolution 정의에 따라 다음 표기를 사용한다.</p> \[(f_X\ast f_Y)(w)=\int_{-\infty}^{\infty} f_X(w-\tau)\,f_Y(\tau)\,d\tau\] <p>따라서 Independence 하에서 $W=X+Y$의 PDF는 $f_W(w)=(f_X\ast f_Y)(w)$로 정리된다. → Convolution 적분은 $Y=\tau$일 때 $X=w-\tau$가 되어야 한다는 제약을 반영하며, 가능한 모든 $\tau$에 대해 동시 발생 밀도 $f_X(w-\tau)f_Y(\tau)$를 누적한 값이다.</p> <h2 id="03_jacobian-기반-유도">03_Jacobian 기반 유도</h2> <h3 id="보조-변수-도입과-n-to-n-변환-구성">보조 변수 도입과 n to n 변환 구성</h3> <p>Jacobian 기반 변환은 입력과 출력의 차원이 같아야 하므로, $W=X+Y$만으로는 직접 적용할 수 없고 auxiliary variable을 추가해 $2\rightarrow2$ transformation으로 확장한다. 보조 변수로 $Z=Y$를 선택하고 $(X,Y)\rightarrow(W,Z)$를 다음과 같이 정의한다.</p> \[w=x+y,\quad z=y\] <p>역변환은 다음과 같이 즉시 얻어진다.</p> \[x=w-z,\quad y=z\] <h3 id="jacobian-계산과-joint-pdf-변환">Jacobian 계산과 Joint PDF 변환</h3> <p>변환 공식은 다음 형태로 쓴다.</p> \[f_{W,Z}(w,z)=f_{X,Y}(x(w,z),y(w,z))\left|\det\frac{\partial(x,y)}{\partial(w,z)}\right|\] <p>Jacobian determinant는 다음과 같다.</p> \[\begin{aligned} \det\frac{\partial(x,y)}{\partial(w,z)} &amp;= \det \begin{pmatrix} \frac{\partial x}{\partial w} &amp; \frac{\partial x}{\partial z}\\ \frac{\partial y}{\partial w} &amp; \frac{\partial y}{\partial z} \end{pmatrix}\\ &amp;= \det \begin{pmatrix} 1 &amp; -1\\ 0 &amp; 1 \end{pmatrix}\\ &amp;=1 \end{aligned}\] <p>따라서 $(W,Z)$의 Joint PDF는 다음으로 정리된다.</p> \[f_{W,Z}(w,z)=f_{X,Y}(w-z,z)\] <h3 id="marginalization을-통한-변수-소거">Marginalization을 통한 변수 소거</h3> <p>최종 목표는 $f_W(w)$이므로 보조 변수 $Z$를 Marginalization으로 소거한다.</p> \[f_W(w)=\int_{-\infty}^{\infty} f_{W,Z}(w,z)\,dz=\int_{-\infty}^{\infty} f_{X,Y}(w-z,z)\,dz\] <p>Independence를 가정하면 $f_{X,Y}(w-z,z)=f_X(w-z)f_Y(z)$이므로 다음을 얻는다.</p> \[f_W(w)=\int_{-\infty}^{\infty} f_X(w-z)\,f_Y(z)\,dz\] <p>→ Jacobian 기반 유도는 auxiliary variable로 차원을 맞춘 뒤 Joint PDF를 변환하고, Marginalization으로 불필요한 변수를 적분 제거하여 동일한 Convolution 적분을 얻는 구조이다.</p> <h2 id="04_예제-exponential-distribution의-합과-erlang-k-distribution">04_예제 Exponential distribution의 합과 Erlang-k distribution</h2> <h3 id="문제-정의">문제 정의</h3> <p>서로 independent인 $T_1,T_2,\dots,T_k$가 동일한 Exponential distribution을 따르고 $S_k=T_1+\cdots+T_k$의 PDF를 구한다.</p> <h3 id="모델링">모델링</h3> <p>Exponential distribution의 PDF는 다음과 같다.</p> \[f_T(t)=\lambda e^{-\lambda t},\quad t\ge 0\] <p>$S_k$는 independent 합이므로 PDF는 반복 Convolution으로 계산된다.</p> <h3 id="수식-전개">수식 전개</h3> <p>$k=2$에서 $S_2=T_1+T_2$이므로 Convolution을 적용한다.</p> <p><img src="/assets/img/blog/prob-26-sum-independent-continuous-rvs/image-001.png" alt=""/></p> \[f_{S_2}(s)=\int_{-\infty}^{\infty} f_T(\tau)\,f_T(s-\tau)\,d\tau\] <p>$t\ge 0$이므로 integrand가 0이 아닌 구간은 $0\le\tau\le s$이고, 또한 $s&lt;0$이면 전체 적분이 0이 된다.</p> \[f_{S_2}(s)=\int_{0}^{s} \lambda e^{-\lambda\tau}\,\lambda e^{-\lambda(s-\tau)}\,d\tau=\lambda^2 e^{-\lambda s}\int_{0}^{s}1\,d\tau=\lambda^2 s e^{-\lambda s},\quad s\ge 0\] <p>$k=3$에서 $S_3=S_2+T_3$이므로 다시 Convolution을 적용한다.</p> <p><img src="/assets/img/blog/prob-26-sum-independent-continuous-rvs/image-002.png" alt=""/></p> \[f_{S_3}(s)=\int_{0}^{s} f_{S_2}(\tau)\,f_T(s-\tau)\,d\tau=\int_{0}^{s} \lambda^2\tau e^{-\lambda\tau}\,\lambda e^{-\lambda(s-\tau)}\,d\tau\] \[f_{S_3}(s)=\lambda^3 e^{-\lambda s}\int_{0}^{s}\tau\,d\tau=\lambda^3 e^{-\lambda s}\frac{s^2}{2},\quad s\ge 0\] <p>이 패턴은 일반 $k$에 대해 다음과 같이 정리된다.</p> \[f_{S_k}(s)=\frac{\lambda^k s^{k-1}}{(k-1)!}e^{-\lambda s},\quad s\ge 0\] <h2 id="05_확장">05_확장</h2> <ul> <li>$n$개의 independent continuous random variable 합 $S=\sum_{i=1}^n X_i$의 PDF는 $f_S=f_{X_1}\ast f_{X_2}\ast \cdots\ast f_{X_n}$로 반복 Convolution으로 계산된다.</li> <li>identical distribution가정은 필요하지 않으며, Independence만 성립하면 서로 다른 PDF에 대해서도 Convolution 구조는 동일하다.</li> <li>discrete random variable의 경우 적분이 합으로 바뀌며, Convolution은 summation 형태로 대응된다.</li> </ul> <h2 id="06_결론">06_결론</h2> <p>독립인 continuous random variable의 합 $W=X+Y$에 대해 $f_W(w)$는 CDF 기반 유도에서는 적분 영역 $x+y\le w$를 설정한 뒤 미분으로 조건을 소거하며, Jacobian 기반 유도에서는 auxiliary variable로 차원을 맞춘 뒤 Marginalization으로 변수를 적분 제거하여 동일한 적분식을 얻는다. Independence를 적용하면 두 유도는 모두 $f_W(w)=\int_{-\infty}^{\infty} f_X(w-y)f_Y(y)\,dy$로 수렴하며, 이 적분이 <strong>Convolution</strong>의 정의와 일치한다.</p>]]></content><author><name>Jeonghan Kim</name><email>kimjh9813@naver.com</email></author><category term="공부"/><category term="확률과 통계"/><category term="수업"/><summary type="html"><![CDATA[01) 독립 연속 확률 변수 합의 PDF와 Convolution]]></summary></entry><entry><title type="html">[확률과 통계 25] Transform of RVs (Part 3) - Multiple RVs</title><link href="https://kim-jeonghan.github.io/blog/2026/prob-25-transform-rvs-multiple-rvs/" rel="alternate" type="text/html" title="[확률과 통계 25] Transform of RVs (Part 3) - Multiple RVs"/><published>2026-01-19T01:16:14+00:00</published><updated>2026-07-01T05:34:13+00:00</updated><id>https://kim-jeonghan.github.io/blog/2026/prob-25-transform-rvs-multiple-rvs</id><content type="html" xml:base="https://kim-jeonghan.github.io/blog/2026/prob-25-transform-rvs-multiple-rvs/"><![CDATA[<h1 id="01-multivariate-random-variable-transformation-jacobian-and-applications">01) <strong>Multivariate random variable transformation: Jacobian and applications</strong></h1> <h2 id="00_서론">00_서론</h2> <p>단일 random variable transformation에서는 $Y=g(X)$가 만들어내는 PDF $f_Y(y)$를 CDF 기반으로 유도하고, 길이 스케일 변화율 $\lvert g’(x) \rvert$로 확률 밀도를 보정한다는 관점이 핵심이다. 다변수 환경에서는 입력이 $\mathbf{X}=(X_1,\dots,X_n)$이고 출력이 $\mathbf{Y}=(Y_1,\dots,Y_n)$인 transformation $\mathbf{y}=\mathbf{g}(\mathbf{x})$를 다루며, 이때 길이 스케일 $\lvert g’(x) \rvert$는 부피 스케일을 나타내는 Jacobian determinant $\lvert J(\mathbf{x}) \rvert$로 일반화된다.</p> <h2 id="01_단일-random-variable-transformation-복습">01_단일 random variable transformation 복습</h2> <p>단일 변수에서 $Y=g(X)$이고 $X$가 continuous random variable이며 PDF $f_X(x)$를 가지면, $y=g(x)$를 만족하는 모든 해를 $x_i$로 둘 때 다음이 성립한다.</p> \[f_Y(y)=\sum_{x_i:,g(x_i)=y}\frac{f_X(x_i)}{|g'(x_i)|}\] <p>이 식은 미소 구간 확률 보존 $f_X(x)\,dx=f_Y(y)\,dy$에서 출발하며, $dy=g’(x)\,dx$가 구간 길이의 확장과 압축을 결정하므로 확률 밀도는 $\lvert g’(x) \rvert$로 나누어 보정된다는 해석을 갖는다.</p> <h2 id="02_multivariate-random-variable-transformation">02_<strong>Multivariate random variable transformation</strong></h2> <p>입력 random vector $\mathbf{X}=(X_1,\ldots,X_n)$로부터 출력 random vector $\mathbf{Y}=(Y_1,\ldots,Y_m)$를 정의할 때 출력 개수는 입력 개수를 초과할 수 없으므로 $m\le n$을 만족해야 하며, 이를 multivariate random variable transformation으로 다룬다. 단일 변수에서 $\lvert g’(x) \rvert$가 미소 길이의 스케일 변화를 나타냈다면, 다변수에서는 미소 부피 요소의 스케일 변화가 핵심이 되며 이 역할이 Jacobian 관점으로 연결된다.</p> \[\begin{aligned} T:\quad Y_i &amp;= g_i(X_1, X_2, \ldots, X_n), \qquad i = 1,2,\ldots,m,\ (m \le n) \\[6pt] X_1, \ldots, X_n,\; f_{X_1 X_2 \cdots X_n}(x_1, x_2, \ldots, x_n) &amp;\;\Longrightarrow\; Y_1, \ldots, Y_m,\; f_{Y_1 Y_2 \cdots Y_m}(y_1, y_2, \ldots, y_m) \end{aligned}\] <p>이 설정에서 최종 목표는 주어진 Joint PDF $f_{X_1\cdots X_n}$로부터 $f_{Y_1\cdots Y_m}$를 구하는 것이며, $m=n$인 경우에는 부피 스케일 보정이 Jacobian determinant로 완결되고 $m&lt;n$인 경우에는 변수 소거를 위한 추가 적분 단계가 필요해진다. → 이후 전개는 $n\rightarrow n$ 변환을 먼저 다루고, 그 다음 $n\rightarrow m$ 변환으로 확장한다.</p> <h2 id="03_n개-변수에서-n개-변수로의-transformation">03_n개 변수에서 n개 변수로의 transformation</h2> <h3 id="문제-설정">문제 설정</h3> <ul> <li>입력 random vector는 $\mathbf{X}=(X_1,\dots,X_n)$이고 Joint PDF는 $f_{\mathbf{X}}(\mathbf{x})$이다.</li> <li>출력 random vector는 $\mathbf{Y}=(Y_1,\dots,Y_n)$이고 transformation은 $\mathbf{y}=\mathbf{g}(\mathbf{x})$로 주어진다.</li> <li>목표는 $f_{\mathbf{Y}}(\mathbf{y})$를 구하는 것이다.</li> </ul> <h3 id="jacobian-determinant-정의">Jacobian determinant 정의</h3> <p>변환이 $\mathbf{y}=\mathbf{g}(\mathbf{x})$로 주어질 때 Jacobian matrix와 Jacobian determinant는 다음과 같이 정의한다.</p> \[\mathbf{J}(\mathbf{x})= \begin{pmatrix} \frac{\partial y_1}{\partial x_1} &amp; \cdots &amp; \frac{\partial y_1}{\partial x_n} \\ \vdots &amp; \ddots &amp; \vdots \\ \frac{\partial y_n}{\partial x_1} &amp; \cdots &amp; \frac{\partial y_n}{\partial x_n} \end{pmatrix}, \quad J(\mathbf{x})=\det\mathbf{J}(\mathbf{x})\] <p>$\lvert J(\mathbf{x}) \rvert$는 $\mathbf{x}$ 공간의 미소 부피 요소 $d\mathbf{x}$가 $\mathbf{y}$ 공간의 미소 부피 요소 $d\mathbf{y}$로 매핑될 때의 부피 스케일 변화를 나타낸다.</p> \[d\mathbf{y}=|J(\mathbf{x})|d\mathbf{x}\] <p>→ 단일 변수에서 $\lvert g’(x) \rvert$가 길이 스케일이었다면, 다변수에서는 $\lvert J(\mathbf{x}) \rvert$가 부피 스케일이다.</p> <h3 id="일반-공식">일반 공식</h3> <p>변환이 locally one-to-one이며 역변환 $\mathbf{x}=\mathbf{g}^{-1}(\mathbf{y})$가 정의되는 구간에서는 다음이 성립한다.</p> \[f_{\mathbf{Y}}(\mathbf{y})=f_{\mathbf{X}}(\mathbf{g}^{-1}(\mathbf{y}))\left|\det\frac{\partial \mathbf{x}}{\partial \mathbf{y}}\right|\] <p>위 식을 $\mathbf{y}=\mathbf{g}(\mathbf{x})$의 Jacobian determinant로 표현하면 다음과 같이 쓸 수 있다.</p> \[f_{\mathbf{Y}}(\mathbf{y})=\frac{f_{\mathbf{X}}(\mathbf{x})}{|J(\mathbf{x})|}\Bigg|_{\mathbf{x}=\mathbf{g}^{-1}(\mathbf{y})}\] <p>만약 같은 $\mathbf{y}$에 대해 연립방정식 $\mathbf{y}=\mathbf{g}(\mathbf{x})$의 해가 여러 개 존재하면, 단일 변수와 동일하게 모든 해의 기여를 합산한다.</p> \[f_{\mathbf{Y}}(\mathbf{y})=\sum_{\mathbf{x}_i:,\mathbf{g}(\mathbf{x}_i)=\mathbf{y}}\frac{f_{\mathbf{X}}(\mathbf{x}_i)}{|J(\mathbf{x}_i)|}\] <p>→ 한 점 $\mathbf{y}$로 모이는 여러 preimage 점 $ \mathbf{x}i $에서의 확률 밀도가 부피 스케일 보정을 거친 뒤 합쳐진 값이 $f{\mathbf{Y}}(\mathbf{y})$가 된다.</p> <h3 id="계산-절차">계산 절차</h3> <ol> <li>역변환 $\mathbf{x}=\mathbf{g}^{-1}(\mathbf{y})$를 구해 $f_{\mathbf{X}}$의 입력을 $\mathbf{y}$로 표현한다.</li> <li>$J(\mathbf{x})=\det\left(\frac{\partial \mathbf{y}}{\partial \mathbf{x}}\right)$를 계산하고 $\lvert J(\mathbf{x}) \rvert$를 구한다.</li> <li>$f_{\mathbf{Y}}(\mathbf{y})=\frac{f_{\mathbf{X}}(\mathbf{x})}{\lvert J(\mathbf{x}) \rvert}\big\rvert_{\mathbf{x}=\mathbf{g}^{-1}(\mathbf{y})}$를 적용하고, 필요 시 해 집합을 합산한다.</li> </ol> <h2 id="04_예제-2차원-선형-transformation">04_예제 2차원 선형 transformation</h2> <h3 id="문제-정의">문제 정의</h3> <p>$Y_1=2X_1+X_2$, $Y_2=X_1-X_2$로 정의될 때 $f_{Y_1,Y_2}(y_1,y_2)$를 구한다.</p> <h3 id="모델링">모델링</h3> <p>입력은 $\mathbf{X}=(X_1,X_2)$이고 Joint PDF는 $f_{X_1,X_2}(x_1,x_2)$이며, 출력은 $\mathbf{Y}=(Y_1,Y_2)$이고 transformation은 선형이므로 해는 유일하다고 가정한다.</p> <h3 id="수식-전개">수식 전개</h3> <p>연립방정식을 풀어 역변환을 구하면 다음과 같다.</p> \[x_1=\frac{y_1+y_2}{3},\quad x_2=\frac{y_1-2y_2}{3}\] <p>Jacobian determinant는 다음과 같다.</p> \[J=\det \begin{pmatrix} \frac{\partial y_1}{\partial x_1} &amp; \frac{\partial y_1}{\partial x_2} \\ \frac{\partial y_2}{\partial x_1} &amp; \frac{\partial y_2}{\partial x_2} \end{pmatrix} = \det \begin{pmatrix} 2 &amp; 1 \\ 1 &amp; -1 \end{pmatrix} =-3\] <p>따라서 $\lvert J \rvert=3$이고, 일반 공식으로부터 다음을 얻는다.</p> \[f_{Y_1,Y_2}(y_1,y_2)=\frac{1}{3},f_{X_1,X_2}\left(\frac{y_1+y_2}{3},\frac{y_1-2y_2}{3}\right)\] <h3 id="결과-해석">결과 해석</h3> <p>이 결과는 $(x_1,x_2)$ 평면의 미소 면적 요소가 선형 transformation에 의해 평균적으로 3배 스케일되며, 확률 보존을 위해 Joint PDF 높이가 $1/3$만큼 보정된다는 의미를 갖는다. → 선형 transformation에서 $\lvert J \rvert$는 면적 스케일 팩터이고, $1/\lvert J \rvert$는 밀도 스케일 보정 항이다.</p> <p><img src="/assets/img/blog/prob-25-transform-rvs-multiple-rvs/image-001.png" alt=""/></p> <h2 id="05_dimension-reduction-transformation">05_dimension reduction transformation</h2> <p>dimension reduction에서는 $n$개의 입력으로부터 $m&lt;n$개의 출력만 정의되므로 $\frac{\partial \mathbf{y}}{\partial \mathbf{x}}$가 $m\times n$이 되어 determinant가 정의되지 않고, 따라서 n개 변수에서 n개 변수로의 공식을 직접 적용할 수 없다. 이 상황은 관심 변수가 부분집합이거나, 요약 통계량 $Y=g(X_1,\dots,X_n)$만 필요할 때 자연스럽게 등장한다.</p> <h3 id="auxiliary-variable-technique">auxiliary variable technique</h3> <p>보조 변수 $Y_{m+1},\dots,Y_n$를 추가로 정의하여 출력 차원을 $n$으로 맞춘 뒤, n개 변수에서 n개 변수로의 변환 공식을 적용하고 마지막에 Marginalization으로 보조 변수를 소거한다. 보조 변수는 계산을 단순화하기 위해 흔히 $Y_{m+1}=X_{m+1},\dots,Y_n=X_n$ 같은 identity transform을 사용한다.</p> \[f_{Y_1,\dots,Y_m}(y_1,\dots,y_m)=\int_{\mathbb{R}^{n-m}} f_{Y_1,\dots,Y_n}(y_1,\dots,y_n)\,dy_{m+1}\cdots dy_n\] <p>→ determinant가 정의되도록 문제를 확장한 뒤, 최종 목표 변수만 남기기 위해 적분으로 변수 소거를 수행하는 구조이다.</p> <h3 id="direct-cdf-technique">direct CDF technique</h3> <p>관심 변수가 적을 때는 CDF 정의에서 출발해 부등식을 만족하는 영역에 대해 Joint PDF를 적분하고, 마지막에 미분으로 PDF를 얻는 방식이 직접적이다. $Y_1=g_1(X_1,\dots,X_n)$일 때 다음을 사용한다.</p> \[F_{Y_1}(y_1)=P(Y_1\le y_1)=P(g_1(\mathbf{X})\le y_1)=\int_{{\mathbf{x}:g_1(\mathbf{x})\le y_1}} f_{\mathbf{X}}(\mathbf{x})\,d\mathbf{x}\] \[f_{Y_1}(y_1)=\frac{d}{dy_1}F_{Y_1}(y_1)\] <p>→ 적분 영역 설정은 부등식이 정의하는 기하학적 영역을 의미하고, 변수 소거는 그 영역 위에서 원래 Joint PDF를 누적하는 연산으로 해석된다.</p> <h3 id="예제-x_1x_2rightarrow-y_1">예제 $(X_1,X_2)\rightarrow Y_1$</h3> <h2 id="06_예제-x_1x_2rightarrow-y_1">06_예제 $(X_1,X_2)\rightarrow Y_1$</h2> <p><strong>문제 정의</strong>: 두 continuous random variable $X_1,X_2$가 주어질 때 $Y_1=X_1+X_2$로 정의된 random variable의 PDF $f_{Y_1}(y_1)$를 구한다.</p> <p><strong>모델링</strong>: $(X_1,X_2)$의 Joint PDF를 $f_{X_1,X_2}(x_1,x_2)$로 두고, $Y_1$만 남기는 dimension reduction이므로 보조 변수 $Y_2$를 도입해 $2\rightarrow2$로 확장한 뒤 Marginalization으로 $Y_2$를 소거한다.</p> <p><strong>수식 전개</strong>: 보조 변수는 계산 단순화를 위해 $Y_2=X_2$로 두고 transformation을 $y_1=x_1+x_2,\ y_2=x_2$로 정의한다.</p> \[\begin{aligned} y_1&amp;=x_1+x_2 \\ y_2&amp;=x_2 \end{aligned}\] <p>역변환은 $x_2=y_2,\ x_1=y_1-y_2$로 주어진다.</p> \[\begin{aligned} x_1&amp;=y_1-y_2 \\ x_2&amp;=y_2 \end{aligned}\] <p>Jacobian determinant는 다음과 같고 $\lvert J \rvert=1$이다.</p> \[J=\det \begin{pmatrix} \frac{\partial y_1}{\partial x_1} &amp; \frac{\partial y_1}{\partial x_2}\\ \frac{\partial y_2}{\partial x_1} &amp; \frac{\partial y_2}{\partial x_2} \end{pmatrix} =\det \begin{pmatrix} 1 &amp; 1\\ 0 &amp; 1 \end{pmatrix} =1\] <p>따라서 $(Y_1,Y_2)$의 Joint PDF는 다음으로 변환된다.</p> \[f_{Y_1,Y_2}(y_1,y_2)=f_{X_1,X_2}(y_1-y_2,\ y_2)\] <p>최종 목표는 $Y_1$의 PDF이므로 $Y_2$를 적분으로 소거한다.</p> \[f_{Y_1}(y_1)=\int_{-\infty}^{\infty} f_{Y_1,Y_2}(y_1,y_2)\,dy_2=\int_{-\infty}^{\infty} f_{X_1,X_2}(y_1-y_2,\ y_2)\,dy_2\] <p>$X_1$과 $X_2$가 independent이면 $f_{X_1,X_2}(x_1,x_2)=f_{X_1}(x_1)f_{X_2}(x_2)$이므로 다음 형태로 정리된다.</p> \[f_{Y_1}(y_1)=\int_{-\infty}^{\infty} f_{X_1}(y_1-y_2),f_{X_2}(y_2)\,dy_2\] <p>적분 구간은 $f_{X_1,X_2}(y_1-y_2,y_2)$가 0이 아닌 영역으로 자동 제한되며, 이는 $(x_1,x_2)$ 평면에서 직선 $x_1+x_2=y_1$ 위의 점들을 따라 Joint PDF를 누적하는 것과 동일한 의미를 갖는다.</p> <p><strong>결과 해석</strong>: dimension reduction에서의 변수 소거는 보조 변수 방향으로 확률을 적분해 누적하는 과정이며, $Y_1=X_1+X_2$의 경우에는 동일한 합 $y_1$을 만드는 모든 조합 $(x_1,x_2)$의 기여가 적분으로 합쳐져 $f_{Y_1}(y_1)$가 결정된다.</p> <p><img src="/assets/img/blog/prob-25-transform-rvs-multiple-rvs/image-002.png" alt=""/></p> <h2 id="06_핵심-응용-gaussian-random-variable-generation">06_핵심 응용 Gaussian random variable generation</h2> <h3 id="box-muller-transformation">Box-Muller transformation</h3> <p><img src="/assets/img/blog/prob-25-transform-rvs-multiple-rvs/image-003.png" alt=""/></p> <ul> <li>목표: 두개의 unifrom distribution$U_1,U_2$으로부터 두개의 Gaussian random variable $Z,W$을 생성하는 것이다.</li> <li>조건 : 서로 독립인 $U_1,U_2$가 Uniform distribution을 따라 $U_1,U_2\sim Uniform(0,1)$존재한다.</li> </ul> <p>Box-Muller transformation은 다음과 같이 정의된다.</p> \[\begin{aligned} R&amp;=\sqrt{-2\ln U_1},\quad \Theta=2\pi U_2,\quad \\ Z&amp;=R\cos\Theta \Longrightarrow Z^2 = -2 \ln(X), \cos^2(2\pi Y)\\ \quad W&amp;=R\sin\Theta \Longrightarrow W^2 = -2 \ln(X), \sin^2(2\pi Y) \end{aligned}\] <h3 id="box-muller-transformation-역연산과-joint-pdf-유도"><strong>Box-Muller transformation 역연산과 Joint PDF 유도</strong></h3> <p>이 변환은 2차원에서 Gaussian distribution의 정규화 적분을 계산할때 사용했던 수식과 유사하다. (가우시안쪽 참고)</p> <p>핵심은 $(u_1,u_2)\leftrightarrow(z,w)$ 사이의 면적 요소 스케일이 Jacobian determinant로 보정된다는 점이다.</p> <p>역변환은 $z^2+w^2=R^2=-2\ln u_1$에서 $u_1$을 먼저 구하고, 각도는 $\theta=\tan^{-1}(w/z)$와 $\theta=2\pi u_2$ 관계로부터 $u_2$를 구하는 방식으로 정리된다.</p> \[\begin{aligned} u_1=\exp\left(-\frac{1}{2}(z^2+w^2)\right),\ u_2=\frac{1}{2\pi}\tan^{-1}\left(\frac{w}{z}\right) \end{aligned}\] <p>Jacobian determinant는 $u_1,u_2$를 $z,w$에 대해 편미분하여 다음과 같이 구할 수 있다.</p> \[\left|\det\frac{\partial(u_1,u_2)}{\partial(z,w)}\right| = \left|\det \begin{pmatrix} \frac{\partial u_1}{\partial z} &amp; \frac{\partial u_1}{\partial w}\\ \frac{\partial u_2}{\partial z} &amp; \frac{\partial u_2}{\partial w} \end{pmatrix} \right| = \frac{u_1}{2\pi}\frac{1}{2\pi}\exp\left(-\frac{1}{2}(z^2+w^2)\right)\] <p>$(U_1,U_2)$는 independent이고 $f_{U_1,U_2}(u_1,u_2)=1$이므로, multivariate transformation 공식에서 역변환 Jacobian을 사용하면 다음을 얻는다.</p> \[\begin{aligned} f_{Z,W}(z,w) =f_{U_1,U_2}(u_1,u_2)\left|\det\frac{\partial(u_1,u_2)}{\partial(z,w)}\right| =\frac{1}{2\pi}\exp\left(-\frac{1}{2}(z^2+w^2)\right) \end{aligned}\] <p>위 식은 곱 형태로 분해된다.</p> \[\frac{1}{2\pi}\exp\left(-\frac{1}{2}(z^2+w^2)\right) = \left(\frac{1}{\sqrt{2\pi}}e^{-z^2/2}\right) \left(\frac{1}{\sqrt{2\pi}}e^{-w^2/2}\right)\] <p>따라서 $Z$와 $W$는 서로 independent이고 각각 standard normal distribution을 따른다. → Box-Muller transformation은 $(u_1,u_2)$의 unit square 면적 요소가 $(z,w)$ 평면에서 Gaussian 형태의 면적 요소로 매핑되도록 Jacobian determinant가 스케일을 보정하는 구조로 해석된다.</p> <h3 id="평균과-분산을-갖는-gaussian-random-variable">평균과 분산을 갖는 Gaussian random variable</h3> <p>$Z\sim \mathcal{N}(0,1)$이면 선형 transformation $Z’=\sigma Z+\mu$에 의해 $Z’\sim \mathcal{N}(\mu,\sigma^2)$가 된다.</p> \[Z'=\sigma Z+\mu\] <p>→ 선형 transformation은 PDF의 이동과 스케일을 유도하며, 다변수 선형 변환에서는 공분산 구조까지 함께 이동한다. 이를 활용해서 기존 Box-Muller transformation으로부터 유도된 $Z,W$</p> <h3 id="correlation을-갖는-joint-gaussian-generation">correlation을 갖는 Joint Gaussian generation</h3> <p>서로 independent인 $Z,W\sim \mathcal{N}(0,1)$로부터 correlation coefficient $\rho$를 갖는 $(U,V)$를 생성하는 대표적 선형 구조는 다음과 같다.</p> \[U=\sigma_u Z,\quad V=\sigma_v\left(\rho Z+\sqrt{1-\rho^2},W\right)\] <p>이 변환은 $U$와 $V$의 분산을 $\sigma_u^2,\sigma_v^2$로 맞추면서 $\mathrm{Corr}(U,V)=\rho$가 되도록 구성된 선형 결합이며, 평균이 필요하면 각각에 상수를 더해 location을 이동시키면 된다.</p> <h2 id="06_결론">06_결론</h2> <p>다변수 random variable transformation에서 Joint PDF 변환의 핵심은 미소 부피 요소의 스케일 변화를 측정하는 Jacobian determinant이며, 확률 보존은 $f_{\mathbf{X}}(\mathbf{x})d\mathbf{x}=f_{\mathbf{Y}}(\mathbf{y})d\mathbf{y}$ 형태로 구현된다. $n\rightarrow n$ 변환에서는 역변환과 $\lvert J \rvert$를 통해 $f_{\mathbf{Y}}(\mathbf{y})=\frac{f_{\mathbf{X}}(\mathbf{x})}{\lvert J(\mathbf{x}) \rvert}\big\rvert_{\mathbf{x}=\mathbf{g}^{-1}(\mathbf{y})}$가 정리되고, 해가 여러 개이면 모든 해의 결과를 합산한다. dimension reduction에서는 determinant가 정의되지 않으므로 auxiliary variable technique로 차원을 맞춘 뒤 Marginalization을 수행하거나, direct CDF technique로 적분 영역을 직접 설정해 변수 소거의 의미를 적분으로 구현한다.</p> <p><a href="https://www.youtube.com/watch?v=dmGH7fOjAoo">https://www.youtube.com/watch?v=dmGH7fOjAoo</a></p>]]></content><author><name>Jeonghan Kim</name><email>kimjh9813@naver.com</email></author><category term="공부"/><category term="확률과 통계"/><category term="수업"/><summary type="html"><![CDATA[01) Multivariate random variable transformation: Jacobian and applications]]></summary></entry></feed>