신경망에서 뉴런과 레이어 수를 설정하는 방법


25

나는 신경망의 초보자이며 두 가지 개념을 이해하는 데 어려움을 겪었습니다.

  1. 주어진 신경망이 갖는 중간 계층의 수를 어떻게 결정합니까? 1 대 10 또는 무엇이든.
  2. 각 중간 층의 뉴런 수를 어떻게 결정합니까? 각 중간 층에 동일한 수의 뉴런을 갖는 것이 권장됩니까, 아니면 응용에 따라 다릅니 까?

답변:


19

완전히 연결된 네트워크 에서 각 레이어의 뉴런 수와 레이어 수의 고려 는 문제의 특징 공간에 따라 다릅니다. 묘사하기 위해 2 차원 경우에서 발생하는 일을 설명하기 위해 2 차원 공간을 사용합니다. 나는 과학자 의 작품에서 이미지를 사용했습니다 . 다른 그물을 이해 CNN하려면 여기를 살펴 보는 것이 좋습니다 .

뉴런이 하나 뿐이라고 가정하면 네트워크의 매개 변수를 학습 한 후 공간을 두 개의 개별 클래스로 분리 할 수있는 선형 결정 경계를 갖게됩니다.

여기에 이미지 설명을 입력하십시오

여기에 이미지 설명을 입력하십시오

다음 데이터를 분리하라는 요청이 있다고 가정하십시오. d1상위 의사 결정 경계를 지정 해야 AND하며 입력 데이터가 왼쪽 또는 오른쪽인지 판별하기위한 조작을 수행하고 있습니다. 라인 d2AND입력 데이터가 상위인지 아닌지를 조사 하는 다른 작업을 수행하고 d2있습니다. 이 경우 d1입력이 같은 입력 분류 라인의 왼쪽에 있는지 이해하려고 원을 또한, d2입력이 같은 입력 분류 라인의 오른쪽에 있는지 여부를 알아 내기 위해 노력하고 . 이제 우리는 또 다른 것이 필요합니다AND매개 변수를 학습 한 후 구성되는 두 줄의 결과를 마무리하는 작업입니다. 입력이의 왼쪽 d1과 오른쪽에 d2있으면 으로 분류해야합니다 .

여기에 이미지 설명을 입력하십시오

이제 다음과 같은 문제가 있고 클래스를 분리하라는 요청을 받았다고 가정하십시오. 이 경우의 정당성은 위와 동일합니다.

여기에 이미지 설명을 입력하십시오

다음 데이터의 경우 :

여기에 이미지 설명을 입력하십시오

결정 경계는 볼록하지 않으며 이전 경계보다 더 복잡합니다. 먼저 내부 원을 찾는 서브넷이 있어야합니다. 그런 다음 직사각형 안에있는 입력이 원이 아니며 외부에 있다면 원이라고 결정하는 내부 직사각형 결정 경계를 찾는 또 다른 서브넷이 있어야합니다. 그런 다음 결과를 마무리하고 입력 데이터가 더 큰 사각형 안에 있고 안쪽 사각형 밖에 있으면 circle 으로 분류해야합니다 . AND이 목적을 위해 다른 작업이 필요합니다 . 네트워크는 다음과 같습니다.

여기에 이미지 설명을 입력하십시오


다음과 같은 동그라미 결정 경계 를 찾아야한다고 가정하십시오 .

여기에 이미지 설명을 입력하십시오

이 경우 네트워크는 다음 네트워크와 같지만 첫 번째 숨겨진 레이어에 훨씬 더 많은 뉴런이 있습니다.

여기에 이미지 설명을 입력하십시오


11

이 질문에 아직 정확한 답이 없기 때문에 매우 좋은 질문입니다. 이것은 활발한 연구 분야입니다.

궁극적으로 네트워크 아키텍처는 데이터의 차원과 관련이 있습니다. 신경망은 보편적 근사치이므로 네트워크가 충분히 크면 데이터에 적합 할 수 있습니다.

어떤 아키텍처가 가장 효과가 좋은지 알 수있는 유일한 방법은 모든 아키텍처를 시험 해보고 최상의 아키텍처를 선택하는 것입니다. 물론 신경망에서는 각 모델이 훈련하는 데 시간이 오래 걸리기 때문에 상당히 어렵습니다. 어떤 사람들은 먼저 "너무 큰"모델을 훈련시킨 다음 네트워크에 크게 기여하지 않는 가중치를 제거하여 모델을 정리합니다.

네트워크가 "너무 큰"경우

네트워크가 너무 크면 과도하게 맞거나 수렴하기 어려울 수 있습니다. 직관적으로, 네트워크는 데이터를보다 복잡한 방식으로 설명하려고합니다. 10 페이지짜리 에세이로 한 문장으로 대답 할 수있는 질문에 답하는 것과 같습니다. 그러한 긴 답변을 구성하기가 어려울 수 있으며 많은 불필요한 사실이 발생할 수 있습니다. ( 이 질문 참조 )

네트워크가 "너무 작은"경우

반면에 네트워크가 너무 작 으면 데이터에 적합하지 않습니다. 10 페이지 분량의 에세이를 써야했을 때 한 문장으로 대답하는 것과 같습니다. 당신의 대답만큼이나, 당신은 관련 사실 중 일부를 놓치게 될 것입니다.

네트워크 크기 추정

데이터의 차원을 알고 있다면 네트워크가 충분히 큰지 알 수 있습니다. 데이터의 차원을 추정하기 위해 순위 계산을 시도 할 수 있습니다. 이것은 사람들이 네트워크의 크기를 추정하는 방법에 대한 핵심 아이디어입니다.

그러나 간단하지 않습니다. 실제로 네트워크가 64 차원이어야하는 경우 크기가 64 인 단일 숨겨진 계층 또는 크기가 8 인 두 개의 계층을 구축합니까? 여기서는 어떤 경우에 일어날 지에 대한 직관을 제공 할 것입니다.

더 깊어지다

깊이 들어가는 것은 숨겨진 레이어를 더 추가하는 것을 의미합니다. 그것이하는 일은 네트워크가보다 복잡한 기능을 계산할 수있게한다는 것입니다. 예를 들어, Convolutional Neural Networks에서 처음 몇 개의 레이어는 가장자리와 같은 "낮은 수준"기능을 나타내고 마지막 레이어는 얼굴, 신체 부위 등과 같은 "높은 수준"기능을 나타냅니다.

데이터가 이미지와 같이 구조화되지 않았고 유용한 정보를 추출하기 전에 약간 처리해야하는 경우 일반적으로 깊이 들어가야합니다.

더 넓어짐

더 깊어진다는 것은 더 복잡한 기능을 만드는 것을 의미하며, "더 넓어짐"은 더 많은 기능을 만드는 것을 의미합니다. 문제는 매우 간단한 기능으로 설명 할 수 있지만 많은 기능이 필요합니다. 일반적으로 복잡한 기능은 단순한 기능보다 더 많은 정보를 전달하기 때문에 네트워크 끝쪽으로 계층이 좁아 지므로 더 이상 필요하지 않습니다.


고유 차원 의 개념을 사용 하여 문제와 관련된 차원의 수를 찾을 수 있습니다. 고유 치수는 신호를 완전히 설명하는 데 필요한 변수 수에 대한 답을 찾고자하며 해당 신호의 임의 소스의 변수 수와 관련이 있습니다.
Pedro Henrique Monforte

8

짧은 답변 : 데이터의 크기와 응용 프로그램의 유형과 매우 관련이 있습니다.

올바른 수의 레이어를 선택하는 것은 실습을 통해서만 달성 할 수 있습니다. 이 질문에 대한 일반적인 답변은 아직 없습니다 . 네트워크 아키텍처를 선택하면 가능성있는 공간 (가설 공간)을 특정 일련의 텐서 연산으로 제한하여 입력 데이터를 출력 데이터에 매핑합니다. DeepNN에서 각 계층은 이전 계층의 출력에있는 정보에만 액세스 할 수 있습니다. 한 계층이 현재 문제와 관련된 일부 정보를 삭제하면이 정보는 이후 계층에서 복구 할 수 없습니다. 이를 " 정보 병목 현상 "이라고합니다.

정보 병목 현상은 양날의 칼입니다.

1) 소수의 레이어 / 뉴런을 사용하는 경우 중간 레이어의 용량이 매우 제한적 ( 부적합 ) 하기 때문에 모델은 데이터의 몇 가지 유용한 표현 / 기능을 배우고 일부 중요한 데이터를 잃게됩니다 .

2) 많은 수의 레이어 / 뉴런을 사용하는 경우 모델은 훈련 데이터와 관련된 너무 많은 표현 / 기능을 배우고 실제 및 훈련 세트 외부의 데이터로 일반화하지 않습니다 ( 과적 합) ).

예와 더 많은 발견을위한 유용한 링크 :

[1] https : //livebook.manning.com#! / book / deep-learning-with-python / chapter-3 / point-1130-232-232-0

[2] https://www.quantamagazine.org/new-theory-cracks-open-the-black-box-of-deep-learning-20170921/


3

2 년 전부터 신경망을 다루면서, 이것은 새로운 시스템을 모델링하고 싶지 않을 때마다 항상 발생하는 문제입니다. 내가 찾은 가장 좋은 방법은 다음과 같습니다.

  1. 피드 포워드 네트워크로 모델링 된 유사한 문제점을 찾고 해당 아키텍처를 연구하십시오.
  2. 해당 구성으로 시작하여 데이터 세트를 학습시키고 테스트 세트를 평가하십시오.
  3. 아키텍처에서 정리 를 수행 하고 데이터 세트의 결과를 이전 결과와 비교하십시오. 모형의 정확도에 영향을 미치지 않으면 원본 모형이 데이터에 과도하게 적합하다는 것을 알 수 있습니다.
  4. 그렇지 않으면 더 많은 자유도 (예 : 더 많은 레이어)를 추가하십시오.

일반적인 접근 방식은 다양한 아키텍처를 시도하고 결과를 비교하고 최상의 구성을 얻는 것입니다. 경험은 첫 번째 아키텍처 추측에서 더 직관력을 제공합니다.


1

이전 답변에 덧붙여, 신경망의 토폴로지가 훈련의 일부로 내생 적으로 나타나는 접근법이 있습니다. 가장 눈에 띄는 것은 NEAT (Neuroevolution of Augmenting Topologies)가 있으며 숨겨진 계층이없는 기본 네트워크로 시작한 다음 유전자 알고리즘을 사용하여 네트워크 구조를 "복잡화"합니다. NEAT는 많은 ML 프레임 워크에서 구현됩니다. 다음은 마리오를 배우기위한 구현에 대한 접근하기 쉬운 기사입니다. CrAIg : 신경망을 사용하여 마리오 배우기

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