BESS(Back-End Study Space)
Mini-Batch, Back Propagation, Overfitting 본문
2020/12/05 - [데이터 분석 입문/딥러닝] - Perceptron, Deep Learning, Gradient Descent
#1. Mini-Batch
weight 값을 아주 조금 바꾸기 위해서 내가 가진 모든 training data에 대하여 loss를 모두 계산하는 건 너무 오래 걸림
▼
전체 data 중에 일부 data만 뽑고(sampling) 이 data들이 전체 training data를 잘 대표한다고 가정해서
이 data들로만 loss를 계산하여 weight를 update해도 되지 않을까
▼
1. Batch Gradient Descent : 모든 data에 대하여 loss를 계산하여 다 더하고 이를 이용해서 GD
2. Stochastic Gradient Descent : Data를 1개만 뽑고, 그 1개의 data에 대한 loss를 이용하여 GD
3. Mini-batch Gradient Descent : Batch/Stochastic의 중간 형태로 data를 n개 뽑고 그 n개의 data에 대한
loss를 계산하여 다 더한 뒤 이를 이용하여 GD (제일 많이 쓰는 방법)
#2. Back Propagation
Loss로부터 거꾸로 한 단계씩 미분 값을 구하고 이 값들을 chain rule에 의하여 곱해가면서 weight에 대한 gradient를 구하는 방법
※ chain rule : 미분들을 전부 각각 곱하면 연쇄되어 사라지는 것들이 생김
☞ 우리가 구하려고 했던 미분 값 (aL/aw11)
#3. Overfitting
Training data에 너무 최적화(fitting)를 함으로 인하여 일반화(generalization) 성능이 떨어지는 현상
▶ Underfitting vs. Overfitting
- test error = training error + generalization gap
- model capacity(layer의 수)가 너무 작으면,
아무리 학습을 해도 성능이 안나옴 → Underfitting
- model capacity(layer의 수)가 너무 크면,
Generalization gap이 커짐 → Overfitting
- Deep Learning에 사용되는 model은 capacity가 대부분 크기 때문에
(layer의 수가 많음) overfitting에 취약함
1차원(Underfitting) | 4차원 | 15차원(Overfitting) |
성능이 떨어지는 부분이 존재 | 점으로 표시되지 않은 x값이 들어왔을 때 y예측이 잘못될 수 있음 (Deep Learning의 목적 : 내가 가지지 않은 데이터x에 대해서도 y예측이 잘 이루어져야 함) |
|
실제 정답인 초록색과 가장 멀리 떨어져있는 값으로 예측함 → 성능이 가장 좋지 않음 내가 가지고 있는 데이터에 너무 최적화시키려고 하다 보니, 내가 보지 못했던 데이터에 대해 성능이 떨어지는 현상 |
▶ Overfitting을 막는 방법
> 1. Data 양을 늘린다.
> 2. Regularization(정규화 or 규제) 방법을 사용
- L1 / L2 Regularization (Weight Decay)
- Dropout
- Batch Normalization
'데이터 분석 입문 > 딥러닝' 카테고리의 다른 글
TensorFlow와 PyTorch (0) | 2020.12.07 |
---|---|
Generative Adversarial Network (0) | 2020.12.07 |
Recurrent Neural Network(RNN) (0) | 2020.12.06 |
Convolutional Neural Network(CNN) (0) | 2020.12.06 |
Perceptron, Deep Learning, Gradient Descent (0) | 2020.12.05 |