쳉지로그

[밑바닥부터 시작하는 딥러닝] Chapter 7. 합성곱 신경망(CNN) (1) 본문

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

[밑바닥부터 시작하는 딥러닝] Chapter 7. 합성곱 신경망(CNN) (1)

쳉지 2021. 5. 9. 18:54

7.1 전체 구조

합성곱 신경망(Convolutional neural network, CNN)

  • 이미지 인식과 음성 인식 등 다양한 곳에서 사용
  • 이미지 인식 분야에서 딥러닝을 활용한 기법은 거의 CNN을 기초로 함
  • 새로 등장하는 계층: 합성곱 계층(convolutional layer), 풀링 계층(pooling layer)

Affine 계층과 CNN 비교

  • Affine 계층: 인접하는 계층의 모든 뉴런과 결합: 완전연결(fully-connected) Affine-ReLU 연결

  • CNN: 합성곱 계층과 풀링 계층이 추가됨 Conv-ReLU-(Pooling) 흐름
  •        출력에 가까운 층에서는 'Affine-ReLU' 구성 사용 가능
  •        마지막 출력 계층에서는 'Affine-Softmax' 조합을 그대로 사용

 

7.2 합성곱 계층

7.2.1 완전연결 계층의 문제점

  • 완전연결 계층: 데이터의 형상이 무시

(예시) 입력 데이터가 이미지인 경우

  • 이미지: 세로, 가로, 채널(색상)으로 구성된 3차원 데이터
  • 완전연결 계층에 입력할 때 평탄화(3차원→1차원)

     ⇒ 완전연결 계층형상을 무시하고 모든 입력 데이터를 동등한 뉴런으로 취급하여

        형상에 담긴 정보를 살릴 수 없음.

 

  • 합성곱 계층 ⇒ 형상 유지 (이미지의 공간 정보 상태를 유지하면서 학습이 가능한 모델)
  • 특징 맵(feature map) : 합성곱 계층의 입출력 데이터
  • - 출력 특징 맵(output feature map) : 합성곱 계층의 출력 데이터
  • - 입력 특징 맵(input feature map) : 합성곱 계층의 입력 데이터

7.2.2 합성곱 연산

  • 합성곱 연산 : 이미지 처리에서 말하는 필터 연산에 해당
  • 입력 데이터에 필터(커널)를 적용

  • 필터의 윈도우(window)를 일정 간격으로 이동해가며 입력 데이터에 적용
  • 입력과 필터에서 대응하는 원소끼리 곱한 후 그 총합을 구함
  • = 단일 곱셈-누산(fused multiply-add, FMA)

  • CNN에서 필터의 매개변수 : 가중치
  • CNN에도 편향 존재 : 편향은 항상 하나(1x1)만 존재

7.2.3 패딩

  • 패딩(padding) : 합성곱 연산을 수행하기 전에 입력 데이터 주변을 특정 값(예컨대 0)으로 채움
  • 주로 출력 크기를 조정할 목적으로 사용함

7.2.4 스트라이드

  • 스트라이드(strid) : 필터를 적용하는 위치의 간격

(예시) 스트라이드가 2인 합성곱 연산 ( ⇒ 필터를 적용하는 윈도우가 두 칸씩 이동)

  • 스트라이드를 키우면 출력 크기는 작아짐
  • 패딩을 크게 하면 출력 크기가 커짐
  • 패딩과 스트라이드의 관계 수식화
  • 입력 크기: (H, W) 필터 크기: (FH, FW) 출력 크기: (OH, OW) 패딩: P 스트라이드: S

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

  • 채널 쪽으로 특징 맵이 여러 개 있다면 입력 데이터와 필터의 합성곱 연산을 채널마다 수행
  • 채널마다 수행한 결과를 더해서 하나의 출력을 얻음

7.2.6 블록으로 생각하기

  • 3차원의 합성곱 연산은 데이터와 필터를 직육면체 블록이라고 생각
  • 채널 수 C, 높이 H, 너비 W ⇒ (C, H, W)
  • 채널 수 C, 필터 높이 FH, 필터 너비 FW ⇒ (C, FH, FW)

  • 출력 데이터는 한 장의 특징 맵 (채널이 1개인 특징 맵)
  • 합성곱 연산의 출력으로 다수의 채널을 내보내기 위해서는 "필터(가중치)를 다수 사용"

  • FN개의 필터를 적용해서 모은 FN개의 맵으로 형상이 (FN, OH, OW)인 블록이 완성됨
  • 완성된 블록을 다음 계층으로 넘기는 것이 CNN의 처리 흐름
  • 합성곱 연산에서는 필터의 수도 고려해야 함
  • ⇒ 필터의 가중치 데이터 = 4차원 데이터 (출력 채널 수, 입력 채널 수, 높이, 너비)
  • 합성곱 연산에도 편향이 쓰임 - 편향은 채널 하나에 값 하나씩으로 구성
    • 편향의 형상 : (FN, 1, 1)

7.2.7 배치 처리

  • 신경망 처리 - 입력 데이터를 한 덩어리로 묶어 배치로 처리했음
  • 완전연결 신경망 - 위 방식을 지원하여 처리 효율을 높이고, 미니배치 방식의 학습도 지원
  • 합성곱 연산 - 마찬가지로 배치 처리 지원
  •  ⇒ 각 계층을 흐르는 데이터의 차원을 하나 늘려 4차원 데이터로 저장
  •     (데이터 수, 채널 수, 높이, 너비)

 

7.3 풀링 계층

  • 풀링: 세로, 가로 방향의 공간을 줄이는 연산

(예시) 2X2 최대 풀링을 스트라이드 2로 처리하는 순서

  • 2X2 크기의 영여겡서 가장 큰 원소 하나를 꺼냄
  • 스트라이드 2로 처리하므로 2X2 윈도우가 원소 2칸 간격으로 이동

(참고) 풀링의 윈도우 크기와 스트라이드는 같은 값으로 설정하는 것이 일반적

7.3.1 풀링 계층의 특징

  • 학습해야 할 매개변수가 없다
    • 합성곱 계층과 달리 학습해야 할 매개변수가 없음
    • 대상 영역에서 최댓값(또는 평균)을 취하는 명확한 처리이기 때문
  • 채널 수가 변하지 않는다
    • 입력 데이터의 채널 수 그대로 출력 데이터로 내보냄
    • 채널마다 독립적으로 계산하기 때문

  • 입력의 변화에 영향을 적게 받는다 (강건하다)
    • 입력 데이터가 조금 변해도 풀링의 결과는 잘 변하지 않음
    • 입력 데이터의 차이를 풀링이 흡수
Comments