02. 퍼셉트론
공부/Deep Leraning from Scratch

02. 퍼셉트론

퍼셉트론이 신경망(딥러닝)의 기원이 되는 알고리즘.

 

2.1. 퍼셉트론이란?

다수의 신호를 입력으로 받아 하나의 신호를 출력.

입력이 2개인 퍼셉트론

x₁ x₂: 입력 신호
y: 출력 신호
w₁ w₂: 가중치
원: 뉴런 or 노드


입력 신호가 뉴런에 보내질 때는 각각 고유한 가중치가 곱해진다. (w₁x₁, w₂x₂)
뉴런에서 보내온 신호의 총합이 임계값 (θ) 를 넘어설 때만 1을 출력한다. (뉴런이 활성화)
위를 수식으로 나타내면 아래와 같음.

퍼셉트론은 복수의 입력 신호 각각에 고유한 가중치를 부여한다.
가중치는 각 신호의 결과에 주는 영향력을 조절하는 요소로 작용한다.
가중치가 클수록 해당 신호가 그만큼 더 중요함을 뜻 함.

 

 

2.2. 단순한 논리 회로

2.2.1. AND 게이트

AND 게이트의 진리표

이 AND 게이트를 퍼셉트론으로 표현하려면, 진리표대로 작동하도록 하는 w₁, w₂, θ 값을 정해야 함.
위 진리표를 만족하는 조합은 많음. (0.5, 0.5, 0.7) (0.5, 0.5, 0.8) (1.0, 1.0, 1.0) 등.

 

2.2.2. NAND 게이트와 OR 게이트

NAND 게이트의 진리표

NAND 게이트도 AND게이트와 비슷함.
AND 게이트를 구현하는 매개변수의 부호를 모두 반전하기만 하면 NAND 게이트가 됨.

OR 게이트의 진리표

OR 게이트도 똑같이 매개변수를 설정하면 만들 수 있음.

퍼셉트론으로 AND, NAND, OR 논리회로를 표현할 수 있음.
퍼셉트론의 구조는 AND, NAND, OR 게이트 모두에서 똑같음.
세 가지 게이트에서 다른 것은 매개변수(가중치와 임계값)의 값 뿐.

 

 

2.3. 퍼셉트론 구현하기

2.3.1. 간단한 구현부터

# AND 게이트를 구현한 함수
def AND(x1, x2):
    w1, w2, theta = 0.5, 0.5, 0.7
    tmp = x1 * w2 + x2 * w2
    if tmp <= theta:
        return 0
    elif tmp > theta:
        return 1


print(AND(0, 0))  # 0
print(AND(1, 0))  # 0
print(AND(0, 1))  # 0
print(AND(1, 1))  # 1

 

2.4. 퍼셉트론의 한계

앞에서 본 기존식에서 θ를 편향(bias)을 의미하는 b로 치환한다.
아래의 식은 θ를 -b로 치환.

 

 

 

2.5. 다층 퍼셉트론이 충돌한다면

2.6. NAND에서 컴퓨터까지

2.7. 정리