10. [딥러닝] CNN (Convolution Neural Network)

김범수·2022년 6월 2일
0

머신러닝, 딥러닝

목록 보기
9/10

CNN (Convolution Neural Network)

그림의 위쪽은 일반적인 신경망(Neural Network)으로 한개의 입력층과 여러개의 은닉층 그리고 최종 출력층으로 구성되어 있으며, Training Data를 입력으로 받아 Feed Forward를 수행한 후 손실함수 값이 최소값이 되도록 Optimizer를 이용하여 가중치와 바이어스를 업데이트하는 구조로 되어있습니다.

CNN (Convolution Neural Network)도 동작원리는 일반 신경망과 비슷하나 CNN의 Feed Forward 과정을 보시면 일반 신경망에서 은닉층이 수행하는 역할을 CNN에서는 컨볼루션층과 완전연결층이 수행합니다.

컨볼루션층

  • conv (컨볼루션, convolution)

입력데이터와 가중치들의 집합체인 다양한 필터와의 컨볼루션 연산은 통해 입력 데이터의 특징을 추출하는 역할을 수행합니다.

비디오 코덱에서도 자주 이용되었듯이 내적의 특성을 이용한 닮은점을 뽑아내는 컨볼루션 연산을 이용함을 확인할 수 있었습니다.

컨볼루션 연산 과정의 예시입니다.

컨볼루션 연산은 필터를 일정 간격(stride)을 이동해 가면서, 입력데이터와 필터에서 대응하는 원소끼리 곱한 후 그 값들을 모두 더해주는 연산입니다.

  • ReLU

ReLU는 일반 신경망에서 사용했던 활성화 함수 중 하나로 입력값이 0보다 크면 그대로 출력하고, 작다면 0을 출력하는 함수입니다. 최근에 sigmoid보다 ReLU가 많이 쓰이는 것으로 알고 있습니다.

  • pooling (풀링)

입력 정보를 최대값 or 최소값 or 평균값 등으로 압축하여 데이터 연산량을 줄여주는 역할을 수행합니다.

일반적으로 max pooling이 가장 많이 사용됩니다.

Convolution, ReLU, Pooling 과정을 종합해보면

  • Padding (패딩)

패딩이란 컨볼루션 연산을 수행하기 전에 입력 데이터 주변을 특정 값(예를들면 0)으로 채우는 것을 말하며, 컨볼루션 연산에서 자주 이용되는 방법입니다.

입력 데이터 크기 (H,W), 필터 크기 (FH, FW), 패딩 P, 스트라이드 S 일 때, 출력 데이터 크기 (OH, OW)

  • OH = (H + 2P - FH) / S + 1
  • OW = (W + 2P - FH) / S + 1
  • 특징 맵(Feature Map) 추출

앞서 과정에서 컨볼루션 층에서는  입력 데이터(A)에 대해 필터(F)와의 컨볼루션 연산 후 바이어스(b)를 더해준 결과 값인 특징 맵(C)을 ReLU로 출력(Z)하고 이후 pooling을 통해 출력(A)하는 과정을 살펴보았습니다.

이 과정에서 입력데이터와 필터와의 컨볼루션 연산을 통해 데이터 특징을 추출하여 특징 맵을 만드는 과정이 매우 중요하다고 볼 수 있습니다.

  • 특징 추출 과정

이미지 출처 : 처음 배우는 딥러닝 수학

위 그림은 입력 데이터 숫자 2에 대해 가로, 세로, 대각선의 3가지 필터를 적용하여 데이터를 추출하는 과정을 나타내고 있습니다.

컨볼루션 연산 결과인 특징 맵 값을 압축하고 있는 풀링 값을 보면 대각선 필터에 대한 풀링 값이 가로, 세로에 대한 풀링 값보다 큰 값으로 구성됨을 확인할 수 있습니다.

풀링 값이 크다는 것은, 해당 필터의 특징이 많이 포함되어 있는 것을 의미합니다. 즉, 풀링 값을 통해 데이터 특징을 추출할 수 있습니다.

=> 위의 예시를 보면 입력 데이터 '2'는 대각선 특징이 가로, 세로 특징보다 많이 포함되어 있으므로 이러한 특징을 추출하기 위해서는 대각선 필터가 유용함을 알 수 있습니다.

이와 같은 과정을 통해 입력 데이터와 필터와의 컨볼루션을 이용한 특징 맵의 분포를 Training하는 과정을 반복하여 해당 label에 대해 데이터의 특징을 학습하게 됨을 확인할 수 있었습니다.

출처 : 유튜브 NeoWizard 채널 머신러닝/딥러닝 강의

profile
iOS Developer

0개의 댓글