AI/MachineLearning

DIY 퍼셉트론 만들기

향식이 2021. 7. 15. 14:07

위 그림에서 m = 4로 설정, 따라서 입력값(Input)은 x_1, x_2, x_3, x_4로 총 4개, 가중치(Weight)도 w_1, w_2, w_3, w_4로 총 4개임

 

가중치 w_0에 대한 입력값은 1이므로 두 값이 곱해진 값은 상수 w_0이고, 이는 곧 Bias입니다. 따라서 Bias b = 1 * w_0 = w_0 라고 할 수 있음

 

입력값 x_1, x_2, x_3, x_4와 가중치 w_1, w_2, w_3, w_4, 그리고 1과 w_0까지 Net input function에 입력되면 y = w_1x_1 + w_2x_2 + w_3x_3 + w_4x_4 + b, 즉 신호의 총합 값이 나오게 됨

 

y는 이제 Activation function, 즉 활성화 함수에 입력값으로 들어가고, 우리의 퍼셉트론은 값에 따라 최종 신호 0 또는 1을 반환하게 됨

 

'''
1. 가중치와 Bias 값을 
   임의로 설정해줍니다.

   Step01. 0이상 1미만의 임의의 값으로 정의된 
           4개의 가중치 값이 들어가있는 
           1차원 리스트를 정의해줍니다.
           
   Step02. Bias 값을 임의의 값으로 설정해줍니다.
'''

def main():
    
    x = [1,2,3,4]
    
    w = [0.3, 0.5, 0.1, 0.7]
    b = -2
    
    output, y = perceptron(w,x,b)
    
    print('output: ', output)
    print('y: ', y)

'''
2. 신호의 총합과 그에 따른 결과 0 또는 1을
   반환하는 함수 perceptron을 완성합니다.
   
   Step01. 입력 받은 값과 Bias 값을 이용하여
           신호의 총합을 구합니다.
           
   Step02. 신호의 총합이 0 이상이면 1을, 
           그렇지 않으면 0을 반환하는 활성화 
           함수를 작성합니다.
'''

def perceptron(w, x, b):
    
    output = x[0] * w[0] + x[1] * w[1] + x[2] * w[2] + x[3] * w[3] + b
    
    output = sum([x_i * w_i for x_i, w_i in zip(x,w)]) + b
    
    y = 1 if output >= 0 else 0
    
    return output, y

if __name__ == "__main__":
    main()

 

출처: 앨리스 교육

반응형