
학습 내용
퍼셉트론 구조
학습 목표
이 레슨을 완료하면 여러분은:
- •퍼셉트론의 4가지 구성요소(입력, 가중치, 편향, 활성화 함수)를 자신만의 말로 설명할 수 있어요
- •퍼셉트론이 어떻게 "판단"을 내리는지 전체 흐름을 그릴 수 있어요
- •가중치와 편향이 왜 필요한지 직관적으로 이해해요
- •활성화 함수 3가지(계단, 시그모이드, ReLU)의 차이를 구분할 수 있어요
- •간단한 스팸 메일 분류를 직접 손으로 계산해볼 수 있어요
핵심 메시지
"퍼셉트론은 여러 정보를 모아서 하나의 판단을 내리는 의사결정 기계예요." 그리고 AI의 학습이란, 이 기계 안의 숫자(가중치와 편향)를 최적으로 조절하는 과정이에요!
1. 퍼셉트론, 대체 뭔가요?
일상 비유: 아침에 우산을 가져갈까?
여러분이 아침에 집을 나서기 전에 우산을 가져갈지 결정한다고 해볼게요. 이때 머릿속에서 어떤 일이 벌어지나요?
"비 올 확률이 70%래... 하늘도 흐리네... 그런데 날씨 앱은 오후에 갠다고 하는데?"
이 과정을 차근차근 나눠보면:
| 단계 | 여러분의 머릿속 | 퍼셉트론에서는 |
|---|---|---|
| 1단계: 정보 수집 | 비 확률 70%, 구름 많음, 앱 예보 "맑음" | 입력(Input) |
| 2단계: 중요도 판단 | "비 확률이 제일 중요하지!" | 가중치(Weight) |
| 3단계: 기본 성향 | "나는 원래 우산 잘 안 들고 다녀" | 편향(Bias) |
| 4단계: 최종 결정 | "종합하면... 가져가자!" | 활성화 함수(Activation) |
바로 이거예요! 퍼셉트론은 여러분이 매일 하는 의사결정 과정을 수학으로 옮긴 것이에요.
왜 이게 AI에서 중요할까요?
현대 AI(ChatGPT, 이미지 인식, 자율주행 등)는 전부 이 퍼셉트론을 수백만 개 쌓아 올린 거예요. 하나하나는 단순하지만, 모이면 놀라운 일을 해요. 레고 블록 하나는 별것 아니지만, 수천 개를 쌓으면 성을 만들 수 있는 것처럼요!
퍼셉트론의 처리 흐름
입력(x) → 가중치 곱하기(w x x) → 전부 더하기(+편향) → 활성화 함수 → 출력(y)
좀 더 구체적으로 보면:
이제 각 부품을 하나씩 자세히 뜯어볼게요!
2. 입력 (Input) - 정보를 받아들이는 통로
일상 비유: 시험 답안지
시험을 채점한다고 생각해보세요. 채점자(퍼셉트론)에게 학생의 답안지가 입력이에요. 채점자는 답안지의 내용을 바꿀 수 없잖아요? 이미 학생이 적어낸 거니까요. 그냥 있는 그대로 받아서 판단하는 거예요.
퍼셉트론의 입력도 마찬가지예요. 외부에서 들어오는 데이터를 있는 그대로 받아들이는 역할을 해요.
다양한 AI에서의 입력 예시
| AI 활용 분야 | 입력이 되는 것 | 구체적으로 |
|---|---|---|
| 이미지 인식 | 사진의 픽셀 | 각 점의 밝기 (0~255 숫자) |
| 스팸 메일 분류 | 메일 내용 | "무료" 포함? "당첨" 포함? (0 또는 1) |
| 집값 예측 | 집 정보 | 면적 30평, 방 3개, 역까지 500m |
| 영화 추천 | 사용자 정보 | 액션 5점, 로맨스 3점, 공포 1점 |
핵심 포인트
입력에 대해 꼭 기억해야 할 것이 하나 있어요:
입력값은 학습 과정에서 절대 변하지 않아요! 입력은 그저 외부에서 주어지는 데이터일 뿐이에요. 퍼셉트론이 "배운다"는 건 입력을 바꾸는 게 아니라, 다음에 나올 가중치와 편향을 조절하는 거예요.
3. 가중치 (Weight) - "이 정보가 얼마나 중요해?"
일상 비유: 친구들의 맛집 추천
새로운 맛집을 고른다고 해볼게요. 세 친구가 각각 추천을 해요:
- •미식가 친구: "거기 진짜 맛있어!" → 이 말은 무게감 있게 들리죠?
- •아무거나 잘 먹는 친구: "나쁘지 않던데" → 보통 정도로 참고하죠?
- •입맛이 완전 다른 친구: "괜찮더라" → 좀 할인해서 듣죠?
여기서 각 친구의 말에 부여하는 신뢰도가 바로 가중치예요!
가중치란?
가중치(Weight)는 각 입력이 최종 결정에 얼마나 영향을 미치는지를 나타내는 숫자예요.
큰 가중치 = "이 정보 정말 중요해!" 작은 가중치 = "이건 별로 안 중요해"
스팸 메일 분류로 보는 가중치
스팸 메일을 걸러내는 AI를 만든다고 해볼게요. 메일에서 특정 단어가 등장하는지를 입력으로 받고, 각 단어마다 "스팸일 확률에 얼마나 기여하는지"를 가중치로 정해요:
| 단어 | 가중치 | 왜 이런 가중치일까? |
|---|---|---|
| "무료" | 2.0 (높음) | 스팸 메일에 자주 등장하니까! |
| "당첨" | 1.8 (높음) | 역시 스팸의 전형적 단어 |
| "안녕하세요" | 0.1 (낮음) | 정상 메일에도 많이 쓰여서 구분 능력이 낮음 |
| "회의" | -0.5 (음수!) | 이 단어가 있으면 오히려 정상 메일일 가능성이 높음 |
가중치 값의 의미 정리
| 가중치 값 | 의미 | 비유 |
|---|---|---|
| 큰 양수 (예: 2.0) | 결과에 강하게 "YES" 방향으로 영향 | 미식가 친구의 강력 추천 |
| 작은 양수 (예: 0.1) | 약간만 영향 | 관심 없는 친구의 의견 |
| 0 | 완전히 무시됨 | 의견을 아예 안 듣는 것 |
| 음수 (예: -1.0) | 반대 방향으로 영향 (입력이 크면 출력은 작아짐) | "그 친구가 좋다면 난 안 갈래" |
왜 가중치가 AI의 핵심일까?
여기서 정말 중요한 포인트!
가중치는 AI가 학습하면서 스스로 조절하는 값이에요! 처음에는 아무 값(예: 전부 0)으로 시작하지만, 데이터를 보면서 "아, '무료'라는 단어는 스팸 판별에 중요하구나!"라고 깨닫고 가중치를 높여가요. 이게 바로 AI가 배운다는 것의 실체예요.
4. 편향 (Bias) - "나는 원래 이런 성향이야"
일상 비유: 까탈스러운 심사위원 vs 너그러운 심사위원
오디션 프로그램을 생각해보세요:
- •까탈스러운 심사위원: 기본적으로 "불합격"에서 시작해요. 정말 잘해야만 합격을 줘요.
- •너그러운 심사위원: 기본적으로 "합격"에서 시작해요. 심각한 실수가 있어야 불합격을 줘요.
두 심사위원 모두 같은 참가자(입력)를 보고, 같은 기준(가중치)을 적용하더라도, 기본 성향이 다르면 결과가 달라질 수 있어요. 이 "기본 성향"이 바로 **편향(Bias)**이에요!
편향이란?
편향은 입력과 무관하게 퍼셉트론의 출력에 더해지는 기본값이에요. 쉽게 말해, "아무 정보가 없을 때 어느 쪽으로 기울어져 있느냐"를 결정해요.
스팸 필터에서의 편향
| 편향 값 | 의미 | 결과 |
|---|---|---|
| -5 (큰 음수) | "기본적으로 정상 메일이라고 봐" | 스팸 증거가 많이 쌓여야만 스팸 판정 |
| 0 | "선입견 없이 판단할게" | 중립적 시작 |
| +2 (양수) | "일단 의심부터 할게" | 조금만 의심스러워도 스팸 판정 |
편향이 없으면 어떻게 될까?
편향이 없으면, 모든 입력이 0일 때 출력도 무조건 0이에요. 하지만 현실에서는 "아무 정보가 없어도 어느 정도 기본 판단"이 필요한 경우가 많아요.
예를 들어, 어떤 동네의 기본 집값이 3억이라면, 방 개수나 면적 정보 없이도 "대략 3억쯤이겠지"라는 기준점이 있는 거죠. 이 기준점 역할을 편향이 해요!
편향도 가중치처럼 학습 과정에서 자동으로 조절돼요!
5. 퍼셉트론의 핵심 공식
자, 이제 퍼셉트론의 각 부품을 모두 배웠으니 전체를 하나로 합쳐볼게요.
비유로 먼저 이해하기
여러분이 기말고사 종합 점수를 매기는 선생님이라고 해볼게요:
종합점수 = (국어 점수 x 국어 비중) + (수학 점수 x 수학 비중) + (영어 점수 x 영어 비중) + 기본 가산점
이걸 퍼셉트론 용어로 바꾸면:
z = (입력1 x 가중치1) + (입력2 x 가중치2) + (입력3 x 가중치3) + 편향
Step 1: 가중합 계산 (Weighted Sum)
z = w1*x1 + w2*x2 + ... + wn*xn + b
풀어서 쓰면:
- •w1, w2, ... = 각 입력의 가중치
- •x1, x2, ... = 각 입력값
- •b = 편향
- •z = 가중합 (weighted sum)
각 입력에 가중치를 곱한 뒤, 전부 더하고, 편향을 더하면 가중합 z가 나와요!
Step 2: 활성화 함수 적용
y = f(z)
가중합 z를 활성화 함수 f에 넣어서 최종 출력 y를 얻어요. (활성화 함수는 바로 다음 섹션에서!)
전체 공식 한 눈에
| 기호 | 이름 | 뜻 |
|---|---|---|
| x | 입력 (Input) | 외부에서 들어오는 데이터 |
| w | 가중치 (Weight) | 각 입력의 중요도 |
| b | 편향 (Bias) | 기본 성향, 기준점 |
| z | 가중합 (Weighted Sum) | w x x의 합 + b |
| f | 활성화 함수 (Activation) | 최종 판단을 내리는 함수 |
| y | 출력 (Output) | 퍼셉트론의 최종 결과 |
최종 공식: y = f(w1x1 + w2x2 + ... + wn*xn + b)
6. 활성화 함수 (Activation Function) - "최종 판단을 내려!"
일상 비유: 합격선
시험에서 종합점수(가중합 z)를 구했다고 해서 끝이 아니죠? "합격인지 불합격인지" 최종 판단이 필요해요. 이 최종 판단을 내리는 게 활성화 함수예요.
그런데 판단 방식에도 여러 가지가 있을 수 있어요:
- •"60점 이상이면 무조건 합격, 미만이면 무조건 불합격!" → 계단 함수
- •"점수에 따라 합격 확률을 부드럽게 매기자" → 시그모이드
- •"0점 이하는 0점 처리하고, 그 위는 점수 그대로!" → ReLU
6-1. 계단 함수 (Step Function)
가장 단순한 판단 방식이에요. "기준을 넘으면 1, 못 넘으면 0" - 전기 스위치처럼 딱 ON/OFF!
규칙:
- •z > 0 이면 → 출력 = 1 (활성화!)
- •z <= 0 이면 → 출력 = 0 (비활성화)
장점: 직관적이고 단순해요. 단점: "거의 합격"이나 "아슬아슬하게 불합격"의 미묘한 차이를 표현 못 해요. 0 아니면 1뿐이니까요.
6-2. 시그모이드 (Sigmoid)
"0%에서 100% 사이의 확률"로 부드럽게 출력해요. 실생활에서의 "확신 정도"와 비슷해요!
특징:
- •출력이 항상 0과 1 사이
- •z = 0일 때 출력이 정확히 0.5 (반반)
- •z가 아주 크면 1에 가까워지고, 아주 작으면 0에 가까워짐
활용 예시:
- •출력 0.9 → "90% 확신으로 스팸이에요!"
- •출력 0.3 → "30%만 스팸 같고, 아마 정상 메일이에요"
- •출력 0.5 → "반반이네요, 잘 모르겠어요"
왜 유용할까요? "이건 스팸이다/아니다"보다 "스팸일 확률이 87%다" 라고 말해주는 게 훨씬 유용하잖아요!
6-3. ReLU (Rectified Linear Unit)
현대 딥러닝에서 가장 많이 쓰이는 활성화 함수예요! 규칙이 놀라울 정도로 단순해요:
규칙:
- •z > 0 이면 → 출력 = z (그대로 통과!)
- •z <= 0 이면 → 출력 = 0 (차단!)
비유: 댐(dam)을 생각해보세요. 수위가 0 아래면 물이 안 나오고, 0 위면 수위만큼 물이 흘러나와요.
왜 현대 딥러닝에서 인기일까요?
- •계산이 매우 빨라요 (곱하기, 나누기 필요 없이 비교 한 번이면 끝!)
- •딥러닝처럼 층이 깊어져도 학습이 잘 돼요 (기술적 이유는 나중 강의에서!)
활성화 함수 비교 정리
| 활성화 함수 | 출력 범위 | 특징 | 주로 쓰이는 곳 |
|---|---|---|---|
| 계단 함수 | 0 또는 1 | 단순 ON/OFF | 초기 퍼셉트론 (역사적) |
| 시그모이드 | 0 ~ 1 | 확률처럼 해석 가능 | 이진 분류의 출력층 |
| ReLU | 0 ~ 무한대 | 단순하고 효율적 | 현대 딥러닝의 숨겨진 층 |
7. 실제 예제: 스팸 메일 분류기를 만들어보자!
이론만으로는 감이 안 오죠? 직접 계산해봅시다!
설정
우리의 스팸 분류 퍼셉트론:
| 항목 | 값 | 설명 |
|---|---|---|
| 입력 x1 | "무료" 포함 여부 | 있으면 1, 없으면 0 |
| 입력 x2 | "당첨" 포함 여부 | 있으면 1, 없으면 0 |
| 입력 x3 | 느낌표 5개 이상 | 있으면 1, 없으면 0 |
| 가중치 w1 | 2.0 | "무료"는 스팸 강력 신호 |
| 가중치 w2 | 1.8 | "당첨"도 스팸 신호 |
| 가중치 w3 | 1.2 | 느낌표 남발도 스팸 신호 |
| 편향 b | -2.5 | 기본적으로 정상 메일로 봄 |
| 활성화 함수 | 계단 함수 | z > 0 이면 스팸! |
예제 1: "무료 쿠폰 당첨!!!!!!"
이 메일에는 "무료" 있고, "당첨" 있고, 느낌표 6개 있어요!
입력: x1=1, x2=1, x3=1
Step 1: 가중합 계산
z = (2.0 x 1) + (1.8 x 1) + (1.2 x 1) + (-2.5)
z = 2.0 + 1.8 + 1.2 - 2.5
z = 2.5
Step 2: 활성화 함수 적용
z = 2.5 > 0 → 출력 = 1
결과: 스팸!
스팸 신호(2.0 + 1.8 + 1.2 = 5.0)가 편향의 벽(-2.5)을 넘었기 때문에 스팸으로 판정돼요!
예제 2: "회의 일정 공유드립니다"
이 메일에는 "무료" 없고, "당첨" 없고, 느낌표도 없어요.
입력: x1=0, x2=0, x3=0
Step 1: 가중합 계산
z = (2.0 x 0) + (1.8 x 0) + (1.2 x 0) + (-2.5)
z = 0 + 0 + 0 - 2.5
z = -2.5
Step 2: 활성화 함수 적용
z = -2.5 <= 0 → 출력 = 0
결과: 정상 메일!
스팸 증거가 하나도 없으니, 편향(-2.5)이 그대로 남아서 정상 메일로 판정!
예제 3: "무료 세미나 안내드립니다"
"무료"만 포함, 나머지는 없어요.
입력: x1=1, x2=0, x3=0
Step 1: 가중합 계산
z = (2.0 x 1) + (1.8 x 0) + (1.2 x 0) + (-2.5)
z = 2.0 + 0 + 0 - 2.5
z = -0.5
Step 2: 활성화 함수 적용
z = -0.5 <= 0 → 출력 = 0
결과: 정상 메일!
"무료"라는 단어 하나만으로는 스팸 판정이 안 돼요. 편향이 -2.5이기 때문에, 스팸 증거가 충분히 쌓여야만 벽을 넘을 수 있거든요. 편향이 "함부로 스팸 판정하지 마!"라는 안전장치 역할을 하고 있는 거예요!
만약 편향이 0이었다면?
예제 3에서 편향이 0이면: z = 2.0 > 0 → 스팸 판정! "무료 세미나 안내"가 스팸이 되어버리는 거죠. 이래서 편향 조절이 중요해요!
8. 전체 그림 다시 보기
퍼셉트론의 모든 부품이 어떻게 협력하는지 정리해볼게요:
각 부품의 역할을 한 문장으로 정리하면:
- •입력: "이런 데이터가 들어왔어요"
- •가중치: "이 데이터가 얼마나 중요한지 결정할게요"
- •편향: "기본 기준선을 정할게요"
- •활성화 함수: "최종 판단을 내릴게요!"
핵심 정리
| 구성요소 | 하는 일 | AI가 학습하는 값? | 비유 |
|---|---|---|---|
| 입력 (Input) | 외부 데이터를 받아들임 | 아니오 (고정) | 시험 답안지 |
| 가중치 (Weight) | 각 입력의 중요도 결정 | 예! (핵심) | 친구별 신뢰도 |
| 편향 (Bias) | 기본 성향/기준점 설정 | 예! | 까탈/너그러운 심사위원 |
| 활성화 함수 | 최종 판단 방식 결정 | 아니오 (사람이 선택) | 합격선 기준 방식 |
AI의 학습 = 가중치(w)와 편향(b)의 최적값을 데이터로부터 찾아가는 과정!
학습 체크리스트
- • 퍼셉트론의 4가지 구성요소(입력, 가중치, 편향, 활성화 함수)를 설명할 수 있다
- • "우산 비유"로 퍼셉트론의 동작 원리를 설명할 수 있다
- • y = f(sum(wi*xi) + b) 공식에서 각 기호가 무엇을 뜻하는지 안다
- • 가중치가 크다/작다/음수일 때 각각 어떤 의미인지 설명할 수 있다
- • 편향이 왜 필요한지 자신만의 말로 설명할 수 있다
- • 계단함수, 시그모이드, ReLU의 차이를 구분할 수 있다
- • 스팸 분류 예제를 손으로 직접 계산할 수 있다
다음 강의 예고
"퍼셉트론 학습"
이번 강의에서 우리는 퍼셉트론의 구조를 배웠어요. 그런데 한 가지 빠진 게 있죠? 가중치와 편향을 어떻게 자동으로 찾아가는 걸까요?
다음 강의에서는 AI가 스스로 배우는 원리, 즉 **가중치 업데이트 방법과 학습률(Learning Rate)**에 대해 알아봐요. 퍼셉트론이 실수를 하고, 고치고, 점점 똑똑해지는 과정을 직접 따라가 볼 거예요!
레슨 정보
- 레벨
- Level 1: AI 기초 이론
- 예상 소요 시간
- 7분 14초
- 참고 영상
- YouTube 링크
💡실습 환경 안내
코드 블록의 ▶ 실행 버튼을 누르면 브라우저에서 바로 Python을 실행할 수 있습니다.
별도 설치 없이 NumPy, Matplotlib 등 기본 라이브러리를 사용할 수 있습니다.