출처: 모두를 위한 딥러닝 강좌 시즌 1 by Sung Kim
Learning Rate(학습률)
우리가 Gradient Descent와 같은 방법으로 cost를 줄여나갈 때, 매 step마다 적용되는 learning rate(α)를 잘 정할 필요가 있다.
학습률이 지나치게 클 때
- 한 step 마다 움직이는 거리가 너무 커서 최저점에 제대로 안착하지 못하고 있다.
- cost가 줄어들지 않고 굉장히 큰 값으로 가다가 바깥으로 튕겨나갈 수도 있는데, 이를 overshooting이라고 한다.
학습률이 지나치게 작을 때
- 학습률이 너무 작은 경우, 한 step 당 보폭이 너무 작아서 학습하는 데에 너무 오래 걸리고, 최저점까지 도달하지 못하고 멈출 수도 있다. 또한, 중간에 약간의 굴곡만 있어도 local minimum에 갇힐 수 있다.
- 따라서 cost를 출력해가면서 cost가 적절히 줄어들고 있는지 확인해보는 것이 좋다.
학습률은 처음에 0.01 정도로 시작해보고, cost의 변화를 관찰하면서 몇 가지 학습률를 시도해보는 것이 좋다.
Preprocessing(전처리) for gradient descent
- 경사 하강법은 위와 같이 가중치(w)의 변화에 따라서 등고선을 따라 내려가는 것과 같다.
- 그런데 위와 같이 데이터 크기의 차이가 크면, 한쪽으로 왜곡된 등고선 모양이 나타나게 되고, 적절한 학습률을 적용해도 cost가 등고선 상에서 이리 저리 튀게 된다.
- 따라서 데이터의 범위를 적절하게 맞춰주기 위해서 '전처리(preprocessing)'을 할 필요가 있다.
- 위의 가운데처럼, 각 데이터의 중심을 0에 맞춰 주는 zero-centering을 해줄 수도 있고,
- 오른쪽처럼 데이터의 범위를 동일하게 맞춰 주는 정규화(normalization)을 해줄 수도 있다.
- 위 그림은 정규화 방법 중 하나인 표준화(standardization)를 하는 방법을 나타낸 것이다.
Overfitting(과적합)
- 위 그림에서 왼쪽 모델은 보다 일반적으로 적용될 수 있는 모델인 반면,
- 오른쪽 그림은 해당 dataset에 과적합(overfitting) 되어 있는 모델로, 다른 dataset에 적용할 경우 굉장히 정확도가 떨어질 수 있다.
overfitting을 줄이는 방법
- training data 수를 늘린다.
- 데이터의 feature(특징)의 수를 줄인다.
- 일반화(regularization)를 한다.
일반화(regularization)란?
- 일반화는 가중치를 너무 크게 가지지 않도록 하는 것이다.
- 우리가 예측할 때 decision boundary를 어떤 특정한 데이터에 맞게 구부리는 것 자체를 overfitting한다고 하는데, 구부리지 말고 좀 펴주자는 것을 말한다.
- 어떤 특정한 가중치가 큰 값을 가지면 decision boundary가 구부러지게 되고, 가중치들을 작게 만들어주면 펴지게 된다.
- regularization은 비용 함수에 각각의 가중치의 제곱 합을 반영하는 항을 추가함으로써 반영할 수 있다.
- 가중치 제곱합에 regularization strength(λ)라는 상수를 곱해서 사용하는데, 이 상수의 값에 따라서 regularization을 얼마나 중요하게 반영할 지를 정할 수 있다.
- 이 값을 0으로 설정하면 regularization을 하지 않겠다는 것이다.