본문 바로가기
ML & DL/Study

AutoEncoder (3) : AE, DAE

by 별준 2021. 2. 15.
- Reference
Slide : https://www.slideshare.net/NaverEngineering/ss-96581209
강의(youtube) :
(1/3) https://www.youtube.com/watch?v=o_peo6U7IRM&ab_channel=naverd2
(2/3) https://www.youtube.com/watch?v=rNh2CrTFpm4&ab_channel=naverd2
(3/3) https://www.youtube.com/watch?v=LeVkjCuUdRs&ab_channel=naverd2

Naver 이활석님의 'AutoEncoder의 모든 것'이라는 강의를 바탕으로 학습하여, 개인적으로 정리하였습니다.


이번 글에서 드디어 AutoEncoder(AE)에 대해서 알아보도록 하겠습니다.

 

AutoEncoder

오토인코더의 구조는 위와 같습니다. 여기서 입력으로 들어온 데이터를 인코딩하여 z로 나타내는데, z를 Code, Latent Variable, Feature, Hidden representation 등 여러가지로 표현합니다. 입력을 인코딩하여 다른 Representation으로 나타내기 때문에 오토인코더를 Representation Learning(Efficient coding learning)이라고 할 수 있습니다.

 

오토인코더는 입출력이 동일한 네트워크입니다. 따라서 output layer는 input layer와 같은 크기를 갖습니다.

입출력이 동일한 네트워크이기 때문에 Loss는 output이 input과 얼마나 유사한지 비교하며,

Unsupervised learning을 supervised learning 문제로 바꿔서 해결합니다.

 

따라서, 오토인코더는 다음과 같은 과정으로 학습이 진행됩니다.

- Input Data를 Encoder Network에 통과시켜 압축된 Latent Vector z를 얻습니다.

- 압축된 z vector를 Decoder Network에 통과시켜 Input Data와 같은 크기의 output을 출력합니다.

- Input과 Output의 Loss를 계산하는데, 이때 Loss는 Input과 Output의 차이입니다. -> 즉, AE의 학습은 Output을 Input으로 복원하는 작업이라고 생각하면 됩니다.

 

오토인코더에서는 Input과 Output이 같도록 학습하기 때문에, 디코더는 최소한(적어도) 학습에 사용한 데이터는 잘 생성할 수 있습니다.

(하지만, 생성된 데이터는 학습 데이터와 유사하다고도 할 수 있습니다.)

또한, 인코더는 최소한 학습 데이터는 latent vector로 잘 표현할 수 있습니다. 이 때문에 데이터의 추상화를 위해서 많이 사용됩니다.

위와 같은 특징들을 살펴보면, 오토인코더는 새로운 데이터라기 보다는 학습 DB와 유사하다고 볼 수 있으며, 오토인코더의 단점이라고 할 수 있습니다.

(하지만 최소한의 성능은 보장합니다. GAN은 학습이 어렵기 때문에 이를 보장하지 못합니다.)

 

Denosing AutoEncoder(DAE)

DAE는 구조는 일반적인 오토인코더와 동일하지만, 입력 데이터를 주입할 때 차이가 있습니다.

바로 입력에 노이즈(random noise)를 추가해서 네트워크를 통과시키고, 그 output이 노이즈가 추가되지 않은 입력과 같도록 학습합니다. 그리고 이 때의 Loss를 Reconstruction error라고 합니다.

 

다시 설명하면, 입력에 노이즈를 추가해서 네트워크를 통해서 데이터를 압축하고, 그 데이터를 다시 복원하면 노이즈를 추가하지 않은 입력 데이터로 복원된다는 것입니다. 따라서, 노이즈를 제거하기 때문에 Denosing AutoEncoder라고 부릅니다.

 

매니폴드(manifold) 학습 관점에서 다시 살펴보면, 매니폴드를 잘 찾았다는 것은 feature를 잘 찾았다는 것이고, 즉, 복원했을 때 원본의 데이터를 잘 복원하게 됩니다. 여기서 Feature를 잘 찾았다는 것은 의미적으로 잘 찾았다는 것입니다.

그래서 사람이 봤을 때 원본 데이터로 알아볼 정도 만큼의 노이즈를 추가했다면, 매니폴드로 압축했을 때 결국에는 노이즈를 추가하지 않은 원본 데이터의 매니폴드와 동일하게 될 것입니다.

(노이즈를 추가했더라도 의미적으로는 동일하기 때문에) / (논문은 이러한 가정을 통해서 진행되었다고 합니다.)

 

 

아래의 게시글은 제가 여러가지 구조로 오토인코더를 구현해본 내용들입니다.

2020/11/25 - [ML & DL/tensorflow] - AutoEncoder(오토인코더) - MNIST dataset 사용

 

AutoEncoder(오토인코더) - MNIST dataset 사용

MNIST dataset을 사용해서 여러 모델로 오토인코더를 구성해보았습니다. 내용은 아래 사이트를 참조하였습니다. keraskorea.github.io/posts/2018-10-23-keras_autoencoder/ 케라스로 이해하는 Autoencoder Buildi..

junstar92.tistory.com

 

댓글