인공 신경망(Aritificial Neural Network, ANN)의 구성 요소(unit)로서 다수의 값을 입력받아 하나의 값으로 출력하는 알고리즘
이 사진에 나와있는 과정을 기본값으로 가진다.
그러나 XOR 문제를 해결할 수 없기 때문에, 퍼셉트론을 여러 개 사용해 다층 퍼셉트론(Multilayer perceptron)으로 해결하였다.
여기서 한 층을 계산하기 위하여, (입력층 * 입력층 사이 계산식 + 편향)을 모든 전 입력층에 대해 계산하여서 만들어낼 수 있다.
저 그림을 예시로 들어 설명해보면, 윗 은닉층(n1이라 칭함)을 구하기 위해서는, n1 = S(x1 w1 + x2 w2 + b1(편향)) 라는 식을 만들어서 계산해야 한다.
+ XOR 문제
XOR을 논리식(OR, AND …)으로 만들기 위해서는 NAND(AND의 반대식)와 OR 을 AND로 묶어서 만들 수 있다.
import numpy as np
w11 = np.array([-2,-2])
w12 = np.array([2,2])
w2 = np.array([1,1])
b1 = 3
b2 = -1
b3 = -1
y = 0
x = 0
#다층 퍼셉트론
def MLP (x,w,b) :
y = np.sum(x * w) + 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[0], x[1])
print('입력값 = ' + str(x) + ' 출력값 = ' + str(y))
이렇게 다층 퍼셉트론으로 XOR 문제를 해결할 수 있다.
신경망의 학습 알고리즘 중 하나로, 출력값과 실제값의 오차를 이용하여 각 가중치에 대한 손실 함수의 미분값을 계산하고, 이를 이용하여 가중치를 갱신하는 과정
입력 신호의 총합을 출력 신호로 변환하는 함수
소중한 정보 감사드립니다!