[TIL] AutoEncoder

hyewon·2022년 1월 4일
0

TIL

목록 보기
47/59

AutoEncoder

AutoEncoder는 입력 데이터를 저차원의 벡터(=Latent Vector, 잠재 벡터)로 압축한 뒤 원래 크기의 데이터로 복원하는 신경망이다.
Latent Vector는 원본 데이터보다 차원이 작지만 원본 데이터의 특징을 잘 보존하고 있는 벡터이다.

위의 구조를 보면 AutoEncoder는 Encoder와 Decoder로 이루어져있다. 인코더는 차원을 축소시키고 데이터의 특징을 추출해내고, 디코더는 차원을 복구시키는 일을 한다.
디코더에서 굳이 다시 차원을 복구시키는 이유는 인코더가 입력 데이터의 특징을 추출하고 차원을 줄였을 때 특징을 잘 추출했는지 모르니까 다시 복구 시켜서 입력 데이터와 복구된 데이터를 비교함으로써 축소가 잘 됐는지 확인하는 것이다.

활용 예시

AutoEncoder를 이용해서 노이즈가 있는 이미지에서 노이즈를 제거해줄 수도 있다. 노이즈를 제거하기 위해서는 원본 데이터셋과 원본에 노이즈 효과가 적용된 데이터셋이 필요하다.
입력 데이터는 노이즈가 있는 데이터를, 타겟 데이터는 원본 데이터를 넣어주면 된다. AutoEncoder는 노이즈를 중요한 특성이라고 생각하지 않기 때문에 노이즈를 학습하지 않고 원본 이미지의 쉐입을 학습한다. 단, 과적합이 되면 노이즈를 학습할 수도 있다.



AutoEncoder는 이상치를 탐지할 때도 사용할 수 있다. AutoEncoder는 Latent vector에서 원본 데이터로 복원할 때 발생하는 오류인 복원 오류(Reconstruction Error)를 최소화하도록 훈련된다.
이를 이용해서 정상 데이터로만 AE를 학습시킨 후에 비정상 데이터를 넣으면 복원 오류가 커지게 된다. 이때 복원 오류가 특정한 임계값을 초과한다면 해당 데이터를 비정상 데이터로 판단할 수 있는 것이다.

profile
우당탕탕 코린이

0개의 댓글