ch.2 퍼셉트론

pasongtak·2024년 4월 29일

딥러닝

목록 보기
1/11

퍼셉트론?

퍼셉트론이란 여러 입력 신호를 받아 하나의 출력 신호를 보내는 것이다. 여러개의 입력신호를 받으면 고유한 가중치를 입력값에 각각 곱해 총합을 구하고, 총합이 임계값(⍬)를 넘으면 1을 출력하고(뉴런이 활성화) 임계값(⍬)를 넘지 못하면 0을 출력한다.

편향

임계값(⍬)을 -b로 치환해 새로운 식을 만들 수 있다.

편향은 뉴런의 활성화(결과로 1을 출력)를 조절하는 매개변수이다! 편향에 따라 뉴런이 얼마나 쉽게 활성화되는지를 결정할 수 있다.

논리회로

논리회로에서의 포인트는 퍼셉트론 구조는 세 논리회로 모두 같고, 퍼셉트론이 매개변수의 값만 적절히 조정해 서로 다른 논리 회로를 형성한다는 것이다.

AND 게이트

  • 입력값이 모두 1일때만 출력값이 1이다.
  • 가중치 값으로 가능한 것은 (w1, w2, b) -> (0.5, 0.5, -0.7) 등
def AND(x1, x2):
    x = np.array([x1, x2])
    w = np.array([0.5, 0.5])
    b = -0.7
    tmp = np.sum(x*w)+b
    if tmp > 0:
        return 1
    elif tmp <= 0:
        return 0

NAND 게이트

  • NAND는 Not AND를 나타내며, 입력값이 모두 0 일때만 출력값이 0이고, 나머지는 출력값이 모두 1이다.
  • 가중치 값으로는 AND 게이트의 가중치 값에 부호만 반대로 바꿔주면 모두 성립한다.
def NAND(x1, x2):
    x = np.array([x1, x2])
    w = np.array([-0.5, -0.5])
    b = 0.7
    tmp = np.sum(x*w) + b
    
    if tmp > 0:
        return 1
    elif tmp <= 0:
        return 0

OR 게이트

  • 입력값 중 1이 하나만 있어도 출력값이 1이다.
  • 가중치 값으로 가능한 것은 (w1, w2, b) -> (0.5, 0.5, -0.4)이고, 각각의 가중치 값 중 작은 것보다 임계값(⍬, -b)이 작아야한다.
def OR(x1, x2):
    x = np.array([x1, x2])
    w = np.array([0.5, 0.5])
    b = -0.4
    tmp = np.sum(x*w) + b
    
    if tmp > 0:
        return 1
    elif tmp <= 0:
        return 0

단층 퍼셉트론의 한계

단층 퍼셉트론으로는 직선으로 나타내는 선형 영역만 표현이 가능하고 곡선의 영역인 비선형 영역은 표현이 불가능하다!

XOR 게이트

  • XOR 게이트는 입력값 둘 중 하나만 1이어야 출력값이 1이다. 입력값이 모두 0이거나 1인 경우에는 출력값이 0이다. 단층 퍼셉트론으로는 표현 불가능하다.

다층 퍼셉트론

퍼셉트론은 층을 쌓아 다층 퍼셉트론을 만들 수 있다. 다층 퍼셉트론은 비선형적인 표현이 가능해 퍼셉트론의 한계를 보완할 수 있다. XOR 게이트 구현이 가능하다.

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

정리

재수할 때 비문학 지문으로 수도 없이 봤던,,,^^ 봐도봐도 이해가 안됐는데 왜 이해가 안됐는지 이제야 알 것 같다. 퍼셉트론의 구조는 모두 같고 가중치의 값만 변한다는게 그 당시에는 아무리 생각해도 이해가 안된거 가틈ㅎㅎ 물론 오늘도 첨에 쫌 헤매다가 이해했다. 역시 사람은 변하지 않아....

0개의 댓글