데이터셋 구성과 훈련 데이터 단위

LegendKi·2023년 12월 2일

MachineLearning

목록 보기
2/5

신경망을 학습하려면 데이터 셋은 어떻게 구성하는 것이 좋을까?
그리고 데이터를 어떤 단위로 입력해야 학습에 효율적일까?

관측 데이터의 구성

  • 관측 데이터를 구성할 때 중요한 것은 범주성 데이터의 경우 클래스별 비율을 맞추는 것이다.

클래스별로 데이터의 비율을 골고루 맞춰야 하며 특정 클래스의 데이터를 확보하기 어려워 한쪽 클래스에 데이터가 치우친다면 데이터를 강제로 늘려주거나 데이터의 분포를 고려하여 손실 함수에 가중치가 조절되도록 알고리즘적으로 해결해야 한다.

  • 반면 회귀 데이터읙 경우 입력 데이터가 근사하려는 함수 범위를 잘 지지하고 있는지 살펴봐야 한다.

신경망이 연속함수를 근사할 때 관측 데이터 사이의 함수 구간은 보간(interpolation)을 해서 근사하겠지만 관측 데이터 범위 밖의 영역에 있는 함수 구간에서 외삽(extrapolation)을 해서 근사할 경우 근사능력이 떨어지기 때문이다.

따라서 함수를 만들려는 범위에 필요한 데이터가 충분히 있는지 살펴봐야 한다.

데이터셋의 분리

  • 관측 데이터가 준비되면 데이터를 훈련 데이터셋(train set), 검증 데이터셋(validation set), 테스트 데이터셋(test set)으로 분리한다.
  • 훈련 데이터셋은 모델을 훈련할 때 사용한다.
  • 검증 데이터셋은 훈련된 모델의 성능을 평가해서 하이퍼 파라미터를 튜닝하는데 사용한다.
  • 테스트 데이터셋은 훈련이 완료된 모델의 성능을 평가할 때 사용한다.
  • 이 세 종류의 데이터 셋은 서로 중복되지 않도록 배타적으로 분리 해야 한다.

모델 성능을 평가할 대 훈련에 사용하지 않았던 새로운 데이터로 평가해야 일반화된 성능평가가 이루어지기 때문이다. 보통 훈련 데이터셋과 테스트 데이터셋은 전체 관측 데이터에서 8:2, 7.5:2.5, 7:3 정도의 비율로 분할해서 만들며 검증 데이터셋은 훈련 데이터셋에서 10%~20%정도를 분할해서 만든다.

훈련 데이터 단위

  • 훈련 데이터셋을 한꺼번에 입려하는 방식을 배치(batch)방식이라고 한다.

훈련 데이터셋이 작다면 배치 방식으로 학습할수 있지만, 신경망은 다른 머신러닝 알고리즘보다 많은 학습 데이터가 필요하고 그만큼 훈련 데이터셋이 크기 때문에 배치방식으로 학습하면 메모리 용량을 쉽게 초과한다. 그뿐만 아니라 온라인 학습(online learning)과 같이 서비스와 학습을 동시에 해야 하는 경우 데이터가 점진적으로 추가되므로 애초에 배치방식으로 훈련하기란 불가능하다.

  • 이와 같은 배치 방식의 한계를 극복하고자 데이터를 작은 단위로 묶어서 훈련하는 방식을 미니배치(minibatch)방식이라고 한다. 일반적으로 신경망은 미니배치 방식으로 학습한다.

  • 데이터 샘플 단위로 훈련할 수도 있는데 이런 방식을 확률적(stochastic)방식이라고 한다.
    보통 개별 샘플의 용량이 매우 클 때는 샘플 단위로 훈련하기도 한다. 미니배치의 크기를 1로 하면 확률적 방식이 되고 미니배치의 크기를 훈련 데이터셋 크기로 하면 배치 방식이 되므로 미니배치 방식이 가장 융통성 있다.

훈련 데이터 단위에 따른 경사 하강법의 분류

  • 훈련 데이터의 단위에 따라 경사 하강법도 배치 경사 하강법(batch gradient descent), 미니 배치 경사 하강법(minibatch gradient descent), 확률적 경사하강법(stochastic gradient descent)로 나뉜다.

    배치 경사 하강법은 그레이디언트를 정확히 계산하므로 부드러운 경로를 만들지만, 확률적 방식은 하나의 샘플로 그레이디 언트를근사하므로 상당히 많이 진동한다. 미니배치 방식도 작은 묶음의
    샘플로 그레이디언트를 근사하므로 두 방식의 중간 정도 수준에서 진동한다

미니배치 훈련 방식

  • 일반적으로 신경망 훈련을 할 때는 미니배치 방식으로 훈련한다. 미니 배치 방식을 배치 방식의 대안으로 생각할 수도 있겠지만 미니배치 방식을 사용하면 배치방식보다 학습이 더 빨라지고 모델의 성능이 좋아진다.
    1. 미니배치 방식은 데이터를 작은 단위로 묶어서 훈련하기 때문에 미니배치를 생성할 때마다 매번 다른 데이터로 묶인다. 따라서 그때마다 조금씩 다른 통계랑을 갖는 확률적 성질이 생긴다. 확률적 성질이 생기면 일반화 오류가 줄어들고 과적합이 방지되는 정규화 효과를 볼 수 있다.
    2. 배치 방식으로 훈련하면 그레디언트 계산은 정확하지만 학습 속도가 느려진다. 이 대 오히려 미니배치방식으로 훈련하면 그레디언트는 근사값을 갖지만 학습속도가 빨라지고 정규화 효과 덕분에 좋은 최적해를 찾을 수 있다.

미니배치의 크기는 어느 정도로 정해야 할까?

  • 일반적으로 미니배치의 크기는 2의 거듭제곱으로 정해야 GPU 메모리를 효율적으로 사용할 수 있다. (ex. 2, 4, 8, 16, 32, 64, 128, 512)
  • 미니배치를 키울 경우 증가하는 계산시간에 비해 얻을 수 있는 통계적 이득이 크지 않기 때문에 미니배치 크기를 무작정 키운다고 성능이 좋아지지 않는다.

    예를 들어 미니배치 크기를 100에서 10,000으로 늘린다고 해보자
    계산시간은 100배 증가하지만 표본 평균의 표준 편차는 σ100\frac{\sigma}{\sqrt{100}}에서 σ10000\frac{\sigma}{\sqrt{10000}}으로 10배밖에 감소하지 않는다. 따라서 모델의 성능에 가장 좋은 적절한 미니 배치 크기를 찾는 과정이 필요하다. 미니배치 크기는 하이퍼파라미터 만큼 신경망을 훈련하면서 검증 데이터셋을 이용해서 적절한 크기를 찾아야 한다.

  • 표본 평균의 표준 편차는 모집단의 표준 편차가 σ\sigma이고 샘플 수가 n일 때 σn\sigma\over\sqrt{n} 이다.

0개의 댓글