[DL] AND / NAND / OR 가중치 편향 구현

JINJU·2021년 10월 30일
0

작성계기

밑바닥부터 시작하는 딥러닝1 책을 공부하면서 (개인 책이 아니기 때문에) 메모할 내용들을 여기에 적기위해서 작성
내용은 퍼셉트론(2장) 부분을 공부 중에 있음

가중치와 편향

가중치 (weight)

w1, w2라고 하는 가중치는 각 입력 신호가 결과에 주는 영향력(중요도)을 조절하는 매개변수

편향(bias)

뉴런이 얼마나 쉽게 활성화하느냐를 조정하는 매개변수

AND 게이트

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))

NAND 게이트

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

OR 게이트

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

print(OR(0, 0))
print(OR(0, 1))
print(OR(1, 0))
print(OR(1, 1))

퍼셉트론 한계

XOR 게이트


XOR은 위 그래프처럼 x1과 x2 중 하나가 1일 때만 1을 출력하는데 이것을 퍼센트론으로 나타내는 것은 불가능하다.


위 그림은 OR 게이트를 시각화 해낸 그림이다.
초록색으로 색칠된 삼각형은 출력이 1일 때, 노란색 원형은 0을 출력할 때인데 이것을 빨간색 선과 같이 선형적으로 영역을 나눌 수 있다.

반면 XOR은,

똑같이 초록색으로 색칠된 삼각형은 출력 1을 의미하고, 노란색 원형은 0을 출력할 때인데 직선으로 나누는 것은 불가능하고 빨간색 점선으로 비선형 형태로 나눌 수가 있다.

0개의 댓글