AutoEncoder란?

Auto Encoder란 입력 데이터를 압축시켜 압축시킨 데이터로 축소한 후 다시 확장하여 결과 데이터를 입력 데이터와 동일하도록 만드는 일종의 딥 뉴럴 네트워크 모델이다. Auto Encoder는 입력 데이터를 일종의 Label(정답)로 삼아 학습하므로 Self-supervised Learning 이라고 부르기도 하지만 어쨋거나 y값이 존재하지 않으며 이용하지 않는다는 점에서 Unsupervised Learning으로 분류되는 모델

 

AutoEncoder 구조

오토인코더는 위의 그림에서 볼 수 있듯이 항상 인코더(encoder)와 디코더(decoder), 두 부분으로 구성되어 있다.

  • 인코더(encoder) : 인지 네트워크(recognition network)라고도 하며, 입력을 압축한다.
  • 디코더(decoder) : 생성 네트워크(generative nework)라고도 하며, 압축된 표현을 다시 입력으로 복원한다.

수식

  • Input data를 encoder network에 통과시켜 압축된 z(latent space)값을 얻는다.
  • 압축된 z vector로부터 Input Data와 같은 크기의 출력 값을 생성한다.
  • 이때 Loss값은 입력값x와 Decoder를 통과한 y값의 차이이다.

학습방법

  • Decoder Network를 통과한 output layer의 출력 값은 input값의 크기와 같아야 한다.
  • 학습을 위해서 출력값과 입력값이 같아져야 한다.

다시 말해, 입력데이터를 압출시켜 압축 시킨 데이터로 축소한 후에 다시 확장하여 결과 데이터를 입력 데이터와 동일하도록 만드는 과정이며, Unsupervised Learning으로 분류된다.
이때 압출시키는 부분은 Encoder라고 하며, 확장시키는 부분은 Decoder라고 한다.

 

오토인코더에서는 필연적으로 정보의 손실이 일어나지만 이는 중요한 정보만 남겨두는 일종의 데이터 가공이라고 볼 수 있습니다. 이런 특징으로 인해 오토인코더는 주로 복잡한 비선형 데이터의 차원을 줄이는 용도로 쓰인다.

 

Stacked Auto Encoder

AutoEncoder는 보통 Stacked Auto Encoder구조로 많이 활용되며, 대칭적 구조이다.

input layer의 입력데이터를 압축시켜 가장 대표적인 특성을 추출하 층이 Encoded Layer에 있는 노드들이다. 이 층이 압축된 데이터를 갖고 있는 layer이며, 결과 데이터가 입력 데이터와 얼마나 동일하게 출력할 것인가를 결정하는 역할이다.

 

AutoEncoder 응용 분야

오토인코더의 주요 응용 분야는 차원축소, 이상 감지(anomaly detection) 또는 이미지 노이즈 제거(image denoising)이다. 오토인코더의 작업이 매니폴드 즉 주어진 데이터 매니폴드에 있는 데이터를 재건하는 것임을 알고 있고, 오토인코더가 해당 매니폴드 안에 존재하는 입력만 재건할 수 있기를 원한다. 따라서 우리는 모델이 훈련 중에 관찰한 것들만을 재건할 수 있도록 제한하고, 따라서 새로운 입력에 존재하는 어떠한 변화(variation)도 제거되는데, 왜냐하면 이 모델은 이러한 미세한 변화perturbations에 영향을 받지 않을 insensitive 것이기 때문이다.

'딥러닝 이론' 카테고리의 다른 글

Knowledge Distillation  (0) 2022.11.16
Loss landscape / Flat Minima & Sharp Minima  (1) 2022.10.04
Meta Learning  (0) 2022.08.22
*NAS(neural architecture search)  (0) 2022.07.28
*Transformer  (0) 2022.07.06

+ Recent posts