Think

주제

변형 오토인코더

변형 오토인코더란 무엇인가요?
IBM의 AI 플랫폼 살펴보기 AI 업데이트 신청
구름, 원형 차트 및 그래프가 포함된 픽토그램 콜라주

발행일: 2024년 6월 12일
작성자: 데이브 버그만(Dave Bergmann), 콜 스트라이커(Cole Stryker)

변형 오토인코더란 무엇인가요?

변형 오토인코더(VAE)는 머신 러닝(ML)에서 학습된 입력 데이터의 변형 형태로 새 데이터를 생성하는 데 사용되는 생성형 모델입니다. 이 외에도 다른 오토인코더와 마찬가지로 노이즈 제거 등의 작업도 수행합니다.

모든 오토인코더와 마찬가지로, 변형 오토인코더는 학습 데이터에서 중요한 잠재 변수를 분리하는 방법을 학습하는 인코더와 이러한 잠재 변수를 사용하여 입력 데이터를 재구성하는 디코더로 구성된 딥 러닝 모델입니다.

그러나 대부분의 오토인코더 아키텍처가 잠재 변수의 이산적이고 고정된 표현을 인코딩하는 반면, VAE는 해당 잠재 공간의 연속적이고 확률적인 표현을 인코딩합니다. 이를 통해 VAE는 원래 입력을 정확하게 그대로 재구성할 수 있을 뿐만 아니라, 변분 추론을 사용하여 원래 입력 데이터와 유사한 새로운 데이터 샘플을 생성할 수도 있습니다.

변형 오토인코더의 신경망 아키텍처는 디에데릭 P. 킹마(Diederik P. Kingma)와 맥스 웰링(Max Welling)이 2013년 발표한 논문인 Auto-Encoding Variational Bayes(ibm.com 외부 링크)에서 처음으로 제안했습니다. 또한 이 논문 덕에 모델의 미분성, 즉 모델의 매개변수를 최적화하는 기능을 손상시키지 않으면서 무작위성을 모델 입력으로 사용할 수 있는 중요한 머신 러닝 기법인 재매개변수화 트릭이 대중화되었습니다.

VAE는 이 문서에서와 같이 이미지 생성의 맥락에서 자주 논의되지만, 이상 징후 탐지1부터 신약 분자생성2(ibm.com 외부 링크)에 이르기까지 다양한 인공지능(AI) 애플리케이션에 사용될 수 있습니다.

적절한 파운데이션 모델을 선택하는 방법

대부분의 조직이 생성형 AI에 기대하는 결과를 명확하게 알고 있지만, 모델을 잘못 선택하면 비즈니스에 심각한 영향을 미칠 수 있습니다. 이 eBook에서는 성능 요구 사항과 비용, 위험, 배포 요구 사항 및 이해관계자들의 요구 사항 사이에서 균형을 맞추기 위한 모델 선택 프레임워크를 살펴봅니다.

잠재 공간이란 무엇인가요?

VAE 또는 다른 유형의 오토인코더를 이해하려면 특정 입력 데이터 세트의 집합적 잠재 변수에 부여된 이름인 잠재 공간의 개념을 먼저 이해해야 합니다. 요컨대, 잠재 변수는 데이터가 배포되는 방식을 알려주는 데이터의 기본 변수이지만 직접 관찰할 수 없는 경우가 많습니다.

잠재 변수의 개념을 쉽게 시각화하기 위해, 지나가는 각 차량의 무게를 측정하는 센서가 달린 다리가 있다고 생각해보겠습니다. 당연히 작고 가벼운 경차부터 거대한 대형 트럭에 이르기까지 다양한 종류의 차량이 다리를 사용합니다. 카메라가 없기 때문에 특정 차량이 경차, 세단, 밴 또는 트럭인지 감지할 수 있는 방법이 없습니다. 하지만 차량의 종류가 차량의 무게에 큰 영향을 미친다는 사실은 알고 있습니다.

따라서 이 예에는 두 개의 확률 변수 xz가 포함되는데, 여기서 x는 차량 무게라는 직접 관찰 변수이고 z는 차량 유형이라는 잠재 변수입니다. 모든 오토인코더의 주요 학습 목표는 특정 입력의 잠재 공간을 효율적으로 모델링하는 방법을 학습하는 것입니다.
 

잠재 공간 및 차원 축소
오토인코더는 원래 입력에 포함된 의미 있는 정보를 캡처하는 저차원 공간으로 데이터를 압축하는 차원 축소를 통해 잠재 공간을 모델링합니다.

머신 러닝(ML)에서 수학적 차원이란 익숙한 물리적 세계의 공간적 차원이 아니라 데이터의 특징을 가리킵니다. 예를 들어, MNIST 데이터 세트에서 손으로 쓴 숫자의 28x28픽셀 흑백 이미지는 784차원 벡터로 표현할 수 있으며, 각 차원은 0(검은색)에서 1(흰색)까지의 값을 갖는 개별 픽셀에 해당합니다. 동일한 이미지를 컬러로 바꾸면 2,352차원 벡터로 표현되며, 784개의 픽셀 각각이 각각의 빨강, 녹색, 파랑(RGB) 값에 해당하는 3차원으로 표현될 수 있습니다.

그러나 모든 차원에 유용한 정보가 포함되어 있는 것은 아닙니다. 실제 숫자 자체는 이미지의 극히 일부분에 불과하며, 입력 공간의 대부분은 배경 노이즈입니다. 관련 정보가 포함된 차원인 잠재 공간으로만 데이터를 압축하면 많은 ML 작업과 알고리즘의 정확성, 효율성 및 능률을 향상할 수 있습니다.

오토인코더란 무엇인가요?

VAE는 데이터 압축, 이미지 노이즈 제거, 이상 징후 감지, 안면 인식과 같은 작업을 위해 딥 러닝에서 일반적으로 사용되는 신경망 아키텍처인 오토인코더의 하위 범주에 속합니다.

오토인코더는 차원 축소를 통해 입력 데이터를 압축 또는 인코딩)한 다음 압축된 표현을 사용하여 원래 입력을 정확하게 재구성(또는 디코딩)하는 것을 학습 목표로 하는 자체 지도 시스템입니다.

기본적으로 오토인코더의 기능은 데이터에서 가장 두드러진 정보(잠재 변수)를 효과적으로 추출하고 관련 없는 노이즈를 제거하는 것입니다. 다양한 유형의 오토인코더는 각기 정보를 추출하기 위해 사용하는 특정 전략과 해당 전략이 가장 적합한 사용 사례에 따라 다른 유형의 오토인코더와 구별됩니다.

인코더 네트워크는 학습 과정에서 디코더에 도달하기 전에 '병목 현상'을 거쳐 학습 데이터 세트의 입력 데이터를 전달합니다. 그러면 디코더 네트워크는 잠재 변수의 벡터만을 사용하여 원본 입력을 재구성합니다.

각 훈련 단계가 끝나면 경사 하강법과 같은 최적화 알고리즘을 사용하여 원본 데이터 입력과 디코더의 아웃풋 간의 차이를 최소화하는 방식으로 모델 가중치를 조정합니다. 결국, 인코더는 정확한 재구성에 가장 도움이 되는 정보를 통과시키는 방법을 학습하고 디코더는 이를 효과적으로 재구성하는 방법을 학습합니다. 

직관적으로 생각할 때 이는 간단한 데이터 압축 작업에 적합하지만, 오토인코더는 레이블이 지정되지 않은 데이터의 정확한 잠재 표현을 효율적으로 인코딩할 수 있는 기능 덕분에 다양한 애플리케이션에 활용할 수 있습니다. 예를 들어, 손상된 오디오 파일을 복원하거나, 회색조 이미지를 컬러화하거나, 육안으로는 발견할 수 없는 이상 징후(예: 사기로 인한 이상)를 감지하는 데 오토인코더를 사용할 수 있습니다.

오토인코더 구조

다양한 유형의 오토인코더는 특정 목표와 데이터 유형에 알맞게 아키텍처의 특정 측면을 추가하거나 변경하지만, 모든 오토인코더는 세 가지 주요 구조 요소를 공유합니다.

인코더는 입력 데이터 x의 잠재 변수를 추출하여 잠재 공간 z를 나타내는 벡터 형태로 출력합니다 .일반적인 오토인코더에서는 인코더의 각 후속 레이어가 이전 레이어보다 점점 더 적은 수의 노드를 포함하며, 데이터가 각 인코더 레이어를 통과할 때 더 적은 차원으로 '압축'되는 과정을 통해 압축됩니다.

다른 오토인코더 변형은 이러한 차원 축소를 달성하기 위해 각 계층에서 활성화되는 노드 수에 불이익을 주어 희소성을 적용하는 함수와 같은 정규화 조건을 사용합니다.

병목 현상 또는 '코드'는 인코더 네트워크의 출력 계층이자 디코더 네트워크의 입력 계층입니다. 입력 데이터가 완전히 압축된 저차원 임베딩인 잠재 공간이 여기에 포함되어 있습니다. 디코더가 입력 데이터를 단순히 복사하거나 기억할 수 없도록 충분한 병목 현상이 발생해야 하며, 이를 통해 명목상으로는 학습 작업을 만족시키지만 오토인코더의 학습을 방해할 수 있습니다.

일반적인 디코더 아키텍처에서 각 후속 레이어에는 점차적으로 더 많은 수의 활성 노드가 포함되어 있으며, 디코더는 이러한 잠재 표현을 사용하여 인코더를 본질적으로 역전시켜 원본 입력을 재구성합니다.

많은 자동 인코더의 인코더 및 디코더 네트워크는 표준 다층 퍼셉트론(MLP)으로 구축되지만, 오토인코더는 특정 유형의 신경망에 국한되지 않습니다.

컴퓨팅 비전 작업에 사용되는 자동 인코더는 대개 컨볼루션 신경망(CNN)을 사용하기 때문에 컨볼루션 오토인코더라고 합니다. 트랜스포머 아키텍처로 제작된 오토인코더는 컴퓨팅 비전3 및 음악을 포함한 여러 분야에서 사용되고 있습니다.4 

주성분 분석(PCA)과 같은 다른 차원 축소 알고리즘과 비교할 때 오토인코더의 주요 장점은 오토인코더는 서로 다른 변수 간의 비선형 관계를 모델링할 수 있다는 점입니다. 이러한 이유로 오토인코더 신경망의 노드는 일반적으로 비선형 활성화 함수를 사용합니다.

많은 오토인코더 애플리케이션에서 디코더는 인코더의 최적화를 돕기 위해서만 사용되고, 학습 후에는 폐기됩니다. 그러나 변형 오토인코더에서는 디코더가 폐기되지 않고 새로운 데이터 포인트를 생성하는 데 사용됩니다.

변형 오토인코더는 어떻게 작동하나요?

VAE가 다른 오토인코더와 다른 점은 잠재 공간을 인코딩하는 고유한 방식과 확률적 인코딩을 적용할 수 있는 다양한 사용 사례에 있습니다.

대부분의 오토인코더가 이산 잠재 변수의 단일 벡터를 인코딩하는 결정론적 모델인 반면, VAE는 확률론적 모델입니다. VAE는 학습 데이터의 잠재 변수를 고정된 이산값 z가 아니라 확률 분포 p(z)로 표현되는 연속적인 가능성 범위로 인코딩합니다.

베이지안 통계에서는 이렇게 학습된 잠재 변수에 대한 가능성 범위를 사전 분포라고 합니다. 새로운 데이터 포인트를 합성하는 생성 과정인 변분 추론에서는 이 사전 분포를 사용하여 사후 분포p(z|x)를 계산합니다. 즉, 잠재 변수 z의 값이 주어졌을 때 관측 가능한 변수 x의 값을 구하는 것입니다.

학습 데이터의 각 잠재 속성에 대해 VAE는 평균 벡터 "μ"와 표준 편차 벡터 "σ"의 두 가지 잠재 벡터를 인코딩합니다. 본질적으로 이 두 벡터는 각 잠재 변수의 가능성 범위와 각 가능성 범위 내에서 예상되는 분산을 나타냅니다.

VAE는 이 인코딩된 가능성 범위 내에서 무작위로 샘플링하여 고유하고 독창적이면서도 원본 학습 데이터와 유사한 새로운 데이터 샘플을 합성할 수 있습니다. 이 방법론은 원칙적으로는 비교적 직관적이지만, 실제로 적용하려면 표준 자동 인코더 방법론에 대한 추가 조정이 필요합니다.

VAE의 이러한 기능을 설명하기 위해 다음을 살펴보겠습니다.

  • 재구성 손실

  • Kullback-Leibler(KL) 발산

  • 증거 하한(ELBO)

  • 재매개변수화 요령
재구성 손실

모든 오토인코더와 마찬가지로 VAE는 학습의 주요 손실 함수로 재구성 손실, 즉 재구성 오차를 사용합니다. 재구성 오류는 원본 입력 데이터와 디코더가 출력한 재구성된 버전의 데이터 사이의 차이(또는 '손실')를 측정합니다. 교차 엔트로피 손실 또는 평균 제곱 오차(MSE)를 포함한 여러 알고리즘을 재구성 손실 함수로 사용할 수 있습니다.

 앞서 설명한 것처럼 오토인코더 아키텍처는 원본 입력 데이터의 일부만 디코더로 전달되는 병목 현상을 일으킵니다. 일반적으로 인코더는 모델 매개변수의 무작위 초기화로 시작되는 학습이 시작되는 시점에서 데이터의 어느 부분에 더 많은 가중치를 적용할지를 아직 학습하지 못했습니다. 따라서 처음에는 최적이 아닌 잠재 표현을 출력하므로 디코더는 상당히 부정확하거나 불완전한 원본 입력의 재구성을 출력합니다.

인코더 네트워크와 디코더 네트워크의 매개변수에 대한 일종의 경사 하강법을 통해 재구성 오류를 최소화함으로써 오토인코더 모델의 가중치가 잠재 공간에 대해 보다 유용한 인코딩(따라서 더 정확한 재구성)을 생성하는 방식으로 조정됩니다. 수학적으로 재구성 손실 함수의 목표는 pθ(z|x)를 최적화하는 것이며, 여기서 θ는 주어진 잠재 변수 z가 입력 x를 정확하게 재구성하도록 하는 모델 매개변수를 나타냅니다. 

정확한 재구성에 도움이 되는 입력 데이터의 압축 표현을 학습하는 것이 유일한 목표인 대부분의 오토인코더는 재구성 손실만으로도 최적화할 수 있습니다.

그러나 변형 오토인코더의 목표는 원래 입력을 재구성하는 것이 아니라 원래 입력과 유사 샘플을 생성하는 것입니다. 그래서 추가 최적화 용어가 필요합니다.

쿨백-라이블러 발산

학습된 모델로 새로운 샘플을 생성하는 변분 추론에서는 재구성 손실만 사용하면 잠재 공간의 불규칙한 인코딩으로 인해 학습 데이터가 과적합해지고 새로운 샘플에 잘 일반화되지 않을 수 있습니다. 따라서 VAE는 또 다른 정규화 조건인 쿨백-라이블러 발산 또는 KL 발산을 통합합니다.

이미지를 생성하려면 디코더가 잠재 공간에서 샘플링을 수행해야 합니다. 학습 데이터의 원래 입력을 나타내는 잠재 공간의 특정 지점에서 샘플링하면 원래 입력이 복제됩니다. 이미지를 생성하려면 VAE가 원본 데이터 포인트 사이의 잠재 공간 어디에서든 샘플링할 수 있어야 합니다. 이를 위해서는 잠재 공간에 두 가지 유형의 규칙성이 나타나야 합니다.

  • 연속성: 잠재 공간 내에서 가까운 지점은 디코딩 시 유사한 콘텐츠를 생성해야 합니다.
  • 완전성: 잠재 공간 내에서 샘플링된 모든 지점은 디코딩 시 의미 있는 콘텐츠를 생성해야 합니다.

잠재 공간에서 연속성과 완전성을 모두 구현하는 간단한 방법은 가우스 분포라고 하는 표준 정규 분포를 따르도록 하는 것입니다. 그러나 재구성 손실만 최소화하면 '사이' 공간은 원본 데이터 포인트의 정확한 재구성과 관련이 없기 때문에 모델이 특정한 방식으로 잠재 공간을 구성하도록 인센티브를 제공하지 않습니다. 여기서 KL 발산 정규화 조건이 사용됩니다.

KL 발산은 두 개의 확률 분포를 비교하는 데 사용되는 메트릭입니다. 학습된 잠재 변수의 분포와 값 범위가 0~1인 간단한 가우스 분포 사이의 KL 발산을 최소화하면 잠재 변수의 학습된 인코딩이 정규 분포를 따르게 됩니다. 이를 통해 잠재 공간의 모든 지점을 부드럽게 보간하여 새로운 이미지를 생성할 수 있습니다.

증거 하한(ELBO)

변분 추론에 KL 발산을 사용하는 데 있어 한 가지 장애물은 방정식의 분모가 난해하여 직접 계산하는 데 이론적으로 무한한 시간이 걸린다는 점입니다. 이 문제를 해결하고 두 가지 주요 손실 함수를 통합하기 위해 VAE는 증거 하한(ELBO)을 최대화하여 KL 발산을 최소화를 근사화합니다.

통계 용어로 '증거 하한'의 '증거'는 표면적으로 VAE가 재구성을 담당하는 관찰 가능한 입력 데이터인 p(x)를 의미합니다. 입력 데이터에서 관찰 가능한 변수는 자동 인코더가 발견한 잠재 변수에 대한 '증거'입니다. '하한'은 주어진 분포의 로그 확률에 대한 최악의 경우 추정치를 의미합니다. 실제 로그 가능성은 ELBO보다 높을 수 있습니다.  

VAE의 맥락에서 증거 하한은 특정 후방 분포, 즉 KL 발산 손실 조건과 재구성 손실 조건에 의해 조절되는 자동 인코더의 특정 출력이 학습 데이터의 '증거'에 부합할 가능성에 대한 최악의 추정치를 의미합니다. 따라서 변형 추론을 위한 모델 학습은 ELBO를 극대화하는 측면에서 참조될 수 있습니다.

재매개변수화 트릭

앞서 설명한 것처럼 변형 추론의 목표는 학습 데이터 x의 무작위 변형 형태로 새로운 데이터를 출력하는 것입니다. 언뜻 보기에는 비교적 간단합니다. 잠재 변수 z에 대해 임의의 값을 선택하는 함수 ƒ를 사용하면 디코더가 x의 대략적인 재구성을 생성할 수 있습니다.

하지만 무작위성의 고유한 특성은 최적화할 수 없다는 것입니다. 무작위 값의 벡터에는 정의상 도함수, 즉 결과 모델 출력에 어떤 패턴을 표현하는 기울기가 없으므로 어떤 형태의 경사 하강법을 사용하여 역전파를 통해 최적화할 수 없습니다. 이는 앞에서 설명한 무작위 샘플링 프로세스를 사용하는 신경망이 작업을 수행하기 위한 최적의 매개변수를 학습할 수 없음을 의미합니다.

이런 장애물을 피하기 위해 VAE는 재매개변수화 트릭을 사용합니다. 재매개변수화 트릭은 0과 1 사이의 정규 분포에서 선택된 임의의 값인 새 매개변수 ε를 도입합니다.

그런 다음 잠재 변수 zz = μx + εσx로 다시 매개변수화합니다. 더 간단히 설명하면, 이 방법은 해당 변수의 평균(μ로 표시)에서 시작하여 표준편차(σ)의 임의 배수(ε로 표시)로 이동하여 잠재 변수 z의 값을 선택합니다. 디코더는 특정 z 값에 따라 새로운 샘플을 출력합니다.

임의의 값 ε는 오토인코더 모델의 매개변수에서 파생되지 않고 관련성이 없으므로 역전파 중에 무시할 수 있습니다. 모델은 일종의 경사 하강법을 통해 업데이트되며, 대부분의 경우 Kingma에서 개발한 기울기 기반 최적화 알고리즘인 Adam(ibm.com 외부 링크)을 통해 업데이트되어 ELBO를 최대화합니다.

조건부 VAE(CVAE)

기존의 평범한 VAE의 한 가지 단점은 사용자가 오토인코더에 의해 생성된 특정 출력을 제어할 수 없다는 것입니다. 예를 들어, 앞서 언급한 MNIST 데이터 세트로 학습된 기존 VAE는 0에서 9까지의 수기 숫자의 새로운 샘플을 생성하지만, 4와 7만 출력하도록 제한할 수는 없습니다.  

이름에서 알 수 있듯이 조건부 VAE(CVAE)는 학습 데이터의 변형을 무작위로 생성하는 대신, 특정 입력에 의해 조건화된 출력을 가능하게 합니다. 이는 지도 학습 (또는 준지도 학습)의 요소를 기존 오토인코더의 전통적으로 비지도 학습 목표를 통합하여 달성할 수 있습니다.

모델을 특정 변수의 레이블이 지정된 예에 대해 추가로 학습시키면면 해당 변수를 사용하여 디코더의 출력을 조정할 수 있습니다. 예를 들어, CVAE는 먼저 얼굴 이미지의 대규모 데이터 세트를 학습한 다음 지도 학습을 사용하여 '턱수염'에 대한 잠재 인코딩을 학습하여 턱수염이 있는 얼굴의 새 이미지를 출력할 수 있습니다.

VAE와 GAN 비교

VAE는 특히 이미지의 경우 학습 데이터와 유사한 샘플을 생성하는 데 사용되는 또 다른 모델 아키텍처인 생성형 적대 신경망(GAN)과 자주 비교됩니다.

VAE와 마찬가지로 GAN은 학습 데이터 세트의 이미지와 유사한 이미지 샘플을 출력하는 생성기 네트워크와 특정 이미지가 학습 데이터의 '진짜' 이미지인지, 생성기 네트워크의 '가짜' 이미지인지를 판단하는 판별기 네트워크의 두 가지 신경망을 결합한 공동 아키텍처입니다.

두 네트워크는 제로섬 게임에서 적대적으로 학습됩니다. 판별기의 피드백은 판별기가 더 이상 실제 샘플과 가짜 샘플을 구별할 수 없을 때까지 생성기의 출력을 개선하는 데 사용됩니다.

이미지 합성의 경우에는 둘 다 장단점이 있습니다. GAN은 더 선명한 이미지를 생성하지만 두 복합 모델 간의 상충되는 트레이드 오프로로 인해 학습이 불안정합니다. VAE는 쉽게 학습시킬 수 있지만 학습 데이터의 '평균' 특징에서 이미지를 생성하는 특성상 더 흐릿한 이미지를 생성하는 경향이 있습니다.
  

VAE-GAN
VAE-GAN은 이름에서 알 수 있듯이 변형 자동 인코더(VAE)와 생성형 적대적 네트워크(GAN)를 결합한 하이브리드입니다. VAE 모델의 재구성 손실 조건을 판별기 네트워크로 대체하여 VAE 생성 이미지의 흐릿함을 줄입니다.

관련 솔루션
IBM watsonx.ai™

생성형 AI, 파운데이션 모델, 머신 러닝 모델을 쉽게 훈련, 검증, 조정 및 배포할 수 있으며 적은 데이터로 짧은 시간 내에 AI 애플리케이션을 구축할 수 있습니다.

watsonx.ai 살펴보기

리소스 오토인코더란 무엇인가요?

다양한 종류의 오토인코더에 대해 자세히 알아보고 데이터를 효율적으로 인코딩하는 기능이 어떻게 다양한 사용 사례에 도움이 되는지 알아보세요.

차원 축소

복잡한 데이터 세트의 필수 특징을 유지하면서 예측 변수의 수를 줄이는 기타 차원 축소 기법에 대해 자세히 알아보세요.

생성형 AI란 무엇인가요?

사용자의 프롬프트나 요청에 따라 텍스트, 이미지, 동영상, 오디오 또는 소프트웨어 코드와 같은 창작 콘텐츠를 생성할 수 있는 모델에 대해 더 자세히 알아보세요.

다음 단계 안내

AI 빌더를 위한 차세대 엔터프라이즈 스튜디오인 IBM watsonx.ai로 생성형 AI, 파운데이션 모델 및 머신 러닝 기능을 학습, 검증, 조정 및 배포하세요. 적은 데이터로 짧은 시간 내에 AI 애플리케이션을 구축하세요.

watsonx.ai 살펴보기 라이브 데모 예약하기
  翻译: