[TIL] Data Manifold 학습이란?

1

TIL

목록 보기
5/16
post-thumbnail

GAN을 학습하다 보면, Data manifold에 대한 개념이 등장합니다. 개념 자체가 간단하면서도 어려워서 정리해보고자 합니다.

👀 Data Manifold와 AE

기존의 auto-regressive model들은 이미지의 픽셀들을 순차적으로 넣어주며 fully connected layer를 통해 학습해 i번째 픽셀을 만들기 위해 1부터 i-1을 고려하도록 만들어주었다. 또한, PixelRNN과 같은 모델들은 ordering 방법들을 달리하며 정보를 요약해서 pixel 생성을 하고자 했다.

하지만 이러한 모델은 당연히 사진의 일부만을 rule-base와 같이 고려할 수 밖에 없기 때문에 성능이 좋지 않았다. 이를 Sequence model의 Context Vector처럼 Latent Vector로 추출하고 그것을 통해 이미지를 생성하고자 하는 모델이 Auto-Encoder 모델이다.

latent vector 상에서의 이미지 보간은 pixel 기준 보간보다 자연스럽다. 이들을 통해 이미지를 생산해보면 자연스러운 이미지 보간의 과정을 볼 수 있다.

그렇다면 중요한 것은 우리가 기존에 갖고 있던 고차원 공간에서의 데이터들을 데이터의 손실 없이 잘 표현해주는 저차원 공간을 찾아야 한다 여기서 Data Manifold가 등장한다.

🛠 Data Manifold란?

Manifold란 고차원 데이터가 있을 때 sample들을 잘 아우르는 subspace가 있을 것이라는 가정에서 학습을 진행하는 방법이다. 이렇게 찾은 manifold는 데이터의 차원을 축소시킬 수도 있고 데이터를 더 잘 표현할 수 있게 된다.

data manifold와 함께 자주 등장하는 것이 스위스 롤이다.

해당 분포처럼 데이터가 뿌려져 있다고 가정하자. 이 데이터들을 분류할 때에 유클리드 거리를 그대로 사용하는 것은 비합리적으로 보인다. 오히려 말려있는 데이터를 펴서 분리하는 것이 더 이상적으로 보인다.

Data Manifold의 학습이란, 우리가 잘 알지 못하는 데이터의 공간 자체를 점차 이해해나가며 그것을 더 잘 표현하는 공간에 변환시켜주는 것이다. Manifold 학습을 진행하면 학습된 모델의 latent vector는 차원이 달라지게 되며, 스위스롤의 경우에는 그 공간에서는 평면으로 핀 것처럼 나타날 것이다.

위의 공간에서 데이터는 아무런 방향성이 없어 보일 수 있다. 하지만 이를 고차원으로 투영시키게 된다면 Manifold를 구할 수도 있다. 실제로 Neural Net에서 Dense layer의 차원을 늘렸다가 줄였다가 하는 것도 이러한 manifold 학습을 위해서이다.

👍 Data Manifold의 효과

Data를 잘 아우르는 manifold를 찾게 되면 다양한 효과들이 나타난다.

Data를 보다 잘 표현할 수 있는 Feature space를 찾았기에 manifold의 좌표를 조금씩 변경해가면서 데이터를 유의미하게 조금씩 변화시킬 수 있다. 이를 통하면 Generative Model에서도 feature들을 조금씩 변형시켜가며 더 realistic한 feature를 찾아나갈 수 있다. 이는 Data의 Dominant 한 Feature를 잘 찾았기 때문이다.

반대로 manifold를 잘 찾았다면 dominant feature가 유사한 sample들을 찾아볼 수 있고 이를 통해 input data를 더 잘 이해할 수도 있다.

🔥 Data Manifold와 Generative model

결과적으로, input으로 주어지는 image의 data manifold를 보다 잘 표현하는 latent space로 보낸다면 이는 정보를 압축할 수 있을 뿐더러, 데이터를 더 잘 표현할 수 있다는 장점을 지니고 있다. Auto-Encoder는 이 부분을 이용해 Encoder와 Decoder가 더 realistic한 이미지를 생성할 수 있도록 모델을 학습시킨다.

✏️ 후기

Generative Model 위주로 Data manifold를 생각했기에 당연히 차원을 줄이는 것만 생각하고 있었다. 하지만, Dense layer처럼 오히려 더 잘 표현할 수 있는 공간을 찾기 위해 증가시킬 차원을 증가시킬 수도 있다는 점을 알게 되었다. 잘 이해하고 있다고 생각했던 개념이었지만 모르는 점을 공부하게 되어서 좋았다.

출처 : https://deepinsight.tistory.com/124

https://greatjoy.tistory.com/51

profile
프리미어와 IDE만 있다면 무엇이든 만들 수 있어

0개의 댓글