더 이상 Amazon Machine Learning 서비스를 업데이트하거나 새 사용자를 받지 않습니다. 이 설명서는 기존 사용자에 제공되지만 더 이상 업데이트되지 않습니다. 자세한 내용은 Amazon Machine Learning이란? 단원을 참조하세요.
학습 파라미터
일반적으로 기계 학습 알고리즘은 학습 프로세스 및 결과 ML 모델의 특정 속성을 제어하는 데 사용할 수 있는 파라미터를 받아들입니다. Amazon Machine Learning에서는 이를 학습 파라미터라고 합니다. 이들 파라미터는 Amazon ML 콘솔, API 또는 명령줄 인터페이스(CLI)를 사용하여 설정할 수 있습니다. 파라미터를 설정하지 않으면 Amazon ML은 광범위한 기계 학습 작업에 잘 작동하는 것으로 알려진 기본값을 사용합니다.
다음 학습 파라미터에 대해 값을 지정할 수 있습니다.
-
최대 모델 크기
-
학습 데이터의 최대 전달 횟수.
-
셔플 유형
-
정규화 유형
-
정규화 정도
Amazon ML 콘솔에서는 학습 파라미터가 기본적으로 설정되어 있습니다. 기본 설정은 대부분의 ML 문제에 적합하지만 다른 값을 선택하여 성능을 미세 조정할 수 있습니다. 학습률과 같은 기타 특정 학습 파라미터는 데이터를 기반으로 구성됩니다.
다음에 이어지는 단원에서는 학습 파라미터에 대한 자세한 정보를 제공합니다.
최대 모델 크기
최대 모델 크기는 Amazon ML이 ML 모델을 학습하는 동안 생성하는 패턴의 총 크기(바이트 단위)입니다.
기본적으로 Amazon ML은 100MB 모델을 생성합니다. 크기를 다르게 지정하여 더 작거나 큰 모델을 생성하도록 Amazon ML에 지시할 수 있습니다. 사용 가능한 크기 범위는 ML 모델 유형 단원을 참조하세요.
Amazon ML은 모델 크기를 채울 만큼 충분한 패턴을 찾지 못하면 더 작은 모델을 만듭니다. 예를 들어, 최대 모델 크기를 100MB로 지정했는데 Amazon ML이 총 50MB에 불과한 패턴만 찾아내면 결과 모델은 50MB가 됩니다. Amazon ML은 지정된 크기에 맞는 것보다 더 많은 패턴을 발견하면 학습된 모델의 품질에 가장 영향을 미치지 않는 패턴을 트리밍하여 최대 커트라인을 적용합니다.
모델 크기를 선택하면 모델의 예측 품질과 사용 비용 간의 균형을 조절할 수 있습니다. 모델이 작으면 Amazon ML에서 최대 크기 한도 내에 맞춰 많은 패턴을 제거하여 예측 품질에 영향을 미칠 수 있습니다. 반면 모델이 클수록 실시간 예측을 위한 쿼리 비용이 더 많이 듭니다.
참고
ML 모델을 사용하여 실시간 예측을 생성하는 경우 모델 크기에 따라 결정되는 소액의 용량 예약 요금이 부과됩니다. 자세한 내용은 Amazon EKS 요금 단원을 참조하세요.
모델은 입력 데이터가 아니라 패턴을 저장하기 때문에 입력 데이터 세트가 크다고 해서 반드시 모델 크기가 커지는 것은 아닙니다. 패턴이 적고 단순하면 결과 모델은 작아집니다. 원시 속성(입력 열) 또는 파생 특성(Amazon ML 데이터 변환의 출력)이 많은 입력 데이터는 학습 프로세스 중에 더 많은 패턴을 발견하고 저장하게 될 것입니다. 몇 번의 실험을 통해 데이터와 문제에 적합한 모델 크기를 선택하는 것이 가장 좋습니다. Amazon ML 모델 학습 로그(콘솔이나 API를 통해 다운로드 가능)에는 학습 프로세스 중에 발생한 모델 트리밍(있는 경우)에 대한 메시지가 포함되어 있어 잠재적인 적중률 예측 품질을 추정할 수 있습니다.
데이터의 최대 전달 횟수.
최상의 결과를 얻으려면 Amazon ML에서 패턴을 찾기 위해 데이터를 여러 번 전달해야 할 수 있습니다. 기본적으로 Amazon ML은 10회의 전달을 수행하지만 숫자를 최대 100개로 설정하여 기본값을 변경할 수 있습니다. Amazon ML은 진행 과정에서 패턴 품질(모델 컨버전스)을 추적하고 더 이상 발견할 데이터 포인트나 패턴이 없을 경우 자동으로 학습을 중단합니다. 예를 들어, 전달 횟수를 20으로 설정했는데 Amazon ML이 15번의 전달이 끝날 때까지 새로운 패턴을 찾을 수 없다는 것을 발견하면 15회 전달이 되면 학습이 중지됩니다.
일반적으로 관측치가 몇 개뿐인 데이터 세트의 경우 모델 품질을 높이려면 일반적으로 데이터를 더 많이 전달해야 합니다. 데이터 세트가 클수록 유사한 데이터 포인트가 많이 포함되는 경우가 많기 때문에 많은 수의 전달이 필요하지 않습니다. 데이터에 대해 더 많은 데이터 전달을 선택하는 것은 두 가지 영향을 미칩니다. 모델 학습에 더 많은 시간이 걸리고 비용도 더 많이 든다는 것입니다.
학습 데이터의 셔플 유형
Amazon ML에서는 학습 데이터를 셔플링해야 합니다. 셔플링은 데이터 순서를 혼합하기 때문에 SGD 알고리즘이 연속적으로 너무 많은 관측치에서 한 가지 유형의 데이터만 접하지 않습니다. 예를 들어, ML 모델을 학습시켜 제품 유형을 예측하고 학습 데이터에 영화, 장난감 및 비디오 게임 제품 유형이 포함된 경우 업로드하기 전에 제품 유형 열을 기준으로 데이터를 정렬하면 알고리즘이 데이터를 제품 유형별로 알파벳순으로 확인합니다. 알고리즘이 먼저 영화에 대한 모든 데이터를 확인하면 ML 모델이 영화에 대한 패턴을 학습하기 시작합니다. 그런 다음 모델이 장난감에 대한 데이터를 접하면 해당 알고리즘이 수행하는 모든 업데이트는 장난감 제품 유형에 대한 모델에 적합하게 됩니다. 이러한 업데이트로 인해 영화에 적합한 패턴이 저하되는 경우에도 마찬가지입니다. 영화에서 장난감 유형으로 갑자기 전환하면 제품 유형을 정확하게 예측하는 방법을 학습하지 못하는 모델이 생성될 수 있습니다.
입력 데이터 소스를 학습 부분과 평가 부분으로 분리할 때 임의 분할 옵션을 선택한 경우에도 학습 데이터를 셔플링해야 합니다. 임의 분할 전략은 각 데이터 소스에 대해 데이터의 하위 집합을 무작위로 선택하지만 데이터 소스의 행 순서를 변경하지는 않습니다. 데이터 분할에 대한 자세한 내용은 데이터 분할 단원을 참조하세요.
콘솔을 사용하여 ML 모델을 생성할 때 Amazon ML은 기본적으로 유사 무작위 셔플링 기법을 사용하여 데이터를 셔플링합니다. 요청된 전달 횟수에 관계없이 Amazon ML은 ML 모델을 학습시키기 전에 데이터를 한 번만 셔플링합니다. Amazon ML에 데이터를 제공하기 전에 데이터를 셔플링했고 Amazon ML에서 데이터를 다시 셔플링하지 않도록 하려면 셔플 유형을 none
로 설정하면 됩니다. 예를 들어 Amazon S3에 업로드하기 전에 .csv 파일의 레코드를 무작위로 셔플링했거나, Amazon RDS에서 데이터 소스를 생성할 때 MySQL 쿼리의 rand()
함수를 사용했거나, Amazon Redshift에서 데이터 소스를 생성할 때 Amazon Redshift SQL 쿼리의 random()
함수를 사용한 경우, 셔플 유형을 none
로 설정해도 ML 모델의 예측 정확도에는 영향을 미치지 않습니다. 데이터를 한 번만 셔플링하면 ML 모델을 만드는 데 드는 런타임과 비용을 줄일 수 있습니다.
중요
Amazon ML API를 사용하여 ML 모델을 생성하면 Amazon ML이 기본적으로 데이터를 셔플링하지 않습니다. 콘솔 대신 API를 사용하여 ML 모델을 생성하는 경우 sgd.shuffleType
파라미터를 auto
로 설정하여 데이터를 셔플링하는 것이 좋습니다.
정규화 유형 및 정도
데이터에 너무 많은 패턴이 포함되어 있으면 복잡한 ML 모델(입력 속성이 많은 모델)의 예측 성능이 저하됩니다. 패턴 수가 늘어날수록 모델이 실제 데이터 패턴 대신 의도하지 않은 데이터 아티팩트를 학습할 가능성도 커집니다. 이 경우 모델은 학습 데이터에서는 잘 작동하지만 새 데이터에 대해서는 일반화할 수 없습니다. 이러한 현상을 학습 데이터의 과적합이라고 합니다.
정규화를 사용하면 극단적인 가중치 값에 페널티를 부과하여 선형 모델이 학습 데이터 예에 과적합되는 것을 방지할 수 있습니다. L1 정규화에서는 적은 가중치를 갖게 될 특성의 가중치를 0으로 만들어 모델에서 사용되는 특성의 수가 감소됩니다. L1 정규화는 희소 모델을 생성하고 모델의 노이즈 양이 감소됩니다. L2 정규화 결과, 전체 가중치가 더 작아져서, 특성 간의 상관 관계가 높을 때 가중치가 안정화됩니다. Regularization amount
파라미터를 사용하면 L1 또는 L2 정규화의 정도를 제어할 수 있습니다. 너무 큰 Regularization
amount
값을 지정하면 모든 특성의 가중치가 0이 될 수 있습니다.
최적의 정규화 값을 선택하고 조정하는 것은 기계 학습 연구에서 활발한 주제입니다. Amazon ML 콘솔의 기본값인 적당한 정도의 L2 정규화를 선택하면 도움이 될 것입니다. 고급 사용자는 세 가지 유형의 정규화(없음, L1 또는 L2)와 정도 중에서 선택할 수 있습니다. 정규화에 대한 자세한 내용은 정규화(수학)
학습 파라미터: 유형 및 기본 값
다음 표에는 Amazon ML 학습 파라미터가 기본 값 및 각 파라미터의 허용 범위와 함께 나열되어 있습니다.
학습 파라미터 |
유형 |
기본 값 |
설명 |
---|---|---|---|
maxMLModelSizeInBytes |
정수 |
100,000,000바이트(100MiB) |
허용 범위: 100,000(100KiB) ~ 2,147,483,648(2GiB) 입력 데이터에 따라 모델 크기가 성능에 영향을 미칠 수 있습니다. |
sgd.maxPasses |
정수 |
10 |
허용 범위: 1~100 |
sgd.shuffleType |
문자열 |
auto |
허용 값: |
sgd.l1RegularizationAmount |
Double |
0(기본적으로 L1은 사용되지 않음) |
허용 범위: 0~MAX_DOUBLE 1E-4와 1E-8 사이의 L1 값은 양호한 결과를 생성하는 것으로 확인되었습니다. 값이 클수록 그다지 유용하지 않은 모델이 생성될 수 있습니다. L1과 L2를 모두 설정할 수는 없습니다. 두 선택기 중 하나만 선택해야 합니다. |
sgd.l2RegularizationAmount |
Double |
1E-6(기본적으로 이 정도의 정규화에는 L2가 사용됨) |
허용 범위: 0 ~ MAX_DOUBLE 1E-2 및 1E-6 사이의 L2 값은 양호한 결과를 생성하는 것으로 확인되었습니다. 값이 클수록 그다지 유용하지 않은 모델이 생성될 수 있습니다. L1과 L2를 모두 설정할 수는 없습니다. 두 선택기 중 하나만 선택해야 합니다. |