데이터로그😎

[CNN] Convolutional Neural Network 본문

딥러닝

[CNN] Convolutional Neural Network

지연v'_'v 2023. 12. 4. 11:52

CNN (Convolutional Neural Network, 합성곱 신경망)은 합성곱 계층을 사용하여 데이터의 계층적인 표현을 자동으로 학습하도록 설계된 구조이다.  입력 데이터에 합성곱 작업을 적용하며, 필터 또는 커널을 사용하여 가장자리, 질감 또는 패턴과 같은 특징을 감지할 수 있다. 자, 여기서... "그래서... 합성곱이 뭔데..?" 라는 의문을 가질 수 있겠다. 이제부터 합성곱에 대해 알아볼까?

 

🔹Conv의 합성곱 연산

합성곱의 연산과정은 Input Feature map과 kernel을 곱하면서진행된다. 아래는 합성곱 연산 순서이다.

합성곱

 

① 커널이 입력 특징 맵의 좌상단에 위치

  • 위의 이미지를 참고하면, 3*3 커널이 입력 특징맵의 좌상단에 위치하게 된다.

② 각 원소별 곱셈 후 더하기

  • 커널에 입력되어 있는 수와 입력특징맵의 좌상단에 입력되어 있는 수를 곱셈후 모두 더한다.
  • (3*0)+(0*1)+(8*1)+(9*1)+(2*0)+(3*-1)+(10*2)+(1*0)+(7*1) = 0+0+8+9+0-3+20+7 = 4

③ 커널이 우측으로 이동

  • stride만큼 이동(stride의 기본값 = 1)
  • 아래 사진을 참고해보면 커널이 입력 특징맵에서 좌→우로 이동하며 연산을 진행하고, 연산 결과값이 Output Feature map에 저장된다.

④ 우측으로 모두 이동해서 더이상 이동할 곳이 없다면, 제일 좌측으로 이동 후 stride만큼 내려옴. 

지금은 stride가 1이라 가정하여, 아래 그림처럼 한 칸 아래로 내려온 것임

합성곱 이동과정

  • stride만큼 이동(기본값 1)

 

🔹 Conv 연산의 특징

  • 입력특징맵의 크기를 줄여준다. ex) 5*5 →3*3
  • 출력 특징맵은 입력특징맵에 대한 압축된 정보를 갖고 있음
  • ex) 커널(필터)이 대각선에만 숫자가 1 이상이고 나머지는 0. 즉 대각선만 강조하는 것. 그렇다면 고양이 이미지에 커널을 적용했을 때 고양이의 대각선 요소들만 강조가 됨. 이러한 대각선 요소들이 강조된 것들이 여러가지 있다.

 

🔹 Padding, Striding, Pooling

1. Padding

  • 입력특징맵의 상하좌우에 0으로 채워진 공간을 삽입한다. (Zero-padding 삽입)
  • 입력특징맵과 출력특징맵의 크기를 동일하게 유지하고 싶은 경우 사용한다.
  • padding 예시
    • ① 5*5 입력특징맵의 상하좌우에 0으로 한 줄씩  채워 7*7으로 만든다.
    • ② 7*7으로 패딩된 입력특징맵에서 커널(3*3)을 좌측 상단부터 이동한다면 최종적으로 좌→우로 5번, 위→아래로 5번 움직여서 출력 특징맵은 5*5가 됨

padding

 

2. Stride

stride

  • 컨볼루션 연산에서 커널이 입력 데이터 위를 이동하는 간격을 의미함.
  • Stride는 필터가 입력 데이터를 얼마나 많이 건너뛰며 이동할지 결정하는 요소
  • Stride ↑ = 듬성듬성 보겠다. = output feature map크기 ↓
  • 출력 특징맵을 더 압축할 때 Stride를 증가시킴
    • ex)위의 이미지를 살펴보자. 입력: 5*5/ 커널 : 3*3 / Stride = 2일때 → 최종출력맵: 2*2가 된다.
    • 기존에 Stride=1일땐 최종출력맵: 3*3
    • 좌→우, 위→아래 이동 시 2칸씩 이동. 최종으로 2*2 출력특징맵 결과가 나옴

3. Pooling

pooling

  • 출력 특징맵의 후처리 및 압축
  • 학습의 대상이 아님
  • 종류: max pooling, avg pooling(잘 안씀)
    • Max pooling을 사용하는 이유?
      • 픽셀 값이 조금 바뀌어도 결과물은 비슷함. = 데이터의 복잡도를 낮출 수 있다.
      • Max pooling은 범위 내에서 가장 큰 값만 추출하는데, 값이 큰 픽셀은 강조되어야 할 부분이라는 것을 의미한다. 따라서 이미지에서 강조되는 부분을 추출할 수 있다.
  • Pooling의 단점
    • max pooling: 주어진 영역 내에서 최대값을 선택하여 출력 맵을 생성하면서 가장 강한 특징만을 사용하게 됨으로써 다른 특징을 무시할 수 있음.
    • Avg Pooling: 주어진 영역 내에서 평균값을 계산하여 출력 맵을 생성함. 중요한 특징이 다양한 값을 가지고 있는 경우 평균 풀링은 해당 특징의 중요성을 상대적으로 낮추는 결과를 낳을 수 있음

🔹Kernl & Filter

Kernel과 Filter는 같은 의미로 종종 쓰이지만, 구분해보자면 filter는 kernel에 channel까지 포함된 것을 의미한다.

Input된 이미지는 3개의 channel(Red, Green, Blue) 로 분리되고, 각각의 filter와 합성곱이 일어난 결과물의 합이 최종으로 출력된 특징맵이다.

'딥러닝' 카테고리의 다른 글

[FCL] Full Connected Layer  (1) 2023.12.03
[CNN] FCL vs CNN  (0) 2023.12.02
[DNN] DNN 설계 단계 - ② 손실함수, ③ 최적화  (1) 2023.12.02
[DNN] 02. DNN 설계 단계 - ① 레이어 설계  (0) 2023.11.28
[DNN] 01. DNN 기본 용어  (0) 2023.11.28