퍼셉트론에 대해...

신민기·2025년 7월 15일

AI

목록 보기
1/17

퍼셉트론 알고리즘이란?

프랑크 로젠블라트가 1957년 고안한 알고리즘.
이것이 중요한 이유는 인공신경망에 기원이 되는 알고리즘이기 때문.

퍼셉트론

퍼셉트론은 다수의 신호를 입력으로 받아 하나의 신호를 출력.

x1x1x2x2는 입력신호, w1w1w2w2는 가중치(weight)
그림의 원을 뉴런 혹은 노드라 부름
입력신호가 뉴런에 보내질 때 각각의 가중치가 곱해짐(w1x1,w2x2w1x1, w2x2)
가중치는 각 신호가 결과에 주는 영향력을 조절하는 요소.
뉴런에서 보내온 신호의 총합이 정해진 한계를 넘어설 때만 뉴런이 활성화됨
그 한계를 임계값이라 하며, θθ 기호로 나타낸다.

이를 수식으로 나타내면

y={0  (w1x1+w2x2θ)1  (w1x1+w2x2>θ)y=\begin{cases}0\;(w1x1+w2x2\leq θ) \\1 \; (w1x1+w2x2>θ) \end{cases}

위에 식에서 θθb-b로 치환하면 퍼셉트론의 동작이 아래 수식처럼 됩니다.

여기서 b를 편향(bias)이라함

이러한 퍼셉트론으로 여러 게이트를 만들 수 있다.

ex)AND

import numpy as np

def AND(x1, x2):
    x = np.array([x1, x2])
    w = np.array([0.5, 0.5])
    b = -0.7
    tmp = np.sum(w*x) + b
    if tmp <= 0:
        return 0
    else:
        return 1

if __name__ == '__main__':
    for xs in [(0, 0), (1, 0), (0, 1), (1, 1)]:
        y = AND(xs[0], xs[1])
        print(str(xs) + " -> " + str(y))

ex)OR

import numpy as np
def OR(x1, x2):
    x = np.array([x1, x2])
    w = np.array([0.5, 0.5])
    b = -0.2
    tmp = np.sum(w*x) + b
    if tmp <= 0:
        return 0
    else:
        return 1

if __name__ == '__main__':
    for xs in [(0, 0), (1, 0), (0, 1), (1, 1)]:
        y = OR(xs[0], xs[1])
        print(str(xs) + " -> " + str(y))

ex)NAND

import numpy as np

def NAND(x1, x2):
    x = np.array([x1, x2])
    w = np.array([-0.5, -0.5])
    b = 0.7
    tmp = np.sum(w*x) + b
    if tmp <= 0:
        return 0
    else:
        return 1

if __name__ == '__main__':
    for xs in [(0, 0), (1, 0), (0, 1), (1, 1)]:
        y = NAND(xs[0], xs[1])
        print(str(xs) + " -> " + str(y))

하지만 지금까지 본 퍼셉트론으로는 XOR 게이트를 구현 할 수 없다.

AND, OR, NAND는 직선으로 나뉜 두 영역을 만들 수 있습니다.
하지만 XOR 게이트는 직선 하나로는 표현이 불가능합니다.(비선형)

이러한 단점을 없애기 위해 등장한 것이 "다층 퍼셉트론"이다.

다층 퍼셉트론은 말 그대로 퍼셉트론을 여러 층으로 구성한 것인데 예를 들어.

NAND, OR, AND 게이트를 차례대로 쌓아 다층 퍼셉트론을 만들면 XOR게이트를 구현할 수 있습니다.

이 XOR 게이트에 퍼셉트론은 맨 처음 부분인 1층에서 입력을 받아 2층에 신호를 전달하고 3층에서 이 입력 신호를 바탕으로 Q를 출력합니다.

위 그림을 예시로 들자면 0층에서 입력을 받고 0층에서 1층으로 신호가 전달되고, 이어서 1층에서 2층으로 신호가 전달하고 y를 출력합니다.

이런식으로 다층 퍼셉트론은 단층 퍼셉트론으로 표현하지 못한 것을 층을 늘려 표현할 수 있게 해줍니다.

이러한 퍼셉트론이 중요한 이유는 신경망을 이루는 기초가 되기 때문에 중요합니다.

profile
AI 어렵다

0개의 댓글