다중 레이어 퍼셉트론 (MLP) 아키텍처 : 은닉층 수와 은닉층 크기 선택 기준?


104

고유 벡터가 10 개인 경우 입력 계층에 10 개의 신경 노드를 가질 수 있습니다 .5 개의 출력 클래스가 있으면 출력 계층에 5 개의 노드를 가질 수 있습니다. 그러나 MLP에서 숨겨진 계층의 수와 신경의 수를 선택하는 기준은 무엇입니까? 1 개의 은닉층에있는 노드?



답변:


217

숨겨진 레이어는 몇 개 입니까?

와 모델 제로 숨겨진 레이어를 해결할 선형 분리 데이터를. 따라서 데이터가 선형 적으로 분리되지 않는다는 것을 이미 알고 있지 않다면이를 검증해도 문제가되지 않습니다. 작업에 필요한 것보다 더 복잡한 모델을 사용하는 이유는 무엇입니까? 선형 적으로 분리 할 수있는 경우 더 간단한 기술이 작동하지만 Perceptron도 작업을 수행합니다.

데이터가 비선형 기술에 의한 분리가 필요하다고 가정하고 항상 하나의 숨겨진 레이어로 시작하십시오 . 거의 확실하게 당신이 필요로하는 전부입니다. MLP를 사용하여 데이터를 분리 할 수있는 경우 해당 MLP에는 아마도 단일 히든 레이어 만 필요합니다. 이것에 대한 이론적 정당성이 있지만 내 이유는 순전히 경험적입니다. 많은 어려운 분류 / 회귀 문제가 단일 은닉 계층 MLP를 사용하여 해결되지만 데이터를 성공적으로 모델링하는 데 사용 된 다중 은닉 계층 MLP를 만난 적이 없습니다. -ML 게시판, ML 교과서, 학술 논문 등 어디에 있든 확실히 존재하지만 그 사용을 정당화하는 상황은 경험적으로 매우 드뭅니다.


히든 레이어에는 몇 개의 노드가 있습니까?

MLP 학술 문헌에서. 내 자신의 경험 등 여러 가지 경험 법칙 ( RoT ) 을 모아서 자주 의존하며 신뢰할 수있는 가이드 (예 : 가이드가 정확하고 정확하지 않은 경우에도 일반적으로 다음에 무엇을해야할지 분명했습니다) :

수렴 개선에 기반한 RoT :

모델 구축을 시작할 때 은닉층에있는 더 많은 노드 쪽에 오류 가 있습니다.

왜? 첫째, 히든 레이어에있는 몇 개의 추가 노드는 아무런 해를 끼치 지 않을 가능성이 높으며 MLP는 여전히 수렴합니다. 반면에 히든 레이어의 노드 수가 너무 적 으면 수렴을 방해 할 수 있습니다. 이런 식으로 생각하면 추가 노드는 반복 (훈련 또는 모델 구축) 중에 네트워크에 신호를 저장 / 해제하기위한 추가 가중치와 같은 초과 용량을 제공합니다. 둘째, 히든 레이어의 추가 노드로 시작하면 나중에 (반복 진행 중에) 쉽게 정리할 수 있습니다. 이것은 일반적이며 사용자를 지원하는 진단 기술이 있습니다 (예 : 중량 매트릭스의 시각적 묘사 인 Hinton Diagram, 중량 값의 '열지도').

입력 레이어의 크기와 출력 레이어의 크기에 따른 RoT :

경험상이 [숨겨진] 레이어의 크기는 입력 레이어 크기 ...와 출력 레이어 크기 사이에있는 것입니다 ....

숨겨진 노드의 수를 계산하기 위해 다음의 일반 규칙을 사용합니다. (입력 + 출력 수) x 2/3

주요 구성 요소에 기반한 RoT :

일반적으로 입력 데이터 세트 분산의 70-90 %를 캡처하는 데 필요한 차원 [주성분]만큼 숨겨진 노드를 지정합니다 .

그러나 NN FAQ 작성자는 이러한 규칙을 "말도 안되는"(문자 그대로)이라고 부르는데, 그 이유는 훈련 인스턴스 수, 대상의 잡음 (응답 변수 값) 및 특징 공간의 복잡성을 무시하기 때문입니다.

그의 관점에서 (그리고 그가 말하는 내용을 항상 알고있는 것처럼 보였습니다) MLP에 어떤 형태의 정규화가 포함되는지 아니면 조기 중지가 포함되는지에 따라 은닉층의 뉴런 수를 선택합니다 .

히든 레이어의 뉴런 수를 최적화하는 유일한 유효한 기술 :

모델을 만드는 동안 집착 적으로 테스트하십시오. 테스트를 통해 "잘못된"네트워크 아키텍처의 서명이 드러납니다. 예를 들어, 적은 수의 노드 (테스트 결과에 따라 필요에 따라 점진적으로 증가)로 구성된 은닉 계층이있는 MLP로 시작하는 경우 훈련 및 일반화 오류는 모두 편향과 과소 적합으로 인해 높아집니다.

그런 다음 과적 합과 높은 분산으로 인해 일반화 오류가 증가하기 시작할 때까지 숨겨진 계층의 노드 수를 한 번에 하나씩 늘립니다.


실제로 저는 이렇게합니다.

입력 레이어 : 데이터 vactor의 크기 (내 모델의 기능 수) + 1 바이어스 노드의 경우, 물론 응답 변수는 포함하지 않음

출력 레이어 : 내 모델에 의해 결정되는 단독 : 회귀 (1 개의 노드) 대 분류 (소프트 맥스를 가정 한 클래스 수와 동일한 노드 수)

숨겨진 레이어 : 시작하려면 , 하나의 숨겨진 레이어입력 레이어의 크기와 동일한 수의 노드가 있습니다. "이상적인"크기는 더 큰 것보다 더 작을 가능성이 높습니다 (즉, 입력 계층의 수와 출력 계층의 수 사이의 노드 수). 다시 말하지만 이것은 단지 경험적 관찰이며 벌크 이 관찰은 내 경험입니다. 프로젝트가 필요한 추가 시간을 정당화 한 경우 적은 수의 노드로 구성된 단일 히든 레이어로 시작한 다음 (위에서 설명했듯이) 일반화를 계산하면서 한 번에 하나씩 노드를 히든 레이어에 추가합니다. 오류, 훈련 오류, 편향 및 분산. 일반화 오류가 감소하고 다시 증가하기 직전에 해당 지점의 노드 수를 선택합니다. 아래 그림을 참조하십시오.

여기에 이미지 설명 입력


1
# 1 RoT에 관한 몇 가지 관련 결과를 추가하고 싶습니다. 성공적인 SVM에서는 실제로 입력을 더 높은 차원 공간에 매핑합니다 (NN 용어로 입력 레이어의 노드보다 숨겨진 노드가 많음). 출력 레이어의 역할은이 과도하게 완성 된 표현에서 결정을 내리는 것입니다. Random Projections에도 연결이있을 수 있습니다. Adam Coates & Andrew Y. Ng (2011)의 훌륭한 논문은 관련 주제를 논의합니다.
Vladislavs Dovgalecs

좋은 설명입니다. sklearn 및 MLPClassifier를 사용할 때 위와 같은 그림을 어떻게 그릴 수 있는지에 대한 아이디어가 있습니까?
seralouk

1
@sera xkcd 스타일을 의미합니까?
denfromufa

원칙적으로 히든 레이어의 뉴런 수를 최적화하는 프로세스를 자동화 할 수 있습니까? 또한 히든 레이어 수를 자동으로 최적화 할 수 있습니까?
Addison

2

은닉층에서 뉴런의 수를 선택하고 신경망에서 은닉층의 수를 선택하는 것은 매우 어렵습니다.

일반적으로 대부분의 응용 프로그램에서는 하나의 숨겨진 레이어로 충분합니다. 또한 해당 은닉층의 뉴런 수는 입력 수 (예 : 10)와 출력 수 (예 : 5) 사이에 있어야합니다.

그러나 뉴런과 은닉층의 수를 선택하는 가장 좋은 방법은 실험입니다. 서로 다른 수의 은닉층과 은닉 뉴런을 사용하여 여러 신경망을 훈련시키고 교차 검증을 사용하여 해당 네트워크의 성능을 측정합니다 . 최고의 성능을내는 네트워크를 산출하는 숫자를 고수 할 수 있습니다.


1

각 레이어에 대해 최적의 레이어 수와 최적의 뉴런 수를 자동으로 선택하려면 유전자 최적화를 사용할 수 있습니다 .

핵심 부분은 다음과 같습니다.

  1. 염색체 : 각 은닉층의 단위 수를 정의하는 벡터입니다 (예 : [20,5,1,0,0]은 첫 번째 은닉층에 20 개 단위, 두 번째에 5 개, ..., 4 층과 5 층 누락). 시도 할 최대 레이어 수와 각 레이어의 최대 단위 수에 대한 제한을 설정할 수 있습니다. 또한 염색체 생성 방법에 대한 제한을 두어야합니다. 예를 들어 [10, 0, 3, ...]는 생성되지 않아야합니다. 누락 된 레이어 ( '3, ...') 이후의 단위는 관련이 없으며 평가주기를 낭비하기 때문입니다.
  2. 피트니스 함수 : 주어진 염색체로 정의 된 네트워크의 교차 검증 집합에서 가장 낮은 훈련 오류의 역수를 반환하는 함수입니다. "가장 작고 빠르지 만 가장 정확한 네트워크"를 찾으려면 총 단위 수 또는 계산 시간을 포함 할 수도 있습니다.

다음 사항도 고려할 수 있습니다.

  • 전정 : 대규모 네트워크에서 시작한 다음 교차 검증 세트 성능을 추적하면서 레이어와 숨겨진 단위를 줄입니다.
  • 성장 : 아주 작은 네트워크에서 시작한 다음 단위와 레이어를 추가하고 다시 CV 세트 성능을 추적합니다.

0

최근에 이것에 대한 이론적 작업이 있습니다 https://arxiv.org/abs/1809.09953 . RELU MLP를 사용한다고 가정하면 모든 히든 레이어에는 동일한 수의 노드가 있고 신경망으로 근사하는 손실 함수 및 실제 함수는 일부 기술적 속성 (논문에 있음)을 준수합니다. 깊이를 선택할 수 있습니다. $ \ log (n) $를 주문하고 히든 레이어의 너비는 $ n ^ {d / (2 (\ beta + d))} \ log ^ 2 (n) $가되도록합니다. 여기서 $ n $는 샘플 크기, $ d $는 입력 벡터의 차원, $ \ beta $는 실제 함수에 대한 평활도 매개 변수입니다. $ \ beta $는 알 수 없으므로 하이퍼 파라미터로 취급하는 것이 좋습니다.

이렇게하면 표본 크기의 함수로 $ 1 $로 수렴 할 확률로 근사 오류가 표본 크기의 함수로 $ 0 $로 수렴된다는 것을 보장 할 수 있습니다. 그들은 속도를 제공합니다. 이것이 '최고의'아키텍처라고 보장되지는 않지만 적어도 시작하기에 좋은 장소를 제공 할 수 있습니다. 또한 내 경험에 따르면 중퇴와 같은 것이 실제로 도움이 될 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.