간단한 이미지 분류 작업인데, 그것도 단 두 가지로 분류하는 이진 분류 작업인데, 이게 잘 되지 않고 있다.
캐글 데이터셋으로 작업중이기 때문에 다른 사람의 노트북을 볼 수 있다. 그래서 금메달, 은메달을 수여받은 노트북을 읽었다. 그런데 둘 모두 데이터셋을 training/validation/test 셋으로 분류할 때 잘못된 방법을 쓰고 있었다. 이 데이터는 영상을 캡쳐한 연속적 이미지 데이터이므로, 한 영상의 캡쳐 이미지가 training과 validation/test 모두에 들어가게 되면 데이터셋은 오염된다. 그래서 이를 방지하기 위해 나는 영상 단위로 training/validation/test 데이터를 분류했다. 그런데 캐글의 노트북들은 전체 캡쳐자료를 그냥 랜덤 셔플링해서 분류하고 있었다. 그러니 어떤 모델을 사용하든 좋은 결과가 나올 수 밖에 없다. 모델이 영상자체를 학습해버리게 되니까…
그런데 이 캐글 데이터셋의 출처는 학회에 발표된 논문이다. 논문에서는 Pretrained AlexNet과 저자들의 자체 모델을 이용해 이미지를 분류했고 ‘둘 모두에서’ 90% 대의 정확도를 기록했다. 그런데 나의 경우, 저자들이 사용한 것과 동일한 방법으로 AlexNet을 이용해 데이터를 분류했을 때, training 정확도는 90% 대였지만 validation 정확도는 20%와 70% 사이를 오갔다. 학습률과 epoch를 조정해봤지만 결과는 개선되지 않았다.
그러니 자연히 의구심이 들었다. Replication을 시도했을 때 Validation 정확도가 이렇게 무작위에 가까울 정도라면, 이는 저자들의 방법론에 문제가 있을 수 있지 않을까?
그러니까, 혹시 저자들도 오염된 데이터셋으로 결과를 낸 것은 아닐까?
물론, 내가 잘못하고 있을 가능성이 더 높다. 그것도 훨씬 더 높다.
우선 나는 데이터 분석의 초보자이고 저자들은 해당 논문을 국제적 학회에 발표했다. 저자가 여러명인 논문이기도 하다. 이런 초보자적인 실수를 했을 것 같지는 않다.
또한 저자들은 캐글에 자신들이 사용한 데이터를 전부 공개하지 않고 약 1/3만 공개했다.
마지막으로, 저자들은 AlexNet 훈련에 시간이 2시간가량 소요되었다고 밝혔는데, 저자들이 아주 구린 사양의 컴퓨터를 사용한 것이 아닌 이상 내가 한 것과 어딘가 크게 다른 훈련을 했을 가능성이 높다. 왜냐하면 내가 30epoch씩 돌릴 때 약 10분이 소요되었기 때문이다. 저자들이 사용한 데이터셋을 사용했다면 30분여가 걸렸을 텐데 그럼 약 1/4의 시간에 훈련이 마무리되고 있다고 봐야 한다.
무엇이 문제일까?
너무 답답해서 ResNet50으로도 훈련시켜 보았다. 훈련에 약 70분이 소요되었다. 결과는 AlexNet과 비슷했다.
우선 팀원들에게 상황과 코드를 공유했다. 팀원들의 의견을 듣고 싶다.