SteffenLee

[Deep Learning]논리 회로 구현(AND, NAND, OR) 본문

Artificial Intelligence/Deep Learning

[Deep Learning]논리 회로 구현(AND, NAND, OR)

SteffenLee 2022. 11. 30. 18:21

안녕하세요. 이번엔 퍼셉트론을 이용한 논리 회로를 구현해보겠습니다.

 

AND 게이트

X1 X2 Y
0 0 0
1 0 0
0 1 0
1 1 1

AND 게이트는 반드시 두 값이 모두 1(True)어야 1을 반환하는 게이트입니다.

이것을 코드로 표현하면

def AND(x1, x2):
    w1, w2, theta = 0.5, 0.5, 0.7
    temp = x1*w1 + x2*w2
    if temp <= theta:
    	return 0
    elif temp > theta:
    	return 1
        
#출력    
print(AND(0,0))
print(AND(1,0))
print(AND(0,1))
print(AND(1,1))

입력 값 x1, x2에 가중치 w1, w2를 곱해 더한 값이 세타(임계값)를 넘으면 1을 반환, 넘지 못하면 0을 반환합니다.

위 코드를 실행시키면 아래와 같은 결과가 나옵니다.

이번에는 편향(bias)를 이용하여 AND 게이트를 만들어보겠습니다.

코드를 먼저 보겠습니다.

import numpy as np

def AND(x1, x2):
    x = np.array([x1, x2])
    w = np.array([0.5, 0.5])
    b = -0.7 #편향
    
    temp = np.sum(w*x) + b
    
    if temp <= 0:
    	return 0
    elif temp > 0:
    	return 1
        
#출력    
print(AND(0,0))
print(AND(1,0))
print(AND(0,1))
print(AND(1,1))

 

넘파이 배열끼리의 곱은 두 배열의 원소 수가 같다면 각 원소끼리 곱합니다.

그래서 위에 코드에서 w*x 연산의 값을 보면 0, 0.5가 나오게 됩니다.

그리고 가중치는 신호의 중요도를 결정한다면 편향은 뉴런을 얼마나 쉽게 활성화(결과를 1로 출력)하느냐를 조절하는 변수입니다.

 

위에 코드를 실행시키면 아래와 같이 출력됩니다.

NAND 게이트

NAND 게이트는 AND 게이트와는 정반대입니다. 두 입력값이 참 일 때만 거짓을 출력합니다.

X1 X2 Y
0 0 1
1 0 1
0 1 1
1 1 0

이것을 편향과 가중치를 이용해서 구현하게 되면

import numpy as np

def NAND(x1, x2):
    x = np.array([x1, x2])
    w = np.array([-0.5, -0.5])
    b = 0.7 #편향
    
    temp = np.sum(w*x) + b
    
    if temp <= 0:
    	return 0
    elif temp > 0:
    	return 1
        
#출력    
print(NAND(0,0))
print(NAND(1,0))
print(NAND(0,1))
print(NAND(1,1))

이렇게 구현할 수 있습니다. 실행시키면 아래와 같이 결과가 나옵니다.

 

OR 게이트

OR게이트는 두 값 중 한 개의 값만 참이면 참을 출력합니다.

X1 X2 Y
0 0 0
1 0 1
0 1 1
1 1 1

이걸 위와 같이 코드로 구현하면 아래와 같이 됩니다.

import numpy as np

def OR(x1, x2):
    x = np.array([x1, x2])
    w = np.array([0.5, 0.5])
    b = -0.3 #편향
    
    temp = np.sum(w*x) + b
    
    if temp <= 0:
    	return 0
    elif temp > 0:
    	return 1
        
#출력    
print(OR(0,0))
print(OR(1,0))
print(OR(0,1))
print(OR(1,1))

실행 결과

 

 

이번 글에서는 AND, NAND, OR 게이트를 구현했습니다.

다음 글에서는 XOR 게이트를 구현해보겠습니다.

 

감사합니다.

'Artificial Intelligence > Deep Learning' 카테고리의 다른 글

[Deep Learning]신경망  (0) 2023.07.11
[Deep Learning]퍼셉트론이란?  (0) 2022.11.29
Comments