오토인코더는 잠재벡터를 만드는 모델입니다. 오늘은 잠재 벡터와 잠재 벡터를 만드는 오토인코더에 대해 정리해보겠습니다.
오토인코더는 고차원의 입력 데이터를 저차원의 벡터로 압축한 뒤 원래 크기의 데이터로 복원하는 신경망입니다. 차원을 압축하는 인코더, 차원 압축의 결과물인 잠재벡터 그리고 원래 크기로 복원하는 디코더로 구성되어 있습니다.
Auto Encoder의 궁극적인 목적은 원본 데이터의 특징이 잘 압축된 잠재벡터를 잘 얻는 것입니다. 위 이미지에서 Code 부분이 잠재벡터에 해당합니다. 원본 데이터를 낮은 차원으로 압축하고 다시 복원하는 과정에서 원본 데이터의 특징을 최대한 보존하는 잠재벡터를 학습하게 됩니다.
중요한 건 이렇게 얻은 잠재 벡터를 어디에 활용하는지 입니다. '원본 데이터의 특징을 최대한 압축'했다는 잠재 벡터의 특징을 활용하면 크게 세 가지의 일을 할 수 있습니다.
어떻게 위의 세 가지 Task가 가능한지 살펴보겠습니다.
잠재 벡터는 원본 데이터를 저차원으로 압축한 벡터입니다. 이러한 압축 벡터를 이용하면 차원의 저주를 피할 수 있습니다. 입력 데이터의 차원을 줄인다는 점에서는 PCA와 유사합니다.
노이즈가 있는 데이터를 입력 데이터로, 노이즈가 없는 데이터를 타겟 데이터로 두고 학습을 진행하면 오토인코더는 노이즈가 없는 잠재 벡터를 만드는 방향으로 가중치를 학습합니다. 이렇게 학습된 모델은 학습 데이터와 유사한 형태의 노이즈가 있는 데이터의 노이즈를 효과적으로 제거하고 이미지의 특성만 잘 추출할 수 있습니다.
먼저 정상 데이터로 오토인코더 모델을 학습합니다. 학습을 마친 오토인코더의 잠재벡터는 정상 범주의 특징을 잘 보존하고 있는 벡터입니다. 정상 범주의 새로운 이미지를 모델에 입력하면 input 데이터와 output 데이터의 오차가 크지 않을 것입니다.
그럼 정상 범주가 아닌 이상 범주의 새로운 이미지를 모델에 입력하면 어떻게 될까요? 이상치 데이터가 입력된다면 input 데이터와 output 데이터 간의 차이 즉, 복원 오류가 커지게 됩니다. 모델 입장에서는 전혀 처음 본 이미지가 들어온 거나 다름없습니다. 이와 같이 복원 오류가 특정한 임계값을 초과할 경우 비정상 데이터가 입력되었다고 판단할 수 있습니다.