TIL 2023-04-06

곽태욱·2023년 4월 6일
0

Deep Generative Model

AI 이미지 생성은 이 세상에 존재하지는 않지만 있을 법한 이미지를 생성하는 기술입니다. 새로운 이미지를 생성하는 방법에 대해 알아보겠습니다. 일단 이미지의 자연스러움에 대해 알아보면, 이미지의 자연스러움이란 인간이 느끼기에 이미지의 여러 특징이 지금까지 경험했던 특징과 비슷했다는 것입니다. 예를 들어, 이미지 상에서 어떤 물체가 바퀴가 4개 달려있고 번호판이 있으며 아스팔트 위에 있으면, 자연스럽게 이것은 차라고 인식합니다. 따라서, 자연스러우면서 기존에 없던 이미지를 생성하기 위해서는 기존 특징의 분포를 학습하고, 그 분포에 맞는 랜덤한 값을 이용하여 이미지를 생성하면 됩니다.

AE

AutoEncoder(AE)는 Encoder 부분과 Decoder 부분으로 이루어진 생성 모델입니다. 입력값을 인코더를 통해 특정한 latent 공간의 latent vector로 만든 후 latent vector를 디코더를 통해 값을 출력합니다. AE는 입력 데이터를 잘 압축하고 복원하는 능력을 갖추기 때문에 데이터 압축, 차원 축소, 이미지 복원, 이미지 노이즈 제거 등에 많이 사용됩니다. 또한 AE는 unsupervised learning 방법으로 학습하기 때문에 레이블이 없는 데이터셋에서도 사용할 수 있습니다.

AE는 크게 인코더(Encoder)와 디코더(Decoder)로 구성됩니다. 인코더는 입력 데이터를 잠재 공간으로 인코딩하는 역할을 합니다. 일반적으로 인코더는 여러 개의 fully connected layer로 구성되며, 마지막 레이어에서는 입력 데이터를 잠재 공간의 저차원 벡터로 변환합니다. 디코더는 인코더의 출력인 잠재 공간의 저차원 벡터를 입력으로 받아, 원래의 입력 데이터를 재구성하는 역할을 합니다. 디코더도 인코더와 마찬가지로 여러 개의 fully connected layer로 구성됩니다. 디코더의 출력은 인코더의 입력 데이터와 같은 차원의 벡터가 되어야 합니다.

AE의 목적은 디코더의 출력이 입력 데이터와 최대한 비슷하게 만드는 것입니다. 이를 위해 일반적으로 재구성 오차(reconstruction error)를 최소화하는 방식으로 학습됩니다. 예를 들어, 재구성 오차로는 평균 제곱 오차(Mean Squared Error, MSE)를 많이 사용합니다.

AE는 학습이 끝나면 인코더 부분을 이용하여 잠재 공간에 대한 다양한 연산을 수행할 수 있습니다. 잠재 공간에서 두 점 사이의 거리를 측정하면, 해당 데이터들이 얼마나 유사한지를 파악할 수 있습니다. 또한, 잠재 공간에서 새로운 벡터를 생성하여 디코더로 전달하면, 해당 잠재 공간에서 유사한 데이터를 생성할 수 있습니다. 이러한 기능은 이미지 생성 등의 분야에서 많이 활용됩니다.

잠재 공간(latent space)은 autoencoder와 같은 딥러닝 모델에서 입력 데이터의 특징을 추상화하고 표현하는 공간을 의미합니다. 이는 입력 데이터를 저차원의 벡터 형태로 인코딩(encoding)하고, 이 벡터를 다시 디코딩(decoding)하여 원래의 입력 데이터를 복원(reconstruction)하는 과정에서 얻어지는 벡터 공간입니다.

이 잠재 공간은 입력 데이터의 특징을 더 명확하게 파악할 수 있게 해줍니다. 예를 들어, 이미지 데이터를 다룰 때, 입력 이미지를 인코딩하여 잠재 공간에 매핑하면, 해당 잠재 벡터를 이용하여 다양한 변형을 가하고 이를 디코딩하여 새로운 이미지를 생성할 수 있습니다. 이를 통해, 새로운 이미지를 생성하는 것 외에도, 입력 이미지의 특징을 이해하고 분석하는 등 다양한 응용이 가능합니다.

잠재 공간은 다양한 크기와 차원을 가질 수 있습니다. 또한, 잠재 공간에서의 벡터 연산이 의미 있는 결과를 가져올 수 있어, 예를 들어 '웃는 얼굴' 벡터에서 '찡그린 얼굴' 벡터를 빼면 '웃는 얼굴에서 찡그린 얼굴을 뺀 표정' 벡터를 얻을 수 있습니다. 이렇게 잠재 공간에서의 벡터 연산은 모델의 특징을 더 깊이 이해하는 데 도움을 줍니다.

VAE

AutoEncoder(AE)는 입력값이 고정되면 항상 동일한 이미지를 생성하는 결정론적인 모델입니다. 다양한 이미지를 생성하려면 비슷하지만 다른 입력값을 계속 제공해야 하기 때문에 이 부분이 어려울 수 있습니다. 이러한 한계를 극복하기 위해 Variational AutoEncoder(VAE)라는 모델이 개발되었습니다.

VAE는 학습 데이터의 특징 분포를 학습합니다. AE와는 달리, VAE는 입력값을 latent 공간으로 투영하여 latent vector를 만든 후, 이를 특정한 확률 분포로 변환합니다. 이렇게 변환된 latent vector를 기반으로 출력값을 생성합니다. 이러한 과정에서 랜덤성을 추가하면서도 특정한 특징으로 인식될 수 있는 이미지를 생성할 수 있습니다.

따라서, VAE는 확률 분포 개념을 이용하여 latent vector를 생성함으로써 더욱 랜덤성을 추가하고 다양한 이미지를 생성할 수 있습니다. 이는 AE와는 달리 입력값이 같아도 출력값이 항상 같지 않고, 좀 더 다양한 이미지를 생성할 수 있다는 장점이 있습니다.

Diffusion

이미지 처리 분야에서는 화질 복원 분야(upscaling)가 있습니다. Upscaling은 저해상도 이미지와 해당 이미지를 설명하는 텍스트를 이용하여 고해상도 이미지를 만드는 기술입니다. Upscaling 기술은 이미지의 노이즈를 제거하는 과정이라고도 볼 수 있는데, 고해상도 이미지에 노이즈가 섞이면 화질이 안 좋다고 인식하기 때문입니다. 근데 그렇다면 랜덤 노이즈에서 upscaling을 반복하면 결국 고해상도 이미지를 만들 수 있지 않을까? 라는 아이디어가 생겼습니다. 이러한 아이디어에서 출발하여, Diffusion 모델이 개발되었습니다. (뇌피셜)

profile
이유와 방법을 알려주는 메모장 겸 블로그. 블로그 내용에 대한 토의나 질문은 언제나 환영합니다.

0개의 댓글