출처: https://privatedevelopnote.tistory.com/81 [개인노트]

 

이 포스팅은 오토인코더의 모든것의 내용을 다량 참조하고 있습니다.

이활석님의 오토인코더의 모든것

 

목차는 아래와 같습니다.

 

1. Manifold Learning & AutoEnocoder Basic

2. RBM for Stacked AutoEncoder

3. Stacked AutoEncoder

4. Sparse AutoEncoder

5. Variational AutoEncoder

6. Application in Medical Image

 

 

2. RBM (Restricted Boltzmann Machine)

RBM은 Stacked Autoencoder를 이해하기 위해 알아야하는 알고리즘입니다.

그리고 해당 내용을 이해하기 위해 조금 수학이 들어가게 됩니다.

 

RBM

 

보통의 Autoencoder 처럼 Hidden layer(latent layer)가 있으며 유사해 보입니다.

하지만 조금 다른 점은 여기서의 Layer는 Bipartite Graph를 사용한다는 것입니다.

(참고 : Bipartite Graph는 2개의 정점을 가지고 서로 간 연결에는 방향성이 없고 같은 layer 간의 노드는 연결이없는 graph를 말합니다. 이것이 RBM의 제한을 걸고 Restrict란 이름이 붙은 이유입니다.)

 

위 그림을 보시면 klog(omega)의 경우 통계역학, Q/T는 열역학에서 가져온 개념입니다. 이 두식을 정리하면 오메가에 대한 식으로 아타낼 수 있게됩니다. 그리고 Q (열에너지) 대신에 C라는 상수로 견하면 아래와 같은 식이 나오게 됩니다.

 

exponential 값을 Boltzamnn factor라고 하며 Z의경우 Partition function(분배함수)라고 하여 Nomalization이 되게 됩니다.

그리고 E값에 다음과 같은 식을 도입하면 찾고자하는 확률을 알 수 있게 됩니다.

 

 

Training 방향의 경우 아래와 같게 됩니다.

 

 

 

 

 

Stacked Autoencoder

Basic Autoencoder의 경우 Back Propagation을 통해 학습을 진행합니다. 하지만 이 경우 Layer와 Unit이 많아지면 Local Minima나 Gradient Vanishing이 생길 수 있습니다. 따라서 이를 위해 Deep Belief Net이 도입되게 되고 이 Network가 RBM을 사용한 Stackted Autoencoder입니다.

 

Deep Belief Net

기존의 Autoencoder와 비슷해보이지만 차이점은 아래 그림과 같이 Stacked Autoencoder의 경우 Greedy Layer-wise Training을 하게 됩니다. 즉, Fine Tunning 식으로만 Back propagation을 하고 다른 경우 2개의 layer만 있는 경우 즉, Bipartite graph를 활용한 RBM으로 학습을 진행하게 됩니다.

Greedy Layer-wise Training

 

Sparse Autoencoder

Sparse Autoencoder는 Hidden Unit이 큰 경우 사용합니다.

Sparse Autoencoder

Sparse Parameter p를 도입합니다. 전체적인 Loss term을 보면 Regularization을 진행한 것으로 이해할 수 있는데요.

p와 Activated Hidden Unit을 도입하여 이 두 분포의 KL divergence를 기존 Basic Autoencoder의 Loss term에 추가합니다.

 

Loss Term of Stacked Autoencoder

KL Divergence

KL Divergence는 두 분포의 차이를 계산하기 위한 것으로 이를 위해 엔트로피(정보)의 차이를 이용한 것입니다.

 

KL Divergence

 

KL Divergence의 경우 아래와 같은 그래프를 그리게 됩니다.

KL Divergence 분포

KL Divergence에는 중요한 두가지 성질이 있습니다.

 

 

 

 

 

첫번째 성질의 경우 0보다 크거나 같은 것은 거리개념에서도 성립하니 괜찮지만 순서를 바꿧을 때에는 값이 같지 않다는 것에서 이는 거리와는 다른 개념이라는 것입니다.

 

이 엔트로피 개념의 경우 다음에 추가적으로 글을 작성하도록 하겠습니다.

 

다시 Sparse Autoencoder로 돌아와서 이러한 Regularization Term으로 인해 Sparse Autoencoder는 Sparsity를 도입하여 Hidden layer의 Acitivity를 제한할 수 있게됩니다. 

 

'Deep Learning' 카테고리의 다른 글

AutoEncoder - Basic부터 응용까지 (1)  (0) 2021.07.13

이 포스팅은 오토인코더의 모든것의 내용을 다량 참조하고 있습니다.

이활석님의 오토인코더의 모든것

 

목차는 아래와 같습니다.

 

1. Manifold Learning & AutoEnocoder Basic

2. RBM for Stacked AutoEncoder

3. Stacked AutoEncoder

4. Sparse AutoEncoder

5. Variational AutoEncoder

6. Application in Medical Image

 

 

1. Manifold Learning & AutoEncoder Basic

 

 

먼저 Curse of Dimensionality(차원의 저주)를 설명드리겠습니다.

 

Curse of Dimesnionality란?

차원이 증가할수록 모델 추정에 필요한 Data의 수가 기하 급수적으로 증가한다는 것입니다.

이를 잘 설명해주는 그림을 보시면 이해가 편하실 겁니다.

Curse of Dimensonality (차원의 저주)

1차원 (Position 10)이어서 데이터가 10개 있으면 되지만 2차원일때는 Positiond이 100(10x10)이 됨으로써 필요한 데이터가 늘어나게 됩니다. 또한 3차원일때는 1000까지 증가함으로써 필요한 데이터가 더 늘어납니다. 보통 우리가 다루는 2D이미지의 경우 2차원 + 1차원(색)으로 가게 되면 3차원이지만 Medical Image는 3차원에 만약 Time까지 고려하면 차원의 수는 더 커지게 됩니다.

 

이런 부분을 해소하기 위한 방법으로 Manifold Learning이 사용될 수 있습니다.

 

Maifold Learning 이란?

Projection을 통해(Mapping!) data의 특성을 유지하면서 차원을 축소하는 것.

(가정 : 고차원의 데이터가 있을 때 이를 잘 아우르는 저차원의 manifold가 있다)

 

Manifold Learning 설명 이미지

 

위 이미지에서 Manifold subspace위의 v2 축을 따라 4가 회전하는 것을 볼 수 있습니다. 즉 회전하는 Feature를 찾은 것입니다.

Manifold Learning을 통해 이렇게 Feature를 작동할 수 있는 축을 자동으로 찾을 수 있습니다. (왜냐면 Unsupervised Learning 이기 때문입니다.)

 

어디에 유용한가?

- Data Copression

- Data Visualization

- Curse of Dimensionality

- Discovering most impoprtant features

 

Autoencoder Basic

 

위에서 Manifold Learning을 설명드린 것은 AutoEncoder가 이러한 방식을 사용하기 때문입니다.

아래 그림은 AutoEncoder의 Basic Model입니다.

Autoencoder Basic

각각의 화살표에서 진행되는 과정을 Encoder Part / Decoder Part라고 생각하시면 됩니다.

Encoder Part에서 Input x는 차원이 축소됩니다.

그리고 Decoder part에서 다시 차원이 확장되면 Output이 나오는 구조입니다. Loss fucntion을 Decoder의 Output z(Reconstructed Output)와 실제 Input x와의 차이로 둔다면 이를 최소화하는 방향으로 학습이 진행됩니다.

 

여기서 y의 경우 latent space라고 부릅니다.

(만약 w = w'인 경우라면 tied weights라고 부릅니다.)

이 경우 Loss function Binary input이라면 entropy를 사용할 것이고 Real-value input이라면 MSE를 보통 사용합니다.

 

 

 

 

 

'Deep Learning' 카테고리의 다른 글

Autoencoder Basic 부터 응용까지 (2)  (0) 2021.07.20

+ Recent posts