반응형



안녕하세요~


오늘은 신경망의 기본! 퍼셉트론에 대해 알아보겠습니다~


퍼셉트론이란? 다수의 신호를 입력받아 하나의 신호를 출력하는 알고리즘입니다.



1943년 미국 신경외과 의사인 워렌 멕컬록에 의해서 발단이되었고


1957년 프랑크 로젠 블라트가 퍼셉트론 알고리즘을 고안했습니다.


사람의 뇌의 동작을 전기 스위치의 on / off 로 흉내낼 수 있다는 이론을 증명하였습니다.


간단히 말하면, 인간의 신경 세포 하나를 흉내낸 것으로

기본 가정은 아래와 같습니다.




1. 자극(simulus)   2. 역치(threshold)  3. 반응(response)



" 특정 자극이 있다면 그 자극이 어느 역치(theta: 임계값) 이상이어야지만 세포가 반응한다. "




입력신호의 연결강도가 가중치(Weight)인데,


입력신호가 뉴런에 보내질 때는 각각의 고유한 가중치가 곱해집니다.



퍼셉트론은 n 개의 이진수가 하나의 뉴런을 통과해서


가중치의 합이 0보다 크면 활성화되는 가장 간단한 신경망입니다.



문제1. 위의 식을 파이썬 Numpy 패키지로 구현하시오.



가정: theta = 0 ; x1 = 0; x2 = 1; w1 = 0.5; w2 = 0.5





퍼셉트론으로 단순한 논리 회로 4가지를 구현해보도록 하겠습니다.



1. AND 게이트




def AND(x1, x2): x = np.array([x1,x2]) w = np.array([0.5,0.5]) theta = 0.7 if np.sum(w*x) <= theta: return 0 else: return 1



inputData = np.array([[0,0],[1,0],[0,1],[1,1]])

for x in inputData: print(x[0],", ",x[1]," ==> ",AND(x[0],x[1]), sep = '')



2. OR 게이트




def OR(x1,x2): x = np.array([x1,x2]) w = np.array([?,?]) # 채워넣으세요~ theta = ? # 채워넣으세요~ if np.sum(w*x) <= theta: return 0 else: return 1


inputData = np.array([[0,0],[1,0],[0,1],[1,1]]) for x in inputData: print(x[0],", ",x[1]," ==> ",OR(x[0],x[1]), sep = '')





3. NAND 게이트




def NAND(x1,x2): x = np.array([x1,x2]) w = np.array([?,?]) # 채워넣으세요~ theta = ? # 채워넣으세요~ if np.sum(w*x) <= theta: return 0 else: return 1

inputData = np.array([[0,0],[1,0],[0,1],[1,1]]) for x in inputData: print(x[0],", ",x[1]," ==> ",NAND(x[0],x[1]), sep = '')





4. XOR 게이트




XOR 게이트를 퍼셉트론으로 해결해보세요!


결과는 다음 포스팅에서!





오늘은 여기까지~


다음 포스팅은

활성함수로 돌아오겠습니다!

반응형

+ Recent posts