딥러닝/밑바닥부터 시작하는 딥러닝1

[밑바닥부터 시작하는 딥러닝1] Ch2.퍼셉트론

CoGam 2024. 4. 28. 04:26
728x90

모두를 위한 딥러닝을 수강한 이후, 기초를 더욱 다지기 위해서 선택한 책이 바로 이 책이다.

 

프레임워크 없이 직접 만들며 다양한 함수들 그리고 기법들과 친숙해지려는 목적을 가지고 시작하게 되었다. 모두를 위한 딥러닝을 들으며 헷갈렸던 부분들 그리고 몰랐던 부분들을 정리해 볼 계획이다.

 

첫 장은 퍼셉트론이다. 신경망의 기초가 되는 개념이라고 할 수 있다.

 

위와 같이 노드가 입력을 받고, 각 입력에 고유한 가중치를 곱하고 그 합을 결과값으로 내놓는다.

단순히 결과를 주는 것이 아니라 이미 정의된 임계값(책에서는 세타)과의 대소비교를 진행하고 크다 작다를 이진화하여 1 혹은 0의 결과를 출력한다.

 

 

사실 모두를 위한 딥러닝에서는 단지 편향 b를 wx에 더해준다고 이해를 하였는데, 그 편향이라는 것이 임계값(세타)를 부등식에서 이항해준 값이라는 것을 알게 되었다.

 

이제 배운 개념을 토대로 AND, NAND, OR 게이트를 구현한다 (디지털논리회로라는 전공 과목이 어디에 쓰이나 궁금하던 찰나... 여기에서 만나게 되었다). 단순한 논리회로이기 때문에  선형 영역을 나타내는 단층 퍼셉트론으로 구분할 수 있다.

 

허나 이전에 배운 것과 마찬가지로 XOR 게이트는 선형 영역으로 값이 나눠지지 않기에 어려움을 유발한다. 여기서 나온 것이 다층 퍼셉트론이다. 매우 중요한 개념이니 인공 신경망을 공부하기 위해선 꼭 알아야한다. 퍼셉트론의 층을 만듦으로써 비선형 영역을 표현할 수 있게 만드는 것이다.

 

앞에서 구현했던 AND, OR, NAND 게이트를 적절히 조합하면 그 결과로 XOR 게이트를 얻을 수 있다.

 

Ch2에서 가장 중요한 개념은 아마 퍼셉트론, 그 중에서도 다층 퍼셉트론이 "비선형" 영역을 나타낸다는 점이 될 것이다. 꼭 기억하고 넘어가야겠다. 

 

마지막으로 게이트를 구현한 코드들은 간단해서 아래에 함께 포스팅했다.

# AND 게이트 구현
import numpy as np

def AND(x1, x2):
    x = np.array([x1, x2])
    w = np.array([0.5, 0.5])
    b = -0.7

    hypothesis = np.sum(x * w) + b
    if hypothesis >= 0:
        return 1
    else:
        return 0

x1, x2 = map(int, input().split())
print(AND(x1, x2))

 

 

# OR 게이트 구현
import numpy as np

def OR(x1, x2):
    x = np.array([x1, x2])
    w = np.array([0.5, 0.5])
    b = -0.4

    hypothesis = np.sum(x * w) + b
    if hypothesis >= 0:
        return 1
    else:
        return 0

x1, x2 = map(int, input().split())
print(OR(x1, x2))

 

 

# NAND 게이트 구현
import numpy as np

def NAND(x1, x2):
    x = np.array([x1, x2])
    w = np.array([-0.5, -0.5])
    b = 0.7

    hypothesis = np.sum(x * w) + b
    if hypothesis >= 0:
        return 1
    else:
        return 0

x1, x2 = map(int, input().split())
print(NAND(x1, x2))

 

 

# XOR 게이트 구현
def XOR(x1, x2):
    a = NAND(x1, x2)
    b = OR(x1, x2)
    y = AND(a, b)

    return y

x1, x2 = map(int, input().split())
print(XOR(x1, x2))

 

반응형