Overcomplete Hidden Layers
기존의 AutoEncoder들은 모두 hidden layer로 넘어갈때 정보를 압축하여 노드수가 줄었는데 아래와 같이 오히려 개수가 늘어나는 것도 가능은하다. 데이터가 무거워져서 왜 그런 짓을 하지? 싶을 수 있지만 feature extraction의 목적으로 이용할 때는 다양한 feature를 뽑아낼 수 있어서 효용이 있을 수 있다.
그러나 input, output layer들 보다 hidden layer의 노드수가 많으면 input과 output의 값이 같아지는 것이 목표이므로 hidden node에 input 노드 수만큼의 node들에 값을 그대로 넣어서 output까지 넘겨버리고 남는 노드는 그냥 버리는 식으로 학습을 해버릴 수 있다. 그렇게 진행되면 학습이 무의미해져서 분명한 문제가 된다. 이를 해결하기 위한 방법들을 알아보자.
Sparse Autoencoders
Sparse Autoencoder는 단순히 아래와 같이 생겼고 너무 흔히 쓰여서 간혹 Autoencoder와 Sparse Autoencoder가 같은 의미인줄알고 사용하는 사람들도 존재한다.
위의 구조에 데이터를 단순히 통과시키면 과적합되어 데이터가 그냥 통과되는 문제가 있기에 Sparse Autoencoder라는 조직화 기술을 이용하여 이 문제를 해결한 Autoencoder를 구현한다. 아래와 같이 hidden node의 일부분의 값을 아주 작게 만들어 영향력을 없에서 학습을 제대로 진행하도록 하는 것이다.
이때 아래와 같이 매번 학습되는 노드를 다르게 선정하여 전체 노드를 이용하되 편법을 이용하여 학습할 수는 없게 하는 컨셉이다.
Denoising Autoencoders
Denoising Autoencoder도 또다른 조직화 기술이다. 이 경우에는 input 값중 일부를 랜덤하게 0으로 바꾸어 학습을 진행시키고 매 순환마다 0으로 바꾸는 input값을 바꿔준다. 이때 output은 0으로 바꾼 input과 같아지기 위해 학습하는 것이 아니라 초기값과 같아지는 방향으로 학습을 하기 때문에 input을 그대로 내보내는 편법을 이용하는 상황을 방지할 수 있다.
이러한 방법은 확률적 Autoencoder이므로 0으로 설정하는 비율과 선정하는 방식에 따라 그 성능과 결과가 달라질 수 있다.
Contractive Autoencoders
이또한 새로운 조직화 기술이다. 역전파 과정에서 값이 전달될때 loss 함수에 페널티를 주어서 그대로 결과를 뽑아내는 것을 방지한다.
자세한 계산 및 구현 과정은 매우 복잡하여 추후에 필요하다면 논문을 통해 공부해보도록 하겠다.
Stacked Autoencoders
Stacked Autoencoder는 말그대로 hidden layer를 한층 더 쌓아서 encoding을 더 진행하도록 하는 방식이다. 이러한 방식의 모델은 이전에 볼츠만 머신 파트에서 다뤘던 RBN(심층 신뢰망)을 대체할 수 있는 강력한 알고리즘이다.
Deep Autoencoders
Deep Autoencoder는 아래와 같이 무방향성을 띄는 사전 훈련된 RBM(제한 볼츠만 머신)을 쌓아서 만든 알고리즘이다. Stacked Autoencoder는 encoder를 쌓은 반면 Deep Autoencoder는 RBM을 쌓아서 만든 것이 특징이다.
'Drawing (AI) > DeepLearning' 카테고리의 다른 글
딥러닝 직접 구현하기 - (CNN) (4) | 2024.01.19 |
---|---|
딥러닝 직접 구현하기 - (Training process) (1) | 2024.01.15 |
딥러닝 직접 구현하기 - (배치 정규화) (1) | 2024.01.11 |
Udemy - 딥러닝의 모든 것(AutoEncoders) - (1) (1) | 2024.01.10 |
딥러닝 직접 구현하기 - (가중치 초기값) (0) | 2024.01.10 |