레플리
글 수 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
질문있습니다.. - Dialogflow와 Heroku로 카카오톡 챗봇 만들기 [1] swgooddream 2018-09-09 375
유능한 AI 개발자를 찾고 있는 헤드헌터입니다. 필운남 2017-09-19 374
일상대화 챗봇에 도전하실 서버 개발자분을 CTO로 모십니다 깊은바다 2021-04-01 368
가입인사겸 문의 드립니다. [2] 번호인식 2019-09-10 358
인공지능 이론 문제 질문 [1] Jessica 2018-04-07 351
이탈리아 피렌체에서 열린 'ACL 2019' 학회에 다녀왔어요 목동하정우 2019-10-21 350
가입인사겸 질문 [1] 창백123 2019-09-30 350
챗봇, 그리고 신 직업.. 어찌 생각하시나요. [4] lopez7 2018-09-05 347
인공지능으로 인간의 행동을 통제 [1] dlrjsanjswl 2021-02-11 342
챗봇 공부관련해서 질문드립니다. [6] 잘못된길 2017-08-16 337
입력 데이터 정규화 질문 드립니다. [2] 거북이 2019-10-23 331
깊은 바다님의 정체는 무엇입니까.. [2] 코딩하는기계 2017-10-20 330
가입 인사 겸 질문입니다. file [1] 초보개발자입니다 2020-01-06 328
구글 딥마인드 카드 게임 연구 file 깊은바다 2016-04-05 326
장고와 카카오 i 오픈 빌더 사용법 질문 ㅠㅠ file [1] 애뚱이 2020-09-19 320