*What is perceptron..?
퍼셉트론은 1개 이상의 신호를 모아서 하나의 신호값으로 출력하는 기능을 한다.
=> 이러한 신호는 2개의 값 1, 0 ( 신호가 흐른다 or 신호가 흐르지 않는다.)을 출력하는데

다음 그림과 같이 원모양 뉴런들에서 출력신호 를 X1, X2, ....., Xn 까지의 입력신호에 신호가 얼마나 강하게 연결되어 있는지 나타내는
'가중치( Weight)' 를 곱하여 Summation(i = 1->n)(Xi * Wi) 를 구해낸다.
이를 비교하는 방법은
1. 임계점 (theta) 과 비교하는 법
2. ( theta) = -b 라고 하였을때 편향(bias)를 이항하여 절대상수 '0' 과 비교하는 방법이 있다.
다음은 n =2 일 경우 퍼셉트론의 간단한 예시를 파이썬으로 구현해보자
numpy로 2차원에서의 퍼셉트론을 표현한는 방식 2가지를 소개하려 한다.
vector 연산 (1 dimension point )
np . array([vector])
*in multiple culculation
=>요소별 곱(element_wise product) 사용
let :
x = np,array([x1, x2]) (2개의 요소)
w = np. array([w1, w2])
x * w = () (요소별 곱 사용)
np. sum(x * w) = x1 *w1 + x2 * w2 (sum은 모든 요소의 합)
def OR (x1, x2) :
x = np. array([x1, x2])
w = np.array([0.5, 0.5])
b = -0.2
tmp = np.sum(w * x) + b
if tmp <= 0 :
return 0
else :
return 1
print(OR(0, 0))
print(OR(0, 1))
print(OR(1, 0))
print(OR(1, 1))
...
0
1
1
1
matrix 연산 (2 dimension point )
np.array ([matrix])
*in multiple culculation
=> 행렬곱 (2차원 벡터곱 사용)
x = np,arrray([[x1, x2]]) (2DP 1x2 matrix)
w = np.array([[w1], [w2]]) ( 2DP 2x1 matrix)
np.dot(x, w) = x1 * w1 + x2 * w2 (dot(a,b) 는 행렬곱 a x b 의미함)
def AND(x1, x2):
x = np.array([[x1, x2]])
w = np.array([[0.5], [0.5]])
b = -0.7
temp = b + np.dot(x,w)
if temp <= 0 :
return 0
else :
return 1
print(AND(0, 0))
print(AND(0, 1))
print(AND(1, 0))
print(AND(1, 1))
...
0
0
0
1
다음과 같이 2가지 방법으로 퍼셉트론 출력을 조절헤 보았다 이외에도 직접 곱셈식에 대입하는 방법도 있지만 다루지 않았다.
AND, NAND, OR, XOR 구현
앞에서 들었던 2가지 예시는 단층 퍼셉트론으로
x1w1 + x2w2 = -b 형태이며
변수 x1, x2 에 대한 그래프로 볼수있다. matlab을 활용해 다음 그래프를 그려보자.

matlab 에서 다음은 AND 게이트를 나타냈으며 직선의 형태에 의해 출력이 나뉘는 것을 확인할 수 있다.
이러한 단층 퍼셉트론의 특징에 의해 한 직선에 나눠지지 않는 영역의 값을 분류함에는 한계가 있다.
따라서 이를 해결하기 위한 다층 퍼셉트론의 예시 XOR 게이트를 확인하자.
파이썬으로 보면 각 게이트에 대응해 다음과 같은 형태를 띈다.
def XOR(x1, x2) :
s1 = NAND(x1, x2)
s2 = OR(x1, x2)
y = AND(s1, s2)
return y
이는 다중 3가지 단층 퍼셉트론이 합쳐진 합성함수의 형태라 볼수있다.
이를 시각적으로 볼때 그래프와 뉴런으로 표현이 가능하다.

다음은 출력 범위를 색칠 함으로서 AND 게이트에서 요구하는 출력(1,1)을 찾았다.

전체 범위에서 나타나는 s점은 3개 이고 역시 AND 게이트에서 요구하는 출력은 (1,1) 이다.

직관적으로 단층 퍼셉트론이 이중적으로 작용하는 것을 확인할수 있다.
따라서 다층 퍼셉트론은 직선으로 구분 할 수 없는 영역(비선형의 영역)을 분류해냄으로서
단층 퍼셉트론의 한계를 극복 했다.
이러한 다층 퍼셉트론은 다음의 2층 시스템 만으로도 컴퓨터를 개발 할수 있다고 한다.