
학습 내용
XOR 문제와 한계
학습 목표
이 레슨을 완료하면:
- •XOR 게이트가 무엇인지 이해합니다
- •왜 퍼셉트론 하나로는 XOR을 절대 해결할 수 없는지 압니다
- •"선형 분리 가능성"이라는 핵심 개념을 이해합니다
- •이 한계가 AI 역사에서 "겨울"을 불러온 이유를 압니다
- •해결의 실마리(다층 퍼셉트론)를 예상할 수 있습니다
핵심 메시지
"퍼셉트론은 직선 하나로 나눌 수 있는 문제만 풀 수 있습니다. XOR은 직선 하나로는 절대 나눌 수 없는 문제예요. 이 한계를 깨닫는 것이 딥러닝으로 가는 첫걸음입니다!"
1. XOR 게이트란? -- "둘이 달라야 참!"
일상 비유: 가위바위보의 "비김"
친구와 같은 것을 냈을 때를 생각해보세요.
- •둘 다 가위? 비김(재미없음 = 0)
- •둘 다 바위? 비김(재미없음 = 0)
- •서로 다른 것을 냄? 승부가 남!(재미있음 = 1)
XOR도 비슷합니다. **두 입력이 다를 때만 참(1)**이고, 같으면 거짓(0)이에요. "배타적 OR(Exclusive OR)"이라고도 부르는데, "하나만 독점적으로 참일 때"라는 뜻이에요.
XOR 진리표
| 입력 x1 | 입력 x2 | 출력 | 왜? |
|---|---|---|---|
| 0 | 0 | 0 | 둘이 같음 (거짓) |
| 0 | 1 | 1 | 둘이 다름! |
| 1 | 0 | 1 | 둘이 다름! |
| 1 | 1 | 0 | 둘이 같음 (거짓) |
OR과 비교해볼까요? OR은 (1,1)일 때 1을 출력하는데, XOR은 0을 출력합니다. 이 작은 차이가 엄청난 문제를 만들어냅니다.
일상에서 만나는 XOR
사실 우리는 매일 XOR을 경험합니다!
- •전등 2개 스위치: 한쪽 스위치만 바꾸면 전등이 바뀌고, 양쪽 다 바꾸면 원래대로 (계단 조명이 이 원리!)
- •양자택일: "짜장면이나 짬뽕 중 하나만 골라!" (둘 다 고르거나 둘 다 안 고르면 안 됨)
- •토론: 두 사람이 같은 의견이면 토론 안 됨, 다른 의견이어야 토론이 됨
2. 문제 발생! 퍼셉트론이 실패하다
직접 시도해봅시다
지난 시간에 AND, OR, NOT을 퍼셉트론으로 만들었죠? 같은 방식으로 XOR을 시도해봅시다.
text퍼셉트론: z = x1 * w1 + x2 * w2 + b 출력 = z > 0이면 1, 아니면 0 XOR에 맞는 w1, w2, b를 찾아보자! 필요한 조건: (0,0) → 0: 0*w1 + 0*w2 + b < 0 → b < 0 (0,1) → 1: 0*w1 + 1*w2 + b > 0 → w2 + b > 0 (1,0) → 1: 1*w1 + 0*w2 + b > 0 → w1 + b > 0 (1,1) → 0: 1*w1 + 1*w2 + b < 0 → w1 + w2 + b < 0
조건을 정리하면:
text조건 1: b < 0 조건 2: w2 + b > 0 → w2 > -b → w2 > 0 (b가 음수이므로) 조건 3: w1 + b > 0 → w1 > -b → w1 > 0 (b가 음수이므로) 조건 4: w1 + w2 + b < 0 조건 2+3에서: w1 + w2 > -2b > 0 (둘 다 양수) 조건 4에서: w1 + w2 < -b 그런데 조건 2에서 w2 > -b, 조건 3에서 w1 > -b이므로: w1 + w2 > -2b > -b (b가 음수이니까 -2b > -b) 이것은 조건 4(w1 + w2 < -b)와 모순!
어떤 숫자를 넣어도 4가지 조건을 동시에 만족할 수 없습니다! 이것은 "운이 나빠서"가 아니라, 수학적으로 불가능하다는 뜻이에요.
코드로 직접 확인해보기
정말로 불가능한지 다양한 가중치를 시도해볼까요?
python# XOR을 퍼셉트론으로 풀 수 있을까? 다양하게 시도해보기! def perceptron(x1, x2, w1, w2, b): z = x1 * w1 + x2 * w2 + b return 1 if z > 0 else 0 # XOR 정답 xor_answers = {(0,0): 0, (0,1): 1, (1,0): 1, (1,1): 0} # 다양한 가중치를 시도해봅시다 test_cases = [ (0.5, 0.5, -0.7), # AND 설정 (0.5, 0.5, -0.2), # OR 설정 (1.0, 1.0, -0.5), # 다른 시도 1 (1.0, -1.0, 0.0), # 다른 시도 2 (-1.0, 1.0, 0.0), # 다른 시도 3 (2.0, 2.0, -1.0), # 다른 시도 4 (0.3, 0.7, -0.4), # 다른 시도 5 ] for w1, w2, b in test_cases: correct = 0 results = [] for (x1, x2), answer in xor_answers.items(): output = perceptron(x1, x2, w1, w2, b) results.append(f"({x1},{x2})={output}") if output == answer: correct += 1 status = "성공!" if correct == 4 else f"{correct}/4 맞음" print(f"w1={w1:+.1f}, w2={w2:+.1f}, b={b:+.1f} → {status} {results}") print("\n어떤 조합을 시도해도 4개를 모두 맞출 수 없습니다!")
3. 왜 안 되는 걸까? -- 선형 분리 가능성
비유: 운동장에서 줄 긋기
운동장에 학생 4명이 서 있다고 상상해보세요. 빨간 조끼를 입은 학생(출력 1)과 파란 조끼를 입은 학생(출력 0)을 밧줄 하나로 나눠야 합니다.
AND 게이트의 경우:
핵심 아이디어
text퍼셉트론 하나 = 직선 하나 = AND, OR 같은 단순한 문제 퍼셉트론 여러 개 = 직선 여러 개 = XOR 같은 복잡한 문제도 가능! 그러면 퍼셉트론을 여러 개 연결하면 어떨까? → 이것이 바로 "다층 퍼셉트론(Multi-Layer Perceptron)"의 아이디어!
사실 민스키도 책에서 "다층 퍼셉트론으로는 XOR을 풀 수 있다"고 언급했습니다. 다만 당시에는 다층 퍼셉트론을 "학습시키는 방법"을 몰랐던 거예요. 그 학습 방법(역전파 알고리즘)은 1986년에 발표되었고, 그때부터 AI의 두 번째 봄이 시작됩니다!
6. XOR 문제가 AI에 주는 의미
왜 이렇게 단순한 XOR 문제에 시간을 쓰는 걸까요?
현실 세계는 XOR로 가득합니다
text질문: 공부를 열심히 하면 성적이 오를까? - 열심히 하지 않고 + 똑똑하지 않으면 = 성적 낮음 (0) - 열심히 하지 않고 + 똑똑하면 = 성적 높음 (1) - 열심히 하고 + 똑똑하지 않으면 = 성적 높음 (1) - 열심히 하고 + 똑똑하면 = 성적... 높음? (여기는 XOR과 다르지만) 현실의 많은 문제는 "단순한 직선"으로 나눌 수 없습니다. 이미지 인식, 음성 인식, 자연어 이해 모두 비선형 문제입니다!
XOR은 가장 단순한 비선형 문제입니다. 이것을 풀 수 있어야 더 복잡한 현실 문제도 풀 수 있어요.
| 문제 유형 | 예시 | 단일 퍼셉트론 |
|---|---|---|
| 선형 문제 | AND, OR, NOT | 해결 가능 |
| 비선형 문제 | XOR, 이미지 인식, 음성 인식, 번역 | 해결 불가능 |
현실 세계의 중요한 문제는 대부분 비선형입니다. 그래서 단일 퍼셉트론의 한계를 넘어서는 것이 반드시 필요했던 거예요.
핵심 정리
| 개념 | 설명 | 비유 | AI에서의 의미 |
|---|---|---|---|
| XOR 게이트 | 두 입력이 다를 때만 참 | 양자택일, 계단 조명 | 가장 단순한 비선형 문제 |
| 선형 분리 | 직선 하나로 나눌 수 있음 | 밧줄 하나로 편 나누기 | 단일 퍼셉트론으로 해결 가능 |
| 선형 분리 불가능 | 직선 하나로 나눌 수 없음 | 대각선 배치된 학생들 | 단일 퍼셉트론으로 불가능 |
| AI 겨울 | XOR 한계로 인한 연구 침체 | 꿈과 현실의 충돌 | 한계 인식이 발전의 시작 |
| 해결 힌트 | 직선을 여러 개 사용 | 밧줄 여러 개 사용 | 다층 퍼셉트론의 아이디어 |
학습 체크리스트
- • XOR 진리표를 보지 않고 작성할 수 있다
- • XOR이 OR과 다른 점을 설명할 수 있다
- • "선형 분리 가능"의 의미를 일상 비유로 설명할 수 있다
- • 왜 퍼셉트론 하나로 XOR을 절대 풀 수 없는지 설명할 수 있다
- • AI 겨울이 왜 찾아왔는지 이야기할 수 있다
- • 해결책(다층 퍼셉트론)의 기본 아이디어를 안다
다음 강의 예고
"다층 퍼셉트론 (MLP)" 드디어 XOR의 한계를 극복합니다! 퍼셉트론을 여러 층으로 쌓으면 어떤 일이 벌어지는지, 그리고 이것이 어떻게 현대 딥러닝의 시작점이 되었는지 알아봅니다. Level 1의 대미를 장식하는 마지막 강의입니다!
레슨 정보
- 레벨
- Level 1: AI 기초 이론
- 예상 소요 시간
- 5분 15초
- 참고 영상
- YouTube 링크
💡실습 환경 안내
코드 블록의 ▶ 실행 버튼을 누르면 브라우저에서 바로 Python을 실행할 수 있습니다.
별도 설치 없이 NumPy, Matplotlib 등 기본 라이브러리를 사용할 수 있습니다.