본문 바로가기
ML & DL/Study

AutoEncoder (2) : Manifold Learning

by 별준 2021. 2. 10.
- Reference
Slide : https://www.slideshare.net/NaverEngineering/ss-96581209
강의(youtube) :
(1/3) https://www.youtube.com/watch?v=o_peo6U7IRM&ab_channel=naverd2
(2/3) https://www.youtube.com/watch?v=rNh2CrTFpm4&ab_channel=naverd2
(3/3) https://www.youtube.com/watch?v=LeVkjCuUdRs&ab_channel=naverd2

Naver 이활석님의 'AutoEncoder의 모든 것'이라는 강의를 바탕으로 학습하여, 개인적으로 정리하였습니다.


Manifold Learning

오토인코더의 가장 중요한 기능 중의 하나는 바로 매니폴드(manifold)를 학습한다는 것입니다.

이번 글에서는 매니폴드 학습의 4가지 목적에 대해서 살펴보겠습니다.

- 데이터 압축

- 데이터 시각화

- 차원의 저주 피하기

- 유용한 특징(feature) 추출하기

 

그렇다면 매니폴드(manifold)란 무엇일까요?

여기서 매니폴드는 고차원의 데이터, 즉, training DB의 데이터 그 자체를 error없이 잘 표현하는 subspace를 의미합니다. 고차원의 데이터를 공간상에 표현하면 각 데이터들은 점의 형태로 찍혀지는데, 이러한 점들을 잘 아우르는 subspace를 매니폴드라고 할 수 있는 것입니다.

 

이 매니폴더를 잘 찾는 것을 매니폴드 학습(manifold learning)이라고 할 수 있고, 잘 찾은 매니폴드에서 projection시키면 데이터의 차원이 축소될 수 있습니다.

- 헷갈릴 수 있는데, manifold는 원본의 training DB의 데이터를 잘 표현하는 원본 공간에서의 subspace를 의미합니다.

 

 

결론적으로 매니폴드 학습을 통해서 차원을 잘 축소하고자 하는 것입니다.

특히 원본 데이터의 특성을 유지하면서 차원을 축소해야합니다. 100차원에서 단순히 맨 앞의 2차원만 뽑아서 축소한다면 아무 의미없는 차원 축소가 되겠죠.

그렇다면 왜 차원을 축소하는가라고 묻는다면 글 처음에서 언급했던 4가지의 목적을 말할 수 있습니다.

 

Data compression

데이터 압축을 먼저 살펴보겠습니다. 데이터 압축은 말 그대로 단순히 원본 데이터를 더 작은 용량/크기로 압축하는 것입니다.

위 내용은 데이터 압축과 관련된 논문인데, 사진 압축에서 많이 사용되는 JPEG와 비교했을 때, 오토인코더를 통한 데이터 압축이 더 효과가 좋다는 내용의 논문입니다.

 

Data visualization

다음은 Data visualization(데이터 시각화)입니다.

위 방법은 고전적인 방법 중의 하나인 t-SNE이며, 28x28의 이미지를 3D 공간상에 매핑하여 시각화를 한 결과입니다.

시각화의 목적은 여러가지가 있는데, 데이터의 intuition을 위해서나 결과물의 intuition 또는 해석을 위해서 많이 사용됩니다.

아래 링크는 google에서 분류 결과들을 시각화한 사이트입니다.

vision-explorer.reactive.ai/#/galaxy?_k=sfb9l9

 

Cloud Vision Explorer

 

vision-explorer.reactive.ai

 

Curse of dimensionality

Curse of dimensionality(차원의 저주)는 데이터의 차원이 증가할수록 데이터 샘플이 존재할 수 있는 공간이 기하급수적으로 커지게 된다는 것입니다. 따라서, 낮은 차원과 동일한 개수의 데이터가 존재하지만, 높은 차원에서의 데이터 밀도는 급속도로 희박해지게 되며, 학습에 필요한 데이터의 개수가 기하급수적으로 증가하게 됩니다.

(학습을 위해서 그 공간 내에서 충분한 데이터가 필요하기 때문에 굉장히 많은 데이터가 필요하게 됩니다.)

 

Manifold Hypothesis

매니폴드 학습에는 한 가지 가정이 있습니다.

'Training DB의 데이터를 공간상에 나타냈을 때, DB의 데이터를 잘 아우르는 subspace가 존재할 것이다'라는 것입니다. 만약 이 subspace를 잘 찾는다면, 데이터 압축이 더 편해집니다.

따라서, 이러한 매니폴드가 존재할 것이라고 가정하고, 이 매니폴드를 찾는 것이 매니폴드 학습입니다.

 

그렇다면 '이것이 올바른 가정인가?' 라는 질문을 할 수 있습니다.

해당 내용을 이미지와 관련하여서 직관적으로 살펴보겠습니다.

 

수치적으로 200 x 200 크기의 RGB 이미지는 총 \(10^{96329}\)개의 가능한 이미지를 표현할 수 있습니다.

굉장한 고차원의 데이터인데, 위의 가정과는 반대로 이 고차원의 데이터 공간상에서 각 데이터들이 골고루 분포가 되어있다면, uniform sampling을 진행했을 때에 그럴듯한 이미지가 나와야합니다.

-> 하지만, random하게 샘플링했을 때, 우리는 단순히 아래와 같은 noise만 보게 됩니다.

즉, 우리가 찾으려는 이미지는 골고루 분포되어 있지않고, 어딘가에 밀집되어 있다는 것을 추론할 수 있습니다.

 

위에서 예시로 든 200x200 RGB 이미지는 우리가 생각하는 왠만한 이미지들이 다 커버가 됩니다.(ex, 얼굴, 텍스트 등)

만약 얼굴 이미지를 살펴본다면, 얼굴 이미지를 잘 아우르는 매니폴드가 있을 것이라고 추측할 수 있고, 폰트를 살펴보면, 폰트를 잘 아우르는 매니폴드가 있을 것이라고 추측할 수 있습니다.

그래서 만약 얼굴 이미지를 잘 아우르는 매니폴드를 찾았다면, 얼굴 이미지들 간의 관계를 잘 찾았다는 것이고,

확률 분포를 잘 찾았다면, 샘플링을 통해서 기존 DB에 없는 얼굴을 생성할 수 있습니다.

-> GAN이 동작하는 방법으로 domain을 한정했을 때, 그 domain의 확률분포를 찾아서 샘플링하는 것이 가능합니다.

(모든 domain을 모두 아우르는 것은 아직 불가능, 1000개 정도의 이미지에 대해서는 가능한 수준)

 

Discovering most important features

아래는 MNIST 데이터로 매니폴드 학습을 진행한 결과입니다.

만약 MNIST 데이터들을 잘 아우는 매니폴드, 즉 서브스페이스를 잘 찾았다면(위 결과는 2차원의 서브스페이스로 가정), 그 2차원을 feature라고 생각할 수 있습니다.

그래서 압축을 잘 했다면, feature를 잘 찾았다고 할 수 있으며, 하나의 축을 따라서 값을 변경했더니 rotation이 변경이 된다거나, zoom이 된다는 등의 변화를 확인할 수 있습니다.

 

VAE에서 다시 설명하지만, 이 feature들은 자동으로 찾아진 것입니다. 그냥 2D로 압축을 하다보니, 그 feature의 의미가 자동으로 찾아진 것이고, 이는 unsupervised learning이기 때문입니다.

 

그리고 Feature를 잘 찾았다는 것은 Distance Metrics과 연관해서 해석할 수 있습니다.

위의 왼쪽 이미지에서 A1, A2, B의 샘플이 있는데, 원래 데이터 공간 상에서 유클리디안 거리를 계산하면 A2보다 B가 A1가 더 가깝습니다. 하지만 매니폴드에서 잘 찾아서, 매니폴드를 통해 데이터 압축을 진행한 후에 유클리디안 거리를 측정하면, 오른쪽 이미지처럼 B보다 A2가 A1과 더 가깝다는 것을 확인할 수 있습니다. 

따라서 매니폴드에서 생각하면, 거리가 가깝다는 것은 dominant feature들이 가깝다고 해석할 수 있습니다.

 

골프를 치는 이미지를 통해서 다시 살펴보겠습니다.

만약 원래의 고차원 데이터 공간에서 왼쪽과 오른쪽 이미지의 중간 위치에 존재하는 데이터를 샘플링한다면, 중간 이미지처럼 의미없는 이미지가 나오게 됩니다.

하지만, 매니폴드 상에서 중간 위치에 존재하는 데이터를 뽑아보면, 우리가 찾고자하는 중간에 있는 이미지를 찾을 수 있을 것입니다.

 

따라서 MNIST를 가지고 매니폴드 학습을 진행하면 의미적으로 가까운 이미지들이 뭉쳐있는 것을 볼 수 있습니다.

 

Reduction Dimension

차원 축소 방법에는 위와 같은 다양한 방법들이 존재합니다. 그중에 오토인코더는 Non-Linear에 속합니다.

 

다음 글에서 이제 오토인코더에 대해서 알아보도록 하겠습니다.

'ML & DL > Study' 카테고리의 다른 글

[선형대수] 일차종속과 생성공간  (0) 2022.05.12
AutoEncoder (3) : AE, DAE  (0) 2021.02.15
AutoEncoder (1) : Maximum likelihood 관점에서의 해석  (0) 2021.02.09
Convolutional Neural Network(CNN)  (0) 2021.01.04
Gradient Descent  (0) 2020.12.16

댓글