어느정도 완성되었다고 생각한 팀 베이스라인 코드가 개인이 작성한 코드보다 좋은 성능을 발휘하지 못했다. 즉, 어딘가 잘못 맞춰진 부분이 있다는 것이다. 모든 팀원들이 개개인의 모델에서 사용했던 좋은 feature들을 베이스라인 코드에 붙였지만 과유불급이라고 오히려 코드의 성능이 더 못나오게 되었다. 협업이란 정말 쉽지 않은 일 같다.
모델의 성능을 개선시킬려고 하면서 느낀 점은 아직도 딥러닝에 있어서 아무것도 모른다는 점이다. 구글링을 하면 여러가지 기법들이 나오고 예전에 이해했다고 생각했던 기법도 다시 만나니 새로웠다. 쉽게 적용할 수 있겠다고 생각했던 것들도 막상 실제 문제에 적용하려고 하니 쉽지 않았다.
모델의 성능이 향상되지 않는 데에 있어서 우리가 내린 결론은 class imbalance로 인한 문제 였다. 처음부터 input class가 불균형해서 특정 age를 판단하는데에 있어서 오류가 있었다. 어떻게 해결할 수 있을 까 고민을 많이 해봤다. 팀 세션에서 나온 의견 중 애매한 경계에 있는 나이의 데이터들을 지워보자는 이야기가 있었다. 현재 클래스에서 나이를 '30세 미만' '30세이상 60세미만' '60세 이상' 이렇게 3부류로 나누고 있다. 이 중에서 애매한 경계에 있는 나이들 '25세에서 35세' '55세에서 65세'와 같이 이러한 데이터를 제외시키고 학습을 돌리는 것이다.
계속 곤두박칠 치던 모델의 성능이 드디어 올랐다. 솔직히 말해서 사람의 눈으로 본다고 해도 저렇게 애매한 나이 대에 있는 사람들은 판단하기 힘들 것 같다. 그래서 모델의 입장에서도 확실하게 구분할 수 있는 판단력을 주기위해 애매한 데이터를 삭제한 것이 좋은 시도였다고 생각한다.
모델의 과적합을 막는 방법을 공부할 필요가 있다고 느꼇다. 이번에 모델을 구축하고 성능을 테스트하면서 모델은 쉽게 학습데이터에 과적합을 해버린다는 사실을 깨달았다.
또한 이론에 대한 공부도 더 필요 할 것 같다. 수학적으로 아직 모르고 있는 부분이 많아서 다시 되짚어 볼 필요가 있을 것 같다. 구글링을 하게되면 여러가지 수학적인 설명이 뒷따르는데 대충대충 알고 있어서 실제로 적용하기가 힘든 것 같다.
다음 LEVEL-2에서 이러한 이론적인 부분을 다시 짚어줄지 궁금하다. 안 짚어줄수도 있기 때문에 이번주말에 조금 공부할 필요가 있을 것 같다