본문 바로가기

데이터 다루기/신경망

[신경망] 7. 오토인코더 (AutoEncoder) (1)

728x90
반응형

안녕하세요, 이번 포스팅에서는 오토인코더에 대해서 배워보도록 하겠습니다.

https://excelsior-cjh.tistory.com/187

 

오토인코더는 위의 그림에서 보시다시피 입력값을 받아들여, 같은 크기로 출력합니다. 하지만 히든 레이어에 존재하는 노드의 수가 Input 과 Output 노드 보다 작은것을 볼 수 있습니다. 이는 쉽게 말해서 데이터를 압축한다고 할 수 있습니다. 출력되는 데이터의 개수가 입력되는 데이터의 개수와 같은데 압축된다는 것이 잘 이해가 안될 수 있습니다. 예를 들어서, 사람 얼굴은 인식하는 데 있어서 본래에는 눈 코 입 귀가 전부 Feature로 사용될 때, 만약 귀에 대한 Feature가 얼굴 인식에서 필요가 없다면 오토인코더를 통해서 귀에 대한 Feature을 없앨 수 있습니다.

오토인코더는 머신러닝에서 PCA와 비슷한 역할을 한다고 생각하시면 이해하기 쉬울 것입니다.

이제 오토인코더가 자주 쓰이는 이유에 대해 알려드리도록 하겠습니다.

1. 데이터 압축

데이터 압축이란 메모리 측면에서의 장점입니다. AutoEncoder를 이용하여 이미지나 음성 파일을 중요 Feature만 가지고 압축할 경우, 용량도 작고 품질도 더 좋다고 합니다.

2. Curse of dimensionality

일명 차원의 저주라고 불리는 문제를 예방할 수 있습니다. 예를 들어서, 1,2, ..., 10의 값을 가질수 있는는 X1에 대하여 8개의 관측치가 있다고 생각해봅시다. 이 경우 데이터의 밀도는 0.8로 어느정도 높은 값을 가집니다. 하지만 X1, X2, X3로 3차원으로 넓히게 되면 데이터가 가질 수 있는 분포가 10X10X10=1000개가 되서 밀도는 0.008로 매우 작아지게 됩니다. 이처럼 데이터의 차원이 증가할수록 모델추정에 필요한 샘플 데이터의 개수가 기하급수적으로 증가하게 되는 것을 차원의 저주라고 합니다.

AutoEncoder는 Feature의 수를 줄여줌으로써, 데이터의 차원이 감소하여 차원의 저주를 피하게 할 수 있게됩니다.

3. Discovering most important features

AutoEncoder는 unsupervised learning으로 자동으로 중요한 Feature를 찾아줍니다.

예를 들어서, 숫자 인식하는 문제에서 숫자의 두께나, 회전각도, 크기와 같은 중요한 Feature를 자동으로 찾아주게 됩니다.

https://www.slideshare.net/NaverEngineering/ss-96581209

 

특히, A1과 A2중에 B와 가까운 것이 무엇이냐는 질문에, Raw data에서 본다면 A1이 가깝지만, 실제로 중요한 Feature에 대해서는 A2가 가까운 것으로 나타납니다. 이처럼 고차원 공간에서의 거리는 아무런 의미가 없을 수 있습니다. 따라서 중요한 Feature인 Manifold를 잘 찾아내는 것이 중요합니다. AutoEncoder가 이 때문에 각광을 받고 있는것입니다.

반응형