1, 퍼셉트론1
퍼셉트론 알고리즘이란?
-
프랑크 로젠블라트가 고안한 알고리즘으로써 다수의 입력값을 토대로 하나의 출력값을 만들어 낼 수 있는 알고리즘이다.
-
해당 알고리즘을 통하여 AND, OR, NONE을 도출해 내는 로직을 만들어 낼 수 있다.
-
기본적인 퍼셉트론 개념
여기에서 x1, x2를 입력값이라 생각하고 w1,w2를 곱하여 y1을 출력하는 로직이다.
(이때, 원은 노드 혹은 뉴런, w는 가중치, y는 임계값 Θ에 따라 나오는 출력값)
이때, y의 값은 세타의 값(임계값)에 따라 결정이 되고 표현을 해 보면 다음과 같다.
이 개념을 가지고 AND, OR, NAND게이트를 구현을 해 볼 수 있다.
AND게이트
- 기본적인 입력값과 출력값의 관계는 다음과 같다.
x1 | x2 | y |
---|---|---|
0 | 0 | 0 |
1 | 0 | 0 |
0 | 1 | 0 |
1 | 1 | 1 |
이를 만족하는 w값과 Θ값은 무수히 많은데 그 중 하나인(w1, w2, Θ)(0.6, 0.6, 0.9)경우를 고려하여 코드를 구현해 보면 다음과 같다.
def AND(x1, x2):
w1 = 0.6
w2 = 0.6
theta = 0.9
y = (w1 * x1) + (w2 * x2)
if y <= theta:
return 0
elif y > theta:
return 1
이렇게 논리 회로를 구할 수 있다.
이 값을 직접 사람이 구하지만 기계학습은 이 매개변수의 값을 컴퓨터가 직접 여러개의 데이터를 이용하여 학습하여 구할 수 있도록 한다.
Bias
우리가 위에서 y값과 Θ값을 이용하여 구하였지만 이 식을 간단히 정리하면 다음과 같다.
이때, b를 편향이라 하며 보통 머신러닝 hypothesis식을 세울때는 bias를 포함시켜 식을 세우게 된다.
이를 AND게이트의 코드에 적용하보면 다음과 같다.
def AND(x1, x2):
w1 = 0.6
w2 = 0.6
b = - 0.7
x = np.array([x1,x2])
w = np.array([w1,w2])
theta = np.sum(w*x) + b
if theta <= 0:
return 0
else:
return 1
한계
하지만 퍼셉트론 이론도 한계가 있는데 XOR게이트를 구현하는 것이다.
다음 포스팅에서 계속
Reference
사이토 고키(齋藤 康毅), 『Deep Learning from Scratch』, 개앞맵시, 한빛미디어(2017), p47-p62
https://www.youtube.com/watch?v=n7DNueHGkqE&list=PLlMkM4tgfjnLSOjrEJN31gZATbcj_MpUm&index=22
https://m.blog.naver.com/PostView.nhn?blogId=960125_hds&logNo=221043116238&proxyReferer=https:%2F%2Fwww.google.com%2F
https://sacko.tistory.com/10
Author And Source
이 문제에 관하여(1, 퍼셉트론1), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@ganta/퍼셉트론-정리1저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)