본문 바로가기
공부자료/Deep Learning

변형 오토인코더

by mogazi 2022. 9. 26.
  • 오토인코더란?

 

오토인코더는 단순히 입력을 출력으로 복사하는 신경망으로 은닉층(혹은 병목층이라고도 함)의 노드 개수가 입력 값보다 적은 것이 특징이다. 

따라서 입력과 출력이 동일한 이미지라고 예상할 수 있다. 

 

 

하지만 왜 입력을 출력으로 복사하는 방법을 사용할까? 

 

 

바로 은닉층 때문이다. 

오토인코더의 병목층은 입력과 출력의 뉴런보다 훨씬 적다. 

즉, 적은 수의 병목층 뉴런으로 데이터를 가장 잘 표현할 수 있는 방법이 오토인코더이다. 

 

 

 

 

 

 

 

오토인코더는 네 가지 주요 부분으로 구성된다.

 

 

1. 인코더

 

인지 네트워크(recognition network)라고도 하며, 특성에 대한 학습을 수행하는 부분입니다.

 

 

2. 병목층(은닉층)

 

모델의 뉴런 개수가 최소인 계층입니다. 이 계층에서는 차원이 가장 낮은 입력 데이터의 압축 표현이 포함됩니다.

 

 

3. 디코더 

 

생성 네트워크(generative network)라고도 하며, 이 부분은 병목층에서 압축된 데이터를 원래대로 재구성(reconstruction)하는 역할을 합니다. 

즉, 최대한 입력에 가까운 출력을 생성하도록 합니다.

 

 

4. 손실 재구성

 

오토인코더는 다음 그림과 같이 입력층과 출력층의 뉴런 개수가 동일하다는 것만 제외하면 일반적인 다층 퍼셉트론(Multi-Layer Perceptron, MLP)과 구조가 동일합니다. 

오토인코더는 압축된 입력을 출력층에서 재구성하며, 손실 함수는 입력과 출력(인코더와 디코더)의 차이를 가지고 계산합니다.

 

 

 

 

 

 

 

 

입력 x와 출력 y는 같은 차원(Rd)에 존재한다는 가정하에 입력 데이터를 인코더 네트워크에 통과시켜 압축된 잠재 벡터 z 값을 얻는다.. 

이때 z를 구하는 공식은 다음과 같다.

 

 

 

압축된 z 벡터에서 입력 데이터와 크기가 같은 출력 값을 다음과 같이 계산한다.

 

 

 

이때 손실(loss) 값은 입력 값 x와 디코더를 통과한 y 값의 차이로 다음과 같이 계산한다.

 

 

 

 

 

즉, 디코더 네트워크를 통과한 출력 값은 입력 값의 크기와 같아야 한다.

 

 

-오토인코더의 인코더와 디코더

 

 

 

 

 

 

 

 

 

  오토인코더의 중요성

 

 

1. 데이터 압축

 

데이터 압축은 메모리 측면에서 상당한 장점입니다. 오토인코더를 이용하여 이미지나 음성 파일의 중요 특성만 압축하면 용량도 작고 품질도 더 좋아집니다.

 

 

2. 차원의 저주(curse of dimensionality) 예방

 

차원의 저주 문제를 예방할 수 있습니다. 오토인코더는 특성 개수를 줄여 주기 때문에 데이터 차원이 감소하여 차원의 저주를 피할 수 있습니다.

 

 

3. 특성 추출

 

오토인코더는 비지도 학습으로 자동으로 중요한 특성을 찾아 줍니다. 예를 들어 눈 모양, 털 색, 꼬리 길이 등 개의 중요한 특성을 자동으로 찾아 준다.

 

 

 

 

 

 

 

 

 

 

 

  • 변형 오토인코더(variational Autoencoder)

 

 

변형 오토인코더를 좀 더 쉽게 이해할 수 있게 오토인코더와 비교하면서 설명하겠다. 

오토인코더는 다음 그림과 같이 입력(숫자 2) → 인코더→ 압축(차원 축소)→ 디코더→ 출력(숫자 2)이 나오게 하는 방법이다.

 

 

 

오토인코더는 차원을 줄이는 것이 목표이기 때문에 데이터가 생성된 확률 분포에는 관심이 전혀 없다.

 

 

 

 

반면 변형 오토인코더는 표준편차와 평균을 이용하여 확률 분포를 만들고, 거기에서 샘플링하여 디코더를 통과시켜 데이터를 다시 만들어 낸다. 

 

 

 

 

즉, 변형 오토인코더는 입력 데이터와 조금 다른 출력 데이터를 만들어 내는데, 이때 z라는 가우시안 분포를 이용합니다. (z를 잠재 벡터(latent vector)라고 한다).

 

중요한 특성의 파라미터를 담고 있는 z 분포에서 벡터를 랜덤하게 샘플링하고 이 분포의 오차를 이용하여 입력 데이터와 유사한 다양한 데이터를 만들어 내는 것이 변형 오토인코더이다.

 

 

 

 

* 참고  잠재 벡터 : 잠재 공간에 위치한 벡터를 잠재 벡터라고 하며, 잠재 공간상의 점 하나를 표현 벡터(representation vector)라고 합니다.

 

 

 

 

 

 

오토인코더는 데이터 벡터에 대한 차원을 축소하여 실제 이미지와 동일한 이미지를 출력하는 것이 목적이었다면, 

변형 오토인코더는 데이터가 만들어지는 확률 분포를 찾아 비슷한 데이터를 생성하는 것이 목적이다.

 

 

- 변형 오토인코더의 인코더와 디코더

 

 

 

 

 

- 변형 오토인코더의 인코더 상세

 

 

 

 

 

 

 

 

 

이렇게 구해진 z는 디코더 네트워크의 입력으로 사용된다.

 

 

 

 

 

 

 

- 변형 오토인코더의 디코더 상세

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

①항은 z가 주어졌을 때 x'를 표현하기 위한 확률밀도 함수로 디코더 네트워크를 나타낸다. 

즉, 디코더 네트워크의 가능도(likelihood)가 크면 클수록 θ가 그 데이터를 잘 표현한다고 해석할 수 있다. 

따라서 ①항이 크면 클수록 모델 가능도가 커진다.

 

 

 

②항은 x에서 z를 표현하는 확률밀도 함수로 인코더 네트워크와 가우시안 분포가 얼마나 유사한지 나타낸다. 

유사한 정도가 높을수록 쿨백-라이블러 발산(Kullback–Leibler Divergence, DKL)은 낮은 값을 나타내므로, 

인코더 네트워크가 가우시안 분포를 최대한 잘 표현할 수 있도록 가능도가 최대화된다. 

따라서 ②항이 작을수록 모델 가능도가 커진다.

 

 

 

* 참고 쿨백-라이블러 발산 : 두 확률 분포의 차이를 계산하는 데 사용하는 함수입니다. 

딥러닝 모델을 예로 들면, 수집된 데이터 분포 P(x)와 모델이 추정한 데이터 분포 Q(x)의 차이를 구할 때 사용합니다.

 

'공부자료 > Deep Learning' 카테고리의 다른 글

GAN 파생 기술  (0) 2022.09.26
적대적 생성 신경망  (0) 2022.09.26
생성 모델  (0) 2022.09.26
큐러닝  (0) 2022.09.26
마르코프 결정 과정  (0) 2022.09.26