새소식

Study/Today_I_Learned

[딥러닝] CNN

  • -
728x90

처음 딥러닝 개론에서 CNN에 대한 개념을 들은 이후, 여러 강의에서 CNN에 대한 언급이 많고 그 배경지식을 요구하는 내용이 많아 CNN에 대한 개념을 정확히 짚어놓아야겠다는 생각이 들어 따로 포스팅합니다. 

1. CNN이란?

출처: t.ly/Fu3b

 Computer vision 분야에서 널리 사용되는 딥러닝 신경망 모델입니다. convolutional layer와 pooling layer를 통해 이미지를 픽셀 단위로 받아들여 그 특징들을 파악합니다. 그림에서 C1 으로 넘어갈 때 첫 번째 convolutional layer에서 padding이 적용되지 않은 $ n \times n \times 6 $ 인 filter가 사용되었음을 확인할 수 있습니다. 이게 대체 무슨말인지 용어를 같이 살펴보겠습니다. 

2. 용어

▶Convolutional kernel (filter) : image 혹은 feature에 convolution(합성곱 연산)을 적용하기 위한 가중치로 이루어진 matrix
▶feature map: input image에 filter를 적용한 output, 즉 위 그림의 C1, C3, C5를 feature map으로 볼 수 있음
▶Sliding : filter를 움직이며 input image 또는 feature에 적용시키는 것
▶Stride : filter를 이동시키는 칸 수 
▶Padding : input value들의 width와 height 를 유지하기 위해 테두리에 숫자들을 추가해 주는 것, 특히 0으로 감싸주는 것을 'zero padding'이라고 함
 아래 그림처럼 $ 10 \times 10 $ 의 이미지를 $ 3 \times 3 $ filter, stride 1 로 처리해주면 width, height가 8로 줄어들지만, 상하좌우로 0을 한 줄씩 추가해 filter를 다시 적용하면 width와 height의 길이를 유지할 수 있습니다. 


 
▶Pooling layer - max pooling, average pooling 두가지 종류가 있습니다. 
아래 그림과 같이 $ 2 \times 2 $ 기준으로 구역 내 가장 큰 숫자를 sampling 하는 것을 max pooling, 구역 내 data의 평균으로 sampling 하는 것을 average pooling이라고 합니다. pooling layer의 장점은 메모리 절약 뿐만 아니라, 이미지의 noise를 줄여줄 수 있다는 점도 있습니다. 

출처: t.ly/IMU4

3. 특징

기존의 Dense network는 이미지 데이터를 처리하기에는 너무 복잡합니다. 이미지 내의 글씨 혹은 그름이 위치, 크기가 불규칙적이기 때문에 인식 능력이 떨어지고, 이미지 크기가 커질수록 모델 안의 파라미터의 개수가 너무 많아져서 메모리가 그 크기를 감당하기 힘들어지고 연산 속도도 느려지기 때문입니다. 

4. 종류 (Lecture based on CS231 2017 spring)

매 주 주말 진행하고 있던 study에서 CS231n 을 듣고 있어 추가적으로 적어봅니다. 강의를 들으면서 러프하게 적은 키워드들입니다. 

▶ZF net : improve the error rate

▶ VGG : deep layer, smaller filters
작은 필터를 쓰는 이유: effective receptive field 가 7*7 filter 와 같다, 더 깊지만 비선형성을 더 띨 수 있음, 적은 파라미터 수 = 적은 메모리
localization = b box - 이미지가 어느 지역에 있는지 탐지함

▶GoogLeNet
컴퓨터에 효율적인 구조 / inception module / no FC layer - Alexnet 보다 파라미터 수가 훨씬 적음
receptive field 사이즈를 다 다르게 해서 concat
필터마다 개수 다르면 마지막에 depth wise로 합쳐줌 = 인풋이 28*28 이었으면 크기는 그대로, 깊이가 필터 개수들의 합임
Pooling layer의 문제: 깊이가 그대로.. 솔루션: 1*1 conv 는 depth를 줄여줌
1번의 back propagation 

▶ResNet
extreme deep network, residual connection 152 layer, 오버피팅이 아님에도 56 epoch가 20 epoch 보다 성능이 안좋을수도 있다 - optimization problem, 깊은 모델은 최적화시키기가 어렵다
F(x)를 residual로 생각하고 two path - $ g(x) = F(x) + x $ 로 두고 다음 레이어로 넘겨주자
‘skip connection’ , intuition& hypothesis의 영역임

 

728x90
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.