머신러닝딥러닝/딥러닝
딥러닝(Deep Learning) #6 - 퍼셉트론
orangecode
2022. 4. 12. 18:00
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))
반응형