본문 바로가기

머신러닝 & 텐서플로 & 파이썬

머신러닝 : Overfitting (오버피팅)

반응형

오버피팅이란 것은 무엇인가?



머신러닝은 학습에 의핸 판단을 하는것입니다. 그래서 학습을 위한 데이타들이 필요하고 이 데이타를 기반으로 판단하게 되는데,

이 학습데이타에 너무 딱 맞게 모델을 설계하게 되면, 학습 데이타 이외의 실제 데이타에서 나쁜 결과가 나오게 됩니다.



오버피팅을 줄이는 방법~


1. 트레이닝 데이타를 많이 가지는것.

2. feature의 개수를 줄이는 방법

3. Regularization



Regularization 은 일반화 시키자는 것.


데이타들을 트레이닝 할때 모델을 결정하는 선들이 구불어지게 되는데,

이 구부러지는 것들을 좀 펼쳐서 처리하는 방법입니다.




L = loss

i = training set

\lambda = regularization strength

               0 이면 일반화 하지 않겠다.

               1 이면 매우 강하게 하겠다.

               0.001 크게 중요하진 않아..



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





layer가 깊을 수록 overfitting 가능성이 커집니다.

이유는 layer 가 깊을수로 변수들이 추가되고 해당 변수들에 가중치가 커지게 되면서 유연성이 떨어지게 됩니다.