기계학습에서 반복적 학습 과정 (두리뭉실한 묘사)

주의: 기계학습의 기초적인 내용을 학습하는 중 이해가 어려웠던 부분을 정리한 내용입니다.  부정확한 정보가 있다면 부디 알려주시기 바랍니다.

기계 학습에서는 모델을 반복적으로 학습시킨다 (“iterative learning”). 일정 주기마다 전체 또는 일부의 학습 데이터를 모델에 넣고, 모델이 산출하는 결과 값에 대해 평가하여, “더 바람직한 방향으로” 모델을 업데이트한다.

한 번에 모델에 넣는 데이터의 양을 batch size 라고 한다. batch size 는 1 에서 데이터셋 전체 크기 사이의 값을 가질 수 있다. 만일 batch size 가 20 이고, 학습 데이터셋의 크기가 1000 이라면, 50 번의 반복학습 (iteration) 을 실행하게 된다. 50번 마다 모델의 파라미터가 업데이트 되는 것이다.

Per iteration:

매번의 iteration 마다 batch size 만큼의 학습 데이터를 모델에 넣고, 모델이 산출하는 결과값을 바탕으로 모델의 적합도를 측정한다. 적합도의 척도는 모델의 종류마다 다른데, 통상 줄이고 싶은 오차율을 척도로 삼기 때문에 loss, cost 등으로 부른다. Supervised Learning 의 경우 mean squared error, mean absolute percentage error 등이 있다.

위에서 언급한 “더 바람직한 방향으로” 모델을 업데이트한다는 것은 곧 loss 를 최소화하는 방향으로 모델을 업데이트하겠다는 것이다. 이를 위해 Stochastic Gradient Descent, ADAM, 등의 최적화 알고리즘을 사용한다.

Per epoch:

여러 번의 iteration 을 걸쳐 모든 데이터셋이 학습되었을 때 한 번의 epoch 이라고 간주한다. 보통 epoch 을 여러번으로 설정하여 모델을 학습시키는 것 같다. 매 epoch 마다 업데이트 된 모델의 “모의고사” 를 진행하여 모델의 적합도를 측정한다.

모의고사라고 하는 이유는 이것이 최종적인 모델에 대한 평가가 아니기 때문이다: 최종적인 모델 평가 (evaluation) 은 설정한 epoch 을 모두 거쳐 학습이 최종 완료된 후 별도의 test dataset 에 대해 수행한다. 매 epoch 마다 모의고사를 수행하기 위해서는 학습 데이터셋을 training set, validation set 으로 나누어 후자에 대해 모델을 평가한다.

매 epoch 마다 loss 등 모델에 대한 척도 값을 기록하면서 학습이 너무 오래 반복되었는지 등을 생각할 수 있다.

capture01capture02