학습 rate, Overfitting, 일반화

learning rate : GradientOptimizer 알고리즘 실행 시 사용한다.

러닝레이트가 너무 크면 -> Overshooting

러닝레이트가 너무 작으면 -> 너무 오랜 시간, 많은 횟수가 필요해진다. Cost의 변화량이 너무 작으면 learning_rate를 좀 올릴 필요가 있다.

가지고 있는 데이터, 환경에 따라 다르기 때문에 처음에 0.01 정도로 해보고 발산값이 너무 크면 좀 더 작게, 너무 작으면 좀 더 크게 선택하는 게 좋다.

learning rate를 잘 잡았는데 이상하게 학습이 일어나지 않고, cost가 발산한다거나 이상해 보일때는 차이가 너무 많이 나는 데이터가 아닌지 데이터를 preprocessing 할 필요가 있다.

그렇게 데이터를 전처리할 방법 중 하나로 Standardization이 있다. x값에서 평균을 뺀 값을 분산으로 나눈 값이다.

Overfitting : 학습 데이터에 너무 딱 맞는 모델을 만들어 내는 것. 학습 데이터를 가지고 물어보면 정확히 답을 하지만, 테스트 데이터를 가지고 하면 정확하지 않을 수 있다.

Training data를 많이 가지고 있거나, features 개수를 줄이는 것. Regularization(일반화) 를 통해서 Overfitting 을 방지할 수 있다.

일반화 : Cost 최소화를 구현할 때 뒤에 저걸 붙여서 전체 요소의 제곱의 합에 상수를 곱한 값을 더하는데 그 상수값이 Regulation Strength가 된다. RS가 0이면 일반화를 안쓴다는 거고 1이면 일반화를 중시한다. 0.001이면 일반화 하긴 하는데 그렇게 중요하지 않다 정도가 된다.

l2reg = 0.001 * tf.reduce_sum(tf.square(W))

results for ""

    No results matching ""