1. CNN 기본 개념
CNN(Convolutional Neural Network)은 이미지 처리에 탁월한 성능을 보이는 신경망으로 크게 합성곱층(Convolution Layer)과 풀링층(Pooling layer)으로 구성된다. CNN은 다층 퍼셉트론에서 1차원 텐서인 벡터를 이용하는 것과 달리 공간적인 구조(spatial structure)를 그대로 사용한다.
2. Filter와 Feature map
이미지는 (높이, 너비, 채널 or 깊이)이라는 3차원의 텐서인데, 채널(Channel)이라는 것 색 성분을 의미한다. 통상적으로 적색, 녹색, 청색 3가 지 채널을 사용한다.
합성곱 연산은 커널(kernel) 또는 필터(filter)라는 nxm의 행렬로 이미지를 가장 왼쪽 위부터 오른쪽까지 순차적으로 훑는다. 일반적으로는 3x3이나 5x5로 사용하며, 입력값에 가중치를 곱하는 것으로 이해할 수 있다. 필터의 이동 범위는 스트라이드(stride)라고 하며, 사용자가 정의할 수 있다. 스트라이드가 크면 연산의 속도는 빨라지지만, 너무 크면 이미지의 특징을 놓칠 가능성이 있다. 입력 값을 필터를 사용하여 합성곱 연산을 하면 특성 맵(feature map)이 생성된다.
3. Padding
합성곱 연산을 하였을대, 원래의 이미지에서 최종적으로 얻은 특성 맵은 작아진 상태이다. 특성 맵의 크기를 그대로 유지하기 위해서는 패딩(Padding)이라는 방법을 사용하면 된다. 패딩은 입력의 가장자리에 지정된 개수의 폭만큼 행과 열을 추가해주는 것을 의미하며, 0으로 값을 채우는 제로 페딩(Zero padding)이 가장 보편적으로 사용하지만 이미지 처리라는 관점에서 보면 출력 이미지의 주변부가 어둡게 되는 단점이 있다. 여러 방법이 있지만, 절대적으로 좋은 방법은 없다.
결국 최종적으로 CNN의 Convolution Layer는 합성곱 연산을 통해 특성 맵을 얻고, 활성화 함수를 지나는 연산을 하는 Hidden Layer를 의미한다.
4. Pooling
CNN의 Convolution Layer 다음에는 Pooling Layer가 보통 오는데, Pooling은 특성맵을 다운샘플링하여 특성맵의 크기를 줄이는 것이다. 보통 최대 값을 출력하는 최대 풀링과 평균값을 출력하는 평균 풀링이 사용된다.
'DL Study' 카테고리의 다른 글
LSTM(Long Short-Term Memory) (0) | 2022.09.13 |
---|---|
Recurrent Neural Network (0) | 2022.09.12 |
기울기 소실과 폭주 (0) | 2022.09.07 |
과적합 줄이기 (0) | 2022.09.06 |
Sigmoid Function(시그모이드함수) (0) | 2022.09.05 |