욱이의 냉철한 공부

[딥러닝 기본] Deep Learning 학습최적화 셋팅 본문

데이터과학/개념 : Deep Learning

[딥러닝 기본] Deep Learning 학습최적화 셋팅

냉철한 욱 2022. 3. 28. 07:35

 출저

본 개념정리는 제 지도교수님이신 연세대학교 정보대학원 김하영 교수님 수업과 Andrew 교수님의 Coursera 수업을 통해 얻은 정보를 통해 정리했습니다. 자료는 대부분 Andrew 교수님의 Coursera 수업자료입니다.

 


 

1. Normalizing inputs

- normalize(표준화) 특징

신경망을 훈련시킬 때, 트레이닝의 속도를 높일 수 있는 방법.

 

- normalize(표준화) 를 하는 이유

표준화를 실행하여 모든 특성값들이 비슷한 범위 값을 가진다면 빠른 속도로 학습을 진행할 수 잇다.

 

 

 

 

 

2. Vanishing / Exploding gradients : 가중치 초기화를 적절하게 해야하는 이유

 

 

 

 

 

 

 

3. Weight Initialization for Deep Networks

1) 가중치 초기화 0으로 하면 안되는 이유

로지스틱 아닌 이상 모두 0으로 초기화하면 안 된다.

=> 학습이 진행되지 않는다.

왜냐하면 모든 노드가 똑같은 연산이기 때문에 하나 있는 것과 다를 바가 없다.

 

2) 어떻게 가중치 초기화 설정?

만약 입력 activation의 입력 특성이 대략적으로 평균 0 와 편차 1이면 이것은 z가 비슷한 scale을 갖게 할 것이고 문제해결이 되지 않을 것입니다. 하지만 확실히 vanishing과 exploding gradient 문제를 도와주기는 합니다. 왜냐면 w하는 비중 매트릭스를 세팅해서 1보다 너무 크지 않고, 1보다 너무 작지 않게 해서 너무 빨리 explode하거나 vanish하지 않게 하려는 것입니다

 

3). 가중치 초기화 종류

1. 가중치 초기화 : Xavier (세이비어 초기화)

- 개요

이 방법은 균등 분포(Uniform Distribution) 또는 정규 분포(Normal distribution)로 초기화 할 때 두 가지 경우로 나눈다.

이전 층의 뉴런 개수와 다음 층의 뉴런 개수를 가지고 식을 세웁니다.

이전 층의 뉴런의 개수를 n(in)

다음 층의 뉴런의 개수를 n(out)

- 균등분포

- 정규분포

평균 : 0

 

- 특징 및 문제점

Xavier 초기화는 여러 층의 기울기 분산 사이에 균형을 맞춰서 특정 층이 너무 주목을 받거나 다른 층이 뒤쳐지는 것을 막음.

그런데 Xavier 초기화는 시그모이드 함수나 하이퍼볼릭 탄젠트 함수와 같은 S자 형태인 활성화 함수와 함께 사용할 경우에는 좋은 성능을 보이지만, ReLU와 함께 사용할 경우에는 성능이 좋지 않음.

ReLU 함수 또는 ReLU의 변형 함수들을 활성화 함수로 사용할 경우에는 다른 초기화 방법을 사용하는 것이 좋은데, 이것이 He 초기화(He initialization)

그래서 HE가 거의 요즘 디폴트 값

2. 가중치 초기화 : HE

- 개요

이 방법은 균등 분포(Uniform Distribution) 또는 정규 분포(Normal distribution)로 초기화 할 때 두 가지 경우로 나눈다. 다만, He 초기화는 세이비어 초기화와 다르게 다음 층의 뉴런의 수를 반영하지 않음. 전과 같이 이전 층의 뉴런의 개수를 nin만 있음.

- 균등분포

- 정규분포

평균 : 0

- 특징

시그모이드 함수나 하이퍼볼릭탄젠트 함수를 사용할 경우에는 세이비어 초기화 방법이 효율적입니다.

ReLU 계열 함수를 사용할 경우에는 He 초기화 방법이 효율적입니다.

ReLU + He 초기화 방법이 좀 더 보편적.