IT 프로그래밍/AI

CNN motivation

기술1 2025. 3. 15. 23:59

Overfitting의 단점은 모델이 훈련 데이터에 너무 과도하게 적합되어, 새로운 데이터에 대한 일반화 능력이 떨어진다는 점입니다. 예를 들어, 배경에 점만 찍어놓고도 모델이 이를 "아니라고" 예측한다면, 이는 과도한 학습으로 인해 발생한 문제입니다. 딥러닝에서 중요한 것은 학습을 계속해서 높이는 것이 아니라, 중간 지점을 찾아 모델이 일반화될 수 있도록 하는 것입니다.

 

CNN과 인간의 방식:

  1. 인간이 이미지를 인식할 때 뇌의 일부만 활성화된다는 사실을 반영합니다.
  2. 위치별 특징을 추출하여, 위치 정보를 유지한 채로 특징 패턴을 찾습니다.
  3. (누락된 부분이 있으니, 적절한 내용이 필요할 수 있습니다.)

 

Fully Connected Layer에서는 이미지의 각 픽셀을 세세하게 분석해야 하므로, 모든 픽셀을 서로 연결하는 방식은 이미지 처리에 적합하지 않습니다. 자리 바꾸기를 하거나 연결하지 않는 것에 관계없이, 픽셀들이 서로 섞이게 되므로, 인간이 이미지를 인식하는 방식과는 차이가 있습니다. 인간은 위치 정보를 유지하며 특징을 인식합니다.

 

Convolution

합성곱은 위치와 배치 정보가 중요한 특징 추출 기법입니다. 이는 필터링 과정으로, 각 특징을 위치 정보를 유지한 채 추출합니다.

 

예를 들어, 3x3 이미지를 2x2 커널로 처리하면 4개의 노드만 생성됩니다. 이 방법은 가까운 영역의 특징만 연결하여 위치 정보를 잃지 않으면서 담당 노드의 의미를 부여할 수 있습니다.

 

Convolution 특징 추출

필터를 사용하여 특정 패턴을 찾습니다. 예를 들어, 다음과 같은 필터를 사용한다고 가정해 보겠습니다

-1 0 1
-1 0 1
-1 0 1

이 필터는 세로 방향의 특징을 추출하는 역할을 합니다. 만약 이미지에 세로 특징이 없다면, 이 필터를 적용했을 때 결과는 모두 0이 됩니다.

 

Blur (블러):

다음과 같은 필터는 블러 효과를 생성합니다:

Blur

11111
11111
11111
11111
11111

이 필터는 이미지를 흐리게 만들거나, 이미지의 노이즈를 줄이는 데 사용됩니다. 모든 픽셀을 평균화하여 주변 정보를 반영하면서 세부적인 차이를 감소시킵니다

 

 

  • CNN과 NN의 차이점:
    • 주변만 연결 (Edge 연결): CNN은 이미지에서 지역적인 특징을 추출하는 데 집중합니다. 즉, 각 노드는 주변 픽셀들과만 연결되어 있습니다.
    • 가중치 재사용 (Weight Sharing): CNN은 동일한 필터를 이미지 전체에 적용합니다. 이는 같은 특징을 여러 위치에서 추출하게 하여, 파라미터 수를 줄이고 효율성을 높입니다.
    • 여러 종류의 필터 사용: CNN은 여러 종류의 필터를 사용하여 다양한 특징을 추출합니다. 각 필터가 어떤 특징을 추출하는지는 모델이 학습을 통해 알아내고, 가중치 업데이트를 통해 필터가 최적화됩니다.

RGB 필터

3x5x5 입력 크기는 총 75개의 값을 가지며, 이는 하나의 이 됩니다.

  • 예를 들어, 3개의 채널이 있는 경우(예: RGB 채널), 3x5x5 필터를 사용하여 하나의 출력을 생성할 수 있습니다.
  • 만약 3x5x5 필터를 두 개 사용하면, 두 번째 면을 생성할 수 있습니다. 계속해서 필터를 쌓으면 출력의 깊이가 증가합니다.

(B, G, R) -> 3x5x5 필터 하나 -> 하나의 출력
3개의 필터 -> 3개의 출력


3x7x7 입력에 대해 3x3 커널을 적용할 경우:

  • 커널의 크기는 3x3이고, 채널 수는 3입니다. 즉, 각 채널에 대해 3x3 필터를 적용합니다.
  • 출력 채널 수는 필터의 수와 동일하므로, 이 경우 3개의 필터가 사용되며, 출력 채널 수3입니다.

 

Padding

제로 패딩 (Zero Padding) 은 입력 데이터의 가장자리에 0을 추가하여 출력 사이즈가 의도치 않게 변하지 않도록 만드는 기법입니다. 예를 들어, 다음과 같은 입력이 있다고 할 때:

 

1 1 1 2 2

1 2 1 1 1

1 2 3 1 1           

 

이것을 제로 패딩을 적용하면, 0을 가장자리에 추가하여 크기를 확장한 후, 다음과 같이 보이게 됩니다:

 

0 0 0 0 0 0 0

0 1 1 1 2 2 0 

0 1 2 1 1 1 0

0 1 2 3 1 1 0

0 0 0 0 0 0 0

 

이 과정은 출력의 크기가 필터와의 합성곱 연산 후 의도치 않게 줄어드는 것을 방지하기 위해 사용됩니다. 즉, 입력 이미지 크기가 변하지 않도록 출력 크기를 조절하는 방법입니다.

 

Stride

Stride (스트라이드) 는 필터가 입력 이미지에서 얼마나 이동할지를 결정하는 값입니다. 예를 들어, 행으로 2개, 열로 2개씩 필터를 이동시킨다면, stride = (2, 2) 가 됩니다.

 

즉, 필터가 한 번 적용된 후, 2개의 픽셀씩 건너뛰며 이동하여 새로운 위치에 필터를 적용하는 방식입니다. 이렇게 이동하면서 입력 이미지에서 특징을 추출하게 됩니다.

Pooling

Pooling은 중요한 특징만을 선택하는 과정입니다. 이 과정에서는 추가적인 파라미터가 필요하지 않으며, 대표적인 Pooling 기법으로는 MaxPooling과 AveragePooling이 있습니다.

  • MaxPooling은 필터 내에서 가장 큰 값을 선택하는 방식입니다.
  • AveragePooling은 필터 내 값들의 평균을 계산하여 선택하는 방식입니다.

이 Pooling 기법은 각 채널마다 독립적으로 적용되며, 따라서 채널 수는 유지됩니다.

 

만약 입력 크기가 (4,4)라면, 이를 GlobalAveragePooling이라고 합니다. 이 경우, 각 채널에서 값을 평균내어 하나의 값으로 요약하고, 이를 통해 사이즈를 줄이는 효과를 얻을 수 있습니다.

 

Convolution, Pooling 반복한다면

Conv 레이어를 사용하면 채널 수가 증가하고, Pooling을 사용하면 채널 수는 유지되면서 특성 맵의 크기가 줄어듭니다. Conv와 Pooling을 반복함으로써 점점 더 넓은 범위와 더 많은 특징을 추출하게 됩니다.

 

MaxPooling의 경우, 가장 큰 값을 선택하여 넓은 범위의 정보를 요약한 대푯값을 제공하는 원리입니다. 즉, 하나의 픽셀이 더 넓은 범위의 특징을 포함하게 된다고 볼 수 있습니다.

 

채널 수가 증가한다는 것은 다양한 특징을 가진 Feature Map이 쌓인다는 의미입니다. 예를 들어, 특정 채널은 잔디 부분만 크게 반영되고, 나머지 부분은 작게 반영됩니다. 이 정보를 MLP(다층 퍼셉트론)를 통과시키면, 최종적으로 강아지, 고양이, 소와 같은 객체를 구분할 수 있는 특징을 얻을 수 있습니다.

 

픽셀 하나에 더 넓은 범위의 정보를 담게 되므로, 점차 정제된 특징들이 결합되어 최종적으로 분류 작업에 적합한 정보를 제공합니다. 마지막에는 Softmax를 통해 다중 분류를 수행할 수 있습니다.