본문 바로가기
Computer Vision

[EECS 498-007] lec7. Convolutional Networks

by se0_ing 2024. 8. 12.
반응형

 

 

 

*강의 영상*: https://www.youtube.com/watch?v=ANyxBVxmdZ0

 

 

 

 

 

이전 강의에서 기울기 계산을 효율적으로 수행하기 위한 역전파 알고리즘Computational Graph에 대해 알아보았다. 오늘은 딥러닝에서 중요한 주제 중 하나인 Convolutional Neural Networks, CNN에 대한 내용을 다루고 있다. 강의를 통해 CNN의 기본 개념부터 작동 원리, 다양한 레이어의 구성 요소까지 상세히 알아보자.

 

 

 

 

 

 

기존의 선형 분류기와 Fully Connected Neural Network은 이미지의 2D 공간 구조를 무시한다는 문제가 있다. 이미지를 1차원 벡터로 flatten한 후 이를 모델에 입력하는 방식은 이미지의 중요한 공간적 정보를 손실하게 만든다. 

이러한 문제를 해결하기 위해 새로운 layer들을 도입한 것이 CNN이다.

 

 

 

 


CNN은 이미지의 공간적 구조를 유지하면서 처리할 수 있는 모델이다. 이를 위해 Convolutional layer, Pooling layer, Normalization 등 다양한 추가적 layer를 도입한다.

 

간단하게 설명하자면, 컨볼루션 레이어는 filtering을 이용해 이미지를 처리하고, 풀링 레이어는 spatial downsampling을 수행하며, Normalization 레이어는 네트워크의 학습을 더 안정적으로 만드는 역할을 한다.

 

 

 

 

 

 

가장 먼저 Convolutional layer에 대해 자세히 살펴보자.


컨볼루션 레이어는 필터(또는 커널)를 사용하여 입력 이미지를 처리하고 새로운 텐서를 출력으로 생성한다. 필터는 작은 3D 텐서로, 입력 이미지의 각 위치에 맞추어 슬라이딩하며 각 위치에서 dot product ,내적을 계산하여 출력 텐서의 값을 생성한다.

 

필터의 깊이(채널 수)는 입력 이미지의 채널 수와 일치해야 한다. 이 과정에서 필터가 이미지를 순회하며 계산된 값들은 활성화 맵(activation map)이라 불리며, 이는 필터가 특정 패턴을 얼마나 잘 인식했는지를 나타낸다. 

 

 

 

 

 


컨볼루션 레이어는 필터 크기, 필터 개수, 패딩(padding), 스트라이드(stride) 등의 하이퍼파라미터로 구성된다. 패딩은 입력 이미지의 가장자리에 추가되는 픽셀을 의미하며, 주로 출력 이미지의 크기를 유지하기 위해 사용된다.

 

 

스트라이드는 필터가 이미지를 슬라이딩하는 간격을 조절하며, 슬라이드 할때 픽셀 몇개를 skip 할 것인가가 관건이다. 이는 출력 이미지의 크기를 줄이는 데 사용된다.

 

 

 

 

 

 

다음으로 Pooling layer에 대해 알아보자.

풀링 레이어는 공간적 다운샘플링을 수행하는 레이어로, 최대 풀링(Max Pooling)이나 평균 풀링(Average Pooling) 등이 있다.

 

특징으로는, 풀링 레이어는 학습 가능한 파라미터가 없으며, 모델의 복잡성을 줄이고 계산 효율성을 높이는 데 사용된다. 예를 들어, 2x2 커널과 스트라이드 2를 사용하는 최대 풀링은 입력의 각 2x2 블록에서 최대값을 선택하여 출력으로 전달한다.

 

이는 작은 공간 이동에 대한 invariance를 도입하여, 입력 이미지의 위치가 조금씩 변해도 출력 값이 크게 달라지지 않게 한다. 또한 max pooling을 할때 ReLU와 같이 비선형성이 추가되어 학습 능률이 올라가는 경우도 발견 되었다.

 

 

 

 

 

 

마지막으로 Normalization 파트를 살펴보자.


이곳에서 사용한 배치 정규화, Batch Normalization은 딥러닝 모델의 학습 속도를 높이고 안정성을 향상시키기 위해 도입된 기법이다. 이는 각 레이어의 출력을 정규화하여 평균이 0, 분산이 1이 되도록 조정한다.

 

이를 통해 학습 과정에서 입력 데이터의 분포 변화에 대한 민감도를 줄여 최적화를 더 쉽게 한다. 이 과정은 학습 속도를 높이고 더 높은 학습률을 사용할 수 있게 하며, 네트워크가 더 쉽게 수렴할 수 있도록 돕는다.

 

 

 

 

하지만, Batch Norm에는 장점인듯 단점이 존재하는데, 학습 중테스트 중다르게 작동한다는 것이다. 학습 중에는 mini-batch의 통계를 사용하고, 테스트 중에는 전체 학습 데이터의 통계값을 사용한다. 실제 practice에서 모드를 변경 안한다거나, 이 과정에서 버그가 발생하면 개발자들을 굉장히 애먹이는 특징인듯 하다.

 

 

 

 

 

 

 


마지막으로 CNN 아키텍처의 예제를 살펴보자.

 

LeNet-5은 1998년에 개발된 classic한 CNN 구조로, 여러 컨볼루션 레이어와 풀링 레이어를 사용하여 입력 이미지의 특징을 추출하고, 최종적으로 완전 연결층을 통해 분류를 수행하는 모델이다.

 

이 구조는 이미지의 공간적 정보를 유지하면서 점진적으로 추상적인 특징을 학습할 수 있도록 설계되었다. LeNet-5는 입력 이미지가 흑백 이미지를 사용하여 28x28 크기의 이미지를 가질 때, 첫 번째 컨볼루션 레이어에서 20개의 5x5 필터를 사용하여 28x28 크기의 출력 이미지를 생성한 후, 풀링 레이어를 거쳐 크기를 14x14로 줄이는 방식으로 아키텍처 process가 진행되면서 output size 즉 Spatial size는 줄어들지만, filter volume 즉 channel의 갯수가 증가하는 구조이다. 

It seems to be squeezing down this way and stretching up that way.

 

 

 

 

 

 

 

CNN은 다양한 구조적 구성 요소로 이루어져 있으며, 각각의 구성 요소를 어떻게 결합하느냐에 따라 성능이 달라진다. 예를 들어, 네트워크가 깊어질수록 기울기 소실 문제(vanishing gradient problem)가 발생할 수 있는데, 이를 해결하기 위해 배치 정규화와 같은 기법이 사용된다. 이와 같은 발전 과정에서 다양한 CNN 구조들이 등장했고, 이들은 각기 다른 방식으로 이미지의 특징을 추출하고 학습 성능을 최적화 할 수 있다. 다음 강의에서 이어 알아가보자.

 

 

 

 

 

 

 

 

 

 

 

...오늘은 CNN의 기본 개념부터 시작하여, 각 구성 Layer들과 주요 하이퍼파라미터, CNN 아키텍처의 일부를 상세하게 배워보았다. 

반응형