오토 인코더의 핵심 아이디어는 데이터를 압축(인코딩)한 뒤 다시 원본으로 복원(디코딩)하는 것이다.
구조가 크게 세 부분으로 나뉘는데
인코더(Encoder): 입력 데이터를 더 낮은 차원의 잠재 공간(Latent Space)으로 압축
잠재 공간(Latent Space): 병목이라고도 불리며, 원본 데이터의 핵심 특징을 함축함
디코더(Decoder): 압축된 표현을 다시 원래 데이터의 차원으로 복원
여기서 중앙에 병목이 중요하다.
낮은 차원에 맞춰서 데이터를 압축해야하니 데이터의 가장 중요하고 본질적인 특징만 정제시키는 것이다.
즉 압축 과정을 통해 오토 인코더는 데이터의 핵심 특징을 잘 표현하는 방법을 학습하게 된다.
학습 방법
오토인코더는 비지도 학습 모델이다.
학습에 레이블이 필요 없다는 것이다.
오토인코더의 학습은 원본 입력과 디코더가 복원한 출력 간의 차이를 최소화 시키는 방법으로 진행된다.
이 차이를 **재구성 손실(Reconstruction Loss)**라고 부른다.
차원을 압축한다는 측면에서 **PCA(주성분 분석)**과 비교된다.
차이가 있다면 PCA는 선형 차원 축소 기법이고, 오토인코더는 비선형 차원 축소 기법이라는 것이다.
주요 인코더 변형
잠재 공간의 차원이 입력차원보다 크거나 같으면 모델은 굳이 '압축'을 배울 필요가 없다.
그냥 입력을 그대로 복사하면 원본과 똑같은 출력이 나오기 때문이다.
하지만 오토 인코더를 쓰는 이유는 애초에 의미 있는 특징을 학습하기 위함이고,
그렇기 때문에 잠재 영역의 차원을 입력보다 낮게 설정한다.
다만 때로는 기본 방법만으로는 불충분해, 기본 구조에 제약을 추가한 변형 모델이 등장했다.
희소 오토인코더(Sparse Autoencoder)
잠재 공간(은닉층)의 차원이 입력보다 크더라도 의미 있는 특징을 학습하게 만드는게 목적이다.
모델이 입력을 인코딩할 때, 잠재 공간의 뉴런들 중 극히 일부만 활성화되도록 강제한다.
이 패널티 때문에 각 뉴런은 데이터의 특정 패턴만 반응하도록 학습된다.
즉 단순히 입력을 복사하는 것을 방지하고, 데이터의 분산된 특징을 학습 할 수 있다.
잡음 제거 오토인코더(DAE)
의도적으로 손상된 입력을 받아 깨끗한 원본을 복원하도록 학습시키는 과정을 통해
입력에 노이즈가 섞여 있어도 원본을 잘 복원하도록 강건한 특징을 학습한다.
모델은 노이즈를 제거하고 데이터의 본질적인 구조를 채워 넣는 방법을 배운다.
노이즈 제거 과정에서 데이터의 주요 특징을 학습하게 만들어 노이즈에 매우 강건해진다.
축소 오토인코더(CAE)
DAE와 유사하게 강건한 특징을 학습하지만, 다른 접근 방식을 사용한다.
입력의 작은 변화에 둔감한 불변하는 잠재 표현을 학습한다.
이미지는 섬세한 데이터다, 조명의 미세한 변화가 있더라도 데이터 적으로는 전체적인 픽셀 데이터의 변화가 일어난다.
작은 변화지만 데이터의 본질적인 구조를 학습하는데도 영향이 갈 것이다.
CAE는 재구성 손실에 축소 패널티를 추가한다.
이 패널티는 입력 데이터가 조금 변화더라도, 잠재 공간의 표현은 거의 변하지 않도록 강제한다.
즉 모델은 입력의 사소하고 관련 없는 변화는 무시하고, 데이터의 본질적인 구조를 따르도록 학습하게 된다.
변이형 오토인코더(Variational Autoencoder, VAE)
오토인코더는 데이터를 잘 압축하고 복원해서 좋은 특징을 학습하는데 중점을 둔다.
다만 이 구조를 조금 변형하면 새로운 데이터를 생성하는 모델이 되는데 바로 VAE다.
VAE의 목표는 데이터를 잘 압축/복원하는 동시에, 데이터를 생성할 수 있는 '연속적이고 잘 정돈된' 잠재 공간을 학습하는 것이다.
주요 응용분야
오토인코더는 의미 있는 특징을 학습하고 심지어 새로운 데이터를 생성(VAE)하는 등 다양한 분야에서 활용 가능하다.
차원 축소 및 데이터 시각화
가장 기본적인 활용으로 인코더 압축에 초점을 맞춰
고차원 데이터를 저차원의 잠재 공간으로 압축한다.
이상탐지
오토 인코더에서 재구성 오류를 활용하는 방법이다.
정상 데이터로만 오토 인코더를 학습시키면 오토 인코더는 정상 데이터를 매우 잘 압축하고 복원할 수 있다.
하지만 여기에 이상 데이터를 입력하면,
모델은 이전에 본 적 없는 데이터를 제대로 처리 못하고 재구성 오류가 매우 크게 나온다.
이때 이 오류값에 임계치를 설정하면 이상 데이터를 탐지 가능한 모델이 되는 것이다.
이미지 잡음 제거
DAE를 활용하는 방법으로 손상된 이미지를 인코더에 입력하고 디코더가 깨끗한 원본 이미지를 복원하도록 학습한다.
오래된 사진의 스크래치를 제거하거나, 전체적으로 노이즈가 들어간 이미지에 노이즈를 줄일 수 있다.
특징 추출
잘 학습된 인코더 부분만 떼어내 사용하는 방법이다.
인코더는 원본 데이터의 핵심 특징을 압축한 잠재 벡터를 출력한다.
이 베게터를 다른 지도 학습 모델(분류기 등)에 입력 데이터로 사용하는 방법이다.
비지도 학습을 통해 데이터의 본질적인 특징이 추출되었기에 적응 양의 레이블 데이터로 전이 학습 효과를 내는 것이다.
데이터 생성
VAE를 기반으로 우리가 흔하게 알고있는 스테이블 디퓨전과 같은 이미지 생성 모델을 생각하면 된다.
잡설
앞으로의 과정에 대한 고민으로 책을 읽어도 글씨가 들어오지 않고, 글을 써내려도 실속이 없는 것 같다.
아마 다들 고민이 많을 시기일 것 같다.