이 레슨과 관련된 학습 키워드
인공지능(AI) — 기계가 생각하는 법 → 딥러닝(Deep Learning) — 인공 신경망의 세계 → 합성곱 신경망(CNN) — 이미지를 이해하는 네트워크 → CNN 기초
합성곱 커널이 특징을 추출하는 방법과 풀링이 공간 차원을 줄이는 방법을 학습합니다.
nn.Linear(784, 128) → 파라미터 100,480개nn.Conv2d(1, 32, kernel_size=3, padding=1) → 파라미터 320개torchsummary로 확인: summary(model, (1, 28, 28))여러분, 28×28 흑백 이미지 하나를 Fully Connected 층에 넣으려면 어떻게 해야 할까요?
먼저 784개 픽셀을 1차원으로 쭉 펴야 합니다. 이 순간 이미지의 2차원 공간 구조가 완전히 사라집니다.
그림을 보세요. 왼쪽의 원본 이미지에서 가까이 있던 픽셀들이 1D로 펴지면서 아무 관계 없는 위치에 놓이게 됩니다.
FC 층은 모든 입력 뉴런이 모든 출력 뉴런과 연결되므로, 128개 뉴런만 써도 파라미터가 10만 개를 넘깁니다.
오른쪽 숫자를 보면, 784 곱하기 128은 100,352개입니다. 이게 바로 파라미터 폭발이에요.
이미지가 조금만 커져도 문제가 심각해집니다. 224×224 컬러 이미지면 입력이 150,528개로 늘어나죠.
여기에 256뉴런 FC를 연결하면 파라미터가 약 3,850만 개가 됩니다. 실용적이지 않습니다.
그림 아래쪽을 보시면, 또 다른 문제가 보입니다. FC는 위치 정보를 전혀 활용하지 못합니다.
이미지에서 고양이 귀가 왼쪽 위에 있든 오른쪽 아래에 있든, FC에게는 완전히 다른 패턴으로 보입니다.
같은 물체인데도 위치만 바뀌면 처음부터 다시 배워야 한다니, 매우 비효율적이죠.
이런 문제를 해결하기 위해 등장한 것이 바로 합성곱 신경망, CNN입니다.
컨브Conv 층은 작은 필터 하나를 이미지 전체에 슬라이딩하면서 적용합니다.
왼쪽 박스를 보면 3×3 필터 하나에 파라미터가 9개뿐입니다. FC의 10만 개와 비교해보세요.
필터가 이미지 전체를 훑으니, 고양이 귀가 어디에 있든 같은 필터로 감지할 수 있습니다.
이것이 CNN의 핵심 아이디어입니다. 공간 구조를 보존하면서 파라미터를 극적으로 줄이는 것이죠.
정리하면, FC의 세 가지 한계는 파라미터 폭발, 공간 정보 손실, 이동 불변성 부재입니다.
CNN은 지역 연결성, 파라미터 공유, 슬라이딩 윈도우라는 세 가지 원리로 이 문제를 해결합니다.
다음 슬라이드부터 합성곱 연산의 구체적인 동작을 하나씩 파헤쳐봅시다.
이번 레슨을 마치면, 여러분은 컨브Conv 층의 수학적 원리부터 파이토치PyTorch 구현까지 모두 이해하게 될 것입니다.
자, 그러면 합성곱이 어떻게 작동하는지, 필터가 슬라이딩하는 과정부터 시작하겠습니다.
Q: 에프씨 층으로도 이미지를 처리할 수 있는데 왜 씨엔엔을 써야 하나요?
어: 에프씨는 모든 픽셀-뉴런을 연결하여 파라미터가 폭발하고, 이미지를 1D로 펴면서 공간 정보를 잃습니다.
씨엔엔은 작은 필터를 공유하며 슬라이딩하므로 파라미터 수를 수백 배 줄이면서도 공간 구조를 보존하고 이동 불변성까지 얻습니다.