본문 바로가기
인공지능 (AI)

35번째 이야기 - 커널 사이즈, 스트라이드, 패딩, 합성곱 신경망

by Ψβ⅓ 2024. 6. 2.

<합성곱 신경망의 합성곱층에서는 어떤 일이 벌어지는 걸까? (커널 사이즈, 스트라이드, 패딩에 관하여)>

합성곱층은 CNN의 은닉층입니다. , 특징 학습이 이루어지는 곳이죠. 합성곱 필터의 개수(filters)를 늘리면 MLP(다층 퍼셉트론)의 은닉층의 개수를 증가시킨 것과 같으므로, 더욱 복잡한 패턴을 탐지하며 학습할 수 있게 됩니다.

 

합성곱 필터 계산 모형

 

 

합성곱 필터의 개수는 은닉층의 개수를 의미합니다.

커널 크기(kernel_size)는 말 그대로 합성곱 필터인 커널의 크기를 의미합니다. 커널은 가중치가 담긴 행렬이며, 입력 이미지 위를 돌아다니면서 특징을 추출하는 역할을 한다고 말씀드렸습니다. 보통 커널 크기(kernel_size)는 합성곱 필터의 크기*높이를 뜻합니다.

 

커널 크기

 

 

직관적으로 봤을 때, 커널의 크기가 작을수록 전체 이미지를 여러 부분 중첩하며 수용 범위를 넓혀 특징을 추출할 수 있기 때문에 디테일한 부분까지 잡아낼 수 있을겁니다. 반대로 커널의 크기가 클수록 디테일이 좀 약해질 겁니다.

합성곱 커널은 곧, 신경망 학습의 대상인 가중치라 말씀드렸습니다. 커널의 크기가 클수록 계산 복잡도는 증가하므로 과적합을 일으킬 위험이 커집니다. 그래서 대부분 최소 2 × 2, 최대 5 × 5 사이즈의 커널 사이즈(정사각형)를 세팅합니다.

스트라이드(strides)는 뭘까요? 스트라이드(strides) 커널(=필터)이 입력 이미지를 한 번에 이동하는 픽셀의 수를 의미합니다. 만약 필터가 입력 이미지를 한번에 한 픽셀씩 이동하면 스트라이드 값은 1입니다. 한 번에 두 픽셀(=두칸)을 건너 뛴다면 스트라이드 값은 2가 되겠죠?

스트라이드(strides)3 이상을 잘 적용하지 않습니다. 여러 픽셀을 건너뛰게 되면 출력의 크기가 작아지기 때문에 그렇습니다.

아래의 예제는 스트라이드가 2일 경우에 5 × 5 이미지에 합성곱 연산을 수행하는 3 × 3 커널의 움직임을 보여줍니다. 최종적으로 2 × 2의 크기의 특성 맵을 얻습니다.

 

스트라이드 예시

 

 

만약, 합성곱 층을 여러개 쌓았다면 최종적으로 얻은 특성 맵은 초기 입력보다 매우 작아진 상태가 되버립니다. 합성곱 연산 이후에도 특성 맵의 크기가 입력의 크기와 동일하게 유지되도록 하고 싶다면 패딩(padding)을 사용하면 됩니다.

패딩(Padding)은 우리가 입는 패딩 점퍼를 생각하면 쉽습니다. 흔히 제로 패딩(Zero-padding)을 많이 하는데 이미지 둘레에 패딩 점퍼처럼 픽셀값이 0인 픽셀들을 추가로 감싸 덧붙이는 것을 말합니다.

 

 

패딩 전 과 패딩 후

 

 

,패딩(Padding)은 왜 하는 걸까요? 그것은 합성곱 연산을 거친 출력 이미지의 크기를 입력 이미지의 크기와 같게 유지하기 위해서입니다. 합성곱 연산을 거친 출력 이미지의 크기가 너무 작아지면 학습이 안되겠죠?

패딩을 활용해서 이미지 크기를 유지하며 합성곱층을 여러 개 사용하여 층수가 깊은 합성곱 신경망을 구성할 수 있게 됩니다.

글이 길었습니다만, 다음에는 합성곱층에서 벌어지는 일을 정리하고, 그 다음 층인 풀링층에서 벌어지는 일을 살펴보도록 하겠습니다.

좋은 하루 되십시오.

댓글