컴퓨터공학/CNN

Convolutional Layer(합성곱층)

airoot 2024. 8. 14. 08:50

Convolutional Layer(합성곱층)는 Convolutional Neural Networks(CNN)의 핵심 구성 요소 중 하나로, 이미지나 신호에서 특징을 추출하는 역할을 한다. Convolutional Layer의 작동 원리와 주요 개념들을 아래에 상세히 설명하겠다.

Convolutional Layer의 주요 개념

  1. 필터(Filter) 또는 커널(Kernel):
    • 필터는 작은 크기의 행렬(예: 3x3, 5x5 등)로 구성된다.
    • 필터의 값은 학습을 통해 조정되며, 초기에는 랜덤 값으로 시작한다.
    • 각 필터는 이미지의 특정 특징(에지, 텍스처 등)을 감지한다.
    • 여러 개의 필터를 사용하여 다양한 특징 맵을 생성할 수 있다.
  2. 스트라이드(Stride):
    • 필터가 입력 이미지 위를 이동하는 간격을 나타낸다.
    • 스트라이드가 1이면 필터가 한 픽셀씩 이동하고, 스트라이드가 2이면 두 픽셀씩 이동한다.
    • 스트라이드를 크게 하면 출력 크기가 줄어든다.
  3. 패딩(Padding):
    • 입력 이미지의 가장자리를 처리하기 위해 경계에 추가되는 픽셀이다.
    • '세임 패딩'(Same Padding)은 출력 이미지가 입력 이미지와 동일한 크기가 되도록 패딩을 추가하는 방식이다.
    • '밸리드 패딩'(Valid Padding)은 패딩 없이 순수하게 필터를 적용하는 방식이다.
  4. 합성곱 연산(Convolution Operation):
    • 필터를 입력 이미지 위에 슬라이딩하면서 합성곱 연산을 수행하다.
    • 합성곱 연산은 필터와 이미지 부분의 대응하는 요소들을 곱하고 그 결과를 합하여 하나의 값을 생성한다.
    • 이 연산을 통해 특징 맵(Feature Map)이 생성된다.

Convolutional Layer의 작동 원리

  1. 입력 이미지:
    • Convolutional Layer는 입력 이미지 또는 이전 층의 특징 맵을 받는다.
  2. 필터 적용:
    • 필터를 이미지 위에 슬라이딩하며 합성곱 연산을 수행한다.
    • 각 위치에서 필터와 이미지 부분의 대응하는 값들을 곱하고 합산하여 하나의 값을 생성한다.
    • 필터가 이미지 전체를 커버할 때까지 이 과정을 반복한다.
  3. 특징 맵 생성:
    • 합성곱 연산 결과는 새로운 행렬(특징 맵)을 만든다.
    • 각 필터는 하나의 특징 맵을 생성하며, 여러 필터를 사용하면 여러 개의 특징 맵이 생성된다.
  4. 비선형 활성화 함수 적용:
    • 일반적으로 ReLU(Rectified Linear Unit)와 같은 활성화 함수를 적용하여 비선형성을 추가한다.
    • ReLU는 양수 값을 그대로 두고 음수 값을 0으로 만든다.

예제

예를 들어, 5x5 크기의 입력 이미지와 3x3 크기의 필터를 사용한다고 가정해 보겠다.

  • 입력 이미지:
    1 1 1 0 0
    0 1 1 1 0
    0 0 1 1 1
    0 0 1 1 0
    1 1 0 0 0
  • 3x3 필터:
    1 0 1
    0 1 0
    1 0 1
  • 합성곱 연산 결과(특징 맵):
    3 3 4
    2 4 3
    2 3 4

이렇게 Convolutional Layer는 이미지의 중요한 특징을 추출하여 다음 층으로 전달한다. 이 과정이 여러 층에 걸쳐 반복되면서 점점 더 복잡한 특징이 추출되고, 최종적으로 이미지의 분류나 인식 작업을 수행할 수 있게 된다.

Convolutional Layer의 학습 과정

CNN의 Convolutional Layer는 고정되어 있지 않고, 학습 과정에서 필터(또는 커널)가 동적으로 업데이트된다. 학습 과정은 다음과 같은 단계로 이루어진다:

  1. 초기화:
    • 학습 시작 시 Convolutional Layer의 필터는 랜덤 값이나 특정 초기화 방법(예: He 초기화, Xavier 초기화)으로 설정된다.
  2. 순방향 전달(Forward Pass):
    • 입력 이미지(또는 이전 층의 특징 맵)가 Convolutional Layer로 전달된다.
    • 각 필터가 입력 이미지 위를 슬라이딩하면서 합성곱 연산을 수행하여 특징 맵을 생성한다.
    • 생성된 특징 맵은 활성화 함수(예: ReLU)를 통해 비선형성이 추가된다.
  3. 손실 함수 계산(Loss Calculation):
    • 네트워크의 마지막 층(보통 완전 연결층)에서 출력과 실제 레이블을 비교하여 손실 함수(예: 분류 작업의 경우 교차 엔트로피 손실)를 사용해 손실 값을 계산한다.
    • 손실 함수는 예측 출력과 실제 레이블 간의 차이를 계산한다.
  4. 역전파(Backpropagation):
    • 손실을 최소화하기 위해 역전파 알고리즘이 사용된다.
    • 역전파 과정에서 손실 함수의 기울기(Gradient)가 네트워크의 각 층으로 전파된다.
    • Convolutional Layer에서는 필터의 기울기가 계산된다.
  5. 가중치 업데이트(Weight Update):
    • 계산된 기울기를 사용하여 필터의 값이 업데이트된다.
    • 경사 하강법(Gradient Descent)이나 그 변형(예: Adam, RMSprop) 알고리즘을 사용하여 필터 값을 조정한다.
    • 필터 값의 업데이트 공식은 다음과 같다:
      filter_new = filter_old−η X ∂Loss/∂filter​
      여기서 η는 학습률(learning rate), ∂Loss/∂filter는 필터 가중치에 대한 손실 함수의 기울기다.

예시 설명

간단한 시나리오를 상상해 보자. 3x3 크기의 단일 필터가 있는 Convolutional Layer가 5x5 크기의 작은 이미지에 적용된다고 가정하겠다. 학습 과정에서 필터가 어떻게 조정되는지 설명해 보겠다.

  1. 초기 필터 값:
      0.2   0.8 −0.5
    −0.1   0.9   0.4
      0.7 −0.2   0.3​​
  2. 순방향 전달:
    • 필터가 이미지에 적용되어 특징 맵을 생성한다.
    • 생성된 특징 맵은 네트워크를 통해 처리되어 최종 출력이 계산된다.
  3. 손실 함수 계산:
    • 예측 출력과 실제 레이블 간의 손실을 계산한다.
  4. 역전파 및 기울기 계산:
    • 손실 함수의 기울기가 역전파되고, 필터의 기울기가 계산된다.
    • 예를 들어, 필터의 기울기가 다음과 같다고 가정한다:
        0.01   0.03 −0.02
      −0.01   0.02   0.01
        0.05 −0.04   0.03​​
  5. 필터 값 업데이트:
    • 학습률 η=0.01로 필터 값을 업데이트한다. 업데이트 공식에 따라 새로운 필터 값을 계산한다:
      0.2−0.01⋅0.01             0.8−0.01⋅0.03       −0.5−0.01⋅(−0.02)
      −0.1−0.01⋅(−0.01)      0.9−0.01⋅0.02          0.4−0.01⋅0.01
      0.7−0.01⋅0.05           −0.2−0.01⋅(−0.04)     0.3−0.01⋅0.03​
    • 업데이트된 필터 값은 다음과 같다:
        0.1999   0.7997 −0.4998
      −0.0999   0.8998   0.3999
        0.6995 −0.1996   0.2997

요약하자면, Convolutional Layer의 필터는 학습 과정의 일부이다. 필터는 초기 값에서 시작하여 손실 함수의 기울기에 따라 반복적으로 조정되어 최적의 값을 찾는다. 이를 통해 CNN은 입력 이미지의 중요한 특징을 점점 더 잘 추출할 수 있게 된다.

'컴퓨터공학 > CNN' 카테고리의 다른 글

CNN 자바로만 구현하기  (0) 2024.08.18
CNN(Convolutional Neural Network)이란  (0) 2024.08.05