퍼셉트론

ahncheer·2025년 2월 23일

python

목록 보기
23/25

1. 퍼셉트론?

인공지능의 기초적인 신경망 모델
1950년대 후반에 프랭크 로젠블렛에 의해 제안됨.

1-1. 퍼셉트론의 구성요소 3가지

  1. 입력층 (Input Layer) : 입력값들이 들어옵니다. 예를 들어, 이진 분류 문제에서 두개의 특성(에 : 길이, 무게)을 사용할 수 있습니다.
  2. 가중치 (Weights) : 입력값에 곱해지는 값으로, 각 특성의 중요도를 조절합니다. 학습 과정을 통해 가중치가 조정됨.
  3. 활성화 함수(Activetion Function) : 가중치가 적용된 입력값들의 합을 처리하여, 분류 결과를 출력합니다.

2. 다층 퍼셉트론

  • Multilayer Perceptron, MLP
  • 하나 이상의 숨겨진 층(hidden layer)을 추가한 신경망 모델
  • 비선형적인 문제도 해결 가능

2-1. 퍼셉트론과 다층 퍼셉트론의 차이점

  1. 구조의 차이
    • 퍼셉트론 : 입력층과 출력층으로만 구성된 단일 계층 모델
    • 다층 퍼셉트론 : 입력층, 하나 이상의 숨겨진 층, 출력층으로 이루어짐.
  2. 학습 능력
    • 퍼셉트론 : 선형적으로 구분 가능한 문제에 대해서만 장 작동함.
    • 다중 퍼셉트론 : 비선형 활성화 함수를 사용하여 데이터의 복잡한 관계를 학습할 수 있음.
  3. 활성화 함수
    • 퍼셉트론 : 계단함수를 사용하여 출력값을 이진분류로 결정.
    • 다중 퍼셉트론 : 비선형 활성화 함수를 사용하여 각 층의 출력값을 계산함.
  4. 학습 알고리즘
    • 퍼셉트론 : 단순한 가중치 조정을 통해 이루어짐
    • 다중 퍼셉트론 : 역전파 알고리즘을 사용하여 학습함.

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

#  퍼셉트론

import numpy as np

# 가중치와 바이어스
w11 = np.array([-2, -2])
w12 = np.array([2, 2])
w12 = 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):
    return MLP(np.array([x1, x2]), w12, b2)

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

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

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

결과 확인

profile
개인 공부 기록용.

0개의 댓글