적은 수의 데이터를 이용한 머신러닝

이미지와 라벨 데이터 각각 50개를 이용한 머신러닝에 대한 실험입니다. Segmentation 방식이며 BOX 검출을 위한 모델은 Fast R-CNN을 사용했습니다. 하이퍼파라메터 중 에폭수 만을 변경하여 테스트했고 러닝이 완료되면 50개의 훈련 데이터 중에 하나로 시험했습니다. 시험 데이터와 훈련 데이터는 나누는게 일반적이나, 워낙 훈련 데이터가 소량인지라 시각적으로 시험 결과를 부각시키기 위함입니다. 글 중에는 주관적인 직관으로 작성된 내용도 포함하고 있습니다.

가장 먼저 학습을 전혀 하지 않은, 즉 에폭이 0인 경우에도 시험을 했습니다. 아래는 에폭이 0인 경우와 1인 경우에 대한 결과입니다.

Segmentation을 위한 모델은 Mask R-CNN을 이용했는데, 이 모델은 가장 먼저 특징점을 찾습니다. 찾을 특징점의 최대 개수는 100로 지정하였으므로, 학습이 전혀 되지 않아도 일단 100개를 찾게되었지만 검출 결과는 사람이 아닙니다. 하지만 특징점 추출은 이미지의 Gradient가 가장 심한 곳이 대부분일 것으므로 사람과 배경 경계, 건물의 창문 모서리 등과 같은 코너(Corner) 지점에서 검출이 되는 것으로 예상할 수 있습니다. 주목할 점은 검출 대상이 사람인지에 대한 최대 확률은 약 50%로 나왔다는 점입니다. 이는 전혀 학습되지 않을 경우 해당 픽셀이 사람인지 아닌지에 대한 결정은 단순 확률로써 50% 이기 때문입니다. 이제 학습을 1 에폭 수행했을 경우 픽셀 검출이 사람으로 특정되는 것을 볼 수 있습니다. 검출 대상 개수는 총 77개로 줄어들었지만 해당 검출 대상이 사람이라는 확률은 약 28%가 도출되었습니다. 또한 검출 픽셀이 대상의 중심으로 몰려있다는 점이 주목할만합니다. 에폭수를 늘리면 검출대상과 검출 대상이 사람인지에 대한 확률이 올라갈 것으로 기대하고 에폭 수를 3과 10을로 지정하여 학습을 시켰고, 그 결과는 다음과 같습니다.

검출 대상 결과는 좀더 사람의 형태에 확장되면서 접근하고 있습니다. 검출 대상도 에폭수에 비례하여 줄어들었구요. 그러나 검출 픽셀이 사람인지에 대한 확률은 3 에폭에서는 약 33%이고 10 에폭에서는 약 27%입니다. 오히려 더 줄어 들었습니다. 너무 적은 데이터만을 가지고 학습 한 결과라고 예상합니다. 확인을 위해 에폭을 20과 100으로 잡아 학습 시킨 결과는 아래와 같습니다.

20 에폭에서는 검출 개수가 더 줄었지만, 100 에폭에서는 오히려 검출 개수가 늘어났습니다. 또한 검출 대상이 사람인지에 대한 확률값이 각각 약 32%과 약 29%로 증가는 전혀 없다고, 아니 오히려 떨어졌습니다. 이 역시 훈련 데이터가 너무 적기 때문인 것으로 판단됩니다.

일단 소량의 데이터를 통해 학습 시킨 이유는 모델의 검증을 위해서입니다. 학습 각 단계마다 손실값이 줄어들고 있는지 등을 빠르게 확인하기 위해서인데.. 실제로 이 실험의 경우 에폭이 증가 할수록 손실값은 줄어드는 경향을 보였고 특정 에폭지점 이상부터는 손실값이 더 이상 감소하지 않는 것을 볼 수 있었습니다. 이런 손실값의 경향에 따라 모델은 어느 정도 접합하다라고 판단할 수 있고, 데이터를 더 추가하여 학습 시키면 더 나은 결과를 얻을 수 있을 것입니다. 데이터를 더 이상 추가할 수 없는 경우에는 하이퍼 파라메터를 변경하면서 정확도를 향상 시킬 수 있습니다.

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다