[CS231n 5강] Convolutional Neural Networks

[CS231n 5강] Convolutional Neural Networks

Tags
AI
CS231n
Published
October 7, 2024
Author
JH
태그
종류
학문 분야

Convolutional Neural Networks

notion image
오늘은 CNN(합성곱 신경망)에 대해 알아볼 것이다.
Convolutional layer의 가장 큰 특징이자, Fully connected layer와 구분되는 특징은 기본적으로 “공간적 구조”를 유지한다는 사실이다.

A bit of history

Hubel & Wiesel의 연구

notion image
notion image
다시 1950년대로 돌아가 보면, Hubel과 Wiesel은 고양이의 뇌에 전극을 꽂아 일차 시각 피질의 뉴런에 관한 연구를 수행했다.
이 실험에서 뉴런이 oriented edges와 shapes 같은 것에 반응한다는 것을 알아냈다.
그리고 이 실험에서 내린 몇 가지 결론은 아주 중요했는데, 첫번째로 발견한 피질 내 서로 인접해 있는 세포들은 어떤 지역성을 띠고 있었다. 위 사진의 오른쪽 그림은 해당하는 spatial mapping을 볼 수 있다.
또한 이 실험에서 뉴런들이 계층 구조를 지닌다는 것도 발견했다. 상위의 cell들은 보다 단순한 구조들을 감지하고, 하위의 cell들은 좀 더 복잡한 구조들을 감지한다.

Convolution Layer

notion image
기존의 FC Layer가 입력 이미지를 길게 쭉 폈다면 이제는 기존의 이미지 구조를 그대로 유지하게 된다.
위 예시에서는 5x5x3 필터가 이미지를 슬라이딩 하면서 공간적으로 내적을 수행하게 된다.
notion image
notion image
이런 식으로 여러 개의 필터들을 사용해, 원하는 개수 만큼의 activation map들을 만들 수 있다.
notion image
위 사진과 같이, Conv layer들과 Activation function들을 번갈아 가며 쌓는 식으로 우리는 CNN을 구성할 수 있다. 중간에 Pooling layer들이 들어갈 수도 있다.
notion image
feature들을 시각화한 모습이다. 앞서 살펴본 Hubel과 Wiesel의 이론과 같이, 하위 계층으로 갈수록 더 자세한 영역까지 다루는 것을 확인할 수 있다.
notion image
CNN이 어떻게 수행되는지를 살펴보면, 입력 이미지는 여러 레이어들을 통과해 최종적으로는 Conv 출력 모두와 연결되어 있는 FC Layer을 이용해 최종 스코어를 계산한다.

A closer look at spatial dimension

notion image
Activation map이 생성되는 과정을 상세히 살펴보자면, 필터를 이미지의 왼상단에서 시작해 stride만큼 이동하여 해당 값들의 내적을 수행한다.
notion image
위의 예제의 경우 7x7 input에 3x3 filter를 stride 1만큼 씩 움직이므로, 5x5 output activation map을 얻게 될 것이다.
notion image
notion image
그러나 stride가 3인 경우 이미지가 딱 떨어지지 않는다. 모서리 부분은 어쩔 수 없이 일부 이미지가 비게 된다. 이때 padding 기법을 사용하게 된다.

Zero Padding

notion image
Zero Padding이란 양쪽 사이드에 zero 값을 둘러주어 이미지의 크기를 늘리는 것이다.
위와 같이 이미지가 딱 떨어지지 않는 상황이나, 갈수록 activation map의 크기가 작아지는 현상을 방지하기 위해서 사용한다.

Pooling layer

notion image
notion image
Pooling layer는 이미지의 크기를 줄이는 역할을 하며, 대표적으로 Max Pooling 기법을 많이 사용한다.