1. Deep Learning이란
딥러닝 : 2개 이상의 Hidden Layer를 지닌 다층 신경망 (Deep Neural Network, DNN)
Graphical Representation Learning
2. Deep Learning 발전 이유
- Gradient Vanishing 완화시킬 수 있는 알고리즘 발전
- GPU (Graphics Processing Unit)을 연산에 사용 (빠른 속도로 연산 수행 가능)
3. Deep Learning을 발전시킨 알고리즘
3-1. Dropout
Dropout : node를 random하게 drop함으로써 generalization
weight matrix에 random하게 일부 column에 0을 집어넣어 연산
얼마나 random하게 dropout할 것인지 확률 값 지정해줘야 함
Input Layer와 Hidden Layer에 적용 가능하며, Epoch마다 random하게 dropout함
ex) Input Layer에 20%, Hidden Layer에 30% Dropout한다고 했을 때, Input Data의 Column에 random하게 20% 0을을 넣고, Weight Matrix의 Column에도 random하게 30% 0을 넣어 Feed Forward, Back Propagation
그다음 Epoch에서는 이전 Epoch와 독립적으로 random하게 적용
일종의 RandomForest와 비슷한 모델 구성이라고 볼 수 있음
3-2. ReLU (Rectified Linear Unit)
Vanishing gradient 문제를 어느 정도 해결해주는 activation function
Input이 0보다 크면 미분 값이 1, Input이 0 이하면 미분 값이 0이므로, Back Propagation 과정 중 곱해지는 Activation 미분 값이 0 또는 1이므로 아예 없애거나 아예 살리는 것을 볼 수 있다.
- Leaky ReLU
- ELU
- parametric ReLU
- SELU
- SERIU
3-3. Batch Normalization
Internal Covariance Shift : 각 Layer마다 Input 분포가 달라짐에 따라 학습 속도가 느려지는 현상
Solution : Batch Normalization (학습 속도 향상 / Gradient Vanishing 문제 완화)
기본적으로 Normalization과 비슷
$$ BN(h; \gamma, \beta) = \beta + \gamma \frac{h - E(h)}{\sqrt{(Var(h) + \epsilon}} $$
- h : input 분포
- beta : 분포 shift
- gamma : scaling
3-4. Initialization (초기화)
Initialization은 정말 중요하다. 시작점이 어디인지에 따라 global minimum을 못 찾고, local minimum을 찾거나 saddle point에 빠질 수 있다. 또한, 어떻게 Initialization 했느냐에 따라 학습 속도가 달라질 수 있다. 이전에는 초기 분포로 Uniform Distribution, Normal Distribution을 사용했다.
- LeCun Initialization
- LeCun Normal Initialization
- LeCun Uniform Initialization - He Initialization
: Xavier Initialization을 간소화한 버전, Xavier Initialization은 ReLU 사용할 때 비효율적인데 이를 보완한 Initialization 기법
3-5. Optimizer
- Momentum
미분을 통한 Gradient 방향으로 가되, 일종의 momentum (관성)을 추가 (기본적인 SGD에 momentum 추가)걸어가는 보폭을 더 크게..? - NAG (Nesterov Accelerated Gradient)
Momentum을 약간 변형한 방법, Momentum으로 이동한 후 Gradient를 구해 이동 - Adagrad (Adaptive Gradient)
'가보지 않은 곳은 많이 움직이고, 가본 곳은 조금씩 움직이자' - RMSProp
Adagrad의 단점 보완한 방법 (1) - AdaDelta (Adaptive Delta)
Adagrad의 단점 보완한 방법 (2), Gradient의 양이 너무 적어지면 움직임이 멈출 수 있는데 이를 방지하는 방법 - Adam (Adaptive Moment Estimation)
기본적으로 가장 많이 사용되는 Optimizer(솔직히 잘 모르면, 그냥 Adam 쓰면 됨) - RAdam (Rectified Adam Optimizer)
Adam을 포함해 대부분의 Optimizer들은 학습 초기에 Bad Local Optimum에 수렴해 버리는 문제점이 있다. (학습 초기에 Gradient가 매우 작아져 학습이 더 이상 일어나지 않을 수 있다는 것) RAdam은 이러한 Adaptive Learning Rate Term의 분산을 Recify (교정)하는 Optimizer로, Learning rate를 어떻게 조절하든 성능이 비슷하다는 결과 나왔다.
https://www.slideshare.net/yongho/ss-79607172
자습해도 모르겠던 딥러닝, 머리속에 인스톨 시켜드립니다.
백날 자습해도 이해 안 가던 딥러닝, 머리속에 인스톨 시켜드립니다. 이 슬라이드를 보고 나면, 유명한 영상인식을 위한 딥러닝 구조 VGG를 코드 수준에서 읽으실 수 있을 거에요
www.slideshare.net
3-6. Encoder
1) AutoEncoder(AE)
AutoEncoder(AE)는 GAN(Generative Adversarial Networks)과 더불어 대표적인 Unsupervised Learning (비지도 학습) Neural Network 모델이다.
Input -> (Encoding) -> Hidden -> (Decoding) -> Output
Input data에 대해 Hidden Layer로 Encoding(압축) 한 후, 다시 Input data로 Decoding 하는 개념
Input data를 Latent Space (잠재 공간)에 압축시킨 값을 새로운 Feature로 사용할 수 있음 / 차원 축소도 할 수 있음
데이터를 원래의 데이터로 잘 복원하도록 학습하는 과정 (자기 자신을 잘 복원할 수 있다면, 복원 과정 중 Encoding 한 Feature은 Feature로서의 의미가 있을 것으로 이해 가능)
- Latent Space : data가 모여 있는, 원하는 정보가 있는 공간; feature를 잘 설명할 수 있는 공간
An autoencoder is trained by using a common objective function that measures the distance between the reproduced and original data. Autoencoders have many applications and can also be used as a generative model.
https://livebook.manning.com/book/gans-in-action/chapter-2/36
Chapter 2. Intro to generative modeling with autoencoders · GANs in Action: Deep learning with Generative Adversarial Networks
Encoding data into a latent space (dimensionality reduction) and subsequent dimensionality expansion · Understanding the challenges of generative modeling in the context of a variational autoencoder · Generating handwritten digits by using Keras and auto
livebook.manning.com
https://www.baeldung.com/cs/dl-latent-space
Latent Space in Deep Learning | Baeldung on Computer Science
Learn about the latent space in deep learning.
www.baeldung.com
https://towardsdatascience.com/understanding-latent-space-in-machine-learning-de5a7c687d8d
Understanding Latent Space in Machine Learning
Learn a fundamental, yet often ‘hidden,’ concept of deep learning
towardsdatascience.com
2) Stacked AutoEncoder (SAE)
Stacked Auto Encoder는 말 그대로 AE를 Stack 한 모델이다. AE의 새로운 Feature가 Feature로서 의미가 있다면, Stack해학 습하면 더 좋은 모델을 얻을 수 있을 것이라는 concept ('좋은 Feature를 지니 Hidden Layer를 Stack 해 학습시키면 더 좋은 모델을 얻을 수 있을 것이다')으로 만들어진 모델이다.
- Input data로 AE 1 학습
- 1에서 학습된 모형의 Hidden Layer를 Input으로 AE 2 학습
- 반복
- 1 ~ 3에서 학습한 Hidden Layer를 Stack
- 마지막 Layer에 softmax와 같은 classification 기능이 있는 Output Layer 추가
- Fine-Tuning (따로 학습시킨 모델을 재학습)으로 전체 MLP 재학습
+) Pre-Trained Model (미리 학습) / Fine-Tuning (재학습)
3) Denoising AutoEncoder (DAE)
DAE는 Robust (강건한) Feature를 만들기 위한 AE이다. Robust model이라 함은 학습해보지 않은 데이터라도 잘 학습시킬 수 있는 모델이라고 생각하면 된다.
Input에 약간의 noise를 추가해 Input을 잘 복원시키도록 학습하는 모델이다. 즉, Input이 x + noise, Output은 x
Input data에 noise를 추가함으로써 어떤 data가 Input으로 오든 Robust 한 모델을 만들겠다는 의미이다.
+ ) Stacked Denoising AutoEncoder (SDAE) : SAE에서 AE를 DAE로 대체한 모델
'AI > ML&DL' 카테고리의 다른 글
[DL] Is CNN better than RNN for time series data? (0) | 2022.08.23 |
---|---|
[Book] 파이썬 딥러닝 파이토치 PART 4 : Computer Vision (0) | 2022.08.19 |
[Book] 파이썬 딥러닝 파이토치 PART 2 : AI Background (2) (0) | 2022.08.19 |
[Book] 파이썬 딥러닝 파이토치 PART 2 : AI Background (1) (0) | 2022.08.18 |
댓글