[딥러닝] CNN 기본 구조

Seung Joo·2021년 8월 24일
0
post-thumbnail

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

CNN은 생물학, 특히 고양이의 시각 피질의 수용 영역(receptive field)에서 영감을 받았다. 합성곱 연산을 이용하여 이미지의 공간정보를 유지하고 기존의 Fully connected한 구조 대비 연산량이 획기적으로 줄었으며 이미지 분류에서 뛰어난 성능을 보여주고 있다. 현재 CV(Computer Vision)분야의 대부분은 CNN에 의존하고 있다.

Convolutional Layer

Convolutional Layer는 아래의 그림과 같이 n×mn \times m행렬의 구조로 이루어진 필터를 입력된 데이터에 투영하여 합성곱 연산을 하게 된다. 입력 데이터의 좌상단에 이미지와 필터를 포개놓고, 대응되는 위치의 값끼리 곱한 뒤, 모든 숫자를 더해준다. sliding window 방식으로 이동해가며 합성곱 연산을 수행한다.

합성곱 연산

stride=1의 합성곱 연산의 과정

Convolution layer를 통과한 결과 feature map이 추출되고, feature map은 필터의 크기나 보폭(stride)에 따라 입력 데이터에 비해 크기가 작아지게 된다. 따라서 컴퓨터 연산의 수가 획기적으로 줄어드는 효과가 있다. 하지만 padding을 통해서 입력 데이터가 과도하게 작아지는 것을 방지할수도 있다.

stride

필터를 입력 데이터에 적용할 때 움직이는 간격을 stride(보폭)이라고 한다.
stride의 값에 따라서 출력되는 데이터의 크기가 달라진다. 아래의 그림을 보면 쉽게 이해할 수 있다.

stride = 1

stride = 2

Padding

Padding은 반복적으로 합성곱 연산을 했을 때 특성의 행렬의 크기가 작아지는 것을 방지하고 외곽부분의 정보손실을 줄이고자 이미지의 외곽에 값을 채워넣는 방법으로 일반적으로 0으로 채워넣는 zero padding을 사용한다.

이미지출처 : https://d2l.ai/chapter_convolutional-neural-networks/padding-and-strides.html

Pooling

Pooling은 데이터의 공간적인 특성을 유지하면서 크기를 줄여주는 것으로 특정위치에서 큰 역할을 하는 특징을 추출(Max Pooling)하거나, 전체를 대변하는 특징을 추출(Average Pooling)할 수 있다. 크기가 줄어들어 학습할 가중치를 줄이게 되므로 과적합 문제해결에 도움을 줄 수 있다.

Max Pooling (stride = 2)


이미지출처 : https://www.geeksforgeeks.org/cnn-introduction-to-pooling-layer/

Average Pooling (stride = 2)


이미지 출처 : https://www.geeksforgeeks.org/cnn-introduction-to-pooling-layer/

Flatten Layer

Flatten Layer의 목적은 Convolution Layer, Pooling Layer를 통해 추출된 Feature map을 Output Layer에 연결(fully connected layer)하여 분류하기 위함이다.

profile
조금씩 천천히

0개의 댓글