Lecture 6 | Training Neural Networks I
Lecture 6 | Training Neural Networks I
Training Neural Networks
목차
- Activation Functions
- Data Preprocessing
- Weight Initialization
- Batch Normalization
- Babysitting the Learning Process
- Hyperparameter Optimization
Activation Functions
활성화함수란?

- 활성화 함수는 다음과 같이 선형 결합 이후 나온 값들을 더한 후 비선형적인 변환을 하기위해 사용된다.
- 비선형변환?선형변환과 비선형 변환의 예시는 다음과 같다.


- 위와 같이 선형변환을 통해 좌표계는 일정한 규칙을 가지고 변환을 하기때문에 모든 점들이 똑같이 변화한다. 이와 다르게 비선형변환은 각각의 규칙들을 가지고 다르게 변화를 한다.
활성화 함수의 종류

Sigmoid

특징
- 출력이 0~1사이를 값을 가진다.
- 양 끝부분은 약간의 선형적인 모습이 보인다.
Sigmoid 문제점
- Saturated neurons ‘kill’ the gradients (vanishing gradient문제 발생)
- Sigmoid outputs are not zero-centered (출력의 중심값이 0이 아니다.)
- exp() is bit compute expensive (계산 비용이 비싸다.)
문제점 1. Saturated neurons ‘kill’ the gradients

위와 같이 x값의 변화하면 어떤 일이 발생할까?
→

- backpropagation의 과정은 Local gradient x upstream gradient이다.
- 이 때 시그모이드 함수의 특성상 x = 10, -10에서 0에 가까운 gradient가 발생하고 이는 backpropagation의 local gradient이다.
- 또한 한 개의 층이 아닌 여러개의 층이 있다면 시그모이드함수를 지나고난 gradient는 다음 전달에서 upstream gradient가 되므로 upstream gradient도 0에 가까워진다.
문제점 2. Sigmoid outputs are not zero-centered

위와 같이 입력값(x)가 항상 양수 일 때 w의 gradient는 어떻게 될까?
- 전부 양수이거나 음수가 된다.
- 이는 파라미터(W)를 업데이트 할 때 다같이 증가하거나 감소할 수 있다. 즉, gradient 방향의 다양성을 감소 시킨다.

- 다음과 같은 예에서 보면 gradient가 이동할 수 있는 영역은 4분면중 2영역 밖에 없고 최적의 파라미터를 찾는데 gradient를 여러번 update시켜야한다.
- 평균이 0인 데이터(zero-mean)를 사용하게 되면 전부같은 방향으로 움직이지 않게 된다.
문제점 3. exp() is bit compute expensive
세 번째 문제점은 계산비용이 비싸다는 것인데 이것은 크게 중요하지 않다.
Tanh

특징
- 출력이 -1~1사이의 값을 갖는다.
- zero-centered를 만족한다. (sigmoid의 두 번째 문제점 해결)
- 양 끝부분에 약간의 선형적인 모습이 보인다. (sigmoid의 첫 번째 문제점)
ReLU

특징
- 입력 스페이스의 절반은 saturation되지 않는다.
- 계산효율이 좋다.
- 수렴속도가 빠르다. (약 6배)
- 생물학적 타당도가 시그모이드 보다 좋다.
- zero-centered output을 갖지 않는다.

- x = -10: gradient가 0과 가까워짐
- x = 0: gradient = 0
- x = 10: gradient는 linear regime를 갖는다.
ReLU의 특징 중 하나는 입력 스페이스의 절반은 saturation되지 않는 것이다. 이러한 특징은 sigmoid의 첫 번째문제를 절반 밖에 해결하지 못한다는 것을 의미한다.

따라서 ReLU를 사용하면 절반은 dead ReLU가 발생하게된고 dead ReLU는 gradient를 update하지 못한다.
dead ReLU가 발생하는 대표적인 원인은 다음과 같다.
- 초기화를 잘 못한 경우: 가중치 평면이 data cloud에서 멀리 떨어져있는 경우
- Learning rate가 지나치게 높은경우: update를 하면서 W값이 증가한다.
하지만 실제로 학습을 시켜놓은 네트워크를 보면 10~20%는 dead ReLU가 발생하게되고 이 정도의 수치는 네트워크 학습에 크게 지장을 주지않는다.
Leaky ReLU

특징
- 전반적으로 ReLU의 특징을 모두 가지고 있다
- ReLU와 다른점은 음의 영역에서 saturate가 일어나지 않는다.(ReLU의 단점 극복)
PReLU (Parametric Rectifier)

특징
- Leaky ReLU의 음의 영역부분을 파라미터화 한 것이다.
- backpropagation과정을 통해 𝜶값(기울기)을 update하여 알맞은 gradient update를 할 수 있다.
ELU (Exponential Linear Unit)

특징
- Leaky ReLU에서 음의 영역을 지수함수로 바꾼것이다.
- 지수함수를 사용하여 계산비용이 많이 발생하지만 음의 영역에서 Leaky ReLU보다 robust하다.
Maxout

특징
- ReLU와 Leaky ReLU를 일반화 한것이다.
- Maxout은 2개의 선형결합을 사용하기 때문에 뉴런당 파라미터수가 두 배가 된다.
TLDR

Data Preprocessing
Data preprocessing(데이터 전처리)는 training을 하기위해 첫 번째로 하는 작업이다.
일반적인 데이터 전처리

- zero-centered data: 입력 데이터의 평균값을 0으로 만들어 준다.
→ 위에서 말한것과 같이 zero-centered 데이터가 아닌경우 gradient 방향의 다양성이 줄어 최적의 파라미터르 찾기위해 많은 update를 해야한다.
- nomalization data: 입력 데이터에 분산값을 나눠 정규화를 시켜준다.
→ 모든 차원이 동일한 범위안에 있게 해줘서 전부 동등한 contribute를 갖게 한다.
다른 데이터 전처리

다른 전처리과정으로는 PCA, Whitening등이 있는데 이미지에서는 zero-centered과정 이외의것들은 잘 하지 않는다.
TLDR

Weight Initialization

다음과 같이 네트워크가 있을 때 W를 0으로 초기화 하면 어떻게 될까?
→
ex) SGD

가중치 update과정을 다음과 같기 때문에 모든 gradien가 똑같은 값으로 업데이트된다.
First Idea: Small random numbers

그럼 가우시안 분포를 따르고 zero-mean인 가중치 초기값을 사용하면 어떨까?
→ 층이 깊지 않은 네트워크에서는 괜찮지만 층이 깊어질 수록 symmetric breaking문제가 발생한다.
다음과 같은 상황을 살펴보자.
- 가우시안 분포를 따르고 평균이 0, 표준편차가 0.01인 가중치 초기값
- 10개의 layer
- 500개의 뉴런
- 활성화함수로 tanh사용

위의 네트워크는 다음과 같은 결과를 얻는다.
- 두 개의 선 그래프: 각각 layer에서의 activation values들의 mean과 std
- 막대 그래프: activation values들의 분포
결과: W를 곱하면 곱할 수록 W가 너무 작은 값이기 때문에 출력이 급격히 줄어든다.
Q. think about the backward pass. What do the gradients look like?
→

이번엔 표준편차를 0.01대신 1.0을 사용하면 어떨까?

- 입력값이 너무 커지게 되어 activation values의 값이 양쪽끝에 집중되어있다.
Xavier initialization

Xavier 초기값은 가중치에 루트를 씌운값을 가중치에 나눠주는 초기값 방식이다.
- Xavier 초기값을 사용하면 층이 깊어져도 고루 분포된 activation values의 값을 얻을 수있다.
- 하지만 Xavier 초기값은 linear activations에서만 잘 동작하고 ReLU와 같은 비선형 activation에서는 잘 동작하지 않는다
He initialization

He 초기값은 가중치의 초기값에 2를 나누고 루트를 씌운값을 가중치에 나눠준것이다.
- He 초기값은 ReLU에 특화된 가중치 초기값이다.
- 2로 나누는 이유는 ReLU의 음의영역은 0의 값을 가지기 때문이다.
Batch Normalization
Batch Normalization이란?
활성화 값의 분포를 강제로 고루펴줘서 정규분포의 모양을 만드는 것이다.
Batch Normalization의 수식

Batch Normalization 과정

- 각각의 차원(batch)별로 평균과 분산을 구해준다.
- 그 다음 일반화시킨다.
Batch Normalization 위치

- Batch Normalization은 단순히 입력의 스케일만 살짝 조정해주는 것이기 때문에 FC, Conv어디든 가능하다.
- 하지만 Conv layer같은 경우는 같은 activation map의 같은 channel마다 평균과 분산을 구한다.
이렇게 Batch Normalization을 하는 거은 입력이 활성화 함수의 linear한 영역에만 존재하도록 하는 것이고 이것은 saturation이 일어나지 않는다는것을 의미한다.
사실 이렇게 saturation이 일어나지 않는것보다 얼마나 일어날지 조절하는 것이 좋기 때문에 batch Normalization은 마지막에 scaing연산을 수행한다.

장점
- gradient flow를 향상시킨다.
- 큰 learning rate를 사용할 수 있다.
- 가중치를 초기화하는것에 의존도를 낮춘다.
- overfitting문제를 해결해 dropout과 같은 것의 필요성을 낮춘다.
Babysitting the Learning Process
위에서 배운 training과정을 정리해보자.
Step 1. Preprocessing the data

- 데이터 전처리
Step 2. Choose thearchitecture

- 알맞은 architecture를 구성한다.
Step 3. Double check that the loss is reasonable

- 모델의 loss가 알맞게 나오는지 sanity check한다.
Step 4. Try to train

- train 과정중 loss를 상태를 관찰한다.
- 위와 같이 loss가 변하지 않을 때는 learning rate를 조절한다.
Q. Notice train/val accuracy goes to 20% though, what’s up with that? (remember this is softmax)
→ 현재 확률값들이 아직까지 멀리 퍼져있기 때문에 loss는 여전히 비슷하다. 하지만 우리가 지금 학습을 하고있기 때문에 이 확률들은 조금씩 옳은 방향으로 바뀌고 있다.
Hyperparameter Optimization
Cross-validation strategy

Cross-validation은 다음 두개의 단계를 갖는다.
- Coarse: 대략적인 아이디어를 얻기위해 수해하는 과정

- Fine: 정밀한 아이디어를 얻기위해 수행하는 과정

이 때 최적의 값이 내가 정한 중앙쯤에 위치하도록 범위를 잘 설정하는 것이 중요하다.
Random Search vs Grid Search

- Grid Search: 정해진 하이퍼파라미터들의 결과를 비교하는것
- Random Search: 랜덤한 하이퍼파라미터들의 결과를 비교하는것
보통 Random Search의 성능이 좋다.
Summary

Syllabus
Youtube
'Deep Learning > cs231n' 카테고리의 다른 글
| Lecture 9 | CNN Architectures (0) | 2022.02.15 |
|---|---|
| Lecture 7 | Training Neural Networks II (0) | 2022.02.13 |
| Lecture 5 | Convolutional Neural Networks (0) | 2022.01.28 |
| Lecture 4 | Introduction to Neural Networks (0) | 2022.01.21 |
| Lecture 3 | Loss Functions and Optimization (0) | 2022.01.15 |



