728x90

#2-7. 퍼셉트론과 인공지능의 시작
1. 퍼셉트론이란
- 퍼셉트론 : 인공신경망 연구로 입력값을 여러개 받아 출력을 만드는데, 이 때 입력 값에 가중치를 조절할 수 있게 만들음
- 아달라인 : 퍼셉트론에 경사하강법을 도입해 최적의 경계선을 그릴 수 있게 함. 아달라인이 추후 발전하면서 로지스틱 회귀 알고리즘도 생겨남

2. 퍼셉트론의 과제 : XOR문제
논리연산에서
논리합(OR), 논리곱(AND),배타적논리합(XOR)을 좌표평면에 나타내고 선을 그어 구분할 시 퍼셉트론의 한계가 XOR의 논리연산에서 1과 0 을 구분할수 없다는 것을 확인할 수 있음

논리연산
논리곱(AND) x1 = 1 AND x2 = 1 : 1
x1 x2 결과값 0 0 0 0 1 0 1 0 0 1 1 1
논리합(OR) x1 = 1 OR x2 = 1 : 1
x1 x2 결과값 0 0 0 0 1 1 1 0 1 1 1 1
부정논리곱(NAND) x1 = 1 AND x2 = 1 : 0 , 그 외에는 모두 1
x1 x2 결과값 0 0 1 0 1 1 1 0 1 1 1 0
부정논리합(NOR) x1 = 0 AND x2 = 0 : 1, 그 외에는 모두 0
x1 x2 결과값 0 0 1 0 1 0 1 0 0 1 1 0
배타적논리합(XOR) x1 과 x2 중 단 하나만 1이어야 : 1
x1 x2 결과값 0 0 0 0 1 1 1 0 1 1 1 0
#2-8. 다층 퍼셉트론
1. 개요


2. 다층 퍼셉트론의 설계

3. 코딩으로 XOR문제 해결하기
import numpy as np
#가중치와 바이어스 선언
w11 = np.array([-2,-2]) #n1를 위한 가중치
w12 = np.array([2,2]) #n2를 위한 가중치
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):
return 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(x1,x2), OR(x1,x2))
#최종값 출력
for x in [(0,0), (1,0), (0,1), (1,1)]:
y = XOR(x[1], x[0]) #x는 튜플 형태로 x에 있는 원소에 대한 인덱싱. x[0]은 첫번째 원소 의미.
print("입력값 :" + str(x) + "출력값 : " + str(y))
type(x)
|
입력값 :(0, 0)출력값 : 0
입력값 :(1, 0)출력값 : 1
입력값 :(0, 1)출력값 : 1
입력값 :(1, 1)출력값 : 0
tuple
'👩💻LEARN : ML&Data > Book Study' 카테고리의 다른 글
[모두의 딥러닝] #3-8. 오차역전파 : 은닉층 오차 수정과 계산 (0) | 2023.02.14 |
---|---|
[모두의 딥러닝] #3-8. 오차역전파 : 출력층 가중치 확인까지 (0) | 2023.02.13 |
[모두의 딥러닝] #2-6. 로지스틱 회귀 모델 (0) | 2023.02.11 |
[모두의 딥러닝] #2-5. 선형회귀모델 : 먼저 긋고 수정하기 (0) | 2023.02.10 |
[모두의 딥러닝]#2-4. 가장 훌륭한 예측선 (0) | 2023.02.10 |