본문 바로가기

데이터 과학/딥러닝(Deep Learning)

Autoencoder 설명

출처 : 오코인코더의 모든 것(발표자 : 이활석)

영상 : www.youtube.com/watch?v=o_peo6U7IRM

PDF : www.slideshare.net/NaverEngineering/ss-96581209?from_action=save

 

Autoencoder

1. 배경 지식

1-1 DNN의 학습

1-2 Manifold 학습

2. Autoencoder


Autoencoder

- 데이터 집합의 표현(Representation)을 학습하는 것이다.

- '비선형 차원 축소'와 같은 의미

- 관련 키워드   

    - Unsupervised Learning      - 비 지도 학습, 즉 정답 데이터가 없다.

    - Manifold Learning              - 차원 축소 역할

    - Generative Model Learning   - 학습된 모델로 생성

    - ML Density Estimation         - Loss는 Negative Maximum Likelihood

 

Auotencoder 4가지 키워드
Autoencoder가 속한 분야

1. 배경 지식

1-1 DNN의 학습

- DNN의 학습은 데이터의 분포를 잘 설명하는 확률 분포 모수(theta) 추정하는 것과 동일하다.

머신 러닝은 데이터의 분포를 가장 잘 설명할 수 있는(argmax) 모수(theta)를 찾는 방향으로 학습한다. 

최대우도추정 식과는 다르게(최대 우도 추정은 정규 분포, 지수 분포, 이항 분포 처럼 먼저 모델이 주어졌었다) 모델 대신, 라벨(y)이 주어진 다는 것이 다른 부분.

 

 

 

 

※ 최대 우도 추정(Maximum Likelihood Estimation, MLE)에서 MLE를 최대로 하는 모수(Theta)는 계산으로 찾았지만, 머신 러닝에서는 정답 데이터로 찾는다. 어떻게?? Backpropagation 으로 가중치를 업데이트 시켜서!!

 

언제까지 학습? $ Only \; if \; L(\theta + \bigtriangleup\theta) < L(\theta) $

- 테일러 확장 중, 1차 미분까지만 사용하여 근방에서의 추정값만 확인한다.  

4번째 수식 오타(첫번째 Delta --> Gradient)

 

※ 발표자분 말에 따르면, 근처에서의 Approximation을 찾기 위해서 테일러 확장 중 1차 까지만 사용했다고 표현하신다.

※ 정리 :

 

※ 전체 데이터에 대한 로스 함수는 각 셈플 데이터 로스의 합으로 가정 하였을때, 

한번 업데이트 할때, 모든 데이터를 다 사용하긴 어려우으로 Batch(M) 단위로 데이터의 로스를 구해서 학습 시킨다.

 

※ Backpropagation 알고리즘 관점에서 출력이 연속 값이면 MSE 로스 함수를 사용하고,  출력이 이산 값이라면 Cross-Entrophy 로스 함수를 사용한다.

- MSE와 달리 CE는 출력 레이어에서의 에러 값에 활성 함수의 미분 값이 곱해지지 않아, 기울기 소실 문제에서 조금 더 자유롭다. 

 

MSE-파란색, CE-빨간색

 

1-1-1 네트워크 출력 값이 확률 분포라고 해석하였을 경우 

※ 확률 분포 모수(Theta)에 해당하는 가능도(Likelihood)와 정답 데이터(y)의 차이를 최소화하는 방향으로 학습하게 된다.

- 곱의 법칙에 의해 전체 데이터에 대한 추정한 확률 분포는, 셈플 데이터로 부터 추정한 확률 분포끼리의 곱으로 나타낼 수 있고

- Backpropagation을 쓰기 위해 양변 로그를 취해주면, 곱이 합으로 변하게 된다(로그의 마법...)

- 만약 데이터의 분포($f_{theta}(x)$)가 가우시안 분포를 따른다고 가정하면 위의 로스 값은 MSE가 되고.

  데이터의 분포가 이항분포를 따른다고 가정하면, 위의 로스 값은 Cross-Entropy가 된다.

 

결론 : 로스 함수로 MSE(Mean Square Error)를 쓰는 이유는 네트워크 출력 값이 가우시안 분포를 따를 것으로 가정하기 때문이고, CE(Cross Entrophy Error)를 쓰는 이유는 네트워크 출력 값이 이항분포를 따를 것으로 가정하기 때문이다.

 

 

 

1-2 Manifold 학습

- 고차원 데이터 공간에서, 차원을 축소하면서 데이터를 설명할수 있는 Subspace를 Manifold라 한다.

- 사용하는 목적

   1) 데이터 압축

   2) 데이터 시각화

   3) '차원의 저주' 해석 --> Manifold Hypothesis

   4) 특징 추출

 

차원의 저주

- 차원이 증가할 수록, 데이터 밀도는 급속도로 희박해진다.

- 하지만, 데이터 집합을 잘 설명하는 저 차원의 Manifold가 존재한다(가정)

- Autoencoder는 PCA를 포함하는 방법론

(예시) 데이터는 3차원 상에 존재하지만, 데이터는 설명은 2차원 Manifold로 가능하다
'차원 축소' 접근법 분류

 

2. Autoencoder

- 입력과 출력은 같은 Dimension

- (발표자 표현을 빌리면) 비지도 학습 문제를 지도 학습 문제로 바꾸어서 해결한 방법

- 원본 데이터에 노이즈를 (약간 e.g. Zero-Masking Noise) 추가하여, 원본 데이터와는 조금 다르지만 (원본 데이터와) 같은 Manifold 상에 놓이게 하는 Denoising Autoencoder 방식도 있다 --> 좀 더 Manifold가 잘 배워 진다(?)

 

※ Zero-Masking Noise - 확률(p) 별로 화소를 0으로 만들어 준다.

 

Stacking Qutoencoder, 가중치 초기화에 쓰이기도 한다.

 

 Reconstruction Loss

- 입력과 재구성된 출력 차이를 계산한다.

 

 

 

 

 

 

 


그외 참조,

www.youtube.com/watch?v=Dn6b9fCIUpM

 

 

 

반응형

'데이터 과학 > 딥러닝(Deep Learning)' 카테고리의 다른 글

공분산(Covariance) 정리  (0) 2021.02.12
PCA(주성분 분석) 정리  (0) 2021.02.10
Sigmoid 함수 vs Softmax 함수  (0) 2021.02.01
Transformer 설명  (0) 2021.01.14
Attention 모델 - 구현편  (0) 2020.12.27