My record

밑바닥부터 시작하는 딥러닝#Chapter2,52page

UR'im 2019. 10. 30. 15:45

Chapter2 는 퍼셉트론에 대한 내용이다.

오늘은 퍼셉트론 알고리즘에 대해 알아보도록 하겠다.

 

퍼셉트론이 신경망의 기원이 되는 알고리즘이기때문에 퍼셉트론의 구조를 배우는 것은 신경망과 딥러닝으로 나아가는데 중요한 아이디어를 배우는 일이된다고 서술되어있다...

 

나는 그거는 잘 모르겠고.. 책에나오니까 그냥 보겠다.

 

**퍼셉트론은 다수의 신호를 입력받아 하나의 신호를 출력한다.

 

x는 입력신호, y는 출력 신호 w는 가중치

그림의 원을 뉴런 혹은 노드라고 부릅니다.

입력신호가 뉴런에 보내질 때는 각각 고유한 가중치가 곱해집니다. (x1*w1, x2*w2)

 

뉴런에서 보내온 신호의 총합이 정해진 한계를 넘어설때만 1을 출력

 

y = 0 (w1x1 + w2x2 <= 임계값) 또는 1 (w1x1+w2x2 > 임계값) 을 출력한다.

 

>> 가중치가 클수록 해당 신호가 그만큼 더 중요함을 뜻한다.

 

다음 내용은 논리회로인데 이건 넘어간다.

 

[퍼셉트론 구현하기]

 

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(0,1))
print(AND(1,0))
print(AND(1,1))

 

[가중치와 편향 도입]

임계치(theta)를 -b로 치환하면 퍼셉트론 동작이

y = 0 (b+w1x1 + w2x2 <= 0) 또는 1 (b+w1x1+w2x2 > 0) 이 된다.

 

여기서 b를 편향이라고 한다.

 

import numpy as np

x = np.array([0,1]) #입력
w = np.array([0.5, 0.5]) #가중치
b = -0.7 #편향
print(w*x)
print(np.sum(w*x))
print(np.sum(w*x)+b)

 

import numpy as np

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

print(AND(0,0))
print(AND(0,1))
print(AND(1,0))
print(AND(1,1))

 

지금까지 AND게이트를 사용한 가중치와 편향 도입이었다.