단원 목록
인공지능 기초 · 2단원 · 17차시

인공지능과 학습

1단원에서는 사람이 규칙을 적어 주었습니다. 이 단원은 그 규칙을 기계가 데이터에서 스스로 찾아내게 합니다. k-NN·경사하강법·k-평균·퍼셉트론·역전파·합성곱을 남의 라이브러리 없이 직접 짜서 돌려 봅니다. 열일곱 차시 모두 손으로 조작하는 시뮬레이터가 있습니다.

📦 데이터🧹 전처리 🧮 알고리즘📊 평가 🧠 신경망👁️ 딥러닝
💡

1단원에서 무엇이 바뀌는가

규칙을 누가 만드느냐 — 그 하나가 바뀝니다.

1단원 — 탐색과 추론2단원 — 학습
규칙을 만드는 이사람이 적는다기계가 데이터에서 찾는다
필요한 것문제를 상태·행동·목표로 옮길 눈데이터, 그리고 그 데이터가 세상을 닮았는지 보는 눈
잘했는지 재는 법최단인가 — 답이 정해져 있다테스트 데이터에서 몇 %인가 — 답이 하나가 아니다
가장 큰 함정어림을 부풀리면 최단을 잃는다훈련 정확도 100%가 나쁜 소식일 수 있다

1차시가 그 전환을 몸으로 겪게 합니다. 스팸 필터를 규칙으로 직접 짜다가 실패합니다. 실패하는 것이 목적이에요 — 키워드를 늘릴수록 「장학금 무료 특강 안내」 같은 정상 메일이 함께 잡히거든요. 교과서를 만들며 후보 낱말 조각 2,497개를 전부 시험해 봤는데, 규칙으로 도달할 수 있는 최고는 44건 중 43건이었습니다. 100%는 원리적으로 불가능합니다.

💡 이 단원의 약속

1단원과 같습니다 — 모든 숫자는 실제로 돌려서 나온 값입니다. 게다가 이 단원은 시뮬레이터와 파이썬 코드가 같은 값을 냅니다. 화면에서 적은 값과 코드가 찍는 값이 다르면, 둘 중 하나를 잘못 만진 것입니다.

🔗

앞 차시의 코드가 뒤 차시의 도구가 된다

사슬이 넷 있습니다. 셋은 코드를 그대로 물려주고, 하나는 생각의 모양만 물려줍니다.

📐 거리 사슬 — 5차시 → 8차시 → 11차시

5차시에서 단위를 맞추고 거리를 재는 함수를 만듭니다(dist·minmax_fit). 8차시가 그 거리로 k-NN을 만들고, 11차시가 그 k-NN을 도구 삼아 과적합을 숫자로 봅니다.

📉 경사 사슬 — 9차시 → 13차시 → 14차시 개념만

9차시에서 '예측 → 오차 → 기울기 → 조금 밀기'라는 고리를 배웁니다. 13차시의 퍼셉트론도, 14차시의 역전파도 같은 모양의 고리를 돕니다. ⚠️ 다만 코드는 서로 다릅니다 — 계단 함수와 시그모이드는 기울기를 구하는 법이 아예 달라요. 이어지는 것은 고리의 모양이지 함수가 아닙니다.

🧠 신경망 사슬 — 14차시 → 15차시

14차시에서 만든 train()·forward()·predict()를 15차시가 한 글자도 고치지 않고 다시 싣습니다. 바뀌는 것은 데이터뿐이에요 — 그것이 15차시의 논지입니다.

📊 평가 사슬 — 11차시 → 12차시 → 15차시

11차시에서 훈련과 테스트를 가르고, 12차시에서 네 칸(혼동행렬)으로 다시 채점하는 법을 배웁니다. 15차시가 자기가 만든 신경망을 그 넷으로 잽니다.

ℹ️ 코드가 앞 차시와 똑같이 생긴 이유

뒤 차시의 코드 맨 위에 # ───── 8차시에서 가져온 부분 — 고치지 않는다 ───── 라고 적힌 덩어리가 있습니다. 브라우저의 파이썬은 페이지마다 새로 시작하므로, 앞 차시에서 만든 함수가 다음 쪽까지 살아 있지 않거든요. 그래서 매번 다시 싣습니다. 그 덩어리는 앞 차시와 글자 하나까지 같습니다 — 두 쪽을 나란히 놓고 비교해 보세요.

⚠️ 다만 경사 사슬은 다릅니다. 9차시·13차시·14차시는 고리의 모양만 같고 코드는 서로 다릅니다. 퍼셉트론은 계단 함수를, 14차시는 시그모이드를 쓰거든요 — 기울기를 구하는 방법 자체가 다릅니다.

🎯

이 단원의 성취기준

여섯 기준에 17차시를 3·3·4·2·2·3으로 나누어 배정했습니다.

12인기02-01

인공지능에서 데이터의 중요성을 이해하고, 문제 해결에 필요한 데이터를 선정하여 수집한다.

1~3차시
12인기02-02

수집한 데이터를 문제 해결에 적합한 형태로 전처리한다.

4~6차시
12인기02-03

다양한 기계학습 알고리즘의 특성을 이해하고, 문제 해결에 적합한 알고리즘을 선정한다.

7~10차시
12인기02-04

기계학습을 적용한 모델을 구현하고 성능을 평가한다.

8~9 · 11~12차시
12인기02-05

인공신경망의 개념과 구조를 이해하고, 딥러닝의 활용 분야를 탐색한다.

13~15 · 17차시
12인기02-06

딥러닝을 활용하여 실생활 및 다양한 학문 분야의 문제를 해결하고, 성능을 평가한다.

15~17차시
⚠️ 15차시가 이 단원의 산출물입니다

12인기02-06이 못박은 동사는 "문제를 해결하고, 성능을 평가한다"입니다. 읽고 이해하는 것으로는 채울 수 없어요. 15차시가 그 동사를 수행하는 자리입니다 — 14차시에서 만든 신경망을 한 글자도 고치지 않고 가져와, 데이터만 실제 문제로 바꾸고, 12차시의 네 칸으로 잽니다. 이 차시를 건너뛰면 단원 전체가 기준을 못 채웁니다.

📖

차시 목록

한 차시는 40분입니다 — 여는 장면 5분 · 개념 12분 · 손으로 15분 · 정리 8분.

1차시

규칙을 다 적을 수 있을까 — 스팸 필터를 짜 보고 포기하기

낱말 조각 2,497개를 전부 시험해도 44건 중 43건에서 막힙니다. 100%는 왜 불가능할까요.

02-01✉️ 규칙 편집기🐍 전수 탐색
→
2차시

무엇을 맞히고, 무엇으로 맞힐까 — 급식 잔반으로 배우는 문제 정의

「잔반 kg」을 특성에 넣으면 정확도가 100%가 됩니다. 왜 그것이 반칙인지 직접 밟아 봅니다.

02-01🧺 특성 고르기 판🐍 상관계수·기준선
→
3차시

데이터가 세상을 닮지 않으면 — 전체 85%가 누구에겐 20%

표집을 바꾸는 1,040가지를 다 해 봐도 격차를 없애면서 성능을 지키는 길은 없습니다.

02-01⚖️ 표집 저울🐍 집단별 정확도
→
4차시

빠진 값과 튀는 값 — 키가 1750cm인 학생을 어떻게 할까

버릴까 채울까 둘까. 넷을 다 해 보고 평균과 중앙값이 다르게 흔들리는 것을 봅니다.

02-02📋 데이터 표 편집기🐍 IQR·z 점수
→
5차시

센티미터와 걸음 수를 나란히 — 단위를 맞추는 일

정규화 하나로 가장 가까운 이웃이 뒤바뀝니다. 여기서 만든 거리 함수를 8·11·15차시가 씁니다.

02-02📐 정규화 산점도🐍 거리 함수
→
6차시

출석 번호로 시험 점수를 맞힐 수 있을까 — 쓸모 있는 특성 고르기

쓸모없는 특성은 그냥 무시되지 않습니다. 훈련만 오르고 테스트가 내려갑니다.

02-02🎛️ 특성 스위치판🐍 상관 순위
→
7차시

정답표가 있는가 — 학습을 가르는 하나의 질문

지도·비지도·강화. 상벌만으로 배우는 격자를 직접 돌려 정답표 없이 배우는 것을 봅니다.

02-03🤖 상벌로 배우는 격자🐍 시행착오
→
8차시

가까운 것끼리 — 이웃 몇 명에게 물어볼 것인가

k를 키우면 판정 경계가 매끈해집니다. 5차시의 거리 함수를 그대로 받아 k-NN을 완성합니다.

02-03·04🌱 씨앗 판별기🐍 k-NN 구현
→
9차시

선을 긋는 법을 스스로 — 손실이 줄어드는 쪽으로

직선이 조금씩 움직여 정답에 닿습니다. 학습률을 크게 하면 발산하는 것도 직접 봅니다.

02-03·04🧭 경사하강 재생기🐍 경사하강법
→
10차시

이름표 없이 묶다 — 중심이 스스로 걸어가는 알고리즘

중심을 어디에 찍느냐로 답이 갈립니다. 엉뚱한 답으로 수렴하는 경우를 직접 만들어 봅니다.

02-03🎯 k-평균 재생기🐍 k-평균 구현
→
11차시

외운 것인가 이해한 것인가 — 훈련 정확도 100%라는 나쁜 소식

k=1이면 훈련 정확도가 반드시 100%입니다. 자기 자신이 가장 가까운 이웃이니까요.

02-04📉 두 곡선 실험실🐍 훈련/테스트
→
12차시

정확도 98%짜리 쓸모없는 모델 — 네 칸으로 다시 채점하기

「전부 아니라고 답하기」가 98%를 받습니다. 정밀도와 재현율이 그것을 잡아냅니다.

02-04🎛 네 칸 판🐍 혼동행렬
→
13차시

직선 하나로 나눌 수 있는가 — 가중치를 밀면 경계가 움직인다

AND도 OR도 됩니다. 그런데 XOR은 어떻게 밀어도 안 됩니다. 직접 확인해 보세요.

02-05⚖️ 퍼셉트론 저울🐍 학습 규칙
→
14차시

층을 하나 더 — 직선으로 안 되던 것을 넘는 법

층을 하나 얹으면 경계가 굽습니다. 다만 씨앗에 따라 학습이 실패하기도 합니다.

02-05🧠 2층 신경망 학습기🐍 역전파
→
15차시

내 데이터로 학습시키고 성능을 잰다 — 만든 것을 처음으로 평가한다

이 단원의 산출물. 14차시 코드를 한 글자도 고치지 않고 진짜 데이터를 먹인 뒤, 12차시의 네 칸으로 잽니다.

02-06·05★ 단원 산출물🎛️ 학습 관제판🐍 학습·평가
→
16차시

기계가 본다 — 작은 창을 밀며 무엇을 찾는가

3×3 필터를 손으로 채워 밀어 봅니다. 다만 여기엔 학습이 없습니다 — 그 차이가 오늘의 논점입니다.

02-06🔍 필터 밀기 판🐍 합성곱·풀링
→
17차시

기계가 듣고 말한다 — 다음 낱말 맞히기가 만들어 낸 것

두 낱말만 보고 다음을 고릅니다. 잘 되는 자리와 무너지는 자리를 둘 다 봅니다.

02-06·05🗣 다음 낱말 판🐍 바이그램
→
마무리

단원 정리 — 열일곱 차시를 한 장의 지도로

개념 지도 · 남긴 숫자 · 서·논술형 자기 점검 · 성취기준 자가 평가 · 3단원으로 넘기는 물음.

02-01 ~ 02-06
→
🧰

시작하기 전에

1단원을 마치고 왔다면 준비물은 같습니다.

🐍

남의 라이브러리를 쓰지 않습니다

이 단원의 코드에는 numpy도 scikit-learn도 없습니다. k-NN도 경사하강법도 신경망도 여러분이 읽을 수 있는 파이썬 수십 줄로 되어 있어요. model.fit() 한 줄보다 이쪽이 원리를 남깁니다.

🔁

같은 코드를 여러 번 다시 만납니다

5차시의 거리 함수가 8차시에, 8차시의 k-NN이 11차시에, 14차시의 신경망이 15차시에 글자 하나까지 똑같이 다시 나옵니다. 반복이 아니라 한 번 만든 것을 계속 쓰는 것이 이 단원의 문법입니다.

📊

숫자를 적어 두세요

시뮬레이터를 돌릴 때마다 정확도·손실 같은 값을 공책에 적습니다. 확인 문제 여섯 개 중 둘은 그 표를 보고 답하는 것이라, 적어 두지 않으면 다시 돌려야 합니다.