Convolution Neural Network; CNN

JJong·2024년 1월 2일
1

MACHINE LEARNING

목록 보기
5/7
post-thumbnail

What's Convolution Neural Network(CNN)?

  • Convolution Neural Network(CNN)란 Deep Neural Network(DNN) 에서 이미지나 영상같은 데이터를 처리할 때 발생하는 문제점을 보완하는 방법중에 하나이다. 데이터의 특징을 추출하여 특징들의 패턴을 파악하는 구조를 띄게 됩니다.
    즉, 이미지 공간 정보의 유실로 인한 정보 부족으로 인공신경망(ANN)이 특징을 추출 및 학습이 비효율적으로 이루어 지고 정확도를 높이는데 한계가 존재하기 때문에 이러한 단점을 보완하기 위해 등장한 모델이 Convolution Neural Network (CNN) 입니다.

  • 위의 두 개의 그림은 DNN과 CNN의 차이를 직관적으로 볼 수 있는 그림입니다.
    일반적인 CNN은 Convolution(합성곱)연산, Activation 연산, Pooling 연산의 반복으로 구성되어 있고, 일정 횟수 이상의 Feature Learning 과정 이후에는 Flatten 과정을 통해 1차원의 벡터로 변환되는 과정을 거치게 됩니다.

CNN의 구조

  • 입력 계층(Input layer) : 관측치의 속성값을 입력 받는 계층
  • 합성곱 계층(Convolution layer) : 자료의 공간 구조 상 특징(Feature)을 포착하는 계층
  • 풀링 계층(Pooling layer) : 합성곱 계층(Convolution)에서 추출한 특징의 대표값을 선별함으로써 자료 규모를 축소하는 계층
  • Fully-Connected layer

CNN 모델의 동작 과정

  • CNN의 동작과정에 들어가기 전에 해당 개념을 익히고 가면 이해하는데 도움이 됩니다.
    • 커널(kernal) : 입력에 곱하는 가중치
    • 필터(Filter) : 뉴런의 개수
    • 패딩(Padding) : Convolution의 결과 이미지가 Input 이미지의 크기와 같으면 편리할때가 많기 때문에 원래 이미지의 테두리에 0의 값을 갖는 픽셀을 덮어씌워 이미지의 크기를 같게 하는 것입니다. (Zero padding)
    • 스트라이드(Stride) : Filter가 건너뛰는 픽셀의 수

1. Convolution layer

  • Convolution layer(합성곱 층)은 특징을 추출하는 층으로 일정 영역의 값들에 대해 가중치를 적용하여 하나의 값을 만드는 연산이 진행됩니다. 이때 이 가중치 행렬을 Convolution Filter라 부릅니다. 또한, 가중치 필터 연산 후에 Activation Function을 적용하게 되는데 이때 CNN의 경우 대부분 ReLU를 이용하게 됩니다.

💡 위 이미지에서는 5x5 행렬의 이미지에 대해 3x3 필터를 1 stride(연산마다 필터가 움직이는 칸 수)로 특징을 추출하는 모습입니다. 이후 나온 결과를 Convolved Feature Map이라 합니다.

1-1. Padding

  • Convolution 연산에 있어 위에서 언급했듯, 이미지 크기를 조정하기 위해 입력 배열의 테두리를 확장 시키는 작업입니다.

  • 위의 스트라이드(Stirde)를 하는 과정의 이미지를 보시면 가장자리 부분은 이미지의 특징이 한번밖에 잡히지 않는 반면, 중앙에 있는 픽셀들은 중복되어 잡히게 됩니다. 이러한 과정에서 이미지 특징의 일부분을 놓칠 수도 있기에 패딩(Padding)이라는 작업을 수행합니다.

2. Pooling layer

  • 일정 크기의 블록을 통합하여 하나의 대표값으로 대체하는 연산으로 Convolution layer에서 출력된 Feature Map을 압축하여 특정 데이터를 강조하는 과정입니다.

💡 풀링 방식

  • Max Pooling : 블록 내의 원소들 중 최대값을 대표값으로 선택하는 풀링(CNN에서 대중적으로 사용하는 풀링)
  • Average Pooling : 블록 내의 원소들의 평균값을 대표값으로 하는 풀링
  • Stochastic Pooling : 블록 내 원소의 크기를 선택 확률로 변환 후 확률에 따라 선택하는 풀링
profile
please bbbbbbbbb 😂

0개의 댓글