April 30, 2019
해당 게시물은 Edwith에서 제공하는
머신러닝과 딥러닝 BASIC을 듣고 요약 정리한 글입니다.
cost가 줄어들지 않고 그래프 밖으로 값이 튀어 나갈 수 있어
학습이 이루어지지 않을 수 있다.
이 현상을 Overshooting이라고 한다.
cost가 줄어들지만 너무 오래걸려 멈추게 되면 최저점에
도달하지 않아도 멈추는 경우가 있다.
이 상황을 방지하기 위해 cost의 값을 출력해보고 값이
너무 변하지 않으면 Learning rate를 조절해야하 한다.
Lerning rate를 정하는 것에는 답이 없다.
초기값으로는 보통 0.01을 사용한다.
발산이 될 경우 더 작게 너무 늦게 움직일 경우 더 크게 바꾸며 사용
경사하강법을 위한 데이터(X) 전처리
x1 | x2 | y |
---|---|---|
1 | 9000 | A |
2 | -5000 | A |
4 | -2000 | B |
6 | 8000 | B |
9 | 9000 | C |
다음과 같은 2차원 데이터에서 x2 데이터들의 차이가
너무 크기때문에 왜곡된 그래프가 그려질 수 있다.
이러한 상황에서 필요한 것이 정규화(Normalization)다.
데이터의 중심이 0으로 갈 수 있도록 변화
데이터가 어떠한 범위안에 항상 들어가도록 변화
계산한 평균과 분산을 나누어주면 된다.
X_sdt[:,0] = (X[:,0] - X[:,0].mean()) / X[:,0].std()
학습된 데이터에 너무 잘 맞는 모델이 생성되어 실제 테스트 결과가
알맞지 않은 결과를 도출하는 상황을 Overfitting이라고 한다.
가지고 있는 Weight을 큰 값을 갖지 안도록 하는 것
Overfitting된 그래프를 편다는 것은 Weight을 적은 값을 갖도록 하는 것
기존의 Loss (i는 Training SET)
변경된 Loss
뒤에 추가된 식에서 상수(람다)는 Regularization Strength라고 한다.
이 값이 0일 경우 일반화를 하지 않겠다. 클 경우 일반화를 중요하게 생각한다는 것이다.
W는 벡터의 값 각각의 Element에 제곱을 해준 값이다.
l2reg = 0.001 * tf.reduce_sum(tf.square(W))
Overfitting 해결