일반적으로, ML(Machine Learning)의 한 종류로, 인공 신경망의 발전된 모델로 볼 수 있다.
기초 형태의 인공 신경망
입력층이라 하며, 위 그림의 y를 출력층이라 한다.모델의 성능을 높여줄 수 있는 weight와 bias를 찾는것이 딥러닝의 목표라 할 수 있다.

위 그림에서 볼 수 있다시피, Single-Layer Perceptron으로는 XOR gate의 구현이 불가능하다.
어떻게 해결 했을까?
Perceptron 관점에서, layer를 더 쌓아 이 문제를 해결 할 수 있다.
SLP는 입력층과 출력층만 존재hidden layer(은닉층) 라 한다.
은닉층이 2개 이상인 신경망을 심층 신경망(Deep Neural Network, DNN)이라 한다.
def AND(x1, x2):
if x2 > -x1 + 1.5:
return 1
else:
return 0
def OR(x1, x2):
if x2 >= -x1 + 0.5:
return 1
else:
return 0
def NAND(x1, x2):
if x2 <= -x1 + 1.2:
return 1
else:
return 0
def half_adder(x1, x2):
s = XOR(x1, x2)
c = AND(x1, x2)
return s, c
def full_adder(x1, x2, ci):
p = XOR(x1, x2)
q = AND(p, ci)
r = AND(x1, x2)
s = XOR(p, ci)
cout = OR(q, r)
return s, cout
def adder_4bit(a, b):
s0, c1 = half_adder(a[-1], b[-1])
s1, c2 = full_adder(a[2], b[2], c1)
s2, c3 = full_adder(a[1], b[1], c2)
s3, c4 = full_adder(a[0], b[0], c3)
return str(c4) + str(s3) + str(s2) + str(s1) + str(s0)