Keras Convolution2d ()에서 사용하는 기본 필터 란 무엇입니까?


18

나는 신경망에 익숙하지 않지만 선형 대수와 컨볼 루션 수학을 꽤 잘 이해합니다.

숫자를 인식하기 위해 MNIST 데이터로 Keras 컨볼 루션 NN을 훈련하기 위해 인터넷의 여러 곳에서 찾은 예제 코드를 이해하려고합니다. 컨볼 루션 레이어를 만들 때 입력에 적용 할 필터 또는 필터 세트를 지정해야합니다. 그러나 내가 찾은 세 가지 샘플은 모두 다음과 같은 회선 레이어를 만듭니다.

model.add(Convolution2D(nb_filter = 32, nb_row = 3, nb_col = 3,
                        border_mode='valid',
                        input_shape=input_shape))

이것은 CNN에서 처리 한 이미지에 총 32 개의 3x3 필터를 적용하는 것 같습니다. 그러나 그 필터는 무엇입니까? 수학적으로 어떻게 설명하겠습니까? keras 문서는 도움이되지 않습니다.

미리 감사드립니다.


2
이것은 CNN의 컨볼 루션 부분을 이해하는 데 있습니다. 당신은 여기에서 읽을 수 있습니다 cs231n.github.io/convolutional-networks을
기독교 Safka

답변:


15

기본적으로 필터 W 는 다음 glorot_uniform과 같이 정의 된 양과 음의 경계를 갖는 균일 분포에서 값을 가져 오는 방법을 사용하여 임의로 초기화됩니다 .

WU(6nin+nout,6nin+nout),

ninnout

네트워크를 사용하여 예측하는 경우 이러한 필터는 네트워크의 각 계층에 적용됩니다. 즉, 각 입력 이미지의 각 필터에 대해 개별 컨벌루션이 수행되고 이러한 컨볼 루션 결과는 다음 컨벌루션 계층 (또는 완전히 연결된 레이어 또는 기타 다른 계층)으로 제공됩니다.

훈련 중, 필터의 값은 손실 함수와 관련하여 역 전파에 의해 최적화됩니다. 숫자 인식과 같은 분류 작업에는 일반적으로 교차 엔트로피 손실이 사용됩니다. 컨볼 루션 네트워크의 첫 번째 레이어에서 학습 된 일부 필터 (위)와 두 번째 레이어에서 학습 한 필터 (아래)를 시각화하면 다음과 같습니다.

전환 망 필터 시각화

보시다시피, 첫 번째 레이어 필터는 기본적으로 모두 단순 에지 감지기로 작동하지만 두 번째 레이어 필터는 더 복잡합니다. 네트워크를 자세히 살펴보면 필터가 더 복잡한 모양을 감지 할 수 있습니다. 이 필터는 이미 여러 번 주름진 이미지에 작용하고 원래의 자연 이미지처럼 보이지 않기 때문에 시각화하기가 약간 까다로워집니다.


5
glorot_uniform정규 분포를 사용하지 않습니다. 나는 당신이 설명하고 있다고 생각합니다 glorot_normal. 나는 대답에 큰 문제가 아니라고 생각합니다. 핵심 포인트는 무작위 초기화와 훈련 효과입니다. 훈련 된 필터가 어떻게 에지 / 코너 등 필터처럼 보이는지 설명 할 가치가있을 것입니다.
Neil Slater

팀, 수학을 제공해 주셔서 감사합니다. @Neil Slater-역 전파 훈련 후 필터가 가장자리 감지 등으로 보일 수 있다는 통찰력이 상당히 도움이되었습니다. 더 많은 평판을 얻은 경우 두 분의 기부금을 모두 +1합니다.
ChrisFal

귀하의 코멘트에 대한 @NeilSlater 감사합니다 - 당신이 맞아요, 나는 혼동했다 glorot_normal하고 glorot_uniform, 나는 이것을 반영하는 대답을 업데이 트했습니다. 또한 제안한대로 필터가 어떻게 끝나는 지에 대한 약간의 추가 정보를 추가했습니다.
timleathart

6

AFkBk(i,j)

Bk(i,j)=(FkA)(i,j)=l=0,1,2m=0,1,2Fk(l,m)A(il,jm)

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

traned 모델은 비용 함수에 따라 커널을 훈련 시키며 결국이 커널은 모델의 필터입니다.


나는이 수학을 이해했지만이 스레드를 읽는 많은 독자들이 다이어그램이 도움이 될 것이라고 확신합니다. 감사합니다!
ChrisFal

imghost.in/images/2018/03/06/XvatD.jpg 어쩌면 그림은 B의 좌표 (0,0)와 함께 있어야합니까?
vinnitu

@vinnitu 그렇습니다. 실제로 B를 Bk (i, j), (i = 0,1,2, j = 0,1,2)로 수정해야합니다.
lucky6qi
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.