인공지능/머신러닝

[머신러닝 - Python] 퍼셉트론 - XOR 게이트 구현 (Perceptron - XOR Gate Implementation)

바보1 2022. 5. 7. 00:36

XOR 게이트는 단순한 1층 퍼셉트론으로는 구현할 수 없습니다.

반면 AND, NAND, OR 게이트는 직선으로만 구분할 수 있습니다.

반면 XOR 게이트는 직선으로 표현할 수 없습니다.

 

https://subscription.packtpub.com/book/big-data-and-business-intelligence/9781788299879/12/ch12lvl1sec62/nonlinear-decision-boundaries

이해가 되시나요?

따라서 XOR은 '비선형'으로만 표현할 수 있습니다.

 

방법은 간단합니다.

AND, OR, NAND를 조합하면 됩니다.

따라서 XOR = AND(OR, NAND)과 같습니다.

간단하죠?

 

코드는 아래와 같습니다.

def XOR(x1, x2):
    s1 = NAND(x1, x2)
    s2 = OR(x1, x2)
    y = AND(s1, s2)
    return y


for i in [0, 1]:
    for j in [0, 1]:
        print(f'{i, j}', end=' ')

print()
print('XOR : ', end = '')
for i in [0, 1]:
    for j in [0, 1]:
        print(XOR(i, j), end = ' ')
(0, 0) (0, 1) (1, 0) (1, 1) 
XOR : 0 1 1 0

 

 

참고로 모든 컴퓨터는 NAND로 구현할 수 있습니다.

그냥 잡지식이니까 넘어가주세요..

아무튼 그렇습니다.