[Book] 파이썬 딥러닝 파이토치 PART 3 : Deep Learning
본문 바로가기
AI/ML&DL

[Book] 파이썬 딥러닝 파이토치 PART 3 : Deep Learning

2022. 8. 19.

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와 비슷한 모델 구성이라고 볼 수 있음

Dropout

3-2. ReLU (Rectified Linear Unit)

Sigmoid v.s ReLU

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를 잘 설명할 수 있는 공간

 

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 해 학습시키면 더 좋은 모델을 얻을 수 있을 것이다')으로 만들어진 모델이다. 

  1. Input data로 AE 1 학습
  2. 1에서 학습된 모형의 Hidden Layer를 Input으로 AE 2 학습
  3. 반복
  4. 1 ~ 3에서 학습한 Hidden Layer를 Stack
  5. 마지막 Layer에 softmax와 같은 classification 기능이 있는 Output Layer 추가
  6. 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로 대체한 모델

 

 

댓글