Gradient Descent 활용한 신경망 학습 과정
1. Weight Initialization
모든 Parameter θ 초기화
- 초기화 시점의 작은 차이가 학습의 결과를 뒤바꿀 수 있으므로 보다 나은 초기화 방식을 모색하게 됨
- Perceptron의 Linear Combination 결과값 (Activation function의 입력값)이 너무 커지거나 작아지지 않도록 만들어주는 것이 핵심
- 발전된 초기화 방법들을 활용해 Vanishing gradient 또는 Exploding gradient 문제를 줄일 수 있다
1) Xavier Initialization (자비에 초기화)
- 활성화 함수로 Sigmoid 함수나 tanh 함수를 사용할 때 권장
- 다수의 딥러닝 라이브러리들에 default
- 표준편차가 sqrt(1/n)인 정규분포 따르도록 가중치 초기화 (n = # of nodes of previous layer)
2) He Initialization (헤 초기화)
- 활성화 함수가 ReLU 함수일 때 적용
- 표준편차가 sqrt(2/n)인 정규분포를 따르도록 가중치 초기화
- 성능 향상
2. Weight Regularization
Cost Function 상의 가장 낮은 지점을 향해
- 기존의 Gradient Descent 계산 시 y축에 위치해있던 Cost function은 Training data에 대해 모델이 발생시키는 에러값의 지표이므로, 가장 낮은 Cost function은 사실상 Overfitting 지점일수도 있음
- Overfitting을 해결하기 위해 Model이 복잡해지면 복잡해질수록 생기는 경향을 반영하여 새로운 Cost Function을 정의함
모델이 복잡해질수록
모델 속의 숨어있는 θ 개수는 많아지고, 절대값이 더 커지는 경향
1. # of θ ↑
2. |θ| ↑
λR(θ) : Regularization Term (정규화항) -> Weight Decay
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에 대한 탐색의 필요성이 줄어듦
'멋쟁이 사자처럼 AI SCHOOL 5기 > Today I Learned' 카테고리의 다른 글
[7주차 총정리] TF2 Classification (tensorflow.keras) (0) | 2022.04.29 |
---|---|
[7주차 총정리] Neural Network에서 오버피팅 피하는 방법 (Dropout, Batch normalization) (0) | 2022.04.28 |
[7주차 총정리] 딥러닝, 활성화 함수 (Activation function) 기초 총정리 (0) | 2022.04.27 |
[7주차 총정리] 정형데이터를 위한 인공신경망 모델, TabNet 기초 정리 (0) | 2022.04.27 |
[7주차 총정리] Deep Learning 기초 개념 정리 (0) | 2022.04.26 |