전시실
#04 · 넷째 전시실
관람객 질문
"AI는 고양이를 어떻게 알아봐요? 사진에는 숫자가 없잖아요." (준이, 자기 고양이 사진을 보여 주며)
전시로 보여 줄 것
사진이 밝기 숫자의 격자라는 것을 확대해서 보여 준다. 작은 숫자 창(필터)이 그림 위를 한 칸씩 미끄러지며 선을 찾아내는 합성곱을 관람객이 직접 그림을 그려 확인하게 한다.
한빛과학관 특별전 «AI는 어떻게 생각하나» 준비실
셋째 전시실의 설명판을 넘긴 다음 날, 나래는 준이가 보내 준 고양이 사진을 준비실 큰 화면에 띄웁니다. 백 박사가 말합니다. "고양이 눈 근처를 계속 확대해 보세요."
두 번, 네 번, 열여섯 번. 확대할수록 부드럽던 털이 계단처럼 각지더니, 마침내 화면에 색칠한 네모들만 남습니다. 나래가 놀랍니다. "사진이 그냥 타일 바닥이네요." 백 박사가 고개를 끄덕입니다. "네모 하나하나가 픽셀이고, 컴퓨터에게는 그 네모의 밝기가 숫자 하나예요. 준이 말이 반은 맞아요. 사진에 x₁, x₂ 같은 숫자 두 개는 없어요. 대신 수백만 개가 있죠."
"그럼 그 숫자 수백만 개를 지난 시간의 신경망에 그대로 넣으면 되나요?" 나래가 묻습니다. 백 박사는 "그러면 곤란한 일이 두 가지 생깁니다"라고 답하고, 화이트보드에 3×3 크기의 작은 표를 그립니다. "그래서 이미지 AI는 작은 창으로 사진을 훑어요. 오늘 전시의 주인공은 이 아홉 칸짜리 숫자 창입니다."
이번 교시에서는 사진이 숫자의 격자라는 것을 확인하고, 작은 숫자 창(필터)을 그림 위로 미끄러뜨려 선과 무늬를 찾는 합성곱을 직접 그려 보며 익힙니다. 마지막에 그 창들을 여러 층으로 쌓으면 어떻게 '고양이'에 이르는지 봅니다.
디지털 사진은 아주 작은 네모 점, 픽셀(pixel) 을 바둑판처럼 늘어놓은 것입니다. 흑백 사진이라면 픽셀마다 밝기 숫자가 하나 있습니다. 보통 0(검정)부터 255(흰색)까지의 정수를 씁니다. 컬러 사진은 픽셀마다 빨강·초록·파랑의 세 숫자를 둡니다.
| 그림 | 픽셀 수 | 숫자 개수 |
|---|---|---|
| 이번 실습대의 그림판 (흑백, 칠함 1 / 빈칸 0) | 16 × 16 = 256 | 256 |
| 손글씨 숫자 그림 (흑백) | 28 × 28 = 784 | 784 |
| 휴대전화 사진 (컬러, 가로 4,000 × 세로 3,000) | 1,200만 | 3,600만 |
예를 들어 흑백 사진에서 검은 고양이 눈동자 가장자리의 4×4 칸을 확대하면 이런 숫자들이 들어 있을 수 있습니다. 오른쪽으로 갈수록 밝아지는 곳, 즉 어두운 눈동자에서 밝은 털로 넘어가는 경계입니다.
| 20 | 35 | 140 | 210 |
|---|---|---|---|
| 18 | 30 | 150 | 215 |
| 22 | 41 | 160 | 220 |
| 25 | 60 | 175 | 225 |
사람 눈에는 '경계'가 바로 보이지만, 컴퓨터에게는 "왼쪽 두 열은 작고 오른쪽 두 열은 크다"는 숫자의 차이만 있습니다. 이 차이를 찾아내는 것이 4-2절의 필터입니다.
컴퓨터가 받는 것은 이 숫자 목록뿐입니다. '고양이'라는 이름표도, '귀'나 '수염'이라는 설명도 없습니다. 이 숫자 덩어리에서 고양이를 알아보는 것이 이미지 AI의 일입니다.
3교시의 신경망에 픽셀을 그대로 넣으면 무엇이 곤란할까요? 백 박사가 말한 두 가지입니다.
그래서 이미지를 다루는 신경망은 다른 방법을 씁니다. 작은 창 하나로 사진 전체를 훑는 것입니다.
필터(filter) 는 3×3처럼 작은 숫자 표입니다. 그림 위의 3×3 칸에 필터를 겹쳐 대고, 겹친 칸끼리 곱해서 모두 더합니다. 결과는 숫자 하나입니다. 3교시의 가중합과 똑같은 계산입니다. 필터의 아홉 숫자가 가중치이고, 창 안의 아홉 픽셀이 입력입니다. 필터는 입력 아홉 개짜리 뉴런인 셈입니다.
이번 교시의 '세로 선 찾기' 필터는 이렇습니다. 가운데 열은 2, 양옆 열은 −1입니다.
| −1 | 2 | −1 |
|---|---|---|
| −1 | 2 | −1 |
| −1 | 2 | −1 |
이 필터를 세 가지 창에 대 봅시다(1 = 칠한 칸, 0 = 빈 칸).
| 창 안의 모습 | 한 줄의 계산 | 세 줄 합 |
|---|---|---|
| 가운데에 세로 선 (줄마다 0, 1, 0) | 0×(−1) + 1×2 + 0×(−1) = 2 | 6 |
| 왼쪽 가장자리에 세로 선 (줄마다 1, 0, 0) | 1×(−1) + 0×2 + 0×(−1) = −1 | −3 |
| 가운데 줄에만 가로 선 (가운데 줄 1, 1, 1) | 가운데 줄 −1 + 2 − 1 = 0, 나머지 0 | 0 |
| 아홉 칸 모두 칠함 | 줄마다 −1 + 2 − 1 = 0 | 0 |
필터는 자기와 닮은 무늬를 만나면 큰 값을 냅니다. 세로 선이 창 한가운데를 지나면 6으로 가장 크고, 선이 옆으로 비켜 있으면 음수, 가로 선이나 고르게 칠한 면에는 0입니다. 필터 숫자를 모두 더하면 0이라서, 무늬가 없는 고른 면에서는 아무 반응도 하지 않습니다.
필터를 바꾸면 찾는 무늬가 바뀝니다.
| 필터 | 숫자 | 하는 일 |
|---|---|---|
| 세로 선 찾기 | 열마다 −1, 2, −1 | 세로 획에서 크게 반응 |
| 가로 선 찾기 | 행마다 −1, 2, −1 (세로 선 필터를 눕힌 것) | 가로 획에서 크게 반응 |
| 흐리게 | 아홉 칸 모두 1/9 | 주변 아홉 칸의 평균. 획이 번진다 |
| 날카롭게 | 가운데 5, 위·아래·왼쪽·오른쪽 −1, 모서리 0 | 가운데와 이웃의 차이를 키워 경계를 또렷하게 |
사진 편집 앱의 '선명하게', '흐리게' 버튼도 이런 필터를 사진 전체에 대는 방식으로 작동합니다.
백 박사의 한마디
필터는 '고양이 귀를 찾아라' 같은 명령이 아니에요. 그냥 숫자 아홉 개입니다. 무늬가 닮았을 때 곱셈 결과가 커질 뿐이에요.
필터를 그림의 한 곳에만 대면 그 한 곳의 답만 나옵니다. 그래서 필터를 왼쪽 위에서 시작해 한 칸씩 미끄러뜨리며 모든 자리에 댑니다. 자리마다 나온 숫자를 같은 위치에 적으면 새 격자가 하나 생깁니다. 이것을 특징 지도(feature map) 라고 하고, 이 미끄러뜨리며 곱해 더하는 계산을 합성곱(convolution) 이라고 합니다.
핵심은 모든 자리에 같은 필터를 쓴다는 점입니다. 세로 선이 그림 왼쪽에 있든 오른쪽에 있든 같은 필터가 같은 값으로 찾아냅니다. 4-1의 두 번째 곤란이 이렇게 풀립니다. 첫 번째 곤란도 풀립니다. 필터 하나는 그림 크기와 상관없이 숫자 9개뿐입니다.
아래 실습대 왼쪽은 16×16 그림판입니다. 칠한 칸이 1, 빈 칸이 0입니다. 오른쪽은 특징 지도로, 양수는 남색, 음수는 주황, 0은 회색이고 값의 크기가 클수록 진합니다. '필터 밀기'를 누르면 노란 테두리의 3×3 창이 왼쪽 위부터 한 줄씩 미끄러지고, 특징 지도가 한 칸씩 채워집니다. 그림 밖은 0으로 보기 때문에 가장자리에서도 창을 댈 수 있고, 특징 지도도 16×16입니다. 오른쪽 조작판에는 지금 고른 필터의 숫자 표와, 지금 칸에서 '그림 값 × 필터 숫자'를 더하는 계산이 나옵니다. 그림판은 마우스나 손가락으로 칠하고 지울 수 있고, 키보드로는 화살표로 옮겨 스페이스로 칸을 바꿉니다.
그림 (입력)
특징 지도 (출력)
| −1 | 2 | −1 |
| −1 | 2 | −1 |
| −1 | 2 | −1 |
'필터 밀기'를 누르면 3×3 창이 왼쪽 위부터 한 칸씩 미끄러지며 특징 지도를 채웁니다.
실습대에서 본 것을 정리합니다.
특징 지도는 '어디에 무엇이 있는가'의 지도입니다. 세로 선 필터의 지도는 "세로 획이 여기, 여기에 있다"고 말합니다. 원래 그림의 밝기 숫자보다 한 단계 정리된 정보입니다.
필터 하나는 짧은 선 하나밖에 못 찾습니다. 고양이에 이르려면 두 가지가 더 필요합니다.
첫째, 한 층에 필터를 여러 개 둡니다. 세로, 가로, 비스듬한 선, 밝음에서 어두움으로 바뀌는 경계 등 필터마다 특징 지도가 하나씩 나옵니다.
둘째, 특징 지도 위에 다시 필터를 댑니다. 둘째 층의 필터는 픽셀이 아니라 '세로 선 지도'와 '가로 선 지도'를 함께 보고, 두 선이 만나는 모서리나 둥글게 이어지는 곡선에 반응할 수 있습니다. 셋째 층은 모서리와 곡선의 조합으로 눈, 귀, 수염 같은 부분에, 그다음 층은 부분들의 배치로 얼굴이나 몸 전체에 반응합니다. 층 사이사이에는 지도를 절반 크기로 줄이는 단계(풀링, pooling)를 넣어, 뒤쪽 층일수록 창 하나가 사진의 더 넓은 영역을 보게 합니다.
| 층 | 무엇에 반응하나 (예) |
|---|---|
| 첫 층 | 짧은 선, 경계, 색의 변화 |
| 중간 층 | 모서리, 곡선, 털 같은 결 |
| 뒤쪽 층 | 눈, 귀, 바퀴 같은 부분 |
| 마지막 | '고양이' 쪽 점수, '개' 쪽 점수 |
이런 구조의 신경망을 합성곱 신경망(convolutional neural network, CNN) 이라고 부릅니다. 마지막 층의 점수를 3교시처럼 비교해, 가장 높은 이름표를 답으로 냅니다.
그렇다면 그 많은 필터의 숫자는 누가 정할까요? 실습대에서는 사람이 '세로 선 찾기'를 골랐습니다. 실제 합성곱 신경망에서는 필터의 숫자도 학습으로 정합니다. 처음에는 무작위 숫자로 시작해, 2교시와 3교시처럼 사진을 틀린 만큼 경사하강법으로 아홉 숫자를 조금씩 고칩니다. 학습이 끝난 신경망의 첫 층을 들여다보면, 사람이 손으로 만든 것과 비슷한 선·경계 필터가 저절로 생겨 있는 경우가 많다고 알려져 있습니다. 뒤쪽 층이 무엇에 반응하는지는 이렇게 깔끔하게 읽히지 않을 때가 많습니다.
| 용어 | 쉬운 말 | 실제 AI에서는 |
|---|---|---|
| 픽셀 (pixel) | 그림을 이루는 작은 네모 점 하나 | 사진 한 장에 수백만 개 |
| 필터 (filter) | 무늬를 찾는 작은 숫자 창 | 3×3 같은 작은 크기를 많이 쓰고, 숫자는 학습으로 정한다 |
| 합성곱 (convolution) | 필터를 한 칸씩 미끄러뜨리며 곱해 더하기 | 이미지 AI 계산의 대부분 |
| 특징 지도 (feature map) | 필터가 반응한 자리를 적은 새 격자 | 층마다 필터 수만큼 나온다 |
| 풀링 (pooling) | 지도를 줄여 더 넓게 보게 하기 | 층 사이에 넣는다 |
| 합성곱 신경망 (CNN) | 합성곱 층을 여러 겹 쌓은 신경망 | 사진 분류, 얼굴 찾기, 의료 영상 분석 등 |
실습대는 16×16 흑백 그림에 필터 하나였습니다. 실제 이미지 인식 신경망은 컬러 사진을 받아 층을 수십 개, 많게는 백 개 넘게 쌓습니다. 한 층의 필터는 수십–수백 개, 많게는 수천 개에 이르고, 학습할 숫자는 모두 합쳐 수백만–수억 개입니다. 그래도 한 번의 계산은 실습대와 똑같습니다. 창을 대고, 곱하고, 더하고, 옆으로 한 칸.
전시 설명판
컴퓨터에게 사진은 숫자의 격자입니다. 휴대전화 사진 한 장은 숫자 수천만 개입니다.
필터는 3×3 같은 작은 숫자 창입니다. 그림에 대고 곱해서 더하면, 자기와 닮은 무늬에서 큰 값이 나옵니다.
필터를 한 칸씩 미끄러뜨리며 모든 자리에 대는 것이 합성곱입니다. 그 결과가 '어디에 무엇이 있나'를 적은 특징 지도입니다.
층을 쌓으면 선이 모양으로, 모양이 부분으로, 부분이 물체로 이어집니다.
필터의 숫자는 사람이 아니라 학습이 정합니다. 그래서 AI가 무엇을 보고 판단하는지 늘 확인해야 합니다.
그림판 전시대를 시험하던 준이가 '고양이 얼굴' 예시에 수염을 몇 줄 더 그려 넣고는 묻습니다. "사진은 숫자라는 거 알겠어요. 그럼 글자는요? 제가 챗봇한테 '고양이'라고 쓰면, AI는 그게 무슨 뜻인지 알아요?" 나래가 백 박사를 쳐다봅니다. 백 박사가 답합니다. "단어도 숫자가 됩니다. 다만 사진처럼 밝기를 재면 되는 게 아니라서, 숫자를 붙이는 방법이 꽤 재미있어요." 5교시에서는 단어를 숫자 목록(벡터)으로 바꾸고, 뜻이 비슷한 단어가 가까이 모이는 '의미 공간'을 지도로 그려 봅니다.
새 교시·새 강의 소식 받기
이 강의에 새 교시가 더해지거나 이어지는 강의가 열리면 이메일로 알려 드려요.
R
ReflexKR
눌러 보며 배우는 파이썬과 Reflex. 모든 예제는 Reflex 0.10.0에서 직접 실행해 확인했습니다.
ReflexKR은 배너 광고 없이 무료로 운영돼요. 도움이 되셨다면 커피 한 잔으로 응원해 주세요.
© 2026 ReflexKR · Since 2026 · CC BY-NC 4.0
질문과 답변
이 교시에서 궁금한 점을 남겨 주세요. 모든 언어 페이지의 질문이 함께 모입니다.