본문 바로가기
Deep Learning/CNN

CNN 개념 한번에 공부하기 [2]

by 한PU 2024. 6. 17.
728x90
반응형

지난 글에서 CNN의 구조를 살펴봤다.

CNN은 Conv, ReLU, Pooling, Affine, Softmax Layer 등으로 이루어져 있음을 확인하였다.

또한 CNN은 Padding, Stride 등의 고유 용어가 존재한다.

 

Affine Layer의 문제점?

Affine Layer의 문제점으로 크게 대두되는 것은 "데이터의 형상이 무시된다"는 점이다.

이미지 데이터를 생각해보자.

RGB 이미지의 경우 가로x세로x3 (R, G, B) 을 값으로 가지는 3차원 데이터이다.

가로, 세로를 제외한 나머지 데이터 축을 "색 채널(Channel)" 이라고 한다.

 

이러한 데이터가 3차원을 갖는다는 점이 문제가 된다.

Affine Layer의 경우 1차원 데이터로 평탄화된 데이터만 input data로 받을 수 있는데,

이 경우 데이터의 형상이 무시된다는 문제점이 생긴다.

 

반면, Conv Layer의 경우 형상을 유지할 수 있다.

input, output 모두 3차원 데이터로 주고받을 수 있다는 장점이 있는 것이다.

 

Conv Layer의 Data

CNN에서 Conv Layer의 입출력 데이터를 "Feature Map (특징 맵)" 이라고 한다.

input data는 input feature map으로,

output data는 output feature map으로 부른다.

 

Convolution Operation

Conv Layer에선 당연하게도 Convolution Operation을 진행한다.

[그림1] Conv operation (출처- Research Gate)

가장 왼쪽 Image가 input data가 된다.

데이터의 형상은 (높이, 너비)로 표시합니다. 위 그림은 입력 (5, 5), 필터 (3, 3), 출력 (3, 3) 이 된다.

 

계산 과정은 아래 그림과 같다. (Filter == Kernel)

[그림2] 한 윈도우에서의 계산 과정 (출처- Research Gate)

결과 출력은 위와 같은 계산과정을 Window를 이동시키면서 하게된다.

 

Window 이동은 아래와 같이 이루어진다.

[그림3] 윈도우 이동

 

CNN의 Filter는 NN의 weight에 해당한다.

또한 CNN에도 Bias가 존재하는데, Bias를 포함한 연산은 아래와 같이 이루어 진다.

아래 움짤은 Bias를 포함해서 위에서 다룬 모든 연산을 잘 보여준다.

 

[그림4] Convolution Operation

위 그림에선 Cross-Correlation을 나타냈지만, Convolution과 거의 비슷한 연산을 한다.

둘의 차이는 filter flipping을 하는지 여부인데, 딥러닝에서는 잘 구분하지 않는다고 한다.


다음 글에선 Padding과 Stride를 적도록 하겠다.

728x90
반응형

'Deep Learning > CNN' 카테고리의 다른 글

CNN 개념 한번에 공부하기 [1]  (0) 2024.06.07