본문 바로가기

DATA STUDY/밑바닥부터 시작하는 딥러닝

밑시딥 - 퍼셉트론 구현(가중치와 편향)

iphfly1030.tistory.com/124?category=970399

 

밑시딥 - 퍼셉트론(Perceptron)이 뭘까?

퍼셉트론 : 다수의 신호를 입력 받아 하나의 신호로 출력하는 알고리즘 다수의 신호(x1, x2)를 입력(화살표)받아 하나의 신호(y)로 출력 x1과 x2는 입력신호, w1과 w2는 가중치, y는 출력신호 마지막으

iphfly1030.tistory.com

지난 포스팅에서 퍼셉트론과 AND, NAND, OR 게이트에 대해 알아봤습니다.

 

오늘은 논리회로를 파이썬으로 구현해보겠습니다.

 

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

 

x1과 x2를 인수로 받는 AND 함수입니다.

 

w1, w2는 가중치이고 theta는 임계값인거 기억하시죠?

 

두 개의 인수에 각각의 가중치를 곱한값을 tmp라는 변수로 지정합니다.

 

if 부분은 tmp가 임계값보다 작거나 같으면, 즉 tmp가 임계값을 넘지 못하면 0을 출력하라는 의미입니다.

 

elif는 당연히 그 외의 상황이겠죠?

가중치와 편향 도입

 

위에서 구현했던 논리회로를 수식으로 나타냈습니다. 이전 포스팅과 다른 점이 보이시나요?

 

맞습니다. theta가 사라지고 b가 나타났습니다.

(w1x1 + w2x2 <= theta였는데 theta = -b로 하여 위와 같은 식이 나왔습니다.)

 

<넘파이로 구성한 위와 동일한 함수>

 

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

 

b를 편향(bias)이라고 합니다.

 

그렇다면 편향의 역할은 뭘까요?

 

편향뉴런이 얼마나 쉽게 활성화하느냐를 결정합니다. 활성화 된다는 것은 결과값으로 1을 출력하는 경우를 의미합니다.

 

위 식을 보면서 생각해보면 b값이 -1일때는 w1x1 + w2x2 값이 1만 넘으면 됩니다. 하지만 b값이 -100일때를 생각해보면 w1x1 + w2x2 값이 100을 넘겨야 합니다.

 

towardsdatascience.com/why-we-need-bias-in-neural-networks-db8f7e07cb98

 

Why We Need Bias in Neural Networks

One time when bias is not something bad

towardsdatascience.com

위 웹사이트의 아래 부분에 보시면 퍼셉트론에서의 편향(bias)의 의미가 시각화 되어 있습니다.

 

윗 부분은 다른 애기를 하고 있으니 그래프가 있는 부분만 보시면 될 것 같습니다.

그럼 가중치는 무슨 역할을 할까요?

 

입력신호가 결과에 주는 영향력을 조절합니다.

 

입력신호가 작거나 혹은 클때 가중치로 w1x1값의 결과를 조절할 수 있겠죠?