일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- level design
- CTF
- 게임 개발
- 유니티
- gameplay tag
- gameplay effect
- gameplay ability system
- rpc
- Aegis
- Unreal Engine
- C++
- stride
- 보안
- UI
- local prediction
- listen server
- widget
- Replication
- os
- unity
- 언리얼 엔진
- gas
- attribute
- MAC
- 게임개발
- animation
- Multiplay
- photon fusion2
- ability task
- 언리얼엔진
- Today
- Total
Replicated
퍼셉트론 (Perceptron) 본문
퍼셉트론
- Perception(지각) + Neuron(뉴런)
- 1957 프랭크 로젠블렛이 고안
- 신경망(딥러닝)의 기원이 되는 알고리즘
다수의 신호를 입력으로 받아 하나의 신호를 출력
신호의 흐름을 만들고 정보를 앞으로 전달
단, 실제 전류와 달리 흐른다/안흐른다(1이나 0)의 두가지 값을 가짐
* 1 -> 신호가 흐른다 0 -> 신호가 흐르지 않는다
입력으로 2개의 신호를 받는 퍼셉트론의 예
원: 뉴런 or 노드
뉴런이 활성화 된다 -> 뉴런에서 보내온 신호의 총합이 정해진 한계를 넘어 1을 출력할 때
θ: 임계값
x1, x2: 입력 신호
w1, w2: 가중치
AND 게이트 퍼셉트론 표현
x1 | x2 | y |
0 | 0 | 0 |
1 | 0 | 0 |
0 | 1 | 0 |
1 | 1 | 1 |
가능한 w1, w2, θ 조합: (1, 1, 1.1)
NAND 게이트 표현
x1 | x2 | y |
0 | 0 | 1 |
1 | 0 | 1 |
0 | 1 | 1 |
1 | 1 | 0 |
가능한 w1, w2, θ 조합: (-1, -1, -1.1)
사실 AND 게이트를 구현하는 매개변수의 부호를 모두 반전하기만 하면 NAND 게이트가 됨
OR 게이트 표현
x1 | x2 | y |
0 | 0 | 0 |
1 | 0 | 1 |
0 | 1 | 1 |
1 | 1 | 1 |
가능한 w1, w2, θ 조합: (1, 1, 0.5)
퍼셉트론 구조가 AND, NAND, OR 게이트 모두 같음
서로 다른 태스크에서 같은 모델 사용 가능
서로 다른 입력-출력 쌍으로 학습해 서로 다른 가중치 도출
x1, x2를 인수로 받는 AND 함수 구현
def AND(x1, x2):
w1, w2, theta = 0.5, 0.5, 0.7
tmp = w1 * x1 + w2 * x2
if tmp <= theta:
return 0
elif tmp > theta:
return 1
가중치를 곱한 입력의 총합이 임계값을 넘으면 1을 반환하고 그 외에는 0을 반환
편향의 추가
기호 표기만 바뀐 거고 의미는 같음. 임계 대신 편향을 씀
b -> bias (편향)
퍼셉트론은 입력 신호에 가중치를 곱한 값과 편향을 합하여 그 값이 0이 넘으면 1을 출력, 그렇지 않으면 0을 출력
import numpy as np
x = np.array([0, 1])
w = np.array([0.5, 0.5])
b = -0.7
np.sum(w*x) + b
대략 -0.2
편향은 w1, w2와 기능이 다름
w1, w2는 각 입력 신호 결과에 주는 영향력을 조절하는 매개변수
편향은 얼마나 쉽게 뉴런이 활성화하느냐를 조정하는 매개변수
def AND(x1, x2):
x = np.array([x1, x2])
w = np.array([0.5, 0.5])
b = -0.7
tmp = np.sum(x * w) + b
if tmp <= 0:
return 0
elif tmp > 0:
return 1
가중치와 편향을 도입한 AND 게이트
NAND, OR도 w랑 b만 다르고 모델만 다름
NAND -0.5, -0.5, 0.7
OR 0.5, 0.5, -0.4
XOR 게이트는?
지금까지 본 퍼셉트론으로 구현 불가
결과가 비선형적이기 때문. 퍼셉트론은 직선 하나로 나눈 영역만 표현할 수 있음(선형)
층을 쌓아 다중 퍼셉트론을 만들어서 구현 가능
x1, x2를 각각 NAND, OR 한 결과를 AND하면 XOR이 됨
def XOR(x1, x2):
tmp1 = NAND(x1, x2);
tmp2 = OR(x1, x2);
return AND(tmp1, tmp2)
0층의 두 뉴런이 입력 신호를 받아 1층의 뉴런으로 신호를 보냄
1층의 뉴런이 2층의 뉴런으로 신호를 보내고, 2층의 뉴런은 y를 출력
퍼셉트론은 층을 쌓아 더 다양한 것을 표현 가능
'빅데이터마이닝' 카테고리의 다른 글
신경망 손글씨 분류 (MNIST), 순전파(forward propagation) (0) | 2025.06.08 |
---|---|
신경망 (0) | 2025.06.07 |
나이브 베이지안 분류기 (0) | 2025.04.12 |
베이즈 분류기 (0) | 2025.04.12 |
다중클래스 분류의 코드 구현 (0) | 2025.04.12 |