레플리
글 수 218

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

조회 수 171 추천 수 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
제목 글쓴이 날짜 조회 수
카톡 대화를 학습하는 AI 아바타 챗봇 - 레플리 file 깊은바다 2024-01-17 352
외국인 인공지능 개발 분야 국내 취업이 어려울까요? [2] 삼바 2021-02-15 401
인공지능으로 인간의 행동을 통제 [1] dlrjsanjswl 2021-02-11 342
정규표현식이 어려워서 제가 자주사용하는 기능만 만들어놨습니다. Nike 2021-02-05 235
텍스트 전처리시 RAM 스펙 질문 [2] Nike 2021-02-03 195
Text Summarization에 관련한 질문 [2] Nike 2021-01-28 298
안녕하세요 이제 막 공부하기 시작한 학부생입니다. sk211 2021-01-16 192
파일을 AI를 통해 자동 분류가 가능할까요? [1] ghghgh 2021-01-10 407
Dialogflow로 이미지 불러오기가 가능할까요? [2] 재앤더플루이드 2021-01-06 380
웹 상에서 그래프 그리기 nari 2021-01-05 189
[가입인사] AI STARTUP 기업과 개발자 자료를 검색하다가 등록합니다. [1] hornet 2020-12-07 177
데이터 라벨링 후 궁금증 [1] fex5360 2020-11-26 193
딥러닝 어플리케이션을 쉽게 만들수있는 서비스 DLBuilder file DLBuilder 2020-11-20 192
스타트업 관련 인공지능 머신러닝 궁금증 Kyle13 2020-11-10 189
오픈 컨트리뷰터의 코드 참고법에 대해 질문드립니다. [2] Roger 2020-10-19 109
딥러닝을 위한 레이블링 질문입니다. [1] Jang 2020-10-15 152