728x90
반응형
합성곱 계층
- CNN에서는 패딩(padding), 스트라이드(stride) 등 CNN 고유 용어 등장
- 각 계층 사이에는 3차원 데이터같이 입체적인 데이터가 흐른다는 점에서 완전연결 신경망과 다르다.
완전연결 계층의 문제점
- '데이터의 형상이 무시'된다는 사실이 문제
- 입력 데이터 예 : 이미지는 통상 세로 · 가로 · 채널(색상)로 구성된 3차원 데이터이다.
- 하지만 완전연결 계층에 입력할 때는 3차원 데이터를 평평한 1차원 데이터로 평탄화해줘야 한다.
- 이미지는 3차원 형상이라 공간적 정보가 담겨 있다.
- 공간적으로 가까운 픽셀은 값이 비슷하거나, RGB의 각 채널은 서로 밀접하게 관련되어 있거나, 거리가 먼 픽셀끼리는 별 연관이 없는 등, 3차원 속에서 의미를 갖는 본질적인 패턴이 숨어 있을 것이다.
- 하지만 완전연결 계층은 형상을 무시하고 모든 입력 데이터를 동등한 뉴런(같은 차원의 뉴런)으로 취급해 형상에 담긴 정보를 살릴 수 없다.
- 합성곱 계층은 형상 유지, 3차원 데이터로 입력받으며, 마찬가지로 다음 계층에도 3차원 데이터로 전달한다.
- CNN에서는 합성곱 계층의 입출력 데이터를 특징 맵(feature map)이라고 한다.
- 합성곱 계층의 입력 데이터를 입력 특징 맵(input feature map),출력 데이터를 출력 특징 맵(output feature map)이라고 한다.
합성곱 연산
- 합성곱 계층에서는 합성곱 연산 처리
- 합성곱 연산은 이미지 처리에서 말하는 필터 연산에 해당한다.
합성곱 연산 예
- 위의 그림과 같이 합성곱 연산은 입력 데이터에 필터를 적용한다.
- 데이터와 필터의 형상을(높이(height), 너비(weight))로 표기하며 입력은 (4,4), 필터는 (3,3), 출력은 (2,2)가 된다.
- 필터를 커널이라고 칭하기도 한다.
- 합성곱 연산은 필터의 윈도우(window)를 일정 간격으로 이동해가며 입력 데이터에 적용한다.
- 윈도우는 아래 부분의 회색 부분 3*3을 가리킨다. 필터에 대응하는 원소끼리 곱한 후 그 총합을 구한다. (이 계산을 단일 곱셈-누산(fused multiply-add, FMA이라 한다.) 결과는 출력의 해당 장소에 저장한다.
합성곱 연산의 계산 순서
CNN에서는 필터의 매개변수가 '가중치'에 해당한다.
합성곱 연산의 편향
- 필터를 적용한 후 데이터에 더해진다.
- 편향은 항상 1*1만 존재한다. 하나의 필터를 모든 원소에 더하는 것이다.
패딩
- 합성곱 연산을 수행하기 전에 입력 데이터 주변을 특정 값(예: 0)으로 채우기도 하는 것을 패딩이라고 한다.
- 합성곱 연산에서 자주 이용하는 방법
합성곱 연산의 패딩
- (4,4)인 입력 데이터에 패딩 추가시 (6,6)이 된다.
- (3,3) 필터 걸시 (4,4) 크기의 출력 데이터가 생성된다.
- 패딩은 2나 3등 원하는 정수로도 설정할 수 있다.
- 패딩 2로 설정시 입력 데이터 크기 (8,8)이 된다.
- 패딩 3로 설정시 입력 데이터 크기 (10,10)이 된다.
- 패딩은 주로 출력 크기를 조정할 목적으로 사용한다.
스트라이드
- 필터를 적용하는 위치의 간격을 스트라이드라고 한다.
스트라이드가 2인 합성곱 연산
- 스트라이드를 키우면 출력 크기는 줄어든다.
- 패딩을 크게 하면 출력 크기가 커진다.
입력 크기(H, W), 필터 크기(FH, FW), 출력 크기(OH, OW), 패딩 P, 스트라이드 S 수식
수식 활용 예제
3차원 데이터의 합성곱 연산
- 2차원과 비교하면 길이 방향(채널 방향)으로 특징 맵이 늘어난다.
- 채널쪽으로 특정 맵이 여러 개 있다면 입력 데이터와 필터의 합성곱 연산을 채널마다 수행하고, 그 결과를 더해 하나의 출력을 얻는다.
3차원 데이터 합성곱 연산의 예
3차원 데이터 합성곱 연산의 계산 순서
- 반드시 입력 데이터의 채널 수와 필터의 채널 수가 같아야 한다.
- 필터의 채널 수는 입력 데이터의 채널 수와 같도록 설정해야 한다.
블록으로 생각하기
- 3차원 합성곱 연산은 데이터와 필터를 직육면체 블록이라고 생각하면 쉽다.
- 다차원 배열로 나타낼 때는(채널(channel), 높이(height), 너비(width))순서로 쓰인다.
- 채널 수 C, 높이 H, 너비 W의 데이터 형상은 (C,H,W)라고 쓴다.
- 필터도 같은 순으로 쓴다. (C,FH,FW) . (채널 수, 필터 높이, 필터 너비)
합성곱 연산을 직윤면체 블록으로 생각
여러 필터를 사용한 합성곱 연산의 예
- 필터를 FN개 적용하면 출력 맵도 FN개 생성된다.
- 전부 모으면 형성(FN, OH, OW)인 블록 완성
- 이 완성된 블록을 다음 계층으로 넘기겠다는 것이 CNN이 처리 흐름
합성곱 연산의 처리 흐름(편향 추가)
- 형상이 다른 블록의 덧셈은 넘파이의 브로드캐스트 기능으로 쉽게 구현 가능
배치 처리
- 신경망처리에서는 입력 데이터 한 덩어리로 묶어 배치로 처리
- 완전연결 신경망 구현시 이러한 방식 지원해 처리 효율 높이고, 미니배치 방식 학습도 지원
- 합성곱 연산도 배치 처리 지원 - 각 계층을 흐르는 데이터의 차원을 하나 늘려 4차원 데이터 저장
합성곱 연산의 처리 흐름(배치 처리)
- 4차원 데이터가 하나 흐를 때마다 데이터 N개에 대한 합성곱 연산이 이뤄진다.
출처 : 밑바닥부터 시작하는 딥러닝
https://www.hanbit.co.kr/store/books/look.php?p_code=B8475831198
728x90
반응형
최근댓글