XOR은 직선 하나로 못 푼다 — 2-4-1 신경망의 가운데 4가 하는 일

XOR은 직선 하나로 못 푼다 — 2-4-1 신경망의 가운데 4가 하는 일

⚡ 3줄 요약

  • 신경망은 규칙을 사람이 짜는 게 아니라 오차를 재고 그만큼 숫자를 되돌리는 반복이다 — 그게 전부다.
  • 2-4-1의 가운데 ‘4’가 핵심이다. 그 hidden layer가 없으면 XOR은 아무리 학습해도 못 푼다.
  • 출력 0.92는 확률이 아니다. XOR 예제가 돌았다고 실무가 되는 것도 아니다 — 양과 성능은 다른 문제.

신경망 학습은 결국 ‘예측하고, 틀린 만큼 재고, 그 오차만큼 내부 숫자를 되돌리는’ 반복 하나로 요약된다. 신경망을 처음 볼 때 다들 뉴런 그림에 압도당한다. 원과 화살표가 층층이 이어진 그 도해 말이다. 그런데 정작 신경망이 하는 일은 단순하다. 답을 내고, 얼마나 틀렸는지 재고, 그 오차만큼 내부 숫자를 되돌린다. 이 세 동작의 반복이 학습의 전부다. 이 글은 그 반복을 XOR을 배우는 작은 2-4-1 신경망으로 끝까지 따라간다 — 왜 하필 가운데가 ‘4’여야 하는지까지.

신경망은 규칙을 짜는 게 아니라 오차를 되돌린다

기존 프로그래밍은 사람이 규칙을 쓴다. “공부 시간이 결과에 이만큼 중요하다”를 직접 정한다. 입력과 결과의 관계가 조금만 복잡해져도 이 규칙을 손으로 쓰는 건 금방 한계에 부딪힌다.

신경망은 반대다. 규칙 대신 예시와 정답을 준다. 입력을 숫자로 받아 예측을 내놓고, 예측과 정답의 차이(오차)를 계산한 뒤, 오차가 줄어드는 방향으로 내부 숫자를 조금씩 바꾼다. 사람은 “이게 정답이다”만 알려주고, 어떤 입력이 얼마나 중요한지는 신경망이 스스로 조정한다.

단, 오해하면 안 되는 지점이 있다. 신경망이 규칙을 스스로 찾는다고 해서 입력의 의미를 사람처럼 이해하는 건 아니다. 그저 숫자를 곱하고 더하고 되돌릴 뿐이다. “이해”가 아니라 “수치 최적화”로 보는 편이 훨씬 정확하다.

입력 숫자 · 신경망 계산 · 예측 · 오차 · 설정 수정의 반복 흐름
예측 → 오차 → 수정. 신경망 학습은 이 고리를 수없이 도는 일이다

계산의 최소 단위: 곱하고, 더하고, 눌러 담는다

신경망의 기본 단위는 뉴런이다. 하는 일은 초등학교 산수 수준이다. 각 입력에 weight(가중치)를 곱해 전부 더하고, 마지막에 bias(편향)를 하나 더한다.

기호 이름 역할
x 입력 숫자로 바뀐 데이터(공부 시간, 점수 등)
w weight 그 입력이 결과에 얼마나 세게 작용할지
b bias 합만으로 못 맞추는 기준점을 밀어주는 값

식으로 쓰면 이 한 줄이다.

z = x₁w₁ + x₂w₂ + x₃w₃ + b

weight가 크면 그 입력이 결과를 크게 흔든다. bias는 입력들의 합만으로는 맞추기 어려운 출발점을 조정하는 손잡이다. 학습이란 결국 이 wb라는 숫자들을 좋은 값으로 밀어가는 과정이고, 신경망이 조정하는 대상은 오직 이것뿐이다.

activation이 없으면 층을 쌓아도 소용없다

여기서 한 단계가 빠지면 신경망은 아무리 층을 쌓아도 직선 하나짜리 계산기에 머문다. 곱하고 더하기만 반복하면, 층을 열 개 쌓든 결국 하나의 큰 곱셈·덧셈으로 납작하게 눌려버리기 때문이다. 이 납작함을 깨는 게 activation function(활성함수)이다.

대표적인 게 sigmoid다. 어떤 값이 들어와도 결과를 0과 1 사이로 눌러 담는다. 그래서 “합격이냐 아니냐” 같은 예·아니오 출력에 잘 맞는다.

⚠️ 0.92는 확률이 아니다

sigmoid 출력이 0.92로 나왔다고 “합격 확률 92%”로 못 박으면 안 된다. sigmoid는 값을 0~1로 눌러줄 뿐, 그 숫자가 보정된 확률이라는 보장은 없다. 실제 확률로 쓰려면 별도의 검증(calibration)이 필요하다.

입력값 · weight · bias · activation function으로 이어지는 뉴런의 계산 구조
입력 × weight의 합 + bias → activation. 뉴런 하나의 전체 흐름

오차를 뒤에서 앞으로: backpropagation과 gradient descent

예측이 나왔으면 이제 얼마나 틀렸는지 잰다. 예측과 정답의 차이를 손실(loss) 또는 오차라고 부른다. 오차가 크다는 건 지금의 weight·bias가 입력과 결과의 관계를 잘못 잡고 있다는 신호다.

backpropagation(역전파)은 이 오차를 출력에서 입력 쪽으로 거꾸로 흘려보내며, 각 weight와 bias가 오차에 얼마나 기여했는지를 계산한다. 순서는 이렇다.

  1. 입력을 계산해 예측을 만든다.
  2. 예측과 정답의 차이(오차)를 잰다.
  3. 그 오차를 뒤에서 앞으로 흘려 각 설정의 책임 몫(gradient)을 구한다.
  4. 오차가 줄어드는 방향을 확인한다.
  5. 그 방향으로 weight와 bias를 조금 바꾼다.

여기서 “조금”이 중요하다. 방향은 gradient가 알려주지만, 얼마나 갈지는 learning rate(학습률)가 정한다. 실제 갱신은 이 한 줄로 요약된다.

새 weight = 기존 weight − learning rate × gradient

learning rate가 너무 크면 최적값을 지나쳐 튕겨 나가고, 너무 작으면 학습이 굼떠진다. 어느 쪽이든 한 번에 정답을 맞히는 게 아니라, 이 갱신을 수많은 예시에 반복하면서 예측이 서서히 나아진다. 신경망 학습은 한 방의 정답이 아니라 자잘한 수정의 누적이다.

왜 하필 2-4-1인가 — 가운데 ‘4’가 XOR을 푼다

이제 구조를 보자. 예제 신경망은 입력 2개 → hidden layer 4개 → 출력 1개, 즉 2-4-1이다. 이 구조로 XOR 문제를 학습한다. XOR은 두 입력 중 정확히 하나만 참일 때 1을 내놓는 규칙이다.

입력 A 입력 B XOR 정답
0 0 0
0 1 1
1 0 1
1 1 0

XOR이 신경망 입문의 단골 예제인 데는 이유가 있다. 이 네 점은 직선 하나로는 절대 갈라지지 않는다. 0과 1을 나누는 어떤 직선을 그어도 한쪽은 반드시 틀린다. 그래서 뉴런 하나(단층 퍼셉트론)로는 XOR을 아무리 오래 학습시켜도 못 푼다 — 1969년 민스키·페퍼트가 지적한 그 유명한 한계다.

⚠️ 핵심: 층 사이에 activation이 있어야 진짜 hidden layer다

가운데 4개 뉴런(hidden layer)이 activation을 거쳐 입력 공간을 비틀어주면, 직선으로 못 갈리던 XOR의 네 점이 비로소 갈라진다. 반대로 activation 없이 층만 쌓으면 4개든 40개든 여전히 직선 계산기라 XOR을 못 푼다. 2-4-1을 굴리는 건 ‘4’라는 개수가 아니라 그 사이의 비선형성이다.

구성 역할
입력층 뉴런 2개 두 입력을 받는다
hidden layer 뉴런 4개 입력을 비틀어 새 특징으로 다시 만든다
출력층 뉴런 1개 sigmoid로 0~1 사이 최종 예측

🎯 FEEDON의 선택 — 우리라면 이렇게 본다

신경망을 처음 잡을 때 층 개수나 뉴런 수부터 외우는 건 순서가 틀렸다. 진짜로 손에 쥐어야 할 건 딱 하나다 — “예측 → 오차 → 되돌리기”의 고리. 이 고리를 이해하면 2-4-1이든 수백 층짜리 모델이든 하는 일은 같다는 게 보인다. 그 큰 모델들이 긴 입력을 어떻게 다루는지는 Transformer가 긴 입력을 우회하는 방식어텐션이 128K에서 추론 시간을 잡아먹는 이유로 이어진다.

그리고 XOR 예제가 돌아갔다고 흥분하지 마라. XOR은 원리를 확인하는 실험실 문제지, 실무 성능의 증거가 아니다. 예제가 되는 것과 우리 데이터에서 쓸 만한 것은 완전히 다른 질문이다. 우리라면 모델 이름을 고르기 전에 “우리 데이터를 숫자로 바꿀 수 있나, 비교할 정답이 있나”부터 확인한다. 좁은 업무라면 큰 모델부터 붙일 게 아니라 작은 전용 모델을 먼저 대보는 편이 낫다.

실무로 넘어가기 전 체크리스트

  • 업무 정보를 계산 가능한 숫자로 바꿀 수 있는가 — 안 되면 모델보다 데이터 준비가 먼저다.
  • 예측과 비교할 정답(라벨)이 준비돼 있는가 — 정답이 흔들리면 오차 자체가 무의미하다.
  • 출력값 0.92를 확률·확정 판단으로 바로 쓰지 않는다 — 업무 기준과 따로 맞춘다.
  • XOR 같은 작은 예제와 실제 데이터를 분리해서 판단한다.
  • 원리 학습이 목적이면 직접 구현, 빠른 적용이 목적이면 검증된 라이브러리로 같은 구조를 만든다.

출처: freeCodeCamp 「Neural Networks Explained: What They Are and How to Build One in Python」 · XOR 비선형 분리 불가 및 hidden layer 필요성은 Minsky & Papert(1969) 이래 표준 결과

이 글은 FEEDON이 공개 1차 자료를 바탕으로 작성·검증했습니다.

✍️ FEEDON

FEEDON은 AI와 개발 도구의 변화를 1차 자료에서 직접 읽고 검증해 전한다. 연구 블로그·릴리스 노트·API 문서에서 시작해, 실무에 영향이 큰 변화만 골라 다룬다. "모델이 무엇을 할 수 있나"보다 "그게 당신의 비용과 워크플로에 무슨 뜻인가"를 먼저 따진다. 본문의 모든 수치는 공개 원문과 대조한 뒤 발행한다.