본문 바로가기
취미

생성 AI 오토인코더(Autoencoder)의 이해

by climb_JJIYO 2024. 3. 4.
반응형

오토인코더는 현재 생성 모델링 분야에서 가장 기본적이고 널리 알려진 딥러닝 구조입니다.

오토인코더는 AE(표준 오토인코더) 와 VAE(변이형 오토인코더)로 구분됩니다. 표준 오토인코더의 여러 문제를 해결하기 위해 변이형 오토인코더를 사용합니다.

변이형 오토인코더 이전에 근본이 되는 표준 오토인코더의 방식에 대해 먼저 이해해보겠습니다.

1. 오토인코더(AE)

오토인코더는 단순히 어떤 항목의 인코딩과 디코딩 작업을 수행하도록 훈련한 신경망입니다. 오토인코더 모델을 통해 원본과 유사한 결과물을 출력하도록 합니다. 특히, 원본의 임베딩이 없는 위치를 디코딩하여 새로운 결과물을 생성할 수 있으므로 생성 모델로 사용할 수 있습니다.

 

오토인코더 구조

오토인코더 구조

 

오토 인코더는 두 부분으로 구성된 신경망입니다. 인코더는 이미지 같은 고차원 입력 데이터를 저차원 임베딩으로 압축합니다. 디코더는 임베딩 벡터를 원본 도메인으로 압축 해제합니다. 벡터를 이미지로 되돌린다는 의미입니다. 오토인코더는 인코더로 들어가서 디코더로 나오면서 이미지를 재구성하도록 훈련합니다. 이미 가지고 있는 이미지를 재구성하는 이유는 임베딩 공간에서 샘플링하여 새로운 이미지를 생성할 수 있기 때문입니다.

 

임베딩

임베딩(z)은 원본 이미지를 저차원 잠재 공간으로 압축하는 것을 의미합니다. 잠재 공간에서 임의의 포인트를 선택하여 디코더에 통과시키면 새로운 이미지를 생성할 수 있습니다. 디코더는 잠재 공간의 포인트를 유효한 이미지로 변환하는 방법을 학습했기 때문에 이미지를 생성할 수 있습니다.

 

인코더 만드는 법

1. 인코더의 Input 층을 정의합니다.

2. 순서대로 Conv2D layer를 쌓습니다.

3. 합성곱 층의 출력을 벡터로 펼칩니다.

4. 이 벡터를 2D 임베딩에 해당하는 Dense 층에 연결합니다. 

5. Model 클래스로 인코더를 정의하고 입력 이미지를 받아 2D 이미지에 인코딩 합니다.

 

디코더 만드는 법

디코더는 인코더와 반대입니다. 합성곱 층 대신 전치 합성곱 층을 사용합니다.

 

1. 디코더의 Input 층을 정의합니다.

2. 입력을 Dense 층에 연결합니다.

3. 첫번째 Conv2DTranspose 층에 입력할 수 있도록 Reshape layer로 벡터의 크기를 바꿉니다.

4. Conv2DTranspose를 연속으로 쌓습니다.

5. Model 클래스로 디코더를 정의합니다.

 

디코더 모델은 잠재 공간의 임베딩을 받아 원본 이미지 도메인으로 디코딩합니다.

 

인코더와 디코더 연결

인코더와 디코더를 동시에 훈련하려면 이미지가 인코더를 통과해 디코더로 나오는 모델을 정의해야 합니다.

1. Modle 클래스로 오토인코더를 정의합니다. 이 모델은 이미지를 입력으로 받아 인코더와 디코더를 통과시켜 원본 이미지를 재구성하여 생성합니다.

2. 모델을 정의했으므로 손실함수와 옵티마이저로 모델을 컴파일해야 합니다. 손실함수는 일반적으로 원본 이미지와 재구성 이미지 픽셀 간의 평균 제곱근 오차(RMSE)와 이진 크로스 엔트로피(binary crossentropy)를 사용합니다.

오토인코더를 컴파일한 후 입력과 출력으로 이미지를 전달하여 오토인코더를 훈련할 수 있습니다. 오토인코더를 훈련한 다음 입력 이미지를 정확히 재구성하는지 확인해야 합니다. 테스트 세트의 이미지를 오토인코더에 전달하고 출력을 원본 이미지와 비교하여 이미지 재구성 능력을 확인할 수 있습니다.

 

2. 변이형 오토인코더(VAE)

 

VAE 구조

 

다양하고 품질 좋은 이미지를생성하기 위하여 표준 오토인코더 모델의 문제점을 해결한 변이형 오토인코더 모델로 바꾸어 정교한 생성 모델을 만들 수 있습니다. VAE는 AE에서 인코더와 손실함수를 변경한 것입니다.

오토인코더는 각 이미지가 잠재 공간의 한 포인트에 직접 매핑되지만, VAE는 각 이미지가 잠재 공간에 있는 포인트 주변의 다변량 정규 분포에 매핑됩니다.

 

AE와 VAE의 차이

 

인코더는 입력 이미지를 받아 잠재 공간의 다변량 정규 분포를 정의하는 2개의 벡터(z_mean, z_log_var)로 인코딩합니다. 

VAE는 모델에 무작위성을 주입하고 포인트가 잠재 공간에 분포되는방식을 제한함으로써 문제를 해결합니다. 약간의 수정만으로 오토인코더를 VAE로 바꿀 수 있고 생성 모델로서 강력한 성능을 발휘합니다. 

 

 

결론적으로, 오토인코더와 변이형 오토인코더는 생성 모델링 분야에서 중요한 역할을 하는 딥러닝 구조입니다. 따라서 오토인코더와 VAE는 생성모델링 분야에서 각각 중요한 역할을 하며, 데이터의 특징을 학습하고 새로운 데이터를 생성하는 능력을 갖추고 있습니다. 이러한 모델들은 이미지 생성부터 데이터 압축까지 다양한 응용 분야에서 활용되고 있으며, 더 나은 성능과 더욱 다양한 데이터 생성 능력을 위해 계속해서 연구되고 발전하고 있습니다.

반응형