
안녕하세요. AI팀 박성환 입니다.
머신러닝 학습 방법에 대한 기초 이해에 대해 설명하려고 합니다.
머신러닝의 데이터 학습 방법에는 지도 학습(Supervised Learning)과 비지도 학습(Unsupervised Leaning), 강화 학습(Reinforcement Learning) 3가지 타입이 있습니다.
머신 러닝 학습 방법

지도 학습(Supervised Learning)
지도 학습은 쉽게 설명하면 데이터에 명시적인 정답인 레이블(label)을 주고 컴퓨터를 학습시키는 방법입니다.
이렇게 구성된 트레이닝 데이터셋으로 학습이 끝나면, 레이블(label)이 지정되지 않은 테스트 데이터셋(test dataset)을 이용해서,
학습된 알고리즘이 얼마나 정확히 예측(Prediction)하는지를 측정할 수 있습니다.
비지도 학습(Unsupervised Leaning)
비지도 학습(Unsupervised Learning)은 지도 학습(Supervised Learning) 혹은 강화 학습(Reinforcement Learning)과 달리 입력 값에 대한 목표치가 주지 않습니다.
비지도 학습은 통계의 밀도 추정(Density Estimation)과 깊은 연관을 가집니다.
이러한 비지도 학습은 데이터의 주요 특징을 요악하고 설명할 수 있습니다.
비지도 학습의 예로는 클러스터링(Clustering), 독립 성분 분석(Independent Component Analysis), 연관성 규칙, 데이터 축소 등이 있습니다.
강화 학습(Reinforcement Learning)
강화 학습은 행동심리학에서 영감을 받았습니다.
어떤 환경 안에서 정의된 에이전트가 현재의 상태를 인식하여, 선택 가능한 행동들 중 보상을 최대화하는 행동 혹은 행동 순서를 선택하는 방법입니다.
즉, 훈련을 잘 따르면 보상(reward)를 주고 못하면 벌(punishment)을 주어 감독관이 원하는 방향으로 학습을 하게 됩니다.
지도 학습처럼 입력과 출력이 명확한 관계를 갖고 있는 상황이 아니라 환경과의 상호 작용의 결과로서 학습을 하거나 경우의 수가 너무 많아
옳고 그름에 대해 사전에 명확하게 기술하기 어려운 환경에 적합한 학습방법입니다.
머신 러닝 학습 단위
기계는 실제값과 예측값의 오차로부터 옵티마이저를 통해서 가중치를 업데이트합니다. 머신 러닝에서는 이 과정을 학습이라고 합니다.
이를 현실의 학습에 비유하면 사람은 문제지의 문제를 풀고, 정답지의 정답을 보면서 채점을 하면서 부족했던 점을 깨달으며 머릿속의 지식이 업데이트되는 과정입니다.
그런데 사람마다 동일한 문제지와 정답지를 주더라도 공부 방법은 사실 천차만별입니다.
어떤 사람은 문제지를 3번 공부하는데, 다른 사람은 문제지의 문제를 달달 외울만큼 문제지를 100번 공부합니다.
기계도 똑같아서 같은 문제지와 정답지를 주더라도 공부 방법을 다르게 설정할 수 있습니다.
위의 그림은 에포크와 배치 크기와 이터레이션의 차이를 보여줍니다. 위의 그림의 예제를 통해 설명해보겠습니다.

1) 에포크(Epoch)
에포크란 인공 신경망에서 전체 데이터에 대해서 순전파와 역전파가 끝난 상태를 말합니다.
전체 데이터를 하나의 문제지에 비유한다면 문제지의 모든 문제를 끝까지 다 풀고, 정답지로 채점을 하여 문제지에 대한 공부를 한 번 끝낸 상태를 말합니다.
만약 에포크가 50이라고 하면, 전체 데이터 단위로는 총 50번 학습합니다. 문제지에 비유하면 문제지를 50번 푼 셈입니다.
이 에포크 횟수가 지나치거나 너무 적으면 앞서 배운 과적합과 과소적합이 발생할 수 있습니다.
※ 순전파(Foward Propagation)

활성화 함수, 은닉층의 수, 각 은닉층의 뉴런 수 등 딥 러닝 모델을 설계하고나면 입력값은 입력층, 은닉층을 지나면서
각 층에서의 가중치와 함께 연산되며 출력층으로 향합니다. 그리고 출력층에서 모든 연산을 마친 예측값이 나오게 됩니다.
이와 같이 입력층에서 출력층 방향으로 예측값의 연산이 진행되는 과정을 순전파라고 합니다.
2) 배치 크기(Batch size)
배치 크기는 몇 개의 데이터 단위로 매개변수를 업데이트 하는지를 말합니다.
현실에 비유하면 문제지에서 몇 개씩 문제를 풀고나서 정답지를 확인하느냐의 문제입니다.
사람은 문제를 풀고 정답을 보는 순간 부족했던 점을 깨달으며 지식이 업데이트 된다고 하였습니다.
기계 입장에서는 실제값과 예측값으로부터 오차를 계산하고 옵티마이저가 매개변수를 업데이트합니다.
여기서 중요한 포인트는 업데이트가 시작되는 시점이 정답지/실제값을 확인하는 시점이라는 겁니다.
사람이 2,000 문제가 수록되어있는 문제지의 문제를 200개 단위로 풀고 채점한다고 하면 이때 배치 크기는 200입니다.
기계는 배치 크기가 200이면 200개의 샘플 단위로 가중치를 업데이트 합니다.
여기서 주의할 점은 배치 크기와 배치의 수는 다른 개념이라는 점입니다.
전체 데이터가 2,000일때 배치 크기를 200으로 준다면 배치의 수는 10입니다.
이는 에포크에서 배치 크기를 나눠준 값(2,000/200 = 10)이기도 합니다.
이때 배치의 수를 이터레이션이라고 합니다.
3) 이터레이션(Iteration)
이터레이션이란 한 번의 에포크를 끝내기 위해서 필요한 배치의 수를 말합니다.
또는 한 번의 에포크 내에서 이루어지는 매개변수의 업데이트 횟수이기도 합니다.
전체 데이터가 2,000일 때 배치 크기를 200으로 한다면 이터레이션의 수는 총 10개입니다.
이는 한 번의 에포크 당 매개변수 업데이트가 10번 이루어진다는 것을 의미합니다.
SGD를 이 개념을 가지고 다시 설명하면, SGD는 배치 크기가 1이므로 모든 이터레이션마다 하나의 데이터를 선택하여 경사 하강법을 수행합니다.
정리
위 내용에서 머신 러닝의 데이터 학습 방법과 학습 단위에 대해 간략하게 알아보았습니다.
저희가 사용하는 자연어 처리에서는 일반적인 언어 모델(language model)에서도 학습 방법과 구조에 따라 종류가 나뉩니다.
또한, 기계 학습 시 epoch, batch_size의 수를 지정하여 학습 단위를 조정하여 진행합니다.
학습 단위에 따라 결과가 다르게 진행되기 때문에 적절한 단위 조정이 필요합니다.