1. AutoEncoder의 개념
이번 글에서는 차원 축소, 노이즈 제거, 이상 감지 등 다양한 분야에서 활용되고 있는 AutoEncoder(오토인코더)에 대해 살펴보고자 합니다. AutoEndoer에 대해 간단히 설명해보면, 'Input을 차원 축소하여 압축시킨 이후 축소된 데이터를 다시 확장하여 Output을 Input과 최대한 동일하게 생성'하는 딥러닝 모델 중의 하나입니다. 아래의 그림을 통해 살펴보면, Encoder로 데이터를 압축시키고, Decoder로 다시 데이터를 확장시킵니다. AutoEncoder는 Input과 Output이 동일하여 y label이 따로 필요 없기 때문에, 주로 비지도 학습(Unsupervised Learning)으로 분류되며, Input이 곧 정답이므로 Self-supervised Learning으로 분류되기도 합니다.
AutoEncoder는 Input과 최대한 동일한 Output을 생성하는 알고리즘이기 때문에, Input을 그대로 전달하면 되지 굳이 왜 이 알고리즘을 사용해야 하는지 의문이 들 수 있습니다. 하지만 AutoEncoder의 핵심은 데이터가 압축되면서 생성되는 Latent Variable, 즉 내재된 정보를 얻고 이를 학습하는 데 있습니다. Input과 동일하게 데이터가 반복적으로 압축되고 확장되는 과정에서 압축된 데이터, Latent Variable은 Input 재구성에 필요한 특징만 남게 되고, 필요 없는 특징은 제거되어 결국 Input의 중요한 정보만을 갖게 됩니다. 따라서 차원 축소에도 많이 쓰이고 있으며, 노이즈 제거, 이상 탐지에 활발하게 적용되고 있는 것입니다.
차원 축소에 대해 좀 더 살펴보면, 학습이 완료된 AutoEncoder 모델에서 Encoder와 Latent Variable까지에 해당하는 과정만을 사용하여 차원 축소가 진행되게 됩니다. 차원 축소에서 주로 활용되던 PCA(주성분 분석)는 선형적으로 차원을 축소시키고, AutoEncoder는 비선형적으로 축소시킨다는 차이점이 있습니다. Kernel PCA로 PCA도 비선형적으로 차원 축소가 가능하지만 AutoEncoder가 더 좋은 성능을 보여주고 있기 때문에, 비선형 데이터가 주를 이루는 최근에는 AutoEncoder가 PCA보다 차원 축소에 있어서 활발하게 사용된다고 합니다.
2. Stacked AutoEncoder
Stacked AutoEncoder는 AutoEncoder의 일반적인 구조에서 Layer가 더 쌓인 구조를 갖습니다. 아래의 그림과 같이 중간의 Latent Variable을 기준으로 대칭이 이루어지는 것이 특징입니다. Stacked AutoEncoder는 Unsupervised pre-training으로 활용될 수 있다고 하는데, 저도 아직 해당 부분에 대해서는 공부를 하지 않았으므로 관련해서는 'https://techblog-history-younghunjo1.tistory.com/130' 블로그를 참고해주시면 감사하겠습니다.
3. Denoising AutoEncoder(DAE)
Denoising AutoEncoder(DAE)는 노이즈가 추가된 Input을 압축시키고, 원본 Input으로 재구성하는 방법입니다. 아래의 그림을 통해 살펴보면, 차원을 줄이기 전에 노이즈를 추가해줍니다. 여기서 노이즈를 추가하는 방식으로는 대표적으로 두 가지가 있는데, 1) 가우시안 노이즈(Gaussian noise)를 추가하는 방식, 2) 드롭아웃(Dropout)을 통해 일부 데이터를 삭제하는 방식이 있습니다. 이처럼 노이즈를 추가하는 이유는 학습된 모델에 입력되는 실제 데이터들은 전처리가 진행되지 않고 노이즈가 존재하는 데이터일 수 있기 때문입니다.
데이터로 예시를 살펴보면 다음과 같습니다. 노이즈가 추가되더라도 원본 이미지로 재구성되도록 학습되기 때문에, 중요한 특징은 잡아내고 이상치들은 제거된 것을 확인할 수 있습니다.
해당 글은 알고리즘이 제안된 논문을 바탕으로 작성된 것이 아니라, AutoEncoder에 대해 잘 정리해주신 여러 글들을 바탕으로 작성되었기 때문에 틀린 부분이 있을 수 있습니다. 지속적으로 공부하며 내용을 추가할 예정이며, 잘못된 부분을 발견하신다면 언제든지 댓글로 알려주시길 바랍니다.
<참고>
https://excelsior-cjh.tistory.com/187
08. 오토인코더 (AutoEncoder)
이번 포스팅은 핸즈온 머신러닝 교재를 가지고 공부한 것을 정리한 포스팅입니다. 08. 오토인코더 - Autoencoder 저번 포스팅 07. 순환 신경망, RNN에서는 자연어, 음성신호, 주식과 같은 연속적인 데
excelsior-cjh.tistory.com
https://techblog-history-younghunjo1.tistory.com/130
[ML] 데이터를 복구하는 Auto Encoder?
🔉해당 자료 내용은 순천향대학교 빅데이터공학과 김정현 교수님의 수업자료에 기반하였으며 수업자료의 저작권 문제로 인해 수업자료를 직접 이용하지 않고 수업자료의 내용을 참고하여 본
techblog-history-younghunjo1.tistory.com
https://eat-toast.tistory.com/4
Auto Encoder(개념)
오토 인코더(Auto Encoder)는 무엇일까? Input과 Output을 동일하게 만들어 주는 모델로 설명할 수 있을 것 같다. 그럼, 1. Input과 Output을 동일하게 만드는... 쓸데 없어 보이는 일을 할까? 2. 모델의 구조
eat-toast.tistory.com
'Data Science > Deep Learning' 카테고리의 다른 글
[Deep Learning] RNN (2) | 2024.02.23 |
---|---|
[Deep Learning] Word2Vec - skip-gram (0) | 2024.02.20 |
[Deep Learning] Word2Vec - CBOW (2) | 2024.02.08 |
[Deep Learning] 자연어처리(Natural Language Processing, NLP) 기초 (2) | 2024.02.07 |
[Deep Learning] Variational AutoEncoder(VAE) (2) | 2022.12.06 |
댓글