기록하기

뉴런과 퍼셉트론의 차이 본문

AI 수업

뉴런과 퍼셉트론의 차이

_parkdaxun 2023. 3. 27. 09:31

뉴런과 퍼셉트론의 차이

  • 뉴런(neuron)은 실제 생물학적인 뉴런과 유사한 기능을 수행하는 인공신경망의 기본 단위입니다. 뉴런은 입력 신호를 받아들이고, 이를 처리하여 출력 신호를 생성합니다. 뉴런은 여러 개의 가중치(weight)와 활성화 함수(activation function)를 가지고 있습니다.
  •  
  • 퍼셉트론(perceptron)은 인공신경망의 한 종류로, 뉴런의 기본적인 형태로 볼 수 있습니다. 퍼셉트론은 입력값과 가중치(weight)를 곱하여 총합(sum)을 구하고, 이를 활성화 함수(activation function)에 넣어서 출력값을 생성합니다. 퍼셉트론은 입력값이 특정 임계치(threshold)보다 큰 경우 1을 출력하고, 그렇지 않은 경우 0을 출력합니다.

 

따라서, 뉴런은 여러 개의 가중치와 활성화 함수를 가지고 있으며, 입력값이 일정 임계치를 넘으면 출력값이 발생합니다.

반면에, 퍼셉트론은 입력값과 가중치를 곱한 총합을 활성화 함수에 넣어서 출력값을 생성하며, 입력값이 일정 임계치를 넘으면 1을 출력하고 그렇지 않으면 0을 출력합니다.

 

 

 

퍼셉트론의 특징

  1. 이진 분류(binary classification) 문제에 적합합니다. 퍼셉트론은 입력값이 어떤 클래스에 속하는지 이진 분류(binary classification) 문제를 해결하는 데에 적합합니다. 이진 분류 문제는, 입력값을 두 가지로 분류하는 문제로 예를 들면, 스팸 메일 필터링, 긍정/부정 감성 분석 등이 있습니다.
  2. 선형 분리 가능(linearly separable)한 문제를 해결합니다. 퍼셉트론은 입력값을 선형 결합한 결과를 활성화 함수(activation function)에 입력하여 결과를 출력합니다. 이 때, 입력값이 선형 분리 가능한 경우, 즉 하나의 초평면(hyperplane)으로 클래스를 분리할 수 있는 경우에 효과적으로 사용됩니다.
  3. 가중치 학습 알고리즘으로 학습합니다. 퍼셉트론은 가중치 학습 알고리즘(weight learning algorithm)을 사용하여 가중치를 자동으로 학습합니다. 학습 데이터셋에서 입력값과 실제 출력값을 비교하면서, 가중치를 조정하여 오차를 최소화하는 방향으로 학습합니다.
  4. 단일 층(single layer) 구조를 가집니다. 퍼셉트론은 입력값과 출력값 사이에 하나의 층(layer)만 존재하며, 이를 단일 층(single layer) 구조라고 합니다. 이러한 구조로 인해, 퍼셉트론은 비교적 간단하게 구현할 수 있습니다.
  5. XOR 문제를 해결할 수 없습니다. 퍼셉트론은 하나의 선형 결합만으로 입력값을 분류하기 때문에, XOR 문제와 같이 비선형(non-linear) 문제를 해결할 수 없습니다. XOR 문제는 두 개의 입력값을 XOR 게이트로 연결한 경우, 선형 결합으로는 클래스를 분리할 수 없기 때문에 퍼셉트론으로는 해결할 수 없습니다.

 

 
XOR문제에서 단일퍼셉트론이 가지는 문제

XOR 문제는 두 개의 입력값을 XOR 게이트로 연결한 경우, 선형 결합으로는 클래스를 분리할 수 없는 비선형 문제입니다. 따라서, 단일 퍼셉트론(single perceptron)으로는 XOR 문제를 해결할 수 없습니다.

XOR 문제를 해결하기 위해서는, 단일 퍼셉트론보다 더 복잡한 구조를 가지는 다층 퍼셉트론(multi-layer perceptron, MLP)이 필요합니다. 다층 퍼셉트론은 여러 개의 퍼셉트론을 층(layer)으로 구성하여 비선형 문제를 해결할 수 있습니다.

 

MLP는 입력층(input layer), 은닉층(hidden layer), 출력층(output layer)으로 구성되며, 각 층은 여러 개의 퍼셉트론으로 구성됩니다.

 

입력층과 출력층은 각각 하나의 층으로 구성되고, 은닉층은 여러 개의 층으로 구성될 수 있습니다.

 

XOR 문제의 경우, 입력층에는 두 개의 입력값을 받는 뉴런이 있고, 은닉층에는 두 개의 퍼셉트론이 있습니다.

이 때, 은닉층의 두 개의 퍼셉트론은 비선형 함수인 시그모이드 함수를 활성화 함수로 사용하여, 입력값을 비선형 변환하고, 출력값을 생성합니다. 출력층은 은닉층에서 생성된 출력값을 받아서 최종 결과값을 출력합니다.

따라서, 다층 퍼셉트론은 XOR 문제와 같은 비선형 문제를 해결할 수 있으며, 은닉층을 추가하여 구조를 더 복잡하게 만들 수 있습니다.

 

 

다층 퍼셉트론(MLB)

다층 퍼셉트론(Multi-Layer Perceptron, MLP)은 여러 개의 은닉층(hidden layer)을 포함하는 인공 신경망 구조로, 비선형 문제를 해결하기 위한 대표적인 모델입니다

 

다층 퍼셉트론으로 XOR 문제 해결하기

import numpy as np

# 가중치와 비이어스
w11 = np.array([-2, -2])
w12 = np.array([2, 2])
w2 = np.array([1, 1])

b1 = 3
b2 = -1
b3 = -1

# 퍼셉트론
def MLP(x, w, b) :
  y = np.sum(w * x) + b
  if y <= 0:
    return 0
  else :
    return 1

# NAND 게이트
def NAND(x1, x2):
  return MLP(np.array([x1, x2]), w11, b1)


# OR 게이트
def OR(x1, x2):
  from MLP(np.array([x1, x2]), w12, b2)

# AND 게이트
def AND(x1, x2) :
  return MLP(np.array([x1, x2]), w2, b3)

# XOR 게이트
def XOR(x1, x2) :
  return AND(NAND(x2, x2), OR(x1, x2))

# x1 값, x2 값을 번걸아 대입하며 최종 값 출력
for i in [(0, 0), (1, 0), (0, 1), (1, 1)]:
  y = XOR(x[0], y[1])
  print("입력 값: " + str(x) + " 출력 값: " + str(y))

 

출력

 

입력 값 : (0, 0) 출력 값 : 0

입력 값 : (1, 0) 출력 값 : 1

입력 값 : (0, 1) 출력 값 : 1

입력 값 : (1, 1) 출력 값 : 0