본문 바로가기

DL_general

auto encoder

정의

입력 데이터를 encoder 부분에서 최대한 압축시켜서

compressed data(=latent vector = latent variable = code = feature = bottleneck hidden layer)를

다시 decoder 부분을 통해 입력 데이터와 동일하게 복원시키는 뉴럴 네트워크 

 

unupervised learning의 일종이다. 

 

왜 이름이 auto encoder인가?

auto encoder에게 latent vector를 찾으라고 시켰을 때 결과이다. 

위 예시에서 보면 x축으로는 기울기, y축으로는 두께가 변하는 것을 알 수 있다. 

이를 통해 이 모델의 latent vector는 기울기와 두께라는 class로 정의되어 있다는 것을 알 수 있다. 

 

latent vector는 미리 알 수 있는 값이 아니다.

모델이 알아서 자동으로(auto) encoder 학습을 통해서 latent vector를 찾아준 것이다. 

그래서 고차원 벡터를 잘 표현해주는 이 모델을 auto encoder라고 부르게 된 것이다. 

 

* 목적은 의미있는 latent vector를 찾는 것이므로 encoder에 초점이 맞춰져있다. decoder는 거들뿐 

 

pca vs auto encoder

둘 다 차원을 축소한다 (=특징을 뽑아낸다)는 점에서 비슷하다. 

하지만 PCA는 데이터가 주어졌을 때 선형적으로 차원을 축소한다.

(kernel PCA라는 것을 사용하여 비선형적으로 차원축소를 할 수 있지만 보통 선형적으로 차원 축소를 한다.)

auto encoder는 데이터를 비선형적으로 차원축소를 한다는 차이점이 있다. 

 

variational auto encoder (VAE)

- 확률적 오토인코더(probabilistic autoencoder): 학습이 끝난 후에도 출력이 부분적으로 우연에 의해 결정된다.

- 생성 오토인코더(generatie autoencoder): 학습 데이터셋에서 샘플링된 것과 같은 새로운 샘플을 생성할 수 있다.

 

auto encoder의 목적은 어떤 데이터를 잘 압축하는것, 어떤 데이터의 특징을 잘 뽑는 것, 어떤 데이터의 차원을 잘 줄이는 것이다.

반면 VAE의 목적은 Generative model으로 어떤 새로운 X를 만들어내는 것이다.

즉, VAE는 generative model이다. 

 

데이터의 분포 자체를 학습한다. 

데이터셋이 encoder 쪽으로 들어가면 latent variable의 분포인 latent distribution으로 나타난다.

 

latent distribution에서 랜덤값으로 샘플링을 하면 latent distribution에 대응 되는 의미에 따라 다른 출력의 이미지를 생성하도록 할 수 있다. 

- 인풋으로 데이터를 받은 뒤 Encoder 부분에서 latent variable을 생성하도록 학습

- 이 때, latent variable로 를 생성

- 가우시안 노이즈 (0,1)과 ① latent variable 와 곱해지고 ② 와 더해져서 Decoder의 Input으로 전달되어짐

- Decoder에서는 이 값을 원본 데이터 해상도 만큼 복원시켜서 원본 인풋과 유사해지도록 학습

 

- 왼쪽처럼 하면 미분이 안되서 back propagation이 안됨(학습이 안됨) 

- 오른쪽처럼 Encoder의 출력부에서 를 출력하도록 하고 이 값의 선형 결합을 통해 가우시안 분포의 샘플링을 하도록 하면 에 대하여 미분이 가능해짐

 

examples of auto encoder

- image coloring

- image noise reduction 

- 손상된 부분을 복구

- 동일한 이미지의 파일 크기를 감소 

- water mark 제거

- 특정 물체 제거 

 

 

더보기

 

'DL_general' 카테고리의 다른 글

YOLO  (0) 2023.03.13
cosine similarity  (0) 2023.03.08
Federated learning  (0) 2023.03.06
[simplified] GAN 종류  (0) 2023.03.04
SeMask  (1) 2023.03.03