출처 : 오코인코더의 모든 것(발표자 : 이활석)
영상 : 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
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차 미분까지만 사용하여 근방에서의 추정값만 확인한다.
※ 발표자분 말에 따르면, 근처에서의 Approximation을 찾기 위해서 테일러 확장 중 1차 까지만 사용했다고 표현하신다.
※ 정리 :
※ 전체 데이터에 대한 로스 함수는 각 셈플 데이터 로스의 합으로 가정 하였을때,
한번 업데이트 할때, 모든 데이터를 다 사용하긴 어려우으로 Batch(M) 단위로 데이터의 로스를 구해서 학습 시킨다.
※ Backpropagation 알고리즘 관점에서 출력이 연속 값이면 MSE 로스 함수를 사용하고, 출력이 이산 값이라면 Cross-Entrophy 로스 함수를 사용한다.
- 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를 포함하는 방법론
2. Autoencoder
- 입력과 출력은 같은 Dimension
- (발표자 표현을 빌리면) 비지도 학습 문제를 지도 학습 문제로 바꾸어서 해결한 방법
- 원본 데이터에 노이즈를 (약간 e.g. Zero-Masking Noise) 추가하여, 원본 데이터와는 조금 다르지만 (원본 데이터와) 같은 Manifold 상에 놓이게 하는 Denoising Autoencoder 방식도 있다 --> 좀 더 Manifold가 잘 배워 진다(?)
※ Zero-Masking Noise - 확률(p) 별로 화소를 0으로 만들어 준다.
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 |