머신러닝 & 딥러닝/기초 이론

[머신러닝/딥러닝 기초] 5. 퍼셉트론(Perceptron) 이론과 간단 구현 - 2

by seokii 2022. 2. 9.
728x90
반응형

퍼셉트론 이론과 간단 구현 - 1

https://seokii.tistory.com/54?category=1054781 

 

4. 퍼셉트론(Perceptron) 이론과 간단구현 - 1

지난 포스팅 https://seokii.tistory.com/52 3. 머신러닝을 하면서 주의해야 할 6가지 머신러닝 시스템의 종류 https://seokii.tistory.com/49 2. 머신러닝 시스템의 종류 머신러닝이란 https://seokii.tistory.co..

seokii.tistory.com

지난 글에서 퍼셉트론 이론을 정리하고 퍼셉트론을 이용해서 AND 게이트를 구현했습니다.

글을 이어서 마저 정리해보도록 하겠습니다.

 

가중치와 편향

\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}

지난 글에서 설명했었던 위의 식에서, \(\theta\)를 \(-b\)로 치환해 아래의 식으로 정리했습니다.

\begin{cases}0\left(b+ w_{1}x_{1}+w_{2}x_{2}\leq 0 \right) \\ 1 \left(b+w_{1}x_{1}+w_{2}x_{2} >0 \right) \end{cases}

여기서 \(b\)는 편향(bias)이라 하며 \(w_{1}, w_{2}\)는 그대로 가중치(weight)입니다.

정리하자면, 퍼셉트론은 입력 값에 가중치를 곱한 값과 편향을 합하여, 그 값이 0을 넘으면 1을 출력하고 그렇지 않으면 0을 출력한다고 할 수 있습니다.

아래는 지난 글의 구현 코드에서 위의 가중치와 편향을 적용한 코드입니다.

구현 코드

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

결과

0
0
0
1

 

이어서 NAND 게이트와 OR 게이트 구현

구현 코드

import numpy as np

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

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

결과

1
1
1
0
0
1
1
1

 

 

728x90
반응형

댓글