답변:
완전히 연결된 네트워크 에서 각 레이어의 뉴런 수와 레이어 수의 고려 는 문제의 특징 공간에 따라 다릅니다. 묘사하기 위해 2 차원 경우에서 발생하는 일을 설명하기 위해 2 차원 공간을 사용합니다. 나는 과학자 의 작품에서 이미지를 사용했습니다 . 다른 그물을 이해 CNN
하려면 여기를 살펴 보는 것이 좋습니다 .
뉴런이 하나 뿐이라고 가정하면 네트워크의 매개 변수를 학습 한 후 공간을 두 개의 개별 클래스로 분리 할 수있는 선형 결정 경계를 갖게됩니다.
다음 데이터를 분리하라는 요청이 있다고 가정하십시오. d1
상위 의사 결정 경계를 지정 해야 AND
하며 입력 데이터가 왼쪽 또는 오른쪽인지 판별하기위한 조작을 수행하고 있습니다. 라인 d2
은 AND
입력 데이터가 상위인지 아닌지를 조사 하는 다른 작업을 수행하고 d2
있습니다. 이 경우 d1
입력이 같은 입력 분류 라인의 왼쪽에 있는지 이해하려고 원을 또한, d2
입력이 같은 입력 분류 라인의 오른쪽에 있는지 여부를 알아 내기 위해 노력하고 원 . 이제 우리는 또 다른 것이 필요합니다AND
매개 변수를 학습 한 후 구성되는 두 줄의 결과를 마무리하는 작업입니다. 입력이의 왼쪽 d1
과 오른쪽에 d2
있으면 원 으로 분류해야합니다 .
이제 다음과 같은 문제가 있고 클래스를 분리하라는 요청을 받았다고 가정하십시오. 이 경우의 정당성은 위와 동일합니다.
다음 데이터의 경우 :
결정 경계는 볼록하지 않으며 이전 경계보다 더 복잡합니다. 먼저 내부 원을 찾는 서브넷이 있어야합니다. 그런 다음 직사각형 안에있는 입력이 원이 아니며 외부에 있다면 원이라고 결정하는 내부 직사각형 결정 경계를 찾는 또 다른 서브넷이 있어야합니다. 그런 다음 결과를 마무리하고 입력 데이터가 더 큰 사각형 안에 있고 안쪽 사각형 밖에 있으면 circle 으로 분류해야합니다 . AND
이 목적을 위해 다른 작업이 필요합니다 . 네트워크는 다음과 같습니다.
다음과 같은 동그라미 결정 경계 를 찾아야한다고 가정하십시오 .
이 경우 네트워크는 다음 네트워크와 같지만 첫 번째 숨겨진 레이어에 훨씬 더 많은 뉴런이 있습니다.
이 질문에 아직 정확한 답이 없기 때문에 매우 좋은 질문입니다. 이것은 활발한 연구 분야입니다.
궁극적으로 네트워크 아키텍처는 데이터의 차원과 관련이 있습니다. 신경망은 보편적 근사치이므로 네트워크가 충분히 크면 데이터에 적합 할 수 있습니다.
어떤 아키텍처가 가장 효과가 좋은지 알 수있는 유일한 방법은 모든 아키텍처를 시험 해보고 최상의 아키텍처를 선택하는 것입니다. 물론 신경망에서는 각 모델이 훈련하는 데 시간이 오래 걸리기 때문에 상당히 어렵습니다. 어떤 사람들은 먼저 "너무 큰"모델을 훈련시킨 다음 네트워크에 크게 기여하지 않는 가중치를 제거하여 모델을 정리합니다.
네트워크가 너무 크면 과도하게 맞거나 수렴하기 어려울 수 있습니다. 직관적으로, 네트워크는 데이터를보다 복잡한 방식으로 설명하려고합니다. 10 페이지짜리 에세이로 한 문장으로 대답 할 수있는 질문에 답하는 것과 같습니다. 그러한 긴 답변을 구성하기가 어려울 수 있으며 많은 불필요한 사실이 발생할 수 있습니다. ( 이 질문 참조 )
반면에 네트워크가 너무 작 으면 데이터에 적합하지 않습니다. 10 페이지 분량의 에세이를 써야했을 때 한 문장으로 대답하는 것과 같습니다. 당신의 대답만큼이나, 당신은 관련 사실 중 일부를 놓치게 될 것입니다.
데이터의 차원을 알고 있다면 네트워크가 충분히 큰지 알 수 있습니다. 데이터의 차원을 추정하기 위해 순위 계산을 시도 할 수 있습니다. 이것은 사람들이 네트워크의 크기를 추정하는 방법에 대한 핵심 아이디어입니다.
그러나 간단하지 않습니다. 실제로 네트워크가 64 차원이어야하는 경우 크기가 64 인 단일 숨겨진 계층 또는 크기가 8 인 두 개의 계층을 구축합니까? 여기서는 어떤 경우에 일어날 지에 대한 직관을 제공 할 것입니다.
깊이 들어가는 것은 숨겨진 레이어를 더 추가하는 것을 의미합니다. 그것이하는 일은 네트워크가보다 복잡한 기능을 계산할 수있게한다는 것입니다. 예를 들어, Convolutional Neural Networks에서 처음 몇 개의 레이어는 가장자리와 같은 "낮은 수준"기능을 나타내고 마지막 레이어는 얼굴, 신체 부위 등과 같은 "높은 수준"기능을 나타냅니다.
데이터가 이미지와 같이 구조화되지 않았고 유용한 정보를 추출하기 전에 약간 처리해야하는 경우 일반적으로 깊이 들어가야합니다.
더 깊어진다는 것은 더 복잡한 기능을 만드는 것을 의미하며, "더 넓어짐"은 더 많은 기능을 만드는 것을 의미합니다. 문제는 매우 간단한 기능으로 설명 할 수 있지만 많은 기능이 필요합니다. 일반적으로 복잡한 기능은 단순한 기능보다 더 많은 정보를 전달하기 때문에 네트워크 끝쪽으로 계층이 좁아 지므로 더 이상 필요하지 않습니다.
짧은 답변 : 데이터의 크기와 응용 프로그램의 유형과 매우 관련이 있습니다.
올바른 수의 레이어를 선택하는 것은 실습을 통해서만 달성 할 수 있습니다. 이 질문에 대한 일반적인 답변은 아직 없습니다 . 네트워크 아키텍처를 선택하면 가능성있는 공간 (가설 공간)을 특정 일련의 텐서 연산으로 제한하여 입력 데이터를 출력 데이터에 매핑합니다. DeepNN에서 각 계층은 이전 계층의 출력에있는 정보에만 액세스 할 수 있습니다. 한 계층이 현재 문제와 관련된 일부 정보를 삭제하면이 정보는 이후 계층에서 복구 할 수 없습니다. 이를 " 정보 병목 현상 "이라고합니다.
정보 병목 현상은 양날의 칼입니다.
1) 소수의 레이어 / 뉴런을 사용하는 경우 중간 레이어의 용량이 매우 제한적 ( 부적합 ) 하기 때문에 모델은 데이터의 몇 가지 유용한 표현 / 기능을 배우고 일부 중요한 데이터를 잃게됩니다 .
2) 많은 수의 레이어 / 뉴런을 사용하는 경우 모델은 훈련 데이터와 관련된 너무 많은 표현 / 기능을 배우고 실제 및 훈련 세트 외부의 데이터로 일반화하지 않습니다 ( 과적 합) ).
예와 더 많은 발견을위한 유용한 링크 :
[2] https://www.quantamagazine.org/new-theory-cracks-open-the-black-box-of-deep-learning-20170921/
2 년 전부터 신경망을 다루면서, 이것은 새로운 시스템을 모델링하고 싶지 않을 때마다 항상 발생하는 문제입니다. 내가 찾은 가장 좋은 방법은 다음과 같습니다.
일반적인 접근 방식은 다양한 아키텍처를 시도하고 결과를 비교하고 최상의 구성을 얻는 것입니다. 경험은 첫 번째 아키텍처 추측에서 더 직관력을 제공합니다.
이전 답변에 덧붙여, 신경망의 토폴로지가 훈련의 일부로 내생 적으로 나타나는 접근법이 있습니다. 가장 눈에 띄는 것은 NEAT (Neuroevolution of Augmenting Topologies)가 있으며 숨겨진 계층이없는 기본 네트워크로 시작한 다음 유전자 알고리즘을 사용하여 네트워크 구조를 "복잡화"합니다. NEAT는 많은 ML 프레임 워크에서 구현됩니다. 다음은 마리오를 배우기위한 구현에 대한 접근하기 쉬운 기사입니다. CrAIg : 신경망을 사용하여 마리오 배우기