
CNN(합성곱 신경망): 컴퓨터는 어떻게 고양이를 알아볼까? (비전공자도 이해하는 딥러닝)
인공지능이 이미지를 인식하는 마법의 열쇠, CNN의 모든 것을 파헤칩니다. 픽셀 덩어리에서 의미를 찾아내는 컨볼루션(Convolution)과 풀링(Pooling)의 수학적 원리부터, LeNet, AlexNet, ResNet으로 이어지는 딥러닝의 진화 과정, 그리고 자율주행과 의료 영상 분석 등 실제 활용 사례까지 쉽고 깊이 있게 설명합니다.

인공지능이 이미지를 인식하는 마법의 열쇠, CNN의 모든 것을 파헤칩니다. 픽셀 덩어리에서 의미를 찾아내는 컨볼루션(Convolution)과 풀링(Pooling)의 수학적 원리부터, LeNet, AlexNet, ResNet으로 이어지는 딥러닝의 진화 과정, 그리고 자율주행과 의료 영상 분석 등 실제 활용 사례까지 쉽고 깊이 있게 설명합니다.
미로를 탈출하는 두 가지 방법. 넓게 퍼져나갈 것인가(BFS), 한 우물만 팔 것인가(DFS). 최단 경로는 누가 찾을까?

이름부터 빠릅니다. 피벗(Pivot)을 기준으로 나누고 또 나누는 분할 정복 알고리즘. 왜 최악엔 느린데도 가장 많이 쓰일까요?

CPU는 하나인데 프로그램은 수십 개 실행됩니다. 운영체제가 0.01초 단위로 프로세스를 교체하며 '동시 실행'의 환상을 만드는 마술. 선점형 vs 비선점형, 기아 현상(Starvation), 그리고 현대적 해법인 MLFQ를 파헤칩니다.

ChatGPT는 질문에 답하지만, AI Agent는 스스로 계획하고 도구를 사용해 작업을 완료한다. 이 차이가 왜 중요한지 정리했다.

사람에게 강아지 사진을 보여주면 0.1초 만에 "강아지네!"라고 대답합니다. 우리는 태어나서 수많은 강아지를 보았고, 눈(시각 세포)으로 들어온 빛의 정보를 뇌의 시각 피질이 순식간에 처리해서 패턴을 인식하기 때문입니다. 하지만 컴퓨터에게 사진은 그저 숫자(픽셀 값)들의 거대한 2차원 행렬일 뿐입니다. 가로 1000px, 세로 1000px의 컬러 사진은 컴퓨터 입장에서 3백만 개(1000 x 1000 x 3 RGB 채널)의 숫자 덩어리입니다. 이 숫자의 홍수 속에서 어떻게 "귀여운 강아지"라는 고차원적인 개념을 뽑아낼 수 있을까요?
과거(2012년 이전)에는 이 숫자들을 강제로 한 줄로 쫙 펴서(Flatten) 전통적인 인공신경망(DNN, Dense Neural Network)에 넣었습니다. 마치 1000조각짜리 퍼즐을 다 뜯어서 바닥에 일렬로 늘어놓고 "이게 무슨 그림이게?"라고 묻는 것과 같습니다. 이렇게 하면 "공간적 정보(Spatial Structure)가 파괴"됩니다. 이미지에서 '눈' 바로 옆에 '코'가 있다는 사실, 즉 픽셀 간의 거리가 중요한데, 한 줄로 펴버리면 그 위치 정보가 사라집니다. 강아지가 사진 왼쪽 구석에 있든 오른쪽 구석에 있든 똑같은 강아지인데, 컴퓨터는 이를 완전히 다른 데이터로 인식하게 되는 것이죠.
그래서 등장한 것이 CNN (Convolutional Neural Network, 합성곱 신경망)입니다. 이미지를 억지로 펴지 않고, "2차원 이미지 그대로 도장(Filter)을 찍어서 특징을 찾아내는 방식"입니다. 이것은 인간의 뇌가 시각 정보를 처리하는 방식(Receptive Field)을 모방한 혁신적인 아이디어였습니다.
CNN의 알파이자 오메가는 바로 필터(Filter 또는 Kernel)입니다. 보통 3x3 또는 5x5 크기의 작은 숫자 격자판인 이 필터가 원본 이미지 위를 미끄러지듯 이동합니다(Sliding Window).
필터는 이미지의 각 부분과 수학적인 연산(합성곱: 각 칸의 숫자를 곱해서 모두 더함)을 수행합니다. 이 과정은 마치 "숨은 그림 찾기"와 같습니다.
[[0,1,0], [0,1,0], [0,1,0]] 같은 모양의 필터가 지나가면, 이미지에서 세로선이 있는 부분만 값이 크게 나옵니다.CNN의 진정한 힘은 이 필터들이 층층이 쌓일 때 나타납니다.
이것이 바로 딥러닝(Deep Learning)입니다. 인간이 "여기엔 눈이 있고, 저기엔 코가 있다"라고 룰(Rule)을 짜주는 게 아니라, AI가 수만 장의 사진을 보며 스스로 "이 필터를 썼더니 고양이를 잘 맞추네?"라며 필터의 숫자(Weight)를 학습(Backpropagation)해 나가는 것입니다.
필터가 이동할 때 두 가지 중요한 설정값(Hyperparameter)이 있습니다.
스트라이드 (Stride, 보폭):
패딩 (Padding, 여백):
컨볼루션을 통해 엄청나게 많은 특징 지도(Feature Map)가 만들어집니다. 데이터가 너무 큽니다. 모든 픽셀 정보를 다 가지고 있으면 연산량이 너무 많아져서 슈퍼컴퓨터도 뻗어버립니다. 게다가 우리는 "강아지의 귀가 왼쪽에서 345번째 픽셀에 있다"는 TMI가 필요 없습니다. "왼쪽 위에 귀가 있다" 정도의 추상적인 정보면 충분합니다.
그래서 풀링(Pooling) 과정을 통해 이미지의 크기를 줄이고(Downsampling), 중요하지 않은 정보는 과감히 버립니다.
가장 많이 쓰이는 방식입니다. 특정 영역(예: 2x2)에서 가장 큰 값 하나만 남기고 나머지는 버립니다.
CNN은 하루아침에 완성된 것이 아닙니다. 수십 년간의 연구와 실패, 그리고 혁신의 결과물입니다.
Conv -> Pool -> Conv -> Pool -> FC라는 현대 CNN의 기본 구조를 정립했습니다.CNN은 단순히 수학적인 계산 방식이 아닙니다. 1960년대 허블(Hubel)과 비셀(Wiesel)이 고양이의 뇌 시각 피질을 연구하면서, "뇌의 뉴런은 전체를 한 번에 보는 게 아니라, 특정 방향의 선이나 모양에만 반응하는 뉴런들이 모여서 전체 이미지를 구성한다"는 것을 밝혀냈고 노벨상을 받았습니다. CNN은 이 생물학적 발견을 컴퓨터 과학으로 구현해낸 것입니다.
"부분을 모아서 전체를 이해한다." 이 간단하고 직관적인 아이디어가 컴퓨터에게 '눈'을 달아주었습니다. 이제 CNN은 자율주행 자동차의 눈이 되어 도로를 보고, 의사의 눈이 되어 엑스레이에서 암을 찾아내고, 공장에서 불량품을 걸러냅니다. 최근에는 Vision Transformer (ViT)라는 새로운 기술이 등장하여 CNN의 자리를 위협하고 있지만, 이미지의 지역적 특징(Local Feature)을 잡아내는 CNN의 능력은 여전히 독보적이며, 많은 경우 ViT와 결합하여 사용됩니다.
단순한 픽셀 덩어리에서 '의미(Semantics)'를 찾아내는 기술, 그것이 바로 CNN의 마법입니다.