728x90
Perceptron¶
What is Perceptron?¶
- 다수의 신호를 입력 받아 하나의 신호를 출력, 신호는 (0 or 1) 두 개의 값을 가짐
- 각 입력값이 뉴런(노드)에 보내질때에는 각각 고유한 가중치가 곱해짐.
- 뉴런에서 보내온 신호의 총합이 정해진 한계(임계값)를 넘어서야 1을 출력함(활성화 한다)
- $ y = \begin{cases} 0, & \mbox{if }(w_1x_1+w_2x_2 \le \theta) \mbox{}\\ 1, & \mbox{if }(w_1x_1+w_2x_2 > \theta )\mbox{} \end{cases}$
- 가중치는 각 신호가 결과에 주는 영향력을 조절하는 요소로 작용
- 퍼셉트론의 매개변수 값을 정하는 것은 컴퓨터가 아닌 인간! 인간이 직접 학습데이터를 보면서 매개변수 값을 정함
- 머신러닝 문제는 매개변수 값을 정하는 작업을 컴퓨터가 자동으로 하도록함(학습: 적절한 매개변수를 정하는 작업)
In [1]:
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
In [2]:
print(AND(0,0))
print(AND(1,0))
print(AND(0,1))
print(AND(1,1))
0
0
0
1
가중치와 편향 도입¶
- $w_1$, $w_2$( 가중치)는 입력신호가 결과에 주는 영향력(중요도)를 조절하는 매개변수
- $b$ (편향, bias)는 뉴력이 얼마나 쉽게 활성화 하느냐를 조정하는 매개변수
In [3]:
import numpy as np
In [4]:
x = np.array([0, 1]) # 입력
w = np.array([0.5, 0.5]) # 가중치
b = -0.7 # 편향
np.sum(w*x)+b
Out[4]:
-0.19999999999999996
AND Gate¶
In [5]:
def AND(x1, x2):
x = np.array([x1, x2])
w = np.array([0.5, 0.5])
b = -0.7
tmp = np.sum(w*x)+b
if tmp <= 0:
return 0
else:
return 1
NAND Gate( Not AND)¶
- $x_1$과 $x_2$ 모두 1일 때 만 0을 출력하고 그 외에는 1을 출력한다.
In [6]:
def NAND(x1, x2): #
x = np.array([x1, x2])
w = np.array([-0.5, -0.5]) # AND와 가중치만 다르다
b= 0.7
tmp = np.sum(w*x) + b
if tmp <= 0:
return 0
else:
return 1
OR Gate¶
- $x_1$ or $x_2$ 둘 중 하나라도 1이면 1이 출력되고 모두 0이면 0을 출력한다.
In [7]:
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
퍼셉트론의 한계¶
- 배타적 논리 합: 즉 $x_1$, $x_2$중 한쪽만 1인 경우 1을 출력하는 경우 단층 퍼셉트론으로 출력 불가
- 단층 퍼셉트론(선형)으로는 비선형적인 영역을 표현할 수 없음
- 층을 쌓아 만든 다층 퍼셉트론으로 구현
XOR Gate¶
In [8]:
def XOR(x1, x2):
s1 = NAND(x1, x2)
s2 = OR(x1, x2)
y = AND(s1, s2)
return y
In [9]:
print(XOR(0, 0))
print(XOR(0, 1))
print(XOR(1, 0))
print(XOR(1, 1))
0
1
1
0
Summary
- 퍼셉트론은 입출력을 갖춘 알고리즘 이다. 입력을 주면 정해진 규칙에 따른 값을 출력한다.
- 퍼셉트로에서는 가중치와 편향을 매개변수로 설정한다
- 퍼셉트론에서는 AND, OR 게이트 등 논리 회로를 표현할 수 있다.
- XOR 게이트는 단층 퍼셉트론으로 표현할 수 없다.
- 2층 퍼셉트론을 이용하면 XOR 게이트를 표현할 수 있다.
- 단층 퍼셉트론은 직선형 영역만 표현할 수 있고 다층 퍼셉트론은 비선형 영역도 표현할 수 있다.
Reference
밑바닥부터 시작하는 딥러닝, 사이토 고키
728x90
'Data Science > Deep Learning' 카테고리의 다른 글
[Deep Learning from Scratch] chapter 6.학습관련기술들(최적화, 가중치 초기값, 배치정규화) (0) | 2023.03.23 |
---|---|
[Deep Learning from Scratch] chapter 5.Backpropagation (오차역전파법) (0) | 2023.02.14 |
[Deep Learning from Scratch] chapter 4.Training Neural Network (0) | 2023.02.09 |
[Deep Learning from Scratch] chapter 3. Neural Network (0) | 2023.02.09 |
밑바닥 부터 시작하는 딥러닝 (0) | 2023.02.09 |