Deep Learning/밑바닥부터 시작하는 딥러닝

DL - 퍼셉트론 정리

KimTory 2022. 1. 27. 01:12

▶ 정의

 

① 신경망(DL)의 기원이 되는 알고리즘

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

③ 입력 - 가중치 + 편향 - 출력으로 구성되어 있음

④ Weight(가중치)는 입력 뉴런이 결과에 주는 영향력을 조절하며, bias(편향)는 활성화 여부를 조정하는 매개변수

 

def AND(x1, x2):
    w1, w2, theta = 0.5, 0.5, 0.7
    tmp = x1*w1 + x2*w2
    if tmp <= theta:
        return 0
    elif tmp > theta:
        return 1
        
# AND 게이트 출력
print(AND(0, 0)) # 0을 출력
print(AND(1, 0)) # 0을 출력
print(AND(0, 1)) # 0을 출력
print(AND(1, 1)) # 1을 출력

# AN 게이트 bais + weigth 추가된 함수
def AND(x1, x2):
    x = np.array([x1, x2])
    w = np.array([0.5, 0.5])
    # theta를 -b (편향)로 치환
    b = -0.7 
    tmp = np.sum(w*x) + b    → 가중치 * 입력 - 편향 = 활성화 여부를 결정
    if tmp <= 0:
        return 0
    else:
        return 1

 

 

import numpy as np
import matplotlib.pyplot as plt

x1 = np.arange(-1, 3, 0.1)
x2 = -x1 + 0.5

plt.axvline(x=0, color = 'b')  # draw x =0 axes
plt.axhline(y=0, color = 'b')   # draw y =0 axes

# 그래프 그리기
plt.plot(x1, x2, label="or")
plt.xlabel("X1") # x축 이름
plt.ylabel("X2") # y축 이름
plt.legend()

# x,y,z축 채우기
plt.fill_between(x1, x2, -3, color='grey', alpha=0.5)

plt.scatter([0],[0],marker='o',color='r')
plt.scatter([1,0,1],[0,1,1],marker='^',color='r')
plt.show()

 

[ OR 게이트, 퍼셉트론 시각화 ]

[ OR 게이트 ]

# O 모양은 출력 0, 세모 모양은 출력 1

 

 

▶ 단층 퍼셉트론 구현 : AND, OR, NAND

→ 선형 영역으로만 구현이 가능

▶ 다층 퍼셉트론 구현 : XOR (1층 입력 : NAND + OR,  2층 입력 : AND → 출력 <XOR>)

→ 선형뿐만 아니라 비선형 구조도 구현이 가능하며 방식은 단층 퍼셉트론에 입력층을 추가하는 방식임

① 0층의 입력 뉴런이 입력 신호를 받아 1층의 뉴런으로 신호를 보냄

② 1층의 뉴런이 2층의 뉴런으로 신호를 보내고, 2층의 뉴런은 이 신호를 바탕으로 Y를 출력

다층 퍼셉트론 구조

'Deep Learning > 밑바닥부터 시작하는 딥러닝' 카테고리의 다른 글

DL - #5-1, 오차역전파법  (0) 2022.02.04
DL - #4 -2, 신경망 학습  (0) 2022.02.04
DL - #4 -1, 신경망 학습  (0) 2022.02.04
DL - #3, 신경망  (0) 2022.02.04
DL - #2, 퍼셉트론  (0) 2022.02.04