신경망 회귀

신경망 알고리즘을 사용하여 회귀 모델 만들기

범주: 모델/회귀 Machine Learning/초기화

참고

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

이 콘텐츠는 Studio (클래식)에만 해당 됩니다. Azure Machine Learning 디자이너에는 비슷한 끌어서 놓기 모듈이 추가 되었습니다. 이 문서에서는 두 가지 버전을 비교 하는방법에 대해 자세히 알아보세요.

모듈 개요

이 문서에서는 Azure Machine Learning Studio (클래식)에서 신경망 회귀 모듈을 사용 하 여 사용자 지정 가능한 신경망 알고리즘을 사용 하 여 회귀 모델을 만드는 방법을 설명 합니다.

신경망은 이미지 인식과 같은 복잡한 문제의 모델링과 심층 학습에서 사용되는 기술로 널리 알려져 있지만 회귀 문제에 맞게 쉽게 조정됩니다. 적응 가중치를 사용하고 입력의 비선형 함수 근사치를 계산할 수 있는 모든 클래스의 통계 모델을 신경망이라고 할 수 있습니다. 따라서 신경망 회귀는 보다 전통적인 회귀 모델로 해결할 수 없는 문제에 적합합니다.

신경망 회귀는 감독 된 학습 메서드 이므로 레이블 열을 포함 하는 태그가 지정 된 데이터 집합이 필요 합니다. 회귀 모델은 숫자 값을 예측하기 때문에 레이블 열은 숫자 데이터 형식이어야 합니다.

모델과 태그가 지정 된 데이터 집합을 입력으로 제공 하 여 모델을 학습 하거나 모델 하이퍼 매개 변수를 조정하 여 모델을 학습할 수 있습니다. 그러면 학습 된 모델을 사용 하 여 새 입력 예제에 대 한 값을 예측할 수 있습니다.

신경망 회귀를 구성 하는 방법

신경망은 광범위 하 게 사용자 지정할 수 있습니다. 이 섹션에서는 다음 두 가지 방법을 사용 하 여 모델을 만드는 방법에 대해 설명 합니다.

  • 기본 아키텍처를 사용 하 여 신경망 모델 만들기

    기본 신경망 아키텍처를 적용 하는 경우 속성 창을 사용 하 여 숨겨진 계층의 노드 수, 학습 율 및 정규화와 같은 신경망의 동작을 제어 하는 매개 변수를 설정 합니다.

    신경망을 처음 접하는 경우 여기서 시작 하세요. 모듈은 신경망에 대 한 심층 지식이 없어도 모델 튜닝 뿐만 아니라 많은 사용자 지정을 지원 합니다.

  • 신경망의 사용자 지정 아키텍처 정의

    숨겨진 계층을 더 추가 하거나 네트워크 아키텍처, 해당 연결 및 활성화 기능을 완전히 사용자 지정 하려면이 옵션을 사용 합니다.

    이 옵션은 신경망에 대해 이미 잘 알고 있는 경우에 가장 적합 합니다. Net # 언어 를 사용 하 여 네트워크 아키텍처를 정의 합니다.

기본 아키텍처를 사용 하 여 신경망 모델 만들기

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

  2. 강사 모드 만들기 옵션을 설정 하 여 모델을 학습 하는 방법을 지정 합니다.

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

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

  3. 숨겨진 계층 사양 에서 완전히 연결 된 사례 를 선택 합니다. 이 옵션은 신경망 회귀 모델에 대 한 기본 신경망 아키텍처를 사용 하 여 모델을 만듭니다. 여기에는 다음과 같은 특성이 있습니다.

    • 네트워크에는 숨겨진 계층이 하나만 있습니다.
    • 출력 계층은 숨겨진 계층에 완전히 연결되며 숨겨진 계층은 입력 계층에 완전히 연결됩니다.
    • 숨겨진 계층의 노드 수는 사용자가 설정할 수 있습니다(기본값: 100).

    입력 계층의 노드 수는 학습 데이터의 기능 수에 따라 결정 되기 때문에 회귀 모델에서는 출력 계층에 노드가 하나만 있을 수 있습니다.

  4. 숨겨진 노드 수 에는 숨겨진 노드 수를 입력 합니다. 기본값은 100 노드를 포함 하는 하나의 숨겨진 계층입니다. Net #을 사용 하 여 사용자 지정 아키텍처를 정의 하는 경우에는이 옵션을 사용할 수 없습니다.

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

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

  7. 초기 학습 가중치 직경이 학습 프로세스를 시작할 때 노드 가중치를 결정 하는 값을 입력 합니다.

  8. 모멘텀 의 경우 학습 중에 이전 반복의 노드에 대 한 가중치로 적용할 값을 입력 합니다.

  9. 노 멀 라이저 형식 에 대해 기능 정규화에 사용할 다음 방법 중 하나를 선택 합니다.

    • Binning:이를 통해 동일한 크기의 그룹을 만든 다음 각 그룹의 모든 값을 그룹의 총 수로 나눌 수 있습니다.

    • 가우스 노 멀 라이저: 가우스 정규화 다시 조정 각 기능의 값이 0과 분산이 1 인 것을 의미 합니다. 이러한 작업은 각 기능의 평균 및 분산을 계산 하 고 각 인스턴스에 대해 평균 값을 빼서 모집단의 제곱근 (표준 편차)으로 나눈 값을 계산 하 여 수행 됩니다.

    • 최소-최대 노 멀 라이저: 최소 정규화 다시 조정 모든 기능을 [0, 1] 간격으로 선형으로 구성 합니다.

      [0,1] 간격으로 크기를 재조정하는 작업은 최소값이 0이 되도록 각 기능의 값을 이동한 다음, 새 최대값(원래 최대값과 최소값의 차이)으로 나누어 수행합니다.

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

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

  11. 난수 초기값 의 경우 필요에 따라 초기값으로 사용할 값을 입력할 수 있습니다. 동일한 실험의 실행에서 반복성을 유지하려는 경우 초기값을 지정하는 것이 좋습니다.

  12. 알 수 없는 범주 수준 허용 옵션을 선택 하 여 알 수 없는 값에 대 한 그룹화를 만듭니다. 알려진 값에 대 한 모델의 정확도가 떨어질 수 있지만 새 (알 수 없는) 값에 대해 더 나은 예측을 제공 합니다.

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

  13. 학습 데이터 집합 및 학습 모듈중 하나를 연결 합니다.

    경고

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

    단일 매개 변수 값 집합을 모델 하이퍼 매개 변수 조정 모듈에 전달 하는 경우 각 매개 변수에 대 한 설정 범위가 필요한 경우 값을 무시 하 고 학습자에 대 한 기본값을 사용 합니다.

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

  14. 실험을 실행합니다.

사용자 지정 아키텍처 정의

  1. 실험에 신경망 회귀 모듈을 추가 합니다.

  2. 강사 모드 만들기 옵션을 설정 하 여 모델을 학습 하는 방법을 지정 합니다.

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

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

  3. 숨겨진 계층 사양 에서 사용자 지정 정의 스크립트 를 선택 합니다. Net # 언어를 사용 하 여 사용자 지정 신경망 아키텍처를 정의 하려면이 옵션을 선택 해야 합니다.

  4. 사용자 지정 정의 스크립트 옵션을 선택 하면 신경망 정의 텍스트 상자가 표시 됩니다. Net # 스크립트를 붙여넣어 숨겨진 계층 수, 해당 연결 및 계층 간의 매핑을 지정 하는 등의 고급 옵션을 포함 하 여 신경망의 사용자 지정 아키텍처를 정의할 수 있습니다.

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

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

  7. 초기 학습 가중치 직경이 학습 프로세스를 시작할 때 노드 가중치를 결정 하는 값을 입력 합니다.

  8. 모멘텀 의 경우 학습 중에 이전 반복의 노드에 대 한 가중치로 적용할 값을 입력 합니다.

  9. 노 멀 라이저 형식 에 대해 기능 정규화에 사용할 다음 방법 중 하나를 선택 합니다.

    • Binning:이를 통해 동일한 크기의 그룹을 만든 다음 그룹의 총 수로 나누어 각 그룹의 모든 값을 정규화 합니다.

    • 가우스 노 멀 라이저: 가우스 정규화 다시 조정 각 기능의 값이 0과 분산이 1 인 것을 의미 합니다. 이러한 작업은 각 기능의 평균 및 분산을 계산 하 고 각 인스턴스에 대해 평균 값을 빼서 모집단의 제곱근 (표준 편차)으로 나눈 값을 계산 하 여 수행 됩니다.

    • Min-max: min-max 정규화는 모든 기능을 [0, 1] 간격으로 선형으로 다시 조정 합니다.

      [0,1] 간격으로 크기를 재조정하는 작업은 최소값이 0이 되도록 각 기능의 값을 이동한 다음, 새 최대값(원래 최대값과 최소값의 차이)으로 나누어 수행합니다.

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

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

  11. 난수 초기값 의 경우 필요에 따라 초기값으로 사용할 값을 입력할 수 있습니다. 동일한 실험의 실행에서 반복성을 유지하려는 경우 초기값을 지정하는 것이 좋습니다.

  12. 알 수 없는 범주 수준 허용 옵션을 선택 하 여 알 수 없는 값에 대 한 그룹화를 만듭니다. 테스트 데이터 집합에 있는 알 수 없는 값은이 알 수 없는 범주에 매핑됩니다. 이 옵션을 사용 하면 알려진 값에 대 한 모델의 정확도가 떨어질 수 있지만 새 (알 수 없는) 값에 대해 더 나은 예측을 제공할 수 있습니다.

    이 옵션의 선택을 취소 하면 모델에서 학습 데이터에 포함 된 값에 대해서만 예측을 만들 수 있습니다.

  13. 학습 데이터 집합 및 학습 모듈중 하나를 연결 합니다.

    경고

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

    단일 매개 변수 값 집합을 모델 하이퍼 매개 변수 조정 모듈에 전달 하는 경우 각 매개 변수에 대 한 설정 범위가 필요한 경우 값을 무시 하 고 학습자에 대 한 기본값을 사용 합니다.

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

  14. 실험을 실행합니다.

결과

학습 완료 후:

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

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

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

예제

실험에서이 알고리즘을 사용 하는 방법에 대 한 예제는 Azure AI Gallery에서 다음 샘플을 참조 하세요.

실험은 Net #에 대 한 자세한 도움말을 제공 합니다. 실험은 기본적인 구성과 고급 구성에서 다음과 같이 진행 됩니다.

기술 정보

이 섹션에는 구현 세부 정보, 팁 및 질문과 대답 (faq)이 포함 되어 있습니다.

Net에 대 한 자세한 정보

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;0.01] Float 0.005 학습 프로세스에서 각 단계의 크기를 지정합니다.
가속도 [0.0; 1.0] Float 0.0 학습하는 동안 이전 반복의 노드에 적용할 가중치를 지정합니다.
신경망 정의 모두 StreamReader "사용자 지정 정의 스크립트"를 선택하는 경우 사용자 지정 신경망의 계층, 노드 및 동작을 정의하는 유효한 스크립트 식을 각 줄에 입력합니다.
노멀라이저 유형 목록 정규화 방법 최소-최대 노멀라이저 학습 예제에 적용할 정규화 유형을 선택합니다.
숨겨진 노드 수 모두 String 100 숨겨진 계층의 노드 수를 입력합니다. 숨겨진 계층이 여러 개이면 쉼표로 구분된 목록을 입력합니다.
학습 반복 횟수 >= 1 정수 100 학습하는 동안의 반복 횟수를 지정합니다.
예제 섞기 모두 부울 true 학습 반복 간에 인스턴스 순서를 변경하려면 이 옵션을 선택합니다.
난수 초기값 모두 정수 난수 생성에 사용할 숫자 초기값을 지정합니다. 기본 초기값을 사용하려면 비워 둡니다.

이 매개 변수는 선택 사항입니다.
알 수 없는 범주 수준 허용 모두 부울 true 알 수 없는 범주에 대해 추가 수준을 만들어야 하는지 여부를 나타냅니다. 테스트 데이터 집합이 학습 데이터 집합에 없는 범주를 포함하는 경우 해당 범주는 이 알 수 없는 수준에 매핑됩니다.

출력

Name Type 설명
학습되지 않은 모델 ILearner 인터페이스 학습되지 않은 회귀 모델입니다.

참고 항목

완료
전체 모듈 목록