Replicated

퍼셉트론 (Perceptron) 본문

빅데이터마이닝

퍼셉트론 (Perceptron)

라구넹 2025. 6. 7. 21:57

퍼셉트론

- 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