수식이 나오지 않는다면 새로고침(F5)을 해주세요
모바일은 수식이 나오지 않습니다.
CNN(Convolutional Neural Network)란?
전체 프레임워크
📌 1. CNN의 기본 개념
CNN은 이미지와 같은 2차원 또는 3차원 구조 데이터를 처리하기 위해 설계된 딥러닝 아키텍쳐다.
전통적인 DNN은 입력을 일렬로 펴(flatten)서 처리하기 때문에, 공간적 구조(예: 이미지의 픽셀 간 관계)를 고려하지 못하는 한계가 있다.
이를 극복하기 위해 CNN은 입력의 지역적 정보(local pattern)를 학습할 수 있도록 고안되었고, 시각 영역에서의 혁신적인 성능을 보여주며 다음과 같은 분야에서 광범위하게 사용된다
: 이미지 분류, 물체 탐지, 얼굴 인식, 의료 영상 분석, 자율주행 카메라 비전
📌 2. CNN의 알고리즘 구조
1) 합성곱?
합성곱(Convolution)이란 두 함수 $f$와 $g$가 있을 때, 이들을 '뒤집고 밀면서' 곱하고 적분(또는 합산)하는 연산이다. 즉 제 3의 함수인 $f * g$를 만들어 주는것.
$$
(f * g)(t) = \int^{\infty}_{-\infty} f(\tau)g(t-\tau) d\tau
$$
함수를 표면적으로 살펴보면? $y$축을 기준으로 좌우가 반전이된 함수 $g$를 $t$ 만큼 이동한 함수인 $g(t-\tau)$와 $f(\tau)$를 곱해진 함수를 적분한 것.
또한, Convolution이 아닌 Cross-correlation이 있는데, Convolution의 $g$에서 $y$축 반전을 거치지 않은 것의 차이다.
$$
(f*g)(t) = \int^{\infty}_{-\infty} f(\tau)g(t+\tau)
$$
이들의 차이를 눈으로 보면 아래와 같습니다. 미적분을 아신다면 충분히 이해할 것이라 생각합니다.
2) 기본 구성 요소
: 입력층 (Input layer) - 합성곱층 (Convolutional layer) - 활성화 함수 (Activation Function) - 풀링층 (Pooling layer) - 완전연결층 (Fully Connected Layer) - 출력층 (Output layer)
3) 합성곱층 (Convolutional layer)
- 입력 이미지에 필터(커널, kernel)을 적용하여 feature map을 생성
- 필터는 작은 행렬 (예: 3x3, 5x5 등)이며, 이미지의 일부분에 대해 내적(dot product) 수행
- 이 과정을 통해 이미지의 지역적 특징(edge, corner 등)을 학습
먼저 입력 이미지에 필터를 적용하여 feature map을 생성하는 것이 무엇이냐? 수식으로 본다면 아래와 같다.
$$
S(i,j) = (I*K)(i,j) = \sum^{M-1}_{m=0} \sum^{N-1}_{n=0} I(i +m, j+n) \cdot K(m,n)
$$
- $S$ : feature map, $I$ : 입력 이미지, $K$ : 필터, 커
- $*$ : 컨볼루션 연산
위 그림은 Convolution layer를 animated시켜 본 결과다. 해당 예시에서는 필터가 모두 1,1,1,1로 단순화 되어 있지만, 필터를 다르게 하여 한번 계산 단계를 확인하여 보자.
filter의 단순한 예시이다. input image의 2x2 픽셀에 해당하는 2x2 filter를 적용하여 최종적으로 3x3을 2x2의 feature map으로 만드는 것. feature map의 각 pixel 계산 법을 보면
- (1 x 1) + (2 x 1) + (4 x 0) + (5 x 2) = 13
- (2 x 1) + (3 x 1) + (5 x 0) + (6 x 2) = 17
- (4 x 1) + (5 x 1) + (7 x 0) + (8 x 2) = 25
- (5 x 1) + (6 x 1) + (8 x 0) + (9 x 2) = 29
4) 활성화 함수 (ReLU)
: CNN에서는 주로 ReLU 사용, 비선형성 추가 및 학습 수렴 속도 개선
$$
f(x) = max(0, x)
$$
5) 풀링층 (Pooling layer)
- feature map을 down sampling하여 공간적 크기를 줄이고 연상량을 감소
- 자주 쓰이는 풀링 방식으로는 max pooling, average pooling이 있다.
예를 들면? 2x2 max pooling의 경우 4개 값 중 가장 큰 값만 남김
$$
\begin{bmatrix}
1 & 2 \\
3 & 4 \\
\end{bmatrix} \rightarrow max = 4
$$
average pooling은? 이름과 같이 평균값을 넣어주는 것.
이와 같이 데이터의 공간적 특성을 유지 + 크기를 줄여주기 때문에? 합성곱층 사이에 주기적으로 넣어준다. 자연스럽게 과적합 문제가 해결된다.
6) 완전연결층 (Fully Connected layer)
- CNN의 최종 특징을 분류기로 전달하는 층
- DNN처럼 평탄화(Flatten) 후 완전 연결층으로 연결하여 Softmax 또는 Sigmoid로 최종 예측
(이름만 다를 뿐 DNN과 같이 Flattening layer사용하는 것.)
📌 3. 전처리 및 하이퍼 파라미터 요소들
1) Padding
: Padding이란 가장자리 손실을 방지하는 것이다.
padding은 입력 이미지의 가장자리에 추가적인 픽셀을 덧붙인다. (보통은 0으로)
왜냐하면 우선 출력 크기 보존을 위해서. 필터가 입력 이미지에 적용될 때, 가장자리는 필터가 온전히 덮지를 못한다. 때문에 padding을 하지 않으면 출력 크기가 점점 줄어들게 된다.
앞서 본 예 처럼 3x3의 입력이? 2x2의 출력으로 되게 된다. 하지만 padding을 사용하여 가장자리를 추가하면 출력 크기를 입력과 동일하게 유지할 수 있는 것.
외에도 가장 자리 pixel의 경우 필터가 적용되는 횟수 자체가 다르기 때문에 padding을 이용해서 학습에 기여하게 할 수 있다.
위 그림처럼? 3x3 input이 3x3 feature map 그대로 나오게 됩니다.
2) Stride
: Stride는 필터를 적용할 때 움직이는 간격을 말한다. 쉽게 아래 그림으로 이해가 가능하다.
📌 4. CNN의 장점과 단점
1) 장점
- 파라미터 수 감소
: DNN에 비해 CNN은 필터를 공유하므로, 동일 필터를 여러 위치에 적용해 학습 파라미터 수가 크게 줄어즌다
- 지역성 보존
: 필터가 입력 이미지의 지역적인 특징(local pattern)만 보게하므로, 구조적 정보 유지에 강하다
- 공간 불변성
: pooling과 필터 학습 덕분에 이미지가 약간 이동하거나 회전해도 인식이 가능하다
- 전이학습 활용 가능
: 사전 학습된 모델을 활용해 적은 데이터로도 학습 성능 확보 가능
2) 단점
- 계산량이 여전히 크다
- 시각 중심의 모델로 순차적 정보(텍스트, 음성, 시계열 등)에는 제한적이다.
- 구조 설계 복잡 : 하이퍼파라미터 수 자체는 적으나 조정이 많이 이루어진다.
'👨💻 Deep Learning > Deep learning' 카테고리의 다른 글
[Deep Learning] RNN에 대한 기본 설명 (0) | 2025.05.22 |
---|---|
[Deep Learning] ANN / DNN에 대한 기본 설명 (2) | 2025.05.20 |
[Deep Learning] 경사하강법과 역전파 알고리즘 (0) | 2025.05.13 |
[Pytorch] squeeze, unsqueeze 란? (0) | 2025.04.21 |
[Pytorch] ANN 구현과 용어 설명 (0) | 2025.02.12 |