다중 클래스 인공신경망
중요
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(클래식)에서 다중 클래스 신경망 모듈을 사용하여 여러 값이 있는 대상을 예측하는 데 사용할 수 있는 신경망 모델을 만드는 방법을 설명합니다.
예를 들어 이러한 종류의 신경망은 숫자 또는 문자 인식, 문서 분류 및 패턴 인식과 같은 복잡한 Computer Vision 작업에 사용될 수 있습니다.
신경망을 사용하는 분류는 감독된 학습 방법이며 따라서 레이블 열을 포함 하는 태그가 지정된 데이터 집합이 필요합니다.
모델 및 태그가 지정된 데이터 세트를 모델 학습 또는 모델 하이퍼 매개 변수 조정에 대한 입력으로 제공하여 모델을 학습시킬 수 있습니다. 그러면 학습된 모델을 사용하여 새로운 입력 예제를 위한 값을 예측할 수 있습니다.
신경망에 대한 자세한 정보
신경망은 상호 연결된 레이어의 세트입니다. 입력은 첫 번째 레이어이며 가중치가 적용된 에지와 노드로 구성된 비순환 그래프에 의해 출력 레이어에 연결됩니다.
입력 및 출력 레이어 사이에 여러 개의 숨겨진 레이어를 삽입할 수 있습니다. 대부분의 예측 작업은 숨겨진 계층을 하나 또는 몇 개만 사용하여 쉽게 완료할 수 있습니다. 그러나 최근 연구에 따르면 레이어가 많은 DNN(심층 신경망)은 이미지 또는 음성 인식과 같은 복잡한 작업에 매우 효과적일 수 있습니다. 연속된 레이어는 더 깊은 의미 체계를 모델링하는 데 사용됩니다.
입력 및 출력 간의 관계는 입력 데이터의 신경망 학습에서 학습됩니다. 그래프의 방향은 숨겨진 레이어 및 출력 레이어를 통해 입력으로부터 진행됩니다. 레이어의 모든 노드는 가중치가 적용된 에지를 통해 다음 레이어의 노드에 연결됩니다.
특정 입력에 대한 네트워크 출력을 계산하기 위해 숨겨진 레이어의 각 노드 및 출력 레이어에서 값이 계산됩니다. 값은 이전 레이어에서 노드 값의 가중치가 적용된 합계를 계산하여 설정됩니다. 그러면 활성화 함수가 가중치가 적용된 합계에 적용됩니다.
다중 클래스 신경망을 구성하는 방법
Studio(클래식)에서 실험에 MultiClass 신경망 모듈을 추가합니다. 이 모듈은 Machine Learning, 초기화에서 찾을 수 있으며, 위치는 분류 범주입니다.
트레이너 모드 만들기: 모델을 학습하는 방법을 지정하려면 이 옵션을 사용합니다.
단일 매개 변수: 모델을 구성하려는 방법을 이미 알고 있는 경우 이 옵션을 선택합니다.
매개 변수 범위: 최상의 매개 변수를 잘 모르고 매개 변수 스윕을 사용하려는 경우 이 옵션을 선택합니다. 그런 다음 값 범위를 지정하고 모델 하이퍼 매개 변수 조정 모듈을 사용하여 조합을 반복하고 최적의 구성을 찾습니다.
숨겨진 레이어 사양: 만들 네트워크 구조의 유형을 선택합니다.
완전히 연결된 사례: 기본 신경망 아키텍처를 사용하여 모델을 만들려면 이 옵션을 선택합니다. 다중 클래스 신경망 모델의 경우 기본값은 다음과 같습니다.
- 숨겨진 레이어 하나
- 이 출력 레이어는 숨겨진 레이어에 완전히 연결됩니다.
- 이 숨겨진 레이어는 입력 레이어에 완전히 연결됩니다.
- 입력 계층의 노드 수는 학습 데이터의 기능 수에 따라 결정됩니다.
- 숨겨진 레이어의 노드 수는 사용자가 설정할 수 있습니다. 기본값은 100입니다.
- 출력 계층의 노드 수는 클래스의 수에 따라 다릅니다.
사용자 지정 정의 스크립트입니다. Net# 언어를 사용하여 사용자 지정 신경망 아키텍처를 만들려면 이 옵션을 선택합니다. 숨겨진 레이어 수, 해당 연결 및 계층 간의 매핑 지정과 같은 고급 옵션을 정의할 수 있습니다. Net#에 대한 소개는 이 항목의 뒷부분에 있는 Net#에 대한 자세한 내용을 참조하세요.
신경망 정의: 사용자 지정 아키텍처 옵션을 선택한 경우 텍스트 상자를 사용하여 Net# 언어로 작성된 문을 입력하거나 붙여넣습니다. 추가 스크립트 예제는 Net# 신경망 사양 언어 가이드를 참조하세요.
숨겨진 노드 수: 이 옵션을 사용하면 기본 아키텍처에서 숨겨진 노드 수를 사용자 지정할 수 있습니다. 숨겨진 노드 수를 입력합니다. 기본값은 하나의 숨겨진 레이어에 100개의 노드가 포함됩니다.
학습 속도: 수정 전에 각 반복에서 수행되는 단계의 크기를 정의합니다. 학습 속도의 값이 클수록 모델이 더 빨리 수렴될 수 있지만 로컬 최소치를 과도하게 사용할 수 있습니다.
학습 반복 횟수: 알고리즘이 학습 사례를 처리해야 하는 최대 횟수를 지정합니다.
초기 학습 가중치 지름: 학습 프로세스를 시작할 때 노드 가중치를 지정합니다.
모멘텀: 이전 반복에서 노드를 학습하는 동안 적용할 가중치를 지정합니다.
normalizer 유형: 기능 정규화에 사용할 메서드를 선택합니다. 지원되는 정규화 메서드는 다음과 같습니다.
Binning normalizer: binning normalizer는 동일한 크기의 bin을 만든 다음, 각 bin의 모든 값을 총 bin 수로 나누어 정규화합니다.
Gaussian normalizer: Gaussian normalizer는 각 기능의 값을 평균 0 및 분산 1로 다시 크기 조정합니다. 이 작업은 각 기능의 평균 및 분산을 계산하여 수행됩니다. 각 인스턴스에 대해 평균 값이 빼지고 결과는 분산의 제곱근(표준 편차)으로 나뉩니다.
Min-max normalizer: min-max normalizer는 모든 기능을 [0,1] 간격으로 선형으로 다시 크기 조정합니다.
[0,1] 간격으로 크기를 재조정하는 작업은 최소값이 0이 되도록 각 기능의 값을 이동한 다음, 새 최대값(원래 최대값과 최소값의 차이)으로 나누어 수행합니다.
정규화 안 함: 정규화가 수행되지 않습니다.
예제 섞기: 반복하는 사이에 사례를 섞으려면 이 옵션을 선택합니다.
이 옵션을 선택 취소하면 실험을 실행할 때마다 사례는 정확히 동일한 순서로 처리됩니다.
난수 시드: 동일한 실험의 실행에서 반복성을 보장하려면 시드로 사용할 값을 입력합니다.
알 수 없는 범주 수준 허용: 학습 및 유효성 검사 집합에서 알 수 없는 값에 대한 그룹화를 만들려면 이 옵션을 선택합니다. 모델은 알려진 값에 대해 정확도가 낮을 수 있지만 새로운(알 수 없는) 값에 대해 더 나은 예측을 제공합니다.
이 옵션을 선택 취소하면 모델은 학습 데이터에 포함된 값만 허용할 수 있습니다.
학습 데이터 세트와 학습 모듈 중 하나를 커넥트.
트레이너 만들기 모드를 단일 매개 변수로 설정하면 모델 학습을 사용합니다.
트레이너 만들기 모드를 매개 변수 범위로 설정한 경우 모델 하이퍼 매개 변수 조정을 사용합니다.
참고
모델 학습에 매개 변수 범위를 전달하면 매개 변수 범위 목록의 첫 번째 값만 사용됩니다.
단일 매개 변수 값 세트를 모델 하이퍼 매개 변수 튜닝 모듈에 전달하는 경우 각 매개 변수에 대한 설정 범위를 요청할 때 해당 값을 무시하고 학습자에 대한 기본값을 사용합니다.
매개 변수 범위 옵션을 선택하고 임의 매개 변수의 단일 값을 입력하는 경우 다른 매개 변수가 값 범위에서 변경되더라도 지정한 단일 값은 스윕 전체에서 사용됩니다.
결과
학습 완료 후 다음이 수행됩니다.
학습에서 학습한 기능 가중치 및 신경망의 다른 매개 변수와 함께 모델의 매개 변수 요약을 보려면 모델 학습 또는 모델 하이퍼 매개 변수 조정의 출력을 마우스 오른쪽 단추로 클릭하고 시각화를 선택합니다.
학습된 모델의 스냅샷을 저장하려면 학습된 모델 출력을 마우스 오른쪽 단추 로 클릭하고 학습된 모델로 저장을 선택합니다. 이 모델은 동일한 실험의 연속 실행에서 업데이트되지 않습니다.
레이블이 지정된 데이터 집합에 대해 교차 유효성 검사를 수행하려면 학습되지 않은 모델을 모델 교차 유효성 검사에 연결합니다.
예
이 학습 알고리즘을 사용하는 방법에 대한 예제는 Azure AI 갤러리에서 이러한 샘플 실험을 참조하세요. 실험은 한 문서에서 설명되며 기본 구성에서 고급 구성까지 진행됩니다.
기술 정보
이 섹션에는 구현 세부 정보, 팁, 자주 묻는 질문에 대한 답변이 포함되어 있습니다.
스크립트를 사용하여 신경망 사용자 지정
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;1.0] | Float | 0.1 | 학습 프로세스에서 각 단계의 크기를 지정합니다. |
가속도 | [0.0;1.0] | Float | 0.0 | 학습하는 동안 이전 반복의 노드에 적용할 가중치를 지정합니다. |
신경망 정의 | 모두 | StreamReader | 사용자 지정 정의 스크립트를 선택하는 경우 사용자 지정 신경망의 계층, 노드 및 동작을 정의하는 유효한 스크립트 식을 각 줄에 입력합니다. | |
노멀라이저 유형 | 목록 | 정규화 방법 | 최소-최대 노멀라이저 | 학습 예제에 적용할 정규화 유형을 선택합니다. |
학습 반복 횟수 | >=1 | 정수 | 100 | 학습하는 동안의 반복 횟수를 지정합니다. |
예제 섞기 | 모두 | 부울 | True | 학습 반복 간에 인스턴스 순서를 변경하려면 이 옵션을 선택합니다. |
난수 초기값 | 모두 | 정수 | 난수 생성에 사용할 숫자 초기값을 지정합니다. 기본 초기값을 사용하려면 비워 둡니다. | |
알 수 없는 범주 수준 허용 | 모두 | 부울 | True | 알 수 없는 범주에 대해 추가 수준을 만들어야 하는지 여부를 나타냅니다. 테스트 데이터 집합이 학습 데이터 집합에 없는 범주를 포함하는 경우 해당 범주는 이 알 수 없는 수준에 매핑됩니다. |
출력
Name | 유형 | 설명 |
---|---|---|
학습되지 않은 모델 | ILearner 인터페이스 | 학습되지 않은 다중 클래스 분류 모델입니다. |