레플리
글 수 220

합성곱신경망의 패딩에 관한 질문

조회 수 170 추천 수 0 2019.01.10 13:41:46


합성곱 연산을 수행하면 그 결과로 나오는 특징맵의 크기가

원본 이미지보다 작아지죠.

그래서 패딩이라는 과정을 합성곱 레이어 앞에 추가합니다.

패딩은 원본 이미지의 테두리에 0으로 채워서 임의로 크기를 늘리는겁니다.

 

 

GBlLErX.png

테두리에 0으로 채워서 원본 이미지의 크기가 커졌다.

 

 

여기까진 교과서에도 나오는 내용입니다.

패딩한 이미지를 합성곱레이어에 넣는다... <- 순전파 과정이죠?

 

 

MNeiNYR.png

순전파 과정

 

 

자... 이제 저의 질문...

그럼 패딩의 역전파는 어떻게 하는거죠???

 

기울기의 역전파 과정 및 가중치 업데이트는 저도 알고 있습니다.

기울기의 역전파를 묻는 것이 아니라 

패딩 과정의 역전파는 어떻게 해야 하느냐는거죠.

 

패딩의 순전파는 원본이미지에 0으로 채워서 임의로 크기를 늘린것이죠?

그렇다면 역전파는 단순히 그 반대로 하면 되나요?

합성곱 레이어로부터 역전파 받은 이미지의 테두리 부분을 깍아서 제거해버리면 되나요?

 

 

5WnZg56.png

 

 

아마... 이걸 알고 계신분은 별로 없을 것이라 생각됩니다만...

왜냐하면 im2col 함수가 이 과정을 다 해주기 때문에 구체적인 구현은 몰라도 되니까요.

 

사실 이와 같이 합성곱레이어로부터 역전파 받은 이미지의 테두리를 깍아내 버리는 방법을 사용해서 합성곱 신경망을 제가 만들어 봤습니다만... 잘 되긴 잘 됩니다. mnist 데이터셋의 정확도가 90%까지 나와요.

하지만 어느 책을 보아도 패딩의 역전파 과정에 대한 설명이 없어서... 심지어 구글 검색으로도 안나와요.

늘 마음 한구석이 찝찝한 느낌이 들어서...

엮인글 :

깊은바다

2019.01.11 00:10:08
*.207.106.177

완전연결 신경망에서 역전파는 모든 연결의 가중치를 구합니다. 반면에 컨볼루션에서 역전파는 필터(커널)의 가중치만 구하기 때문에 계산량이 줄어듭니다. 패딩으로 늘린 부분은 컨볼루션 연산을 하고 난 후 특성 맵(feature map)의 크기에만 영향을 줍니다. 역전파와 패딩은 크게 상관이 없을 것 같은데요. 저도 어떤 문제인지 정확히 모르겠네요^^;

잘잤니

2019.04.15 19:16:59
*.86.162.188

convolutional net에서 역전파를 통해서 얻고자 하는 값이 무언지 생각해보시면 명료해질 것 같습니다. 편미분을 연속해서 우리가 알아내려는 것은 결국 특정 패러미터(=필터의 각 셀들)가 다음 단계에 주는 영향(=계수)이잖아요. zero-padding의 경우 필터에 곱해지는 padding된 영역의 값이 0이기 때문에 실제 필터에 곱해지는 값도 0이므로 gradient값에 직접적인 영향이 없습니다. 영향이 있다면 오직 padding 덕분에 필터에 곱해지는 값들의 배열이 달라지는 것뿐이죠.

 

padding을 깎아낸다는 게 무슨 뜻인지는 잘 모르겠습니다만, 필터의 각 셀 W_11, W_12 ... W_ij에 곱해지는 입력값은 padding과 stride에 따라 바뀌게 되므로 gradient를 구하려면 padding이 이루어진 입력값에서 편미분을 해야 합니다. 간단히, 특정 convolutional layer의 결과값을 Z라고 할 때, 원래의 필터 W와 크기가 같되 모든 값이 0인 필터를 설정하고, 그 필터를 순전파 과정에서의 움직임과 똑같이 padding된 layer를 따라 움직이게 하면서 필터의 각 셀별로 이동해서 얻어지는 값을 더하시면 필터 W의 편미분값 dZ/dW를 얻을 수 있습니다. 이걸 dCost/dZ와 곱해주면 gradient를 얻으실 수 있고요.

List of Articles
제목 글쓴이 날짜sort 조회 수
카톡 대화를 학습하는 AI 아바타 챗봇 - 레플리 file 깊은바다 2024-01-17 306
안녕하세요 그나마 이사이트 국내에서는 제일 좋은듯 합니다. [1] 맛동산 2018-11-13 277
간단하게 제가 접근해본 방법 공유합니다. [1] 맛동산 2018-11-13 194
서지민의 인공신경망 라이브러리 업데이트 1.1 [2] 사지방컴 2018-11-27 150
한국어 구사 데이타 사이언티스트 채용 실력? 뜨자떠야한다 2018-11-28 179
어텐션 매커니즘 구현하기 너무 힘드네요 ㅠ [1] NeuroWhAI 2018-12-02 177
Seq2Seq에 Attention 구현 성공했습니다! [2] NeuroWhAI 2018-12-04 297
케라스 창시자에게 배우는 딥러닝 카미오레오 2018-12-07 259
딥러닝으로 빵의 가격을 자동으로 계산하는 인공지능 깊은바다 2019-01-06 434
합성곱신경망의 패딩에 관한 질문 [2] 디쁘러닝 2019-01-10 170
Transformer 구조에 대해서 질문하나 드립니다. [1] 김만수 2019-01-15 177
안녕하세요~ 궁금하게있어요 [1] 챗봇딥러닝가자 2019-01-31 95
딥러닝을 이용한 사운드 생성 관련 질문 [2] NeuroWhAI 2019-02-03 198
lambda에 올린 코드 [1] 챗봇딥러닝가자 2019-02-08 168
안녕하세요 챗봇을 공부하고 있는 학생입니다. [2] 초보개발 2019-02-20 237
end-to-end 챗봇 질문 [1] 배수진종결자 2019-02-20 175