Post

CNN

Based on the lecture “Intro. to Deep Learning (2023-2)” by Prof. Seong Man An, Dept. of Data Science, The Grad. School, Kookmin Univ.

What? Cov-Net


  • 완전 연결 계층의 문제점 : 입력값을 1차원으로 평탄화(Flatten)하는 과정에서 공간적 구조(Spatial Structure)를 무너뜨림

    01

    \[\mathbf{Y}_{N \times P \cdot Q \cdot R} = \text{flatten}(\mathbf{X}_{N \times P \times Q \times R})\]
  • 합성곱 신경망(Convolution Neural Network; CNN) : 형상의 특징을 추출하고 기록하는 전처리 과정이 존재하는 신경망 알고리즘

    02

    • 입력 계층(Input Layer) : 관측치의 속성값을 입력 받는 계층
    • 컨볼루션 계층(Convolution Layer) : 자료의 공간 구조 상 특징을 포착하는 계층
    • 풀링 계층(Pooling Layer) : 컨볼루션 계층에서 포착한 특징의 대표값을 선별함으로써 자료 규모를 축소하는 계층
    • 완전 연결 계층(Fully-Connected Layer)

Convolution Layer


1
2
3
4
5
6
7
8
from tensorflow.keras.layers import Conv2D
conv_layer = Conv2D(
    filters = k,
    kernel_size = (M,N),
    strides = s,
    padding = "valid",
    activation = "relu"
    )

Convolution Operation

  • 합성곱 연산(Convolution Operation) : 입력값의 부분공간을 커널과 아다마르 곱셈($\odot$)하는 과정을 반복하여 새로운 행렬을 구성함

    03

    \[\begin{aligned} \mathbf{Y} &= \text{ReLU}(\mathbf{C}+\mathbf{\beta})\\ \mathbf{C} & \in \mathbb{R}^{\lfloor \displaystyle\frac{P-M}{s}+1 \rfloor \times \lfloor \displaystyle\frac{Q-N}{s}+1 \rfloor \times k}\\ &= \mathbf{W}_{M \times N} \odot \mathbf{X}_{P \times Q}\\ c_{i,j} &= \sum_{n=1}^{N}\sum_{m=1}^{M}{w_{m,n} \cdot x_{i+m-1,j+n-1}}\\ \end{aligned}\]
    • 특성 맵(Feature Map; $\mathbf{Y}$) : 합성곱 연산 결과 입력값 형상의 특징으로서 반환된 새로운 배열

      04

    • 커널(Kernel; $\mathbf{W}_{M \times N}$) : 입력값의 부분공간에 아다마르 곱셈하는 여과기(Filter)

      • filters : 커널 갯수
      • kernel_size : 커널 크기
      • strides : 커널 이동 보폭
    • $\mathbf{X}_{P \times Q}$ : 관측치

Strides & Padding

  • 스트라이드(Stride; $s$) : 커널 이동 보폭

    05

  • 패딩(Padding) : 입력값의 주변을 특정 값으로 채우는 기법

    06

    • valid : 패딩을 적용하지 않음
    • same : 입력 크기와 동일하도록 출력 크기를 조절하여 모서리 정보를 보존함

Downsampling using Pooling


1
2
3
4
5
6
from tensorflow.keras.layers import MaxPooling2D
pooling_layer = MaxPooling2D(
    pool_size = (M,N),
    strides = s,
    padding = "valid"
    )
  • 합동 연산(Pooling Operation) : 주어진 행렬에 대하여 그 부분공간마다 대표값을 추출하여 새로운 행렬을 구성함

    07

  • 종류

    • Max Pooling : 대표값을 부분공간의 가장 큰 값으로 설정함

      \[\begin{aligned} \mathbf{Y} &= \left\{y_{i,j}\bigg|y_{i,j}=\max_{n=1}^{N}{\max_{m=1}^{M}{\mathbf{X}[i:i \cdot s + m-1, j:j \cdot s + n-1]}}\right\} \end{aligned}\]
    • Average Pooling : 대표값을 부분공간의 평균으로 설정함

      \[\begin{aligned} \mathbf{Y} &= \left\{y_{i,j}\bigg|y_{i,j}=\frac{1}{M \cdot N}\sum_{n=1}^{N}{\sum_{m=1}^{M}{\mathbf{X}[i:i \cdot s + m-1, j:j \cdot s + n-1]}}\right\} \end{aligned}\]
This post is licensed under CC BY 4.0 by the author.