오토인코더

Yeju Ham
3 min readJul 7, 2021

--

-오토 인코더

오토인코더는 ‘출력=입력’을 학습시키는 신경망이다. input 데이터(X)를 받아 축소시켜 중간의 code(latent represent/Z)에 저장을 하고(차원이 input보다 당연히 더 작다)이 저장된 latent가 디코더를 거쳐 원래의 입력값으로 복원을 한다. 이 때 복원값을 X^이라고 하자. 역전파학습은 보통 출력값X^와 라벨값의 차이를 바탕으로 해 loss function을 세우고 학습이 일어나는데, 문제는 loss function에서 처리할 라벨값이 없다. 그래서 오토인코더에서는 입력값 X와 출력값 X^을 비교한다. 따라서, CNN 레이어를 통과시켜 얻어낸 피쳐가 라벨이 없더라도 구별할 수 있기에 비지도 학습에 유용하게 사용된다.

-학습과정

학습과정에서 Latent는 X(인풋정보)의 매우 중요한 정보만 가지고 있는 상태로 줄어든다. 이 줄어든 정보가 인풋을 대표할 수 있을만한 정보라고 하여 latent representation라고도 불린다. 이 latent representation은 데이터의 정보량이 많은 부분, 혹은 대표적인 속성을 우선적으로 학습하게 된다. 그렇기 때문에 복원생성에 적합하다. 다시 복원할 시에 우선적으로 학습했던 매우 중요하고 대표적인 속성들에 기반하여 복원하고 차수를 거듭하며 더 근사한 이미지로 복원하기 때문이다. (Reconstructed input data)

x가 latent로 갈 때는, 용량을 줄이고 속도를 높이는 목적과, 줄어들면서 중요한 부분을 학습하는 목적이 있다. (어떤 특징이 강아지인지 학습) 학습할 때엔 노이즈를 좀 넣어주는데 그 이유는 좀 더 일반화를 잘 시키기 위해서이다. 약간 노이즈가 있는 데이터가 들어오더라도 아웃풋에는 노이즈가 없이 잘 정돈된 데이터가 나와야 하기 때문이다. 이를 훈련시키기 위해 일부러 노이즈를 넣어준다.

이 오토인코더가 사용되는 데엔 bottleneck에서 정보 손실이 일어나는 때인데 즉 필요한만큼의 차원보다 inner dimension이 작을 때 일어난다.
그래서 하는게 denoising input 인풋을 블러처리하고 어떻게 노이즈를 제거할지 본다.
error = decoder(encoder(x+noise))-x
차원이 줄어들었다가 다시 복원되면서 노이즈 같은 중요도가 낮은 정보는 사라지고 객체같이 중요도가 높은 정보는 살아 남는다.

-사용분야

중요한 특징을 뽑아내기 위한 feature extraction/ 노이즈 제거(중요한 것만 뽑아내도록)/이상치 탐지/
이상 행동 패턴 분석/패키지 외관 분석 등. 결론적으로 특징적인 것을 찾아내는 것이 주요기능이고, 그 특징적인 것을 가지고 있지 않는 것을 이상치로 인식하기 때문에 이상치발견에 사용하기도 한다.

--

--

Yeju Ham

learner, writer, traveler, data science beginner with the whole passion