신경망 회귀
중요
Machine Learning Studio(클래식)에 대한 지원은 2024년 8월 31일에 종료됩니다. 해당 날짜까지 Azure Machine Learning으로 전환하는 것이 좋습니다.
2021년 12월 1일부터 새로운 Machine Learning Studio(클래식) 리소스를 만들 수 없습니다. 2024년 8월 31일까지는 기존 Machine Learning Studio(클래식) 리소스를 계속 사용할 수 있습니다.
- ML Studio(클래식)에서 Azure Machine Learning으로 기계 학습 프로젝트 이동에 대한 정보를 참조하세요.
- Azure Machine Learning에 대한 자세한 정보.
ML Studio(클래식) 설명서는 사용 중지되며 나중에 업데이트되지 않을 수 있습니다.
신경망 알고리즘을 사용하여 회귀 모델 만들기
범주: Machine Learning/모델 초기화/회귀
모듈 개요
이 문서에서는 Machine Learning Studio(클래식)의 신경망 회귀 모듈을 사용하여 사용자 지정 가능한 신경망 알고리즘을 사용하여 회귀 모델을 만드는 방법을 설명합니다.
신경망은 이미지 인식과 같은 복잡한 문제의 모델링과 심층 학습에서 사용되는 기술로 널리 알려져 있지만 회귀 문제에 맞게 쉽게 조정됩니다. 적응 가중치를 사용하고 입력의 비선형 함수 근사치를 계산할 수 있는 모든 클래스의 통계 모델을 신경망이라고 할 수 있습니다. 따라서 신경망 회귀는 보다 전통적인 회귀 모델로 해결할 수 없는 문제에 적합합니다.
신경망 회귀는 감독 학습 방법이므로 레이블 열을 포함하는 태그가 지정된 데이터 세트가 필요합니다. 회귀 모델은 숫자 값을 예측하기 때문에 레이블 열은 숫자 데이터 형식이어야 합니다.
모델 학습 또는 모델 하이퍼 매개 변수 조정에 대한 입력으로 모델 및 태그가 지정된 데이터 세트를 제공하여 모델을 학습시킬 수 있습니다. 그러면 학습된 모델을 사용하여 새로운 입력 예제를 위한 값을 예측할 수 있습니다.
신경망 회귀를 구성하는 방법
신경망은 광범위하게 사용자 지정할 수 있습니다. 이 섹션에서는 다음 두 가지 방법을 사용하여 모델을 만드는 방법을 설명합니다.
-
기본 신경망 아키텍처를 적용하는 경우 속성 창을 사용하여 숨겨진 계층의 노드 수, 학습 속도, 정규화와 같은 신경망의 동작을 제어하는 매개 변수를 설정합니다.
신경망을 처음 사용하는 경우 여기에서 시작합니다. 이 모듈은 신경망에 대한 깊은 지식이 없어도 모델 튜닝뿐만 아니라 많은 사용자 지정을 지원합니다.
-
숨겨진 계층을 더 추가하거나 네트워크 아키텍처, 연결 및 활성화 기능을 완전히 사용자 지정하려면 이 옵션을 사용합니다.
이 옵션은 신경망에 대해 이미 잘 알고 있는 경우에 가장 적합합니다. Net# 언어를 사용하여 네트워크 아키텍처를 정의합니다.
기본 아키텍처를 사용하여 신경망 모델 만들기
Studio(클래식)에서 실험에 신경망 회귀 모듈을 추가합니다. 이 모듈은 회귀 범주의 기계 학습, 초기화에서 찾을 수 있습니다.
트레이너 모드 만들기 옵션을 설정하여 모델을 학습하는 방법을 지정합니다.
단일 매개 변수: 모델을 구성하려는 방법을 이미 알고 있는 경우 이 옵션을 선택합니다.
매개 변수 범위: 최상의 매개 변수를 잘 모르는 경우 이 옵션을 선택합니다. 그런 다음 값 범위를 지정하고 모델 하이퍼 매개 변수 조정 모듈을 사용하여 조합을 반복하고 최적의 구성을 찾습니다.
숨겨진 레이어 사양에서 완전히 연결된 대/소문자를 선택합니다. 이 옵션은 신경망 회귀 모델에 대한 기본 신경망 아키텍처를 사용하는 모델을 만듭니다. 여기에는 다음과 같은 특성이 있습니다.
- 네트워크에 숨겨진 계층이 하나만 있습니다.
- 출력 계층은 숨겨진 계층에 완전히 연결되며 숨겨진 계층은 입력 계층에 완전히 연결됩니다.
- 숨겨진 계층의 노드 수는 사용자가 설정할 수 있습니다(기본값: 100).
입력 계층의 노드 수는 학습 데이터의 기능 수에 따라 결정되므로 회귀 모델의 출력 계층에는 노드가 하나뿐일 수 있습니다.
숨겨진 노드 수에는 숨겨진 노드 수를 입력합니다. 기본값은 100개의 노드를 포함하는 하나의 숨겨진 계층입니다. (Net#을 사용하여 사용자 지정 아키텍처를 정의하는 경우에는 이 옵션을 사용할 수 없습니다.)
학습 속도에는 수정하기 전에 각 반복에서 수행되는 단계를 정의하는 값을 입력합니다. 학습 속도 값이 크면 모델이 빠르게 수렴되지만 로컬 최소값이 과도해질 수 있습니다.
학습 반복 횟수에는 알고리즘이 학습 사례를 처리하는 최대 횟수를 지정합니다.
초기 학습 가중치 지름의 경우 학습 프로세스 시작 시 노드 가중치를 결정하는 값을 입력합니다.
가속도에는 이전 반복의 노드에 대한 가중치로 학습 중에 적용할 값을 입력합니다.
정규화 형식의 경우 기능 정규화에 사용할 다음 방법 중 하나를 선택합니다.
범주화 정규화: Binning은 동일한 크기의 그룹을 만든 다음 각 그룹의 모든 값을 총 그룹 수로 나누도록 정규화합니다.
가우스 정규화: 가우스 정규화는 각 기능의 값을 평균 0 및 분산 1로 다시 조정합니다. 이 작업은 각 기능의 평균 및 분산을 계산한 다음 각 인스턴스에 대해 평균 값을 빼고 분산의 제곱근(표준 편차)으로 나누어 수행됩니다.
최소 최대 정규화: 최소 정규화는 모든 기능을 [0,1] 간격으로 선형으로 다시 크기 조정합니다.
[0,1] 간격으로 크기를 재조정하는 작업은 최소값이 0이 되도록 각 기능의 값을 이동한 다음, 새 최대값(원래 최대값과 최소값의 차이)으로 나누어 수행합니다.
정규화 안 함: 정규화가 수행되지 않습니다.
예제 섞기 옵션을 선택하여 반복 간의 사례 순서를 변경합니다. 이 옵션을 선택 취소하면 실험을 실행할 때마다 사례가 정확히 동일한 순서로 처리됩니다.
난수 초기값에는 필요에 따라 초기값으로 사용할 값을 입력할 수 있습니다. 동일한 실험의 실행에서 반복성을 유지하려는 경우 초기값을 지정하는 것이 좋습니다.
알 수 없는 범주 수준 허용 옵션을 선택하여 알 수 없는 값에 대한 그룹을 만듭니다. 모델은 알려진 값에 대해 정확도가 낮을 수 있지만 새(알 수 없음) 값에 대해 더 나은 예측을 제공합니다.
이 옵션을 선택 취소하면 모델은 학습 데이터에 포함된 값만 수락할 수 있습니다.
학습 데이터 세트와 학습 모듈 중 하나를 커넥트.
트레이너 만들기 모드를 단일 매개 변수로 설정하면 모델 학습을 사용합니다.
트레이너 만들기 모드를 매개 변수 범위로 설정하면 모델 하이퍼 매개 변수 조정을 사용합니다.
경고
모델 학습에 매개 변수 범위를 전달하면 매개 변수 범위 목록의 첫 번째 값만 사용됩니다.
단일 매개 변수 값 세트를 모델 하이퍼 매개 변수 튜닝 모듈에 전달하는 경우 각 매개 변수에 대한 설정 범위를 요청할 때 해당 값을 무시하고 학습자에 대한 기본값을 사용합니다.
매개 변수 범위 옵션을 선택하고 임의 매개 변수의 단일 값을 입력하는 경우 다른 매개 변수가 값 범위에서 변경되더라도 지정한 단일 값은 스윕 전체에서 사용됩니다.
실험을 실행합니다.
사용자 지정 아키텍처 정의
신경 망 회귀 모듈을 실험에 추가합니다.
트레이너 모드 만들기 옵션을 설정하여 모델을 학습하는 방법을 지정합니다.
단일 매개 변수: 모델을 구성하려는 방법을 이미 알고 있는 경우 이 옵션을 선택합니다.
매개 변수 범위: 최상의 매개 변수를 잘 모르는 경우 이 옵션을 선택합니다. 그런 다음 값 범위를 지정하고 모델 하이퍼 매개 변수 조정 모듈을 사용하여 조합을 반복하고 최적의 구성을 찾습니다.
숨겨진 계층 사양에서 사용자 지정 정의 스크립트를 선택합니다. Net# 언어를 사용하여 사용자 지정 신경망 아키텍처를 정의하려면 이 옵션을 선택해야 합니다.
사용자 지정 정의 스크립트 옵션을 선택하면 신경망 정의 텍스트 상자가 표시됩니다. Net# 스크립트에 붙여넣어 숨겨진 레이어 수, 해당 연결 및 계층 간 매핑 지정과 같은 고급 옵션을 포함하여 신경망에 대한 사용자 지정 아키텍처를 정의할 수 있습니다.
학습 속도에는 수정하기 전에 각 반복에서 수행되는 단계를 정의하는 값을 입력합니다. 학습 속도 값이 크면 모델이 빠르게 수렴되지만 로컬 최소값이 과도해질 수 있습니다.
학습 반복 횟수에는 알고리즘이 학습 사례를 처리하는 최대 횟수를 지정합니다.
초기 학습 가중치 지름의 경우 학습 프로세스 시작 시 노드 가중치를 결정하는 값을 입력합니다.
가속도에는 이전 반복의 노드에 대한 가중치로 학습 중에 적용할 값을 입력합니다.
정규화 형식의 경우 기능 정규화에 사용할 다음 방법 중 하나를 선택합니다.
범주화 정규화: Binning은 동일한 크기의 그룹을 만든 다음 총 그룹 수로 나누어 각 그룹의 모든 값을 정규화합니다.
가우스 정규화: 가우스 정규화는 각 기능의 값을 평균 0 및 분산 1로 다시 조정합니다. 이 작업은 각 기능의 평균 및 분산을 계산한 다음 각 인스턴스에 대해 평균 값을 빼고 분산의 제곱근(표준 편차)으로 나누어 수행됩니다.
최소-최대: 최소 정규화는 모든 기능을 [0,1] 간격으로 선형으로 다시 크기 조정합니다.
[0,1] 간격으로 크기를 재조정하는 작업은 최소값이 0이 되도록 각 기능의 값을 이동한 다음, 새 최대값(원래 최대값과 최소값의 차이)으로 나누어 수행합니다.
정규화 안 함: 정규화가 수행되지 않습니다.
예제 섞기 옵션을 선택하여 반복 간의 사례 순서를 변경합니다. 이 옵션을 선택 취소하면 실험을 실행할 때마다 사례는 정확히 동일한 순서로 처리됩니다.
난수 초기값에는 필요에 따라 초기값으로 사용할 값을 입력할 수 있습니다. 동일한 실험의 실행에서 반복성을 유지하려는 경우 초기값을 지정하는 것이 좋습니다.
알 수 없는 범주 수준 허용 옵션을 선택하여 알 수 없는 값에 대한 그룹화 만들기를 선택합니다. 테스트 데이터 집합의 알 수 없는 값은 이 알 수 없는 범주에 매핑됩니다. 이 옵션을 사용하면 알려진 값에 대한 모델의 정확도가 약간 낮아지지만 새(알 수 없는) 값에 대해 더 나은 예측을 제공할 수 있습니다.
이 옵션을 선택 취소하면 모델은 학습 데이터에 포함된 값에 대해서만 예측을 수행할 수 있습니다.
학습 데이터 세트와 학습 모듈 중 하나를 커넥트.
트레이너 만들기 모드를 단일 매개 변수로 설정하면 모델 학습을 사용합니다.
트레이너 만들기 모드를 매개 변수 범위로 설정한 경우 모델 하이퍼 매개 변수 조정을 사용합니다.
경고
모델 학습에 매개 변수 범위를 전달하면 매개 변수 범위 목록의 첫 번째 값만 사용됩니다.
단일 매개 변수 값 집합을 모델 하이퍼 매개 변수 조정 모듈에 전달하는 경우 각 매개 변수에 대한 설정 범위가 예상되는 경우 값을 무시하고 학습자의 기본값을 사용합니다.
매개 변수 범위 옵션을 선택하고 매개 변수에 대해 단일 값을 입력하면 다른 매개 변수가 값 범위에서 변경되더라도 지정한 단일 값이 스윕 전체에서 사용됩니다.
실험을 실행합니다.
결과
학습 완료 후 다음이 수행됩니다.
학습에서 학습한 기능 가중치 및 신경망의 다른 매개 변수와 함께 모델의 매개 변수 요약을 보려면 모델 학습 또는 모델 하이퍼 매개 변수 조정의 출력을 마우스 오른쪽 단추로 클릭하고 시각화를 선택합니다.
학습된 모델의 스냅샷을 저장하려면 학습된 모델 출력을 마우스 오른쪽 단추 로 클릭하고 학습된 모델로 저장을 선택합니다. 이 모델은 동일한 실험의 연속 실행에서 업데이트되지 않습니다.
레이블이 지정된 데이터 집합에 대해 교차 유효성 검사를 수행하려면 학습되지 않은 모델을 모델 교차 유효성 검사에 연결합니다.
예
실험에서 이 알고리즘을 사용하는 방법에 대한 예제는 Azure AI 갤러리에서 다음 샘플을 참조하세요.
- 여러 회귀자 비교: 여러 회귀 알고리즘의 사용을 보여 줍니다. 그 결과를 비교합니다.
실험은 Net#에 더 많은 도움을 줍니다. 실험은 관련되며 기본 구성에서 고급 구성으로 진행됩니다.
기술 정보
이 섹션에는 구현 세부 정보, 팁, 자주 묻는 질문에 대한 답변이 포함되어 있습니다.
한눈에 보는 Net #
Machine Learning Studio(클래식)에서는 Net# 언어를 사용하여 신경망 모델의 아키텍처를 사용자 지정할 수 있습니다. Net# 언어에서 지원하는 사용자 지정은 다음과 같습니다.
- 숨겨진 계층 수 및 각 계층의 노드 수 지정
- 레이어 간 매핑 지정
- 컨볼루션 및 가중치 공유 번들 정의
- 활성화 함수 선택
신경망 모델은 다음 특성을 포함하는 그래프 구조로 정의됩니다.
- 숨겨진 레이어 수
- 숨겨진 각 계층의 노드 수
- 레이어 연결 방법
- 사용되는 활성화 함수
- 그래프 에지의 가중치
중요
사용자가 그래프의 전체 구조와 활성화 함수를 지정할 수 있습니다. 그러나 에지의 가중치는 지정할 수 없으며 입력 데이터에서 신경망을 학습할 때 학습해야 합니다.
일반적으로 네트워크에는 다음과 같은 기본값이 있습니다.
- 첫 번째 계층은 항상 입력 계층입니다.
- 마지막 계층은 항상 출력 계층입니다.
- 출력 계층의 노드 수는 클래스 수와 같아야 합니다.
중간 계층을 원하는 수만큼 정의할 수 있습니다. 중간 계층은 모델 내에 포함되어 있으며 엔드포인트로 직접 표시되지 않으므로 숨겨진 계층이라고도 합니다.
Net# 참조 가이드에서 구문을 설명하고 샘플 네트워크 정의를 제공합니다. 이 가이드에는 Net#을 사용하여 숨겨진 계층을 추가하고 여러 계층이 서로 상호 작용하는 방식을 정의하는 방법에 대한 설명이 포함되어 있습니다.
예를 들어 다음 스크립트는 입력 및 출력 계층의 기능 수를 자동으로 설정하고 숨겨진 계층의 기본값을 사용하는 키워드를 사용합니다 auto
.
input Data auto;
hidden Hidden auto from Data all;
output Result auto from Hidden all;
추가 스크립트 예제는 Net# 신경망 사양 언어 가이드를 참조하세요.
팁
여러 하이퍼 매개 변수 및 사용자 지정 네트워크 토폴로지의 도입으로 인해 신경망은 계산 비용이 많이 들 수 있습니다. 하지만 대부분의 경우 신경망은 다른 알고리즘보다 나은 결과를 생성하며 그러한 결과를 얻으려면 하이퍼 매개 변수에 대한 상당한 양의 스윕(반복)이 필요할 수 있습니다.
모듈 매개 변수
Name | 범위 | Type | 기본값 | 설명 |
---|---|---|---|---|
숨겨진 계층 사양 | 목록 | 신경망 토폴로지 | 완전히 연결된 사례 | 하나 이상의 숨겨진 계층 아키텍처를 지정합니다. |
초기 학습 가중치 지름 | >=double.Epsilon | Float | 0.1 | 학습 프로세스 시작 시의 노드 가중치를 지정합니다. |
학습 속도 | [double.Epsilon;0.01] | Float | 0.005 | 학습 프로세스에서 각 단계의 크기를 지정합니다. |
가속도 | [0.0;1.0] | Float | 0.0 | 학습하는 동안 이전 반복의 노드에 적용할 가중치를 지정합니다. |
신경망 정의 | 모두 | StreamReader | "사용자 지정 정의 스크립트"를 선택하는 경우 사용자 지정 신경망의 계층, 노드 및 동작을 정의하는 유효한 스크립트 식을 각 줄에 입력합니다. | |
노멀라이저 유형 | 목록 | 정규화 방법 | 최소-최대 노멀라이저 | 학습 예제에 적용할 정규화 유형을 선택합니다. |
숨겨진 노드 수 | 모두 | 문자열 | 100 | 숨겨진 계층의 노드 수를 입력합니다. 숨겨진 계층이 여러 개이면 쉼표로 구분된 목록을 입력합니다. |
학습 반복 횟수 | >=1 | 정수 | 100 | 학습하는 동안의 반복 횟수를 지정합니다. |
예제 섞기 | 모두 | 부울 | true | 학습 반복 간에 인스턴스 순서를 변경하려면 이 옵션을 선택합니다. |
난수 초기값 | 모두 | 정수 | 난수 생성에 사용할 숫자 초기값을 지정합니다. 기본 초기값을 사용하려면 비워 둡니다. 이 매개 변수는 선택 사항입니다. |
|
알 수 없는 범주 수준 허용 | 모두 | 부울 | true | 알 수 없는 범주에 대해 추가 수준을 만들어야 하는지 여부를 나타냅니다. 테스트 데이터 집합이 학습 데이터 집합에 없는 범주를 포함하는 경우 해당 범주는 이 알 수 없는 수준에 매핑됩니다. |
출력
Name | 유형 | 설명 |
---|---|---|
학습되지 않은 모델 | ILearner 인터페이스 | 학습되지 않은 회귀 모델입니다. |