[Deep Learning] 컨볼루션 신경망 1

2 minute read


컨볼루션 신경망 (CNN)

컨볼루션 신경망(Convolutional Neural Network, CNN)은 동물의 시각피질의 구조에서 영감을 받아 만들어진 딥러닝 신경망 모델입니다.

동물의 시각피질은 시각 자극1차 시각피질을 통해서 처리한 다음, 2차 시각피질을 경유하여, 3차 시각피질 등 여러 영역을 통과하여 계층적으로 정보를 처리합니다.

이는 정보가 계층적으로 처리되어 가면서 점차 추상적인 특징이 추출되어 시각을 인식하는 것입니다.


이와 같이 컨볼루션 신경망컨볼루션 연산풀링 연산을 사용하는 여러 계층을 사용하여 이미지 데이터로부터 점차 추상적인 특징을 추출함으로써 분류/탐지/인식 등을 수행합니다.

컨볼루션 신경망의 전반부이미지 데이터의 특징 추출을 수행하고, 후반부추출된 특징을 이용하여 분류를 수행합니다.

image-20211113155642176


컨볼루션

컨볼루션 연산은 컨볼루션 계층에서 사용되는 대표적인 연산 중 하나압니다.

컨볼루션은 일정 영역의 값들에 대해 가중치를 적용하여 하나의 값을 만드는 연산입니다.

image-20211113155806908

y11 = w11x11 + w12x12 + w13x13 + w21x21 + w22x22 + w23x23 + w31x31 + w32x32 + w33x33 + w0


컨볼루션 연산에서 사용하는 필터(커널)은 2차원일 수도, 또는 그 이상의 다차원 배열 형태일 수도 있습니다. 이는 입력 데이터의 형상에 따라 달라지며 필터의 형상에 따라 컨볼루션 연산 결과의 배열 형상도 달라집니다.

👍 예. 컬러 영상 데이터

image-20211113160401890

image-20211113160412020


스트라이드와 패딩

컨볼루션 연산에서 사용하는 용어로 스트라이드패딩이라는 것이 있습니다.

  • 스트라이드: 컨볼루션 연산을 위해 한 번에 필터(커널)를 이동시키는 칸 수
  • 패딩: 컨볼루션 결과의 크기를 조정하기 위해 입력 배열의 둘레를 확장하고 0으로 채우는 연산

image-20211113160130195


특징 지도 (feature map)

컨볼루션 연산에서 사용하는 또 하나의 용어로 특징 지도(피처 맵)이라는 것이 있습니다.

특징 지도는 컨볼루션 연산의 결과를 만들어지는 행렬(배열)을 나타냅니다.

특징 지도의 원소값은 컨볼루션 필터에 표현된 특징을 대응되는 위치에 포함하고 있는 정도를 나타냅니다.

또한, k개의 컨볼루션 필터를 적용하면 k개의 2차원 특징 지도를 얻을 수 있습니다.



풀링

컨볼루션 신경망에서는 컨볼루션 연산 외에도 풀링 연산이라는 것을 사용합니다.

풀링 연산이란 일정 크기의 블록을 하나의 대표값으로 대체하는 연산을 말합니다.

대표적인 풀링 연산에는 최대 풀링, 평균 풀링, 확률적 풀링이 있습니다.


풀링 연산의 종류

최대값 풀링(max pooling)

지정된 블록 내의 원소들 중에서 최대값을 대푯값으로 선택

image-20211113160903883

평균값 풀링(average pooling)

블록 내의 원소들의 평균값을 대푯값으로 사용

image-20211113160938500

확률적 풀링

블록 내의 각 원소가 원소값의 크기에 비례하는 선택 확률을 갖도록 하고, 이 확률에 따라 원소 하나를 선택

image-20211113161019843

  • 학습 시: 확률적 풀링

    image-20211113161037066

  • 추론 시: 확률적 가중합 사용

    image-20211113161101801


풀링 연산의 역할

풀링 연산은 컨볼루션 연산 과정에서 만들어지는 특징 지도들의 크기를 축소함으로써 다음 단계에서 사용될 메모리 크기와 계산량을 감소시키는 역할을 합니다.

이로 인해 일정 영역 내에 나타나는 특징들을 결합하고, 위치 변화에 강건한 특징을 선택할 수 있게 됩니다.



컨볼루션 신경망의 구조

  • 특징 추출을 위한 컨볼루션 부분

    • Conv 층: 컨볼루션 연산

    • activation 함수: ReLU 연산

    • Pooling 층: 풀링 연산

  • 추출된 특징을 사용하여 분류 또는 회귀를 수행하는 다층 퍼셉트론 부분
    • 전방향으로 전체 연결된 FC(Fully Connected)층 반복
    • 분류의 경우 마지막 층에 소프트맥스 연산을 하는 층 추가
  • 컨볼루션 신경망 구조의 예
    • Conv-ReLU-Pool-Conv-ReLU-Pool-Conv-ReLU-Pool-FC-SM
    • Conv-Pool-Conv-Pool-Conv-FC-FC-SM
    • Conv-Pool-Conv-Pool-Conv-Conv-Conv-Pool-FC-FC-SM
    • Conv-ReLU-Pool-Conv-ReLU-Pool-Conv-ReLU-Pool-FC-FC-SM

image-20211117222116166

image-20211117222128593

  • 학습대상 가중치 개수 = (필터 크기 + 1) * (필터 개수)
  • 노드 개수 -> 이전 층의 노드 개수현재 층의 필터 크기, 개수, 스트라이드, 패딩에 의해 결정



Leave a comment