ai

latent variable Models 에 대한 개념 정리 및 생각

Kim_sang_hyeob 2025. 11. 19. 20:06

 

Latent Variable Models

● Allow us to define complex models p(x) in terms of simple building blocks p(x|z)

● Natural for unsupervised learning tasks (clustering, unsupervised representation learning, etc.)

● No free lunch: much more difficult to learn compared to fully observed

 

라고 간단하게 나와있다. 근데 사실 이것만 가지고는 느낌이 잘 오지 않는다. 

z 가 뭘 뽑느냐 ? z 뭘 의미하냐 ? 이걸 직관적으로 담고 있어야한다. 

 

보통 노션으로 정리하는데 노션에 정리하면 생각보다 잘 안보게 된다 ( 왜지 ) 

 

최대한 직관적으로 이해해보자. 

 

1. z 란 뭘까 

 

예를들어서 어떤 한 이미지를 만드는 모델을 만들고 싶다고 가정해보면 

이미지 x 는 매우 high -dimension 일 것이다. 

그리고 이미지에는

- 전체 색감

- 이미지의 패턴 

- 이미지의 구조 등등...

 

매우 다양한 요소들이 있을것이다 ( 사실 이렇게 칼같이 나눠지지는 않겠지만 ) 

 

우리는 그래서 "가정" 을 하는 것이다  ( 여러가지 요소로 나눠져 있다고 ) 

우리는 그러면 여기에 맞춰서  z 를 설정한다

z1 = 전체 색감

z2 = 이미지의 패턴

z3 = 이미지의 구도 등등...

 

z= 이미지를 만들기위해 내부에서 결정되는 설정값들의 묶음 정도로 이해하면 된다. 

 

 

x 의 차원이 매우매우 높을것이고 픽셀 공간에서 직접 모델링하는건 불가능에 가까우니 

z 라는 숨겨진 요인들을 먼저 가정을해서 생성을하자 ( 다른 말로는 z 공간에 압축된다? 라고 이해해도 좋을듯 ) 

이런 smooth 한 mainfold 공간을 형성하면 데이터를 압축(요약) 해서 담을 수 있게 된다. 

( 보통 그래서 x 차원보다 z 가 더 low dimension 이다. ) 

 

2. z 를 뽑는다는게 뭘까 ? 

보통우리는 p(x|z) 처럼 z 를 가정해두고 거기서 x 를 뽑는다. 

 

1. 먼저 z라는 내부 설정값을 무작위로 하나 뽑고 ( 보통 정규분포에서 ) 

2. 그 설정에따라 이미지를 만들어내는 과정 (x) 를 수행한다. 

 

(1) z ~ N ( 0 , I )  -> 랜덤으로 내부 설정값 뽑아서 

(2) x = Decoder(z) -> 거기에 맞춰서 이미지 생성

 

그래서 왜 그런 구조를 쓰냐면 

실제 이미지가 생성되기 위해서 우리가 가정했던것들 ( z1 , z2 ,z3 ) 등의 보이지않는 요인들이 먼저 선택되고,

그 것들이 합쳐져서 실제 이미지(X) 가 나온다고 볼 수 있다. 

 

이걸 딥러닝으로 잘 풀어낸 것이다. 

 

( 보통 z 는 정규분포인데 -> 이는 계산이 매우 편해지고 / 연속적이며 / 대칭적이다.  ) 

 

 

-> 결국 z 는 랜덤 백터인데 model 이 이걸 의미있게 만드는 법을 배우게 된다. 

Decoder 가 z 에 의미를 부여하도록 학습되는 것이다. 

 

그래서 의미가 없는 z 공간에 ( 처음에는 아무런 의미가 없는 정규 분포이지만 )

-> decoder f(z) 를 최적화 하다보면

-> z 공간이 이미지 생성에 쓰기 좋은 형태로 정렬되고 

-> decoder 가 그 공간의 패턴을 그럴듯한 이미지로 mapping 하는 방법을 배운다고 할 수 있다. 

 

( z -> z1 , z2 , z3 가 우리가 직접 어떤 의미를 가지라고 명시하는 것이 아니여도 학습을 통해서 알아서 배우게 되는 것이다. )

 

그래서 학습이 진행될수록 정규분포의 각 방향이 데이터의 유의미한 의미를 가지게 되고.

manifold 로 변하게 되는 것이다