지난 포스팅
저번 글에서는 머신러닝을 공부하고 진행하면서 주의해야 할 점들에 대해서 정리했습니다.
이번 글에서는 퍼셉트론이 무엇인지에 대해 정리하고 간단한 구현을 통해 실습하겠습니다.
퍼셉트론이란?
퍼셉트론은 프랑크 로젠블라트(Frank Rosenblatt)가 1957년에 고안한 알고리즘입니다.
퍼셉트론은 신경망(딥러닝)의 기원이 되는 알고리즘이기 때문에 오래되었지만 알아야 할 필요가 있습니다.
퍼셉트론은 기본적으로 다수의 입력 값을 받아 하나의 결과 값을 출력합니다.
퍼셉트론의 입력은 0 혹은 1의 두 가지 값을 가질 수 있습니다.
위의 그림은 입력으로 2개의 신호를 받은 퍼셉트론의 예시입니다.
\(x_{1}\)과 \(x_{2}\)는 입력 값, \(y\)는 출력 값, \(w_{1}\)과 \(w_{2}\)는 가중치를 뜻합니다. (\(w\) = weight)
그림의 원을 노드 혹은 뉴런이라고 부릅니다.
입력 값이 노드(뉴런)에 보내질 때는 각각 고유한 가중치가 곱해집니다.(\(w_{1}x_{1} , w_{2}x_{2}\))
노드(뉴런)에서 보내온 입력의 총합이 정해진 한계를 넘어설 때만 1을 출력하게 됩니다.
그 한계값을 임계값이라 하며, \(\theta\)(theta, 세타)로 나타냅니다.
위의 설명을 식으로 나타내면 다음과 같습니다.
\begin{cases}0\left( w_{1}x_{1}+w_{2}x_{2}\leq \theta \right) \\ 1 \left( w_{1}x_{1}+w_{2}x_{2} >\theta \right) \end{cases}
퍼셉트론은 다수의 입력 각각에 고유한 가중치를 부여하고 가중치는 결과에 주는 영향력을 조절하는 요소로 작용하게 됩니다. 즉, 가중치가 클수록 해당 입력이 그만큼 더 중요함을 뜻합니다.
퍼셉트론 구현하기
아래와 같은 간단한 논리 회로인 AND 게이트를 퍼셉트론을 알고리즘을 사용해 구현해보도록 하겠습니다.
구현 코드
def AND(x1, x2):
w1, w2, theta = 0.5, 0.5, 0.7
tmp = x1*w1 + x2*w2
if tmp <= theta:
return 0
elif tmp > theta:
return 1
print(AND(0, 0))
print(AND(1, 0))
print(AND(0, 1))
print(AND(1, 1))
결과
0
0
0
1
AND라는 이름의 함수를 지정하고 실행해 구현을 진행했습니다.
이 함수에서 w1, w2, theta 매개변수를 초기화하고, 가중치를 곱한 입력의 총합이 임계값을 넘으면 1을 반환 그렇지 않으면 0을 반환하도록 코드를 작성했습니다.
같은 방법으로 다른 게이트도 구현할 수 있습니다.
'머신러닝 & 딥러닝 > 기초 이론' 카테고리의 다른 글
[머신러닝/딥러닝 기초] 6. 퍼셉트론의 한계와 다층 퍼셉트론(multi-layer perceptr) (0) | 2022.02.09 |
---|---|
[머신러닝/딥러닝 기초] 5. 퍼셉트론(Perceptron) 이론과 간단 구현 - 2 (0) | 2022.02.09 |
[머신러닝/딥러닝 기초] 3. 머신러닝을 하면서 주의해야 할 6가지 (0) | 2022.02.09 |
[머신러닝/딥러닝 기초] 2. 머신러닝 시스템의 종류 (0) | 2022.02.08 |
[머신러닝/딥러닝 기초] 1. 머신러닝(Machine Learning, 기계학습)이란 무엇인가? (0) | 2022.02.08 |
댓글