
이번 챕터에서는 이제 Energy-Based Model 부터 NCSN 을 배우게 됩니다.
이전에 다루었던 VAE 관점에서 벗어나서 , 데이터를 Energy landscape 와 Gradient 를 통해 해석하는 방식을 배웁니다.
1. 에너지 기반 모델 (EBM)
데이터의 분포를 에너지 지형으로 표현
낮은 에너지 : 실제 데이터가 존재하는 곳 ( 확률 밀도가 높음 )
높은 에너지 : 데이터가 아닌 노이즈가 있는곳 ( 확률 밀도가 낮음 )
즉 , 생성 모델의 목표는 이 에너지 지형을 학습하여 , 에너지가 낮은 골짜기가 어디인지 알내는 것입니다.
2. Langevin Dynamics 과 score
데이터 생성(샘플링) 하는 과정이 Langevin Dynamics 을 따른다. 에너지가 낮은 방향 ( 데이터가 있을 확률이 높은 방향) 으로 조금씩 이동
score : 이동해야 할 방향을 알려주는 역할. (수학적으로는 확률 밀도 함수의 기울기 )
전체 확률 분포를 정확히 알 필요 없이 , 어느 쪽으로 가야 더 진짜같은 데이터가 되는지 기울기만 알면 데이터를 생성할 수 있습니다.
3. Score-based Diffusion Models
기존 방식은 데이터가 없는 영역에서는 스코어를 정확히 추정하기 어렵다는 단점이 있었는데 , 확산 모델은 노이즈 추가 , 벡터 필드 학습 , 점진적 디노이징 같은 방식으로 해결합니다.
이제 본격적으로 더 깊게 알아보도록 하겠습니다.
3.1 Energy-Based Models
위 논문에서는 설명되어 있지 않지만 먼저 들어가기 앞서 Energy based models 에 대한 기본 컨셉을 이해해보고자 합니다.
( 위 블로그 참고 )
https://process-mining.tistory.com/215
물리학에서 시스템이 가장 에너지가 가장 낮은 상태로 가려는 성질이 있는데 (엔트로피도 그렇고. ) EBM 은 이 원리를 확률 분포에 이식한것 입니다.
에너지 E(x) : 데이터 x 가 진짜 데이터와 얼마나 거리가 먼지 나타내는 척도
실제 데이터 = 에너지 낮음
noisy 한 데이터 = 에너지 높음
1) EBM 의 정의 : 확률 = exp(-에너지) / z

데이터 x 에 대해서 에너지함수 E(x) 를 학습합니다.
- exp(-E ) : 에너지가 낮을수록 -> 값이 커짐 -> 확률(p) 가 커짐
- z : 정규화 상수
하지만 딱 봐도 z 자체가 계산하기 어려운 문제가 보이죠 ?
( 디퓨전에서도 그렇고 이를 잘 우회하기 위해서 많은 기법을 사용했습니다. )
2) 에너지는 상대값만 의미가 있다 ( 상수항을 건드려도 분포는 동일하다 )

1. 에너지를 바꾼다고 가정해봅시다 ( +c )
2. 그러면 분자는 다음과 같이 변하고
3. 분모도 다음과 같이 변하게 됩니다.
4. 따라서 확률을 계산해 봤더니 ..? -> 결국 같습니다.
그래서 수식적으로 EBM 에서 중요한게 "에너지의 절댓값" 이 아니라 에너지의 "상대적" 차이가 중요한 것을 알 수 있습니다.
3.1.1 Modeling Probability Distributions Using Energy Functions
위에서 설명한것과 동일하게 EBM 은 에너지 함수 Eϕ(x)를 다음과 같이 정의합니다.

exp(-Eϕ(x)) : 점수
- 에너지가 낮을수록 -> exp 커짐 => 낮은 에너지 (= 높은 확률 )
z : 정규화 상수


그리고 위에서 이야기 했듯이 , EBM 에서는 에너지의 절대적인 값 보다 에너지의 상대값만 의미가 있습니다.
하지만 여기서 하나의 문제점이 있는데 Global trade-off 라는 문제점이 있습니다 ( 풍선효과 )
비유를 해보자면 풍선의 한쪽을 누르면 풍선의 공기는 한정되어 있기 때문에 다른 한쪽이 반드시 튀어나와야 합니다.
마찬가지로 EBM 은 특정 지역의 확률을 독립적으로 할당하는게 아니라 적분해서 값이 1 이기 때문에 , 한 지점의 에너지를 낮추는 순간 -> 나머지 지점들의 위치를 상대적으로 높게 만들게 됩니다.
이 global trade off 때문에 EBM 을 학습시키기가 매우 어렵다고 합니다. ( 나머지 모든곳의 에너지를 골고루 높여야 되기 때문 . )

Challenges of Maximum Likelihood Training in EBMs.
EBM 을 MLE 로 학습하기 위해서 수식을 다음과 같이 분해하면

poisitve phase ( lowers energy of data )
- 실제 데이터 샘플을 가져와서 그 지점의 에너지를 낮추는 방향으로 업데이트 함 (계산 쉬움)
Negative phase
- 정규화(전체 적분 1 ) 이 깨지지 않도록 전역적으로 균형을 맞추는 부분 ( 아까 말한 global regularization )
- 계산하기 어렵다. ( intractable )
log z 의 미분을 전개해보면 다음과 같은데

결국 미분을 하고 나니 x∼pϕ에서 샘플을 뽑아야 계산을 할 수 있는 형태로 나오게 됩니다.
pϕ 를 MC 로 샘플링을 직접 해야하는데 , 이게 매우 어려운 일라고 합니다.
( cf . Diffusion policy 에서도 이런 언급을 했었습니다 . - negative sample 이 있어야 하는 단점이 있다 . )
3.1.2 Motivation:What Is the Score?
( 핵심 : 확률 밀도 P(x) 를 그 자체로 맞추기 보다 , 그 로그의 기울기 ( = 스코어 ) 를 맞추면 훨씬 일이 쉬워진다. ! )
1. Score 의 정의

확률 밀도 p(x) 가 있을때 score 는 다음과 같이 정의됩니다.
- log p(x) 를 지형의 높이라고 한다면 score 는 가장 가파르게 높아지는 방향을 가리키는 벡터입니다.
- 기울기x(스코어) 는 x를 조금 움직였을때 log p 가 가장 빨리 증가하는 방향을 알려줍니다.
- 그래서 스코어 벡터장은 공간 전체에서 여기서 어디로가면 더 확률이 높은 데이터의 영역인지 알려주는 가이드 같은 역할을 하게 됩니다.
( 아래 그림 참조 )

딥러닝 처음 공부할때 gradient 에서 보던 그림들이랑 매우 유사하죠?
Why Model Scores Instead of Densities?
왜 density 대신 score 를 모델링 하는지 설명합니다.
1. 정규화 상수 z 에서 자유롭다.
2. 스코어는 분포를 완전히 표현한다.
1. Freedom from Normalization Constants.
정규화 상수 z 에 대해서 자유롭게 됩니다.
EBM 이면 위에서 본 수식과 동일하지만

Score 를 보면 ( 정의에 있는 수식 그대로 가지고 온것 )

log z 가 x 에 대한 상수라서 미분하면 사라지게 됩니다.
원래 density 학습(MLE) 는 log Z 때문에 막히지만 , Score 학습은 log Z 를 원칙적으로 bypass 할 수 있게됩니다.
2. A Complete Representation.
score s(x) ( log p 미분값 / 기울 ) 을 모든 x 에 대해서 알고 있다면 , log p(x) 를 전부 복원이 가능해 집니다.
( 적분하면 상수가 나오지만 , 마지막 상수의 값은 적분한p 값 = 1 이라는 성질을 통해서 결정가능해 집니다. )
( 너무 간략하게 나와있어서 좋은 방식으로 설명하기 어려워 gpt 에게 도움을 좀 받았습니다 )

다차원에서도 마찬가지로
기준점 xo 에서 x 까지 가는 경로 하나 잡고 계산하면

다음과 같은 수식이 나오게 됩니다.
- 경로 위에서 score 이 가리키는 방향 성분 계속 더하면 --> 최종적인 log p 의 높이 변화량을 얻을 수 있습니다.
3.1.3 Training EBMs via Score Matching
이전부터 계속 EBM 에서 MLE 가 어려운 이유를 뽑을때 z 가 intractable 하기 때문에 MLE 가 어렵다고 했었죠 ?
그리고 그걸 bypass 하기 위해서 스코어 ( 로그 미분 ) 형태로 보면 z 를 몰라도 괜찮었습니다.
이제 그러면 남은 문제가 어떻게 모델 스코어를 데이터 스코어에 맞출것인가 ? 에 대한 문제가 남아 있습니다.
어떻게 해결하는지 아래서 더 설명하겠습니다.
진짜 score 와 모델 score 를 맞추는 과정이 있어야 합니다(당연하게도). 따라서 수식은 아래와 같습니다.

- log p_phi (x) : 학습할 score ( 모델이 제시하는 확률이 증가하는 방향장 )
- log p_data (x) : 데이터 분포의 score ( 진짜 데이터 분포의 확률이 증가하는 방향장 )
근데 여기서 문제가 p_data 를 모른다는것 입니다 ( 자연스럽게 log 취한 형식도 모르게 됨 . )
( 앞에 파트에서도 마찬가지로 p_data 는 사실상 저희가 구할 수 있는 형태였던적이 한번도 없었습니다. 이번에는 어떻게 우회하는지 잘 살펴보면 됩니다. )
그래서 이걸 어떻게 학습할지 이야기 하고자 합니다.
해결책 : 부분적으로 해결한다.

( Proof . )
D.2.1 ( appendix )
어떻게 해서 이 수식이 나오게 되었는지 따로 깊게 설명하고 있지는 않고 appendix 부분으로 빠져있는데 , 이부분도 공부 많이될거 같아서 가져왔습니다.
1) norm 수식을 전개한다.
기존 수식 L_sm 에서 제곱을 전개만 한 형태입니다 .

근데 마지막 E(s(x)) 는 상수취급 하니까 C 로 묶습니다.
그러면 사실상

이 두가지만 해결하면 됩니다.
2) 교차항 처리

수식을 다음과 같이 전개합니다. 좀 더 이해를 돕기 위해서 하나하나 풀어서 설명해볼까 합니다.
1. 기대값을 적분으로 쓴다.

s(x) 는 데이터 스코어 이고 기대값 정의에 따라서 수식을 만듭니다.
2. 데이터 스코어 정의


그냥 스코어의 정의를 가지고와서 다시 쓴 형태입니다.
3. 대입한다. ( p_data 가 약분된다 )
위에서 정의한 수식 그대로 다시 대입하면 다음과 같이 전개 되빈다.

그럼 여기서 p_data(x) 가 약분하는 형태가 됩니다. 그래서 맨 위 수식에서 두번째 줄 수식이 나오게 됩니다.
3) 성분별로 분해 ( 내적 -> 좌표합으로 )

이부분은 별거 없습니다. 그냥 성분대로 수식에 넣고 정리한겁니다.
그래서 최종적으로 맨 마지막줄의 수식처럼 정리됩니다.
< 핵심 : 부분적분 전개 >
이제 부분적분으로 마지막 수식을 전개합니다.
cf. Lemma ( 다변수 부분 적분 )-> 수능볼떄 많이 쓰는 그거 맞습니다 ( 그적 미적 .. 오랜만이네요 )

결국 저희 수식도 위와 똑같이 전개하면.

여기서 계항이 0이 되게 됩니다. 왜냐하면 증명에서 다음과 같은 가정을 두는데

이게 어떤 의미인지 좀 풀어서 설명을 해보면
현실적으로 데이터 분포가 보통 중앙 근처에 몰려있고 멀리갈수록 확률이 급격히 작아지는데 ( 이건 너무 자명한 이야기 )
그래서 R 을 점점 크게 보내면 p_data(R) 은 -> 0 에 수렴하게 됩니다.
따라서 위 수식이 0에 가까워지는 것이죠
그래서 결론적으로 뒤에있는 수식이 0이 됩니다.
자 다시 돌아와서 이제 경계항이 0이라는 것 까지 이해했으면 , 부분적분 결과 i = 1 .... d 를 합쳐서 다시 표현해야 합니다.

방금 위에서 부분적분 전개해서 얻은 식이 이거죠 ? 이걸 i = 1 ... D 를 다시 전부 합치기만 하면 됩니다.

이떄 안에 수식이 Trace 이므로
( s(x) 는 D X D 야코비안이고 , 대각원소가 정확히 안에 수식과 같으니까 -> Trace 가 정확히 그 합이 되게 됩니다. )
따라서 수식이

다음과 같이 정리됩니다.
이걸 다시 loss 식에 그대로 대입 하면


( 위쪽에 있는 수식에 대입만 하면 다음과 같은 수식이 됩니다. / C 는 아까 말했던 상수취급 )
증명 끗
자 그러면 이제 부분적분 에 대해서 증명은 마쳤으니 해당 식 의미부터 파악해보도록 하겠습니다.
Eϕ(x) : 해당 값이 낮을 수록 x 는 그럴듯한 데이터 ( 확률 높고 ) / 해당값이 높으면 그럴듯 하지 않다.
그래서 학습의 목표는 데이터가 자주 나오는 곳은 낮은 에너지로 만들고 , 데이터 주변은 높은 에너지로 만든다. 였습니다.
( 데이터가 있는 지점을 에너지 골짜기의 '가장 깊은 바닥'으로 만들어라 -> 이걸 2개라 나눠서 만든다고 생각하면 됩니다.
"가장 깊은" + " 바닥" 이런 식으로 말이죠 )
수식에서 항 2개가 있는데 하나씩 살펴보면
항1 ) : 1/2 || ∇ Eϕ(x) || ^2
∇ Eϕ(x) 는 지형의 경사인데
|| ∇ Eϕ(x) || ^2 이 크면 데이터 근처에서 지형이 매우 급경사라는 의미의미로
해당 항을 줄이면
- 데이터 주변에서 데이터가 너무 크게 요동치지 않게 만들고
- 결가적으로 모델이 내는 방향 ( 스코어 ) 도 안정적으로 된다.
-> 그래서 결론적으로 데이터가 있는 곳을 평평하게 만드는 역할을 하게 됩니다. ( 가장 깊은 )
항2 ) Tr( ∇^2 Eϕ(x) )
∇^2 Eϕ(x) 는 지형의 곡률인데 ( 얼마나 휘었는지 ? )
trace 가 그 곡률을 합친 값입니다.
- 데이터 근처 지형이 그냥 평평해지거나 이상하게 찌그러지는 걸 막고
- 골짜기 모양이 되도록 휘어짐을 맞추는 역할을 해준다.
-> 조금 더 직관적으로 설명하자면 , 앞 수식에 데이터가 존재하는 곳이 "평평" 하게 만들라고 수식을 정했었죠 ?
하지만 평평한 조건만 가지고는 해당 부분이 2차원 함수처럼 위로 볼록한지 아래로 볼록한지 알 수 없습니다.
그래서 이 수식이 "곡률" 을 조절하게 해주는데 스코어 매칭을 최소화 하는 과정에서 이항이
데이터 주위의 벡터들이 오목한 valley 로 만들게 해주는 것 입니다.
(바닥)
그래서 (가장깊은) + (바닥) 의 수식을 가지게 되는 것입니다.
참 이런걸 어떻게 생각했는지 대단한것 같습니다.
3.1.4 Langevin Sampling with Score Functions
저희가 지금까지 알아본 SCORES 는 데이터가 있을 확률을 가르키는 "방향" 에 대한 이야기였고
에너지가 낮을수록 P(X) 는 높고 ( 좋은 샘플이고 ) / 그 반대는 나쁜 샘플을 생성합니다.
그래서 샘플링은 아래 그림처럼 에너지를 낮추는 방향으로 X 를 움직이면 좋은 샘플이 나오게 될 것 입니다.

Discrete-Time Langevin Dynamics.
샘플링 수식은 다음과 같이 되는데


(1) −η∇E
- 에너지가 가장 빠르게 감소하는 방향을 의미합니다.
- 해당 xn 에서 다음 스탭으로 갈때 가장 빠르게 감소하는 방향로 가게 해 줍니다.
(2) +root(2η)ϵ
- 무작위로 흔들어주는 노이즈 역할을 합니다.
- 앞의 수식만 사용하면 local minia 에 갇히기 쉬운데 노이즈를 더해줘서 이 문제를 해결하고자 하였습니다.
-> 그렇다면 왜 노이즈 스케일이 root(2n) 인가 ?
- 가 작아지면 한 스텝 이동량이 줄어든다.
- 노이즈도 거기에 맞춰서 줄어야지 Continuous-Time 에서 깔끔하게 수렴한다 .
Continuous-Time Langevin Dynamics.
앞에서 본 수식에서 η를 “시간 간격" 이라고 보고 , 해당 간격을 매우 작게 쪼개면 SDE 확률 과정으로 수렴하게 되고
다음과 같은 형식이 되는데

다음과 같이 SDE 입니다.
( https://process-mining.tistory.com/207 - sde 에 관해서 참고 )
SDE 형태가 결국 두부분인데
1. 드리프트 : 결정적인 방향성 ( 우리는 여기서 스코어 )
2. 무작위한 변화 : Brownian motion 이라고 하는 무작위 노이즈 .
ODE 와는 다르게 SDE 는 같은 Xo 에서 시작해도 매번 실행할떄마다 결과가 조금씩 달라짐.
( Continuous-Time Langevin Dynamics ~ Inherent Challenges of Langevin Sampling. 보충 설명 필요 )
- 브라운 운동에 대해서 ( 참고 플로그 ) : https://seanlife.tistory.com/entry/%EB%B8%8C%EB%9D%BC%EC%9A%B4-%EC%9A%B4%EB%8F%99Brownian-motion-%EA%B3%B5%EA%B8%B0-%EC%A4%91-%EB%A8%BC%EC%A7%80%EC%97%90%EC%84%9C%EB%B6%80%ED%84%B0-%EC%A3%BC%EC%8B%9D%EA%B9%8C%EC%A7%80
3.2 From Energy-Based to Score-Based Generative Models
'ai' 카테고리의 다른 글
| What is HexPlane ( with 4DGS ) (0) | 2026.01.31 |
|---|---|
| latent variable Models 에 대한 개념 정리 및 생각 (0) | 2025.11.19 |
| [Vision Transformer] implement(구현) (0) | 2024.10.02 |
| Transformer 구현 (0) | 2024.08.11 |
| [논문]Chain-of-Thought Prompt Distillation for Multimodal Named Entity Recognition and Multimodal Relation Extraction (0) | 2024.05.04 |