Group Study (2022-2023)/Machine Learning

[Machine Learning] 7주차 스터디 - PART 3: Convolutional Neural Network (2) / Side Project Team Building

박소윤15 2022. 11. 21. 13:27

목차

더보기

1. CNN

2. Convolution Layer
3. Pooling Layer
4. Fully Connected Layer

1. CNN

DNN의 문제점

  • 일반 DNS는 1차원 형태의 데이터를 flatten 시켜서 한 줄 데이터로써 처리한다.
  • 이 때, 이미지가 입력되는 경우 공간적/지역적 정보를 손실하고 추상화 과정이 없기 때무에 학습 시간과 성능 효율이 떨어진다.

CNN이란?

  • 1차원 데이터를 넘어서 이미지나 영상 데이터를 처리하는 모델이다.
  • 이를 위해 Convolution이라는 전처리 과정을 수행한다.
  • CNN은 이미지의 공간적/지역적 정보를 유지한 채 특징들의 채널을 쌓는다.
  • 따라서 이미지 전체가 아닌 부분을 집중하는 것, 한 픽셀과 주변 픽셀들의 연관성을 추출하는게 핵심이다.

2. Convolution Layer

Convolution layer의 작동원리

  • 주로 이미지를 입력으로 받는데 이때의 예시를 살펴보자.

  • 32*32 단위의 픽셀로 구성됐다. 이를 32*32 2차원 매트릭스로 표현할 수 있다.
  • 즉, 실제 CNN의 입력값은 실제 이미지가 아닌 매트릭스이다.
  • 채널은 이미지의 경우 RGB, 3가지 경우를 갖기 때문에 3이다. 흑백의 경우 1이 될 수도 있다.
  • 입력값(매트릭스)를 전체적으로 훑어 특징을 찾아내기 위해 필터를 사용한다.

  • 필터의 채널이 입력 이미지의 채널과 같아야 한다는 중요한 특징이 있다.
  • 필터는 매트릭스와 매트릭스 간의 Inner Product를 수행한다.
  • 입력값에서 필터를 가지고 각각 내적 연산을 해서 하나의 숫자를 만든다. 이를 상하좌우 전체적으로 이동하면서 계산하고 결과값을 모은다.

  • 그 결과, 32*32 매트릭스에서 28*28 크기로 축소됐음을 알 수 있다.

  • 각 특징별 필터를 가지고 이와 같은 과정을 반복하면 필터 개수만큼 피처맵이 여러 장 생긴다.

  • 즉, 출력 피처맵의 채널 수는 Convolution 필터의 개수와 같다는 특징이 있다.

Stride

  • 필터를 옆으로 얼마만큼 움직일건가를 말한다.
  • 그림과 같이 stride가 2라면 두칸씩 움직인다는 것이다.

Zero padding

  • Convolution의 결과를 살펴보면 32*32에서 28*28 크기로 축소됐다. 즉 이미지 정보에 손실이 생겼다는 뜻이다.
  • 이를 해결하기 위해 입력값에서 축소될 크기만큼 0으로 구성된 테두리를 이미지 테두리에 씌운다.

  • 즉, 32*32 매트릭스에 4*4만큼 Padding을 씌워서 필터를 적용했을 때 32*32 크기로 손실을 없앤다.

Activation Function

  • Relu를 사용하여 -1을 0으로 바꿔준다.

3. Pooling Layer

Convolution의 문제점

  • 입력값 하나의 이미지에서 필터를 적용해 결과값이 너무 많아졌다.
  • 때문에 결과값의 낮은 특징은 제거하고 높은 특징은 드러내기 위해 크기를 줄이는 Pooling을 수행한다.

Max Pooling

  • Max Pooling은 매트릭스에서 가장 큰 숫자를 뽑아 채널을 반으로 축소한다.

Average Pooling

  • Average Pooling은 매트릭스에서 평균값을 가지고 채널을 반으로 축소한다.

4. Fully Connected Layer

동작 과정 살펴보기

  • Max Pooling의 연산 결과를 입력값으로 생각해보자.

  • 2차원의 형태를 1차원으로, 벡터 형태를 만든다.
  • 이를 전부 연결해서 결국 2개의 클래스로 나타낸다. 이를 Softmax에 통과시켜 분류한다.