신경망 숫자 인식 · NeuroLab
신경망의 손글씨 숫자 인식: 손글씨 패드에 숫자를 쓰면 신호가 3D 신경망을 한 층씩 밝히며 답을 냅니다. 뉴런 하나의 가중치를 직접 그려 보고, 무작위 가중치에서 시작해 브라우저 안에서 현장 학습을 시키고, 합성곱 커널이 그림을 훑는 모습을 보고, 회전·이동·잡음 앞에서 AI가 어떻게 틀리는지 확인합니다.
단원 내용
이미지는 숫자다
오른쪽 손글씨 패드에 숫자를 하나 써 보세요. 숫자는 28 × 28개의 작은 칸으로 줄어들고, 각 칸이 하나의 픽셀입니다. 밝기는 0(검정)부터 1(흰색) 사이의 수로 나타냅니다. 블록이 높고 밝을수록 그 픽셀의 수가 큽니다.
그러니까 컴퓨터에게 이 그림은 그저 784개의 수입니다. 이제부터의 모든 '인식'은 이 784개의 수를 더하고 빼고 곱하고 나누는 일입니다.
그 전에 전처리 단계가 있습니다. 먼저 필적을 상자로 둘러싸고, 20 × 20 안에 들어가도록 줄인 뒤, '무게중심'이 한가운데 오도록 놓습니다. 학습에 쓰는 MNIST 데이터 세트(실제 손글씨 숫자 7만 장)도 이렇게 정리되어 있어서, 크기나 위치가 달라도 괜찮습니다.
뉴런 하나
뉴런은 한 가지 일만 합니다. 784개의 픽셀에 각각 가중치를 곱해 모두 더하고, 편향 b를 더해 z를 얻은 다음, 활성화 함수를 거쳐 출력 a로 바꿉니다.
바닥의 블록은 높이가 픽셀, 색이 가중치입니다. 파란색은 양의 가중치(여기에 획이 있으면 가점), 주황색은 음의 가중치(여기에 획이 있으면 감점)입니다. 큰 공으로 이어진 선이 밝을수록 그 픽셀의 기여가 큽니다.
오른쪽에서 붓을 고르고 바닥의 블록 위를 드래그해 '가중치를 그려' 보세요. '1'만 알아보는 뉴런을 설계해 봅시다. 가운데 세로줄은 파란색, 양옆은 주황색으로 칠한 뒤 '1 넣어 보기', '0 넣어 보기'로 확인하세요.
다층 신경망
많은 뉴런을 여러 층으로 늘어놓습니다. 첫째 층의 32개 뉴런은 각자 그림 전체를 보고, 둘째 층의 16개는 첫째 층의 결과를 봅니다. 마지막 10개 출력 뉴런은 각각 0부터 9를 나타냅니다. 출력은 softmax를 거쳐 확률이 되고, 가장 높은 것이 인식 결과입니다.
숫자를 쓰고 신호가 왼쪽에서 오른쪽으로 한 층씩 흘러가는 모습을 보세요. 연결선은 기여가 가장 큰 것만 그립니다. 파란 선은 '찬성', 주황 선은 '반대'입니다.
첫째 층의 블록 아무거나 클릭하면 그 위에 784개의 가중치로 만든 그림이 떠오릅니다. 이것이 그 뉴런이 찾는 획의 모양입니다. 이 가중치는 사람이 설계한 것이 아니라, 신경망이 손글씨 숫자 6만 장을 보고 스스로 배운 것입니다.
현장 학습
이번에는 신경망의 가중치가 모두 무작위 수라서 아무것도 할 줄 모릅니다. '학습 시작'을 누르면 정답이 달린 손글씨 숫자 3000장을 한 장씩 봅니다. 먼저 추측하고, 손실로 얼마나 틀렸는지 잰 다음, 손실이 작아지는 방향으로 모든 가중치를 조금씩 옮깁니다. 이것이 경사 하강법입니다.
첫째 층 위에 뜬 가중치 그림 32장을 보세요. 처음에는 눈보라 같은 잡음이지만, 학습이 진행되면서 서서히 획의 모양이 자라납니다. 오른쪽 곡선에서는 손실이 내려가고 정확도가 올라갑니다.
한 걸음에 얼마나 움직일지는 학습률이 정합니다. 너무 작으면 느리게 배우고, 너무 크면 골짜기 양쪽을 왔다 갔다 하다가 오히려 더 나빠지기도 합니다. 학습이 끝나면 일시 정지하고 손글씨 패드로 시험해 보세요.
합성곱 신경망
다층 신경망의 뉴런은 모두 그림 전체를 보기 때문에, 숫자가 조금만 움직여도 알아보지 못합니다. 합성곱 신경망은 생각을 바꿨습니다. 5 × 5 작은 창(커널)을 그림 위에서 한 칸씩 밀면서 곳곳에서 '내가 찾는 획이 여기 있나?'를 묻고, 그 결과를 모아 특징 맵을 만듭니다.
첫째 층에는 커널 6개가 있어 가로, 세로, 대각선 같은 단순한 획을 찾습니다. 풀링은 2 × 2마다 가장 큰 값만 남겨 맵은 작아지지만 특징은 남습니다. 둘째 층의 커널 12개는 단순한 획을 모서리와 곡선으로 조합하고, 마지막에야 어떤 숫자인지 판단합니다.
'스캔 애니메이션'을 본 다음, 아무 특징 맵이나 클릭해 그 커널을 보세요. 이 신경망은 다층 신경망보다 매개변수가 훨씬 적은데도 정확도는 오히려 더 높습니다.
AI도 틀린다
숫자를 회전하고, 구석으로 옮기고, 잡음을 더해 보면서 오른쪽의 확신도가 조금씩 무너지는 것을 보세요. 학습할 때 이런 그림을 본 적이 없어서 쉽게 틀립니다. 다층 신경망은 특히 위치에 민감하고, 합성곱 신경망은 조금 더 안정적이지만 틀리지 않는 것은 아닙니다.
'틀린 숫자 보기'를 눌러 테스트 세트에서 실제로 틀린 예를 넘겨 보세요. 사람도 망설일 만한 것도 있습니다. 그리고 손글씨 패드에 웃는 얼굴이나 글자를 그려 보세요. 0부터 9만 알고 '모르겠다'는 선택지가 없어서, 여전히 자신 있게 숫자 하나를 말합니다.
그래서 AI의 판단은 학습 데이터가 얼마나 고르게 갖춰졌는지에 달려 있고, 중요한 일은 여전히 사람이 확인해야 합니다.
다른 실험
- VoltLab 전기 실험대
- 등고선 3D 교실
- 대기 대순환 입자 교실
- 지구 운동 교실
- 조석의 원리 · TideLab
- 해륙의 변천
- 물순환 3D 지형 모형 · WaterCycle
- 세포 · 3차원 구조
- 현미경 실험대 · MicroLab
- 멘델의 완두 교배 실험 · PeaLab
- 세포의 에너지 화폐 · ATPLab
- DNA의 구조 · DNALab
- 체액성 면역 · ImmuneLab
- 식물의 일생 · PlantLab
- 원소 주기율표 · PeriodicLab
- 실험실 기체 제조 · GasLab
- 화학 분석 실험대 · AnalytLab
- 반응 메커니즘 · 분자 애니메이션
- 분자 모양 · VSEPR
- 원자 오비탈 · 전자 구름
- 화학 반응 · 미시 세계
- 입체 기하 · GeoSpace
- 원뿔 곡선 · ConicLab
- 함수 그래프 · FuncLab
- 작도 · ConstructLab
- 피타고라스 정리 · PythagoLab
- 재미있는 수학 · WonderLab
- 운동과 힘 · MotionLab
- 간단한 기계 · MachineLab
- 액체의 압력과 부력 · FloatLab
- 선저우 발사와 귀환 · RocketLab
- 열역학 · ThermoLab
- 열의 이동과 상태 변화 · HeatLab
- 광학 실험대 · OpticsLab
- 진동과 파동 · WaveLab
- 전기장과 자기장 · FieldLab
- 유명 전투 작전 사판 · WarTable
- 강역의 변천 · HistoryAtlas