머신러닝
기초
머신러닝의 기본 개념과 학습 절차를 살펴본다. 혼동행렬과 베이즈 정리로 결과를 해석하고, 퍼셉트론의 학습 방법과 한계를 확인한다.
규칙으로 적을 수 없는 문제
머핀과 치와와 사진은 색이나 모양이 비슷해 단순한 규칙만으로 구분하기 어렵다. 색상이나 눈처럼 보이는 부분만 기준으로 삼으면 잘못 분류할 수 있다.
머신러닝에서는 정답이 표시된 사진을 이용해 두 대상을 구분하는 패턴을 학습한다. 사람이 모든 판단 규칙을 직접 작성하기 어려운 문제에 사용할 수 있다.
학습한 모델이 새로운 데이터에서도 잘 작동하는지 평가하는 과정이 필요하다.
데이터로부터 모델 학습하기
머신러닝은 데이터에 포함된 패턴을 학습해 예측에 사용할 모델을 만든다.
프로그래밍과 머신러닝의 비교
전통적 프로그래밍은 사람이 적은 규칙과 데이터를 넣어 답을 얻는다. 머신러닝은 데이터와 답(레이블)을 넣어 규칙(모델)을 얻는다.
머신러닝은 전문가가 판단 규칙을 직접 작성하는 대신 데이터에 포함된 패턴을 학습한다. 따라서 데이터의 수집, 정제, 품질 관리가 중요하다. 학습 데이터에 편향이나 오류가 있으면 모델의 예측에도 영향을 줄 수 있다.
생각해 볼 질문: 회사에 10년 치 대출 심사 기록이 있다. 이 데이터로 배운 모델은 무엇을 배우는가: "올바른 심사"인가, "그동안의 심사 관행"인가?
머신러닝 = 함수 근사
지도학습은 입력 x와 출력 y의 관계를 함수 y = f(x)로 근사하는 과정으로 볼 수 있다. 입력 특징, 모델, 파라미터를 구분한다.
학습(train): (x, y) 쌍으로 f를 만드는 것 · 예측(predict): 학습된 f에 새 x를 넣는 것
모델은 유한한 학습 데이터를 이용해 입력과 출력의 관계를 근사한다. 학습 데이터에서 성능이 높더라도 새로운 입력에서는 오류가 생길 수 있다. 따라서 학습에 사용하지 않은 데이터로 일반화 성능을 평가해야 한다.
생각해 볼 질문: 스팸 필터의 특징으로 "발신 시각"을 넣는 것이 좋은 생각일까? 어떤 데이터가 있으면 판단할 수 있는가?
언제 머신러닝을 쓰는가
판단 규칙을 직접 작성하기 어렵고, 학습에 필요한 데이터를 확보할 수 있는 문제에서 머신러닝을 고려할 수 있다.
- 규칙 작성 부담 감소: 많은 예외를 직접 기술하는 대신 예제로부터 패턴을 학습할 수 있다.
- 다른 환경으로의 확장: 새로운 언어나 도메인에 맞는 데이터를 확보해 모델을 학습하거나 조정할 수 있다.
- 복잡한 패턴 인식: 얼굴 인식처럼 판단 기준을 명시하기 어려운 문제에서 데이터로부터 특징을 학습할 수 있다.
세금 계산이나 학점 산출처럼 규칙이 명확한 문제에는 규칙 기반 프로그램이 적합할 수 있다. 데이터의 가용성, 정확도, 설명 가능성, 관리 비용을 함께 고려해 방법을 선택한다.
지도학습, 비지도학습, 강화학습
학습에 사용하는 정보가 정답 레이블인지, 데이터 자체인지, 행동에 대한 보상인지에 따라 학습 방식을 구분한다.
회귀와 분류: 출력의 모양이 기준이다
지도학습은 정답을 알려주는 교사가 있는 학습이다. 출력 y가 연속 실수면 회귀, 이산적인 클래스면 분류다.
분류 모델도 내부적으로 클래스별 점수나 확률을 계산할 수 있다. 예를 들어 클릭 여부를 분류하는 모델은 클릭 확률을 출력하고, 임계값에 따라 최종 범주를 정한다. 회귀와 분류는 주어진 예측 목표와 학습 문제를 기준으로 구분한다.
생각해 볼 질문: "학점(A+~F) 예측"은 회귀인가 분류인가? 두 방식 각각의 장단점은?
비지도학습과 강화학습
레이블 없이 데이터의 구조를 스스로 찾으면 비지도학습, 행동의 결과로 보상·처벌이 (때로 한참 뒤에) 돌아오면 강화학습이다.
세 방식은 배타적 분류라기보다 데이터 상황에 따른 대응이다. 레이블을 만드는 비용이 클 때(의료 영상 판독은 전문의 시간이 든다) 비지도·자기지도 학습으로 레이블 없이 배울 수 있는 만큼 배우고, 소량의 레이블로 마무리하는 전략이 흔하다. M2에서 본 LLM 사전학습("다음 단어 맞히기")도 사람이 레이블을 달지 않았다는 점에서 자기지도 학습의 대표 사례다.
생각해 볼 질문: 배달 앱의 "주문 후 재주문까지의 행동 로그"만 있다면, 세 방식 중 무엇으로 무엇을 배울 수 있을까?
머신러닝의 학습 절차
데이터 수집, 특징 선택, 데이터 분할, 모델 선택, 학습, 평가의 순서로 진행한다.
음료 판별기를 만드는 순서
콜라인지 주스인지 판별하는 모델을 만들어 달라는 요청을 받았다고 하자. 데이터 수집부터 평가까지, 순서가 정해져 있다.
- 데이터 수집: 콜라·주스 샘플을 모은다.
- 특징 선택: 색상(파장)과 산성도 두 가지로 구별되기를 기대한다.
- 데이터 분할: 훈련:테스트 = 80:20 (또는 70:30).
- 모델 선택: 특징이 둘뿐이니 단순한 선형 모델 y = Wx + b.
- 학습: W, b를 임의값으로 시작해, 예측과 정답의 차이만큼 조정을 반복한다.
- 평가·예측: 떼어 둔 테스트 데이터로 평가하고, 통과하면 새 질문("색상 600nm, 산성도 1.5는?")에 답하게 한다.
일반화는 모델이 학습에 사용하지 않은 데이터에서도 잘 예측하는 성질이다. 학습 데이터의 성능만으로 이를 판단하기 어렵기 때문에 별도의 평가 데이터가 필요하다. 모델 선택에는 검증 데이터를, 최종 성능 확인에는 보류한 테스트 데이터를 사용한다.
생각해 볼 질문: 테스트 성적을 보고 모델을 다시 고치는 일을 반복하면, 테스트 세트는 어떤 의미에서 "오염"되는가?
분류 성능 평가
혼동행렬과 여러 평가 지표를 이용해 예측 결과와 오류 유형을 살펴본다.
혼동행렬
이진 분류 결과는 실제 값과 예측값의 조합에 따라 TP, TN, FP, FN으로 구분한다.
표기 실수를 막는 요령: 항상 예측을 먼저 읽는다. "Positive로 예측했다 → 그 예측이 False였다 → FP → 실제로는 음성인데 양성 판정". 시험에서도 실무에서도 FN과 FP를 뒤바꾸는 실수가 가장 흔하다. 민감도(sensitivity)는 실제 양성 중 잡아낸 비율(=재현율), 특이도(specificity)는 실제 음성 중 음성으로 판정한 비율: 의학 통계의 용어이며 다음 파트 베이즈 계산의 입력이 된다.
생각해 볼 질문: 공항 보안 검색대에서 FN과 FP는 각각 무엇인가? 어느 쪽 비용이 큰가?
정확도 · 정밀도 · 재현율 · F1
정확도, 정밀도, 재현율, F1은 서로 다른 측면을 요약한다. 데이터의 클래스 비율과 오류 비용을 고려해 지표를 해석한다.
정밀도 = TP / (TP+FP) — 양성이라 한 것 중 진짜 양성
재현율 = TP / (TP+FN) — 실제 양성 중 잡아낸 비율 (=민감도)
F1 = 2·정밀도·재현율 / (정밀도+재현율) — 둘의 조화평균
혼동행렬 → 4대 지표
실습 목표: 혼동행렬의 값으로 정확도, 정밀도, 재현율, F1을 계산한다.
실습 방법: FN을 0으로 두고 FP를 늘린 뒤, FP를 0으로 두고 FN을 늘려 본다. 확인할 내용: 각 경우에 정밀도와 재현율이 어떻게 달라지는지 계산한다.
1,000명 중 환자가 10명인 데이터에서 모든 사람을 정상으로 분류하면 정확도는 99%지만 재현율은 0%다. 클래스가 불균형한 경우에는 정확도와 함께 혼동행렬, 정밀도, 재현율 등을 확인해야 한다.
평가 지표는 오류의 비용을 고려해 선택한다. 질병 선별에서는 놓친 환자(FN), 스팸 분류에서는 정상 메일의 오분류(FP)가 중요한 문제가 될 수 있다. F1은 정밀도와 재현율을 요약하지만 두 오류의 비용 차이를 직접 반영하지는 않는다.
생각해 볼 질문: 자율주행차의 보행자 감지에서 재현율 100%를 만들려면 어떻게 해야 하는가? 그 대가는 무엇인가?
베이즈 정리와 확률 갱신
검사 결과를 관찰할 때마다 질병 확률이 어떻게 달라지는지 계산한다.
사전 확률과 사후 확률
베이즈 정리는 새로운 증거를 관찰한 뒤 가설의 확률을 갱신하는 방법이다. H는 질병이 있다는 가설, E는 양성이라는 검사 결과다.
출처: Angelo Yeo, 「베이즈 정리의 의미」, 그림 1 (2020). CC BY-NC 4.0, 원본 사용.
P(E) = P(E|H)P(H) + P(E|Hᶜ)P(Hᶜ)
P(E|H)는 환자가 양성 판정을 받을 확률(민감도)이다. P(E)는 환자와 비환자를 모두 포함한 전체 양성 확률이다. Hᶜ는 질병이 없는 경우를 뜻한다.
사전 확률 P(H)는 검사 전 질병 확률이며, 이 예제에서는 유병률을 사용한다. 사후 확률 P(H|E)는 양성 판정을 받은 뒤 질병이 있을 확률이다. P(E|H)와 P(H|E)는 조건의 방향이 다르다.
3장의 실습에서 사용한 증상 일치 비율은 유병률을 반영하지 않는다. 베이즈 정리는 사전 확률과 증상의 조건부 확률을 함께 사용한다.
유병률과 양성예측도 계산
유병률 1%, 민감도 90%, 특이도 91%인 검사를 가정한다. 양성 판정을 받은 사람에게 실제 질병이 있을 확률을 계산한다.
- 10,000명 중 환자는 100명, 비환자는 9,900명이다.
- 환자 100명 중 90명이 양성(TP), 10명이 음성(FN)이다.
- 비환자 9,900명 중 9%인 891명이 양성(FP)이다.
- 양성 981명 중 환자는 90명이다. P(병|양성) = 90/981 ≈ 9.17%.
“환자의 90%가 양성”과 “양성 판정자의 90%가 환자”는 서로 다른 뜻이다. 양성예측도는 민감도뿐 아니라 유병률과 위양성률에도 영향을 받는다.
유병률이 0.1%인 경우
참고 글의 예제는 유병률 0.1%, 민감도 99%, 특이도 98%를 사용한다. E₁은 첫 번째 검사에서 양성이 나온 사건이다.
- 100,000명 중 환자는 100명이다. 이 중 99명이 양성이다.
- 비환자 99,900명 중 2%인 1,998명이 양성이다.
- 양성 2,097명 중 환자는 99명이다. 민감도가 높아도 양성예측도는 약 4.72%다.
= 99 / 2,097 ≈ 4.72%
분자는 환자이면서 양성일 확률, 분모는 전체 양성 확률이다.
그림으로 보는 양성예측도
출처: Angelo Yeo, 「베이즈 정리의 의미」, 그림 2 (2020). CC BY-NC 4.0, 원본 사용.
사후 확률을 다음 검사의 사전 확률로 사용
첫 검사에서 양성이 나온 사람이 다시 검사해 양성(E₂)을 받았다고 하자. 두 번째 계산은 첫 번째 사후 확률 p₁에서 시작한다.
두 검사 모두 민감도 99%, 특이도 98%다. 질병이 있는 경우와 없는 경우 각각에서 두 검사 결과가 조건부 독립이라고 가정한다. 즉, 질병 유무가 같으면 첫 결과가 두 번째 검사의 양성 확률을 바꾸지 않는다.
= 0.99² × 0.001 / (0.99² × 0.001 + 0.02² × 0.999) ≈ 71.04%
검사 전 0.1%, 첫 양성 후 약 4.72%, 두 번 연속 양성 후 약 71.04%로 갱신된다. H는 계속 “질병이 있다”이며, 추가된 증거는 두 번째 검사 결과다.
첫 계산의 결과 99/2,097을 반올림하지 않고 두 번째 계산에 사용한다. 참고 글은 중간값을 0.047로 반올림해 약 70.9%를 제시한다. 이 자료의 약 71.04%와의 차이는 중간 반올림 때문이다.
검사 오류의 원인이 두 검사에 공통으로 작용하면 조건부 독립이 성립하지 않을 수 있다. 그 경우에는 첫 결과까지 고려한 P(E₂|H, E₁)과 P(E₂|Hᶜ, E₁)을 사용해야 한다. 같은 검사를 반복했다는 사실만으로 독립을 가정할 수는 없다.
그림으로 보는 두 번째 확률 갱신
출처: Angelo Yeo, 「베이즈 정리의 의미」, 그림 3 (2020). CC BY-NC 4.0, 원본 사용.
검사 결과에 따른 확률 변화
한 번 양성과 두 번 연속 양성 비교
실습 목표: 유병률과 검사 횟수에 따라 사후 확률이 어떻게 달라지는지 확인한다.
두 검사는 질병 유무가 주어졌을 때 조건부 독립이고, 민감도와 특이도가 같다고 가정한다. 중간 계산은 반올림하지 않는다.
실습 방법: 두 예제 버튼으로 결과를 비교한 뒤, 민감도와 특이도를 고정하고 유병률만 바꾼다. 같은 검사 결과라도 사전 확률에 따라 사후 확률이 달라진다.
퍼셉트론의 구조와 학습
퍼셉트론은 예측 오류에 따라 가중치를 갱신한다. 선형 분리가 가능한 문제를 학습할 수 있다.
가중합, 임계값, 계단 함수
1957년 로젠블랫이 고안한 퍼셉트론은 생물학적 뉴런을 느슨하게 본뜬 계산 소자다. 입력의 가중합이 임계값을 넘으면 1, 아니면 0을 출력한다.
퍼셉트론은 데이터와 정답을 이용해 가중치를 학습하는 초기 신경망 모델이다. 단순한 분류 문제에서 학습 과정을 확인할 수 있지만, 단층 구조로 표현할 수 있는 결정 경계에는 한계가 있다.
생각해 볼 질문: 계단 함수를 시그모이드로 바꾸면 미분을 이용한 학습에서 어떤 차이가 생기는가?
출처 Rosenblatt, "The Perceptron: A Probabilistic Model", Psychological Review 65(6), 1958: doi.org
퍼셉트론의 가중치 갱신
각 샘플의 예측값과 정답을 비교하고, 오류가 발생한 경우 학습률과 입력값에 따라 가중치를 갱신한다.
W ← W + η · e · x — η(학습률)만큼, 오차 방향으로, 입력에 비례해 조정
AND 데이터(정답: 둘 다 1일 때만 1)에 이 규칙을 적용하면, W=[0,0,0]에서 시작해 몇 에폭 만에 W=[0.4, 0.2, −0.4]로 수렴하고 4개 입력을 전부 맞힌다. 아래 실습이 그 전 과정을 한 샘플씩 보여 준다.
이 규칙이 시험에 나오는 형태: "η=0.2, 초기 가중치 0으로 AND를 1 에폭 학습시켜라. 각 샘플 처리 후의 W를 쓰라." 손계산 요령은 두 가지다: ① 예측이 맞으면(e=0) 아무것도 바뀌지 않는다. ② 틀렸을 때만 W에 η·e·x를 더하는데, x의 성분이 0인 자리는 바뀌지 않는다. 바이어스 자리는 x가 항상 1이므로 틀릴 때마다 반드시 η·e만큼 움직인다.
생각해 볼 질문: 학습률 η를 10배 키우면 학습은 빨라지는가? 무엇이 위험해지는가?
학습을 한 샘플씩 따라가기
교재의 numpy 코드가 출력하는 epoch 로그를 브라우저에서 재현한다. 샘플이 하나씩 처리될 때마다 결정 경계선이 움직이는 것을 본다.
퍼셉트론 학습 시뮬레이터 (η=0.2, W 초기값 0)
실습 목표: 가중치 갱신에 따라 결정 경계가 변하는 과정을 관찰하고 AND와 XOR의 학습 결과를 비교한다.
실습 방법: AND에서 [1 에폭 실행]을 반복한 뒤 XOR로 바꿔 실행한다. 확인할 내용: AND는 네 입력을 모두 분류하는 경계에 도달하지만, 단층 퍼셉트론으로는 XOR의 네 입력을 모두 분류할 수 없다.
같은 것을 numpy로: 교재 코드 정리판
실습 시간에 직접 돌린다. sklearn 한 줄 버전과 결과가 같은지 비교하는 것까지가 과제다.
단층 퍼셉트론의 한계와 XOR
퍼셉트론이 그을 수 있는 것은 직선 하나다. AND와 OR는 직선으로 갈라지지만, XOR의 네 점은 어떤 직선으로도 갈라지지 않는다.
민스키와 페퍼트의 연구는 단층 퍼셉트론의 한계를 분석한 것이며 다층 신경망의 표현 가능성을 부정한 것은 아니다. 당시 연구 상황은 학습 방법, 계산 자원, 투자 환경을 함께 고려해 이해해야 한다.
출처 Minsky & Papert, Perceptrons, MIT Press, 1969: mitpress.mit.edu
요약 정리
학습 절차, 평가 지표, 베이즈 정리, 퍼셉트론의 한계를 정리한다.
핵심 내용
- 학습과 평가는 구분한다. 훈련 데이터로 모델을 학습하고, 별도의 데이터로 새로운 입력에 대한 성능을 평가한다.
- 분류 성능은 여러 지표로 확인한다. 정확도와 함께 혼동행렬, 정밀도, 재현율, 오류 비용을 살펴본다.
- 양성 판정 후 질병 확률에는 유병률이 영향을 준다. P(양성|병)와 P(병|양성)을 구분하고 베이즈 정리로 계산한다. 추가 증거를 반영할 때는 이전 사후 확률에서 갱신한다.
다음 장에서는 kNN, K-means, 의사결정트리와 퓨샷 분류를 다룬다. 거리와 클래스 평균을 이용한 예측을 실습한 뒤, M6에서 신경망과 역전파를 학습한다.
참고문헌
공개 원문 링크를 제공한다. 베이즈 정리 참고 글과 그림 출처는 2026년 10월 8일 확인했다.
1차 문헌
- Rosenblatt, F. (1958). The Perceptron: A Probabilistic Model for Information Storage and Organization in the Brain. Psychological Review, 65(6), 386–408. doi.org/10.1037/h0042519
- Minsky, M., & Papert, S. (1969). Perceptrons: An Introduction to Computational Geometry. MIT Press. mitpress.mit.edu
- Bayes, T. (1763). An Essay towards Solving a Problem in the Doctrine of Chances. Philosophical Transactions, 53, 370–418. doi.org/10.1098/rstl.1763.0053
교재 · 해설 · 도구 문서
- 천인국 (2023). 인공지능: 파이썬으로 배우는 머신러닝과 딥러닝 (2판). 인피니티북스.: 5·7주차 강의 교재. 파이프라인·퍼셉트론 코드의 원전.
- Angelo Yeo (여동훈). (2020. 1. 9.). 베이즈 정리의 의미. 그림 1~3 원본 사용 및 두 차례 검사 예제 참고. CC BY-NC 4.0. 본문 계산은 중간값을 반올림하지 않았다.
- scikit-learn. Perceptron: API Reference. scikit-learn.org
퍼셉트론 학습 결과(W=[0.4, 0.2, −0.4])는 교재 코드와 동일한 처리 순서·초기값·학습률을 브라우저 시뮬레이터로 재현해 확인한 값이다. 베이즈 예제 1은 유병률 1%, 민감도 90%, 특이도 91%의 가상 설정이다. 예제 2는 Angelo Yeo의 설정(0.1%, 99%, 98%)을 따른다. 반복 검사 계산은 질병 유무에 대한 조건부 독립을 가정한다.