AI 및 자동화

[DL] 퍼셉트론

lgvv 2024. 4. 17. 01:20

퍼셉트론

 

퍼셉트론이란?

다수의 입력을 받아 하나의 신호(0 또는 1)를 출력

 

입력이 2개인 퍼셉트론

 

단순한 논리 게이트 구현

 

AND 게이트

def AND(x1, x2, w1, w2, b):
    x = np.array([x1, x2])
    w = np.array([w1, w2])
    tmp = np.sum(w*x) + b
    if tmp <= 0:
        return 0
    elif tmp > 0:
        return 1

 

AND 게이트는 위의 식에서 치환을 적절하게 활용해서 구현할 수 있음.

 

theta를 -b로 치환

 

w(가중치)는 신호가 결과에 주는 영향력(중요도)를 나타냄.
b(편향)은 뉴런이 얼마나 쉽게 활성화 될 수 있는지를 나타냄.

 

 

NAND 게이트와 OR 게이트

def NAND(x1, x2, w1, w2, b):
    return AND(x1, x2, -w1, -w2, b)

def OR(x1, x2, w1, w2, b):
    return AND(x1, x2, w1, w2, -b)

 

AND와 OR은 AND를 기반으로 구성 가능.

 

NAND의 경우에는 AND의 결과와 반대가 되어야 함.

즉, w에 음수를 제공하여 결과값을 반대로 얻을 수 있음.

(enum을 통해 AND의 결과값을 반대 결과로 치환하는 것 또한 하나의 방법.)

OR은 뉴런 중 하나만 활성화된다면 그 출력은 활성화임.

따라서 편향을 조정하여 활성화 정도를 결정.

 

 

NAND의 논리게이트

 

 

XOR 게이트

베타적 논리합으로 두 입력층의 값이 달라야 활성화 된다.

위에 본 친구들은 선형이지만 XOR은 아래 그래프처럼 비선형.

이는 다층 퍼셉트론으로 해결할 수 있음.

 

XOR 게이트 그래프

 

 

XOR은 다층 퍼셉트론으로 해결

다층 퍼셉트론은 아래처럼 작성

논리게이트

 

def XOR(x1, x2, w1, w2, b):
    s1 = NAND(x1, x2, w1, w2 ,b)
    s2 = OR(x1, x2)
    y = AND(s1, s2)
    return y

 

 

 

정리

 - 퍼셉트론은 입출력을 갖춘 알고리즘. 입력을 주면 정해진 규칙에 따른 값 출력

 - 퍼셉트론에서는 가중치와 편향을 매개변수로 사용

 - 퍼셉트론으로 AND, OR 등의 논리게이트 표현 가능

 - XOR은 다중 퍼셉트론을 통해 구현

 - 단층 퍼셉트론은 선형 영역, 다층 퍼셉트론은 비선형 영역을 표현 가능.

 

'AI 및 자동화' 카테고리의 다른 글

티스토리 크롤링 포스팅 제목과 링크 추출 자동화 (Python)  (10) 2024.10.01
[DL] 신경망 학습  (0) 2024.04.23
[DL] 신경망  (0) 2024.04.17