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