다시 이음

딥러닝(12) - Autoencoder 본문

AI 일별 공부 정리

딥러닝(12) - Autoencoder

Taeho(Damon) 2021. 11. 4. 00:11

안녕하세요.

 

오늘은 오토인코더(Autoencoder)에 대해서 알아보려고 합니다.

 

어제 배운 U-net과는 구조를 볼때는 크게 다르지 않아서 이해하는 데에는 어렵지 않을 것입니다.

 

그러나, 분명히 U-net,FCN과는 여러가지 다른점이 있다는 점을 염두하시고 보시면 이해가 잘되실 것 같습니다.

 

 

Autoencoder

 

AutoEncoder의 가장 큰 특징은 Input과 output이 같다는 것 입니다. -> 이 말은 곧 따로 Label이 필요하지 않다는 것입니다.

Label이 필요없는 비지도학습에서 지도학습으로 문제를 바꾸어 해결하는 것으로 볼 수 있습니다. (Why? input 데이터가 곧 label이 되기입니다.)

 

Autoencoder의 구조

위의 그림을 통해 Autoencoder의 구조를 살펴볼 수 있는데요.

 

구조의 모양이 U-net,FCN과 비슷합니다. 그러나 다른 점이 있다면 목적의 다름을 확실히 알아두어야 합니다.

 

U-net에서는 input 이미지 데이터의 특징을 추출하여 input 이미지를 분할(인식)하는 것이 목적입니다.

그러나 Auto encoder에서는 label이 없기 때문에  최대한 똑같은 원본을 만드는 것과 효율적인 차원축소가 목적입니다. 

 

❄️ 구조가 같은 U-net, autoencoder는 같은 일을 할 수 있나요?

아니요. 위에서 처럼 구조는 같지만 모델이 만들어진 목적이 다릅니다.

 

- 훈련 방법

 

autoencoder는 input을 더 작은 feature(Latent representation)로 압축(차원축소,특징추출)을 했다가, 복원하는 과정으로 훈련을 합니다.

손실함수(Loss function)에서 입력과 출력의 차이를 이용하기 때문에 출력은 입력과 최대한 근사하게 복제됩니다.

 

 

- Auto encoder의 특징

 

디코더 부분에서 U-net과 같이 skip-connection단계적으로 upsampling과정을 거치지는 않습니다. (이미지 크기를 맞추는 것에 집중합니다.)

 

그러나, U-net과 같이 input 이미지 크기와 output 이미지 크기가 똑같아야 합니다.

 

 

- Stacked AE

 

말그대로 Autoencoder를 중첩하여 사용하는 모델입니다.

 

예를 들어보면, 입력값이 300인 데이터를 100(latent1)으로 줄이고 다시 300으로 되돌리는 AE_1을 만들어 봅니다.

여기서 우리는 차원이 축소된 feature 100(latent1)를 구함과 동시에 가중치(w1)를 구할 수 있습니다.

 

두번째로 구한 100(latent2)에서 다시 50으로 줄이고 100으로 돌아가는 AE_2를 설정합니다.

위와 같이 50(latent2)와 가중치(w2)를 구합니다.

 

이런 식으로 가중치를 따로 구하여 AE를 중첩하고, 구한 가중치로 초기 가중치의 값을 초기화(Initialization)시켜주면 처음부터 300,100,50으로 이어지는 Deep AE보다 연산량이 줄어들고 과적합을 방지할 수 있습니다.

 

 

- Autoencoder의 활용

 

1) 노이즈 제거(Denoising Autoencoder)

 

노이즈 제거가 가능한 이유는 무엇일까요?

 

그 이유는 AE의 목적에 있습니다. AE의 목적이란, latent representation을 생성하기 위해 차원을 축소하고 이미지 특징을 압축 하는 것입니다.

 

이렇게 이미지의 핵심을 압축하면 입력데이터가 어느정도 손상되어 있더라도 이미지를 복구할 수 있습니다.

 

특징으로는 입력데이터에 노이즈를 준 값을 넣습니다.

 

2) 이상현상 발견(이상탐지)

 

정상 데이터를 오토인코더를 통하여 원래의 데이터보다 작은 차원의 잠재 공간(latent space)로 압축 후에 다시 복원하고, 복원된 데이터와 원본 데이터의 차이를 비교함으로써 이상 탐지를 수행하는 방법입니다. 

 

이도 AE의 특징을 활용하여 적용되는 방식으로 정상데이터 만을 통해서 만들어진 복원데이터와 원본 데이터를 n차원 좌표 공간 안의 점들로 간주하고, 그 두 점의 거리를 입출력 차이의 지표로 사용하는 방식입니다. 이 지표를 복원 오차(reconstruction error)라고 부릅니다.

 

이상탐지 오토인코더는 비정상 데이터가 입력될 경우에는 압축과 복원을 효과적으로 수행하지 못합니다. 따라서, 이상 데이터들은 큰 복원 오차를 가지게 됩니다.  

 

복원 오차는 주어진 데이터의 이상 정도를 나타내는 이상 점수(anomaly score)의 하나로 사용할 수 있으며, 이상 점수가 정해진 임계값(threshold)보다 큰 경우에는 데이터를 이상으로 간주하며, 작은 경우에는 정상으로 간주합니다. 임계값은 수행하고자 하는 이상 탐지의 세부적인 특징과 요구 조건에 따라 다르게 설정됩니다. (이전에 배웠던 recall, precision과 관련됩니다.)

 

 

 

참고 : https://www.makinarocks.ai/ko/blog/view/750 

https://deepinsight.tistory.com/126

https://dataplay.tistory.com/34

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=laonple&logNo=220949087243