CNN 이전에 사용되던 FC layer (Fully Connect)는 다차원에서 연산을 할 수가 없기 때문에, 다차원 데이터 예를 들면 이미지 데이터를 학습하는데 어려움이 있었다. 하지만, CNN 의 경우엔 다차원 데이터의 특징을 추출하고 공간 정보를 그대로 유지한다.
대표적인 차이점으로는,
- 각 Layer 차원 유지
- 특징 인식에 효과적
- 여러 필터들을 사용하며, 이것을 공유함으로써 학습 파라미터의 숫자가 상대적으로 적다.
- Pooling Layer 존재
1. Convolution
- 한국어로는 합성곱이라는 말을 뜻하는데, 이미지 데이터와 Filter를 합성곱 연산하여 특징을 추출하는 CNN의 가장 기초적인 Layer 연산이다. 아래 이미지를 보면 쉽게 이해할 수 있는데, Filter를 이동시키며 특징을 추출한 Feature Map을 만든다.
2. Filter & Stride
- Filter를 다른 말로는 Kernel 이라고도 하는데, 필터의 목적은 특징을 추출하기 위한 파라미터라고 할 수 있다. 아래 이미지처럼 하나의 Filter를 이동시키며 투영하여 합성곱을 하고 연산 한번당 하나의 Pixel을 대변한다.
움직이는 Pixel 칸 수의 기준을 Stride라고 하며 아래 이미지의 경우엔, 7 X 7 Input Image에 Stride = 1 이고, 3X3 Filter를 적용하여 5 X 5 크기의 Feature Map을 만든것이다. Stride는 몇칸씩 움직일 것인가? 를 생각하면 이해가 쉽다. 그렇게 필터수 만큼 나온 Feature Map들을 합치는 과정을 반복한다.
3. Padding
- Filter를 이동시키면 convolution을 연산하면, Stride 값에 따라 더욱 작은 크기의 Feature Map 이 생성된다. 즉, Image -> Feature Map이 될때 같은 크기로 Output 이 나올수가 없다. 하지만, 학습시에 같은 크기로 만드는 과정을 자주 사용하기 때문에 Input Size = Output Size 로 맞추기 위해 Padding 이라는 기법을 사용한다. 아래 이미지는 가장 일반적인 Zero Padding 예제이다.
4. Pooling
- Pooling 이란 Feature Map 으로 뽑은 특징 값들을 더욱 도드라지게 하는 작업이라고 생각하면 된다. 아래의 이미지 예제는 어떤 방식으로 Feature Map 의 값을 추출할지의 대한 예제들이다. 매우 직관적인데, Pool Size 에 따라 크기가 줄어드며 특징을 더욱 확실하게 혹은 적절한 값으로 추출해준다.
'Neural Network' 카테고리의 다른 글
Computer Vision이란 (0) | 2020.08.08 |
---|