-
AutoEncoder 개념 및 종류Data Science/ML&DL 모델 2022. 10. 31. 00:12반응형
1. AutoEncoder(오토인코더) 개념
AutoEncoder는 입력된 데이터를 압축시킨 후 다시 원본과 유사하게 복구하는 모델이다.
크게 Encoder, Decoder, Latent Representation으로 이루어져있다.
Encoder는 입력된 데이터를 Latent Representation으로 압축시킨다.
이때 Latent Representation의 dimension(차원)은 입력데이터보다 작다.
Decoder는 Latent Representation으로 압축된 데이터를 다시 원본 데이터 사이즈로 복구한다.
이때 우리의 목적은 Dimensionality Reduction이다.
아래 그림을 통해서 더 자세히 설명한다.
28*28 이미지를 Flatten하여 784 길이의 벡터로 만들어 입력값으로 사용한다.
Encoder에서는 세번에 걸쳐서 데이터의 차원을 압축한다. (784 =>500, 500=>300, 300=>2)
따라서, Latent Dimension은 2이다.
Decoder는 반대로 세번에 걸쳐서 데이터의 차원을 복구한다. (2=>300, 300=>500, 500=>784)
이를 수식으로 나타내면 아래와 같다.
입력 데이터의 차원 정보 : \(D\)
Latent Dimension : \(d\)
입력 데이터 : \( ( x_{1}, x_{2}, ... x_{D}) \)
Latent Representation: \( ( z_{1}, z_{2}, ... z_{d}) \)
출력 데이터 : \( ( x'_{1}, x'_{2}, ... x'_{D}) \)
Encoder : \(z = f(x)\)
Decoder : \(x' = g(z)\)
별도의 정답값(class 또는 label)이 존재하지 않고 원본 데이터를 Latent Representation로 압축했다 복구하는 모델이기에 비지도학습이다.
$$min(\left\|x - g\cdot f(x) \right\|)$$
2. AutoEncoder를 이용한 차원감소(Dimension Reduction by AutoEncoder)
AutoEncoder가 잘 학습되었다면 Latent Representation가 데이터의 중요 특징을 잘 설명하고 있기에 차원감소(Dimension Reduction) 기법으로도 사용될 수 있다.
학습된 AutoEncoder에서 Encoder 부분만 사용하여서 계산된 Latent Representation를 사용하는 것이다.
대표적인 차원감소 기법인 주성분분석(PCA, Principal component analysis)은 선형적 기법인 반면에 AutoEncoder는 비선형적인 차원감소 기법이다.
3. AutoEncoder를 이용한 데이터 생성(Data Generation by AutoEncoder)
AutoEncoder가 잘 학습되었다면 Latent Representation로부터 원본데이터와 최대한 유사하게 데이터를 복구할수 있기에 데이터 생성 기법으로도 사용될 수 있다.
학습된 AutoEncoder에서 Decoder 부분만 사용하여서 임의의 Latent Representation을 입력하여 새로운 데이터를 얻어내는 것이다.
단, 원본 데이터의 차원수가 커질수록 AutoEncoder가 모든 데이터 분포에 대해서 완전히 학습하기 힘들기 때문에, 의미없는 데이터가 생성될 위험성을 가지고 있다.
4. AutoEncoder에서의 과적합(Overfitting)
AutoEncoder는 비지도학습이지만 과적합이 발생할수 있다.
이때 우리는 Encoder가 잘 학습되어서 최적의 Latent Representation를 얻어내는 것을 원한다.
데이터가 부족할 경우 적절한 Latent Representation를 얻지 못하게 되고 Decoder가 과하게 학습되게 된다.
5. Representation 관점에서의 AutoEncoder
Latent Representation의 정보를 좀더 가치있게 만드는 것이 목적
5.1 Overcomplete AutoEncoder
Latent Dimension을 입력 데이터의 Dimension보다 크게 두는 AutoEncoder
5.2 Sparse AutoEncoder(Regularized AutoEncoder)
Sparse Latent Representation : 값이 희소한 Latent Representation
(ex : [1,0,0,3,0,0] 와 같이 0이 많이 포함되어있는 Vector를 Sparse Vector라고 한다.)
동일하게 특징을 잘 설명하는 Latent Representation이라도 Sparse한것이 더 좋다는 가정.
$$min( \left\| x - g\cdot f(x)\right\| + \lambda \left\|z \right\| )$$
5.3 Denoising AutoEncoder(DAE)
AutoEncoder의 과적합을 방지하기 위해서 문제를 좀더 어렵게 만드는 기법.
기존의 AutoEncoder가 원본 데이터(x)를 입력받아서 최대한 원본과 유사한 데이터(x')를 만드는 것이었다면,
Denoising AutoEncoder는 노이즈가 추가된 데이터(noise(x))를 입력받아서 최대한 원본과 유사한 데이터(x')를 만드는 것이다.
의미없는 방향으로의 변환
$$ Encoder(X) \approx Encoder(X+\varepsilon) $$
ex : 같은 7이지만 위치가 바뀌거나, 가우시안분포 기반의 노이즈가 들어가거나
원본 데이터에 어떠한 노이즈를 적용해 데이터를 만들어낼수 있기 때문에 학습 데이터의 수를 늘릴수 있다.
Denoising을 같이 학습하기 때문에 노이즈에 강건하다.
$$min(\left\|x - g\cdot f(x+\varepsilon ) \right\|)$$
\(\varepsilon\) : 어떠한 노이즈
5.3.1 Contrastive Learning
의미있는 Representation만 배운다면 Decoder는 필요가 없다!!
Encoder만 학습하는 방법
$$\sum_{i}\left\| f(x_{i} - f(\tilde{x_{i}})) \right\|_{2}^{2} - \sum_{i\neq j}\left\| f(x_{i}) -f(x_{j}) \right\|_{2}^{2}$$
원본과 노이즈버전은 같게 Latent를 구성하고 다른 이미지일경우는 Latent를 다르게 구성하게 하는 방법
5.4 Contractive AutoEncoder(Regularizing by Penalizing Derivatives)
입력데이터 x를 소폭 변경하더라도 Latent Representation이 크게 변하지 않고 Decoder 값도 크게 변하지 않는 것
실제로 존재하는 두 객체의 사이를 잘 연결한다면 그거에 해당하는 이미지를 오토인코더로 찾아주는 것
$$min(\left\|x - g\cdot f(x) \right\|) + \Omega(z,x)$$
$$\Omega(z,x) = \lambda \sum_{i}\left\| \bigtriangledown_{x}h_{i} \right\|^{2}$$5.4.1 Contractive AE VS Denoising AE
11/1 5번째 강의 참조하기
Contractive AE : 아주 작은 크기의 값의 변화에 대해서 강건성 확보 ( 딸기의 잎 길이가 아주 조금 짧아짐 )
(실제하는 데이터들이 어떠한 선(또는 분포, manifold)위에서 존재한다고 가정했을 때, 입력 데이터가 선을 조금 벗어나게 들어오더라도 선위로 돌아가게 보정해주는 것)
Denoising AE : 어떠한 노이즈의 변화에 대해서 강건성 확보 ( 딸기가 파란색으로 변함 )
6. Generative 관점에서의 AutoEncoder
10/27-4 에 통계파트
10/28에 Generative 파트 시작
6.1 variational AutoEncoder(VAE)
표준정규분포(평균0,표준편차1)에서 임의의 noise epsilon을 샘플링하여 얻는다.
encoder로부터 얻어진 분산(val)와 평균(mu)를 사용하여서 새로운 latent vector z를 얻는다.
reparametrization trick = latent vector z = noise epsilon*val + mu
6.1.1 Conditional VAE
기존의 VAE는 Label 정보를 사용하지 않음
label 정보를 활용하여 더욱 잘 학습할수 있지 않을까?
6.2 GAN
GAN은 explicit한 모델이 아니다(분포를 학습하는 모델이 아니다)
반응형'Data Science > ML&DL 모델' 카테고리의 다른 글
R-CNN(Regions with Convolutional Neuron Networks features) 모델 개념 설명 (0) 2022.11.12 강화학습 (0) 2022.10.31 Transformer Model 개념 및 모델 구조 (0) 2022.10.28 서포트 벡터 머신(SVM,Support Vector Machine) 파이썬 구현하기(cvxpy, sklearn (0) 2022.10.14 Hierarchy Clustering(계층적 군집화) 및 Dendrogram Visualization(덴드로그램 시각화) - AgglomerativeClustering, linkage, dendrogram (0) 2022.10.05