신경망에서 1x1 컨볼 루션이란 무엇입니까?


106

현재 Udacity Deep Learning Tutorial을하고 있습니다. 레슨 3에서는 1x1 컨벌루션에 대해 이야기합니다. 이 1x1 컨볼 루션은 Google Inception Module에서 사용됩니다. 1x1 컨볼 루션이 무엇인지 이해하는 데 문제가 있습니다.

나는 또한 Yann Lecun 의이 게시물 을 보았습니다.

누군가 나에게 친절하게 설명해 주시겠습니까?


또한 관련 질문을
gkcn

1
다음은 1x1 컨볼 루션에 대해 자세히 설명 된 이러한 모듈에 대한 블로그 게시물입니다. hackathonprojects.wordpress.com/2016/09/25/…
Tommy

1
간단히 말해서, 전체 아이디어는 3D 볼륨의 채널 수를 줄여 계산 속도를 높이는 것입니다.
onerhao

답변:


113

(N,F,H,W)

  • N
  • F
  • H,W

F1(N,F1,H,W)

F1>FF1<F

실제로 Google Inception 기사 Going Deeper with Convolutions 에서 다음 같이 설명합니다.

적어도이 순진한 형태의 상기 모듈들에 대한 하나의 큰 문제는, 적은 수의 필터를 갖는 컨볼 루션 층 (convolutional layer)에서 아주 적은 수의 5x5 컨볼 루션조차 엄청나게 비쌀 수 있다는 것이다.

이는 제안 된 아키텍처의 두 번째 아이디어로 이어진다. 계산 요구 사항이 너무 많이 증가 할 때마다 차원 축소 및 투영을 신중하게 적용한다. 이것은 임베딩의 성공을 기반으로합니다. 낮은 차원의 임베딩에도 비교적 큰 이미지 패치에 대한 많은 정보가 포함될 수 있습니다. 1x1 컨볼 루션은 값 비싼 3x3 및 5x5 컨볼 루션 이전의 감소를 계산하는 데 사용됩니다. 축소로 사용되는 것 외에도 정류 선형 활성화를 사용하여 이중 용도로 만듭니다.

따라서 Inception 아키텍처에서는 1x1 컨볼 루션 필터를 사용하여 필터 차원의 차원을 줄입니다. 위에서 설명한 바와 같이, 이러한 1x1 전환 레이어는 일반적으로 필터 공간 차원 (증가 또는 감소)을 변경하는 데 사용될 수 있으며, Inception 아키텍처에서는 필터 차원 공간에서 이러한 1x1 필터가 차원 축소에 얼마나 효과적인지 알 수 있습니다. 공간 차원 공간이 아닙니다.

아마도 1x1 전환 필터에 대한 다른 해석이있을 수 있지만 특히 Google Inception 아키텍처와 관련 하여이 설명을 선호합니다.


3
5x5 전환을 구현하기 전에 1x1 전환이 이전 필터 크기를 1로 압축합니까?
Leonard Loo

1
@LeonardLoo는 각각의 1x1 커널이 필터 크기를 1로 줄이지 만 하나의 1x1 컨볼 루션에서 여러 커널을 가질 수 있으므로 "필터"의 수는 임의로 선택할 수 있습니다.
Fazzolini

43

1x1 컨볼 루션은 단순히 모든 채널을 가진 입력 픽셀을 주변을 보지 않고 출력 픽셀에 매핑합니다. 깊이 채널 수를 줄이는 데 자주 사용됩니다. 볼륨이 매우 큰 볼륨을 곱하기에는 속도가 느리기 때문입니다.

input (256 depth) -> 1x1 convolution (64 depth) -> 4x4 convolution (256 depth)

input (256 depth) -> 4x4 convolution (256 depth)

아래쪽은 약 ~ 3.7 배 느립니다.

이론적으로 신경망은 모든 것을 곱하는 무차별적인 힘 대신 이것을 사용하기 위해 '색상'을 입력하도록 '선택'할 수 있습니다.


19
1x1은 하나의 픽셀을 출력 픽셀에 매핑하는 것이 아니라 모든 입력 픽셀 채널을 하나의 픽셀로 축소합니다. 첫 번째 줄의 예에는 입력 할 수있는 256 개의 채널이 있으며 64 개의 1x1 커널 각각은 256 개의 입력 채널을 모두 하나의 "픽셀"(실수)로 축소합니다. 결과적으로 동일한 공간 치수를 가진 256 개 대신 64 개 채널을 사용할 수있게되어 두 번째 라인 예제에서보다 4x4 컨볼 루션이 계산적으로 저렴 해집니다.
Fazzolini

좋은 지적은 게시물을 업데이트합니다 :)
무료 Debreuil

3
3.7 배 더 느린 곳은 어디입니까?
CMCDragonkai

@CMCDragonkai 계산 비용이 가중치 수에 비례한다고 가정합니다. 후자의 경우 num_weights = in_depth x out_depth x kernel_size = 256x256x4x4. 첫 번째 경우 num_weights = 256x64x1x1+64x265x4x4=256x64x17. 비율을 취하면 256 / 17 ~ 3.7이됩니다. 숫자 가중치가 입력 깊이 및 출력 깊이와 관련되는 방식에 대한 시각화는이 페이지 9를 확인하십시오. arxiv.org/pdf/1603.07285.pdf
넬슨 딘

11

any

https://datascience.stackexchange.com/questions/9175/how-do-subsequent-convolution-layers-work

특히, 유형 2.2는 회선에 대한 올바른 설명입니다.

또 다른 유용한 답변 :

https://ai.stackexchange.com/questions/5769/in-a-cnn-does-each-new-filter-have-different-weights-for-each-input-channel-or

이 답변은 각 인 / 아웃 채널 조합대해 별도의 필터가있는 방법을 설명합니다 . 이들 각각을 계산 한 후 결과 는 출력 채널 수 값을 남기고 입력 채널 축에 대해 합산 됩니다.

다음은 1x1 컨볼 루션 작동 방식을 이해하는 데 도움이되는 비디오입니다.

https://www.coursera.org/lecture/convolutional-neural-networks/networks-in-networks-and-1x1-convolutions-ZTb8x

내가 얻은 주요 내용은 다음과 같습니다.

  • mnf1(m,n,f1)f1mnf2(m,n,f2)
  • f2<f1f1f2

(m,n,f1)

3

삽화를 통해보다 직관적이고 간결하게 설명하려고 노력할 것입니다!

1 개 * 1 전환 (일명 네트워크의 네트워크 )?

입력이 (n_H, n_W, n_c_prev)라고 가정 해 봅시다. 당신은 할 수 있습니다 생각 (1 * 1 * n_c_prev)으로의 단일 신경 세포 (완전히 연결된 네트워크 - 즉 왜 N / N / w에 w ) 즉 그들을 곱 입력에 (n_c_prev) 숫자 복용 (1 * 1 * n_c_prev )를 추가 한 다음 ReLu & 출력 (n_H, n_W)을 취하고 여러 필터 (n_c)가 있으면 출력은 (n_H, n_W, n_C)가됩니다.

따라서 풀링 레이어를 사용하여 공간 크기 (n_H, n_W)를 줄이고 1 * 1 전환을 사용하여 n_c_prev (즉, 채널 수)를 줄여 많은 계산을 절약 할 수 있습니다. 예를 들어

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

따라서 빼앗아

  • 1x1 컨 벌루 셔널 레이어를 사용하여 n_C를 줄일 수 있지만 n_H, n_W는 줄일 수 없습니다.

  • 풀링 계층을 사용하여 n_H, n_W 및 n_C를 줄일 수 있습니다.

다시 말해, 여기에 이미지 설명을 입력하십시오

  • 1 * 1 CONV 필터를 사용하여 무엇을합니까? 당신은 기본적으로 (elementwise는 * + 뒤에) "W 크기의 이미지 / featureMap 이상이 볼륨"1 * 1 * num_input_channel_of_featureMap "크기 가중치 및 말다을 H num_input_channel_of_featureMap가"과 무엇을 얻는 것은 크기 "W의 *의 H"의 출력이다.

  • 이제 이런 종류의 "1 * 1 * num_input_channel_of_featureMap"의 "#filters"번호를 사용 하고 최종 출력으로 "W H #filter" 볼륨을 얻을 수 있습니다 !

  • 더 정확하게는, 입력 피쳐 맵에서 동일한 위치에 32 개의 다른 가중치 (1 * 1 볼륨)와 "1 * 1"을 곱한 후 ReLu가 뒤 따르고 녹색 픽셀로 표시되는 해당 숫자 하나를 얻는 것입니다. !

  • 1 * 1 CONV는 일부 네트워크 (INCEPTIONS)에서 채널 수를 줄이고 계산 비용을 줄이는 데 도움이됩니다.!

  • 그러나 물론 채널 수를 입력 기능 맵과 동일하게 유지하려면 1 * 1 CONV 가하는 한 가지 간단한 방법은 ReLU 비선형 성을 적용하여 복잡한 기능을 배울 수 있다는 것입니다. NN .


1

1x1 필터와 관련된 차원 축소에 대한 또 다른 아이디어 :

FCN의 4096x8x8 fc7 레이어를 예로 들어 보겠습니다. 다음 계층 (fc8이라고 함)이 필터 크기가 1 인 2048x8x8이면 어떻게됩니까? fc7은 네트워크 내부에 매우 깊고 4096 개의 기능은 의미 적으로 풍부하지만 각 뉴런 (예 : 입력 이미지는 250x250x3)에 큰 수용 영역이 있습니다. 다시 말해서, 뉴런이 매우 활동적이라면, 시맨틱 필드 어딘가에 상응하는 특징이 존재한다는 것을 알고 있습니다.

예를 들어 1x1 필터가있는 fc8에서 가장 왼쪽에있는 뉴런을 예로 들어 보겠습니다. 동일한 수용 필드 (이미지의 왼쪽 위 모서리)에서만 4096 개의 뉴런 / 기능에 모두 연결되며 각 기능은 단일 기능으로 활성화됩니다. 그들 중 일부 (같은 500 명)는 매우 활동적입니다. 결과 뉴런도 매우 활동적이라면 아마도이 수용 분야에서 하나 이상의 특징을 식별하는 것을 배웠 음을 의미합니다. fc8에서 가장 왼쪽에있는 뉴런에 대해 2048 번이 작업을 수행 한 후에는 그 중 상당수 (예 : 250)가 매우 활성화되어 동일한 수신 필드에서 fc7을 통해 기능을 '수집'했으며 하나.

차원을 계속 줄이면 점점 더 많은 수의 뉴런이 동일한 수용 영역에서 점점 더 많은 수의 특징을 배우게됩니다. 그리고 공간 파라미터 8x8은 동일하게 유지되므로, 각 뉴런의 '시각'을 변경하지 않으므로 공간 조도를 감소시키지 않습니다.

Long, Shelhamer 및 Darrel의 'Fully Convolutional Networks'를 살펴볼 수 있습니다.


1
나는 이것이 메커니즘의 또 다른 좋은 직관 이라고 생각 하지만, 나는 차원에 대한 표기법을 혼동하기 때문에 특히 다시 돌아와야 할 것입니다. fc8 "의 뉴런.
WillC

나는 당신이 말하려는 것을 잘 이해하지 못했습니다. 더 명확하게 만들 수 있습니까?
Michael Heidelberg

0

컨볼 루션의 수학적 연산은 가능한 모든 이동 위치에서 두 개의 (연속 또는 이산) 함수의 곱을 계산하는 것을 의미합니다.

v×v

컨볼 루션 신경망을 포함한 신경망의 이미지 처리 응용 은 다음에서 검토되었다 : [M. Egmont-Petersen, D. de Ridder, H. Handels. 신경망을 이용한 이미지 처리-검토 , 패턴 인식 , Vol. 35, No. 10, pp. 2279-2301, 2002].

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