Deep Learning: Convolution Neural Networks (CNNs)

danbibibi·2022년 5월 10일
0

Convolution Neural Networks (CNNs)

Fully Connected Layer

모든 뉴런을 연결하는 기존의 fully connected를 이미지에 적용한다고 생각해보자. 이미지 크기가 커질수록 파라미터 개수는 기하급수적으로 증가하게 되고, 이에 따른 memory size 부족과 같은 문제가 발생할 수 있다. convolution layer를 이용함으로써 conection을 줄이면서 모델이 모든 가능한 경우를 보지 않고 집중해야 할 부분만 보도록 만들 수 있다. 또 공간정보가 손실되는 것을 방지할 수 있다!

Edge detection example

Vertical edge detection

다음과 같은 필터를 이용하여 Vertical edge를 detection할 수 있다.

Horizontal edge detection

다음과 같은 필터를 이용하여 Horizontal edge를 detection할 수 있다.

Learning filters to detect various edges

필터의 값들은 모델이 학습하는 파라미터이며, 보통 다양한 edge를 detection하기위해 여러 개의 필터를 사용한다!

Padding & Stride

Padding

이미지의 크기가 nxn이고, 필터 크기가 fxf인 경우 Convolution Layer를 지나면 이미지의 크기는 (n-f+1)x(n-f-1)로 줄어든다. 이 때 이미지의 크기를 유지하고 싶거나, 조절하고 싶은 경우 패딩을 이용할 수 있다.

Stride

이미지 크기를 줄이고 싶은 경우에는 stride를 이용하여 convolution filter를 여러칸 씩 움직여서 이미지 크기를 줄일 수 있다.

Convolutions over volume

RGB, 3개의 채널인 경우 filter도 다음과 같이 개수를 늘려서 convolution을 적용하면 된다!

Pooling Layers

convolution layer의 출력을 입력으로 받아서 해당 activation map의 적당히 크기도 줄이고, 특정 feature를 강조하는 역할을 한다. Pooling Layers에서는 주로 2x2 (stride = 2) max pooling을 사용한다.

  • reduce size of representation to speed up computation
  • make some features robust overfitting
  • makes the representations smaller and more manageable
  • operates over each activation map independently

Pooling Layers를 거친 후 feature map의 크기는 다음과 같이 변한다. convolution layer의 size 변화와 동일하다. 다른점은 pooling layer에서는 채널의 변화는 없다는 것이다!

Summary of notation

지금까지 학습한 notation이 간단히 정리되어있는 페이지이다!

  • Convolution Layer
  • Pooling Layer
profile
블로그 이전) https://danbibibi.tistory.com

0개의 댓글