Main Content

최적의 신경망 훈련을 위해 데이터 분할하기

이 항목에서는 일반적인 다층 신경망 워크플로의 일부를 보여줍니다. 자세한 내용과 그 밖의 단계는 얕은 다층 신경망과 역전파 훈련 항목을 참조하십시오.

다층 신경망을 훈련할 때는 일반적으로 먼저 데이터를 3개의 서브셋으로 분할합니다. 첫 번째 서브셋은 기울기를 계산하고 신경망 가중치와 편향을 업데이트하는 데 사용되는 훈련 세트입니다. 두 번째 서브셋은 검증 세트입니다. 훈련 과정 중에 검증 세트의 오차가 모니터링됩니다. 검증 오차는 훈련 세트 오차와 마찬가지로 일반적으로 훈련의 초기 단계가 진행되는 동안 감소합니다. 그러나 신경망이 데이터에 대해 과적합되기 시작하면 일반적으로 검증 세트의 오차가 증가하기 시작합니다. 신경망 가중치와 편향은 검증 세트 오차의 최솟값에서 저장됩니다. 이 기법은 얕은 신경망 일반화를 개선하고 과적합 방지하기 항목에서 자세히 설명합니다.

테스트 세트 오차는 훈련 중에는 사용되지 않지만, 여러 모델을 비교하는 데는 사용됩니다. 훈련 과정 중에 테스트 세트 오차를 플로팅하는 것 또한 유용합니다. 테스트 세트의 오차가 검증 세트 오차보다 현저히 다른 반복 횟수에서 최솟값에 도달한다면 데이터 세트를 적절하지 않게 분할한 것일 수 있습니다.

데이터를 훈련, 검증 및 테스트 세트로 분할하기 위해 네 가지 함수가 제공됩니다. dividerand(디폴트 값), divideblock, divideintdivideind입니다. 데이터 분할은 일반적으로 신경망을 훈련시킬 때 자동으로 수행됩니다.

함수

알고리즘

dividerand

데이터를 무작위로 분할(디폴트 값)

divideblock

데이터를 연속 블록으로 분할

divideint

인터리빙된 선택을 사용하여 데이터를 분할

divideind

데이터를 인덱스를 기준으로 분할

다음 속성을 사용하여 신경망의 분할 함수를 액세스하거나 변경할 수 있습니다.

net.divideFcn

각 분할 함수는 함수의 동작을 사용자 지정하는 파라미터를 받습니다. 이러한 값은 다음 신경망 속성을 사용하여 저장되며 변경할 수 있습니다.

net.divideParam

분할 함수는 신경망이 훈련될 때마다 자동으로 액세스되며, 데이터를 훈련, 검증 및 테스트 서브셋으로 분할하는 데 사용됩니다. net.divideFcn'dividerand'(디폴트 값)로 설정된 경우, 데이터가 분할 파라미터 net.divideParam.trainRatio, net.divideParam.valRatio, net.divideParam.testRatio를 사용하여 3개의 서브셋으로 무작위 분할됩니다. 훈련 세트에 배치되는 데이터 부분은 trainRatio/(trainRatio+valRatio+testRatio)이며, 다른 두 세트에도 비슷한 수식이 적용됩니다. 훈련, 테스트 및 검증의 디폴트 비율은 각각 0.7, 0.15, 0.15입니다.

net.divideFcn'divideblock'으로 설정된 경우, 데이터가 원본 데이터 세트의 3개의 연속 블록을 사용하여 3개의 서브셋으로 분할됩니다(훈련이 첫 번째 블록, 검증이 두 번째 블록, 테스트가 세 번째 블록 사용). 원본 데이터에서 각 서브셋에 배치되는 부분은 dividerand에 사용되는 것과 같은 3개의 분할 파라미터에 따라 결정됩니다.

net.divideFcn'divideint'로 설정된 경우, 데이터가 카드 한 패를 나누어 줄 때와 마찬가지로 인터리빙 방법을 사용하여 분할됩니다. 데이터의 서로 다른 백분율이 3개의 서브셋에 배치되도록 분할됩니다. 원본 데이터에서 각 서브셋에 배치되는 부분은 dividerand에 사용되는 것과 같은 3개의 분할 파라미터에 따라 결정됩니다.

net.divideFcn'divideind'로 설정된 경우, 데이터가 인덱스를 기준으로 분할됩니다. 3개의 서브셋에 대한 인덱스는 분할 파라미터 net.divideParam.trainInd, net.divideParam.valInd, net.divideParam.testInd로 정의됩니다. 이러한 인덱스에 대한 디폴트 할당은 null 배열이므로, 이 옵션을 사용할 때는 인덱스를 설정해야 합니다.