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)를 무너뜨림
\[\mathbf{Y}_{N \times P \cdot Q \cdot R} = \text{flatten}(\mathbf{X}_{N \times P \times Q \times R})\] -
합성곱 신경망(Convolution Neural Network; CNN) : 형상의 특징을 추출하고 기록하는 전처리 과정이 존재하는 신경망 알고리즘
- 입력 계층(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$)하는 과정을 반복하여 새로운 행렬을 구성함
\[\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}\]
Strides & Padding
-
스트라이드(Stride; $s$) : 커널 이동 보폭
-
패딩(Padding) : 입력값의 주변을 특정 값으로 채우는 기법
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) : 주어진 행렬에 대하여 그 부분공간마다 대표값을 추출하여 새로운 행렬을 구성함
-
종류
-
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.