CNN (Convolutional Neural Network, 합성곱 신경망)

HanSol Choi·2024년 6월 21일

CNN(Convolutional Neural Network, 합성곱 신경망)

-주로 이미지 및 비디오 데이터 처리에 사용되는 딥러닝 모델의 한 유형이다.
-합성곱 계층을 사용하여 이미지에서 패턴 추출한다.

CNN 원리 이해

  • 공간 정보 추출 (Feature Extraction)
    • 이미지의 정보를 추출하기 위해 filter (or kernel) 적용
      → 필터를 옆으로 (and 아래로) 이동시키면서 정보 추출
    • filter 크기 : FxFxD
      • D = 입력 이미지의 depth(=채널 수)
      • F = 가로 또는 세로의 길이
      • 흑백 이미지의 D = 1, FxFx1 필터 사용
      • 컬러 이미지의 D = 3, FxFx3 필터 사용
      • filter의 각 셀은 고유의 가중치를 지님
  • 흑백 이미지에 필터 적용

-이미지의 왼쪽 위에서부터 filter 적용 (합성곱 - Convolution 연산)
-옆과 아래로 순차적으로 이동 (한 번에 몇 칸을 이용하는지는 분석가 결정 - 하이퍼파라미터)

-filter 적용 시 filter가 적용되는 이미지 부분의 색 정보와 filter의 각 가중치 간에 내적 연산 수행 → 하나의 스칼라값 도출

  • 내적 연산 : 같은 자리에 있는 셀의 값(원소)끼리 곱하여 더함

    • 내적 연산 결과
      • 내적 연산을 통해서 계산된 값에 bias를 더함
      • z11 = w111 + w1210 + w13122 + w211 + … + w33*110 + b
      • 필터 하나당 bias 1개 존재
      • z11에 특정 활성화 함수를 적용 ex) ReLU
        f(z11)
  • 컬러 이미지
    -하나의 픽셀이 보통 3개의 색 정보를 지님 (Red, Green, Blue : RGB채널 → 채널 수 = depth = 3)
    -3차원 array로 저장 → m x n
    -컬러 이미지의 경우 m x n x 3의 3차원 array로 데이터 저장

    -32x32 pixel 이미지의 경우, channel의 수(depth) = 3

    • filter의 크기
      -이러한 경우 동일한 깊이의 filter 사용, FxFx3
      -사용자는 filter의 가로(or 세로)의 크기만 결정
    • 5x5x3 filter를 적용하는 경우 (75개의 셀 존재)
      -필터가 한 번 적용될 때, 이미지의 5x5x3 셀에 적용
      -필터가 한 번 적용될 때, 하나의 숫자 출력

    • 결과물
    • 필터 수
      -하나의 이미지 (혹은 입력 데이터)에 여러 개의 필터 적용 가능
      -각 필터는 서로 다른 파라미터를 지님

      -입력 이미지에 여러 개 ex) K의 filter를 적용하는 경우
      → 생성되는 Activation Map의 수 = K
    • 파라미터 수
      -5x5x3 크기에 해당하는 filter 2개를 사용
      → 전체 파라미터 수는 5x5x3x2
      -각 필터마다 고유한 5x5x3개의 파라미터를 지님
      -필터마다 하나의 편향 가중치 존재

Activation Map

-활성화 함수를 적용하여 출력되는 값들을 모아놓은 것 = Feature Map or Response Map
-이미지의 경우 보통 ReLU 사용

-Activation Map에 또 다른 필터 적용 가능

  • Activation Map의 크기
    NxN 이미지에 FxF filter 적용 시 → (N-F)/stride + 1 (보통 홀수)
    ex) N = 5, F = 3, stride = 1
    (5 - 3)/1 + 1 = 3
    → Activation Map 크기 : 3x3

Stride

filter를 한번에 옆으로 (or 아래로) 얼마나 움직이는가 (hyperparameter)

Padding

-특정한 값으로 이미지 주변을 채워줌
-Zero Padding : 0을 사용하여 Padding

ex) 7x7 이미지에 3x3 필터를 적용한다고 가정, stride = 3인 경우
(7 - 3)/3 + 1 = 2.3333 → 정보 손실 발생

패딩 적용 후 3x3 filter, stride = 3인 경우에도 정보 손실이 발생하지 않음
(9 - 3)/3 + 1 = 3

Pooling

-Activaion Map에 존재하는 정보 중 이미지를 잘 나타내는 일부 정보만을 추출
→ Downsampling 효과
-필터를 적용하여 합성곱 연산을 한 이후에는 보통 Pooling 과정을 거침

  • 주요 방법

    • Max Pooling : filter가 적용되는 값들 중에서 가장 큰 값을 추출
    • Average Pooling : 값들의 평균을 계산하여 적용
  • Max Pooling
    -큰 숫자 = 더 밝은 색을 의미
    -Max Pooling은 더 밝은 색을 추출
    -백그라운드는 어둡고 우리가 관심있는 물체가 밝은 경우 사용하면 유용

  • Average Pooling
    이미지를 부드럽게 하는 효과 (Smoothing Out), 하지만 Sharp Features는 잘 도출되지 않음

  • Global Poolig
    -각 channel의 Feature Map에서 하나의 Value를 추출
    -Global Pooling 연산의 경우 depth는 그대로 유지
    -임베딩 벡터를 얻고자 하는 경우 유용

Flatten

-다차원 배열 형태의 출력을 일차원 배열로 변환한다.
-이를 통해 합성곱 층에서 추출한 특징 맵을 Fully Connected Layer에서 사용할 수 있게 된다.

CNN 구조

  • 출력층
    • 출력층의 형태는 FNN에서의 출력층 형태와 동일
    • CNN을 분류 문제에 적용하는 경우
      -출력 노드의 수는 종속변수가 취할 수 있는 값의 수와 동일
      -각 출력 노드는 종속변수가 특정한 값을 취할 확률값을 출력, Softmax 함수를 사용해서 계산

CNN 장점

  • 특징 추출
    -데이터가 가지고 있는 spatial 정보를 추출하는데 유리
    -입력 데이터에서 중요한 특징을 자동으로 학습하고 추출, 필터(커널) 사용

  • 이미지 데이터 분석에 효용

  • 파라미터의 수 감소
    -합성곱 계층을 사용하여 입력 이미지를 처리, 완전 연결계층을 사용하는 전통적인 인공 신경망보다 적은 수의 파라미터를 사용
    -가중치 공유 (같은 필터를 전체 이미지에 적용) → 모델의 과적합 방지, 계산 효율성 UP

profile
ML/DL Study,기록📝

0개의 댓글