컨볼 루션 신경망은 행렬 곱셈 대신 컨볼 루션을 정확히 어떻게 사용합니까?


13

딥 러닝 에 관한 Yoshua Bengio의 책을 읽고 있었고 224 페이지에 나와 있습니다.

컨볼 루션 네트워크는 레이어 중 하나 이상에서 일반 행렬 곱셈 대신 컨볼 루션을 사용하는 신경망입니다.

그러나 수학적으로 정확한 의미에서 "콘볼 루션으로 행렬 곱셈을 대체하는"방법을 100 % 확신하지 못했습니다.

내가 정말로 관심있는 것은 1D의 입력 벡터 ( 와 같이)에 대해 이것을 정의하는 것이므로 이미지로 입력하지 않고 2D의 회선을 피하려고합니다.xRd

예를 들어 "정상적인"신경망에서 Andrew Ng의 노트와 같이 연산 및 피드 와드 패턴을 간결하게 표현할 수 있습니다.

f ( z ( l + 1 ) ) = a ( l + 1 )

W(l)a(l)=z(l+1)
f(z(l+1))=a(l+1)

여기서 은 비선형 성 를 통과하기 전에 계산 된 벡터 입니다. 비선형 성은 벡터 에서 pero 항목을 작동 시키고 은 해당 레이어에 대한 숨겨진 단위의 출력 / 활성화입니다. f z ( l ) a ( l + 1 )z(l)fz(l)a(l+1)

행렬 곱셈이 나에게 명확하게 정의되어 있기 때문에이 계산은 나에게 분명하지만, 컨볼 루션으로 행렬 곱셈을 바꾸는 것만으로는 분명하지 않습니다. 즉

f ( z ( l + 1 ) ) = a ( l + 1 )

W(l)a(l)=z(l+1)
f(z(l+1))=a(l+1)

위의 방정식을 수학적으로 정확하게 이해하고 싶습니다.

행렬 곱셈을 컨벌루션으로 대체하는 첫 번째 문제는 일반적으로 내적 으로 의 한 행을 식별한다는 것입니다. 따라서 전체 가 가중치와 어떤 관련이 있으며 로 표시된 치수 의 벡터 에 매핑되는 것을 알 수 있습니다 . 그러나 컨볼 루션으로 대체 할 때 어느 항목에 해당하는 행 또는 가중치가 있는지 명확하지 않습니다 . 실제로 더 이상 가중치를 행렬로 나타내는 것이 의미가 있다는 것은 분명하지 않습니다 (나중에 그 점을 설명하는 예를 제공 할 것입니다) a ( l ) z ( l + 1 ) W ( l ) a ( l )W(l)a(l)z(l+1)W(l)a(l)

입력과 출력이 모두 1D 인 경우 정의에 따라 컨벌루션을 계산 한 다음 특이점을 통과합니까?

예를 들어 입력으로 다음 벡터가있는 경우 :

x=[1,2,3,4]

그리고 우리는 다음과 같은 가중치를 가졌습니다.

W=[5,6,7]

컨볼 루션은 다음과 같습니다.

xW=[5,16,34,52,45,28]

비선형 성을 통과하고 결과를 숨겨진 레이어 / 표현으로 취급하는 것이 옳 습니까 (현재 풀링없다고 가정 )? 즉 다음과 같이 :

f(xW)=f([5,16,34,52,45,28])=[f(5),f(16),f(34),f(52),f(45),f(28)])

(스탠포드 UDLF 튜토리얼 은 컨볼 루션이 0으로 컨볼 루션이 발생하는 가장자리를 잘라냅니다. 트림해야합니까?)

이것이 어떻게 작동합니까? 적어도 1D의 입력 벡터에 대해? 는 더 이상 벡터 가 아닌가 ?W

나는 이것이 어떻게 생각되는지 신경망을 그렸다.

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

답변:


3

당신이 올바른 길을 가고있는 것처럼 들리지만, 분명히하는 데 도움이 될 수 있습니다.

단일 출력

nwRn

xRnaRxwσ

a=σ(xw)

여기서, 의 요소 는 출력 장치의 전체 활성화를 계산하기 위해 의 해당 요소에 가중치를 부여하는 정도를 지정합니다 . 입력 신호 ( )가 필터 ( ) 와 동일한 길이 인 "컨볼 루션"이라고 생각할 수도 있습니다.wxxw

컨벌루션 설정에서는 보다 보다 많은 값이 있습니다 . 이제 대한 입력 을 가정하십시오 . 연속 된 부분 집합 으로 의 내적을 계산하여이 설정에서 출력 단위의 활성화를 계산할 수 있습니다 .xwxRmm>nwx

a1=σ(x1:nw)a2=σ(x2:n+1w)a3=σ(x3:n+2w)amn+1=σ(xmn+1:mw)

(여기서 많은 신경망 저자들이 만드는 상호 상관과 컨볼 루션 사이에 같은 성가신 혼란을 반복하고 있습니다. 우리가 이러한 적절한 컨볼 루션을 만들려면 의 요소를 뒤집습니다 . 또한 "유효하다"고 가정합니다. 입력 신호와 필터가 완전히 겹치는 (즉, 패딩없이) 계산 된 요소 만 유지하는 컨벌루션.)w

당신은 이미 이것을 기본적으로 귀하의 질문에 넣었지만, 도트 제품을 사용하여 바닐라 신경 네트워크 레이어와의 연결을 시도하고 있습니다. 바닐라 네트워크 레이어와의 주요 차이점은 입력 벡터가 가중치 벡터보다 길면 컨벌루션이 네트워크 레이어의 출력을 벡터로 바꾼다는 것입니다. 컨볼 루션 네트워크에서는 벡터가 줄어 듭니다! 이 출력 벡터를이 레이어의 출력 단위에 대한 "피처 맵"이라고합니다.

다중 출력

자, 우리는 입력과 2 개의 출력을 갖도록 네트워크 레이어에 새로운 출력을 추가한다고 상상해 봅시다 . 벡터있을 것이다 제 1 출력, 및 벡터 번째 출력. (나는 레이어 출력을 나타 내기 위해 위 첨자를 사용하고 있습니다.)nw1Rnw2Rn

바닐라 층의 경우, 이들은 개별적으로 웨이트 벡터가 매트릭스의 열인 매트릭스 로 함께 적층 된다. 그런 다음이 레이어의 출력을 계산할 때 또는 더 짧은 행렬 표기법에서 여기서 비선형 성은 요소별로 적용됩니다.W=[w1w2]

a1=σ(xw1)a2=σ(xw2)
a=[a1a2]=σ(xW)

컨볼 루션 경우 레이어의 출력은 여전히 ​​동일한 매개 변수 벡터 및 와 연관됩니다 . 단일 출력 경우와 마찬가지로 컨벌루션 레이어는 각 레이어 출력에 대해 벡터 값 출력을 생성하므로 및 (다시 "유효한"컨볼 루션 가정) 각 레이어 출력마다 하나씩 이러한 필터 맵은 일반적으로 행렬 로 함께 쌓 입니다.w1w2a1=[a11a21amn+11]a2=[a12a22amn+12]A=[a1a2]

당신이 그것을 생각한다면, 컨볼 루션 경우의 입력은 단지 하나의 열 ( "하나의 입력 채널")을 포함하는 행렬로 생각 될 수 있습니다. 따라서이 회선에 대한 변환을 로 작성할 수 있습니다. 여기서 "컨볼 루션"은 실제로 상호 상관이며 및 의 열을 따라서 만 발생합니다 .

A=σ(XW)
XW

이러한 표기법 단축키는 실제로 매우 유용합니다. 이제 레이어에 다른 출력을 추가하는 것이 쉬워지고 다른 가중치 열을 추가하기 만하면 됩니다.W

잘만되면 그것은 도움이된다!


1

컨볼 루션 레이어는 완전히 연결된 네트워크, 즉 행렬 곱셈의 엄격한 하위 집합입니다. 순방향 패스의 컨볼 루션 레이어는 실제로 다음과 같은 행렬 곱셈과 같습니다.

  • 일부 가중치는 묶여 있거나 공유됩니다
  • 일부 가중치는 0입니다

후진 패스에서는 가중치가 순방향 패스에 어느 정도 기여했는지에 따라 가중치가 업데이트됩니다. 즉, 0 인 가중치는 여전히 0입니다. 여러 출력에 묶인 가중치는 모든 해당 출력 (그라디언트를 합산하여 해당 가중치에 대한 최종 그래디언트 업데이트를 생성 함)에서 그래디언트를 수신합니다.


0

아니요, 그것이 작동하는 방식이 아닙니다. 컨벌루션 연산은 예제 에서처럼 크기가 크지 않은 입력을 항상 작게 만듭니다 (크기가 1보다 큰 필터의 경우).

그것은 단순히 요소 별 곱셈입니다. 입력의 처음 3 개 요소에 대해 컨볼 루션을 수행 할 때 출력은 됩니다. ( 예는 deeplearning.stanford.edu 참조 )15+26+37=38


N+n1Nn+1

해당 웹에 사용 된 컨볼 루션은 수학 컨볼 루션의 정의가 아닙니다.
찰리 파커

2
nnn1

1
나는 그것이 내가 그것을 찾은 지금 의미가 있다고 생각합니다. 그러나 하나의 작은 실수가 있습니다. 입력이 항상 작게 만들어지는 것은 아닙니다. 현재 CNN에서도 다른 유형의 회선을 알고 있습니다 .Yoshua Bengio의 책에 따르면 3 가지 유형의 회선 (전체, 유효, 동일)이 있습니다 iro.umontreal.ca/ ~ bengioy / dlbook . 나는 그들을 자세히 이해하지 못하지만 적어도 나는 그들을 알고 있습니다! 고마워요. 비전 공동체는 혼란스럽고 짜증나는 단어 컨볼 루션을 사용해서는 안됩니다. 어쨌든 감사합니다.
찰리 파커

2
@CharlieParker Matlab의 conv 함수에는 동일한 3 가지 유형의 "모양"(전체, 유효, 동일)이 있으며 Matlab의 기본값은 "전체" 입니다. mathworks.com/help/matlab/ref/conv.html의 문서를 참조하십시오 . 커널을 뒤집지 않은 컨볼 루션은 상호 상관 xcorr(x, y) = conv(x, fliplr(y))입니다. NN 커뮤니티는 실제로 상호 상관을 수행 할 때 컨볼 루션을 말하는 경향이 있지만, 상당히 비슷합니다.
lmjohns3
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.