다음을 통해 공유


2클래스 신경망

신경망 알고리즘을 사용하여 이진 분류자 만들기

범주: Machine Learning/모델 초기화/분류

참고

적용 대상: Machine Learning Studio(클래식)

유사한 끌어서 놓기 모듈은 Azure Machine Learning 디자이너에서 사용할 수 있습니다.

모듈 개요

이 문서에서는 Machine Learning Studio(클래식)에서 2클래스 신경망 모듈을 사용하여 두 값만 있는 대상을 예측하는 데 사용할 수 있는 신경망 모델을 만드는 방법을 설명합니다.

신경망을 사용한 분류는 지도 학습 방법이며 따라서 레이블 열을 포함하는 ‘태그가 지정된 데이터 세트’가 필요합니다. 예를 들어 이러한 신경망 모델을 사용하여 환자에게 특정 질병이 있는지 여부 또는 지정된 시간 내에 머신이가 실패할 가능성이 있는지 여부와 같은 이진 결과를 예측할 수 있습니다.

모델을 정의한 후 태그가 지정된 데이터 세트와 모델을 모델 학습 또는 모델하이퍼 매개 변수 튜닝에 대한 입력으로 제공하여 학습합니다. 그러면 학습된 모델을 사용하여 새 입력 값을 예측할 수 있습니다.

신경망에 대한 자세한 정보

신경망은 상호 연결된 레이어의 세트입니다. 입력은 첫 번째 레이어이며 가중치가 적용된 에지와 노드로 구성된 비순환 그래프에 의해 출력 레이어에 연결됩니다.

입력 및 출력 레이어 사이에 여러 개의 숨겨진 레이어를 삽입할 수 있습니다. 대부분의 예측 작업은 숨겨진 계층을 하나 또는 몇 개만 사용하여 쉽게 완료할 수 있습니다. 그러나 최근 연구에 따르면 레이어가 많은 DNN(심층 신경망)은 이미지 또는 음성 인식과 같은 복잡한 작업에 매우 효과적일 수 있습니다. 연속된 레이어는 더 깊은 의미 체계를 모델링하는 데 사용됩니다.

입력 및 출력 간의 관계는 입력 데이터의 신경망 학습에서 학습됩니다. 그래프의 방향은 숨겨진 레이어 및 출력 레이어를 통해 입력으로부터 진행됩니다. 레이어의 모든 노드는 가중치가 적용된 에지를 통해 다음 레이어의 노드에 연결됩니다.

특정 입력에 대한 네트워크 출력을 계산하기 위해 숨겨진 레이어의 각 노드 및 출력 레이어에서 값이 계산됩니다. 값은 이전 레이어에서 노드 값의 가중치가 적용된 합계를 계산하여 설정됩니다. 그러면 활성화 함수가 가중치가 적용된 합계에 적용됩니다.

Two-Class 신경망을 구성하는 방법

  1. Studio(클래식)에서 실험에 2클래스 신경망 모듈을 추가합니다. 이 모듈은 분류 범주의 Machine Learning, 초기화 아래에서 찾을 수 있습니다.

  2. 트레이너 모드 만들기 옵션을 설정하여 모델을 학습시키려는 방법을 지정합니다.

    • 단일 매개 변수: 모델을 구성하려는 방법을 이미 알고 있는 경우 이 옵션을 선택합니다.

    • 매개 변수 범위: 최상의 매개 변수를 잘 모르는 경우 이 옵션을 선택합니다. 그런 다음 값 범위를 지정하고 모델 하이퍼 매개 변수 조정 모듈을 사용하여 조합을 반복하고 최적의 구성을 찾습니다.

  3. 숨겨진 레이어 사양의 경우 만들 네트워크 아키텍처의 유형을 선택합니다.

    • 완전히 연결된 사례: 다음과 같이 2클래스 신경망에 대해 정의된 기본 신경망 아키텍처를 사용합니다.

      • 숨겨진 레이어가 하나 있습니다.

      • 출력 계층은 숨겨진 계층에 완전히 연결되며 숨겨진 계층은 입력 계층에 완전히 연결됩니다.

      • 입력 레이어의 노드 수는 학습 데이터의 특성 수와 같습니다.

      • 사용자가 숨겨진 레이어의 노드 수를 설정합니다. 기본값은 100입니다.

      • 노드 수는 클래스 수와 동일합니다. 2클래스 신경망의 경우 이는 모든 입력이 출력 레이어의 두 노드 중 하나에 매핑되어야 함을 의미합니다.

    • 사용자 지정 정의 스크립트: Net# 언어를 사용하여 사용자 지정 신경망 아키텍처를 만들려면 이 옵션을 선택합니다. 이 옵션을 사용하면 숨겨진 레이어 수, 해당 연결 및 레이어 간의 매핑을 정의할 수 있습니다.

    사용자 지정 스크립트 옵션을 선택한 후 신경망 정의 텍스트 상자에 네트워크를 정의하는 Net# 문을 입력하거나 붙여넣습니다. 예를 들어 Net# 신경망 사양 언어 가이드를 참조하세요.

  4. 스크립트 옵션을 사용하지 않는 경우 숨겨진 노드 수를 사용하고 숨겨진 노드 수를 입력합니다. 기본값은 100개의 노드를 포함하는 하나의 숨겨진 계층입니다.

  5. 학습 속도의 경우 수정하기 전에 각 반복에서 수행되는 단계의 크기를 정의합니다. 학습 속도 값이 크면 모델이 빠르게 수렴되지만 로컬 최소값이 과도해질 수 있습니다.

  6. 학습 반복 횟수에서는 알고리즘이 학습 사례를 처리해야 하는 최대 횟수를 지정합니다.

  7. 초기 학습 가중치 지름의 경우 학습 프로세스를 시작할 때 노드 가중치를 지정합니다.

  8. 모멘텀의 경우 이전 반복에서 노드를 학습하는 동안 적용할 가중치를 지정합니다.

  9. 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이 되도록 각 기능의 값을 이동한 다음, 새 최대값(원래 최대값과 최소값의 차이)으로 나누어 수행합니다.

    • 정규화 안 함: 정규화가 수행되지 않습니다.

  10. 예제 섞기 옵션을 선택하여 반복 간의 사례 순서를 섞습니다. 이 옵션을 선택 취소하면 실험을 실행할 때마다 사례는 정확히 동일한 순서로 처리됩니다.

  11. 난수 시드에 시드로 사용할 값을 입력합니다.

    동일한 실험의 실행에서 반복성을 유지하려는 경우 초기값을 지정하는 것이 좋습니다. 그렇지 않으면 시스템 클록 값이 시드로 사용되므로 실험을 실행할 때마다 약간 다른 결과가 발생할 수 있습니다.

  12. 알 수 없는 범주 수준 허용 옵션을 선택하여 학습 및 유효성 검사 집합에서 알 수 없는 값에 대한 그룹화를 만듭니다. 모델은 알려진 값에 대해 정확도가 낮을 수 있지만 새로운(알 수 없는) 값에 대해 더 나은 예측을 제공합니다.

    이 옵션을 선택 취소하면 모델은 학습 데이터에 포함된 값만 허용할 수 있습니다.

  13. 실험에 태그가 지정된 데이터 세트를 추가하고 학습 모듈 중 하나를 연결합니다.

    • 트레이너 모드 만들기단일 매개 변수로 설정한 경우 모델 학습 모듈을 사용합니다.

    • 트레이너 모드 만들기매개 변수 범위로 설정한 경우 모델 하이퍼 매개 변수 튜닝 모듈을 사용합니다.

    참고

    모델 학습에 매개 변수 범위를 전달하면 매개 변수 범위 목록의 첫 번째 값만 사용됩니다.

    단일 매개 변수 값 세트를 모델 하이퍼 매개 변수 튜닝 모듈에 전달하는 경우 각 매개 변수에 대한 설정 범위를 요청할 때 해당 값을 무시하고 학습자에 대한 기본값을 사용합니다.

    매개 변수 범위 옵션을 선택하고 매개 변수에 대해 단일 값을 입력하면 다른 매개 변수가 값 범위에서 변경되더라도 해당 단일 값이 스윕 전체에서 사용됩니다.

  14. 실험을 실행합니다.

결과

학습 완료 후 다음이 수행됩니다.

  • 학습에서 학습한 기능 가중치 및 신경망의 다른 매개 변수와 함께 모델의 매개 변수 요약을 보려면 모델 학습 또는 모델 하이퍼 매개 변수 조정의 출력을 마우스 오른쪽 단추로 클릭하고 시각화를 선택합니다.

  • 학습된 모델의 스냅샷을 저장하려면 학습된 모델 출력을 마우스 오른쪽 단추 로 클릭하고 학습된 모델로 저장을 선택합니다. 이 모델은 동일한 실험의 연속 실행에서 업데이트되지 않습니다.

  • 레이블이 지정된 데이터 집합에 대해 교차 유효성 검사를 수행하려면 학습되지 않은 모델을 모델 교차 유효성 검사에 연결합니다.

이 학습 알고리즘을 사용하는 방법에 대한 예제는 Azure AI 갤러리를 참조하세요. 이러한 실험은 기본 구성에서 고급 구성으로 진행되는 단일 문서에 관련되어 설명되어 있습니다.

기술 정보

이 섹션에는 구현 세부 정보, 팁, 자주 묻는 질문에 대한 답변이 포함되어 있습니다.

한눈에 보는 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;1.0] Float 0.1 학습 프로세스에서 각 단계의 크기를 지정합니다.
가속도 [0.0;1.0] Float 0.0 학습하는 동안 이전 반복의 노드에 적용할 가중치를 지정합니다.
신경망 정의 모두 StreamReader 사용자 지정 정의 스크립트를 선택하는 경우 사용자 지정 신경망의 계층, 노드 및 동작을 정의하는 유효한 스크립트 식을 각 줄에 입력합니다.
노멀라이저 유형 목록 정규화 방법 최소-최대 노멀라이저 학습 예제에 적용할 정규화 유형을 선택합니다.
학습 반복 횟수 >=1 정수 100 학습하는 동안 수행되는 반복 횟수를 지정합니다.
예제 섞기 모두 부울 true 학습 반복 간에 인스턴스 순서를 변경하려면 이 옵션을 선택합니다.
난수 초기값 모두 정수 난수 생성에 사용할 숫자 초기값을 지정합니다. 기본 초기값을 사용하려면 비워 둡니다.
알 수 없는 범주 수준 허용 모두 부울 True 알 수 없는 범주에 대해 추가 수준을 만들어야 하는지 여부를 나타냅니다. 테스트 데이터 집합이 학습 데이터 집합에 없는 범주를 포함하는 경우 해당 범주는 이 알 수 없는 수준에 매핑됩니다.

출력

Name 유형 설명
학습되지 않은 모델 ILearner 인터페이스 학습되지 않은 이진 분류 모델입니다.

참고 항목

분류
신경망 회귀
다중 클래스 신경망
전체 모듈 목록