Lecture/CS231n

CS231n 5강

BigJoo 2024. 1. 25. 16:10

이번 강의에서는 Convolution Layer에 대해서 배웁니다.

 

 

이전 시간에 배웠던 Fc Layer의 경우에는 32x32x3 형태의 3차원 이미지를 Flatten하여 3072x1차원의 벡터로 변형합니다. 그리고 10개의 class에 대한 10x3072의 크기를 갖는 가중치 w와의 내적을 통해 각 class에 대한 10개의 출력값을 얻습니다.

 

 

 

 오늘 배울 Convolution Layer의 경우, FC Layer와는 다르게 공간 구조를 유지한다는 차이점이 있습니다. FC Layer의 경우 32x32x3의 이미지를 3072x1의 1차원 벡터로 변형을 하였지만, Conv Layer는 32x32x3 형태를 유지합니다. 이후 다양한 크기의 필터와의 내적 연산을 통해 activation Map을 얻게 됩니다. 위 슬라이드의 경우 5x5x3 크기의 필터를 사용하여 최종적으로 28x28x1의 activation map을 얻게 됩니다.

 

 

ConvNet은 위 슬라이드 처럼 Conv Layer가 계층적으로 쌓여있는 구조를 갖고 있고, 자세한 구조는 Fc Layer처럼 Conv Layer 이후 활성함수를 배치시키게 됩니다. 각 계층은 여러개의 필터를 갖고 있고, 각각의 필터는 activation map을 만들게 됩니다. 결국 이 계층구조로 된 필터들을 학습하는 것이 ConvNet의 학습 방식입니다. 

 

 

초기 Layer의 필터들은 Edge와 같은 Low Level의 feature들을 표현합니다. 이후 Layer가 깊어질수록 더욱 복잡한 Featrue들을 얻게 됩니다. 이를 시각화 한것이 위 슬라이드이며, 이를 통해 현재 모델이 어떤 Feature를 학습하고 있는지 파악할 수 있습니다.

 

 

 

 위 슬라이드는 ConvNet의 구성을 보여주고 있습니다. Conv Layer와 활성함수를 거치면서 입력 이미지에 대한 Feature들을 포착하고, 최종적으로 Fc Layer를 사용하여 각 class에 대한 최종 점수를 얻게 됩니다.

 

 

output volume size를 계산하는 방법은 (Input size+ 2*Padding - filter size)/ stride + 1 입니다. 위 슬라이드를 예시로 본다면, 32x32x3의 Input을 5x5x10 필터를 사용했을 때, output volume size는 32x32x10입니다.

 

 

그렇다면 위와 같은 조건일 때 필요한 파라미터는 몇개일까요?
대답은 (5x5(필터 크기)x 3(채널 크기) + 1(bias)) *10(필터 갯수) = 760개 입니다. 

 

 

Conv Layer를 통해 나온 activation map의 각 뉴런들은 input의 작은 영역에 연결되어 있고, 모든 파라미터를 공유합니다. 

 

 

Pooling Layer는 activation map을 downsampling하는 역할을 합니다. activation map을 downsampling하면 파라미터 수 줄어들지만, 영역의 변화를 없앤다는 특징이 있습니다.

 

Pooling방식 중에 흔한 방식인 Max Pooling입니다. Max Pooling은 Filter size와 stride를 정하면 Conv Layer 필터와 같은 연산을 해주어 activation map을 downsampling 해줍니다.