Level 1: AI 기초 이론
🧠

Level 1

퍼셉트론 학습

가중치 업데이트와 학습률 완벽 이해

6분 57초
퍼셉트론 학습 강의 영상
강의 영상 보기 (새 탭에서 재생)YouTube

학습 내용

퍼셉트론 학습

학습 목표

이 레슨을 완료하면:

  • "학습"이 뭔지, 왜 AI에서 가장 중요한 개념인지 설명할 수 있어요
  • 가중치 업데이트 공식이 어떤 원리로 작동하는지 이해해요
  • 학습률(learning rate)이 왜 필요하고, 어떤 값이 좋은지 알아요
  • OR 게이트를 퍼셉트론이 스스로 학습하는 전체 과정을 따라갈 수 있어요
  • 수렴(convergence)이 뭔지, 언제 학습이 끝나는지 판단할 수 있어요

핵심 메시지

"AI의 학습은 마법이 아닙니다. 예측하고, 틀리면 고치고, 다시 해보는 것. 그게 전부예요!"

사람이 시행착오를 통해 배우듯, 퍼셉트론도 똑같은 방식으로 배웁니다. 이번 레슨에서 그 과정을 한 걸음씩 따라가 볼게요.


1. "학습"이 대체 뭘까요?

일상의 비유: 농구 자유투 연습

농구 자유투를 처음 던진다고 상상해보세요.

  1. 첫 시도: 힘 조절을 몰라서 링에 한참 못 미침
  2. 깨달음: "아, 힘이 부족했구나" → 다음엔 좀 더 세게 던짐
  3. 두 번째 시도: 이번엔 너무 세서 백보드를 맞고 나옴
  4. 또 깨달음: "너무 셌나" → 살짝 줄여봄
  5. 반복: 수십 번 던지면서 점점 정확해짐

이 과정을 정리하면 이렇습니다:

시도 → 결과 확인 → 조정 → 다시 시도 → ... → 점점 잘해짐!

퍼셉트론의 학습도 완전히 같은 원리예요!

농구 자유투퍼셉트론 학습
공을 던짐입력 데이터로 예측함
링에 안 들어감예측이 틀림
"힘을 더 줘야겠다"오차를 계산함
힘 조절해서 다시 던짐가중치를 조정함
수십 번 반복 후 골인!여러 번 반복 후 정확해짐!

왜 이게 AI에서 중요할까요? AI가 "똑똑해진다"는 건 결국 이 학습 과정을 거친다는 뜻이에요. ChatGPT도, 이미지 인식 AI도, 자율주행차도 전부 이 기본 원리 위에 만들어졌어요. 지금 배우는 퍼셉트론의 학습법은 그 모든 것의 출발점입니다!


2. 퍼셉트론의 학습 4단계

퍼셉트론의 학습은 딱 4단계로 이루어져요. 계속 돌아가는 바퀴라고 생각하면 됩니다:

text
[1단계] 예측하기 [2단계] 오차 확인하기 ← 정답과 비교해서 얼마나 틀렸나? [3단계] 가중치 조정하기 ← 틀린 만큼 수정! [4단계] 반복하기 → 다시 1단계로 돌아감 (점점 정확해짐!)

핵심을 한 문장으로 말하면:

학습 = "최적의 가중치와 편향을 찾아가는 과정"

이전 레슨에서 퍼셉트론의 출력은 가중치(w)와 편향(b)에 의해 결정된다고 배웠죠? 그 가중치와 편향을 적절한 값으로 맞춰주는 게 바로 학습이에요. 처음엔 엉망인 값에서 시작하지만, 반복하면서 점점 좋은 값을 찾아갑니다.


3. 오차(Error) 계산 - "얼마나 틀렸나?"

비유: 시험 채점

시험 답안을 채점한다고 생각해보세요. 정답이 O인데 학생이 X라고 쓰면? "틀렸다"는 걸 알 수 있죠. 중요한 건 어떻게 틀렸는지도 알 수 있다는 거예요.

퍼셉트론의 오차 계산도 이렇게 단순해요:

오차(error) = 정답(target) - 예측(prediction)

이 한 줄짜리 공식이 놀라울 정도로 많은 정보를 담고 있어요:

상황정답예측오차무슨 뜻인가요?
과소 반응10+1"더 크게 반응해야 해!" → 가중치를 키워야 함
과대 반응01-1"너무 민감해!" → 가중치를 줄여야 함
정답!110"완벽해! 그대로 유지!" → 수정 불필요
정답!000"완벽해! 그대로 유지!" → 수정 불필요

오차의 부호(+/-) 가 "어느 방향으로 고쳐야 하는지"를 알려주고, 오차의 크기가 "얼마나 많이 고쳐야 하는지"를 알려줍니다.

이렇게 간단한 뺄셈 하나로 학습의 방향이 정해져요!


4. 가중치 업데이트 공식 - "어떻게 고치나?"

비유: 요리 간 맞추기

된장찌개를 끓이는데 간이 싱거워요. 그러면 소금을 얼마나 넣을지 결정해야 하죠.

  • 얼마나 싱거운지 (오차의 크기) → 많이 싱거우면 많이 넣고
  • 그 재료가 얼마나 들어갔는지 (입력값) → 이미 많이 넣은 재료는 조금만 조정
  • 한 번에 얼마씩 넣을지 (학습률) → 소심하면 조금씩, 대담하면 많이

퍼셉트론의 가중치 업데이트 공식이 바로 이 논리예요:

text
가중치 업데이트: w_new = w_old + learning_rate x error x input 편향 업데이트: b_new = b_old + learning_rate x error

공식의 각 요소가 하는 역할

요소기호역할비유
오차error방향과 크기 결정"얼마나 틀렸나?"
입력값input기여도 반영"이 재료를 얼마나 넣었나?"
학습률η (에타)조정 보폭 결정"한 번에 얼마씩 고칠까?"

왜 입력값(input)을 곱하나요?

이게 직관적으로 잘 이해가 안 될 수 있어요. 예를 들어볼게요.

두 개의 입력 x1=5, x2=0이 있고, 예측이 틀렸다고 합시다.

  • x1 = 5: 이 입력이 크게 기여했으니까, 이 입력에 연결된 w1을 많이 바꿔야 해요
  • x2 = 0: 이 입력은 아예 기여를 안 했으니까, w2를 바꿔봤자 소용없어요

입력값을 곱하면 이런 "기여도"가 자연스럽게 반영돼요!


5. 학습률(Learning Rate) - "한 걸음의 크기"

비유: 눈 감고 보물찾기

놀이공원에서 눈을 가리고 보물을 찾는 게임을 한다고 상상해보세요. 친구가 "왼쪽!" 하고 외쳐주면 왼쪽으로 움직이는데...

한 걸음을 얼마나 크게 뗄 건가요?

걸음 크기상황결과
너무 큰 걸음 (5m씩)보물 바로 옆인데 5m를 가버림보물을 계속 지나침! 왔다갔다만 반복
너무 작은 걸음 (1cm씩)방향은 맞는데 너무 느림해가 져도 못 찾음
적당한 걸음 (30cm씩)방향 맞고 속도도 적당효율적으로 보물 발견!

학습률이 바로 이 "걸음 크기"예요!

학습률에 따른 학습 결과

학습률 (η)특징결과
너무 큼 (예: 1.0)한 번에 가중치를 확 바꿈정답을 자꾸 지나침 (발산)
너무 작음 (예: 0.0001)아주 조금씩만 바꿈수렴은 하지만 시간이 너무 오래 걸림
적당함 (예: 0.01~0.1)적절한 크기로 조정빠르고 안정적으로 정답에 도달!

실전 팁: 처음 시작할 때는 보통 0.01 ~ 0.1 사이에서 시작해요. 학습이 잘 안 되면 키워보고, 불안정하면 줄여보는 식으로 조절합니다.

왜 이게 AI에서 중요할까요? 현대 AI 모델(GPT 등)도 학습률 설정이 성능을 좌우해요. 수십억 개의 가중치를 학습할 때, 학습률 하나 잘못 잡으면 며칠간의 학습이 물거품이 될 수도 있어요!


6. 실전 예제: OR 게이트 학습 과정

이제 퍼셉트론이 실제로 OR 게이트를 학습하는 과정을 처음부터 끝까지 따라가 볼게요!

OR 게이트란?

"둘 중 하나라도 1이면 1" — 이전 레슨에서 배운 내용이죠.

x1x2정답 (OR)
000
011
101
111

초기 설정

아직 아무것도 모르는 상태에서 시작해요:

text
가중치: w1 = 0, w2 = 0 편향: b = 0 학습률: η = 0.5 활성화 함수: 계단 함수 (z > 0이면 1, 아니면 0)

Epoch 1: 첫 번째 순회

모든 데이터를 한 바퀴 도는 걸 에포크(epoch) 라고 해요. 첫 번째 에포크를 따라가 볼까요?

데이터 1: 입력 (0, 0), 정답 0

text
1) 계산: z = 0x0 + 0x0 + 0 = 0 2) 예측: z = 0, 0보다 크지 않으므로 → 출력 0 3) 오차: 정답(0) - 예측(0) = 0 4) 오차가 0이니까 → 수정 불필요! 그대로 유지 결과: w1=0, w2=0, b=0 (변화 없음)

데이터 2: 입력 (0, 1), 정답 1

text
1) 계산: z = 0x0 + 0x1 + 0 = 0 2) 예측: z = 0, 0보다 크지 않으므로 → 출력 0 3) 오차: 정답(1) - 예측(0) = +1 ← 틀렸다! 4) 업데이트: w1 = 0 + 0.5 x (+1) x 0 = 0 w2 = 0 + 0.5 x (+1) x 1 = 0.5 ← 바뀜! b = 0 + 0.5 x (+1) = 0.5 ← 바뀜! 결과: w1=0, w2=0.5, b=0.5

벌써 변화가 생겼죠? w2와 b가 올라갔어요. "x2가 1일 때 더 크게 반응해야 한다"는 걸 배운 거예요!

데이터 3: 입력 (1, 0), 정답 1

text
1) 계산: z = 0x1 + 0.5x0 + 0.5 = 0.5 2) 예측: z = 0.5 > 0 → 출력 1 3) 오차: 정답(1) - 예측(1) = 0 4) 정답! → 수정 불필요 결과: w1=0, w2=0.5, b=0.5 (변화 없음)

데이터 4: 입력 (1, 1), 정답 1

text
1) 계산: z = 0x1 + 0.5x1 + 0.5 = 1.0 2) 예측: z = 1.0 > 0 → 출력 1 3) 오차: 정답(1) - 예측(1) = 0 4) 정답! → 수정 불필요 결과: w1=0, w2=0.5, b=0.5 (변화 없음)

Epoch 1 결과 점검

에포크 1이 끝났어요. 현재 가중치로 전체 데이터를 다시 확인해보면:

입력 (x1, x2)정답z = 0x1 + 0.5x2 + 0.5예측맞았나?
(0, 0)00.51틀림!
(0, 1)11.01맞음
(1, 0)10.51맞음
(1, 1)11.01맞음

아직 (0,0)을 틀리고 있어요. 에포크를 더 돌아야 합니다!

이런 식으로 에포크를 여러 번 반복하면, 가중치가 점점 조정되면서 결국 모든 데이터를 맞추는 값을 찾게 돼요. 보통 OR 게이트는 2~5 에포크 안에 학습이 완료됩니다.


7. 수렴(Convergence) - "학습은 언제 끝나나요?"

비유: 퍼즐 맞추기

퍼즐을 맞출 때, 마지막 조각까지 다 맞추면 "완성!"이라고 하죠. 퍼셉트론도 마찬가지예요.

수렴 = 모든 데이터에 대해 오차가 0이 되는 상태

더 이상 고칠 게 없으니, 학습이 자연스럽게 끝납니다.

text
Epoch 1: 4개 중 3개 정답 → 아직 학습 중... Epoch 2: 4개 중 3개 정답 → 아직 학습 중... Epoch 3: 4개 중 4개 정답 → 수렴! 학습 완료!

중요한 한계: 항상 수렴할까요?

정답은 "아니요" 입니다.

퍼셉트론은 선형 분리 가능한 문제만 풀 수 있어요. 직선 하나로 두 그룹을 나눌 수 있는 문제만 가능하다는 뜻이에요.

문제 유형수렴 가능?예시
선형 분리 가능 (AND, OR, NOT)가능 (반드시 수렴!)직선으로 나눌 수 있음
선형 분리 불가 (XOR)불가능 (영원히 학습 안 됨)직선으로 나눌 수 없음

이 한계가 바로 다음 레슨들에서 다룰 XOR 문제이고, 이것을 해결하기 위해 다층 퍼셉트론(MLP) 이 탄생했어요!


8. 전체 학습 알고리즘 정리

지금까지 배운 내용을 하나의 알고리즘으로 정리해볼게요:

퍼셉트론 학습 알고리즘 (Pseudocode) ===================================== 1. 초기화 - 모든 가중치(w)를 0 또는 작은 랜덤값으로 설정 - 편향(b)을 0으로 설정 - 학습률(η)을 정함 (예: 0.1) 2. 반복 (에포크를 돌림) for 각 데이터 (x, 정답) in 전체 데이터: a) 예측 = 활성화함수(w1*x1 + w2*x2 + ... + b) b) 오차 = 정답 - 예측 c) 각 가중치 업데이트: w = w + η x 오차 x 입력 d) 편향 업데이트: b = b + η x 오차 3. 수렴 확인 - 모든 데이터의 오차가 0이면 → 학습 완료! - 아니면 → 2번으로 돌아가서 다시 반복

실행 가능한 코드로 확인해보기

python
# 퍼셉트론 학습 알고리즘 - OR 게이트 data = [ ([0, 0], 0), ([0, 1], 1), ([1, 0], 1), ([1, 1], 1), ] w1, w2, b = 0.0, 0.0, 0.0 lr = 0.5 def step(z): return 1 if z > 0 else 0 for epoch in range(10): errors = 0 for inputs, target in data: x1, x2 = inputs z = w1 * x1 + w2 * x2 + b pred = step(z) error = target - pred if error != 0: errors += 1 w1 = w1 + lr * error * x1 w2 = w2 + lr * error * x2 b = b + lr * error print(f"Epoch {epoch+1}: 틀린 개수={errors}, w1={w1:.1f}, w2={w2:.1f}, b={b:.1f}") if errors == 0: print("학습 완료! 수렴했습니다!") break print(f"\n최종 가중치: w1={w1}, w2={w2}, b={b}") print("\n검증:") for inputs, target in data: x1, x2 = inputs z = w1 * x1 + w2 * x2 + b pred = step(z) print(f" 입력({x1},{x2}) -> 예측:{pred}, 정답:{target}, {'O' if pred==target else 'X'}")

위 코드를 실행하면 퍼셉트론이 실제로 OR 게이트를 몇 에포크 만에 학습하는지 볼 수 있어요!


핵심 정리

개념설명비유
학습최적의 가중치와 편향을 찾아가는 과정농구 자유투 연습
오차정답 - 예측 (방향과 크기를 알려줌)시험 채점
가중치 업데이트w_new = w_old + η x error x input요리 간 맞추기
학습률 (η)한 번에 얼마나 크게 조정할지 결정보물찾기의 걸음 크기
에포크전체 데이터를 한 바퀴 도는 것연습 1세트
수렴모든 오차가 0이 되어 학습이 끝남퍼즐 완성
한계선형 분리 가능한 문제만 학습 가능직선 하나로 나눌 수 있는 것만

학습 체크리스트

  • 학습의 4단계(예측 → 오차 확인 → 가중치 조정 → 반복)를 설명할 수 있다
  • 오차 = 정답 - 예측 공식이 왜 방향 정보를 담는지 이해한다
  • 가중치 업데이트 공식(w_new = w_old + η x error x input)을 쓸 수 있다
  • 공식에서 입력값(input)을 곱하는 이유를 설명할 수 있다
  • 학습률이 너무 크거나 작을 때 어떤 문제가 생기는지 안다
  • OR 게이트 학습 과정의 첫 에포크를 손으로 따라갈 수 있다
  • 수렴이 뭔지, 퍼셉트론이 수렴 못하는 경우가 있다는 걸 안다

다음 강의 예고

"AND, OR, NOT 게이트" 이번 레슨에서 OR 게이트 학습을 봤는데, 다음 시간에는 AND, OR, NOT 세 가지 논리 게이트를 퍼셉트론으로 직접 구현해봅니다. 각 게이트의 가중치가 어떻게 다른지, 왜 다른지 알아볼 거예요!

레슨 정보

레벨
Level 1: AI 기초 이론
예상 소요 시간
6분 57초
참고 영상
YouTube 링크

💡실습 환경 안내

코드 블록의 ▶ 실행 버튼을 누르면 브라우저에서 바로 Python을 실행할 수 있습니다.

별도 설치 없이 NumPy, Matplotlib 등 기본 라이브러리를 사용할 수 있습니다.