본문으로 바로가기

Gradient Descent 활용한 신경망 학습 과정

1. Weight Initialization

모든 Parameter θ 초기화

- 초기화 시점의 작은 차이가 학습의 결과를 뒤바꿀 수 있으므로 보다 나은 초기화 방식을 모색하게 됨

- Perceptron의 Linear Combination 결과값 (Activation function의 입력값)이 너무 커지거나 작아지지 않도록 만들어주는 것이 핵심

- 발전된 초기화 방법들을 활용해 Vanishing gradient 또는 Exploding gradient 문제를 줄일 수 있다

 

1) Xavier Initialization (자비에 초기화)

https://brunch.co.kr/@hvnpoet/99

- 활성화 함수로 Sigmoid 함수tanh 함수를 사용할 때 권장

- 다수의 딥러닝 라이브러리들에 default

- 표준편차가 sqrt(1/n)인 정규분포 따르도록 가중치 초기화 (n = # of nodes of previous layer)

 

2) He Initialization (헤 초기화)

https://brunch.co.kr/@hvnpoet/99

- 활성화 함수가 ReLU 함수일 때 적용

- 표준편차가 sqrt(2/n)인 정규분포를 따르도록 가중치 초기화

- 성능 향상

 


2. Weight Regularization

Cost Function 상의 가장 낮은 지점을 향해

https://www.javatpoint.com/gradient-descent-in-machine-learning

- 기존의 Gradient Descent 계산 시 y축에 위치해있던 Cost function은 Training data에 대해 모델이 발생시키는 에러값의 지표이므로, 가장 낮은 Cost function은 사실상 Overfitting 지점일수도 있음

- Overfitting을 해결하기 위해 Model이 복잡해지면 복잡해질수록 생기는 경향을 반영하여 새로운 Cost Function을 정의함

 

모델이 복잡해질수록
모델 속의 숨어있는 θ 개수는 많아지고, 절대값이 더 커지는 경향
1. # of θ ↑
2. |θ| ↑

 

λR(θ) : Regularization Term (정규화항) -> Weight Decay

 

https://soobarkbar.tistory.com/30

R(θ) : Regularization

1) L1 regularization (L1 정규화, Lasso)

- 가중치의 절대값의 합에 비례하여 가중치에 penalty 부가

- 관련성이 없거나 매우 낮은 특성의 가중치를 정확히 0으로 유도

-> 모델에서 해당 특성을 배제하는 데 도움 (Feature selection 효과)

 

2) L2 regularization (L2 정규화, Ridge)

- 가중치에 제곱의 합에 비례하여 가중치에 penalty 부가

- 큰 값을 가진 가중치를 더욱 제약하는 효과

- 보편적으로 더 Lasso보다 더 나은 경향

 

3) Elastic-Net (L1 + L2)

- L1과 L2의 장점을 취하였으며, 큰 데이터셋에서 잘 작동

- 변수의 수도 줄이고, variance도 줄이고 싶을 때 사용

 

 

λ : Regulation rate (정규화율)

정규화 함수의 상대적 중요도 지정 (penalty의 영향력을 결정하는 hyperparameter)

정규화율을 높이면 과적합 감소 but 모델의 정확성 떨어질 수도(underfitting)

θ의 수가 아주 많은 신경망은 정규화율을 아주 작게 주기도 함

 


3. Advanced Gradient Descent Algorithms

선택한 Gradient Descent 방법을 적용해 θ 계속 업데이트 

1) Learning rate (α)

얼마나 큰 보폭으로 움직일지 결정

 

2) Batch size

a. (Full-Batch) Gradient Descent

- 모든 Training data에 대해 Cost를 구하고 Cost function 값을 구하여 Gradient descent 적용

- Training data가 많으면 Cost function 등의 계산에 필요한 연산의 양이 많아져 학습 시간이 오래 걸린다

- Weight Initialization 결과에 따라 Global minimum이 아닌 Local minimum으로 수렴할 수도 있다

 

b. Stochastic Gradient Descent

- Training data 중 random하게 하나만 뽑아(batch size=1) Cost 계산 & Gradient descent 적용하여 weight 빠르게 업데이트

- 데이터가 아무리 커도 하나만 random하게 뽑기에 감당 가능하며, 학습 시간도 빠르다

- 한 개의 Training data마다 매번 weight 갱신하기에 신경망의 성능의 안정성이 적음 (Cost값이 안정적으로 줄어들지 않고, 종잡을 수 없음)

- 최적의 Learning rate를 구하기 위해 일일이 튜닝하고 수렴조건(early stop)을 조정해야 한다

 

c. Mini-Batch Stochastic Gradient Descent

- Training data에서 일정한 크기(batch size)의 데이터를 선택하여 Cost function 계산 및 Gradient descent 적용

- Full-Batch Gradient Descent와 Stochastic Gradient Descent의 장단점을 취함

- 속도와 안정성 동시에 관리 가능

- GPU 기반 병렬 연산 효율적으로 가능

 

* 1 epoch: 전체 학습 데이터를 한 번씩 모두 학습시킨 횟수

* 1 iteration: (총 데이터 수)/(batch size)

 

 

3) Optimizer

- Adagrad, RMSProp, Adam 사용 권장

- Adaptive learning rate가 적용되어 learning rate에 대한 탐색의 필요성이 줄어듦