[Deep Learning] 9. 합성곱 신경망(Convolutional Neural Network, CNN) 소개

Date:     Updated:

카테고리:

태그:

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

합성곱 신경망(Convolutional Neural Network, CNN)을 살펴보자.

1. 🔍 CNN 전체 구조

🔍 완전 연결 심층 신경망(Fully Connected Deep Neural Network, FC-DNN)

  • 이전까지 살펴본 신경망은 모두 완전 연결 심층 신경망(Fully Connected Deep Neural Network)이었다.
  • 완전 연결 심층 신경망은 입력 데이터가 1차원 데이터인 경우에 사용되었다.
  • 이미지 데이터를 강제로 1차원으로 펼쳐서 표현하면서 수직 방향의 특징을 잃어버리는 문제(인접 영역 상관관계 손실)가 있다.

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

  • 이미지 데이터를 2차원 데이터로 표현하여 수직 방향의 특징을 유지하는 신경망
  • 이미지 데이터의 공간적 상관관계를 유지하며 이미지내 특징 추출 가능
  • Convolution + Pooling + Flatten 층 구조를 사용하여 이미지 데이터 처리

Image

이미지 출처: Basics of CNN in Deep Learning

Image

이미지 출처: Beginners Guide to Convolutional Neural Network with Implementation in Python

📊 FC-DNN vs CNN 전체 구조 비교

FC-DNN 전체 구조

Image

이미지 출처: 밑바닥부터 시작하는 딥러닝 1권 - FC-DNN 전체 구조

CNN 전체 구조

Image

이미지 출처: 밑바닥부터 시작하는 딥러닝 1권 - CNN 전체 구조

2. 🔢 합성곱 연산(Convolution)

이미지 위에 필터를 이동시키면서 겹치는 부분의 원소별 곱셈의 합을 구하는 연산

  • CNN 이미지의 합성곱 : 이미지 위에서 필터(filter)를 이동시키면서 겹치는 부분의 원소별 곱셈의 합 연산
  • 데이터와 필터(filter, kernel)의 합성곱으로 feature map 생성

🔑 Convolution 연산 파라미터

Image

이미지 출처: Convolutional Neural Network (CNN) – Simply Explained

Padding

이미지 주변에 추가적인 픽셀을 추가하여 이미지 크기를 유지하는 연산(상단 이미지 참고)

Stride

Filter가 이동하는 보폭(Step)의 크기. Stride에 따라 피처맵의 크기와 학습 속도가 달라진다.

Image

이미지 출처: Basics of CNN in Deep Learning

🚀 3차원 tensor에 대한 Convolution

Image

이미지 출처: How many weight convolution layer has?

필터가 여러개일 때 3차원 tensor에 대한 Convolution

Image

이미지 출처: ResearchGate

Image

이미지 출처: Convolutional neural networks

채널(Channel)

채널(Channel)은 이미지나 데이터의 깊이(depth) 차원을 의미

  • RGB 이미지: 3개 채널 (Red, Green, Blue)
  • 흑백 이미지: 1개 채널 (Grayscale)
  • 예시 크기: (높이, 너비, 채널) = (28, 28, 3) for RGB
  • 입력 데이터의 채널과 필터의 채널수가 동일해야 한다.

Image

3. 🧠 필터(Filter, Kernel) 학습

역전파 알고리즘을 사용하여 입력 데이터와 연결된 필터의 가중치를 학습한다.

🌱 학습 전

Image

🧠 학습 후

Image

4. 📦 풀링(Pooling)

피처맵을 대표하는 값으로 압축함(sub sampling)

  • 피처맵에서 필터 크기를 바탕으로 최대값이나 평균값을 취한다.
  • 지역 정보 중 두드러진 정보를 추출한다.

Image

이미지 출처: Convolutional neural networks

Convolution layer vs Pooling layer

  • Convolution layer
    • 필터와 편향을 학습시킨다.
    • 채널이 사라진다.
    • 필터를 훈련시켜 낮은 층의 필터는 저수준의 로컬한 특징을 찾아내고 높은 층의 필터는 더 고수준의 더 글로벌한 특징을 찾아내는 것이 목표다.
  • Pooling layer
    • 학습시킬 parameter가 없다.
    • 채널별로 독립적으로 시행한다.
    • DownSampling을 통하여 다음 Convolution layer에서 더 빨리 글로벌한 특징을 찾아낼 수 있게 한다.
    • parameter 숫자를 줄여서 계산비용을 줄이고 overfitting을 억제한다.
    • 약간의 평행이동에 대하여 변하지 않도록 한다.

5. 🚀 CNN 최종 구조

Convolution layer와 Max pooling층이 반복되다가 후반에 Fully Connected layer가 등장한다.

  • Convolution layer의 필터들은 학습 시작전에 랜덤하게 생성한다.
  • 데이터를 통한 학습을 통해 손실함수값을 낮추도록 필터를 훈련시킨다.
  • 충분한 학습이 이루어지면 낮은 층의 필터는 저수준의 로컬한 특징을 찾아내고 층이 높아질수록 더 고수준의 더 글로벌한 특징을 찾아낸다.

Deep Learning 카테고리 내 다른 글 보러가기