과대적합(overfitting), 과소적합(underfitting) 야나두 딥러닝

  모델 돌린 이후에 분석하는 overfitting, underfitting
   딥러닝 모델 돌린 이후에 학습 그래프를 살펴 본다.   학습 그래프를 보았을때,  생각 하였던 것보다 모델의 결과가 않좋을 때가 있다.   즉 underfitting나는 경우가 많은 데,  데이터가 적거나  사람이 구분 못하는 이미지를 발견 하였을 때이다.   하지만,  keras API를 사용하였을때는 이것과 반대로 나타나는 경우가 있다. overfitting이 발견되어서,   좀 더 낮은 모델을 선택 하는 경우도 발생 하는 경우가 있다.   


학습곡선을 통해 과대적합과 과소적합 알아보기 

과대 적합이란 모델이 훈련 세트에서 좋은 성능을 내지만 검증 세트에서는 낮는 성능을 내는 경우를 말한다.   구체적인 예로 분류 문제에서 훈련 세트의 정확도가 99%이고 검증 세트의 정확도가 80% 수준이라면 과대적합을 의심 할 수 있다.

   반면에 과소적합은 훈련 세트와 검증 세팅의 성능에는 차이가 크지 않지만 모두 낮은 성능을 나타내는 것이다. 




첫번째 학습곡선은 과대적합의 전형적인 모습이다.  훈련세트의 정확도와 검증 세트의 정확도의 간격이 큰 것이다.   그래서 과대 적합된 모델을 '분산이 크다'라고 말한다. 

과대적합의 주요원인 중 하나는 훈련 세트에 충분히 다양한 패턴의 샘플이 포함되지 않은 경우 이다.  훈련 세트에 다양한 패턴의 샘플이 없으니,  검증 세트에서 제대로 적응하지 못한 것이다.    이런 경우는 훈련세트의 샘플을 더 모아 성능을 향상 시킬 수 있다.  

현실적인 한계로 훈련 샘플을 더 많이 모을 수 없는 경우도 있다.  이런 경우에는 모델이 훈련세트에 집착하지 않도록 가중치를 제한 할 수 있다.  이를'모델의 복잡도를 낮춘다' 라고 말한다. 


에포크와 손실 함수의 그래프로 과대적합과 과소적합 

  에포크에 대한 손실 함수의 그래프를 사용하여 과대적합과 과소적합을 분석 하기도 한다. 
그래서 에포크에 대한 손실 함수의 그래프를 학습 곡선이라고 부로는 경우도 종종 있다. 다음은 에포크와 손실 함수에 대한 그래프와 에프크와 정확도에 대한 그래프 이다. 



 위의 왼쪽 그래프는 검증 세트의 손실과 훈련 세트의 손실을 나타낸 것이다.  훈련 세트의 손실은 에포크가 진행될수록 감소하지만  검증 세트의 손실은 에포크의 횟수가 최적점을 지나가면 오히려 상승 한다.    

최적점 이후에도 계속 해서 훈련 세트로 모델을 학습시키면 모델이 훈련 세트의 샘플에 더 밀착하여 학습하기 때문입니다.  즉, 모델이 과대 적합 되기 시작 한다. 

반대로 최적점 이전에는 훈련 세트와 검증 세트의 손실이 비슷한 간격을 유지하면서 함께 줄어 드는데,  이 영역에서 학습을 중지하면 과소 적합된 모델이 만들어 진다.

정확도 그래프는 손실 그래프를 뒤집는 것과 같다. 

 
모델 복잡도와 손실 함수의 그래프로 과대적합과 과소적합 분석  

조금씩 가로축에 에포크 대신 모델 복잡도를 넣어 그래프를 표현



모델 복잡도란 모델이 가진 학습 가능한 가중치 개수를 말하는데,  층의 개수나 유닛의 개수가 많아지면 복잡도가 높은 모델이 만들어진다.  모델이 복잡해지만, 무조건 좋을 것 같지만 실제로 그러하지 않다.  예를 들어 모델이 훈련 세트에만 잘 맞는 형태로 만들어 지면 훈련 세트에서만 좋은 성능을 내기 때문이다.  과대 적합의 케이스가 그러하다. 

  
  과대 적합/ 과소 적합 그만큼 중요 하다.  아래를 클릭 하여 소스코드를 보면 된다. 



※ 참고서적 : 정직하게 코딩하며 배우는 딥러닝 입문 (이지스퍼블리싱)

댓글 없음:

댓글 쓰기

css cheat sheet 클래스 선택자, margin(마진), display , center 조정 간단한 구성 요소

 앞에서는 html의 간단한 sheet를 소개 하였습니다.   html은  주로 골격을 나타나는 것이라, 디자인을 하는데는 css로 하여야 합니다.  아래 코드와 같이 css 관련 하여 매우 간단하게 코딩 하겠습니다.  body 부분의 css 코딩  ...