AI/DeepLearning

퍼셉트론 Perceptron

lgvv 2024. 4. 17. 01:20

퍼셉트론 Perceptron

퍼셉트론은 프랑크 로젠블라크가 1957년에 고안한 알고리즘.

 

퍼셉트론이란?

 

다수의 입력(input)을 받아 하나의 신호(Output)을 출력.

가중치(weight)이 각각의 입력신호에 부여되고 입력신호와 가중치의 계산의 총합이 임계값(θ)를 넘으면 1을 출력.

 

가중치는 각 신호가 결과에 주는 영향력을 조절하는 요소로 작용하여, 가중치카 클수록 해당 신호가 그만큼 더 중요함을 의미함.

 

입력이 2개인 퍼셉트론

 

 

# 퍼셉트론에 대한 대한 의사코드
if (x1*w1 + x2*w2 > θ): y = 1
else (x1*w1 + x2*w2 <= θ): y = 0

 

 

단순한 논리 회로 구현하기

 

간단하게 논리 회로를 구현.

 

  • AND 게이트
    • 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

 

OR, XOR, NAND 게이트는 뒤에서 서술

 

가중치와 편향

 

  • 가중치(weight)
    • 입력 신호가 결과 출력에 주는 영향력(중요도)를 조절하는 매개변수
  • 편향(bias)
    • 뉴런이 얼마나 쉽게 활성화되느냐를 조정(adjust)하는 매개변수

 

# 퍼셉트론에 대한 대한 의사코드
if (b + x1*w1 + x2*w2 > θ): y = 1
else (b+ x1*w1 + x2*w2 <= θ): y = 0

 

기계학습 분야에서는 학습 데이터에 과적합 되는 것을 방지하는 것이 중요한데, bias를 통해 이를 조정함.

 

편향이 높을수록 임계점을 넘기가 쉬워져 모델이 간단해지는 경향이 있어서 과소적합(underfitting)이 발생할 가능성이 높아지며,

편향이 낮을수록 임계점이 낮아 데이터의 허용범위가 넓어지는 만큼 불필요한 노이즈가 포함될 가능성이 높아질 수 있음.

이는 편향과 분산의 트레이트오프 관계를 의미.

 

bias를 조정하여 학습 과정에서 noise를 얼마나 포함하고 잘 걸러낼 수 있느냐가 관건.

 

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

 

 

  • NAND 게이트와 OR 게이트
    • AND와 OR은 AND를 기반으로 구성 가능.
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)

 

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

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

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

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

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

 

MIL/ANSI Synbol

 

 

퍼셉트론의 한계

 

지금까지 살펴본 AND, NAND, OR의 3가지 논리 회로는 선형 분류라는 특징이 있음.

> 퍼셉트론은 선형으로는 분류를 할 수 있지만 선형 분류는 가능하지만 가능하며 비선형 분류는 불가능한다는 점.

> 즉, 직선 하나로 나눈 영역만 표현할 수 있어서 비선형은 분류할 수 없음.

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

 

논리 게이트의 이미지

XOR 게이트

 

XOR은 다층 퍼셉트론으로 해결한다고 이야기했고, 이는 아래 이미지처럼 퍼셉트론을 쌓는 형태로 구현해서 해결.

 

 

 

정리

  • 퍼셉트론은 입출력을 갖춘 알고리즘. 입력을 주면 정해진 규칙에 따른 값 출력
  • 퍼셉트론에서는 가중치와 편향을 매개변수로 사용
  • 퍼셉트론으로 AND, OR 등의 논리게이트 표현 가능
  • XOR은 다중 퍼셉트론을 통해 구현
  • 단층 퍼셉트론은 선형 영역, 다층 퍼셉트론은 비선형 영역을 표현 가능.

'AI > DeepLearning' 카테고리의 다른 글

활성화 함수 계층 기본 구현 정리  (0) 2025.11.09
경사하강법 (Gradient Descent)  (1) 2025.11.09
오차역전파  (0) 2025.11.05
신경망 학습 (Neural Network Training)  (0) 2024.04.23
신경망 Neural Network  (0) 2024.04.17