kil_alpaca
기록하는 습관
kil_alpaca
전체 방문자
오늘
어제
  • 분류 전체보기 (117)
    • 잡다한 오류 (2)
    • 머신러닝 & 딥러닝 (4)
      • 이론 (2)
      • 통계 기법 (2)
      • 잡다한 오류 (0)
    • Pytorch (6)
    • Tensorflow 2 (1)
      • 오류 처리 등등 (1)
    • Ubuntu (3)
      • 이것저것 (2)
      • 오류 처리 등등 (1)
    • Problem Solving (93)
      • Dynamic Programming (52)
      • Convex Hull Trick (8)
      • Dijkstra (33)
    • 자료구조 (3)
      • 기본 자료구조 (2)
      • Tree (1)
    • 알고리즘 (5)
      • 기하학 (4)
      • 최적화 기법 (1)

블로그 메뉴

  • 홈

공지사항

인기 글

태그

  • 알고리즘
  • convex hull
  • DP optimization
  • 머신러닝
  • CHT
  • 기하학
  • 파이토치
  • DP
  • 딥러닝
  • 통계
  • 자료구조
  • 통계기법
  • Dijkstra
  • dynamic programming
  • 백준
  • glorot 초기화
  • convolution layer
  • Tensor
  • 텐서
  • 데이크스트라
  • CCW
  • he 초기화
  • 다익스트라
  • pyTorch
  • Li Chao Tree
  • kaiming 초기화
  • 그래프 탐색
  • Convex Hull Trick
  • Convex Hull Optimization
  • 그래프 이론

최근 글

티스토리

hELLO · Designed By 정상우.
kil_alpaca

기록하는 습관

머신러닝 & 딥러닝/이론

Gradient vanishing / exploding

2023. 4. 17. 22:11

1. Gradient vanishing / exploding 문제

딥러닝을 할 때 층을 여러 개 쌓아서 DNN 을 만든다.

학습을 위해 역전파를 할 때, gradient 를 사용해서 각 층의 parameter 를 업데이트 한다.

 

그런데 층이 깊어질수록,

gradient 가 점점 사라지거나 폭발적으로 증가하는 문제가 발생할 수 있다.

이러면 당연히 학습이 제대로 진행되지 않는다.

 

gradient 가 점점 사라지는 것을 gradient vanishing,

gradient 가 점점 커지는 것을 gradient exploding 이라고 부른다.

 

이 문제를 해결하기 위해 여러 솔루션들이 제안 되었는데,

대표적으로 아래 4가지 방법이 사용된다.

 

1) 각 층에 특정한 초기화 적용

각 층에 사용하는 활성화 함수에 따라

Glorot  초기화 / He 초기화 / LuCun 초기화를 사용하는 방법이다.

 

2) 특정 값으로 수렴하지 않는 활성화 함수 사용

ReLU 의 변형인 LeakyReLU / ELU / RReLU / PReLU 등을 사용하는 방법이다.

 

3) 배치 정규화

학습할 때 배치마다 다른 분포를 가지기 때문에 학습이 제대로 되지 않을 수 있다.

각 배치가 동일한 분포를 가지도록 정규화하는 방법이다.

 

4) Gradient clipping

gradient exploding 문제를 해결하는 방법인데,

gradient 가 특정 임계값을 넘어서면 잘라내는 방법이다.

 

자세한 내용은 앞으로 각각 다른 포스트에서 서술해 보고자 한다.

저작자표시 비영리 변경금지 (새창열림)

'머신러닝 & 딥러닝 > 이론' 카테고리의 다른 글

Convolution Layer  (0) 2023.04.12
    '머신러닝 & 딥러닝/이론' 카테고리의 다른 글
    • Convolution Layer
    kil_alpaca
    kil_alpaca

    티스토리툴바