퍼셉트론

2026. 1. 10. 17:28·AI/이론
반응형

👋 들어가기 전

 

이번 포스팅을 시작으로, AI에 필요한 여러 이론 개념 학습하려고한다.

학습 출처는 밑바닥부터 시작하는 딥러닝 시리즈(물고기 책)를 기반으로한다.

 

첫번 쨰로 배울 개념은 퍼셉트론이다.

아... 대학교 졸업학기 때 잠깐들었던 개념.. 이걸 다시 공부하게 될 줄이야..

 

느리지만 꼼꼼히 살펴보자.


🏁 학습할 내용

  • 왜 알아야할까?
  • 개념 정리
  • 퍼셉트론을 통해 논리 Gate 구현해보기

⏰너무 늦었지만 왜 알아야할까?

 

🤔 누가 만들어낸 개념일까?

 

퍼셉트론이란 개념은 프랭크 로젠블랫이라는 미국의 심리학자가 1957년에 고안한 알고리즘이다.

 

너무 오래된 알고리즘을 왜 알야아할까??, 그 이유는 퍼셉트론이 신경망(딥러닝)의 기원이 되는

알고리즘이기 떄문이다.

 

🧩역할

다수의 신호를 입력으로 받아 하나의 신호를 출력

🔎개념 정리

 

 

🧱구성

 

 

  • 뉴런 또는 노드
    • 그림의 원에 해당
    • 입력을 하나의 기준으로 판단하고, 그 결과를 다음 뉴런에게 전달하는 의사결정 최소 단위 또는 판단 단위
  • 입력 신호
    • x1, x2
  • 가중치
    • w1, w2 
    • 가중치가 클수록, 더 강한 신로를 출력함, 신호를 세기를 통제하는 제어역할을 담당
  • 임계치 또는 편향
    • θ 또는 b
    • 신호가 임계치를 넘을 때, 뉴런이 활성화한다라고 표현, 뉴런이 얼마나 쉽게 활성화되는 기준

 

🧮 수식

 

퍼셉트론은 전달받은 입력신호와 가중치의 곱의 합이 임계값을 넘으면

1 그렇지 않으면 0으로 출력한다.

 

여기서 θ를 좌변으로 넘기면, - θ가 되고, - θ를 b라고 치환하면 식은 담음과 같이 바뀌게된다.

또한 입력되 2개가 아닌 n개라고 확장해보자.

 

여기서, b는 이제 임계치가 아닌 편향(bias)이라는 용어로 불린다.

 

정리해보자.

 

입력신호에 가중치를 곱한 모든 합에 편향을 더한 값이 0을 넘으면 1, 그렇지 않으면 0을 출력한다 

🚪퍼셉트론을 통해 논리 Gate 구현해보기

 

먼저 논리게이트의 진리표를 먼저 아래에 정리해보자.

 

1️⃣논리게이트와 진리표

🔹 AND

  • 둘 다 1일 때만 1

🔹 OR

  • 하나라도 1이면 1

🔹 NOT

  • 입력을 반대로 뒤집음

🔹 NAND

  • 둘 다 1이면 0, 나머지는 1

🔹 NOR

  • 둘 다 0일 때만 1

🔹 XOR (배타적 OR)

  • 서로 다를 때만 1

🔹 XNOR (동치)

  • 서로 같을 때만 1

 

A B AND OR NAND NOR XOR XNOR
0 0 0 0 1 1 0 1
0 1 0 1 1 0 1 0
1 0 0 1 1 0 1 0
1 1 1 1 0 0 0 1

 

 

2️⃣AND게이트 구현하기

 

먼저 임계치를 이용해서 AND를 구현해보자.

def AND(x1,x2) -> int:
    w1, w2, theta = 0.5, 0.5, 0.7
    y = x1*w1 + x2*w2
    
    if y <= theta:
        return 0
    else:
        return 1
    
print(AND(0,0), AND(1,0), AND(0,1), AND(1,1)) # 0 0 0 1

 

이제 여러개의 입력에 편향(bias)를 통해 AND를 구현해보자.

 

import numpy as np

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

 

3️⃣NAND게이트 구현하기

def NAND(x1,x2) -> int:
    x = np.array([x1, x2])
    w = np.array([-0.5, -0.5]) #가중치 부호 반대 
    b = 0.7 # 편향 반대
    y = np.sum(x * w) + b 
    
    if y <= 0:
        return 0
    else:
        return 1
    
print(NAND(0,0), NAND(1,0), NAND(0,1), NAND(1,1)) # 1 1 1 0

 

4️⃣OR게이트 구현하기

def OR(x1,x2) -> int:
    x = np.array([x1, x2])
    w = np.array([0.5, 0.5])
    b = -0.4 # 편향 조절
    y = np.sum(x * w) + b 
    
    if y <= 0:
        return 0
    else:
        return 1
    
print(OR(0,0), OR(1,0), OR(0,1), OR(1,1)) # 0 1 1 1

 

 

😭퍼셉트론의 한계

자 여기까지가 지금 우리가 알고 있는 퍼셉트론개념으로 구현할 수 있는 게이트들이다.

 

왜 그럴까?? 

바로 하나의 직선으로, 0이 될 수 있는영역과 1이될 수 있는 영역을 나누는게 단층 퍼셉트론이기때문이다.

 

이미지 출처: https://ang-love-chang.tistory.com/26

 

 

이게 바로 단층 퍼셉트론의 한계다.

단층 퍼셉트론은 선형 영역만 표현가능하고, 비선형(곡선) 영역을 표현할 수 없다.

 

만약 여기서, 단층이라는 제약을 제거하면 어떨까???

 

XOR 게이트를 구현해보면서, 층을 쌓아가는 개념을 알아보자.

 

 

5️⃣XOR게이트 구현하기

def XOR(x1,x2) -> int:
    s1 = NAND(x1,x2)
    s2 = OR(x1,x2)
    y = AND(s1,s2)
    return y

print(XOR(0,0), XOR(1,0), XOR(0,1), XOR(1,1)) # 0 1 1 0

 

 

XOR은 2층 퍼셉트론이다.

그림은 3층인데 왜, 0층부터 샐까?? 바로 0층은 입력층이기때문에

 

실제 레이어는 입력층 다음부터 카운트한다.


😀 소감 및 마무리

 

일단, 깊이파면 끝도 없지만.. 일단 맛보기로 여기까지 정리하고, 다음시간은

신경망 개념을 학습해보자.

 


출처

https://baessi.tistory.com/16

 

[디지털 논리회로] 논리 게이트, 논리회로 진리표

안녕하세요 오늘은 디지털 논리회로의 게이트와 진리표에 대해서 알아보겠습니다. 가장 먼저 전체 진리표입니다. 입력 출력 입력(A) 입력(B) AND 게이트 OR 게이트 NAND 게이트 NOR 게이트 XOR 게이트

baessi.tistory.com

 

반응형

'AI > 이론' 카테고리의 다른 글

[신경망-학습] 학습이란?  (0) 2026.01.24
[신경망-MNIST] MNIST 데이터셋  (1) 2026.01.22
[신경망-활성화 함수] 소프트맥스 함수  (1) 2026.01.14
[신경망] 3층 신경망 구현해보기  (0) 2026.01.13
[신경망-활성화 함수] 활성화 함수  (0) 2026.01.12
'AI/이론' 카테고리의 다른 글
  • [신경망-MNIST] MNIST 데이터셋
  • [신경망-활성화 함수] 소프트맥스 함수
  • [신경망] 3층 신경망 구현해보기
  • [신경망-활성화 함수] 활성화 함수
Hamp
Hamp
남들에게 보여주기 부끄러운 잡다한 글을 적어 나가는 자칭 기술 블로그입니다.
  • Hamp
    Hamp의 분리수거함
    Hamp
  • 전체
    오늘
    어제
    • 분류 전체보기 (325) N
      • CS (30)
        • 객체지향 (2)
        • Network (7)
        • OS (6)
        • 자료구조 (1)
        • LiveStreaming (3)
        • 이미지 (1)
        • 잡다한 질문 정리 (0)
        • Hardware (2)
        • 이론 (6)
        • 컴퓨터 그래픽스 (0)
      • Firebase (3)
      • Programing Langauge (41)
        • swift (34)
        • python (6)
        • Kotlin (1)
      • iOS (133) N
        • UIKit (37)
        • Combine (1)
        • SwiftUI (33) N
        • Framework (7)
        • Swift Concurrency (22)
        • Tuist (6)
        • Setting (11)
        • Modularization (1)
        • Instruments (6)
      • PS (59)
        • 프로그래머스 (24)
        • 백준 (13)
        • LeetCode (19)
        • 알고리즘 (3)
      • Git (18)
        • 명령어 (4)
        • 이론 (2)
        • hooks (1)
        • config (2)
        • action (7)
      • Shell Script (2)
      • Linux (6)
        • 명령어 (5)
      • Spring (20)
        • 어노테이션 (6)
        • 튜토리얼 (13)
      • CI-CD (4)
      • Android (0)
        • Jetpack Compose (0)
      • AI (9)
        • 이론 (9)
        • MCP (0)
  • 블로그 메뉴

    • 홈
    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    dp
    Swift
    dfs
    Tuist
    백준
    GIT
    protocol
    Spring
    boostcamp
    AVFoundation
    dispatch
    lifecycle
    투포인터
    SwiftUI
    UIKit
    프로그래머스
    CS
    property
    concurrency
    IOS
  • 최근 댓글

  • 최근 글

  • 반응형
  • hELLO· Designed By정상우.v4.10.0
Hamp
퍼셉트론
상단으로

티스토리툴바