본문 바로가기
머신러닝딥러닝/딥러닝

딥러닝(Deep Learning) #6 - 퍼셉트론

by orangecode 2022. 4. 12.
728x90

뉴런 VS 퍼셉트론

출처 : 네이버 블로그

 

가중치 가중합 바이어스 활성화 함수

 

가중치 w(weight) = 기울기 a

 

바이어스 b(bias) = y 절편 b

 

가중합(weighted sum) y = wx + b

 

가중합의 결과를 1 or 0으로 출력해서 다음으로 보낸다.

 

0, 1을 판단하는 함수를 활성화함수(activation function)이라고하며, 시그모이드 함수가 대표적인 활성화 함수이다.

 

XOR 문제

출처 : 모두의 딥러닝

퍼셉트론의 한계(2차원의 한계)

퍼셉트론으로는 단순히 선을 그려도 하나의 직선으로 흰점/검은점 구분할 수 없음.

 

다층 퍼셉트론 = 2차원 한계 해결

출처 : 모두의 딥러닝

 

출처 : 모두의 딥러닝

종이를 휘어서 선 2개로 흰색/검은색 구분이 가능 → 2차원이 아닌 3차원으로 해결

숨어있는 은닉층(hidden layer)를 만들어 해결

 

 

다층 퍼셉트론

 

x = 퍼셉티콘

n(node) = 은닉층(은닉층이 모이는 중앙 정거장)

y(out) = 출력층

 

 

퍼셉트콘 x1, x2 함수

# 퍼셉트콘 함수
def MLP(x, w, b):
    y = np.sum(w * x) + b
    if y <= 0:
        return 0    
    else:
        return 1

 

 

node1, node2 은닉층 가중치 계산 코드

def NAND(x1, x2):
    return MLP(np.array([x1, x2]), w11, b1)

# OR 게이트
def OR(x1, x2):
    return MLP(np.array([x1, x2]), w12, b2)

# AND 게이트

def AND(x1, x2):
    return MLP(np.array([x1, x2]), w2, b3)

# XOR 게이트

def XOR(x1, x2):
    return AND(NAND(x1, x2), OR(x1, x2))

출력층 Y(out) 최종값 계산 : 퍼셉티콘 x1, x2 값을 번갈아 대입하여 최종값을 도출

if __name__ == "__main__":
    for x in [(0,0), (1,0), (0,1), (1,1)]:
        y = XOR(x[0], x[1])
        print("입력 값:" + str(x) + "출력값 : " + str(y))

반응형

댓글