본문 바로가기

AI Theory/key concept of AI

latent vector 과 latent space 의 의미

latent vector 과 latent space

latent vector와 latent space

generation model는 train dataset의 distribution을 학습하여 해당 distribution을 따르는 새로운 데이터를 생성한다.

 

이때 latent vector는 dataset의 하나의 데이터 샘플이 갖는 잠재적인(hidden) 벡터 형태의 변수이고, latent vector들이 모여 분포 형태를 이루며 latent space를 형성한다.

 

2D Visualization of latent space of mnist
출처(https://medium.com/@julien.pascal/neural-networks-unleashing-the-power-of-latent-space-compression-2c8630f6f6cc)

 

결국 latent vector는 데이터를 설명하는 하나의 feautre이고 latent space는 결국 데이터를 가장 잘 설명할 수 있는 feature의 모임을 의미한다.

 

이는 곧 차원 축소와도 관련이 있는 것 같다. 이미지 데이터로 예를 들자면, 강아지 이미지가 있다고 할 때 강아지 이미지의 픽셀의 모든 부분이 ‘강아지’를 표현하지는 않는다. 그런데 강아지 이미지를 기반으로 latent vector들을 추출한다면, 그건 결국 ‘강아지’를 가장 잘 표현하는 축약된 형태의 representation이 되는 것이라고 이해했다.

 

따라서 image generation model의 경우 이미지 데이터셋에 뽑아낸 latent space를 학습하고 학습한 latent space를 기반으로 새로운 이미지를 generation 하는 것으로 볼 수 있다.

 

input image
latent representation
latent space
encoder
latent vector
구조도

 

image classification model의 경우 이미지 데이터셋에서 뽑아낸 latent space를 기반으로 최적의 경계선을 탐색하여 classification을 수행한다.

 

이때 이미지 데이터셋을 latent space로 바꾸는 모델 구조를 feature extractor, 또는 Encoder라고 한다.

 

추가 궁금한 점

gemini한테 물어봄

 

Q1. 이미지 데이터셋에서 latent space를 추출한다고 할때 하나의 이미지 클래스마다 latent space를 하나씩 뽑는거야, 아니면 전체 1개의 latent space를 뽑는거야?

A. 둘 다 가능. 목적에 따라 다르게 사용

더보기

< gemini 답변 >
이미지 데이터셋에서 latent space를 추출하는 방법은 크게 두 가지입니다.

1. 클래스별 latent space 추출

각 클래스마다 고유한 latent space를 추출하는 방식입니다. 이는 클래스별 특징을 보다 효과적으로 표현할 수 있다는 장점이 있습니다. 예를 들어, 얼굴 이미지 데이터셋에서 각 사람마다 고유한 latent space를 추출하면 특정 사람의 얼굴 이미지를 생성하거나 변형하는 데 유용하게 활용할 수 있습니다.

2. 전체 latent space 추출

모든 이미지 데이터에 대한 하나의 latent space를 추출하는 방식입니다. 이는 데이터 간의 공통적인 특징을 표현할 수 있다는 장점이 있습니다. 예를 들어, 풍경 이미지 데이터셋에서 하나의 latent space를 추출하면 풍경 이미지의 특징을 기반으로 새로운 이미지를 생성하거나 이미지를 분류하는 데 활용할 수 있습니다.

사용 방법

두 가지 방법 중 어떤 방법을 사용할지는 데이터셋의 특성과 목적에 따라 결정됩니다.

  • 더보기
    클래스별 특징을 중요하게 고려해야 하는 경우에는 클래스별 latent space 추출 방법을 사용하는 것이 좋습니다.
  • 더보기
    데이터 간의 공통적인 특징을 중요하게 고려해야 하는 경우에는 전체 latent space 추출 방법을 사용하는 것이 좋습니다.

 

Q2. 각 이미지는 latent vector로 표현되는 거면, 결국 동일한 class의 이미지들에 대해 모든 각 이미지의 latent vector들이 latent space에 표현되는거야?

A. ㅇㅇ

네, 맞습니다. 각 이미지는 latent vector로 표현되고, 동일한 클래스의 이미지들은 latent space에서 비슷한 위치에 표현되는 경향이 있습니다.

 

정리

  1. 이미지 데이터셋을 latent space로 바꿔서 모델을 학습하는게 딥러닝
  2. 이미지 데이터 하나는 하나의 latent vector로 바꿀 수 있고 이러한 latent vector의 모임이 latent space이다
  3. latent space 내에서 동일한 class를 가진 이미지들의 latent vectors는 비슷한 특징을 가지므로 비슷한 위치에 위치해있다. 따라서 분류나 generation이 가능한 것임

코드를 통해 실제 이미지 데이터셋이 Autoencoder를 기반으로 latent space를 생성하는 과정, 그리고 해당 latent space내 latent vetors가 class에 따라 어떻게 분포되어있는지를 확인할 수 있다.

 

 

A Simple AutoEncoder and Latent Space Visualization with PyTorch

I. Introduction

medium.com