<합성곱 신경망의 합성곱층에서는 어떤 일이 벌어지는 걸까? (커널 사이즈, 스트라이드, 패딩에 관하여)>
● 합성곱층은 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)은 왜 하는 걸까요? 그것은 합성곱 연산을 거친 출력 이미지의 크기를 입력 이미지의 크기와 같게 유지하기 위해서입니다. 합성곱 연산을 거친 출력 이미지의 크기가 너무 작아지면 학습이 안되겠죠?
● 패딩을 활용해서 이미지 크기를 유지하며 합성곱층을 여러 개 사용하여 층수가 깊은 합성곱 신경망을 구성할 수 있게 됩니다.
● 글이 길었습니다만, 다음에는 합성곱층에서 벌어지는 일을 정리하고, 그 다음 층인 풀링층에서 벌어지는 일을 살펴보도록 하겠습니다.
● 좋은 하루 되십시오.
'인공지능 (AI)' 카테고리의 다른 글
37번째 이야기 - 풀링, 풀링 연산, 최대 풀링, 평균 풀링 (0) | 2024.06.02 |
---|---|
36번째 이야기 - 케라스, 스트라이드, 패팅, 손실함수, 풀링(pooling) (0) | 2024.06.02 |
34번째 이야기 - 합성곱, 커널, 입력 이미지, 가중합, 합성곱층 (0) | 2024.06.02 |
33번째 이야기 - 합성곱 신경망, CNN, 합성곱층, Convolution layer (0) | 2022.11.21 |
32번째 이야기 - 다중퍼셉트론, MLP, 합성곱 신경망, CNN, 다중퍼셉트론 단점 (0) | 2022.11.21 |
댓글