▶ 정의
① 신경망(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 게이트, 퍼셉트론 시각화 ]
# 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 |