Convolutional Neural Networks에서 필터와 활성화 맵은 어떻게 연결됩니까?


11

특정 레이어의 활성화 맵이 해당 레이어의 필터에 어떻게 연결되어 있습니까? 필터와 활성화 맵 사이에서 컨볼 루션 연산을 수행하는 방법에 대해 묻지 않고이 두 가지 연결 유형에 대해 묻습니다.

예를 들어, 완전한 연결을 원한다고 가정하십시오. 주어진 레이어에 f 개의 필터와 n 개의 활성화 맵이 있습니다. 다음 레이어에서 f * n 개의 활성화 맵을 가져 왔으며, 각 새 레이어마다 활성화 맵 수가 증가합니다. 이것이 내가 끝났다고 가정하는 방식입니다.

또는 각 필터가 하나의 활성화 맵에 연결되어 있다고 말할 수 있습니다. 이 경우 필터 수는 활성화 맵 수와 같으며 모든 레이어에는 동일한 수의 필터 및 활성화 맵이 있습니다. 이것은 내 네트워크의 현재 아키텍처이며 잘 배우는 것 같습니다.

혼란의 주요 원인은 온라인에서 볼 수있는 convnet의 다이어그램을 보는 것입니다. 이들 중 일부는 필터와 활성화 맵 사이에 "전체 연결"이 있습니다 여기에 이미지 설명을 입력하십시오 . 첫 번째 레이어에는 활성화 맵 4 개와 아마도 2 개의 필터가 있습니다. 각 맵은 각 필터와 관련되어 다음 계층에 8 개의 맵이 생성됩니다. 좋아 보인다.

그러나 여기 우리는 이해가되지 않는 아키텍처를 가지고 있습니다- 여기에 이미지 설명을 입력하십시오 첫 번째 레이어의 6 맵에서 2 번째 맵의 16 맵으로 어떻게 이동합니까? 6에서 16 맵을 얻는 방법을 생각할 수는 있지만 말이되지 않습니다.

답변:


10

게시 한 두 번째 CNN (Convolutional Neural Network) 아키텍처는 이 백서 에서 제공됩니다 . 논문에서 저자들은 레이어 S2와 C3 사이에서 일어나는 일에 대해 설명합니다. 그들의 설명은 명확하지 않습니다. 이 CNN 아키텍처는 '표준'이 아니며 CNN의 첫 번째 예로 혼란 스러울 수 있습니다.

CNN 아키텍처

28×285×5미디엄×미디엄×미디엄(미디엄+1)×(미디엄+1)

레이어 S2와 레이어 C3 사이에 일어나는 일은 다음과 같습니다. 레이어 C2에는 레이어 S2에있는 6 개의 피쳐 맵에서 생성 된 16 개의 피쳐 맵이 있습니다. 레이어 C3 의 필터 수 는 실제로 명확하지 않습니다. 실제로 아키텍처 다이어그램에서만 16 개의 피쳐 맵을 생성하는 정확한 필터 수를 판단 할 수 없습니다. 이 논문의 저자는 다음 표를 제공합니다 (8 페이지).

레이어 S2와 C3 사이의 연결

표와 함께 다음 설명을 제공합니다 (7 페이지 하단).

5×5

표에서 저자는 계층 C3의 모든 기능 맵이 3 개 이상의 기능 맵을 결합하여 생성됨을 보여줍니다 (8 페이지).

처음 6 개의 C3 기능 맵은 S2에서 3 개의 기능 맵의 모든 연속 서브 세트에서 입력을받습니다. 다음 6 개는 4 개의 모든 연속 된 부분 집합에서 입력을받습니다. 다음 3 개는 4 개의 불연속 서브 세트에서 입력을받습니다. 마지막으로 마지막 것은 모든 S2 기능 맵에서 입력을받습니다.

레이어 C3에 몇 개의 필터가 있습니까? 불행히도, 그들은 이것을 설명하지 않습니다. 가장 간단한 두 가지 가능성은 다음과 같습니다.

  1. C3 기능 맵마다 S2 기능 맵당 하나의 필터가 있습니다. 즉, 동일한 C3 기능 맵과 연관된 S2 기능 맵간에 필터 공유가 없습니다.
  2. C3 기능 맵마다 하나의 필터가 있으며이 필터는 결합 된 레이어 S2의 (3 개 이상) 기능 맵에서 공유됩니다.

두 경우 모두 '결합'한다는 것은 S2 기능 맵 그룹 별 컨볼 루션 결과를 결합하여 생성 된 C3 기능 맵을 작성해야 함을 의미합니다. 저자는이 작업을 수행하는 방법을 지정하지는 않지만 추가하는 것이 일반적으로 선택됩니다 (예 : 이 페이지 중앙 근처의 애니메이션 GIF 참조) .

그러나 저자는 아키텍처를 해독하는 데 도움이되는 추가 정보를 제공합니다. '레이어 C3에는 1,516 개의 학습 가능한 매개 변수가 있습니다'(8 페이지)라고 말합니다. 이 정보를 사용하여 위의 사례 (1)과 (2)를 결정할 수 있습니다.

(6×)+(9×4)+(1×6)=60(1410+1)×(1410+1)=5×55×5×60=1,5001,500+16=1,516(5×5×16)+16=416

따라서, 위의 표 I을 다시 살펴보면 각 S2 기능 맵과 연관된 10 개의 개별 C3 필터가 있습니다 (따라서 총 60 개의 개별 필터).

저자는 이러한 유형의 선택을 설명합니다.

[C3 레이어에있는] 다른 피처 맵은 서로 다른 입력 세트를 가져 오기 때문에 서로 다른 (보완 적으로 보완적인) 피처를 추출해야합니다.

이것이 상황을 분명히하기를 바랍니다.


3

실제로 @ 앞에있는 값은 피쳐 맵의 양이 아니라 필터의 양을 나타내는 것이 맞습니다 (첫 번째 회선 레이어의 경우이 값이 일치하더라도).

마지막 질문과 관련하여 : 그렇습니다. 레이어 l의 모든 기능 맵이 레이어 l + 1의 모든 필터에 연결되어있는 것이 좋습니다. 이것의 유일한 이유는 피쳐 맵을 결합 할 수있는 더 많은 방법 (경로)이있어 입력 이미지에있는 것을 더 잘 구별 할 수있게함으로써 네트워크의 표현력을 크게 향상시키기 때문입니다.

마지막으로 신경망 기술을 직접 구현하여 연습하고 있는지 모르겠지만 특정 작업에 컨볼 루션 네트워크를 적용하려는 경우 Theano, Brainstorm, Caffe와 같은 훌륭한 신경망 라이브러리가 이미 있습니다.


내가 할 일은 두 가지를 비교하는 벤치마킹이라고 생각합니다. 완전히 연결되지 않은 버전을 사용하면 분류를 빠르게 학습하고 계산할 수 있습니다. 그러나 정확성이 더 중요합니다. 완전하게 연결되지 않은 버전에서 각 필터는보다 일반적인 작업 대신 훨씬 더 구체적인 작업으로 현지화됩니다. 완전히 연결된 버전에서 필터는 단일 유형의 기능 대신 이전의 모든 필터에 가장 적합한 것을 기반으로 업데이트됩니다. C #을 사용하여 100 % 처음부터 네트워크를 만들고 있습니다. 확실히 쉬운 일을하는 방법은 아니지만 ... 깊이있는 것들을 가르쳐주었습니다
Frobot

그것은 건전한 계획처럼 들립니다. 행운을 빕니다!
Sjoerd
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.