728x90
반응형

합성곱 계층

  • CNN에서는 패딩(padding), 스트라이드(stride) 등 CNN 고유 용어 등장
  • 각 계층 사이에는 3차원 데이터같이 입체적인 데이터가 흐른다는 점에서 완전연결 신경망과 다르다.

 

완전연결 계층의 문제점

  • '데이터의 형상이 무시'된다는 사실이 문제
    • 입력 데이터 예 : 이미지는 통상 세로 · 가로 · 채널(색상)로 구성된 3차원 데이터이다.
    • 하지만 완전연결 계층에 입력할 때는 3차원 데이터를 평평한 1차원 데이터로 평탄화해줘야 한다.
  • 이미지는 3차원 형상이라 공간적 정보가 담겨 있다.
    • 공간적으로 가까운 픽셀은 값이 비슷하거나, RGB의 각 채널은 서로 밀접하게 관련되어 있거나, 거리가 먼 픽셀끼리는 별 연관이 없는 등, 3차원 속에서 의미를 갖는 본질적인 패턴이 숨어 있을 것이다.
    • 하지만 완전연결 계층은 형상을 무시하고 모든 입력 데이터를 동등한 뉴런(같은 차원의 뉴런)으로 취급해 형상에 담긴 정보를 살릴 수 없다.
  • 합성곱 계층은 형상 유지, 3차원 데이터로 입력받으며, 마찬가지로 다음 계층에도 3차원 데이터로 전달한다.
  • CNN에서는 합성곱 계층의 입출력 데이터를 특징 맵(feature map)이라고 한다.
  • 합성곱 계층의 입력 데이터를 입력 특징 맵(input feature map),출력 데이터를 출력 특징 맵(output feature map)이라고 한다.

 

합성곱 연산

  • 합성곱 계층에서는 합성곱 연산 처리
  • 합성곱 연산은 이미지 처리에서 말하는 필터 연산에 해당한다.

 

합성곱 연산 예

[그림1] 합성곱 연산 예

  • 위의 그림과 같이 합성곱 연산은 입력 데이터에 필터를 적용한다. 
  • 데이터와 필터의 형상을(높이(height), 너비(weight))로 표기하며 입력은 (4,4), 필터는 (3,3), 출력은 (2,2)가 된다.
  • 필터를 커널이라고 칭하기도 한다.
  • 합성곱 연산은 필터의 윈도우(window)를 일정 간격으로 이동해가며 입력 데이터에 적용한다.
    • 윈도우는 아래 부분의 회색 부분 3*3을 가리킨다. 필터에 대응하는 원소끼리 곱한 후 그 총합을 구한다. (이 계산을 단일 곱셈-누산(fused multiply-add, FMA이라 한다.) 결과는 출력의 해당 장소에 저장한다.

 

합성곱 연산의 계산 순서

[그림2] 합성곱 연산의 계산 순서

 

 

CNN에서는 필터의 매개변수가 '가중치'에 해당한다.

 

 

합성곱 연산의 편향

  • 필터를 적용한 후 데이터에 더해진다.
  • 편향은 항상 1*1만 존재한다. 하나의 필터를 모든 원소에 더하는 것이다.

[그림3] 합성곱 연산의 편향

 

 

패딩

  • 합성곱 연산을 수행하기 전에 입력 데이터 주변을 특정 값(예: 0)으로 채우기도 하는 것을 패딩이라고 한다.
  • 합성곱 연산에서 자주 이용하는 방법

 

합성곱 연산의 패딩

[그림4] 합성곱 연산의 패딩 처리

  • (4,4)인 입력 데이터에 패딩 추가시 (6,6)이 된다.
  • (3,3) 필터 걸시 (4,4) 크기의 출력 데이터가 생성된다.
  • 패딩은 2나 3등 원하는 정수로도 설정할 수 있다.
    • 패딩 2로 설정시 입력 데이터 크기 (8,8)이 된다.
    • 패딩 3로 설정시 입력 데이터 크기 (10,10)이 된다.
  • 패딩은 주로 출력 크기를 조정할 목적으로 사용한다.

 

스트라이드

  • 필터를 적용하는 위치의 간격을 스트라이드라고 한다.

 

스트라이드가 2인 합성곱 연산

[그림5] 스트라이드가 2인 합성곱 연산

  • 스트라이드를 키우면 출력 크기는 줄어든다.
  • 패딩을 크게 하면 출력 크기가 커진다.

 

입력 크기(H, W), 필터 크기(FH, FW), 출력 크기(OH, OW), 패딩 P, 스트라이드 S 수식

[그림6] 합성곱 계층 수식

 

수식 활용 예제

[그림7] 수식 활용 예제
[그림8] 수식 활용 예제
[그림9] 수식 활용 예제

 

 

3차원 데이터의 합성곱 연산

  • 2차원과 비교하면 길이 방향(채널 방향)으로 특징 맵이 늘어난다.
  • 채널쪽으로 특정 맵이 여러 개 있다면 입력 데이터와 필터의 합성곱 연산을 채널마다 수행하고, 그 결과를 더해 하나의 출력을 얻는다.

 

3차원 데이터 합성곱 연산의 예

[그림10] 3차원 데이터 합성곱 연산의 예

 

3차원 데이터 합성곱 연산의 계산 순서

[그림11] 3차원 데이터 합성곱 연산의 계산 순서

 

  • 반드시 입력 데이터의 채널 수와 필터의 채널 수가 같아야 한다.
  • 필터의 채널 수는 입력 데이터의 채널 수와 같도록 설정해야 한다.

 

 

블록으로 생각하기

  • 3차원 합성곱 연산은 데이터와 필터를 직육면체 블록이라고 생각하면 쉽다.
  • 다차원 배열로 나타낼 때는(채널(channel), 높이(height), 너비(width))순서로 쓰인다.
  • 채널 수 C, 높이 H, 너비 W의 데이터 형상은 (C,H,W)라고 쓴다.
    • 필터도 같은 순으로 쓴다. (C,FH,FW) . (채널 수, 필터 높이, 필터 너비)

 

합성곱 연산을 직윤면체 블록으로 생각

[그림12] 합성곱 연산을 직윤면체 블록으로 생각

 

 

여러 필터를 사용한 합성곱 연산의 예

[그림13] 여러 필터를 사용한 합성곱 연산의 예

 

  • 필터를 FN개 적용하면 출력 맵도 FN개 생성된다.
    • 전부 모으면 형성(FN, OH, OW)인 블록 완성
  • 이 완성된 블록을 다음 계층으로 넘기겠다는 것이 CNN이 처리 흐름

 

합성곱 연산의 처리 흐름(편향 추가)

[그림14] 합성곱 연산의 처리 흐름(편향 추가)

  • 형상이 다른 블록의 덧셈은 넘파이의 브로드캐스트 기능으로 쉽게 구현 가능

 

배치 처리

  • 신경망처리에서는 입력 데이터 한 덩어리로 묶어 배치로 처리 
    • 완전연결 신경망 구현시 이러한 방식 지원해 처리 효율 높이고, 미니배치 방식 학습도 지원
  • 합성곱 연산도 배치 처리 지원 - 각 계층을 흐르는 데이터의 차원을 하나 늘려 4차원 데이터 저장

 

합성곱 연산의 처리 흐름(배치 처리)

[그림15] 합성곱 연산의 처리 흐름(배치 처리)

  • 4차원 데이터가 하나 흐를 때마다 데이터 N개에 대한 합성곱 연산이 이뤄진다.

 

 

출처 : 밑바닥부터 시작하는 딥러닝

https://www.hanbit.co.kr/store/books/look.php?p_code=B8475831198

 

밑바닥부터 시작하는 딥러닝

직접 구현하고 움직여보며 익히는 가장 쉬운 딥러닝 입문서

www.hanbit.co.kr

 

728x90
반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기